{"version":3,"sources":["webpack://web-app/webpack/universalModuleDefinition","webpack://web-app/webpack/bootstrap","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inherits/inherits_browser.js","webpack://web-app/./kotlin-dce/wrapper.js","webpack://web-app/./kotlin-dce/arrayUtils.js","webpack://web-app/./kotlin-dce/callableReferenceUtils.js","webpack://web-app/./kotlin-dce/misc.js","webpack://web-app/./kotlin-dce/polyfills.js","webpack://web-app/./kotlin-dce/core.js","webpack://web-app/./kotlin-dce/markerFunctions.js","webpack://web-app/./kotlin-dce/conversions.js","webpack://web-app/./kotlin-dce/long.js","webpack://web-app/./kotlin-dce/rtti.js","webpack://web-app/./kotlin-dce/runtime/arrayUtils.kt","webpack://web-app/./kotlin-dce/runtime/Enum.kt","webpack://web-app/primitiveCompanionObjects.kt","webpack://web-app/./kotlin-dce/generated/_Arrays.kt","webpack://web-app/./kotlin-dce/generated/_Ranges.kt","webpack://web-app/./kotlin-dce/kotlin/UByte.kt","webpack://web-app/./kotlin-dce/kotlin/UInt.kt","webpack://web-app/./kotlin-dce/kotlin/UShort.kt","webpack://web-app/./kotlin-dce/Ranges.kt","webpack://web-app/./kotlin-dce/collections/Collections.kt","webpack://web-app/./kotlin-dce/collections/Maps.kt","webpack://web-app/./kotlin-dce/collections/Sets.kt","webpack://web-app/./kotlin-dce/text/StringNumberConversions.kt","webpack://web-app/./kotlin-dce/kotlin/UnsignedUtils.kt","webpack://web-app/./kotlin-dce/collections/Sequences.kt","webpack://web-app/./kotlin-dce/generated/_Collections.kt","webpack://web-app/./kotlin-dce/util/Preconditions.kt","webpack://web-app/./kotlin-dce/kotlin/collections.kt","webpack://web-app/./kotlin-dce/util/Standard.kt","webpack://web-app/./kotlin-dce/collections/Iterables.kt","webpack://web-app/./kotlin-dce/generated/_Sequences.kt","webpack://web-app/./kotlin-dce/generated/_Strings.kt","webpack://web-app/./kotlin-dce/kotlin/text/string.kt","webpack://web-app/./kotlin-dce/Iterators.kt","webpack://web-app/./kotlin-dce/ProgressionIterators.kt","webpack://web-app/./kotlin-dce/Progressions.kt","webpack://web-app/./kotlin-dce/Collections.kt","webpack://web-app/./kotlin-dce/Range.kt","webpack://web-app/./kotlin-dce/Unit.kt","webpack://web-app/./kotlin-dce/internal/progressionUtil.kt","webpack://web-app/./kotlin-dce/kotlin/builtins.kt","webpack://web-app/./kotlin-dce/kotlin/coroutines/CoroutineImpl.kt","webpack://web-app/./kotlin-dce/util/Result.kt","webpack://web-app/./kotlin-dce/coroutines/Continuation.kt","webpack://web-app/./kotlin-dce/kotlin/coroutines/intrinsics/IntrinsicsJs.kt","webpack://web-app/./kotlin-dce/kotlin/exceptions.kt","webpack://web-app/./kotlin-dce/kotlin/kotlin.kt","webpack://web-app/./kotlin-dce/kotlin/text/numberConversions_js-v1.kt","webpack://web-app/./kotlin-dce/generated/_ArraysJs.kt","webpack://web-app/./kotlin-dce/generated/_CollectionsJs.kt","webpack://web-app/./kotlin-dce/kotlin/collections/AbstractMutableCollection.kt","webpack://web-app/./kotlin-dce/kotlin/collections/AbstractMutableList.kt","webpack://web-app/./kotlin-dce/kotlin/collections/AbstractMutableMap.kt","webpack://web-app/./kotlin-dce/kotlin/collections/AbstractMutableSet.kt","webpack://web-app/./kotlin-dce/kotlin/collections/ArrayList.kt","webpack://web-app/./kotlin-dce/kotlin/collections/ArraySorting.kt","webpack://web-app/./kotlin-dce/kotlin/collections/EqualityComparator.kt","webpack://web-app/./kotlin-dce/kotlin/Comparator.kt","webpack://web-app/./kotlin-dce/kotlin/collections/HashMap.kt","webpack://web-app/./kotlin-dce/kotlin/collections/HashSet.kt","webpack://web-app/./kotlin-dce/kotlin/collections/InternalHashCodeMap.kt","webpack://web-app/./kotlin-dce/kotlin/collections/InternalStringMap.kt","webpack://web-app/./kotlin-dce/kotlin/collections/LinkedHashMap.kt","webpack://web-app/./kotlin-dce/kotlin/collections/LinkedHashSet.kt","webpack://web-app/./kotlin-dce/kotlin/console.kt","webpack://web-app/./kotlin-dce/kotlin/coroutines/SafeContinuationJs.kt","webpack://web-app/./kotlin-dce/kotlin/exceptionUtils.kt","webpack://web-app/./kotlin-dce/kotlin/json.kt","webpack://web-app/./kotlin-dce/kotlin/math.kt","webpack://web-app/./kotlin-dce/kotlin/numbers_js-v1.kt","webpack://web-app/./kotlin-dce/kotlin/numbers.kt","webpack://web-app/./kotlin-dce/kotlin/random/PlatformRandom.kt","webpack://web-app/./kotlin-dce/kotlin/reflect/KClassImpl.kt","webpack://web-app/./kotlin-dce/kotlin/collections/InternalMap.kt","webpack://web-app/./kotlin-dce/kotlin/jsOperators.kt","webpack://web-app/./kotlin-dce/kotlin/reflect/KTypeImpl.kt","webpack://web-app/./kotlin-dce/kotlin/reflect/primitives.kt","webpack://web-app/./kotlin-dce/kotlin/reflect/reflection.kt","webpack://web-app/./kotlin-dce/kotlin/regexp.kt","webpack://web-app/./kotlin-dce/kotlin/text/CharacterCodingExceptionJs.kt","webpack://web-app/./kotlin-dce/kotlin/text/StringBuilderJs.kt","webpack://web-app/./kotlin-dce/kotlin/text/char.kt","webpack://web-app/./kotlin-dce/kotlin/text/numberConversions.kt","webpack://web-app/./kotlin-dce/kotlin/text/regex.kt","webpack://web-app/./kotlin-dce/text/Strings.kt","webpack://web-app/./kotlin-dce/generated/_ComparisonsJs.kt","webpack://web-app/./kotlin-dce/kotlin/text/stringsCode.kt","webpack://web-app/./kotlin-dce/kotlin/text/utf8Encoding.kt","webpack://web-app/./kotlin-dce/kotlin/time/DurationUnit.kt","webpack://web-app/./kotlin-dce/kotlin/time/MonoTimeSource.kt","webpack://web-app/./kotlin-dce/kotlin/time/formatToDecimals.kt","webpack://web-app/./kotlin-dce/kotlinx/dom/Builders.kt","webpack://web-app/./kotlin-dce/collections/AbstractCollection.kt","webpack://web-app/./kotlin-dce/collections/AbstractList.kt","webpack://web-app/./kotlin-dce/collections/AbstractMap.kt","webpack://web-app/./kotlin-dce/collections/AbstractSet.kt","webpack://web-app/./kotlin-dce/collections/ArrayDeque.kt","webpack://web-app/./kotlin-dce/collections/IndexedValue.kt","webpack://web-app/./kotlin-dce/collections/Iterators.kt","webpack://web-app/./kotlin-dce/collections/MapWithDefault.kt","webpack://web-app/./kotlin-dce/collections/MutableCollections.kt","webpack://web-app/./kotlin-dce/collections/ReversedViews.kt","webpack://web-app/./kotlin-dce/collections/SequenceBuilder.kt","webpack://web-app/./kotlin-dce/comparisons/Comparisons.kt","webpack://web-app/./kotlin-dce/coroutines/ContinuationInterceptor.kt","webpack://web-app/./kotlin-dce/coroutines/CoroutineContext.kt","webpack://web-app/./kotlin-dce/coroutines/CoroutineContextImpl.kt","webpack://web-app/./kotlin-dce/coroutines/intrinsics/Intrinsics.kt","webpack://web-app/./kotlin-dce/properties/ObservableProperty.kt","webpack://web-app/./kotlin-dce/random/Random.kt","webpack://web-app/./kotlin-dce/properties/Interfaces.kt","webpack://web-app/./kotlin-dce/random/XorWowRandom.kt","webpack://web-app/./kotlin-dce/ranges/Ranges.kt","webpack://web-app/./kotlin-dce/reflect/KTypeProjection.kt","webpack://web-app/./kotlin-dce/reflect/KVariance.kt","webpack://web-app/./kotlin-dce/text/Appendable.kt","webpack://web-app/./kotlin-dce/text/Char.kt","webpack://web-app/./kotlin-dce/text/Indent.kt","webpack://web-app/./kotlin-dce/text/regex/MatchResult.kt","webpack://web-app/./kotlin-dce/time/Duration.kt","webpack://web-app/./kotlin-dce/time/DurationUnit.kt","webpack://web-app/./kotlin-dce/time/TimeSource.kt","webpack://web-app/./kotlin-dce/text/StringBuilder.kt","webpack://web-app/./kotlin-dce/time/TimeSources.kt","webpack://web-app/./kotlin-dce/time/measureTime.kt","webpack://web-app/./kotlin-dce/util/Lazy.kt","webpack://web-app/./kotlin-dce/util/Tuples.kt","webpack://web-app/./kotlin-dce/kotlin/ULong.kt","webpack://web-app/./kotlin-dce/experimental/bitwiseOperations.kt","webpack://web-app/./kotlin-dce/kotlin/UIntRange.kt","webpack://web-app/./kotlin-dce/kotlin/UIterators.kt","webpack://web-app/./kotlin-dce/kotlin/ULongRange.kt","webpack://web-app/./kotlin-dce/kotlin/UProgressionUtil.kt","webpack://web-app/./kotlin-dce/kotlin/UStrings.kt","webpack://web-app/./kotlin-dce/generated/_Maps.kt","webpack://web-app/./kotlin-dce/generated/_Sets.kt","webpack://web-app/./kotlin-dce/kotlin/reflection_js-v1.kt","webpack://web-app/./kotlin-dce/kotlin/reflect/JsClass.kt","webpack://web-app/./kotlin-dce/kotlin/reflect/KTypeHelpers.kt","webpack://web-app/./kotlin-dce/kotlin/throwableExtensions.kt","webpack://web-app/./kotlin-dce/kotlin/MathH.kt","webpack://web-app/./kotlin-dce/kotlin/coroutines/js/internal/EmptyContinuation.kt","webpack://web-app/./kotlin-dce/util/DeepRecursive.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/safe-buffer/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/react/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/process/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/bn.js/lib/bn.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/buffer/index.js","webpack://web-app/(webpack)/buildin/global.js","webpack://web-app/../../../../../common/src/Delay.kt","webpack://web-app/../../../../../common/src/EventLoop.common.kt","webpack://web-app/../../../../../common/src/flow/SharedFlow.kt","webpack://web-app/../../../../../common/src/internal/LockFreeTaskQueue.kt","webpack://web-app/../../../../../js/src/JSDispatcher.kt","webpack://web-app/../../../../../common/src/AbstractCoroutine.kt","webpack://web-app/../../../../../common/src/Await.kt","webpack://web-app/../../../../../common/src/Builders.common.kt","webpack://web-app/../../../../../common/src/CancellableContinuation.kt","webpack://web-app/../../../../../common/src/CancellableContinuationImpl.kt","webpack://web-app/../../../../../atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/AtomicFU.common.kt","webpack://web-app/../../../../../common/src/CompletableDeferred.kt","webpack://web-app/../../../../../common/src/CompletionState.kt","webpack://web-app/../../../../../common/src/CoroutineDispatcher.kt","webpack://web-app/../../../../../common/src/CoroutineExceptionHandler.kt","webpack://web-app/../../../../../common/src/CompletionHandler.common.kt","webpack://web-app/../../../../../common/src/CoroutineName.kt","webpack://web-app/../../../../../common/src/CoroutineScope.kt","webpack://web-app/../../../../../common/src/CoroutineStart.kt","webpack://web-app/../../../../../common/src/Job.kt","webpack://web-app/../../../../../common/src/JobSupport.kt","webpack://web-app/../../../../../js/src/internal/LinkedList.kt","webpack://web-app/../../../../../common/src/MainCoroutineDispatcher.kt","webpack://web-app/../../../../../common/src/NonCancellable.kt","webpack://web-app/../../../../../common/src/Supervisor.kt","webpack://web-app/../../../../../common/src/Timeout.kt","webpack://web-app/../../../../../common/src/channels/AbstractChannel.kt","webpack://web-app/../../../../../common/src/channels/Channel.kt","webpack://web-app/../../../../../common/src/channels/ArrayBroadcastChannel.kt","webpack://web-app/../../../../../common/src/channels/ArrayChannel.kt","webpack://web-app/../../../../../common/src/channels/BufferOverflow.kt","webpack://web-app/../../../../../common/src/internal/InlineList.kt","webpack://web-app/../../../../../common/src/channels/Broadcast.kt","webpack://web-app/./kotlin-dce/util/HashCode.kt","webpack://web-app/../../../../../common/src/channels/ChannelCoroutine.kt","webpack://web-app/../../../../../common/src/channels/Channels.common.kt","webpack://web-app/../../../../../common/src/channels/ConflatedBroadcastChannel.kt","webpack://web-app/../../../../../common/src/channels/LinkedListChannel.kt","webpack://web-app/../../../../../common/src/channels/Produce.kt","webpack://web-app/../../../../../common/src/flow/internal/SafeCollector.common.kt","webpack://web-app/../../../../../common/src/flow/Builders.kt","webpack://web-app/../../../../../common/src/flow/Channels.kt","webpack://web-app/../../../../../common/src/flow/Migration.kt","webpack://web-app/../../../../../common/src/flow/SharingStarted.kt","webpack://web-app/../../../../../common/src/flow/StateFlow.kt","webpack://web-app/../../../../../common/src/flow/internal/AbstractSharedFlow.kt","webpack://web-app/../../../../../common/src/flow/internal/ChannelFlow.kt","webpack://web-app/../../../../../common/src/flow/internal/Combine.kt","webpack://web-app/../../../../../common/src/flow/internal/FlowCoroutine.kt","webpack://web-app/../../../../../common/src/flow/internal/Merge.kt","webpack://web-app/../../../../../common/src/internal/Symbol.kt","webpack://web-app/../../../../../atomicfu/src/jsMain/kotlin/kotlinx/atomicfu/AtomicFU.kt","webpack://web-app/../../../../../common/src/channels/ConflatedChannel.kt","webpack://web-app/../../../../../common/src/flow/operators/Merge.kt","webpack://web-app/../../../../../js/src/internal/Synchronized.kt","webpack://web-app/../../../../../common/src/flow/internal/FlowExceptions.common.kt","webpack://web-app/../../../../../common/src/flow/terminal/Collect.kt","webpack://web-app/../../../../../common/src/flow/terminal/Reduce.kt","webpack://web-app/../../../../../common/src/internal/ThreadSafeHeap.kt","webpack://web-app/../../../../../common/src/selects/Select.kt","webpack://web-app/../../../../../common/src/flow/internal/NopCollector.kt","webpack://web-app/../../../../../common/src/flow/operators/Emitters.kt","webpack://web-app/../../../../../common/src/flow/operators/Share.kt","webpack://web-app/../../../../../common/src/flow/operators/Zip.kt","webpack://web-app/../../../../../common/src/internal/ConcurrentLinkedList.kt","webpack://web-app/../../../../../common/src/internal/DispatchedContinuation.kt","webpack://web-app/../../../../../common/src/internal/DispatchedTask.kt","webpack://web-app/../../../../../common/src/internal/OnUndeliveredElement.kt","webpack://web-app/../../../../../common/src/internal/Scopes.kt","webpack://web-app/../../../../../common/src/intrinsics/Undispatched.kt","webpack://web-app/../../../../../js/src/Runnable.kt","webpack://web-app/../../../../../common/src/selects/SelectUnbiased.kt","webpack://web-app/../../../../../common/src/selects/WhileSelect.kt","webpack://web-app/../../../../../common/src/sync/Mutex.kt","webpack://web-app/../../../../../common/src/sync/Semaphore.kt","webpack://web-app/../../../../../common/src/flow/operators/Limit.kt","webpack://web-app/../../../../../common/src/flow/operators/Transform.kt","webpack://web-app/../../../../../common/src/flow/terminal/Collection.kt","webpack://web-app/../../../../../common/src/flow/terminal/Count.kt","webpack://web-app/../../../../../common/src/internal/ArrayQueue.kt","webpack://web-app/../../../../../common/src/internal/Atomic.kt","webpack://web-app/../../../../../common/src/intrinsics/Cancellable.kt","webpack://web-app/../../../../../js/src/CompletionHandler.kt","webpack://web-app/../../../../../js/src/CoroutineContext.kt","webpack://web-app/./kotlin-dce/kotlin/jsTypeOf.kt","webpack://web-app/../../../../../js/src/CoroutineExceptionHandlerImpl.kt","webpack://web-app/../../../../../js/src/Debug.kt","webpack://web-app/../../../../../js/src/Dispatchers.kt","webpack://web-app/../../../../../js/src/EventLoop.kt","webpack://web-app/../../../../../js/src/Promise.kt","webpack://web-app/../../../../../js/src/Window.kt","webpack://web-app/../../../../../js/src/internal/CopyOnWriteList.kt","webpack://web-app/../../../../../js/src/Exceptions.kt","webpack://web-app/../../../../../js/src/SchedulerTask.kt","webpack://web-app/../../../../../js/src/flow/internal/FlowExceptions.kt","webpack://web-app/../../../../../js/src/flow/internal/SafeCollector.kt","webpack://web-app/../../../../../js/src/internal/Concurrent.kt","webpack://web-app/../../../../../js/src/internal/LocalAtomics.kt","webpack://web-app/../../../../../js/src/internal/ProbesSupport.kt","webpack://web-app/../../../../../js/src/internal/StackTraceRecovery.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/minimalistic-assert/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/utils.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash.js/lib/hash/utils.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/node_modules/css-in-js-utils/lib/isPrefixedValue.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/ByteChannelSequential.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/charsets/Encoding.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/bits/MemoryPrimitivesJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/InputArrays.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/Buffers.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/internal/Require.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/ByteWriteChannel.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/ChannelLittleEndian.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/Coroutines.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/ReadSession.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/WriterSession.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/internal/Numbers.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/bits/MemoryPrimitives.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/bits/PrimiteArrays.kt","webpack://web-app/./kotlin-dce/generated/_UArrays.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/bits/MemoryFactoryJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/AbstractInput.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/ByteChannelCtor.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/Packet.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/ByteReadChannel.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/Builder.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/Output.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/Buffer.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/bits/MemoryJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/PacketDirect.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/Input.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/internal/UTF8.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/AbstractOutput.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/BufferPrimitives.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/BufferCompatibility.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/BufferFactory.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/bits/ByteOrder.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/BytePacketBuilder.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/ByteReadPacket.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/InputPrimitives.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/OutputPrimitives.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/Preview.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/Scanner.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/Strings.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/internal/ChunkBuffer.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/internal/Unsafe.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/errors/Errors.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/internal/AwaitingSlot.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/internal/SequentialCopyTo.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/pool/Pool.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/ByteChannelJS.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/ByteChannelSequentialBaseSharedStateJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/ConditionJS.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/bits/ByteOrderJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/ExceptionUtilsJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/NativeUtilsJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/bits/PrimitiveArraysJs.kt","webpack://web-app/./kotlin-dce/org.w3c/org.khronos.webgl.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/charsets/CharsetJS.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/js/TextDecoders.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/js/Decoder.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/charsets/DecodeBuffer.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/charsets/ISO88591.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/IoBufferJS.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/ByteOrderJS.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/ByteReadPacket.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/CloseableJS.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/InputArraysJS.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/concurrent/SharedJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/InputJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/AbstractOutputSharedStateJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/AbstractInputSharedStateJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/BufferSharedStateJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/ScannerJS.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/OutputJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/PacketJS.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/js/TextDecoder.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/core/StringsJS.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/errors/IOException.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/js/TextDecoderFallback.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/js/src/io/ktor/utils/io/pool/DefaultPool.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/cipher-base/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/events/events.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/string_decoder/lib/string_decoder.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/lib/_stream_duplex.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/Codecs.kt","webpack://web-app/./kotlin-dce/text/regex/RegexExtensions.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/Text.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-io/common/src/io/ktor/utils/io/core/Closeable.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/ContentDisposition.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/ApplicationResponseProperties.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/CacheControl.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/HeaderValueWithParameters.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/ContentRange.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/ContentTypes.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/Cookie.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/Headers.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/HttpHeaderValueParser.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/HttpHeaders.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/HttpMessageProperties.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/HttpMethod.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/HttpProtocolVersion.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/HttpStatusCode.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/HttpUrlEncoded.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/Parameters.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/LinkHeader.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/Query.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/Ranges.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/URLBuilder.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/URLParser.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/URLProtocol.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/URLUtils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/auth/HeaderValueEncoding.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/auth/HttpAuthHeader.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/auth/AuthScheme.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/content/ByteArrayContent.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/content/CachingOptions.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/content/Multipart.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/content/OutgoingContent.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/parsing/Debug.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/parsing/GrammarBuilder.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/parsing/ParserDsl.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/parsing/regex/RegexParserGenerator.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/websocket/Utils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/js/src/io/ktor/http/URLBuilderJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/content/TextContent.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/FileContentType.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/DateUtils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/common/src/io/ktor/http/IpParser.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/randombytes/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/errors-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/sha.js/hash.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","webpack://web-app/./kotlin-dce/kotlin-wrappers-kotlin-extensions-jsLegacy.js?a379","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin/src/commonMain/kotlin/com/arkivanov/mvikotlin/core/store/SimpleBootstrapper.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin/src/commonMain/kotlin/com/arkivanov/mvikotlin/core/store/StoreEventType.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin/src/commonMain/kotlin/com/arkivanov/mvikotlin/core/store/StoreFactory.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin/src/commonMain/kotlin/com/arkivanov/mvikotlin/core/utils/MainThreadAssert.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/utils-internal/src/commonMain/kotlin/com/arkivanov/mvikotlin/utils/internal/AtomicExt.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/utils-internal/src/commonMain/kotlin/com/arkivanov/mvikotlin/utils/internal/Logs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/utils-internal/src/commonMain/kotlin/com/arkivanov/mvikotlin/utils/internal/MainThreadAssert.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/utils-internal/src/jsMain/kotlin/com/arkivanov/mvikotlin/utils/internal/Atomic.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/utils-internal/src/jsMain/kotlin/com/arkivanov/mvikotlin/utils/internal/Logs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/utils-internal/src/jsMain/kotlin/com/arkivanov/mvikotlin/utils/internal/MainThreadAssert.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/utils-internal/src/commonMain/kotlin/com/arkivanov/mvikotlin/utils/internal/Atomic.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/ByteChannels.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/CoroutinesUtils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/Ranges.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/Base64.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/CaseInsensitiveMap.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/CaseInsensitiveSet.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/Charset.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/DelegatingMutableSet.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/Annotations.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/Attributes.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/Bytes.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/Crypto.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/Encoders.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/NonceManager.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/StringValues.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/cio/Readers.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/Lock.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/collections/ConcurrentCollection.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/collections/ConcurrentList.kt","webpack://web-app/../../../../../atomicfu/src/jsMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/collections/ConcurrentMap.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/collections/internal/ConcurrentListSlice.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/collections/internal/ConcurrentMapKeys.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/collections/internal/ConcurrentMapValues.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/collections/internal/ForwardListIterator.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/collections/internal/ForwardListNode.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/collections/internal/MapNode.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/collections/internal/MutableMapEntries.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/collections/internal/SharedForwardList.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/date/Date.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/collections/internal/SharedList.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/pipeline/DebugPipelineContext.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/pipeline/PhaseContent.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/date/GMTDateParser.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/pipeline/Pipeline.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/pipeline/StackTraceRecover.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhaseRelation.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/pipeline/StackWalkingFailed.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/pipeline/StackWalkingFailedFrame.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/js/src/io/ktor/util/CoroutinesUtilsJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/common/src/io/ktor/util/pipeline/SuspendFunctionGun.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/js/src/io/ktor/util/AttributesJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/js/src/io/ktor/util/CollectionsJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/js/src/io/ktor/util/PlatformUtilsJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/js/src/io/ktor/util/StackFramesJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/js/src/io/ktor/util/date/DateJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/js/src/io/ktor/util/network/NetworkAddressJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-utils/js/src/io/ktor/util/CryptoJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/create-hash/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/core-util-is/lib/util.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/buffer-xor/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash.js/lib/hash/common.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/base/buffer.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/DownloadRecord.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/AllPlatforms.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/CorsProxy.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/DownloadObject.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/DownloadResult.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/PlatformQueryResult.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/YoutubeTrack.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/gaana/Artist.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/gaana/CustomArtworks.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/gaana/GaanaAlbum.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/gaana/GaanaArtistDetails.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/gaana/GaanaArtistTracks.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/gaana/GaanaPlaylist.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/gaana/GaanaSong.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/gaana/GaanaTrack.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/gaana/Genre.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/gaana/Tags.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/Album.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/Artist.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/Copyright.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/Followers.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/Image.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/LinkedTrack.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/PagingObjectPlaylistTrack.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/PagingObjectTrack.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/Playlist.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/PlaylistTrack.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/Source.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/TokenData.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/Track.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/spotify/UserPublic.kt","webpack://web-app/./kotlin-dce/properties/Delegates.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/DefaultComponentContext.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/DefaultRouterFactory.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/NavigatorExt.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/RouterState.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/backpressed/BackPressedDispatcher.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/backpressed/BackPressedDispatcherImpl.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/instancekeeper/InstanceKeeperDispatcher.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/instancekeeper/InstanceKeeperDispatcherImpl.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/lifecycle/Lifecycle.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/lifecycle/LifecycleRegistry.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/lifecycle/LifecycleRegistryExt.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/lifecycle/LifecycleRegistryImpl.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/lifecycle/MergedLifecycle.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/router/RouterEntry.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/router/RouterEntryExt.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/router/RouterEntryFactoryImpl.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/lifecycle/LifecycleExt.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/router/RouterImpl.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/router/RouterStack.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/router/StackHolderImpl.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/instancekeeper/InstanceKeeperExt.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/RouterFactory.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/lifecycle/DefaultLifecycleCallbacks.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/router/RouterEntryFactory.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/router/StackNavigatorImpl.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/statekeeper/ParcelableContainer.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/statekeeper/ParcelableContainerExt.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/statekeeper/StateKeeperDispatcher.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/statekeeper/StateKeeperDispatcherImpl.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/value/MutableValue.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/value/MutableValueBuilder.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/statekeeper/StateKeeperExt.kt","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/value/Value.kt","webpack://web-app/../../../../../decompose/src/nonAndroidMain/kotlin/com/arkivanov/decompose/statekeeper/ParcelableContainerImpl.kt","webpack://web-app/../../../../../decompose/src/nonNativeMain/kotlin/com/arkivanov/decompose/Utils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/cache/HttpCacheEntry.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/websocket/WebSockets.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClient.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClientConfig.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/call/HttpClientCall.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineBase.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/ProxyConfig.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/call/SavedCall.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/call/TypeInfo.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/call/utils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngine.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/Utils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/call/TypeInfoJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/DefaultRequest.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/DefaultResponseValidation.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/DefaultTransform.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/ExpectSuccess.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/HttpCallValidator.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/HttpClientFeature.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/HttpPlainText.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/HttpRedirect.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/HttpRequestLifecycle.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/HttpSend.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/HttpTimeout.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/cookies/HttpCookies.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/observer/DelegatedCall.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/observer/ResponseObserver.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/features/websocket/builders.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpStatement.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/request/ClientUpgradeContent.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/request/DefaultHttpRequest.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequest.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/request/buildersWithUrl.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/request/forms/formBuilders.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/request/forms/formDsl.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequestPipeline.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/request/builders.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/request/forms/FormDataContent.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/DefaultHttpResponse.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponsePipeline.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/request/utils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/response/Migration.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponse.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/Readers.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/CacheControl.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/Content.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/network/sockets/TimeoutExceptionsCommon.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/headers.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsClientEngine.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsUtils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/compatibility/Utils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/ReadableStream.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/browser/BrowserFetch.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/SharedCollections.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/HttpClientJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/HttpClientEngineJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/ProxyConfigJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/Js.kt","webpack://web-app/./kotlin-dce/org.w3c/org.w3c.fetch.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/compatibility/DomDefinitions.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/node/NodeFetch.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/features/DefaultTransformJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-core/js/src/io/ktor/client/features/websocket/JsWebSocketSession.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/process-nextick-args/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/aes.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/evp_bytestokey/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/curve/base.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/parse-asn1/index.js","webpack://web-app/./kotlin-dce/kotlin-wrappers-kotlin-react-jsLegacy.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/rx/src/commonMain/kotlin/com/arkivanov/mvikotlin/rx/ObserverBuilder.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/rx/src/jsMain/kotlin/com/arkivanov/mvikotlin/rx/ObserverBuilder.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/module/Module.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/definition/Definitions.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/TokenStore.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/JsonElementBuilders.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/DI.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/scope/Scope.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/Dir.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/FetchPlatformQueryResult.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/gaana/GaanaRequests.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/providers/GaanaProvider.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/providers/SpotifyProvider.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/providers/YoutubeMp3.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/providers/YoutubeMusic.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/spotify/SpotifyAuth.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/spotify/SpotifyRequests.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/utils/Utils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/commonMain/kotlin/com/shabinder/common/di/youtubeMp3/Yt1sMp3.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/jsMain/kotlin/com/shabinder/common/di/WebActual.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/jsMain/kotlin/com/shabinder/common/di/WebDir.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/jsMain/kotlin/com/shabinder/common/di/WebPicture.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/dependency-injection/src/jsMain/kotlin/com/shabinder/common/di/YoutubeProvider.kt","webpack://web-app/./kotlin-dce/kotlin-wrappers-kotlin-extensions-jsLegacy.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/md5.js/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/util-deprecate/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/ripemd160/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/sha.js/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/readable-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/node_modules/safe-buffer/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/lib/_stream_writable.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/des.js/lib/des/cipher.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/modes/index.js","webpack://web-app/(webpack)/buildin/module.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/brorand/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-rsa/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/curves.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash.js/lib/hash.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/safer-buffer/safer.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/base/node.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/base/reporter.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/constants/der.js","webpack://web-app/../../../../../kermit/src/commonMain/kotlin/co/touchlab/kermit/CommonLogger.kt","webpack://web-app/../../../../../kermit/src/commonMain/kotlin/co/touchlab/kermit/Kermit.kt","webpack://web-app/../../../../../kermit/src/commonMain/kotlin/co/touchlab/kermit/Logger.kt","webpack://web-app/../../../../../kermit/src/commonMain/kotlin/co/touchlab/kermit/Severity.kt","webpack://web-app/../../../../../kermit/src/jsMain/kotlin/co/touchlab/kermit/ThrowableStringProvider.kt","webpack://web-app/../../../../../kermit/src/commonMain/kotlin/co/touchlab/kermit/ThrowableStringProvider.kt","webpack://web-app/./kotlin-dce/kotlin/reflect/AssociatedObjects.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/PolymorphicSerializer.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/SealedSerializer.kt","webpack://web-app/./kotlin-dce/collections/Grouping.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/SerializationException.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/Serializers.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/Platform.common.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptor.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptors.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/descriptors/SerialKinds.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/PluginGeneratedSerialDescriptor.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/encoding/AbstractDecoder.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/encoding/AbstractEncoder.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/encoding/Decoding.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/AbstractPolymorphicSerializer.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/CollectionDescriptors.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/CollectionSerializers.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/Enums.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/InlineClassDescriptor.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/InlineClasses.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/encoding/Encoding.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/NoOpEncoder.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/NullableSerializer.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/ObjectSerializer.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/PrimitiveArraysSerializers.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/PluginHelperInterfaces.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/Primitives.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/Tagged.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/Tuples.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/modules/SerializersModule.kt","webpack://web-app/../../../../../core/jsMain/src/kotlinx/serialization/Serializers.kt","webpack://web-app/../../../../../core/jsMain/src/kotlinx/serialization/internal/Platform.kt","webpack://web-app/../../../../../core/commonMain/src/kotlinx/serialization/internal/JsonInternalDependencies.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/api.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/attributes.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/delegating-map.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/generated/gen-enums.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/generated/gen-tags-a.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/generated/gen-tags-b.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/generated/gen-tags-d.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/generated/gen-tags-f.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/generated/gen-tags-h.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/generated/gen-tags-i.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/generated/gen-tags-n.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/generated/gen-tags-s.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/htmltag.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/stream.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/jsMain/kotlin/dom-js.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/generated/gen-attr-traits.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/jsMain/kotlin/generated/gen-event-attrs-js.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/src/commonMain/kotlin/generated/gen-attributes.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/stylis/stylis.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/react-is/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/memoize-one/dist/memoize-one.esm.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/object-assign/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/rx-internal/src/commonMain/kotlin/com/arkivanov/mvikotlin/rx/internal/BehaviorSubject.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/rx-internal/src/commonMain/kotlin/com/arkivanov/mvikotlin/rx/internal/PublishSubject.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/rx-internal/src/commonMain/kotlin/com/arkivanov/mvikotlin/rx/internal/DisposableBuilder.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/rx-internal/src/commonMain/kotlin/com/arkivanov/mvikotlin/rx/internal/ThreadLocalSubject.kt","webpack://web-app/collections/Sets.kt","webpack://web-app/collections/Collections.kt","webpack://web-app/util/Preconditions.kt","webpack://web-app/generated/_Collections.kt","webpack://web-app/collections/Maps.kt","webpack://web-app/generated/_Maps.kt","webpack://web-app/time/measureTime.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/Koin.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/KoinApplication.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/scope/ScopeDefinition.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/component/KoinScopeComponent.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/definition/BeanDefinition.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/definition/Callbacks.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/component/KoinComponent.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/definition/Options.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/definition/Properties.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/error/ClosedScopeException.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/error/DefinitionOverrideException.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/error/DefinitionParameterException.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/error/InstanceCreationException.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/error/KoinAppAlreadyStartedException.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/error/MissingPropertyException.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/error/NoBeanDefFoundException.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/error/NoParameterFoundException.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/error/NoScopeDefFoundException.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/error/ScopeAlreadyCreatedException.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/error/ScopeNotCreatedException.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/instance/FactoryInstanceFactory.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/instance/InstanceContext.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/instance/InstanceFactory.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/instance/SingleInstanceFactory.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/logger/EmptyLogger.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/logger/Logger.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/parameter/DefinitionParameters.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/qualifier/Qualifier.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/qualifier/StringQualifier.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/qualifier/TypeQualifier.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/registry/InstanceRegistry.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/registry/PropertyRegistry.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/registry/ScopeRegistry.kt","webpack://web-app/util/Standard.kt","webpack://web-app/collections/MutableCollections.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/time/Measure.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/dsl/ScopeDSL.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/ext/KClassExt.kt","webpack://web-app/../../../../../koin-core/src/jsMain/kotlin/org/koin/core/context/GlobalContext.kt","webpack://web-app/../../../../../koin-core/src/jsMain/kotlin/org/koin/core/logger/PrintLogger.kt","webpack://web-app/../../../../../koin-core/src/jsMain/kotlin/org/koin/mp/PlatformToolsJS.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/core/context/DefaultContextExt.kt","webpack://web-app/../../../../../koin-core/src/commonMain/kotlin/org/koin/dsl/Module.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/isarray/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/sha.js/sha256.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/sha.js/sha512.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/lib/_stream_readable.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/lib/_stream_transform.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/create-hmac/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/create-hash/md5.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/pbkdf2/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/pbkdf2/lib/precondition.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/pbkdf2/lib/default-encoding.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/pbkdf2/lib/sync-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/pbkdf2/lib/to-buffer.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/des.js/lib/des/utils.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/des.js/lib/des/des.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/modes/ctr.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/incr32.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/authCipher.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/streamCipher.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/diffie-hellman/lib/generatePrime.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/miller-rabin/lib/mr.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/curve/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash.js/lib/hash/sha/common.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash.js/lib/hash/sha/256.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash.js/lib/hash/sha/512.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/encoders/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/encoders/der.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/decoders/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/decoders/der.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/public-encrypt/mgf.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/public-encrypt/xor.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/public-encrypt/withPublic.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/node-fetch/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/database/src/jsMain/kotlin/com/shabinder/common/database/Actual.kt","webpack://web-app/../../../../../runtime/src/commonMain/kotlin/com/squareup/sqldelight/Query.kt","webpack://web-app/../../../../../formats/json/jsMain/src/kotlinx/serialization/json/internal/DynamicDecoders.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/Json.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/JsonElement.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonConf.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonParser.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonReader.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/internal/Polymorphic.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/internal/PolymorphismValidator.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/internal/StringOps.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt","webpack://web-app/../../../../../formats/json/commonMain/src/kotlinx/serialization/json/internal/WriteMode.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-json/common/src/io/ktor/client/features/json/JsonContentTypeMatcher.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-json/common/src/io/ktor/client/features/json/JsonFeature.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-json/common/src/io/ktor/client/features/json/JsonSerializer.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-json/js/src/io/ktor/client/features/json/DefaultJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/main/src/commonMain/kotlin/com/shabinder/common/main/SpotiFlyerMain.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/main/src/commonMain/kotlin/com/shabinder/common/main/integration/SpotiFlyerMainImpl.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/main/src/commonMain/kotlin/com/shabinder/common/main/store/InstanceKeeperExt.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/main/src/commonMain/kotlin/com/shabinder/common/main/store/SpotiFlyerMainStore.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/main/src/commonMain/kotlin/com/shabinder/common/main/store/SpotiFlyerMainStoreProvider.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-extensions-coroutines/src/commonMain/kotlin/com/arkivanov/mvikotlin/extensions/coroutines/Utils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-extensions-coroutines/src/commonMain/kotlin/com/arkivanov/mvikotlin/extensions/coroutines/SuspendExecutor.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-extensions-coroutines/src/commonMain/kotlin/com/arkivanov/mvikotlin/extensions/coroutines/StoreExt.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/list/src/commonMain/kotlin/com/shabinder/common/list/SpotiFlyerList.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/list/src/commonMain/kotlin/com/shabinder/common/list/integration/SpotiFlyerListImpl.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/list/src/commonMain/kotlin/com/shabinder/common/list/store/InstanceKeeperExt.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/list/src/commonMain/kotlin/com/shabinder/common/list/store/SpotiFlyerListStore.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/list/src/commonMain/kotlin/com/shabinder/common/list/store/SpotiFlyerListStoreProvider.kt","webpack://web-app/../../../../../kotlin-css/src/commonMain/kotlin/kotlinx/css/CSSBuilder.kt","webpack://web-app/../../../../../kotlin-css/src/commonMain/kotlin/kotlinx/css/Extensions.kt","webpack://web-app/../../../../../kotlin-css/src/commonMain/kotlin/kotlinx/css/StyleDimensions.kt","webpack://web-app/../../../../../kotlin-css/src/commonMain/kotlin/kotlinx/css/StyleEnums.kt","webpack://web-app/../../../../../kotlin-css/src/commonMain/kotlin/kotlinx/css/StyleList.kt","webpack://web-app/../../../../../kotlin-css/src/commonMain/kotlin/kotlinx/css/StyledElement.kt","webpack://web-app/../../../../../kotlin-css/src/commonMain/kotlin/kotlinx/css/TagSelectors.kt","webpack://web-app/../../../../../kotlin-css/src/commonMain/kotlin/kotlinx/css/properties/Animation.kt","webpack://web-app/../../../../../kotlin-css/src/commonMain/kotlin/kotlinx/css/properties/BoxShadow.kt","webpack://web-app/../../../../../kotlin-css/src/commonMain/kotlin/kotlinx/css/properties/Keyframes.kt","webpack://web-app/../../../../../kotlin-css/src/commonMain/kotlin/kotlinx/css/properties/Transform.kt","webpack://web-app/../../../../../kotlin-css/src/commonMain/kotlin/kotlinx/css/properties/Transition.kt","webpack://web-app/./kotlin-dce/kotlin-wrappers-kotlin-react-dom-jsLegacy.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/react-dom/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/node_modules/css-in-js-utils/lib/hyphenateProperty.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/stylis-rule-sheet/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/is-what/dist/index.esm.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/merge-anything/dist/index.esm.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/extras/UniqueId.kt","webpack://web-app/../kotlin/kotlin-wrappers-kotlin-styled-jsLegacy.js","webpack://web-app/../kotlin/kotlin-wrappers-kotlin-react-jsLegacy.js","webpack://web-app/./kotlin/generated/_Collections.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/App.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/Styles.kt","webpack://web-app/./kotlin/util/Standard.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/client.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/extras/RenderableComponent.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/extras/RenderableRootComponent.kt","webpack://web-app/../kotlin/kotlin-wrappers-kotlin-extensions-jsLegacy.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/extras/Utils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/home/HomeScreen.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/home/IconList.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/home/Message.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/home/Searchbar.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/list/CoverImage.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/list/DownloadAllButton.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/list/DownloadButton.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/list/ListScreen.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/list/LoadingAnim.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/list/LoadingSpinner.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/list/TrackItem.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/navbar/NavBar.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/navbar/NavBarStyles.kt","webpack://web-app/./kotlin/collections/MutableCollections.kt","webpack://web-app/../kotlin/kotlin-wrappers-kotlin-react-dom-jsLegacy.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/root/RootR.kt","webpack://web-app/./kotlin/collections/Maps.kt","webpack://web-app/./kotlin/text/Strings.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/web-app/src/main/kotlin/list/CircularProgressBar.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/react/cjs/react.production.min.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-main/src/commonMain/kotlin/com/arkivanov/mvikotlin/main/store/DefaultStore.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-main/src/commonMain/kotlin/com/arkivanov/mvikotlin/main/store/DefaultStoreFactory.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-logging/src/commonMain/kotlin/com/arkivanov/mvikotlin/logging/logger/DefaultLogFormatter.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-logging/src/commonMain/kotlin/com/arkivanov/mvikotlin/logging/logger/DefaultLogger.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-logging/src/commonMain/kotlin/com/arkivanov/mvikotlin/logging/logger/LoggerWrapper.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-logging/src/commonMain/kotlin/com/arkivanov/mvikotlin/logging/logger/LoggerWrapperExt.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-logging/src/commonMain/kotlin/com/arkivanov/mvikotlin/logging/store/LoggingExecutor.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-logging/src/commonMain/kotlin/com/arkivanov/mvikotlin/logging/store/LoggingReducer.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-logging/src/commonMain/kotlin/com/arkivanov/mvikotlin/logging/store/LoggingStore.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/mvikotlin-logging/src/commonMain/kotlin/com/arkivanov/mvikotlin/logging/store/LoggingStoreFactory.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/crypto-browserify/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/base64-js/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/ieee754/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/readable-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/sha.js/sha.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/sha.js/sha1.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/sha.js/sha224.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/sha.js/sha384.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/stream-browserify/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/timers-browserify/main.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/setimmediate/setImmediate.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/writable-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/duplex-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/transform.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/readable-stream/passthrough.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/create-hmac/legacy.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/algos.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/pbkdf2/lib/async.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-cipher/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-des/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/des.js/lib/des.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/des.js/lib/des/cbc.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/des.js/lib/des/ede.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/encrypter.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/modes/ecb.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/modes/cbc.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/modes/cfb.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/modes/cfb8.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/modes/cfb1.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/modes/ofb.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/ghash.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-aes/decrypter.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-des/modes.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/diffie-hellman/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/diffie-hellman/lib/dh.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/browser/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/browser/sign.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/curve/short.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash.js/lib/hash/sha.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash.js/lib/hash/sha/1.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash.js/lib/hash/sha/224.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash.js/lib/hash/sha/384.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash.js/lib/hash/ripemd.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hash.js/lib/hash/hmac.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/ec/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/ec/key.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/parse-asn1/asn1.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/api.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/base/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/asn1.js/lib/asn1/constants/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/parse-asn1/certificate.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/parse-asn1/fixProc.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browserify-sign/browser/verify.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/create-ecdh/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/public-encrypt/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/public-encrypt/publicEncrypt.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/public-encrypt/privateDecrypt.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/randomfill/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/common/src/io/ktor/http/cio/ChunkedTransferEncoding.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/common/src/io/ktor/http/cio/internals/Chars.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/common/src/io/ktor/http/cio/HttpHeadersMap.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/common/src/io/ktor/http/cio/RequestResponse.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/common/src/io/ktor/http/cio/internals/AsciiCharTree.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/common/src/io/ktor/http/cio/CIOHeaders.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/common/src/io/ktor/http/cio/websocket/CloseReason.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/common/src/io/ktor/http/cio/internals/Tokenizer.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/common/src/io/ktor/http/cio/internals/CharArrayPool.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/common/src/io/ktor/http/cio/websocket/FrameCommon.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/common/src/io/ktor/http/cio/websocket/FrameType.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/js/src/io/ktor/http/cio/websocket/DefaultWebSocketSessionJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/js/src/io/ktor/http/cio/websocket/FrameJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/common/src/io/ktor/http/cio/websocket/Utils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-http/ktor-http-cio/js/src/io/ktor/http/cio/websocket/WebSocketSessionJs.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/ws/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/abort-controller/browser.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-json/ktor-client-serialization/common/src/io/ktor/client/features/json/serializer/KotlinxSerializer.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-json/ktor-client-serialization/js/src/SerializerInitializer.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-logging/common/src/io/ktor/client/features/logging/LogLevel.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-logging/common/src/io/ktor/client/features/logging/LoggedContent.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-logging/common/src/io/ktor/client/features/logging/Logger.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-logging/common/src/io/ktor/client/features/logging/Logging.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-logging/common/src/io/ktor/client/features/logging/ObservingUtils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-logging/js/src/io/ktor/client/features/logging/LoggerJs.kt","webpack://web-app/../../../../../core/commonMain/src/DateTimePeriod.kt","webpack://web-app/../../../../../core/commonMain/src/DateTimeUnit.kt","webpack://web-app/../../../../../core/commonMain/src/Instant.kt","webpack://web-app/../../../../../core/commonMain/src/math.kt","webpack://web-app/../../../../../core/commonMain/src/Clock.kt","webpack://web-app/../../../../../core/commonMain/src/Exceptions.kt","webpack://web-app/../../../../../core/jsMain/src/DayOfWeek.kt","webpack://web-app/../../../../../core/jsMain/src/Instant.kt","webpack://web-app/../../../../../core/jsMain/src/JSJodaExceptions.kt","webpack://web-app/../../../../../core/jsMain/src/mathJs.kt","webpack://web-app/../../../../../core/jsMain/src/Month.kt","webpack://web-app/../../../../../core/commonMain/src/DayOfWeek.kt","webpack://web-app/../../../../../core/commonMain/src/Month.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/@js-joda/core/dist/js-joda.esm.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/ToStringFunction.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/DiffUtils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/Extractor.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/FuzzySearch.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/PriorityQueue.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/algorithms/BasicAlgorithm.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/algorithms/DefaultStringFunction.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/algorithms/RatioAlgorithm.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/algorithms/SetUtils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/algorithms/TokenSet.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/algorithms/TokenSort.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/algorithms/Utils.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/algorithms/WeightedRatio.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/model/BoundExtractedResult.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/model/ExtractedResult.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/ratio/PartialRatio.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/ratio/SimpleRatio.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/commonMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/structs/EditOps.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/fuzzywuzzy/app/src/jsMain/kotlin/com/willowtreeapps/fuzzywuzzy/diffutils/algorithms/pattern.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-auth/common/src/io/ktor/client/features/auth/Auth.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-auth/common/src/io/ktor/client/features/auth/providers/BasicAuthProvider.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/ktor-client/ktor-client-features/ktor-client-auth/common/src/io/ktor/client/features/auth/providers/DigestAuthProvider.kt","webpack://web-app/../../../../../atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/TraceFormat.kt","webpack://web-app/../../../../../atomicfu/src/jsMain/kotlin/kotlinx/atomicfu/Trace.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/browser-id3-writer/dist/browser-id3-writer.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/file-saver/src/FileSaver.js","webpack://web-app/../../../../../decompose/src/commonMain/kotlin/com/arkivanov/decompose/RouterFactoryExt.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/data-models/src/commonMain/kotlin/com/shabinder/common/models/Consumer.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/root/src/commonMain/kotlin/com/shabinder/common/root/SpotiFlyerRoot.kt","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/common/root/src/commonMain/kotlin/com/shabinder/common/root/integration/SpotiFlyerRootImpl.kt","webpack://web-app/../../../../../extensions/coroutines-extensions/src/commonMain/kotlin/com/squareup/sqldelight/runtime/coroutines/FlowExtensions.kt","webpack://web-app/./kotlin-dce/kotlin-wrappers-kotlin-styled-jsLegacy.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/hyphenate-style-name/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/react-dom/cjs/react-dom.production.min.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/scheduler/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/scheduler/cjs/scheduler.production.min.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/styled-components/src/models/StyleTags.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/styled-components/src/models/ThemeProvider.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/styled-components/src/models/GlobalStyle.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/react-is/cjs/react-is.production.min.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/prop-types/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/prop-types/factoryWithThrowingShims.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/utils/capitalizeString.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/utils/prefixProperty.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/utils/prefixValue.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/utils/addNewValuesOnly.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/utils/isObject.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/createPrefixer.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/data.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/cursor.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/crossFade.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/filter.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/flex.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/flexboxOld.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/gradient.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/grid.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/imageSet.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/logical.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/sizing.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/transition.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/index.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/backgroundClip.js","webpack://web-app//home/runner/work/SpotiFlyer/SpotiFlyer/build/js/node_modules/inline-style-prefixer/es/plugins/position.js"],"names":["root","factory","exports","module","define","amd","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ctor","superCtor","super_","constructor","writable","configurable","TempCtor","Kotlin","_","isBooleanArray","a","Array","isArray","Int8Array","$type$","isByteArray","isShortArray","Int16Array","isCharArray","Uint16Array","isIntArray","Int32Array","isFloatArray","Float32Array","isDoubleArray","Float64Array","isLongArray","isArrayish","ArrayBuffer","isView","arrayToString","toString","String","fromCharCode","map","e","join","arrayEquals","b","length","equals","arrayHashCode","arr","result","hashCode","getCallableRef","f","callableName","getPropertyCallableRef","set","setter","obj","cache","$metadata$","implementedInterface","getPropertyRefMetadata","mutable","immutable","getPropertyRefClass","propertyRefClassMetadataCache","paramCount","buf","bufFloat64","bufFloat32","bufInt32","lowIndex","highIndex","kotlin","reflect","KMutableProperty0","KProperty0","KMutableProperty1","KProperty1","getObjectHashCode","hash","Math","random","throwMarkerError","Error","imul","toShort","toByte","toChar","numberToLong","Long","fromNumber","numberToInt","toInt","doubleToInt","numberToDouble","toBoxedChar","BoxedChar","unboxChar","obj1","obj2","objType","numberHashCode","Number","str","code","charCodeAt","getStringHashCode","identityHashCode","low_","low","high_","high","IntCache_","fromInt","cachedObj","isNaN","ZERO","TWO_PWR_63_DBL_","MIN_VALUE","MAX_VALUE","negate","TWO_PWR_32_DBL_","fromBits","lowBits","highBits","fromString","radix","opt_radix","charAt","substring","indexOf","radixToPower","pow","size","min","parseInt","power","multiply","add","TWO_PWR_16_DBL_","TWO_PWR_24_DBL_","TWO_PWR_31_DBL_","TWO_PWR_48_DBL_","TWO_PWR_64_DBL_","ONE","NEG_ONE","TWO_PWR_24_","toNumber","getLowBitsUnsigned","isZero","isNegative","equalsLong","radixLong","div","rem","subtract","remDiv","digits","getHighBits","getLowBits","getNumBitsAbs","val","bit","isOdd","other","notEqualsLong","lessThan","compare","lessThanOrEqual","greaterThan","greaterThanOrEqual","thisNeg","otherNeg","not","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","b00","approx","shiftRight","shiftLeft","res","max","floor","log2","ceil","log","LN2","delta","approxRes","approxRem","modulo","and","or","xor","numBits","shiftRightUnsigned","compareTo_11rb$","inc","dec","valueOf","unaryPlus","unaryMinus","inv","rangeTo","ranges","LongRange","defineInlineFunction","fun","wrapFunction","apply","arguments","suspendCall","coroutineResult","coroutineReceiver","setCoroutineResult","getReifiedTypeParameterKType","compareTo","typeA","doubleCompareTo","primitiveCompareTo","ia","imulEmulated","doubleToRawBits","doubleFromBits","floatToRawBits","floatFromBits","ensureNotNull","x","throwNPE","startsWith","searchString","position","lastIndexOf","endsWith","subjectString","undefined","lastIndex","sign","trunc","NaN","taylor_2_bound","sqrt","taylor_n_bound","upper_taylor_2_bound","upper_taylor_n_bound","sinh","abs","y","exp","y1","isFinite","cosh","tanh","Infinity","asinh","acosh","atanh","log1p","x2","x3","expm1","hypot","log10","LOG10E","LOG2E","clz32","asUint","__proto__","fill","TypeError","O","len","start","relativeStart","k","end","relativeEnd","finalValue","normalizeOffset","offset","typedArraySlice","begin","subarray","arrays","TypedArray","slice","Function","self","array","callback","totalOrderComparator","sort","compareFunction","Kind","callGetter","thisObject","klass","propertyName","propertyDescriptor","getOwnPropertyDescriptor","getPrototypeOf","isType","proto","kind","OBJECT","klassMetadata","INTERFACE","isInheritanceFromInterface","iface","metadata","interfaces","superPrototype","superConstructor","isNumber","isChar","isComparable","type","Comparable","isCharSequence","CharSequence","ordinal","initValue","fillArrayVal","init","element","index","NoSuchElementException","destination","IntRange","item","toCollection","asCollection","emptySet","setOf","defaultValue","iterator","count","hasNext","next","isEmpty","single","emptyList","listOf","list","optimizeReadOnlyList","j","copyToArray","sortWith","asList","optimizeReadOnlySet","elements","addAll","separator","prefix","postfix","limit","truncated","transform","buffer","to","last","first","step","EMPTY","minimumValue","maximumValue","FilteringSequence","predicate","it","emptySequence","TakeSequence","TransformingSequence","CharIterator","IntIterator","LongIterator","getProgressionLastElement","endInclusive","NotImplementedError","nextByte","nextChar","nextShort","nextInt","nextLong","nextFloat","nextDouble","nextBoolean","CharProgressionIterator","CharProgression","rangeStart","rangeEnd","IntProgressionIterator","IntProgression","LongProgressionIterator","LongProgression","CharRange","mod","differenceModulo","BooleanIterator","ByteIterator","ShortIterator","FloatIterator","DoubleIterator","context","current","v","currentResult","isFailure","currentException","exceptionOrNull","doResume","outcome","exception","completion","Result","createFailure","intercepted","CoroutineImpl","receiver","cause","message","Exception","RuntimeException","src","dst","srcLen","dstLen","source","newSize","checkRadix","ArrayList","fromIndex","toIndex","sortArray","comparator","midPoint","reverseIndex","tmp","toArray","copyToArrayImpl","collection","push","pair","collectionsSort","naturalOrder","startIndex","endIndex","destinationOffset","rangeSize","subrange","throwIndexOverflow","expectedSize","AbstractCollection","AbstractMutableCollection","AbstractMutableList","AbstractMap","AbstractMutableSet","initialCapacity","getStableSortingIsSupported","comparison","mergeSort","_stableSortingIsSupported","median","left","leftIndex","rightIndex","right","leftValue","rightValue","target","checkIsMutable","remove","modified","_index","changed","times","hasPrevious","newValue","oldValue","entries","clear","from","iter","entry","modCount","splice","concat","pop","value1","value2","internalMap","equality","InternalHashCodeMap","loadFactor","createJsMap","keys","original","BaseOutput","BufferedOutput","initialResult","ClassCastException","pairs","NEGATIVE_INFINITY","toRawBits","bits","POSITIVE_INFINITY","isInfinite","hi26","INV_2_26","low27","INV_2_53","KClassImpl","jClass","createEntrySet","chainOrEntry","chain","isChain","chainSize","keyIndex","itemIndex","state","lastEntry","_head","_tail","node","old","newEntry","build","println","outputStream","write","messageString","flush","console","cur","simpleName","jsClass","PrimitiveKClassImpl","classifier","isMarkedNullable","kClass","variance","prefixString","functionClasses","arity","getKClassM","getKClass1","jClasses","ErrorKClass","stringClass","SimpleKClassImpl","content","matches","toUpperCase","uppercase","MIN_HIGH_SURROGATE","MAX_HIGH_SURROGATE","MIN_LOW_SURROGATE","MAX_LOW_SURROGATE","toLowerCase","char","pattern","options","collectionSizeOrDefault","RegExp","match","IndexOutOfBoundsException","reversed","isLowSurrogate","isHighSurrogate","concatToString","string","toInsert","newLength","dstIndex","stringCsq","reset","exec","input","test","findNext","Regex","replace","replacement","lastStart","sb","foundMatch","range","nonGlobalOptions","subSequence","literal","AbstractList","ignoreCase","n1","n2","s1","s2","regionMatches","suffix","regex","regionMatchesImpl","thisOffset","otherOffset","throwOnMalformed","CharacterCodingException","byte1","malformed","bytes","byte2","byte3","byte4","byteIndex","byte","stringBuilder","codePointFrom2","REPLACEMENT_CHAR","codePointFrom3","codePointFrom4","sourceUnit","targetUnit","sourceCompareTarget","isNode","HrTimeSource","MatchGroup","markNow","TimeMark","process","hrtime","AbstractDoubleTimeSource","startedAt","seconds","nanos","performance","now","decimals","round","toFixed","toLocaleString","json","toExponential","createElement","previous","nextIndex","otherIterator","elem","elemOther","AbstractSet","ourValue","minCapacity","newCapacity","arrayCopy","newElements","internalIndex","removeFirst","internalLastIndex","removeLast","decrementedInternalIndex","decrementedHead","tail","shiftedHead","elementsSize","shiftToBack","elementsToShift","shiftedInternalIndex","shiftToFront","oldElement","newTail","oldCapacity","structure","ArrayAsCollection","ArithmeticException","values","contains","isVarargs","IndexingIterator","IndexedValue","checkIndexOverflow","putAll","emptyMap","filterInPlace","predicateResultToRemove","writeIndex","readIndex","removeIndex","SequenceBuilderIterator","nextStep","block","SequenceScope","reverseElementIndex","sequence","throwOnFailure","GeneratorSequence","seedFunction","nextFunction","nextItem","nextState","FlatteningSequence","itemIterator","nextItemIterator","SubSequence","safe","getOrThrow","acc","removed","interceptor","CombinedContext","baseKey","operation","initial","newLeft","initialValue","Random","defaultPlatformRandom","accumulator","until","checkRangeBounds","fastLog2","bitCount","nLow","nHigh","rnd","doubleFromParts","r1","nextDown","steps","remainder","vr","seed","boundsErrorMessage","seed1","seed2","KTypeProjection","v0","takeUpperBits","star","uppercaseChar","newIndent","marginPrefix","isBlank","lines","getIndentFunction","isWhitespace","firstNonWhitespaceIndex","line","indent","int","firstChar","limitBeforeMul","digitOf","digit","limitForMaxRadix","NumberFormatException","padChar","padStart","chars","indices","indexOfAny","charArrayOf","lastIndexOfAny","currentStartIndex","DelimitedRangesSequence","currentIndex","strings","findAnyOf","second","delimiters","currentOffset","delimiter","isLimited","splitToSequence","lineSequence","Duration","nextSearchIndex","groupValues","convertDurationUnit","unit","scale","action","inDays","hoursComponent","minutesComponent","secondsComponent","nanosecondsComponent","inHours","inMinutes","inSeconds","inNanoseconds","absoluteValue","scientific","maxDecimals","absNs","formatScientific","formatUpToDecimals","formatToExactDecimals","shortName","number","hours","nanoseconds","minutes","hasSeconds","hasHours","hasMinutes","nss","AdjustedTimeMark","duration","elapsedNow","mark","adjustment","read","initializer","isInitialized","InitializedLazyImpl","Pair","that","UByte","third","UInt","uintCompare","data","ulongCompare","uintDivide","ulongDivide","uintRemainder","ulongRemainder","UIntProgression","UIntRange","uintToDouble","UIntProgressionIterator","UIntIterator","ULong","nextUInt","nextULong","ULongProgression","ulongToDouble","ulongToString","ULongProgressionIterator","ULongIterator","ac","bc","UShort","uradix","beforeAdding","v1","v2","divisor","dividend","quotient","base","filterNotNullTo","toMutableList","IndexingIterable","reverseOrder","sum","collectionSizeOrNull","fillFrom","arrayCopyResize","booleanArrayIterator","byteArrayIterator","shortArrayIterator","charArrayIterator","intArrayIterator","longArrayIterator","floatArrayIterator","doubleArrayIterator","captureStackTrace","instance","stack","UnsafeLazyImpl","output","delegate","ownerDocument","appendChild","NullPointerException","KTypeImpl","intClass","doubleClass","booleanClass","functionClass","booleanArrayClass","charArrayClass","byteArrayClass","shortArrayClass","intArrayClass","longArrayClass","floatArrayClass","doubleArrayClass","arrayClass","anyClass","throwableClass","toByteOrNull","numberFormatError","toShortOrNull","toIntOrNull","toLongOrNull","option","decodeUtf8","oldChar","newChar","_suppressed","suppressed","getOrImplicitDefault","mapOf","optimizeReadOnlyMap","toMutableMap","toHashSet","ReversedListReadOnly","toSet","createCoroutineUnintercepted","ClosedDoubleRange","MIN_SURROGATE","MAX_SURROGATE","replaceIndentByMargin","replaceIndent","startFound","missingDelimiterValue","rangesDelimitedBy","toUByteOrNull","toUShortOrNull","toUIntOrNull","toULongOrNull","NodeJsOutput","BufferedOutputToConsoleLog","Comparator","Buffer","copyProps","SafeBuffer","arg","encodingOrOffset","alloc","allocUnsafe","allocUnsafeSlow","encoding","SlowBuffer","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","args","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","assert","msg","inherits","BN","endian","isBN","negative","words","red","_init","wordSize","window","parseHex4Bits","parseHexByte","lowerBound","parseBase","mul","num","cmp","_initNumber","_initArray","_parseHex","_parseBase","w","strip","limbLen","limbPow","total","word","imuln","_iaddn","copy","dest","clone","_expand","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","out","lo","carry","ncarry","rword","maxJ","padding","groupSize","groupBase","modn","idivn","ret","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","q","andln","iushrn","_countBits","_zeroBits","bitLength","hi","zeroBits","toTwos","width","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","uor","iuand","iand","uand","iuxor","ixor","uxor","bytesNeeded","bitsLeft","setn","wbit","iadd","isub","sub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","mulTo","hncarry","bigMulTo","makeRBT","N","revBin","rb","permute","rbt","rws","iws","rtws","itws","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","ws","convert13b","stub","ph","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","bhi","diff","qj","divmod","positive","divn","umod","divRound","dm","half","r2","egcd","A","B","C","D","g","isEven","yp","xp","im","jm","gcd","_invmp","x1","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","_strip","outLen","prev","mod3","one","nOne","lpow","z","wnd","currentLen","mont","u","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","Uint8Array","byteOffset","fromArrayLike","fromArrayBuffer","isEncoding","actual","isBuffer","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","INSPECT_MAX_BYTES","global","foo","typedArraySupport","poolSize","_augment","species","_isBuffer","pos","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","toHex","checkOffset","ext","checkInt","objectWriteUInt16","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","trim","stringtrim","base64clean","equal","utils","minAssert","minUtils","zero2","encode","getNAF","naf","getJSF","k1","k2","jsf","m8","d1","d2","u1","u2","m14","m24","cachedProperty","computer","parseBytes","intFromLE","isSurrogatePair","htonl","zero8","enc","toHex32","join32","split32","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","ah","al","bh","sum64_hi","bl","sum64_lo","sum64_4_hi","ch","cl","dh","dl","sum64_4_lo","sum64_5_hi","eh","el","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","default","pool","closed","copied","EOFException","head","writePosition","readPosition","after","release","before","prepareReadFirstHead","headPosition","byteCount","failLongToIntConversion","charset","dstOffset","Transform","StringDecoder","CipherBase","hashMode","_finalOrDigest","final","_final","__final","_decoder","_encoding","update","inputEnc","outputEnc","outData","_update","_toString","setAutoPadding","getAuthTag","setAuthTag","setAAD","_transform","err","_flush","done","fin","ReflectOwnKeys","R","Reflect","ReflectApply","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","EventEmitter","emitter","Promise","resolve","reject","errorListener","resolver","eventTargetAgnosticAddListener","handler","flags","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","unshift","warned","warn","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","addEventListener","wrapListener","removeEventListener","setMaxListeners","getMaxListeners","doError","error","er","originalListener","spliceOne","rawListeners","eventNames","nb","nenc","retried","_normalizeEncoding","normalizeEncoding","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","utf8CheckExtraBytes","utf8CheckIncomplete","pna","objectKeys","Duplex","util","Readable","Writable","method","readable","allowHalfOpen","onend","_writableState","ended","onEndNT","highWaterMark","_readableState","destroyed","_destroy","cb","ContentDisposition","HttpStatusCode","formUrlEncodeTo","urlString","Grammar","GrammarRegex","headers","crypto","msCrypto","getRandomValues","generated","codes","createErrorType","Base","NodeError","_Base","subClass","superClass","arg1","arg2","arg3","getMessage","oneOf","expected","thing","determiner","search","this_len","getBuffer","Hash","blockSize","finalSize","_block","_finalSize","_blockSize","_len","accum","assigned","digest","_hash","invoke_3","$receiver","tmp$","package$kotlinext","kotlinext","package$js","js","clone_issdgt$","assign","getOwnPropertyNames_s8jyvk$","invoke_z5wujd$","invoke_dgimx$","invoke_9p99ed$","atomic","capitalize","initialize","actionConsumer","requireValue","bootstrapper","assertOnMainThread","LOG_TAG","AtomicRefImpl","AtomicBooleanImpl","withLogTag","MainThreadId","mainThreadIdRef","getMainThreadId","id","logE","MainThreadIdHolder","isMainThread","readAvailable","clearFrom","padSize","chunk","toBase64","BASE64_PAD","makeShared","delegateIterator","fromPhaseOrContent","fromPhase","phase","rootContinuation","writeFully","MD5","RIPEMD160","sha","alg","objectToString","isBoolean","isNull","isNullOrUndefined","isString","isSymbol","isUndefined","isRegExp","isObject","isDate","isError","isFunction","isPrimitive","BlockHash","pending","pendingTotal","outSize","hmacStrength","padLength","_delta8","_delta32","_pad","_digest","Reporter","DecoderBuffer","EncoderBuffer","reporter","isEncoderBuffer","isDecoderBuffer","save","restore","skip","raw","fail","_reporterState","forEach","AllPlatforms","CorsProxy","url","corsProxy","DownloadStatus","DownloadResult","contentEquals","contentHashCode","ObservableProperty","feature","attributes","HttpRequest","execute","TypeInfo","executeUnsafe","HttpStatement","fn","asUInt32Array","scrubVec","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","AES","_key","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","decryptBlock","m1","scrub","password","salt","keyBits","ivLen","keyLen","iv","used","keyStart","ivStart","BaseCurve","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","curve","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","I","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","decodePoint","pointFromX","encodeCompressed","_encode","compact","getX","getY","precompute","beta","_getBeta","_hasDoubles","dbl","asn1","aesid","fixProc","ciphers","compat","parseKeys","passphrase","subtype","ndata","stripped","tag","certificate","decode","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","params","pub_key","DSAparam","decrypt","kde","kdeparams","iters","algo","cipher","cipherText","keylen","pbkdf2Sync","createDecipheriv","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","privateKey","ECPrivateKey","priv_key","DSAPrivateKey","parameters","signature","$module$react","$module$kotlin_wrappers_kotlin_extensions_jsLegacy","$module$kotlinx_coroutines_core","$$importsForInline$$","Unit","Kind_CLASS","CLASS","Annotation","collections","emptyList_287e2$","listOf_mh5how$","Children","addAll_ye1y7v$","throwCCE","cloneElement","first_2p1efm$","ArrayList_init","ArrayList_init_287e2$","collectionSizeOrDefault_ba2ldo$","ArrayList_init_0","ArrayList_init_ww73n8$","checkIndexOverflow_za3lpa$","IllegalStateException_init","IllegalStateException_init_pdl1vj$","get_js","get_js_1yb8b7$","Component","kotlinx","coroutines","intrinsics","COROUTINE_SUSPENDED","launch_s496o7$","ReadWriteProperty","properties","rawUseEffect","to_ujzrz7$","useEffect","RBuilder","childList","RBuilder$invoke$lambda$lambda","closure$handler","buildElements","closure$value","RBuilder$invoke$lambda$lambda$lambda","RBuilder$invoke$lambda","nodes","tmp$_0","Fragment","RElementBuilder","attrs","attrs_iyt8sk$_0","child$lambda","get_rClass","get_children","children","set_key","set_ref","ref","RComponent","RStateDelegate","setState","state_0","setState_0","child_52psg1$","add_11rb$","unaryPlus_84gpoi$","unaryPlus_pdl1vz$","child_k3oess$","props","child_4dvv5y$","invoke_eb8iu4$","invoke_csqs6z$","$receiver_0","invoke_ory6b3$","node_rwypko$","child_ssazr1$","klazz","child_t7en6a$","getKClass","C_0","isC","childFunction_2656uf$","closure$children","childFunction_khdow9$","node_3ecl1l$","node_e2hqbc$","children_yllgzm$","children_48djri$","renderEach_3b8uhr$","tmp$_1","renderEachIndexed_a4qrr7$","tmp$_0_0","index_0","withKey_s5hl0b$","newKey","indexOf_11rb$","removeAt_za3lpa$","elementWithKey","add_wxm5ur$","withKey_pspxar$","attrs_slhiwc$","ref_5ij4lk$","init_bc6fkx$","init_65a95q$","children_ss14n$","children_tgvp6h$","render","this$RComponent","render_ss14n$","component1","component2","getValue_lrcp0p$","thisRef","setValue_9rddgb$","package$react","react","buildElements_zepujl$","functionalComponent_7g4vsr$","displayName","func","closure$func","fc","closure$props","functionalComponent$lambda$lambda","child_9r8yuv$","component","get_rClass_inwa2g$","get_children_yllgzm$","set_key_38rnt0$","set_ref_jjyqia$","ref_dpkau5$","setState_kpl3tw$","buildState","closure$buildState","builder","RComponent_init_8bz2yq$","$this","useEffect_wrbdb4$","dependencies","effect","closure$effect","rawEffect","onComplete","onNext","ObserverImpl","Dir","createDatabase","getLogger","TokenStore","YoutubeMusic","SpotifyProvider","GaanaProvider","YoutubeProvider","YoutubeMp3","FetchPlatformQueryResult","createHttpClient","logger","Logger","level","JsonFeature","Logging","enableNetworkLogs","serializer","kotlinxSerializer","flow","extension","defaultDir","removeIllegalChars","fileSeparator","subFolder","itemName","epochSeconds","currentPlatform","launch","GlobalScope","Dispatchers","Default","defaultRequest","header","access_token","contentLength","roundToInt","progress","isSuccess","status","close","db","folderType","coverUrl","trackList","youtubeProvider","withContext","token","expiry","TokenData","accessToken","authenticateSpotify","httpClient","TOKEN","format","substringAfter","fullLink","substringAfterLast","gaanaLink","substringBeforeLast","link","PlatformQueryResult","firstOrNull","artist","artworkLink","tracks","custom_artworks","size_480p","track_title","imageCacheDir","album_title","release_date","genre","lyrics_url","downloaded","TrackDetails","finalOutputDir","getToken","substringBefore","track","moreTracks","items","images","getOrNull","albumObject","Album","Image","album","response","artists","duration_ms","href","compareValues","selector","put","putJsonObject","contentType","Json","body","FormDataContent","basic","sendWithoutRequest","username","Auth","fileName","illegalCharArray","durationSec","responseObj","contentBlocks","cBlock","contents","linkBlock","resultBlocks","finalResult","detailArray","detail","availableDetails","YoutubeTrack","videoId","ytTrack","ytTracks","hasCommonWord","trackName","nameWord","FuzzySearch","resultName","artistMatchNumber","trackArtists","trackDurationSec","artistMatch","difference","avgMatch","linksWithMatchValue","toMap","sortedWith","toList","apiKey","override","allTracksStatus","videoID","joinToString","youtubeMusic","searchQuery","downloadTrack","DownloadProgressFlow","dispatcherIO","youtubeMp3","downloadFile","toArrayBuffer","albumArtObj","albumArtURL","albumArt","setFrame","albumName","year","addTag","saveAs","getBlob","Picture","appDeclaration","startKoin","commonModule","KotlinxSerializer","isLenient","ignoreUnknownKeys","lazy","MutableSharedFlow","HashBase","ARRAY16","_a","_b","_c","_d","rotl","fnF","fnG","fnH","fnI","_blockOffset","_length","config","localStorage","trace","ERR_STREAM_PREMATURE_CLOSE","eos","stream","opts","called","onlegacyfinish","onfinish","writableEnded","finished","readableEnded","endEmitted","onerror","onclose","onrequest","req","setHeader","abort","isRequest","zl","zr","sl","sr","hl","hr","_e","fn1","fn2","fn3","fn4","fn5","ar","br","cr","dr","tl","tr","Algorithm","sha1","sha224","sha256","sha384","sha512","Stream","PassThrough","CorkedRequest","_this","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","setImmediate","WritableState","internalUtil","deprecate","OurUint8Array","realHasInstance","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","destroy","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","hasInstance","pipe","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","Cipher","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","_unpad","deciphers","modes","createCipher","createCipheriv","Cipheriv","createDecipher","Decipher","Decipheriv","listCiphers","getCiphers","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","webpackPolyfill","paths","Rand","rand","generate","_rand","getBytes","getByte","randomBytes","getr","priv","modulus","prime1","prime2","crt","blinds","blinder","publicExponent","unblinder","blind","blinded","c1","c2","qinv","coefficient","exponent1","m2","exponent2","elliptic","curves","ec","eddsa","pre","PresetCurve","short","edwards","isInfinity","defineCurve","lambda","basis","common","ripemd","hmac","ripemd160","safer","Safer","kStringMaxLength","constants","MAX_LENGTH","MAX_STRING_LENGTH","tags","methods","Node","parent","_baseState","reverseArgs","choice","optional","any","use","useDecoder","explicit","implicit","_wrap","stateProps","cstate","prop","filter","child","_useArgs","def","_decode","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","path","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","entity","_use","some","_createEncoderBuffer","_encodeValue","_skipDefault","primitive","_encodeChoice","_encodePrimitive","cls","_encodeComposite","JSON","stringify","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","errors","ReporterError","rethrow","pathLen","inherited","partial","reverse","tagClass","0","1","2","3","tagClassByName","tagByName","sourceIterator","mapCapacity","findAssociatedObject","consumer","attributeName","tagName","encoder","Attribute","trueValue","falseValue","BooleanEncoder","tickerEncode","EnumEncoder","realValue","valuesMap","stringSetDecode","initialValues","HTMLTag","initialAttributes","DelegatingMap","attributeStringString","attributeBooleanTicker","attributeButtonFormEncTypeEnumButtonFormEncTypeValues","attributeButtonFormMethodEnumButtonFormMethodValues","attributeButtonTypeEnumButtonTypeValues","attributeBooleanBooleanOnOff","attributeFormEncTypeEnumFormEncTypeValues","attributeFormMethodEnumFormMethodValues","attributeInputTypeEnumInputTypeValues","attributeInputFormEncTypeEnumInputFormEncTypeValues","attributeInputFormMethodEnumInputFormMethodValues","immutableEntries","StringAttribute","StringSetAttribute","BooleanAttribute","TickerAttribute","EnumAttribute","buttonFormEncTypeValues","buttonFormMethodValues","buttonTypeValues","commandTypeValues","dirValues","draggableValues","formEncTypeValues","formMethodValues","iframeSandboxValues","inputFormEncTypeValues","inputFormMethodValues","inputTypeValues","keyGenKeyTypeValues","runAtValues","textAreaWrapValues","thScopeValues","coerceAtLeast","mappings","maxCode","nullptn","formatptn","colonptn","cursorptn","transformptn","animationptn","propertiesptn","elementptn","selectorptn","andptn","escapeptn","invalidptn","keyframeptn","plcholdrptn","readonlyptn","beforeptn","afterptn","tailptn","whiteptn","pseudoptn","writingptn","supportsptn","propertyptn","selfptn","pseudofmt","dimensionptn","imgsrcptn","webkit","moz","ms","SEMICOLON","CLOSEBRACES","OPENBRACES","OPENPARENTHESES","CLOSEPARENTHESES","NEWLINE","CARRIAGE","SPACE","DASH","STAR","COMMA","COLON","FOWARDSLASH","column","cascade","escape","compress","semicolon","preserve","plugins","plugged","should","unkwn","keyed","nscopealt","nscope","compile","depth","bracket","comment","parentheses","quote","trail","peak","counter","atrule","pseudo","caret","insert","invert","eof","eol","flat","delimited","proxy","select","supports","vendor","selectors","scope","declare","parseFloat","group","parents","at","stylis","PREPS","POSTS","plugin","areInputsEqual","newInputs","lastInputs","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","_i","propIsEnumerable","propertyIsEnumerable","toObject","test1","test2","test3","letter","shouldUseNative","symbols","ThreadLocalSubject","observer","isDisposed","mutableState","disposable","isCompleted","isDraining","dispose","BehaviorSubjectImpl","PublishSubjectImpl","_finalized","throwIfNotStringOrBuffer","ReadableState","EElistenerCount","debug","debugUtil","debuglog","createReadableStreamAsyncIterator","BufferList","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","readableObjectMode","pipes","pipesCount","flowing","reading","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","addChunk","maybeReadMore","isPaused","setEncoding","howMuchToRead","computeNewHighWaterMark","maybeReadMore_","updateReadableListening","resume","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","ondrain","ondata","cleanedUp","pipeOnDrain","pause","event","dests","ev","wrap","asyncIterator","_fromList","iterable","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","rState","ERR_INVALID_OPT_VALUE","duplexKey","highWaterMarkFrom","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","err2","K","W","Sha256","_w","maj","sigma0","sigma1","gamma0","_f","_g","_h","T1","T2","H","Sha512","Ch","xl","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","fh","gh","hh","fl","gl","xh","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","readableHwm","readableHighWaterMark","needMoreData","hasStrings","copyFromBufferString","copyFromBuffer","fromListPartial","increasedAwaitDrain","_this2","Legacy","md5","ZEROS","Hmac","blocksize","_alg","ipad","_ipad","opad","_opad","pbkdf2","MAX_ALLOC","iterations","checkParameters","sizes","rmd160","saltLen","shaFunc","getDigest","ipad1","ipad2","DK","block1","destPos","hLen","T","U","ip","inL","inR","outL","outR","rip","pc1","r28shl","pc2table","pc2","expand","sTable","substitute","permuteTable","padSplit","DESState","DES","_desState","deriveKeys","shiftTable","kL","kR","inp","inOff","outOff","_encrypt","_decrypt","pad","lStart","rStart","keyL","keyR","incr32","getBlock","_cipher","_prev","encrypt","chunkNum","_cache","aes","GHASH","StreamCipher","ck","_ghash","_finID","ghash","toPad","ivBits","calcIv","_secCache","_alen","_mode","_authTag","_called","rump","xorTest","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","gen","bn","brorand","MillerRabin","_randbelow","min_bytes","_randrange","stop","rone","rn1","getDivisor","ch32","maj32","p32","ft_1","s0_256","s1_256","g0_256","g1_256","shaCommon","sha256_K","SHA256","sha512_K","SHA512","ch64_hi","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","move","_move","for","modrn","allocate","_toArrayLikeLE","_toArrayLikeBE","isNegNum","bignum","decoders","encoders","der","pem","DEREncoder","tree","DERNode","encodedTag","encodeTag","lenOctets","unused","relative","ident","objid","time","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","numArray","_getEncoder","dataBuffer","defaultBuffer","DERDecoder","derDecodeTag","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","possibleEnd","numstr","printstr","identifiers","subident","mon","day","hour","sec","UTC","_getDecoder","createHash","i2ops","paddedMsg","getGlobal","fetch","Headers","Request","Response","CommonLogger","toDouble","componentContext","getStore","instanceKeeper","storeFactory","database","SpotiFlyerMainStoreProvider","showPopUpMessage","provide","StoreHolder","store","isInternetAvailable","mainOutput","accept","category","SimpleBootstrapper","SuspendExecutor","updates","intent","openPlatform","platformID","platformLink","giveDonation","shareApp","DownloadRecord","totalFiles","SpotiFlyerMainImpl","channel","mainContext","Main","CoroutineScope","awaitClose","callbacks","cancel","onResult","onLabel","label","callbackFlow","fetchQuery","downloadProgressFlow","SpotiFlyerListStoreProvider","listOutput","updatedTrackList","collectLatest","finalList","downloadTracks","queryActiveTracks","replayCache","titleList","newTrack","updatedList","SpotiFlyerListImpl","$module$kotlin_wrappers_kotlin_react_jsLegacy","$module$kotlinx_html_js","$module$react_dom","attrsMap","StringBuilder_init","Unsafe","html","TagConsumer","listOf_i5x0yv$","toMap_6hr0sd$","toMutableMap_abgq59$","Kind_OBJECT","PropertyMetadata","RDOMBuilder","RDOMBuilder$consumer$ObjectLiteral","attributesEntries","setProp_4w9ihe$","this$RDOMBuilder","RDOMBuilder$consumer$ObjectLiteral$onTagContentUnsafe$ObjectLiteral","closure$sb","render$lambda","fixAttributeName","get_11rb$","StringAttr","StringAttr_instance","attribute","get_g0n3bx$","set_hpg2xa$","get_defaultChecked_a2ovwx$","set_defaultChecked_47da7g$","get_values_sktobr$","set_values_d8zj82$","get_value_sktobr$","set_value_g9clh3$","attrs_1wdtl9$","onTagAttributeChange_5n2z71$","onTagComment_6bul2c$","onTagContent_6bul2c$","onTagContentEntity_ws8or7$","append_pdl1vj$","onTagContentUnsafe_kntra7$","__html","dangerouslySetInnerHTML","onTagStart_tkgjla$","onTagEnd_tkgjla$","onTagEvent_azi6uv$","finalize","getValue_pt3q5s$","setValue_wi26v6$","put_xwzc9p$","StringAttr_getInstance","package$dom","dom","render_2955dm$","container","fixAttributeName_61zpoe$","unaryPlus_lvwjq6$","raw_3p81yu$","raw_61zpoe$","raw_ws8or7$","onTagError_cjwpn3$","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","_hyphenateStyleName2","_hyphenateStyleName","insertRule","toSheet","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","reactPropsRegex","getType","payload","isPlainObject","__spreadArrays","il","jl","assignProp","newVal","originalObject","propType","mergeRecursively","origin","newComer","extensions","extend","newObject","reduce","targetVal","newComers","LifecycleRegistry","SpotiFlyerRoot","DefaultStoreFactory","fetchPlatformQueryResult","directories","StyleSheet","circular","Color","aqua","colorPrimary","renderableChild","black","white","margin","App","document","getElementById","onload","initKoin","appScope","initialState","__unique_id","clazz","RenderableComponent","model","models","setAttribute","iconsAndPlatforms","platformIconList","isBadge","badges","iconList","searchbar","coverImage","downloadAllButton","downloadButton","isActive","downloadAll","details","loadingAnim","loadingSpinner","trackItem","navBar","stateFlow","subscription","componentDidMount","form","childNodes","removeChild","appendElement","Message","SearchBar","onLinkChange","IconList","queryResult","LoadingAnim","CoverImage","coverImageURL","coverName","DownloadAllButton","TrackItem","classes","mutableListOf","transparent","RenderableRootComponent","routerState","activeChild","callBacks","NavBar","isBackVisible","popBackToHomeScreen","functionalComponent","makeRow","elementAt","icon","firstElem","placeholder","alert","isClicked","setClicked","LoadingSpinner","onClick","downloadStatus","setDownloadStatus","DownloadButton","nav","LinearDimension","auto","StrictMode","Profiler","Suspense","encodeURIComponent","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","E","isReactComponent","forceUpdate","F","isPureReactComponent","__self","__source","J","defaultProps","$$typeof","_owner","L","P","Q","_status","_result","then","S","ReactCurrentDispatcher","ReactCurrentBatchConfig","transition","ReactCurrentOwner","IsSomeRendererActing","only","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","createFactory","createRef","forwardRef","isValidElement","_payload","memo","useCallback","useContext","useDebugValue","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","PublishSubject","BehaviorSubject","executorFactory","subscribe","handleAction","handleIntent","DefaultStore","reducer","storeName","eventType","valueClassName","valueText","logV","logFormatter","DefaultLogFormatter","LoggerWrapper","newState","LoggingStore","LoggingExecutor","LoggingReducer","rng","pseudoRandomBytes","prng","createHmac","algos","algoKeys","hashes","getHashes","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","pipeline","enumerableOnly","sym","_defineProperty","_defineProperties","descriptor","custom","Constructor","_classCallCheck","protoProps","staticProps","_getString","_getBuffer","getOwnPropertyDescriptors","defineProperties","_objectSpread","customInspect","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","promise","lastPromise","wrapForNext","_Object$create","ERR_MISSING_ARGS","destroyer","popCallback","streams","destroys","Sha","rotl30","ft","Sha1","rotl5","Sha224","Sha384","EE","_isStdio","didOnEnd","cleanup","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","handle","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","documentElement","script","onreadystatechange","attachEvent","task","ZERO_BUF","subtle","toBrowser","checks","browserPbkdf2","importKey","deriveBits","resolvePromise","prom","catch","checkNative","resp","aesModes","desModes","ebtk","suite","des","instantiate","EDE","modeName","_des","des3","CBCState","_cbcInit","_cbcState","superProto","EDEState","k3","_edeState","MODES","AuthCipher","Splitter","_autopadding","PADDING","setTo","padBuff","encryptStart","encryptByte","byteParam","shiftIn","ZEROES","fromArray","_multiply","lsbVi","Vi","Zi","abl","_last","padded","unpad","autoPadding","DH","ENCODINGS","generator","genc","generatePrime","SEVEN","setPublicKey","pub","_pub","setPrivateKey","_priv","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","formatReturnValue","hex","checkPrime","__gen","generateKeys","_gen","getPublicKey","computeSecret","secret","getPrime","front","getPrivateKey","getGenerator","verify","algorithms","_hashType","_tag","_signType","sig","EC","getKey","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","signType","curveId","keyFromPrivate","toDER","ecSign","dsaSign","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","y2","len1","_endoSplit","p1","p2","q1","q2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","fromJSON","endoMul","parse","obj2point","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","zinv","zinv2","ay","pz2","z2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","eqXToP","zs","xc","MontCurve","i4","a24","normalize","aa","bb","diffAdd","da","jumlAdd","EdwardsCurve","twisted","mOneA","dd","oneC","_mulA","_mulC","lhs","pointFromY","_extDbl","nt","_projDbl","_extAdd","_projAdd","zi","sha1_K","SHA1","SHA224","SHA384","Kh","Ah","Bh","Dh","Eh","rh","sh","inner","outer","HmacDRBG","KeyPair","Signature","nh","keyPair","fromPrivate","keyFromPublic","fromPublic","genKeyPair","drbg","pers","persEnc","entropy","entropyEnc","nonce","ns2","_truncateToN","truncOnly","bkey","getPrivate","ns1","kp","kpX","recoveryParam","canonical","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","predResist","minEntropy","_reseed","reseedInterval","V","nonceEnc","_hmac","kmac","reseed","addEnc","temp","_importPrivate","privEnc","_importPublic","pubEnc","reason","derive","_importDER","Position","place","getLength","octetLen","rmPadding","constructLength","octets","slen","backHalf","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","Rencoded","encodePoint","s_","pubBytes","makeSignature","SG","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","_secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","seq","AlgorithmIdentifier","bitstr","null_","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","ECParameters","namedCurve","Entity","_createNamed","Generated","_initNamed","PEMEncoder","PEMDecoder","_reverse","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","bool","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherKey","match2","checkValue","pubkey","ecVerify","unpacked","montp","dsaVerify","padNum","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","inenc","mgf","withPublic","publicKey","iHash","hLen2","ps","dblen","maskedDb","maskedSeed","oaep","nonZero","pkcs1","zBuffer","dif","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","maxValue","opcode","AbortController","AbortSignal","SimpleLogger","superErrorClass","JsJodaException","DateTimeException","DateTimeParseException","parsedString","errorIndex","UnsupportedTemporalTypeException","IllegalArgumentException","IllegalStateException","_inheritsLoose","_assertThisInitialized","ReferenceError","assertion","requireNonNull","parameterName","requireInstance","_class","abstractMethodFail","methodName","assert$1","freeze","MathUtil","intDiv","roundDown","safeZero","intMod","floorDiv","floorMod","safeAdd","verifyInt","safeToInt","safeSubtract","safeMultiply","_parseInt","_x","compareNumbers","smi","numbers","_numbers","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","Enum","_name","_proto","TemporalAmount","addTo","temporal","subtractFrom","TemporalUnit","isDurationEstimated","isDateBased","isTimeBased","isSupportedBy","dateTime","periodToAdd","between","temporal1","temporal2","_TemporalAmount","_seconds","_nanos","ofDays","days","_create","LocalTime","SECONDS_PER_DAY","ofHours","SECONDS_PER_HOUR","ofMinutes","SECONDS_PER_MINUTE","ofSeconds","nanoAdjustment","secs","NANOS_PER_SECOND","nos","ofMillis","millis","mos","ofNanos","of","amount","plus","startInclusive","endExclusive","ChronoUnit","SECONDS","isSupported","ChronoField","NANO_OF_SECOND","startNos","getLong","adjustedEnd","with","dayMatch","hourMatch","minuteMatch","secondMatch","fractionMatch","daysAsSecs","_parseNumber","hoursAsSecs","minsAsSecs","negativeSecs","_parseFraction","ex","multiplier","errorText","_createSecondsNanos","_createNegateDaysHoursMinutesSecondsNanos","negated","NANOS","nano","withSeconds","withNanos","nanoOfSecond","checkValidIntValue","plusDuration","durationOrNumber","unitOrNumber","plusAmountUnit","plusSecondsNanos","amountToAdd","DAYS","plusNanos","MICROS","MILLIS","plusMillis","plusSeconds","multipliedBy","plusDays","daysToAdd","plusHours","hoursToAdd","plusMinutes","minutesToAdd","secondsToAdd","millisToAdd","nanosToAdd","epochSec","minus","minusDuration","minusAmountUnit","secsToSubtract","nanosToSubtract","amountToSubtract","minusDays","daysToSubtract","minusHours","hoursToSubtract","minusMinutes","minutesToSubtract","minusSeconds","secondsToSubtract","minusMillis","millisToSubtract","minusNanos","multiplicand","dividedBy","secsMod","toDays","toHours","toMinutes","toMillis","toNanos","totalNanos","otherDuration","nanoString","rval","YearConstants","_TemporalUnit","estimatedDuration","_duration","FOREVER","e2","TemporalField","baseUnit","rangeUnit","rangeRefinedBy","getFrom","adjustInto","ValueRange","minSmallest","minLargest","maxSmallest","maxLargest","_minSmallest","_minLargest","_maxLargest","_maxSmallest","isFixed","minimum","largestMinimum","maximum","smallestMaximum","isValidValue","checkValidValue","field","isValidIntValue","isIntValue","_TemporalField","_baseUnit","_rangeUnit","_range","byName","fieldName","DAY_OF_WEEK","ALIGNED_DAY_OF_WEEK_IN_MONTH","ALIGNED_DAY_OF_WEEK_IN_YEAR","DAY_OF_MONTH","DAY_OF_YEAR","EPOCH_DAY","ALIGNED_WEEK_OF_MONTH","ALIGNED_WEEK_OF_YEAR","MONTH_OF_YEAR","YEAR_OF_ERA","YEAR","ERA","NANO_OF_DAY","MICRO_OF_SECOND","MICRO_OF_DAY","MILLI_OF_SECOND","MILLI_OF_DAY","SECOND_OF_MINUTE","SECOND_OF_DAY","MINUTE_OF_HOUR","MINUTE_OF_DAY","HOUR_OF_AMPM","CLOCK_HOUR_OF_AMPM","HOUR_OF_DAY","CLOCK_HOUR_OF_DAY","AMPM_OF_DAY","TemporalQueries","zoneId","ZONE_ID","chronology","CHRONO","precision","PRECISION","zone","ZONE","OFFSET","localDate","LOCAL_DATE","localTime","LOCAL_TIME","TemporalAccessor","query","_query","queryFrom","TemporalQuery","_Enum","createTemporalQuery","queryFromFunction","ExtendedTemporalQuery","_TemporalQuery","ENUMS","DayOfWeek","_TemporalAccessor","_ordinal","dayOfWeek","style","locale","MONTHS","Month","_value","months","newMonthVal","leapYear","FEBRUARY","APRIL","JUNE","SEPTEMBER","NOVEMBER","minLength","maxLength","firstDayOfYear","leap","JANUARY","MARCH","MAY","JULY","AUGUST","OCTOBER","DECEMBER","firstMonthOfQuarter","IsoChronology","INSTANCE","month","PATTERN","Period","years","_years","_months","_days","ofYears","ofMonths","ofWeeks","weeks","unitAmount","YEARS","startDate","endDate","LocalDate","_parse","yearMatch","monthMatch","weekMatch","withYears","withMonths","withDays","plusYears","yearsToAdd","plusMonths","monthsToAdd","minusYears","yearsToSubtract","minusMonths","monthsToSubtract","scalar","normalized","totalMonths","toTotalMonths","splitYears","splitMonths","ParsePosition","_errorIndex","getIndex","setIndex","getErrorIndex","setErrorIndex","EnumMap","_map","otherMap","containsKey","retainAll","keyList","keyName","keySet","ResolverStyle","STRICT","SMART","LENIENT","TemporalAdjuster","Temporal","minusAmount","plusAmount","endTemporal","withAdjuster","withFieldValue","adjuster","DefaultInterfaceTemporal","_Temporal","ChronoLocalDate","_DefaultInterfaceTemp","fieldOrUnit","ofEpochDay","toEpochDay","formatter","DateTimeFormatter","StringUtil","ZoneId","systemDefault","getAvailableZoneIds","ofOffset","rules","isFixedOffset","Instant","EPOCH","ZoneRules","Fixed","instantOrLocalDateTime","offsetOfInstant","offsetOfLocalDateTime","instant","offsetOfEpochMilli","epochMilli","localDateTime","validOffsets","standardOffset","daylightSavings","isDaylightSavings","isValidOffset","nextTransition","previousTransition","transitions","transitionRules","_ZoneRules","_offset","_proto2","SECONDS_CACHE","ID_CACHE","ZoneOffset","_ZoneId","totalSeconds","_validateTotalSeconds","_totalSeconds","_rules","_buildId","absTotalSeconds","absHours","absMinutes","MINUTES_PER_HOUR","absSeconds","MAX_SECONDS","_validate","offsetId","ofHoursMinutesSeconds","precededByColon","ch1","ch2","ofHoursMinutes","ofTotalSeconds","ofTotalMinutes","totalMinutes","totalSecs","OFFSET_SECONDS","DateTimeBuilder","fieldValues","chrono","leapSecond","excessDays","dtb","_addFieldValue","getFieldValue0","_putFieldValue0","resolverStyle","resolverFields","_mergeDate","_mergeTime","_resolveTimeInferZeroes","_resolveInstant","_checkDate","resolveDate","_addObject","val1","val2","ap","hap","nod","cod","lod","sod","los","_nos","_cos","_los","hod","moh","som","hodVal","mohVal","somVal","nosVal","_hodVal","ofNanoOfDay","_excessDays","ofSecondOfDay","_excessDays2","dateOrTime","offsetSecs","atTime","atZone","INSTANT_SECONDS","_instant","DateTimeParseContext","_constructorSelf","_constructorFormatter","_constructorParam","_caseSensitive","_strict","_parsed","Parsed","_locale","_symbols","_overrideChronology","decimalStyle","_overrideZone","isStrict","setStrict","strict","setLocale","startOptional","currentParsed","endOptional","successful","isCaseSensitive","setCaseSensitive","caseSensitive","subSequenceEquals","cs1","offset1","cs2","offset2","charEquals","charEqualsIgnoreCase","setParsedField","errorPos","successPos","currentParsedFieldValues","setParsedZone","getParsed","toParsed","setParsedLeapSecond","getEffectiveChronology","dateTimeParseContext","cloned","toBuilder","overrideZone","DateTimePrintContext","localeOrFormatter","_temporal","adjust","_optional","getValueQuery","getValue","setDateTime","IsoFields","QUARTER_DAYS","Field","_isIso","_getWeekRangeByLocalDate","wby","_getWeekBasedYear","_getWeekRangeByYear","THURSDAY","WEDNESDAY","isLeapYear","_getWeek","dow0","doy0","dayOfYear","doyThu0","firstMonDoy0","withDayOfYear","week","doy","_dow","DAY_OF_QUARTER_FIELD","_Field","QUARTER_YEARS","qoy","QUARTER_OF_YEAR","moy","curValue","partialTemporal","yearLong","qoyLong","doq","DAY_OF_QUARTER","_qoy","QUARTER_OF_YEAR_FIELD","_Field2","_proto3","WEEK_OF_WEEK_BASED_YEAR_FIELD","_Field3","_proto4","WEEKS","WEEK_BASED_YEARS","wbyLong","WEEK_BASED_YEAR","dowLong","wowby","WEEK_OF_WEEK_BASED_YEAR","dow","plusWeeks","_dow2","WEEK_BASED_YEAR_FIELD","_Field4","_proto5","newWby","resolved","_proto6","added","DecimalStyle","zeroChar","positiveSignChar","negativeSignChar","decimalPointChar","_zeroDigit","_zeroDigitCharCode","_positiveSign","_negativeSign","_decimalSeparator","positiveSign","withPositiveSign","negativeSign","withNegativeSign","zeroDigit","withZeroDigit","decimalSeparator","withDecimalSeparator","convertToDigit","convertNumberToI18N","numericText","convertedText","availableLocales","STANDARD","SignStyle","fixedWidth","NORMAL","ALWAYS","EXCEEDS_PAD","NEVER","NOT_NEGATIVE","TextStyle","isStandalone","FULL_STANDALONE","SHORT_STANDALONE","NARROW_STANDALONE","asStandalone","FULL","SHORT","NARROW","asNormal","CharLiteralPrinterParser","_literal","print","append","CompositePrinterParser","printerParsers","_printerParsers","withOptional","setLength","FractionPrinterParser","minWidth","maxWidth","decimalPoint","fraction","convertToFraction","outputScale","effectiveMin","effectiveMax","minEndPos","maxEndPos","moveLeft","convertFromFraction","_min","decimal","EXCEED_POINTS","NumberPrinterParser","signStyle","subsequentWidth","_field","_minWidth","_maxWidth","_signStyle","_subsequentWidth","withFixedWidth","withSubsequentWidth","_isFixedWidth","contextValue","_getValue","effMinWidth","effMaxWidth","pass","parseLen","_parseLen","_setValue","ReducedPrinterParser","_NumberPrinterParser","baseValue","baseDate","_baseValue","_baseDate","absValue","basePart","isFixedWidth","PATTERNS","OffsetIdPrinterParser","noOffsetText","_checkPattern","bufPos","appendChar","noOffsetLen","arrayIndex","parseText","required","converted","INSTANCE_ID","PadPrinterParserDecorator","printerParser","padWidth","_printerParser","_padWidth","_padChar","preLen","endPos","resultPos","SettingsParser","SENSITIVE","INSENSITIVE","StringLiteralPrinterParser","ZoneRulesProvider","getRules","ZoneRegion","ofId","ZoneIdPrinterParser","description","newContext","nextNextChar","_parsePrefixedOffset","availableZoneIds","zoneIdTree","ZoneIdTree","createTreeMap","maxParseLength","treeMap","parsedZoneId","parseLength","parsedSubZoneId","isLeaf","prefixPos","sortedZoneIds","ZoneIdTreeMap","_treeMap","idLength","subZoneId","subTreeMap","DateTimeFormatterBuilder","_active","_parent","_padNextWidth","_padNextChar","_valueParserIndex","_of","dtFormatterBuilder","parseCaseSensitive","_appendInternalPrinterParser","parseCaseInsensitive","parseStrict","parseLenient","appendValue","_appendValue1","_appendValue2","_appendValue4","_appendValuePrinterParser","pp","appendValueReduced","_appendValueReducedFieldWidthMaxWidthBaseDate","_appendValueReducedFieldWidthMaxWidthBaseValue","activeValueParser","basePP","_appendInternal","appendFraction","appendInstant","fractionalDigits","InstantPrinterParser","appendOffsetId","appendOffset","appendZoneId","appendPattern","_parsePattern","appendZoneText","appendText","appendLocalizedOffset","appendWeekField","FIELD_MAP","padNext","_parseField","_start","appendLiteral","optionalStart","optionalEnd","BASE_DATE","_padNext1","_padNext2","cpp","_toPrinterParser","toFormatter","inSecs","inNanos","inSec","inNano","zeroSecs","ldt","LocalDateTime","ofEpochSecond","_zeroSecs","_hi","_lo","_ldt","minDigits","maxDigits","ISO_LOCAL_DATE","instantSecs","yearParsed","secVal","nanoVal","toEpochSecond","StringBuilder","_str","_decimalStyle","_resolverStyle","_resolverFields","_chrono","_zone","parsedExcessDays","PARSED_EXCESS_DAYS","parsedLeapSecond","PARSED_LEAP_SECOND","ofPattern","withChronology","withLocale","withResolverStyle","_formatTo","appendable","parse1","parse2","_parseToBuilder","_createError","abbr","_parseUnresolved0","parseUnresolved","PARSER","MonthDay","dayOfMonth","_month","_day","zoneIdOrClock","now0","nowZoneId","nowClock","Clock","systemDefaultZone","system","clock","monthOrNumber","ofMonthNumber","ofNumberNumber","parseString","parseStringFormatter","FROM","monthValue","isValidYear","Year","isLeap","withMonth","withDayOfMonth","atYear","isAfter","isBefore","PARSER$1","YearMonth","_year","ofNumberMonth","isSupportedField","isSupportedUnit","PROLEPTIC_MONTH","DECADES","CENTURIES","MILLENNIA","ERAS","_getProlepticMonth","isValidDay","lengthOfMonth","lengthOfYear","adjusterOrField","withYear","newYear","calcMonths","monthsUntil","atDay","atEndOfMonth","PARSER$2","isoYear","parseTextFormatter","isValidMonthDay","monthDay","ofYearDay","atMonth","atMonthMonth","atMonthNumber","atMonthDay","yearsUntil","TemporalAdjusters","firstDayOfMonth","Impl","FIRST_DAY_OF_MONTH","lastDayOfMonth","LAST_DAY_OF_MONTH","firstDayOfNextMonth","FIRST_DAY_OF_NEXT_MONTH","FIRST_DAY_OF_YEAR","lastDayOfYear","LAST_DAY_OF_YEAR","firstDayOfNextYear","FIRST_DAY_OF_NEXT_YEAR","firstInMonth","DayOfWeekInMonth","lastInMonth","dayOfWeekInMonth","RelativeDayOfWeek","nextOrSame","previousOrSame","_TemporalAdjuster","_TemporalAdjuster2","_dowValue","curDow","dowDiff","_temp","_curDow","daysDiff","_TemporalAdjuster3","_this3","_relative","calDow","_daysDiff","prolepticYear","_updateResolveMap","prolepticMonth","yoeLong","era","_y","_y2","_days2","aw","ad","_y3","_weeks","_days3","_aw","_date","OffsetTime","_time","OffsetDateTime","toOffsetTime","clockOrZone","_now","ofInstant","ofTimeAndOffset","ofNumbers","minute","secsOfDay","epochSecond","ISO_OFFSET_TIME","toNanoOfDay","atDate","_toEpochNano","_withLocalTimeOffset","toLocalTime","truncatedTo","nanosUntil","MINUTES","NANOS_PER_MINUTE","HOURS","NANOS_PER_HOUR","HALF_DAYS","withHour","withMinute","withSecond","withNano","withOffsetSameInstant","withOffsetSameLocal","ChronoZonedDateTime","toLocalDate","toInstant","toSecondOfDay","toLocalDateTime","strcmp","thisEpochSec","otherEpochSec","ZonedDateTime","_ChronoZonedDateTime","_dateTime","of2","of3","of8","ofLocal","dt","preferredOffset","trans","offsetAfter","validOffset","ofInstant2","ofInstant3","ofStrict","isGap","ofLenient","zdt","_from","__from","ISO_ZONED_DATE_TIME","_resolveLocal","newDateTime","_resolveOffset","withEarlierOffsetAtOverlap","isOverlap","earlierOffset","offsetBefore","withLaterOffsetAtOverlap","laterOffset","withZoneSameLocal","withZoneSameInstant","withFixedOffsetZone","minusWeeks","ofDateTime","ofDateAndTime","ISO_OFFSET_DATE_TIME","atZoneSameInstant","atZoneSimilarLocal","toZonedDateTime","_withDateTimeOffset","_ChronoLocalDate","epochDay","adjustCycles","doyEst","yearEst","zeroDay","DAYS_PER_CYCLE","marchDoy0","marchMonth0","_resolvePreviousValid","_get0","_prolepticMonth","newMonth","weeksToAdd","mjDay","weeksToSubtract","until1","until2","daysUntil","_monthsUntil","packed1","packed2","calcDate","atTime1","atTime4","_atTimeOffsetTime","atStartOfDay","atStartOfDayWithZone","MIDNIGHT","dateTimeAfter","_compareTo0","otherDate","yearValue","dayValue","ChronoLocalDateTime","_ChronoLocalDateTime","_ofEpochMillis","localSecond","localEpochDay","ISO_LOCAL_DATE_TIME","_withDateTime","newDate","newTime","MICROS_PER_DAY","MILLIS_PER_DAY","_plusWithOverflow","totDays","NANOS_PER_DAY","MINUTES_PER_DAY","HOURS_PER_DAY","totNanos","curNoD","newNoD","timeUntil","endTime","atOffset","_hour","_minute","_second","_nanoOfSecond","_nano","secondOfDay","nanoOfDay","ISO_LOCAL_TIME","ham","unitDur","dur","mofd","newMofd","sofd","newSofd","nofd","newNofd","hourValue","minuteValue","secondValue","nanoValue","systemUTC","ofEpochMilli","ISO_INSTANT","MIN_SECONDS","nval","_nval","_plus","_nanosUntil","toEpochMilli","_secondsUntil","secsDiff","nanosDiff","otherInstant","SystemClock","fixed","fixedInstant","FixedClock","baseClock","OffsetClock","withZone","_Clock","getTime","_Clock2","_zoneId","_Clock3","_baseClock","ZoneOffsetTransition","_transition","_offsetBefore","_offsetAfter","dateTimeBefore","durationSeconds","SystemDefaultZoneRules","offsetInMinutes","getTimezoneOffset","offsetInMinutesBeforePossibleTransition","offsetInMinutesAfterPossibleTransition","_throwNotSupported","SystemDefaultZoneId","ZoneIdFactory","SYSTEM_DEFAULT_ZONE_ID_INSTANCE","isInit","MIN","MAX","NOON","_init$k","isoWeekOfWeekyear","isoWeekyear","MONDAY","TUESDAY","FRIDAY","SATURDAY","SUNDAY","EPOCH_0","SYSTEM","BASIC_ISO_DATE","ISO_OFFSET_DATE","ISO_ORDINAL_DATE","ISO_WEEK_DATE","ToNativeJsConverter","zonedDateTime","toDate","convert","NativeJsTemporal","_epochMilli","nativeJs","jsJoda","jsJodaExports","len1Copy","len2Copy","len1o","matrix","ptrPrev","ptrC","ptrChar2","ptrEnd","c3","char1","len2o","ptr","EditOp","ops","eop","spos","o1","dpos","o2","requireNoNulls","noOfMB","mb","matchingBlocks","MatchingBlock","sbeg","dbeg","finalBlock","numberOfMatchingBlocks","mbIndex","filterNotNull","noOfBlocks","oIndex","OpCode","opCodes","oc","send","dend","oc2","str1","str2","xcost","row","c2p","numCopy","haystack","needle","lensum","cutoff","choices","score","yields","ExtractedResult","toStringFunction","BoundExtractedResult","maxOrNull","extracted","sortedDescending","best","results","SimpleRatio","stringFunction","PartialRatio","TokenSort","TokenSet","WeightedRatio","Extractor","peek","copyOf","copyOfRange","DefaultStringFunction","NO_PROCESS","ratio","stringProcessor","intersection","s1Copy","s2Copy","tokens1","tokens2","sortedInter","diff1to2","diff2to1","sorted1to2","sorted2to1","sorted1","sorted2","inputCopy","take","wordsArray","joined","sorted","col","sep","PriorityQueue","pq","poll","elems","tryPartials","TRY_PARTIALS","UNBASE_SCALE","partialScale","PARTIAL_SCALE","lenRatio","unbaseScale","partialSor","partialSet","tokenSort","tokenSet","shorter","longer","dist","longEnd","longStart","longSubstr","scores","sp","arrayBuffer","frames","_setIntegerFrame","_setStringFrame","_setPictureFrame","pictureType","mimeType","useUnicodeEncoding","_setLyricsFrame","language","_setCommentFrame","_setPrivateFrame","_setUserStringFrame","_setUrlLinkFrame","lyrics","removeTag","Blob","getURL","URL","createObjectURL","revokeURL","revokeObjectURL","XMLHttpRequest","open","responseType","dispatchEvent","MouseEvent","createEvent","initMouseEvent","navigator","userAgent","HTMLAnchorElement","webkitURL","download","rel","location","msSaveOrOpenBlob","autoBom","innerText","HTMLElement","safari","FileReader","onloadend","readAsDataURL","downloadProgressReport","configuration","SpotiFlyerMain","SpotiFlyerList","SpotiFlyerRootImpl","$module$kotlin_css","$module$inline_style_prefixer","$module$kotlin_wrappers_kotlin_react_dom_jsLegacy","$module$styled_components","globalStylesCounter","invoke","css","KeyframesBuilder","invoke_0","StyledElement","endsWith_7epoxm$","removeSuffix","removeSuffix_gsj5wt$","lastIndexOf_8eortd$","CSSBuilder","Kind_INTERFACE","joinToString_fmv235$","LinkedHashMap_init","LinkedHashMap_init_q3lmfv$","isStatic","isLoaded_1mk3xi$_0","StyleSheet$inject$lambda$lambda$lambda","closure$it","ruleSets_8be2vx$","CssHolder","sheet","ruleSets","sheet_0","getClassName_0","StyledBuilder","StyledDOMBuilder","type_redftz$_0","css_en1qsi$_0","injectGlobal","globalStyleComponent","createGlobalStyle","Element","closure$reactElement","closure$element","reactElement","Styled","Styled_instance","cache_0","Styled$wrap$lambda$lambda","_css","dependsOn_tsq8y7$","inject","css_wopuc9$","destination_0","element_0","destination_1","tmp$_2","tmp$_3","destination_2","item_0","tmp$_4","destination_3","item_1","tmp$_5","tmp$_6","$receiver_1","element_1","invoke_32jdrg$","getValue_n5byny$","this$CssHolder","closure$property","allowClasses","styleName","Styled_getInstance","createElement_lnfw8r$","wrap_0","answer","rawStyled","multiRules","declarations","wrappedType","styledProps","className","package$styled","styled","injectGlobal_61zpoe$","rawStyled_za3rmp$","uppercasePattern","msPattern","toHyphenLower","hName","ba","Set","ca","ea","fa","ha","ka","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","removeAttribute","setAttributeNS","xlinkHref","ra","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","construct","Qa","_render","Ra","Sa","Ta","nodeName","Va","_valueTracker","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","controlled","$a","ab","eb","fb","selected","defaultSelected","disabled","gb","hb","ib","textContent","kb","lb","ob","MSApp","execUnsafeLocalFunction","namespaceURI","innerHTML","firstChild","pb","lastChild","nodeType","nodeValue","qb","gridArea","lineClamp","tb","setProperty","ub","menuitem","area","embed","img","keygen","meta","param","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","cc","sibling","dc","gc","hc","ic","jc","kc","lc","mc","nc","Map","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","delete","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","priority","hydrate","containerInfo","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Jd","clipboardData","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","Od","Alt","Control","Meta","Shift","Pd","Rd","repeat","which","Td","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Zd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","$d","ae","be","documentMode","ce","de","fe","ge","he","le","color","datetime","email","tel","me","ne","oe","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","has","af","bf","cf","df","capture","passive","Nb","ef","ff","parentWindow","gf","hf","je","ke","jf","kf","lf","mf","autoFocus","nf","pf","qf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","childContextTypes","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","contextType","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","elementType","Vg","implementation","Wg","Xg","Yg","Zg","$g","ih","memoizedProps","revealOrder","jh","kh","lh","mh","oh","pendingProps","qh","th","uh","_workInProgressVersionPrimary","vh","wh","Fh","Gh","Hh","baseQueue","Ih","Jh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","ii","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","getDerivedStateFromError","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","yi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","createElementNS","createTextNode","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","WeakMap","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","$i","focus","aj","display","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","insertBefore","_reactRootContainer","hj","ij","jj","kj","lj","mj","nj","oj","pj","X","Y","rj","sj","tj","uj","vj","wj","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","Me","compareDocumentPosition","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","top","scrollTop","onCommitFiberRoot","fk","gk","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","hk","unstable_observedBits","unmount","querySelectorAll","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","isDisabled","supportsFiber","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","unstable_forceFrameRate","cancelAnimationFrame","requestAnimationFrame","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","ForwardRef","Lazy","Memo","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","getShim","isRequired","ReactPropTypes","symbol","arrayOf","instanceOf","objectOf","oneOfType","shape","exact","checkPropTypes","PropTypes","capitalizeString","prefixProperty","prefixProperties","newStyle","requiredPrefixes","capitalizedProperty","styleProperty","prefixValue","metaData","processedValue","addIfNew","addNewValuesOnly","createPrefixer","_ref","prefixMap","combinedValue","_processedValue","wms","grab","grabbing","alternativeValues","alternativeProps","alignItems","justifyContent","flexWrap","_slicedToArray","_n","_s","sliceIterator","isSimplePositionValue","isComplexSpanValue","alignmentValues","displayValues","grid","propertyConverters","alignSelf","msGridRowAlign","_value$split","_value$split2","_end$split","_end$split2","maybeSpan","maybeNumber","_value$split3","_value$split4","_end$split3","_end$split4","gridTemplateColumns","msGridColumns","gridTemplateRows","msGridRows","justifySelf","msGridColumnAlign","marginBlockStart","marginBlockEnd","marginInlineStart","marginInlineEnd","paddingBlockStart","paddingBlockEnd","paddingInlineStart","paddingInlineEnd","borderBlockStart","borderBlockStartColor","borderBlockStartStyle","borderBlockStartWidth","borderBlockEnd","borderBlockEndColor","borderBlockEndStyle","borderBlockEndWidth","borderInlineStart","borderInlineStartColor","borderInlineStartStyle","borderInlineStartWidth","borderInlineEnd","borderInlineEndColor","borderInlineEndStyle","borderInlineEndWidth","maxHeight","columnWidth","minHeight","transitionProperty","WebkitTransition","WebkitTransitionProperty","MozTransition","MozTransitionProperty","prefixMapping","Webkit","Moz","WebkitBoxOrient","WebkitBoxDirection","grad","propertyConverter","alternativePropList","propertyPrefixMap","outputValue","multipleValues","singleValue","dashCaseProperty","prefixes","pLen","webkitOutput","mozOutput"],"mappings":"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EpC,IAEA,iC,MAAA,UACA,cAAwC,MAJxC,EAIwC,WAHxC,SAGwC,WAFxC,M,IACA,Q,uCAGuB,G,uEANvB,Q,2DAFJ,a,qBAEI,IAFJ,I,qBAAA,E,MAEI,cACA,qBACA,sBACA,wBACA,mB,sGEvdA,e,0FCtDA,Q,0BACA,W,+DAFJ,K,mBAAA,OACI,E,iBADJ,MACI,sB,OACA,QAFJ,uC,OAAA,O,qBAaI,EADA,sBAGA,MAAuB,KAAO,Y,0GCZ9B,8BAE8B,M,aAE1B,kB,8HC3BR,KAaQ,E,+BACO,Q,yCAIP,E,OACA,E,sBLqhBA,c,MADA,E,WAA0B,gB,WAC1B,S,8EATJ,oB,+BACA,sB,wEACA,6DACA,M,oEANJ,W,yLEpfA,mCtHgLQ,c,MAAQ,E,8CACA,I,0CsHvKZ,KtHqKA,QsHnKJ,wB,kBAKmC,oBAA+C,mC,4BAMX,mC,OpISnE,KoIT4G,kB,mCAMxE,yBAG7B,0B,sOACuB,gC,yRAE9B,M,MADiC,Y,EAAjC,gCAAiC,qE,qCACjC,gC,6gBAAA,qC,oBAAA,wC,qBACuC,c,MAAQ,O,8EAE3C,4B,4CAGA,qB,gBAEA,e,oSI/CmE,sB,eHlCvE,oDAAgD,IvHsN1B,iC,IAAV,EuHpNM,OAAJ,KAA4B,G,SvHqN9B,EAFZ,EuHpNM,gBAKV,4DvHgN0B,EuHhN1B,IvH+MiB,W,OACT,Q,yDACQ,2CuH/MyB,M,6IAKjC,wC,oBAGA,E,WvH+DI,0B,uBuH5DR,c,MACA,E,8EAgBoC,4B,qIAcpC,0BAAuB,c,OACvB,mE,sBACA,W,MAA6B,oCAAS,EAAc,SAAd,a,oLC/BtC,oB,mBAFA,oBAAgC,4JAM1B,6E,+FAJN,oB,+CA4BuE,G,8CA6BW,E,mDAa7E,oCACL,O,KAAA,Q,aAc4E,c,MAd5E,O,2GCxEA,M,gBAGJ,Y,4BAC+C,IAC3C,O,mHA6DA,iB,YAAA,c,8CErF2B,EAM3B,gE,iCAVJ,QFiCA,sC,mBAAA,gFAMa,2C,mCAED,aAAe,uC,oBAR3B,6IAMI,iC,kDAkDA,E,4CAAA,O,iCEzFJ,M,uBAAA,K,qBAKI,WALJ,O,wJC8FyC,cAAa,mBAmBlD,MAnBkD,WAmB1C,K,IAAA,Q,qBAEZ,kB,GA6BA,e,cA+DI,GAAW,KAlEP,a,0BAAQ,gC,sHA1BhB,0B,mBAAA,sD,0BAmEiD,gCAE/B,gC,mIAElB,G,iBAEA,E,WASI,iB,eAaJ,qEAKkD,EALlD,IAKkD,W,OAAkC,2BAEpF,oBAgBkE,EAhBlE,oCAmBA,M,gBAawE,Q,iBC5NpE,O,EAAA,EA7BJ,Y,0BAAA,mBA6BI,G,MAlBA,iB,MAkBA,QAlBA,gBAkBA,+C,qFAAA,EAWA,kB,iBA2C8B,aAAtB,W,iFAIR,UAYI,G,oEAEc,KAAV,G,0BAEA,G,0HlBbZ,qB,OAiBQ,uB,KACJ,EQ8LsC,a,8BPhPjB,MAAN,qEAGf,c,cAO0D,gB,kLiBclC,sBAAe,W,kFAlF3C,M,IAAA,S,iBAAA,kB,KAAA,M,IAAA,a,QAAA,sE,kKV0S0C,iEAClC,W,OAMA,OAAY,QAEZ,cAAY,oDR5RyB,U,WAAF,6B,+BAAqC,U,qBAX5E,K,IAUQ,OAAW,Y,IQoRmB,S,+BRvPlC,Y,sGAGR,oB,WQoP0C,IR9LC,oBAEnC,EAFmC,WAGlB,WAHkB,WAKvC,M,yCAsBuC,QCpI3C,sB,OAWI,IDyHuC,E,EAAA,E,KAAQ,Y,OAAA,wC,ICzH/C,C,IAYA,qC,4DAkBI,cAAK,MAA0B,EAA1B,kCA+BO,a,mCAAA,8B,EAAA,GAC+B,yB1HYzC,U0HZyC,yB1HaxC,E0HbwC,e,OAD3C,+BAGJ,O,2FAGY,2B,EAGR,Q,gHAIQ,E,gCAKU,IAClB,0CAAY,W,OACP,GACT,G,uDAEsB,E,UAAA,0BAClB,Q,KACkB,SAElB,KAAI,kB,EAEA,I,2IAOZ,2EAEI,EAFJ,e,gJAKgB,W,IAAA,EAAI,E,cAAJ,oD,KAA+B,qBAAlB,Y,OAAyB,EAAI,E1H5BhD,G,wD0H4BM,Q,+DAGR,mB,wDAGI,IAAJ,I,+CAGJ,iBACI,gBAAI,WAAI,G,mEAfhB,8D,6FAoCA,E,GACI,2BADgD,Q,KAAA,O,wBAAA,EAGxC,EAGZ,Y,uEAgB2C,oC,WACvC,qBACqB,OAKrB,aAA2B,qB,sEAEf,uB,gDACgC,W,wBAe1B,cAAgB,c,KAC1B,gBAAY,KAER,uB,2GkByMhB,oC,cAAA,K,+CAAA,E,WAAA,6B,WAAA,K,oBAAA,E,WAAA,0B,WAAA,K,wIAyHA,QAI8B,YAAoB,GAApB,G,eAuE9B,eAQA,e,mDAmDI,6B,eAUyD,M,mDCjfrD,G,qKDoTR,0CAWA,YAFI,Q,QAEJ,uCAgBI,aAAO,2B,8BACX,QAEA,WAK8B,Q,M1IiuBV,E,yDAAhB,aAAgB,a,mBAAA,G,iC0I7tBpB,M,WAIwC,KA6BpC,oBAAQ,EAAR,WAAQ,mBAAR,eAsDmC,iCAAkC,WAAlC,iBAMJ,c,MACrB,E,WAAA,Y,WAAA,MACN,oBACJ,EADI,oCAIR,M,4FCxboB,aAAK,S,iBACjB,uB,kEAG2C,S,OAsqC3C,G,SAGuB,GAC3B,GA1qCuD,Q,uCAER,G,eA0BvC,sBAAiB,QACjB,KAAI,wB,sBAgcR,kB,OACI,kB,wBA0Ze,eACnB,mBAIA,sBAA4B,EAK5B,2BAAgC,EAKhC,uB,0JAoGA,yBAAiB,K,mDAyHa,e,sGC5nC9B,WAAO,E,sB9I/EX,E6IuwCQ,SAAO,I,2B7IvwCf,M6IywCI,IAT2B,c7I/vCxB,S8FoUqC,2B9FpUrC,c6I+vCwB,I,wDAuBH,iBAE5B,mC,GADA,gC,sDA6BA,Q,wEAmD4B,eAE5B,sB,eE73CQ,Q,MAHJ,eAAW,E,6BAEX,oB,iBCpDR,oC,8DAoFwD,iB,cAOF,c,+BAmB9C,GAAO,W,6BA9Gf,mC,eC6CQ,QAAgB,MAAhB,cACU,E,oFCkBlB,E,gBA0EA,eAE0C,gB,qDClFlC,yC,oCN8IA,yBAKI,UALJ,qBAUI,EAVJ,IAU8B,W,OAE1B,Q,yEAEQ,E,IANZ,W,OASI,8B,IAEA,YAAc,kCAIE,2C,eACpB,Q,CAOJ,E,0CAII,4BAEI,KAAI,cAAoB,YACxB,0B,WAZJ,0BAAiB,MhJmBL,sB,4CgJGe,E,IhJH/B,W,IAAgBA,KAAA,mB,OAA8B,sB,IAAA,e,SAC9C,4BgJEI,+C,OACkC,OAAO,gBAGK,8E,MhJPlCA,KgJOuB,c,OhJPvC,EAAgB,c,cgJOgD,mCAAgB,6BhJPlC,EgJOkC,e,gHAAxE,W,IACA,EAAI,mB,OAAkC,EAAO,c,kCAGrD,G,mEAWsB,iDARlB,EAAe,OACf,MAAqB,a,IAMrB,0BACkB,8CAAlB,GAAkB,uC,SA+Bd,EA9BA,EAAgB,EAcpB,EAbsB,MAAd,G,QAYyD,U,OAEjE,UACA,4BAA0B,IAA1B,sC,sCAYA,kCACO,kC,IACH,QAEJ,mBAAa,IAKb,mBAAI,O,iDACA,a,+EAMM,IAAN,uCAAM,W,SAMV,E,KCxKA,MAEI,IADJ,EAAO,aACC,a,CAAU,e,wBD6MV,SAEA,a,6BC9ME,E,kCDmNV,M,WA/BI,I,eAAA,a,CAAmB,IAAO,WAM9B,OAAqB,kB,CACrB,EAAa,EAET,S,gBAYJ,SAUA,ECtNA,ODsNA,E,OCpNI,G,wED6MS,QANiB,G,OAOxB,W,EACE,E,MACI,a,6BC/MF,IAAI,G,0CDmNG,8C,oDC1NrB,0BD+MA,KC1MI,0BD4MA,M,8FAEQ,aAAK,oC,0BACP,sCACE,YACiB,gC,aAJrB,E,qFAQa,c,2KAOD,a,gFAGpB,eAQQ,WACQ,EAAM,M,IAAU,S,OACpB,IAAgD,EAA5C,EAAC,E,IAEL,S,gBAGA,EAAK,Y,MAID,E,cAJ0C,E,eAC9C,kE,iBAekB,EAAN,EAAM,IADpB,yC,GACc,4B,IAAA,oC,6C/IjRqB,E,qB+IgRzC,4B,OAGI,mB/InRqC,E+IgRzC,EAI6C,8BAJ7C,aAKY,2BAA2B,c,eAGK,iBAC5C,Q,CAAA,kB,eASA,Y,aAAc,SAAY,K,eACtB,wBAAgB,I,8DADZ,U/IlSuC,OAAN,EAAM,M+IsS3C,6CAJI,a,oG7IjUL,I6I6UK,SAAY,M,iDAapB,SAAoB,K,MAGZ,E,cA7RR,O,UACI,IAAM,8D,UAiSM,eAER,gD,4CAMQ,6BAA+B,qB,cAIvB,E,cAGI,IAEuC,qC,mBAEvC,SAAI,M,sBAQZ,uBAA+B,sB,gDAUvC,Y,OAA+B,qBAAU,IAClC,2B,GADP,C,oCAQG,E,sGAAf,IAQA,OAAW,c,GACX,EAAO,O,OAIc,0G,iEAAA,EAAhB,kB,0DCxdL,ODwdqB,eCxdH,qC,SAClB,sD,uFDudA,Q,SAEJ,yB,gEAGI,sBAAuB,GAAU,UAAU,kBAAiB,eAC5D,EAD4D,e,MAM5D,EAAM,mB,GAEN,SClgB+B,EDkgBpB,I,0BAOU,SAAjB,iD,qFAhXJ,OAAO,EAAP,aACI,QAuX0B,QACK,sB,sEAI+B,yB,OAAA,gB,aAGtE,a,wFAHA,gE,QA7XW,EA6XyB,EZzPE,+B,0EYpI3B,YACH,mBAAM,IAwYN,qBAAuB,GAIT,cAIV,6CAEO,gBAAgB,I,UA+C/B,YAAe,qBAAf,QA6EA,Y,KA3HQ,a,+EApZD,eAgaC,EADE,SAEsB,qB,CAEhB,MAAO,U,mBAEf,IAEc,EAAN,iC,gFAcgC,a,gFAmBhD,KAKA,gC,cACJ,c,IAYQ,8CACG,oBAAW,OAAU,QAArB,4B,OAO8C,W,GAUD,a,4CAEpD,E,KAIyC,iB,CACtB,KAA+B,QACT,kB,cAEjC,G,OACA,GANR,a,6CASJ,I,EAAA,S,sBAEA,I,QA3fQ,mBAAM,IAkgBN,mBAAI,IAMiC,aAAO,kC,4CAEpD,I,EAAA,W,QAEA,8CAEI,8B,wCAIA,2B,kBAE0B,oC,uBACa,EAAN,KAAM,c,IACnC,WAHkB,I/IrjBmB,OAAM,E,sC+IyjBnC,WAM2C,aAE9C,kC,OALb,E,wEAGiE,GA/gBjE,Y,mDAiB6B,KAAzB,gB,SA2fJ,GAgBI,yBAAsC,UAAtC,8BA1iBI,W,OA4iBM,QAQ+B,a,0DALL,KAAO,c,GAE3B,a,WAGyB,S,kBAAA,e,2BAAA,6B,yFAM7B,gC,0BACO,mB,IAEX,eAGI,OAAI,EAAM,OAAV,WAEQ,MAAJ,EAAI,MAA0C,iB,KAH7B,a,IAAA,E,6BAAmD,sB,GAAxE,OAAqB,OAUE,sF,OAInB,KAGpB,G,2IAI6E,0C,iBAAN,qBAEnD,oC,yBAIR,qCAAwB,MAAxB,0GACA,G/I7nBiC,aAAM,uB+I+nB7B,Y,4BATiD,a,wHAiBxD,gBAAqC,KAAO,mB,2BAEvD,aAAiB,wBAAU,Y,OACtB,wBAAO,IAEZ,gCAAuB,Y,IACvB,EACJ,K,iCA7mBI,4CAsnBqB,MAGb,SAAqD,oCAGjD,Q,OACA,K,OA7nBZ,GAAO,GA8oBC,6BAAe,GACX,MAKI,IAGpB,G,6DAQI,IAAI,qB,IACA,EAAO,c,+BAOX,OAAK,G,IAGG,EAAO,+CAEX,EAAO,iCAAP,K,GAGJ,IAAO,G,WAUI,kD,iHAAA,gD,OAAqC,c,YAArC,IAAX,IAIA,aAEA,QAgBK,QAba,iEAMV,0C,eACA,EAAK,I,EAAwC,KAAO,c,GAKxD,WAA8B,IAC9B,EAAC,iBAA4D,kBAEvB,cAAtC,aAA+C,MAGnD,wEAEA,O,IACA,EAAI,E,cACA,EAAO,yB,iEAGf,G,kEAGa,S,cAAA,MAAD,EAAC,cAAD,+BAAC,YAEb,wB,gCACI,kD,sBAKA,IAII,EAuB4B,EA3BhC,OAAa,c,GAIuB,EAAO,O,OACrB,MAAN,cAAqB,OAAO,GAA5C,qBACA,GAAO,MAAP,IAAO,E,wBAOP,Q,CAE4E,6CAE5E,EAAiB,IACjB,I,QAIA,6B,GACsB,kB,kBACtB,SACI,KAAM,2B,UACa,GACf,mB,UACJ,UAAI,OAAiB,EAAO,M,8CAI+B,wF,CAAA,oD,6KACzD,WAAY,I,EACd,W,KAAsB,e,mDAAA,0C,iKACtB,e,iECvxBG,kCAAP,I,kEDwxBwC,iC,4CAAA,O,+DCvxBpC,wC,oFACA,O,MAFJ,iI,mKD2xBJ,yC,KALQ,sC,6QAF2D,2B,QAAA,mB,mEAAjB,4BAAQ,6BAAS,S,wBASnE,K,SAWW,E,MAAP,gCAAO,K,0CAUD,MAAN,G,yCAGJ,4C,6EAuB8C,2B,oKASF,a,8CAAQ,E,iGAYmB,+B,iBAmBtB,8CAI1C,0CAAkB,gB,kOAWrB,YACI,U,YAFuC,W,aAM3C,WANiD,IAAN,OAMtB,E,GACrB,WAPiD,IAAN,OAOd,O,yGAcH,a,kEACT,c,yEAIL,G,eAAR,c,kDAAQ,gBAAW,E,SACnB,S,0GAIA,S,uBACA,a,EAAa,S,mGAIS,a,EAAQ,S,gCACH,G,4FAAA,kBAAQ,S,wBAQZ,S,KAFnB,EAAQ,e,cACuB,E7I9+BrCA,KAAA,U6I8+B+C,qBAAV,a7I7+BpC,E,c6I8+BwB,E,oB/Il8Bc,KAAM,U,c+I+7B3C,EAMA,yB,KACA,EAAsB,aAAI,EAC1B,S,KAAsE,EACtE,qB,KACO,E,iBAKP,MAgBwB,K,UAhBxB,UAAqB,wC,gBAGjB,a,MAEJ,sBAAkB,KAAlB,QAA6B,EAEzB,mCAAQ,qBAYhB,O,4DAE6B,W,iB7I/hCjC,gB,IAAA,E6IshCoB,mB,OAFJ,EAMJ,E,6BAQJ,iCAAuB,Y,oRAOF,E,IAKzB,W,OAJA,KAEA,qEACA,EADA,e,YAKA,G,sKAMA,iC,OADA,qB,2DAQkC,K,qEAA1B,mC,OAAoB,GAAM,OAC1B,+C,OAAiC,SAAa,MAClD,EAAO,a,4BAIP,a,0F/ItjCJ,sB+IqkC8B,yB/IpkC9B,W,O+IqkCA,KAAa,kB,mCAGjB,e,eAIgB,E,I/I9kChB,W,OACI,sB,I+I+kCA,YAAqC,qB,KAEzC,O,6DAOI,W,OACI,mB,gBAIwB,kBAAM,KAK9B,sBAAI,GAAc,UAAd,qD,OAER,KAAO,qBAFC,IAKqE,0CAOxE,yBAAsB,oCAC3B,EAD2B,e,uCAPY,sBAAsC,aAAtC,eAAsC,gC,aAxhC7E,KAAO,aAmjC2C,sB,uCARnC,E,sBACP,MAAJ,KAAI,aAGQ,4C,MACO,E,6BAGD,M,kCAGd,E,iBAEJ,EAAI,sBAEO,eACP,Q,mBAe4B,MAAM,GAAN,8B,4BAHpC,EAAI,EACA,EAAO,e,gBAED,mBACd,iB,iGAM4B,MAAC,iB,sBACjC,8B,GAA8C,MAAJ,E,+BAC1C,iB,CAAwC,OAAD,S,uPAyBpB,a,wNAAC,8D,2DACa,S,oJAIN,G,iBAAiB,E,WACjC,kB,WAEP,M,gJAAA,E,uBAW0B,8BAC1B,mC,MACI,qBAEJ,oBAEqB,EAFrB,WAEqB,oBAFrB,WAEoB,MAA2C,sB,uDAA3D,E,IACA,W,OACI,EAAI,OAAU,0BACF,aAAC,wC,IAAD,qB,GAAqD,S,cAAjE,iC,6PAYZ,a,0CACI,yB,oEAAA,6B,mBAAA,4B,wJAIuC,gB,UACF,a,uFACZ,KAAI,W,0BAIjC,YAH8B,EAAE,c,uUAKA,eAAQ,oC,kE7I9vCpC,c6IiwCI,M7IjwCJ,E6IiwCI,WAEA,aAFA,WAGA,eCprCwB,c,MDsrCpB,E,WAAW,qB,eAWnB,8D,2FAE+B,E,IAAQ,W,sDACL,UAAW,cAAK,SAAU,OAAkB,K,6FAM9E,mB,eAAyC,E,iHAGb,0CAC5B,iC,uCAEyC,2C/HvxCjC,Y,2L+H0xC4B,S,QACpC,M,uBAW4B,SANxB,GAAI,OAFJ,WAAY,EAAI,oCAAJ,QAAZ,YAIiB,S9Hx0CrB,M8H40CqB,cAAa,M9Hr1ClC,E8Hq1CkC,yC,yDAKJ,IAGW,sBAAO,mD,6DAAA,IAGb,YAGnC,wBADA,8E,OAGQ,KAER,O,kHAGuC,mCACvC,sB,kBACA,G,iEAGQ,E,WACI,U,0FAMhB,W,OAI4C,K,yFAEZ,+B,gBAE5B,MADA,0BAEA,iBACuB,G,uBAGvB,I,UADI,GAAkC,cACtC,W,uCAG0B,uBAE1B,oB,iBACyC,iBAAS,K,cACO,aAAI,oB,8MAQzD,uB,0FEx7CR,sB,kBAMgD,uE,oBAuCV,E,WAAA,mB,iBAUJ,oB,mDAGtB,E,WAA2C,qB,iBAChB,gCAC/B,oB,yKCvC2B,e,KAAQ,sB,oFAOL,E,4BAAQ,qB,6CAOR,0B,WAAQ,M,2DAsCtC,2C,oBAQA,E,qFAsBA,2BAAQ,uC,8DAO6C,0B,uFA1G7D,oB,kBCKA,K,QAAA,aAiByB,mBAEzB,mB,oBAIuD,E,2CAgBN,M,gCAdjD,iDAkBA,G,6CAE+B,2C,iCAC8B,kB,oDAGtB,mG,iCAIsB,oB,wDC1BZ,sEACzC,aAAa,qBAAiB,W,kBA3BtC,YAyBI,MAAI,mB,IACJ,EAA6C,Y,SAKjD,kBAqDqD,QA7BjD,EAAO,K,OA+BC,OADA,+B,MA3BZ,4EA6EI,a,6CAII,cAAgB,kDAIP,M,uCCzFY,EACrB,EAAc,2D,OAEd,G,iCASoC,+B,WAAS,SAMS,a,4CAAP,GAAuC,8B,oBAAvC,E,8OAAA,2B,GAOzC,aAAN,S,iBAAM,0BLZN,cAAW,MACX,EADW,WACQ,aADR,WACQ,M,OACf,K,qBAAY,W,IAChB,GAAqB,G,chJWf,KgJTN,kB,sDKeA,c,MAAM,E,4BL9CD,K,OMwWL,MD2tBR,GACgE,G,GC3zBhE,G,GA8HI,GDxVQ,GAAI,K,4BL/CR,I,IAA8B,GAC9B,G,iPK4EA,KAAI,sB,iBAkGoC,QAAmB,kBAqHhC,eAG3B,kB,OAFA,E,8DAgJkC,eAEtC,8BAAuB,E,qBAsGmD,Q,MAAA,KAAI,qBAAJ,EAChE,aAAN,EAAM,c,4BAWqD,Q,MAF3D,aAAa,EAuBjB,e,aAEA,G,wEA6MY,gB,eA6CwE,0BAA1C,E,eAFf,4B,eAWnB,KAAI,uB,iBAwEK,YAAL,E,cAEK,eAAL,E,8DAwFhB,cAG+B,Y,sCA0C3B,kBAAkC,0BAAE,E,+CAShC,KAAI,KAAO,E,gEAsBgE,aAApB,mB,cEjlCxB,c,gCAwB/B,cAAQ,0BAAM,E,+BAgByB,eAAQ,G,yDAkB/C,kB,cAkDY,c,kBA8BD,aAAO,MACV,kBACA,eAAc,G,KAEd,2F,MACA,IAAY,Y,yBAGG,4DAA+B,eAAtC,eACI,wB,0HCRpB,GAAI,KAAe,QACD,gBAAI,EAAJ,wBAAqB,IAAnC,iB9G01BmD,G,C8Gz1BnD,wFACA,sB,uBAGU,EAAV,gBACA,IAAS,SAAT,kBACA,KAAO,I,8BAMX,c,8BC1KR,kE,qEHiFI,I,yBAeiB,WAAoB,2B,GAfrC,uB,4EAwTqB,qBAAC,oB,oDAkBd,G,sOAVR,kB,gHAvFJ,8B,sCAAA,O,KAAA,G,cA8HI,eAWA,c,4DAyII,KAKA,gB,eA+CJ,aA+CsC,cAAqB,GAAuB,KD/iBvE,aAAY,oB,gBACvB,Q,CAGI,UAOsE,OAN/D,gCACH,U,MACA,E,GAIkE,yC,OAAiB,8B,GAAzE,gBrJLiC,yCqJU7B,c,iCAXlB,sCAaJ,W,aAOI,W,OAFA,8B,GAEA,eAGI,sB,8CAEG,E,eAGiF,U,cAClF,IAAO,OAAP,kCACF,iBAAI,GACA,KAKI,O,KAIA,uEACS,EADT,e,iBAMqC,OrJ7CR,IAAM,sBqJ6CrB,mBAItB,oBAEI,KAEI,O,KAGJ,yC,mBACS,a,4CA9B+B,IlB4JX,e,gBkBrHrC,YAAU,M,CACV,E,EACA,QpI7JJ,uBoIgKQ,gBrIjHO,YqIsIJ,a,OAAE,G,2DATT,EAAI,ULxKC,IAAU,M,OK0KP,EAAI,aAA4B,GLxKjC,kB,UK4KQ,oC,2CLpKQ,aAAO,gB,mBAAP,eACvB,EAAkB,kBAElB,M,oBKiKI,E,WAII,mB,iBAER,sB,4EAYuD,K,mBADhC,sBAAN,qCAAM,EAAN,e,OL/LjB,KK+L+C,gBL/LxB,iEACvB,EADuB,IAEvB,W,6DK6LA,sC,GACA,yBAAyB,KAAzB,G,OAEI,mB,2CAER,M,iCAQS,I,GAJL,IAAI,IAAY,G,WAIX,wB,eAOW,yCACZ,MAAI,SAAU,EAAd,IACU,oCAAsB,K,8DAdpC,G,0DAyBJ,Q,8BA0BuB,sDAHnB,MADA,IAAiB,iBACjB,E,OAGmB,iBA8B2C,2B,qBL3PzC,I,EAAA,K,EAAA,EK8NZ,Y,WAOL,e,uFAMO,2BK/RL,WACF,YADE,G,KAEF,kB,YAA2B,4CL6RC,GK3RxB,GAAW,SACX,EAAW,OAAK,EAAhB,IACW,SLyRa,0CAEhC,+B,gEAcM,kBL9PN,Y,+CACmB,iEAEE,C,YACV,a,4DhJSX,EACM,oB,MgJTN,gB,mFKyPA,kCAO0D,mCAUtD,iC,eAD2D,wB,OAE3D,aAF2D,U,2BASE,EAAO,gB,QAGpE,I,EAAA,e,8CAOI,e,8DAFR,G,gDAMJ,Y,IACI,EAEI,EADA,EAAI,IAAO,M,uBAKH,qB,CACW,K,QAGmB,kBAAM,GACpC,GAAkB,QAClB,G,MrJvPmC,E,EqJ4P3C,EAAkB,aAAoB,KAApB,wB,OAEd,oB,GACgB,+BAChB,GAEU,oCAA0D,Y,MAGhB,E,EAApD,sBAAkC,OAAN,GAAM,IAAkB,OAIhE,M,uBrJzQmD,sB,KqJ6QnD,+B,qEAII,mBAGuB,mB,EAFnB,G,KAGI,wB,GAAqB,IAAL,G,MAChB,qE,MACA,mD,6BACQ,SAAa,Y,OAJzB,qB,IAMA,mBAAW,IACX,GAHyB,CAAb,OAKe,IAAU,a,6CAMzC,IACM,EAAN,OLhRQ,OADR,EAAO,gC,SKkRP,WAGyC,kB,gCASzC,OAL0B,cAC1B,iB,IAGA,qC,iFAFA,e,6IAKI,aAAO,6BAAP,W,wCAOA,GAAK,M,CAAU,E,KAEf,Q,oBAII,E,KACA,Q,mBAII,E,EAAA,Q,uBAGsB,gB,mCAGJ,4C,OAE9B,wB,qFAE+E,IAC5C,G,uDASD,O,GAFlC,iC,sCAEA,I,+IAkCe,8B,iDAAA,E,WAA+B,CAAO,KAAjD,sB,qCACA,E,IACA,W,OAEI,IAAK,GAAL,SAIC,kC,+CAWT,qB,CACA,UAAc,GAAO,EAAuB,KAA5C,KACI,8BAAiB,WAEhB,YADL,0B,GAEO,GAAO,SAAO,M,gFAQiB,G,2GAIM,WAAQ,O,qNAEb,aLzhBR,GKyhBmC,uC,8GAWP,W,IAA3D,EAAI,aAAW,M,GAAqC,IAAO,aAE3D,MAAO,a,MACX,eAGsG,4BAE/E,gBADD,eACd,aACqC,gB,EAArC,mB,eAFJ,yCAGA,EAAO,O,QACC,yB,KAMA,8B,qBACA,M,EAGA,a,EACA,EAAK,OACL,E,uBAGZ,a,iBApB8D,ElB3PrB,GkBmRc,4EAAE,W,YL/hB9B,gE,OACvB,6B,mEK4hBsE,0C,iEAEhE,oDLrhBS,aKqhBqB,Q,WLrhBb,eKqhB4B,2BLphBjC,qC,YAClB,yBACA,8C,iEKghBsE,E,4IAI1E,2C,4DACgB,E,WnJzfT,a,oBmJggBiD,sBAAO,yCAEpD,EAFoD,e,uBAOvD,a,yCACI,SAAO,EAAP,gBAA2B,GAG5B,6CAGX,mD,uCAI8C,gB,+BAsgB1C,c,MAAJ,E,qCAA6D,MAA7D,cC3tBQ,mBDqNwB,sBCrNxB,WDuNG,MAMI,aAAW,aAAuB,W,IACjD,Q,WAII,sC,cASwB,I,SACxB,wBAAe,MAKF,O,uBAAA,aAAb,yB,wDAaa,iE,OAAA,Q,GrJ/gBkC,S,qBqJ+gB/C,sBAEA,sB,mDACI,E,IACA,W,OACI,E,iCAIA,sBAAS,uDAIL,W,OAAA,MAAR,yBAAQ,sBAEZ,mCAA6B,UAA7B,gC,OK1oBM,sBACF,sB,4CACA,E,6EAGI,aAAgB,QAAL,Y,uHL8qBnB,G,+EAxB8C,UAAY,I,+BAKhC,oC,oDAEtB,iB,UACA,I,sCAF2D,E,6BAQ5C,IAAU,EACJ,EADI,eAAzB,YAAe,MACH,YAAS,EAAT,2BAAS,G,GAArB,IAAY,GACgB,YAA5B,EAAI,eAAU,yH,yFAeiD,yB,CAAA,IAA3D,EAA2D,e,2EAH3D,G,SAQA,qB,KAGyD,wB,CAAA,KAAzD,Q,6DAHR,GAAQ,I,UAQA,0C,uDAGkD,4BACtD,G,2JAJJ,a,sCAAQ,E,4DAQR,OAAO,K,cACoB,E,yBAEf,yC,IAEJ,EAEI,E,EAJkD,K,8BAIf,S,MACnC,SAAe,uBAED,K,+CAQtB,4B,mCAGY,KAAM,e,kDAGmB,a,0CACzB,gC,gDAGA,yB,4HAIU,sB,iHAOoB,wB,MAkWlD,ECvtBQ,gBAAc,Y,cDutBtB,S,KApVI,EAdY,U,mCAeZ,EAAI,qC,eACJ,oC,MAKJ,0D,IACyC,IAA/B,E,GACkC,OAApC,EnJ9sBF,YmJ6sBF,KnJ5sBG,OmJ4sBH,K,uLAqBqC,iC,OAAzC,cAA0C,+B,wFAKJ,e,0BAGlB,+B,gBAAC,I,iBACjB,EAAmB,OAAnB,wB,0BAIQ,GAEJ,IACI,GAAwB,GAE5B,MAGJ,2C,IACI,GACI,SAAW,IAAP,I,iDAGR,E,oCAGoF,M,+DAG5E,E,EACA,WAAQ,KAA4B,M,kFAMxC,E,WACQ,MpI/zBpB,yBD+CQ,UqIixBwB,YpIh0BhC,gC,WoIk0BoB,G,SAKgE,2C,oBAAkB,E,EAAtF,EAAK,SAAO,EAAM,S,wIAnB9B,iClB3hBqC,EkB2hBrC,e,oFA8BQ,IACA,IAAO,oBAGX,0BAAM,4BAAsB,Q,mHAIG,W,OAGnC,gBADA,yC,wCAGI,O,GAD8B,oB,sCAAA,W,0CAMb,iBAAL,QAAqF,QAAjG,kC,mFAO2C,SAAK,M,iBAI5C,MAAwC,mB,KAA6B,E,IACrE,cAAiC,OAAK,GCzf5B,SD0tB2D,sBC1tB3D,crIvXtB,M,OoIi3ByB,GAAL,MAAK,a,yBAAA,kBpIx2BzB,O,oCoI82BwD,eAIpD,aAAkB,GAAlB,gB,yCACA,Q,4CAIgC,oD,IAGhC,qBAFA,2B,OACA,G,gCAGgB,aAAK,6BAAgB,W,IAArB,uD,OACE,MAAP,G,gBADP,yBAIA,GAEJ,G,yCAOI,aAAkB,kB,aAEtB,G,sFAEA,U,gCAMI,KAAI,oBACA,iC,oFAMK,cAAQ,sDAEa,M,yDAGL,mCAK7B,wCAJA,iBACA,kCACA,sB,iEAII,SAAO,EAAP,iBAAO,mB,gBAID,G,4DAQD,Y,QAAoB,E,MACzB,EAAM,c,IACyB,UAAO,oB,uDAClC,2B,cACyB,EAAI,OAAO,EAAP,I,IACnB,mB,iHAaN,OALR,EAAI,iCACA,EAAQ,OAAR,EAAQ,IAAR,oB,kDAGR,K,mTAkD2B,G,yQAmBD,2BAG9B,I,iJAFA,yC,wFAIqB,0DAAU,Q,KAAwB,YAAnD,EAAY,EAAZ,iBAGA,oCAIJ,iC,MAAoC,kBAAK,GAAe,M,0DACA,E,WAAA,iB,WpIrhCxD,M,kJoIyhC+C,uC,WAI/C,M,2JASyB,M,oFAOF,uBAEvB,iC,iFAC6B,gCAAQ,2CAAc,kB,iCACnB,iC,uMAEC,kB,uEACT,MAExB,sC,cAAmC,M,OACnC,gE,0KAC8C,G,0GAEZ,E,+JAGtC,mBAAwC,G,2JAGiC,a,2NAGzE,0B,sDCvtBQ,oBDutBR,ECvtBQ,sCDytBA,SCvtBI,iCDutBqD,kBCvtBrD,WDutBR,CC3tBQ,QCrYR,gC,avJUI,cuJJyB,MvJKzB,EuJLyB,WAG7B,OAH6B,WAU7B,MAeA,cAAoB,MAKpB,EALoB,4CAPH,mCAAc,aAAd,gB,gGAIL,4BAAM,uBACd,M,+BAIA,a,8BAAQ,iCAAM,IACd,qC,gBAAa,Y,6FAIwB,G,4GAGzC,+B,QACqB,aAAjB,+C,IAKW,2C,iJAOX,M,mDAMJ,eACiB,EADjB,IAEoB,W,IAAA,E,cAAZ,EAAY,iB,gBAAa,sBAAI,qDADjC,W,uDAQI,gEAAqB,EAArB,IACA,W,OACI,QACJ,sBAAgB,yCAChB,EADgB,IAEhB,W,OACA,QAIJ,aAAO,sB,iDAOH,6CACA,aAAgB,yB,qBACZ,MAAJ,GAAY,kBAAU,GAGlB,aAAO,4B,cAGX,aAAQ,sCAER,aAAY,oB,MAGhB,mB,4BAEJ,G,kDAGI,SAGY,gEACE,EADF,IAER,W,OAAsB,MAEtB,aAAW,8B,mBACX,M,oBAIuB,E,WAAA,U,WAA+B,SA+B1C,sBAAY,GAAO,kCACf,EADe,e,qBAAA,gB,kBAc/B,sB,6DAGJ,c,IAIA,YACJ,K,aAIgB,sB,qCADZ,E,IACY,W,OAAZ,KAAY,S,IACR,Y,kBAER,O,sEAGwC,W,OAAA,KAEb,iEAEvB,EAFuB,IACvB,W,OAEA,aAAsB,iB,wFAIlB,G,uDACA,sE,oFAEsC,sB,4HACE,E,EAAR,K,4GvJ5EK,G,4FuJ8EN,E,oDAG/B,cAQJ,OAPI,cAAI,iD,EACA,kBAEI,kBAAU,eAAiB,IAGnC,wBACJ,IA2BgC,aAQQ,4B,kBA7BpC,E,UACA,OAAyB,iB,OAEzB,E,qBAII,iB,OACA,G,yBAEI,G,MAE8B,Y,OAC1B,+D,EACI,cAAS,EAAT,EACA,qCAIE,4B,uDAEU,E,MAAR,mB,WAA+C,aAE3D,KAFA,SAGA,eACA,OAEA,M,kEAKR,QAAe,aACR,IAAP,I,iBAqBC,M,KAZO,QACA,W,CAGI,UAAmB,YACnB,MAAe,6BAR3B,GASY,mB,cATZ,EAeC,OAGD,GAAI,UACA,mB,iBAEA,0BACA,O,4CA2BH,cArBD,EAAc,GAAd,KAEI,KAAa,oBAAb,EAEI,O,IACA,WAAW,OAGK,kB,OACR,cAAS,iD,+BAGT,cAAmB,QACnB,cAAe,MACf,E,KAOf,OApBD,OAiBI,iCAOA,IAAU,GAEV,mB,SAEG,mC,CAGX,qGAIQ,gBAAJ,EACW,K,gCACP,SAkBO,aARX,GAGA,4BACA,wBACA,qBAOa,8BAAiB,W,IAE9B,EACA,EAAI,E,IAAmB,OAAO,cAAP,WAEvB,EAAO,W,+PC5VgB,W,OAO/B,iB,IAFA,YxJSA,gBwJHY,KxJKR,sBAAM,GAAiC,UAAjC,qCwJFV,ExJEU,IwJI2C,W,OAAkB,KAJvE,sBtJ8CO,4CsJxCP,EtJwCO,IsJvCP,W,iJAE0D,E,IAAQ,W,oIACN,EAAK,oC,sLACA,6C,4CACd,E,EAAQ,K,gFAEtB,M,yCACP,WAAwB,kB,gBACb,O,uCAAQ,M,sBAI7C,MAGI,S,kEADA,SACqB,IAErB,eAA8B,a,yBAE9B,GAAI,E,QAEc,wBAAkC,K,qEACxC,MAAJ,GACS,mBAAL,c,GAMA,0B,iBACA,E,SAKZ,EAAO,uB,4BAGX,mBACA,aAAO,QAAU,aAAV,I,WAKP,I,0CAGI,mB,cAAA,oBAAqB,QAErB,KAA8B,wB,eAE9B,GAEsB,wC,kBACd,E,EAEI,O,EAEI,uB,IACA,gB,IAEJ,G,GAA4B,c,OAGnB,aACL,aAAO,EAAP,uB,cAHJ,G,sBAUZ,EAAY,SAAZ,EAAY,eACH,mBAAL,cAGJ,oBACA,KAAO,G,4CAGX,GAEJ,G,mKAUQ,aAAa,2B,IACb,EAGG,EAAM,a,+CACiB,wB,gDAC1B,qC,oDACA,wB,OAA8B,QAA9B,E,uBAHJ,E,4CASI,sBAAc,gDACd,EADc,IAEd,W,2EAKQ,cAAO,MACf,EADe,uDAuBnB,sBAAmB,kDAGO,EAHP,IAEf,W,OACI,KAEJ,sBAAS,GAAO,UAAP,+BACT,EADS,IAEJ,W,OAEmB,IAAxB,eAEU,uEACK,EADL,e,YAEF,sBAAY,aAAO,eAAc,eAC7B,EAD6B,e,OAI7B,cAAc,sBAAO,qBAAP,QAIlB,yBAAO,mBAAP,qBAGR,W,OACS,qBAGT,sBAAQ,aAAY,UAAO,eAG3B,EAH2B,IAI3B,W,OACJ,KAAO,iB,wDAGX,eAEI,EAFJ,IAGI,W,OACA,a,2CAEI,aAAgB,oBAAK,Y,IACrB,EAAI,S,KAIC,MAAL,IAEA,cACA,UAAI,EAAQ,sB,OACF,E,GAEmB,OAArB,OAAqB,uBAEjB,S,GAEI,MAEA,KAEuB,OAA3B,wC,CAII,GADK,IAAL,EACA,SAAO,EAAP,EAAe,I,OACf,Y,EAEJ,OAGI,SADU,EAAV,sC,CAEA,Y,WAOP,OADT,KAAI,iBAAgB,KACX,SACL,G,6CAGA,EAAY,K,aAER,aAAO,4B,oBACA,S,KAOf,QACJ,EAAO,KAAP,O,4FAUA,S,EAGI,O,CtJtIR,iCsJ0I2G,sCAH/F,GAAY,MAAZ,E,CACI,cAEA,aAEJ,QACA,GAAQ,IAAO,G,QAEnB,UAGE,uBAAmB,IACU,OAAnC,cAAmC,E,kKflQ3C,iEAMI,iC,mBAAS,iC,cANb,4C,IAQY,E,qBARZ,mE,IkBIiF,UAAU,K,UAGb,mBAAE,M,IAAmB,c,qBAAG,0B,OAAA,iC,cAIlG,mB,kXAHc,Y,EAAV,W,4FAAU,gB,gBAAA,a,6CAAV,O,iFAAU,2BACN,2B,6BAAA,G,qCADJ,uC,0NAD8F,yF,wDALlG,E,iBA/BJ,GA8BI,WACA,c,GAEA,MAGA,OAAkC,OAArB,OAAN,iBAA6C,EAAsB,GAK9E,E,6BAEA,gCAqDI,kB,IAAA,EAA4B,G,GAC5B,oB,EACA,O,CAAA,+BACA,yCAAmC,MAAnC,E,CAGA,MAAiB,OACjB,KAAc,EACd,EAAoB,EAChB,gBAEA,QAAgC,UACpC,QACO,U,WAKP,OAFoC,cAIpC,2BAAwB,IAFxB,E,gCAG+B,E,EAAQ,Q,oFAG3B,I,oBAIR,kB,OACA,Y,yKAQA,KACA,IAAS,wBACT,KAGJ,wD,OACI,GAAS,yC,cAGb,oD,QACI,EACA,EAAmB,KAAnB,uBAA4B,EAAyB,S,cAKrD,EAAa,MAAS,I,CACtB,MACA,EAAO,KAAP,sB,kEAnC8D,2B,GAAA,mD,0FAAA,G,6FAAA,oB,uGAAA,M,qFLkLhD,a,iCAdlB,6E,OAoB4B,QAE5B,gD,OAIkB,4B,kEAAA,G,8QAetB,iCAAqB,a,6GAYY,K,6BAAQ,G,iHAgBjC,aAAgE,GAAxD,sBAAI,8CtJ5NmC,EsJ4NnC,e,OAAJ,gBAAwD,mB,6GASxB,sB,qCAA5B,E,sGAkBkB,gB,0BAC1B,qC,OAAJ,gBAAsB,Y,ItJxPyB,8BsJwPD,W,yHAO1C,cADE,MAAN,EAAM,2CAEM,IAAQ,GAAR,KAIZ,yC,IAE4C,qC,uDMnYX,GAAAA,KAAA,eAAAA,O,oBNqYC,E,4GAGtC,+C,sDAII,gBAEI,uC,iCAEJ,mB,WAAA,M,qJAwCK,G,qBAAA,K,yBAAA,K,sCAAD,EAAC,+DAAD,K,yKATR,+C,QAAA,Q,uCAAA,+BAWA,K,mIAgIA,iEA4BI,yBACsC,UADtC,0BAGA,EAHA,IASA,W,sHArCJ,qD,OAAA,gD,uFA2CJ,uFAcI,sB,yCACA,E,IAAA,W,IACA,2B,MAEA,EAEY,qC,OAFZ,KAAM,SAAN,StJnmBI,aAAM,oB,kCsJmmBV,KAWQ,oBAXR,SAaiB,iBAAkB,K,gCAavC,8C,uCACiE,OAAQ,MAWlC,yC,8VOpqBA,yI,IAInC,EAAuC,UAAvC,yCAFA,8C,+GAMI,Gd4qBA,Kc3qBJ,c,kBAII,O,mCAT4C,e,8EAAA,0B,oCAAA,iB,+GAAA,4FAcxC,c,MAAa,E,WACjB,gB,oDAIA,eAEA,sBAAgB,WACpB,Q,2CAtBgD,gC,+JAAA,a,WAAA,K,uIAAA,c,kFAAA,kB,uDAAA,0C,2FAAA,iB,wIAAA,iB,6BAAA,kE,oBAAA,E,gHC6DxC,Y,QArCZ,UAqBY,QAAR,EAAQ,W,QAGZ,QAaY,G,KAA4B,E,6CAGxC,yH,KAAA,W,uKAhDkB,M,sDAyDM,gB,6DAAhB,kB,mCA0ER,MAqBA,IAXI,EAVJ,QAUI,SAAwB,yBAAxB,wDAqBc,yB,kHAk9Da,wE,uEAlnEvB,E,gCAEQ,S,yEAqDQ,K,iCAAhB,gC,8WADJ,a,iPApDI,+BAAQ,G,+cA4ChB,E,sBAAA,gB,wEAAA,E,mDAAA,sEAhDI,EAgDJ,e,OASwB,gB,qBAAhB,sB,8CAAgB,E,sBAAhB,gB,mBAA6B,4E,OArD7B,gBAAQ,U,gGA0DhB,+C,OAAA,sC,IAAA,sB,kBAAA,qD,mLAAA,yC,yMAoGQ,c,iDAAU,SAlCV,0F,MAAiB,EAAjB,O,YACJ,gB,+BA1BJ,M,IAaI,e,gDAeJ,0CAUI,EAVJ,U,yCAaM,0F,MACE,EAAQ,O,OACF,M,iGAEN,E,6GAqCR,Y,eAAA,sB,0LAAA,M,uDAgBA,uB,IAAA,e,IAAA,yE,mJAeY,mD,0VAUZ,e,QAAA,wB,0CAyBA,S,QAAA,a,mFAgBA,oB,0GA+QA,MAvZA,mBAwIA,gDA6RI,EAAe,gBAAf,wB,gBAtYc,Q,CAAA,qB,yBAAV,U,eAAU,eAwYV,I,oBA5ZJ,qB,0FAMI,oBAAe,0B,uOAcf,a,gDAAU,kB,+BAAA,S,OAAA,Q,+CAAA,O,qGA+JS,kB,4BAK3B,oF,oBAqBA,iG,OAAA,gB,IAAA,O,IAAA,M,2MAzLkB,8C,MAAA,mE,gGADd,c,EAkOA,M,2PACJ,qBArBA,I,2BAuBA,wDA4CW,2F,oQArBX,W,IAAA,S,qCAAA,E,QAAA,O,OAeI,qB,0BA/RA,O,gGAOI,c,2RAiSR,mB,aAyBA,O,OAAA,uD,yFAhUI,S,kDAMI,W,8FA2WJ,S,4LArBJ,S,uBAwBA,O,GAAA,6H,qSA+CA,0F,OAAA,S,OAAA,Q,eAwBA,wB,yNA+CQ,c,4PAxeF,0C,OAEE,EAAM,O,YAJV,I,yEAMI,S,qOAuhBQ,2F,MACA,EAAI,Y,EACA,M,oFADJ,S,8IAGR,S,uBAAU,K,MAAA,S,eAAV,SAAU,M,+BAAA,8CACN,I,kHA9gBJ,c,kIAAU,M,EAmBV,K,IA0mBiB,M,MACjB,EAAI,W,cAAuC,4E,SAAA,S,EAA3C,6B,0ZAmB6B,SAAjB,U,gBAAA,6D,2CAdpB,IAa2C,EAb3C,WAa2C,EAA4B,SAAY,IAAZ,gBACnE,iBAAgB,iB,QAiBT,sD,SAAa,qB,oFAlqBN,0F,sBAAA,M,EAAA,qB,iGAAV,gD,gEAAU,gB,kHAAA,0F,MAAV,c,gIAAA,cAAU,kCAAV,kB,wCAAA,M,qEAAU,e,EAmwBV,E,6LAnwBU,M,EAAV,U,+FAAU,2B,mFAAV,S,qEAuxB+B,O,qQAoB/B,K,gBAAA,a,gH9Jx8BJ,c8Jy8BY,wC,gCAEE,E,aAAA,O,4DAkDlB,wF,IAAA,iI,mPAh2BkB,E,aAAA,O,mGAAV,kB,4BAq3BR,0F,IAAA,iI,OAAA,gB,IAAA,a,2NAr3BkB,8C,qBAAA,uE,gJAy4BlB,+E,OAAA,kB,IAAA,a,IAAA,M,sMAz4BQ,O,qDAAU,4F,gHAi6BlB,+D,OAAA,kB,IAAA,O,IAAA,yE,8IAj6BkB,8C,uGADd,gBAu7BA,EAAO,M,kFAGX,W,IAAA,mH,8HA98B4B,E,oJAOpB,qB,6DAaJ,O,IA+8BJ,MAEA,I,eAAA,0F,CAAA,mD,kHAmIA,sF,IAiBI,EAAU,qBAAV,2BAznCA,6C,0BAqBc,qB,uCAAV,gB,MAAU,I,EAAV,K,cA4oCA,IAxCuB,WpKl8B3B,cAAY,YoK2+BwB,sBpK1+B7B,EAAI,gBAAJ,wB,SAEH,S,EACA,E,KAEA,E,6BoKq+BA,EpK1+BJ,IoK2+BS,c,cAhqCP,IAEE,E,4CAEA,I,GA8pCJ,E,sBA1CJ,0IA6CA,sF,IAAA,kDAlrCA,6DAqoCA,QAkBI,IAAU,4BAAV,uB,OA7oCA,kB,YAqBc,K,QAAV,E,IAAU,eAAV,c,kCAAU,0C,KpKmKP,aADP,IAAY,G,EAER,EoKmgCuC,a,GpKlgCvC,Q,KACA,M,mBAEA,SoK+/BA,I,kCAvrCA,S,UAJJ,G,UAmBA,O,OAynCA,8C,4FAEJ,wFAuBA,iD,gBAvBA,+D,OAzpCA,kB,IAAA,O,QAUI,E,mBAqBc,gDAAV,0C,KAAU,EAAV,IAAU,O,OA4oCV,IAAU,UAAV,G,GpKz+BG,Q,KADP,MACW,c,KACP,SAEA,IAEA,E,gDoK1LF,GAEE,E,sBAEA,uBAAe,EAAf,qB,OAiqCR,wF,mDAAA,S,eAAA,qB,gCAwBA,2B,eAxBA,MAlrCA,mBAkrCA,gDAxqCI,0C,KAqBI,EAAU,mC,GAAA,MAAV,E,KAAA,MAAU,c,KAsqCV,SpKpgCJ,IAEI,EACA,YoKkgCgC,K,epK//BhC,e,IoK+/BA,G,UAxrCQ,O,0TA2vChB,O,QAAA,E,MAAA,E,WAAA,gD,2CAAA,IAvuCA,EAuuCA,aAzwCA,+BAgDI,WAhDJ,iCAUI,EAAwB,U,mBAqBpB,eAAU,IAAV,GAAU,E,QA2vCQ,O,mJAuBD,W,8HAAA,kB,iCAjBzB,6B,kCAAA,kB,+BA9vCA,E,EA8vCA,S,+BAhyCA,WAgyCA,iCAhyCA,sD,8BA+BkB,S,QAAA,O,OAmBH,8C,8PAqwCf,0F,SAAA,gD,eAAA,eAvzCA,OAw0CI,E,sBAzyCI,qB,uUAgzCR,0C,OAAA,W,2GAAA,IA/0CA,GA+0CA,E,sBAhzCkB,8CAAV,O,gVAy1CR,W,YAAA,gB,eAAA,e,OAx3CA,E,QAU4B,O,OAqBV,qB,yBAAA,OADd,2F,MAi4CA,EAAO,Y,6TAlBX,S,uBA74CA,O,OA64CA,8CAn4CI,O,0GAoBA,M,EAs5CO,qB,2RACX,E,6IAp6CQ,c,8FAaJ,K,iPAy5CJ,K,mRAz6CQ,a,gDAHJ,kB,4BAMI,E,kCAaJ,e,EAohDA,E,yLAnhDI,M,mNAjBA,EADF,U,OAEE,E,+CAykDJ,EAAO,EAAP,G,uKAzjDc,M,EA+lDN,qB,+MAjnDN,a,eAFF,e,iBAmBA,O,mQAqnDI,M,2KApoDA,SAAM,EAAN,I,+BAeJ,8CAunDO,S,wHAtnDO,qB,+DA6oDV,M,+IA/pDF,SAEE,IAAM,8B,+CA+pDV,EAAO,K,8DAuBS,oF,MACR,M,EACI,qD,6BAEA,K,UALR,E,yIAQA,K,0IA/rDF,K,uKA8uDE,U,uGACY,wBAAS,yBACjB,kBAAQ,uB,OACR,K,UACI,S,EACA,KALR,gD,iEAQA,iB,kFApuDU,mF,MAAV,c,8HAiyDA,cAAI,YAjyDmB,sB,+CAiyDJ,U,4HAqBL,qF,oEAAA,U,wJAEE,kB,6BAAT,EAAS,mC,UAAA,uB,4EAAhB,gB,uKAyBc,S,uIAAd,K,YAEqB,a,GACrB,iD,8FAAgB,E,EAAT,SAAS,kE,wBAAA,gC,wBAAhB,e,gJAMR,8B,8FA11DQ,gD,iDAAU,S,IAAA,Y,eAAA,e,0UAAA,gDAAV,kB,wCAAU,W,0BAAA,I,EAAA,E,aAAV,O,oWAAU,a,0GAAA,oB,+DAu6DN,O,2DAGO,U,0JA0CP,qB,qGzBz/DG,mB0B2FO,wB,iBAuBN,gB,oGClNZ,qB,mCAGI,e,oCAKyH,E,sBAFjH,Y,aAEkC,yB,EAAA,EAE1B,Y,sCN/BR,K,sBM+BW,e,+CAGnB,mB,+PC7CR,sC,eA0FI,gB,eCXI,6BAEA,mB,oMCsFyC,e,0BAmBvB,wC,4LCtL1B,S,UAAA,qB,MAAA,E,mbC2XwE,e,6PAYH,uC,+RxCmKzD,UAAY,EACZ,KAAI,QADJ,a,+EAmBJ,EAAI,UAAQ,YAAR,E,gCACoB,I,gBAGpB,gBADA,E,uIyC9ZJ,GpK9GG,KDZ4C,MqK8H/C,cAAO,E,gJCgDP,yBAFyB,E,2BAMsC,uB,+BAsF3D,Q,+GACmB,K,uDAWD,6B,iBAAA,E,gGCtRtB,sB,qBAtBsB,OAAe,QAC7B,sB,EAA2B,4BAAnB,EAA0B,gB,8MCoD1C,KAAI,S,0DAY0B,KAAN,+B,EAAA,cAAM,E,sLAmDqB,Q,gCAAA,Q,2BAFnD,aAAyC,S,sFzBzIT,G,0CyBgK1B,c,iDANS,e,wBAAA,gC,gBAOnB,uB,oBAfA,EzBlJoC,I,mFyBkJpC,e,mDC/BY,E,yDAAO,G,yCCzFL,qC,iGAAA,M,kEAAE,e,uHAAA,2B,6HAAZ,uC,iIAAA,mB,+EAyB6B,E,yCAM7B,EAAO,a,8ICjD4D,wC,IAAA,uB,OAAA,sB,4GAiCrD,Q,0Hd+Hd,E,4MAlBF,c,mBAEE,S,8FAEA,gB,0BAaJ,e,MAi9DI,iB,iUADkE,gB,OAAA,2D,iIAd1E,W,OAaqE,8BACjE,yBAAoB,UAAR,8BC/mEyB,W,OAgBrC,KAJwB,a,kCACxB,eAGA,I,iBAAA,IACI,IADJ,gBAEI,cAAwB,I,OACxB,gBAA4B,c,qBAK5B,oD,yLARJ,+BAMsB,W,+CAMmB,E,qBADrB,IAAC,EAAD,gB,4CAEsB,0BAAc,0B,IADvB,qFAAQ,2B,iIAYrB,O,O1BkFpB,E,O0BhFc,S,MACuB,a,yCAErB,EAAI,O,EAA2B,GAAM,K,GACrC,I,oB/JgE6B,EAAM,qB,uH+JrDhB,E,yBAC/B,IADqC,OAAY,S,GAAlB,S,aAE/B,EAAyB,aAAgB,M,wDc5Ec,kC,Id0ExB,E,qB/JqDgB,a,4D+J/CN,yBAAQ,K,wDACjB,K,oD1B2DhC,E0BpDQ,EADE,wBACF,UADE,IACF,aACe,mBAAM,I,2BAMJ,mBAAb,KAAa,OAAY,I,yD/JgCI,E,8C+JzB7C,G,C1BqCA,4B,M0BhCc,E1BiCV,IAAO,G0BjCG,kE,qD/JoB+B,E+JhB7B,EAAI,cACA,S,OAKpB,Y,gC/JUmD,uB,G+JVnD,Q,iB/KlHa,a,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C,MACA,SAAa,SAAO,aAAP,IAAb,M,iBAEwB,yC,yGVpHpB,a,4CAhFJ,kB,iBAWJ,iB,mBAmCQ,E,EAAc,EAAc,gB,MAAd,qB,YA5BqD,kB,ItDgHhE,iBAAP,EAAO,U,8CsD9GX,EAAI,EAAI,wBAAR,e,0BAE+B,QAC3B,kB,UAAA,wBAEG,qBf6CwC,G,qW0BNvC,E,qdAER,E,yCAPyB,qB,UAAA,a,EAAA,kE,yBAAA,E,gBAFuD,uB,KAAA,mD,cAAA,e,+NAEpE,gB,WAqDR,+B,wJACF,a,qRADE,kB,0OAEE,yBAAe,OAAf,qC,oaC5Fe,kCAAU,WAAV,kD,oEAAL,+D,gBAAA,E,OAAA,E,8SADsF,M,mCAAA,E,aAAA,sB,2Od0KvE,2H,EAAA,e,iEAAA,kB,uBAhBf,yE,KAAA,yC,IAAA,e,0KAKK,uB,qGAEb,wC,qDAE6B,e,8DAOpB,I,mBAAA,mC,oIANI,kB,6CAVH,iB,iBAGV,c,wDAHU,M,6JCwE2B,sB,OAAA,qC,OAAA,0B,oYAAc,K,iBAAhB,qC,UAAA,oB,OAAA,e,yCAAA,+B,iBADzB,qD,OAAA,+G,yGAClB,a,eAAA,iC,0JAAA,E,4MARJ,mCAOsB,qBAKuC,E,0FAD7D,0DACsD,4CAEtD,sC,OAAA,0BxBnLA,c,MAAA,E,WAAA,M,yGAQsB,yBAAV,GAAU,iC,kBAAA,c,0UwBwLE,a,WAAA,K,WAAA,kB,2BAAA,kD,sBAAsB,qB,yPAAf,kD,YAAA,I,2FAAL,qB,8GAAF,c,2FAJR,6D,kBAAA,c,KAAA,kF,KAAA,E,2WAAA,iC,0CAAA,kC,oGAThB,SAQI,S,KACA,E,4DAQJ,uE,YzLzRA,iB,MyLqSmC,qC,gMctRnC,oCARA,gB,EAAA,a,kGrB+BA,sE,iCsBnCY,mB,ODYZ,E,mCrBuBA,iC,mBAAA,E,WAoB8C,KsBvDlC,a,MAAA,a,6mBALZ,kB,QAAA,QAUA,OAVA,uC,EAAA,E,EAAA,E,sBAKY,e,WAER,oBAPJ,wBAUA,SrB6DA,O,4UAD0C,0B,wFkBuDlC,sH,2KACF,gB,KACI,EAAe,gB,iFAHrB,kB,6BlBtDA,cAAW,+C,kKAjBf,UAkBA,E,2BAlBA,E,qDAkBA,G,iBAQiB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,G,WAEI,G,qECNA,Q,oBLiEa,E,WAAN,iB,qDAwB6E,6B,2EKxFnE,E,oCZ0OF,iCAAgC,YAAhC,WAAX,I,gDAGK,GAET,G,0CYjOgB,OAAhB,KAAsB,QACtB,SACA,G,qBZ0Ne,e,OAAgC,eAA3C,WAEA,kB,yBAVM,M,CAAA,kB,GAAd,EAAc,gB,aAA2B,uD,eaiJrC,M,KAEgB,mB,mBhBuBX,E,OAAA,G,qDIrRW,uB,oGAqBJ,KAAgB,M,OAChB,Y,GY+QL,eZ5QS,EAAa,IAAb,G,iDAOJ,I,MAEA,e,UAEa,Y,IYkQjB,W,OAAJ,+B,GAGQ,mB,wCZrQY,a,sCAOC,gB,EY2PjB,Q,EAAJ,OACI,EADJ,S,iCAGQ,kB,YACA,c,EAEJ,uC,EANJ,mBAOI,EAPJ,I,EZ3PoB,Q,cYiQhB,W,aZhQgB,I,ea7HO,aAA/B,qCAA+B,Y,sCAmIvB,GAAM,W,kGAUtB,4BAMyD,0B,iGFtL9C,MEoK2D,yC,2DAO1D,iC,wGAhER,8B,gBAAA,iDAhH6B,M,I5BVjC,oB,uEeiIsB,Q,+DAEG,6C,+JfnIzB,2DAGQ,EAHR,e,OAII,KAAO,iB,2BAJX,gBAOA,qD,+DNLA,W,OAAA,wB,IAAA,qCAOyB,gCAET,sBAAM,aAAyB,iBAAzB,qBATtB,gD,qDAAA,QAMS,oBACD,sBAKE,GAIV,gDAhBA,O,4CAAA,Q,2CAAA,Q,GAOgB,kC,IAAS,E,+BAPzB,oB,IASgB,EAAM,mBAAyB,GAT/C,OAUY,K,uBAVZ,sE,mBqBEA,qDJoZa,kBAAc,QIhZX,4BAA8B,W,gBAE9B,qB,wBJ8YZ,GItYJ,+C,MAEA,gE,iBAAA,wB,KAAA,O,CAAA,kG,iNAWI,I,gMACgB,qBADhB,E,kBACgB,I,iIAAZ,E,sED2OJ,qB,IACc,uB,yCCzOQ,8B,0BAsFtB,I,SJ+RS,8B,qBAAA,6B,sBIpXS,a,+CAGM,c,oGAQJ,a,yBAXR,aAeQ,aAAI,gB,qCAEA,8C,uBAIM,gC,cAGN,uC,0FA4EZ,oB,8BAS4B,a,gCAChB,Y,qBAMQ,a,qBAGZ,cAAgB,yBAQpB,oB,yDAI4B,6B,gHAhIpB,uC,qCAMR,uC,kLAcI,W,wIAjBA,gBAAK,EAAL,wD,sRAPZ,uB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FgC,Y,KsCnF5B,M,MAEI,GpRUR,oCoRVQ,Y,iEpRUR,OoRPW,2BpROX,iE,0EoRHJ,G,sCAEA,0BAQI,e,IAAA,Y,OACA,0BtC2EyB,KAAO,UsCzEjB,mBxC9JX,EAAQ,EAAR,UwC8JJ,4BxC7JO,kBwC8JX,iEAEA,qDAQI,QACA,4B,kBAAA,ctCyEyB,YsCvEzB,GAAY,EAAa,U,IAEzB,EAAI,UpR1BJ,0BoR4BoB,e,gBpR5BpB,coR+BW,YACS,K,2DAcpB,c,MAAA,E,WxClMI,Y,WAAuB,I,OwCoM3B,GAAgB,KACpB,cAWI,OATJ,WAQI,OACA,G,+BpR5DA,kBoRsEW,KpRtEX,gCqR43BkE,QrR33BvD,G,yBoRoFX,ExCzOA,EwC2OgBvtC,ExC3OZ,I,IAAuB,YwC2OQ,IAAnC,iBAAgB,G,kDpRvFhB,kBoR4GW,KpR5GX,gCqRk7BgE,QrRj7BrD,G,wEoRiHf,uDAQI,W,2BACA,EtCoHa,gBAAc,EAAd,GsClHC,IxCjRV,YAAQ,KwCiRE,gCxCjRa,SwCkR/B,uBAEA,oC,sDE5PqC,gBAAiC,qBAAe,EAAf,qCAAhC,M,2HAAtC,Q,gBACkD,4DAAQ,M,oBAE1D,uBAAwF,sBpDKrE,O,gCoDWI,EAAuB,OAJ1C,QACA,E/BuC8C,Q+BrCvC,IAAP,IACmB,EAAM,EAAU,OAAhB,K,IAAf,iBAAwD,E7NiOrD,KAAK,O6NjOgD,EAAxD,2B,GACA,G,CAEI,Q,IAAiC,MAAQ,EAAR,E,OACjC,e,oFACQ,EAAQ,EAAR,EAAQ,EAHpB,qBAMkC,e,oGAatB,IAAZ,I,UAGR,QAA0E,gB,8DAI/B,MAAC,oB,6FAE5C,U,UAAA,oBAAsC,wD,sBAAtC,M,yCAAA,c,4B/B4U2B,IAAd,c+B5Ta,IAAlB,IACI,WAAc,KAClB,MAAS,eAAO,EAAP,qC/B0Tb,M+B7TA,I/B8TA,UAAa,E+B9Tb,IAQA,EAAO,G,kBAIP,UAAc,EAAgB,EAAR,MACtB,SAAuB,K,4B5B4KD,IAAV,I,UAEW,Q,EAAA,W,+E4BzKnB,EAAU,EAAM,MAChB,Q/BjCyC,I+BiCxB,E/BjCwC,S,U+BkCnC,I,M/BySjB,O+BvSL,E/BuSW,E+BvSX,G,oCCrFJ,I,wBAEE,c,yFDoFM,W,OAIA,GADI,EAAO,O,G/BmSnB,0CACA,E+BxSI,E/BwSJ,+B,G+B5RwB,M,+BAER,E,UAHJ,sC9NyKuC,E8NnKnC,I9NmKmC,sB,8CkMVvC,Q,sBAGJ,IAAU,aAAV,uC,cAGkB,Q4BrL1B,I,mC5BsL4B,E,MAAA,KH/NU,S,oCG8OlC,UACI,Q,oF4BpKR,IAAI,UAAJ,MACI,KAAW,GAAX,e,I5B4HJ,IAAI,EAAU,E,QACA,S4B5HV,E5B4HU,G,e4B3HG,K/BuQR,qB,c+BpQG,QFiEZ,cAAY,MAER,EAFQ,WpR9DZ,SoR8DY,WpR7DD,IsRPM,a/BwQjB,gBAAa,Y,GACN,I+BzQC,U/ByQD,c,iD+BlQe,mB,+BAC8B,Y,qE5B+HpC,IH3M6B,U,kEGiNrC,c,mBAGkB,Y,sBACd,K,qBAAgB,W,sH4BjI5B,eAAO,E,sBClIH,EAAM,iBD+Jd,uBACI,QAAmC,G,QACnC,sB,iFAFJ,Q,yCAAA,YAK8B,I,IAL9B,sB,4BAK8B,U,CAAqB,QAAQ,EAAR,EAApB,Q,oBAC3B,0B,EAA4C,GAAmB,IAAnB,E,QACA,IAAmB,EAAnB,E,0EAFjB,Q,MAA/B,a,8BAAA,SAKiD,e,8F5BoEM,mB,8C6B9OjD,M,gBDsLuF,E,GAI7D,O,oDC5L5B,E,kCD4L4B,K,IALpB,IAcG,EAdH,I,K5BmEQ,I4BhDJ,E,6C5BkDI,GH3M6B,I,8BGiN3B,iBAGG,kBAAK,SAAoB,EAApB,yC,IACd,M,kDAEI,c,mHASR,G,sGAKA,EAAiB,iB,qFArEzB,GACc,EAA2B,UAAzC,EAAc,e,cAIK,M,E4BNqB,QAEjB,GACK,I,QAEI,MACZ,EADY,wCE7N5B,I,GDUF,KACQ,IAAN,E,yBDkN4B,M,SAJpB,2BAcA,GACA,GAAA0S,EAAA,G5BVA,E,SAGJ,EAAU,EACC,Q,SAAgC,EAA3C,QAEA,I,WACK,E,WAET,GACI,e,M4BKD,IAAe,E,kBCrOtB,Q,KDyOI,GAAM,OADN,KAAAA,EAAA,IAKG,Q,mBGlQ2D,I,EAAA,I,mFAA/B,kB,wGAA+B,E,yDAAtE,4B,QAAuC,MAAA7K,E,kBAA+B,IAAAA,E,kBAAtE,+B,OAEA,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B,U,qDA6CvC,M9CpCkD,aAAR,O8C0C1C,W,wIAGJ,E,WACO,MAtDX,G,8B5O8LA,Y,W4O5LA,I,IGtDgC,G,SHmExB,Q,qBANQ,OAAZ,IACA,OACc,G,0BASD,IAAb,IACA,UAEO,IAAP,I,qCAGJ,e5OoKA,2B6LnEA,+D+CjGA,c,IAII,IACA,uBAAQ,G,kC/CqGJ,UACS,Q+ClGH,eAAW,EAAX,G,MACN,E,SACU,EAAU,a,IAAsB,EAAAA,cAAA,E,WAA1C,O5OgKQ,sC4OhKR,YAII,c,QAGJ,uBAAW,G,6BAIX,Q,kB/CsFI,IAAO,kB,6CAGX,mC,oB+CpFJ,YACA,E,6BI1HJ,QAK2C/sC,EAAA,QlCGzB,IkCHyB,IAAapP,EAAA,sBlCItC,ckCJsC,gBAAa,S,IAAA,IlCK9C,cAAS,EAAT,akCL8C,EAC7D,IAAc,IAAAA,EAAc,G,OAC5B,KAAqB,EAArB,KAGJ,EAqBJ,0BAEA,QAK6B,E,QAJZ,IAAb,I3SPA,E2SQQ,eAA0B,G,I3SP9B,IAda,OAeb,EAAM,gB,I2SQV,QAAe68C,E,KACf,aAAyB,kCAAzB,Y,sBC5CiC,2B,0CFsB0B,Q,ytCHiE3D,oBAEI,EAFJ,iCAKA,IAAa,GAAb,K,wDb1EJ,0CDSA,YCTA,2CDamE,YCX3D,aAAO,+B,YDWD,6C,4ECPd,gC,gBAA6D,QAAN,IAAM,IAAN,axRyD5C,mB,gCwSjEkC,gC,gCACT,gC,gCACuB,gCAAmB,gB,gBACD,gCAAmB,c,oEAHhG,oBAA6C,EAA7C,+BAMA,Q,yuEtDsBA,yB,gFjBgzBI,gC,6PmBxoBA,gB,orBZtHa,yB,WAEK,WAhBkB,S,4DAApC,mB,2GC0EsB,E,uHC/HpB,EACE,kB,wHA2FR,gB,kFAMA,mB,2BAkBI,iBAlBJ,0B,sWE1HI,OAHJ,QC6EA,UAG2F,IAAnB,IV3CpE,Y,ISlC2B,Q,6CzIsT/B,e0InNA,YAG2D,G,EDzG3D,U,6xFc8OkB,QAAd,GAAA5lC,EAAA,G,StB/EsB,IAAN,GAAsC,E,GACxC,OADV,K3KyHO,M2KxHP,Q,IA7CA,EAAI,E,YAgDJ,QAEA,EAAAm7B,EAAA,EsB8EQryC,EAAA,iDAEJ,GAAU,EAAV,mCA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,YAA4C,G,CAC5C,EAAsC,EACtC,SAGA,aACA,G,OACwC,OAAxC,K,cAEA,aAAkD,uB,8HAlBtD,iC,kIAsBJ,qE,iCAIA,iFAEQ,oBAAwB,EAAxB,WrRifE,gBqRjfF,iBtR3HI,aAAY,S,kBACT,e,0DsRwH0B,EAI7B,KAJ6B,M,cEtPZ,4BAEzB,uB,oBACA,G,0EADA,QACA,a,oBADA,qB,6BACA,S,IAAA,c,6EAEiC,c,sDAEC,S,mGCHN,E,WAAC,Y,WAAA,I,IAAwC,Q,qBAAxC,WAAwC,O,mEAAxC,oC,yEAAwC,8B,+EALzE,0BAKiC,yB,wEALjC,oBAKiC,kB,2EAAA,E,WAAwC,a,WALzE,I,0BAgBI,OAhBJ,W,OAgBI,GCXwB,iBAAC,oD,eAwCzB,aAGwC,S,KArCpC,E,YADiB,K,gEAOA,QAIjB,IAAkB,OAHlB,O,GAIA,MAGuC,M,mIAOpB,wBACnB,E,6FAkER,8C,EAAA,K,+GAAA,sC,oCASA,qFATA,Q,mBAAA,+B,8NC1BuB,wC,cAKnB,c,uMAoBA,uB,cCnGA,c,ctVixDgB,QAAAA,M,csVvwDZ,c,mBAmBJ,MAAe,OAJf,QAAmB,Q,uDAGvB,wB,YC/BA,+F,iKCW4B,iB,6CAOF,eAAkCspD,GAAA,WAAjC,a,wFACD,a,2DxViwDN,QAAAtpD,MwVhuDZ,UAAI,E7QCH,e,sD6Q5Be,eAAkCspD,GAAA,WAyBtD,uB9VmCoD,E,e8V3DpD,c,sDAGJ,IAAgD,EAAhD,OACA,I,eAAA,a,CAA6C,e,eACyB,iBAAyB,YAAjB,GAAuC,K,qBAIrH,eAA0D,QAAAtpD,M,IAE1D,E,WAA2D,IAAU,W,cACrE,eAAwD,WAAQ,I,iBACN,eAEX,wBAAY,E,wBAYvD,gB,iExV+tDgB,G,qCAAA,iB,sMyV3wDM,cAEtB,gB,iBACA,kB,EAEA,eAAgB,E,qBA+BhB,KAEQ,E,oBAcZ,M9V8LiC,Q,QMnHgB,EAAM,Q,cNmHtB,e8V7L7B,O9V6L6B,qCAAmB,Q8V7L5B,Y/VuBgC,M+VvBhC,W9VmLpB,G8VnLyB,E9VmLhBqB,O8VlLT,kB,4BCzDJ,O,qJAAA,iC/RiK2C,kB,C+R7Ja,ICDpD,IDCoD,E/R6JS,I+R7J7D,gBCDY,I,IAAJ,EACJ,EAAO,SAAS,W,cADZ,e,4qBFsCA,CADiB,EACjB,S,OAAmB,gB,wBAEnB,Q,kBxVuFqC,GAAM,G,yBwV1F/C,2B,kGNzBJ,E,WAAa,iB,6GCuFb,W,iBACe,+D,uEAAA,E,iIAAA,E,mHAAX,E,4BACA,iD,0MAPR,c,yCAAA,I,gEC7BgB,E,2NAIJ,O,qDAL6D,E,IAAA,W,OAAA,2B,oDAAA,sC,uFAHO,MAAV,GAAU,MAAV,KAAU,8B,WAGjD,OAHuC,OAG9C,gCAAO,iBAAoC,O,+OAkCvD,MAAuB,a,oVOnGX,uB,KAGpB,8GADA,GAEA,eAHA,c,0DACA,mBACA,UAEiD,S,KAA7B,EAApB,qB,6BAHA,kD,sEACA,E,uPAOkC,E,yDNjBlC,E,WAAoB,qB,WACpB,MAGuB,iCAGnB,sBAHmB,iBAIc,c,mBAErC,mB,WACI,MtVwwDY,2DsVvwDU,EtVuwDV,e,OsVrwDhB,2BAEI,cAAmB,mBAGnB,kBAHmB,WAIX,MAEZ,cAvB2D,MAwBvD,EAxBuD,WAyB/C,kBAzB+C,WA2B3D,I,wECvBI,8BAEJ,O,4DAGI,yB5QoCJ,sBAAS,GAAJ,0D,8C4Q/BD,aAAY,M,kB5Q+BhBrB,KAAK,S,uC4Q3BD,e5Q2BC,K4Q3BW,YAAZ,M,0CAIA,E,WAAA,c,W5QuBJ,CAAK,K,wL6QnCmB,oBAAsB,EAAtB,WAAC,iBAAD,iB,qDACD,I,4IACA,M,cAAiC,+B,OAAhB,8B,0HACnB,c,WAAsB,I,iCAIpB,U,WAAkC,I,iCAAjC,iB,gHACD,gB,kDACF,e,WAAkC,CAAAspD,K,iEAEK,c,MA6B5D,E,mCA5BuC,M7QuBlC,c3EuuDwB,6CwV9vD7B,mE,qGxV8vDgB,sBwV1vDuB,GxV0vDvB,UwV1vDuB,exV0vDvC,W,OAAgBtpD,KAAA,qB2E/tDX,c3E+tDwB,mB2EvuDxB,c3EuuDwB,oB,oEwV1vD7B,0B,kEAKJ,6DAAsE,EAAtE,eAEA,kC,oBACA,E,WAA6D,kB,oBAQ7D,6DAAqD,EAArD,eAEA,kC,oBAEA,E,WAA6C,Y,gKC5B7C,E,WAEI,iD,CACA,IAEA,EAFA,eAAuB,I,IACT,EAwBK,QAvBC,WACpB,a,CAFc,IAGd,EAHc,EAEG,SAEb,EAAqB,KACd,UAAP,EAAW,SAAJ,YAAI,I,CALD,MAMV,EAAa,MAEjB,eAGI,azV6vDS,c,aAAA,WyV3vDL,aAAsB,0B,OAEtB,KAAI,6BAAc,IACP,oBACX,EADW,oCAIf,MAYAupD,GAAA,8BAEe,eAFf,WAGJ,I,ikB5BqII,O,WALJ,OAKI,M,iDAQJ,O,OAbA,WAaA,M,sCASA,WAOI,OAPJ,WAKI,OAEA,M,0DAPJ,wB,uEAeA,a,uDAgBA,W,8NChNA,EAAwB,sB,qzBIsD5B,MAGgD,kBAAAC,QAAA,2D,yDAc5C,M,OlUi4C0B,OAAnB,KAAM,IAAa,Y,qCkU72C1B,IAAI,EACJ,cAAO,IAAU,oBAAkB,KAAR,gBAA3B,Y,2QlUqwCgB,MAAhB,OAAgB,yB,kGwU51ChB,E,cAAA,OAMI,IADA,eACA,a,CACA,IAGA,EAHA,WACA,EAAoC,EAApC,MACA,a,IAEA,e,8DAXJ,c,6vBOnCJ,uD,8IAAA,qC,0CAAA,mC,gCAAA,yD,8a/UoxDoB,MAAhB,GAAgB,yC,MAhPK,IgVv6CL,EhVupDa,EgVvpDb,MADJ,UAGQ,8CAHR,KAIQ,gB,8BAJR,kB,MhVw6CS,wBAAsC,OgV95CnD,IAXA,IhV06CD,WgV/5CQ,a,gBAIgD,uFAA4C,YAA1C,I,qhE5BrIH,G,gEpTwiDjD,IAvEN,iBAuEM,c,CAAA,iBAAb,GAAa,U,YACG,K,kDACT,8C,IoT1hDT,G,GAbgC,KAAC,MAAD,IAAc,QAAa,MAA1B,IAAD,yG,GAGP,EAAC,EAAa,GAAd,KpTkiDV,IAvEN,MAAM,WAuEA,c,CAAA,iBAAb,GAAa,U,YACG,K,kHoTxgDmC,G,GpTygD5C,8B,GoTphDmB,EAC1B,EAD0B,GAE1B,KpTghDa,IAvEN,MAAM,WAuEA,c,CAAA,iBAAb,GAAa,U,mBACT,EAAY,G,2DACT,2F,GoTvgDwB,aAAW,UAAV,gBAAD,SAAsB,sBAM/C,GAAN,8EUkBiC,EAAN,GAA4B,MAA5B,IAA8C,EAAU,M,GTxD3C,gCSqFJ,2D,4PAsIC,I,iBnUwJR,K,OAAkB,+BkWrTrB,KCjEE,I,yCD+CwC,KAAK,kI,MAKN,MAAK,oCAAL,K,mBlCnDnE,GAAM,QAAK,YoCIW,c,iCpBPW,gC,GKGA,W3BEO,M2BCf,2E,G3BDe,Y,IAAA,G2BOb,W,kEgBrB/B,cAcA,IAAIttB,EAAS,EAAQ,GAAeA,OAChCutB,EAASjR,EAAOiR,QAAUjR,EAAOkR,SAEjCD,GAAUA,EAAOE,gBACnB9pD,EAAOD,QAKT,SAAsBwK,EAAM6+C,GAE1B,GAAI7+C,EAjBW,WAiBQ,MAAM,IAAI4qC,WAAW,mCAE5C,IAAI1sB,EAAQ4T,EAAOM,YAAYpyB,GAE/B,GAAIA,EAAO,EACT,GAAIA,EA1BQ,MA4BV,IAAK,IAAIw/C,EAAY,EAAGA,EAAYx/C,EAAMw/C,GA5BhC,MA+BRH,EAAOE,gBAAgBrhC,EAAMjU,MAAMu1C,EAAWA,EA/BtC,aAkCVH,EAAOE,gBAAgBrhC,GAI3B,GAAkB,mBAAP2gC,EACT,OAAOx/B,EAAQsU,UAAS,WACtBkrB,EAAG,KAAM3gC,MAIb,OAAOA,GA5BPzoB,EAAOD,QAVT,WACE,MAAM,IAAIsH,MAAM,qH,mDCPlB,IAAI2iD,EAAQ,GAEZ,SAASC,EAAgBvhD,EAAMoU,EAASotC,GACjCA,IACHA,EAAO7iD,OAWT,IAAI8iD,EAEJ,SAAUC,GAnBZ,IAAwBC,EAAUC,EAsB9B,SAASH,EAAUI,EAAMC,EAAMC,GAC7B,OAAOL,EAAM1pD,KAAKP,KAdtB,SAAoBoqD,EAAMC,EAAMC,GAC9B,MAAuB,iBAAZ3tC,EACFA,EAEAA,EAAQytC,EAAMC,EAAMC,GAUHC,CAAWH,EAAMC,EAAMC,KAAUtqD,KAG3D,OA1B8BmqD,EAoBJF,GApBNC,EAoBLF,GApBsChoD,UAAYlB,OAAOY,OAAOyoD,EAAWnoD,WAAYkoD,EAASloD,UAAUO,YAAc2nD,EAAUA,EAAS/2C,UAAYg3C,EA0B/JH,EAPT,CAQED,GAEFC,EAAUhoD,UAAUrB,KAAOopD,EAAKppD,KAChCqpD,EAAUhoD,UAAUuG,KAAOA,EAC3BshD,EAAMthD,GAAQyhD,EAIhB,SAASQ,EAAMC,EAAUC,GACvB,GAAI3nD,MAAMC,QAAQynD,GAAW,CAC3B,IAAIl3C,EAAMk3C,EAAS9lD,OAKnB,OAJA8lD,EAAWA,EAASnmD,KAAI,SAAUlE,GAChC,OAAOgE,OAAOhE,MAGZmT,EAAM,EACD,UAAUsN,OAAO6pC,EAAO,KAAK7pC,OAAO4pC,EAASp2C,MAAM,EAAGd,EAAM,GAAG/O,KAAK,MAAO,SAAWimD,EAASl3C,EAAM,GAC3F,IAARA,EACF,UAAUsN,OAAO6pC,EAAO,KAAK7pC,OAAO4pC,EAAS,GAAI,QAAQ5pC,OAAO4pC,EAAS,IAEzE,MAAM5pC,OAAO6pC,EAAO,KAAK7pC,OAAO4pC,EAAS,IAGlD,MAAO,MAAM5pC,OAAO6pC,EAAO,KAAK7pC,OAAOzc,OAAOqmD,IA+BlDX,EAAgB,yBAAyB,SAAUnpD,EAAMU,GACvD,MAAO,cAAgBA,EAAQ,4BAA8BV,EAAO,MACnE0S,WACHy2C,EAAgB,wBAAwB,SAAUnpD,EAAM8pD,EAAUnV,GAEhE,IAAIqV,EA/BmBC,EAAQ7R,EAwC3BxZ,EAEJ,GATwB,iBAAbkrB,IAjCYG,EAiCkC,OAAVH,EAhCpCvT,QAAQ6B,GAAOA,EAAM,EAAI,GAAKA,EAAK6R,EAAOjmD,UAAYimD,IAiC/DD,EAAa,cACbF,EAAWA,EAAS5jC,QAAQ,QAAS,KAErC8jC,EAAa,UAhCjB,SAAkBriD,EAAKsiD,EAAQC,GAK7B,YAJiB15C,IAAb05C,GAA0BA,EAAWviD,EAAI3D,UAC3CkmD,EAAWviD,EAAI3D,QAGV2D,EAAI0B,UAAU6gD,EAAWD,EAAOjmD,OAAQkmD,KAAcD,EAgCzD35C,CAAStQ,EAAM,aAEjB4+B,EAAM,OAAO1e,OAAOlgB,EAAM,KAAKkgB,OAAO8pC,EAAY,KAAK9pC,OAAO2pC,EAAMC,EAAU,aACzE,CACL,IAAIr0C,EAhCR,SAAkB9N,EAAKsiD,EAAQp3C,GAK7B,MAJqB,iBAAVA,IACTA,EAAQ,KAGNA,EAAQo3C,EAAOjmD,OAAS2D,EAAI3D,UAGS,IAAhC2D,EAAI2B,QAAQ2gD,EAAQp3C,GAwBhB+lC,CAAS54C,EAAM,KAAO,WAAa,WAC9C4+B,EAAM,QAAS1e,OAAOlgB,EAAM,MAAOkgB,OAAOzK,EAAM,KAAKyK,OAAO8pC,EAAY,KAAK9pC,OAAO2pC,EAAMC,EAAU,SAItG,OADAlrB,GAAO,mBAAmB1e,cAAcy0B,KAEvCjiC,WACHy2C,EAAgB,4BAA6B,2BAC7CA,EAAgB,8BAA8B,SAAUnpD,GACtD,MAAO,OAASA,EAAO,gCAEzBmpD,EAAgB,6BAA8B,mBAC9CA,EAAgB,wBAAwB,SAAUnpD,GAChD,MAAO,eAAiBA,EAAO,mCAEjCmpD,EAAgB,wBAAyB,kCACzCA,EAAgB,yBAA0B,6BAC1CA,EAAgB,6BAA8B,mBAC9CA,EAAgB,yBAA0B,sCAAuCz2C,WACjFy2C,EAAgB,wBAAwB,SAAUztB,GAChD,MAAO,qBAAuBA,IAC7BhpB,WACHy2C,EAAgB,qCAAsC,oCACtDjqD,EAAOD,QAAQiqD,MAAQA,G,8BC9HvB,YA2BA,IAAI5B,EAAannD,OAAOwgB,MAAQ,SAAU/b,GACxC,IAAI+b,EAAO,GAEX,IAAK,IAAI3f,KAAO4D,EACd+b,EAAKtD,KAAKrc,GAGZ,OAAO2f,GAKTzhB,EAAOD,QAAUsoD,EAEjB,IAAIE,EAAW,EAAQ,IAEnBC,EAAW,EAAQ,IAEvB,EAAQ,EAAR,CAAoBH,EAAQE,GAM1B,IAFA,IAAI9mC,EAAO2mC,EAAWI,EAASrmD,WAEtB4Z,EAAI,EAAGA,EAAI0F,EAAK3c,OAAQiX,IAAK,CACpC,IAAI0sC,EAAShnC,EAAK1F,GACbssC,EAAOlmD,UAAUsmD,KAASJ,EAAOlmD,UAAUsmD,GAAUD,EAASrmD,UAAUsmD,IAIjF,SAASJ,EAAOziC,GACd,KAAMzlB,gBAAgBkoD,GAAS,OAAO,IAAIA,EAAOziC,GACjD2iC,EAAS7nD,KAAKP,KAAMylB,GACpB4iC,EAAS9nD,KAAKP,KAAMylB,GACpBzlB,KAAKwoD,eAAgB,EAEjB/iC,KACuB,IAArBA,EAAQ8iC,WAAoBvoD,KAAKuoD,UAAW,IACvB,IAArB9iC,EAAQjjB,WAAoBxC,KAAKwC,UAAW,IAElB,IAA1BijB,EAAQ+iC,gBACVxoD,KAAKwoD,eAAgB,EACrBxoD,KAAKy+B,KAAK,MAAOgqB,KAiCvB,SAASA,IAEHzoD,KAAK0oD,eAAeC,OAGxBl/B,EAAQsU,SAAS6qB,EAAS5oD,MAG5B,SAAS4oD,EAAQr0C,GACfA,EAAKZ,MArCP7S,OAAOC,eAAemnD,EAAOlmD,UAAW,wBAAyB,CAI/DhB,YAAY,EACZC,IAAK,WACH,OAAOjB,KAAK0oD,eAAeG,iBAG/B/nD,OAAOC,eAAemnD,EAAOlmD,UAAW,iBAAkB,CAIxDhB,YAAY,EACZC,IAAK,WACH,OAAOjB,KAAK0oD,gBAAkB1oD,KAAK0oD,eAAeoC,eAGtDhqD,OAAOC,eAAemnD,EAAOlmD,UAAW,iBAAkB,CAIxDhB,YAAY,EACZC,IAAK,WACH,OAAOjB,KAAK0oD,eAAe/jD,UAgB/B7D,OAAOC,eAAemnD,EAAOlmD,UAAW,YAAa,CAInDhB,YAAY,EACZC,IAAK,WACH,YAA4BkQ,IAAxBnR,KAAK8oD,qBAAwD33C,IAAxBnR,KAAK0oD,iBAIvC1oD,KAAK8oD,eAAeC,WAAa/oD,KAAK0oD,eAAeK,YAE9D1jD,IAAK,SAAahE,QAGY8P,IAAxBnR,KAAK8oD,qBAAwD33C,IAAxBnR,KAAK0oD,iBAM9C1oD,KAAK8oD,eAAeC,UAAY1nD,EAChCrB,KAAK0oD,eAAeK,UAAY1nD,Q,iCCxIpC,IAAI66B,EAAS,EAAQ,GAAeA,OAGpC,SAAS6uB,EAAMC,EAAWC,GACxBjrD,KAAKkrD,OAAShvB,EAAOK,MAAMyuB,GAC3BhrD,KAAKmrD,WAAaF,EAClBjrD,KAAKorD,WAAaJ,EAClBhrD,KAAKqrD,KAAO,EAGdN,EAAK/oD,UAAUmgD,OAAS,SAAU1sB,EAAMgpB,GAClB,iBAAThpB,IACTgpB,EAAMA,GAAO,OACbhpB,EAAOyG,EAAO1b,KAAKiV,EAAMgpB,IAQ3B,IALA,IAAIpxB,EAAQrtB,KAAKkrD,OACbF,EAAYhrD,KAAKorD,WACjBzmD,EAAS8wB,EAAK9wB,OACd2mD,EAAQtrD,KAAKqrD,KAERt3C,EAAS,EAAGA,EAASpP,GAAS,CAIrC,IAHA,IAAI4mD,EAAWD,EAAQN,EACnBp7B,EAAY7oB,KAAKsD,IAAI1F,EAASoP,EAAQi3C,EAAYO,GAE7CnrD,EAAI,EAAGA,EAAIwvB,EAAWxvB,IAC7BitB,EAAMk+B,EAAWnrD,GAAKq1B,EAAK1hB,EAAS3T,GAItC2T,GAAU6b,GADV07B,GAAS17B,GAGIo7B,GAAe,GAC1BhrD,KAAKuiD,QAAQl1B,GAKjB,OADArtB,KAAKqrD,MAAQ1mD,EACN3E,MAGT+qD,EAAK/oD,UAAUwpD,OAAS,SAAU/M,GAChC,IAAIhzC,EAAMzL,KAAKqrD,KAAOrrD,KAAKorD,WAE3BprD,KAAKkrD,OAAOz/C,GAAO,IAInBzL,KAAKkrD,OAAO93C,KAAK,EAAG3H,EAAM,GAEtBA,GAAOzL,KAAKmrD,aACdnrD,KAAKuiD,QAAQviD,KAAKkrD,QAClBlrD,KAAKkrD,OAAO93C,KAAK,IAGnB,IAAI2O,EAAmB,EAAZ/hB,KAAKqrD,KAGhB,GAAItpC,GAAQ,WACV/hB,KAAKkrD,OAAOtP,cAAc75B,EAAM/hB,KAAKorD,WAAa,OAG7C,CACL,IAAI1hD,GAAkB,WAAPqY,KAAuB,EAClCpY,GAAYoY,EAAOrY,GAAW,WAElC1J,KAAKkrD,OAAOtP,cAAcjyC,EAAU3J,KAAKorD,WAAa,GACtDprD,KAAKkrD,OAAOtP,cAAclyC,EAAS1J,KAAKorD,WAAa,GAGvDprD,KAAKuiD,QAAQviD,KAAKkrD,QAClB,IAAIpkD,EAAO9G,KAAKyrD,QAEhB,OAAOhN,EAAM33C,EAAK3C,SAASs6C,GAAO33C,GAGpCikD,EAAK/oD,UAAUugD,QAAU,WACvB,MAAM,IAAIr7C,MAAM,4CAGlBrH,EAAOD,QAAUmrD,G,6BC5EjB,IAAIlB,EAAQ,GAEZ,SAASC,EAAgBvhD,EAAMoU,EAASotC,GACjCA,IACHA,EAAO7iD,OAWT,IAAI8iD,EAEJ,SAAUC,GAnBZ,IAAwBC,EAAUC,EAsB9B,SAASH,EAAUI,EAAMC,EAAMC,GAC7B,OAAOL,EAAM1pD,KAAKP,KAdtB,SAAoBoqD,EAAMC,EAAMC,GAC9B,MAAuB,iBAAZ3tC,EACFA,EAEAA,EAAQytC,EAAMC,EAAMC,GAUHC,CAAWH,EAAMC,EAAMC,KAAUtqD,KAG3D,OA1B8BmqD,EAoBJF,GApBNC,EAoBLF,GApBsChoD,UAAYlB,OAAOY,OAAOyoD,EAAWnoD,WAAYkoD,EAASloD,UAAUO,YAAc2nD,EAAUA,EAAS/2C,UAAYg3C,EA0B/JH,EAPT,CAQED,GAEFC,EAAUhoD,UAAUrB,KAAOopD,EAAKppD,KAChCqpD,EAAUhoD,UAAUuG,KAAOA,EAC3BshD,EAAMthD,GAAQyhD,EAIhB,SAASQ,EAAMC,EAAUC,GACvB,GAAI3nD,MAAMC,QAAQynD,GAAW,CAC3B,IAAIl3C,EAAMk3C,EAAS9lD,OAKnB,OAJA8lD,EAAWA,EAASnmD,KAAI,SAAUlE,GAChC,OAAOgE,OAAOhE,MAGZmT,EAAM,EACD,UAAUsN,OAAO6pC,EAAO,KAAK7pC,OAAO4pC,EAASp2C,MAAM,EAAGd,EAAM,GAAG/O,KAAK,MAAO,SAAWimD,EAASl3C,EAAM,GAC3F,IAARA,EACF,UAAUsN,OAAO6pC,EAAO,KAAK7pC,OAAO4pC,EAAS,GAAI,QAAQ5pC,OAAO4pC,EAAS,IAEzE,MAAM5pC,OAAO6pC,EAAO,KAAK7pC,OAAO4pC,EAAS,IAGlD,MAAO,MAAM5pC,OAAO6pC,EAAO,KAAK7pC,OAAOzc,OAAOqmD,IA+BlDX,EAAgB,yBAAyB,SAAUnpD,EAAMU,GACvD,MAAO,cAAgBA,EAAQ,4BAA8BV,EAAO,MACnE0S,WACHy2C,EAAgB,wBAAwB,SAAUnpD,EAAM8pD,EAAUnV,GAEhE,IAAIqV,EA/BmBC,EAAQ7R,EAwC3BxZ,EAEJ,GATwB,iBAAbkrB,IAjCYG,EAiCkC,OAAVH,EAhCpCvT,QAAQ6B,GAAOA,EAAM,EAAI,GAAKA,EAAK6R,EAAOjmD,UAAYimD,IAiC/DD,EAAa,cACbF,EAAWA,EAAS5jC,QAAQ,QAAS,KAErC8jC,EAAa,UAhCjB,SAAkBriD,EAAKsiD,EAAQC,GAK7B,YAJiB15C,IAAb05C,GAA0BA,EAAWviD,EAAI3D,UAC3CkmD,EAAWviD,EAAI3D,QAGV2D,EAAI0B,UAAU6gD,EAAWD,EAAOjmD,OAAQkmD,KAAcD,EAgCzD35C,CAAStQ,EAAM,aAEjB4+B,EAAM,OAAO1e,OAAOlgB,EAAM,KAAKkgB,OAAO8pC,EAAY,KAAK9pC,OAAO2pC,EAAMC,EAAU,aACzE,CACL,IAAIr0C,EAhCR,SAAkB9N,EAAKsiD,EAAQp3C,GAK7B,MAJqB,iBAAVA,IACTA,EAAQ,KAGNA,EAAQo3C,EAAOjmD,OAAS2D,EAAI3D,UAGS,IAAhC2D,EAAI2B,QAAQ2gD,EAAQp3C,GAwBhB+lC,CAAS54C,EAAM,KAAO,WAAa,WAC9C4+B,EAAM,QAAS1e,OAAOlgB,EAAM,MAAOkgB,OAAOzK,EAAM,KAAKyK,OAAO8pC,EAAY,KAAK9pC,OAAO2pC,EAAMC,EAAU,SAItG,OADAlrB,GAAO,mBAAmB1e,cAAcy0B,KAEvCjiC,WACHy2C,EAAgB,4BAA6B,2BAC7CA,EAAgB,8BAA8B,SAAUnpD,GACtD,MAAO,OAASA,EAAO,gCAEzBmpD,EAAgB,6BAA8B,mBAC9CA,EAAgB,wBAAwB,SAAUnpD,GAChD,MAAO,eAAiBA,EAAO,mCAEjCmpD,EAAgB,wBAAyB,kCACzCA,EAAgB,yBAA0B,6BAC1CA,EAAgB,6BAA8B,mBAC9CA,EAAgB,yBAA0B,sCAAuCz2C,WACjFy2C,EAAgB,wBAAwB,SAAUztB,GAChD,MAAO,qBAAuBA,IAC7BhpB,WACHy2C,EAAgB,qCAAsC,oCACtDjqD,EAAOD,QAAQiqD,MAAQA,G,8BC9HvB,YA2BA,IAAI5B,EAAannD,OAAOwgB,MAAQ,SAAU/b,GACxC,IAAI+b,EAAO,GAEX,IAAK,IAAI3f,KAAO4D,EACd+b,EAAKtD,KAAKrc,GAGZ,OAAO2f,GAKTzhB,EAAOD,QAAUsoD,EAEjB,IAAIE,EAAW,EAAQ,KAEnBC,EAAW,EAAQ,KAEvB,EAAQ,EAAR,CAAoBH,EAAQE,GAM1B,IAFA,IAAI9mC,EAAO2mC,EAAWI,EAASrmD,WAEtB4Z,EAAI,EAAGA,EAAI0F,EAAK3c,OAAQiX,IAAK,CACpC,IAAI0sC,EAAShnC,EAAK1F,GACbssC,EAAOlmD,UAAUsmD,KAASJ,EAAOlmD,UAAUsmD,GAAUD,EAASrmD,UAAUsmD,IAIjF,SAASJ,EAAOziC,GACd,KAAMzlB,gBAAgBkoD,GAAS,OAAO,IAAIA,EAAOziC,GACjD2iC,EAAS7nD,KAAKP,KAAMylB,GACpB4iC,EAAS9nD,KAAKP,KAAMylB,GACpBzlB,KAAKwoD,eAAgB,EAEjB/iC,KACuB,IAArBA,EAAQ8iC,WAAoBvoD,KAAKuoD,UAAW,IACvB,IAArB9iC,EAAQjjB,WAAoBxC,KAAKwC,UAAW,IAElB,IAA1BijB,EAAQ+iC,gBACVxoD,KAAKwoD,eAAgB,EACrBxoD,KAAKy+B,KAAK,MAAOgqB,KAiCvB,SAASA,IAEHzoD,KAAK0oD,eAAeC,OAGxBl/B,EAAQsU,SAAS6qB,EAAS5oD,MAG5B,SAAS4oD,EAAQr0C,GACfA,EAAKZ,MArCP7S,OAAOC,eAAemnD,EAAOlmD,UAAW,wBAAyB,CAI/DhB,YAAY,EACZC,IAAK,WACH,OAAOjB,KAAK0oD,eAAeG,iBAG/B/nD,OAAOC,eAAemnD,EAAOlmD,UAAW,iBAAkB,CAIxDhB,YAAY,EACZC,IAAK,WACH,OAAOjB,KAAK0oD,gBAAkB1oD,KAAK0oD,eAAeoC,eAGtDhqD,OAAOC,eAAemnD,EAAOlmD,UAAW,iBAAkB,CAIxDhB,YAAY,EACZC,IAAK,WACH,OAAOjB,KAAK0oD,eAAe/jD,UAgB/B7D,OAAOC,eAAemnD,EAAOlmD,UAAW,YAAa,CAInDhB,YAAY,EACZC,IAAK,WACH,YAA4BkQ,IAAxBnR,KAAK8oD,qBAAwD33C,IAAxBnR,KAAK0oD,iBAIvC1oD,KAAK8oD,eAAeC,WAAa/oD,KAAK0oD,eAAeK,YAE9D1jD,IAAK,SAAahE,QAGY8P,IAAxBnR,KAAK8oD,qBAAwD33C,IAAxBnR,KAAK0oD,iBAM9C1oD,KAAK8oD,eAAeC,UAAY1nD,EAChCrB,KAAK0oD,eAAeK,UAAY1nD,Q,iCCxIpC,UAEI,EAAO,CAAC,EAAW,WAAkB,0BAAP,EAQ1B,SAAUuB,EAAGD,GACnB,aAUA,SAAS+oD,EAASC,EAAW15B,EAAS3F,GACpC,IAAIs/B,EACJ,OAAQA,EAAOD,GAAWprD,KAAKkP,MAAMm8C,EAAM,CAAC,KAAM35B,GAASpR,OAAOyL,IAX/C3pB,EAAOsC,eACDtC,EAAO2M,qBACf3M,EAAO6M,aAiB1B,IAAIq8C,EAAoBjpD,EAAEkpD,YAAclpD,EAAEkpD,UAAY,IAClDC,EAAaF,EAAkBG,KAAOH,EAAkBG,GAAK,IAMjE,OALAD,EAAWE,cAlBX,SAAe1mD,GACb,OAAOzE,OAAOorD,OAAO,GAAI3mD,IAkB3BwmD,EAAWI,4BAhBX,SAA6BR,GAC3B,OAAO7qD,OAAO0iD,oBAAoBmI,IAgBpCI,EAAWK,eAAiBV,EAC5BK,EAAWM,cAXX,SAAkBV,EAAWzlC,EAAQoG,GACnC,OAAOo/B,EAASC,EAAW,CAACzlC,GAASoG,EAAOjY,UAW9C03C,EAAWO,eATX,SAAkBX,EAAWr/B,GAC3B,OAAOo/B,EAASC,EAAW,GAAIr/B,EAAOjY,UASjCzR,IApCgC,gC,mVrWmFzC,4C,unBsWzE0C,cACtC,iBAGA,sBAA6B2pD,I,cCdjC,0DAII,WAAuCC,EAAnB,KAAA7rD,KjWgL4C,eiWpLpE,4BAEI,oBAAQ,oBAAQ,oBAAQ,mBAAO,mBAI/B,IAJA,0BAAQ,0BAAQ,0BAAQ,0BAAO,0BAI/B,oBACI,YAA2Cs6B,EAAT,K,0XDStC,YACwBwxB,EAApBzsD,KAAK,iBAA0B0sD,I,oBAGnC,a,mBAIA,WACY,InX4kaI,EmX5kaJ,EAAR,eAAQ,aAAQ,c,aAAR,UAAuBC,EAAf,yBnX4kapB,YAAgB,EAAhB,WAAsB,EAAN,EAAhB,K,kMoX/laA,0CANJ,yC,aCoBI,wBACI,2BACI,c,8FDtBZ,sB,IAAA,oB,IAAA,oB,IAAA,oB,IAAA,mB,IAAA,mB,QAAA,6E,mBCSI,sBAQsC,M,YALlC,IAAAhsD,MAAgB,WAEhB,IAAAisD,MAAsC,WAEtC,UACkC,yCARtC,+C,mBAcY,cAA4C,U,2GAHxD,sC,gnBCZJ,WAE2CC,K,gNzWwC3C,+C,gE0WxCA,kBAAsF,SAAAxrD,MAEtF,oBACI,QAAaA,ECPjB,cAA2C,UAAGyrD,EAAH,MAAc,E,qKCNzD,a,OAAA,KA+CgC,cAAC,UC/CjC,cAAgD,WAAAC,EAAc1rD,GAEhC,cAC1B,uBAWJ,cAAmD,WAAA2rD,EAAkB3rD,GAEtC,cAC3B,uBCbJ,cACIuiB,QAAQ0iC,MAAW2G,EAALhG,ICLlB,aAAuD,WAAAiG,EAEvD,cAAwE,SAExE,aAA4D,oBAE5D,c,mHFHI,wC,IAAA,sC,kCAEA,cACI,OAAIltD,KAAKqB,QAAUopD,IACfzqD,KAAKqB,MAAQ,GACb,I,+GASR,wC,IAAA,sC,wUGUJ,WAAuC,SAAO,O,oBNzB9C,cACI,IAAK,wBAAc,KAAMA,GACrB,MAAM,EAAsB,iCAAgC,I,uBAIpE,YAAgD,MAAe,EAAAA,M1WsD3D,GAAa,MAATA,EAEA,MAAM,E0WxD0D,4B1WwDzB8C,Y0WxDC,O1W0DjC9C,G,4D0W5Cf,gBAAmF,SAAAA,O,mBAEnF,kBACI,QAAaA,G,wFEzBjB,0B,qBAIA,WACI,GAAI,MAaR,WAUwB,IAAb,EARa,IAAhB8rD,E,KAYJ,O,CACI,IAAIvxC,EAAQ,EAAAva,MACZ,GAAS,MAALua,E,CACA,EAAOA,EAAP,QAdA,MAAwBwxC,IAkB5B,GAjBc,MAANC,GACAC,EAAK,+DAeb1xC,EAbI,IAAA2xC,EAAmBF,GAcnB,wBAAc,KAAMzxC,G,CACpB,EAAOA,EAAP,gB,GAZR,OAAO,eATP,EASoByxC,IAAb,SAtBKG,G5W6BR,MAAM,E4W5BF,qD5W4BmCrpD,a,qD8WnC/C,YACIyf,QAAQ3V,IAASg/C,EAALhG,K,iIHDa,Y,ECAe,GAAO,G,EAErB,EAA4B,M,yKKsB5B,ECZ1B,E,wblRkYJ,wB,iB3FtDA,+B,EAAA,E,kD4W/UsC,M,orBvXsDtC,gC,qDAyLA,S,sCAAA,E,gDVzMA,qB,kOyRoBwB,oD,8F1Qg6CxB,+C,+MoX19CqD,O,mkBpX4sBrD,mCC9rBA,oC,oCgGiYA,qC,G3FvSA,2C,maN0qDA,wC,saM/xBA,oB,0aWj6BQ,iC,sBMgnDR,uC,kJ8VzqDA,eAMI,IpR6WuB,MAAhB,IoR9WP,EAAW,cAAU,GACd,EAAAlQ,UAAA,WAAY,G,CACf,MAAW0W,EAAc,EAAAh4B,GACpBi4B,GAALj4B,EAAeV,GAOf,IALA,OAAmC,GAApBU,EAAK,OAAOV,EAAZ,GAAD,GAAyB,EAAzB,EACd,GAAkC,IAApBU,EAAK,KAAyB,IAClB,IAApBA,EAAK,KAAyB,EACX,IAApBA,EAAK,GAEV,EAAcA,EAAK,OAAnB,GAA+Bk4B,EAA/B,I,CACI,MAAYC,IAAW,EAAI/2C,EAAJ,GAAgB,GlX8B/C,EkX7BQ,eAAYg3C,GAALtoC,IlXoGf,IAAK,IAAL,EAAc,EAAd,EkXjGWooC,ElXiGX,IAvEA,EkX1BsB,eAAOG,GAhBkB,OlX2CxC,E8FoUqC,W,iBjGm4C5B,M,IAAhB,EAAgB,cAAhB,WAAgB,a,EAAa,EqXlrDD,Q,+DH9EF,qF,2BAAkC,iBAAlC,uB,IAAA,uB,SAAA,E,yCACA,oF,EAAA,2B,wCAAmC,2BAAnC,a,yCAAmC,E,gCANvC,sG,EAAA,qDAR1B,yBAKI,EAAY,UAAwB,GACpC,iBAAa,EAEE,yBA4Bf,2B,6BAQ2C,2H,EAAA,4F,gCA2BvC,sBAAM,EACN,qBAAO,E,cAIf,oB,erQ2FoB,iB,sBAAA,M,qHyQnIsC,qB,sCCUlD,M,kCAG+C,iBAAW,I,2DArD9D,c,wCCHJ,G,8B5OaI,S,mBvIotCgB,M8WvtChB,E9WutCA,EAAgB,YAAhB,cAAgB,I8WttCT,I,oBAGP,IAAI,QAAJ,GAAiB,mB,mCAgB2C,a,wLMX5D,wB,ikBCnBJ,G,kECM0C,ahUmRU,SgUnRY,W,gLAY5D,Y,IAII,E,GAAA,oC,MAAkB,EAAM,uBAAsB,G,UAyBY,aAAT,aAAI,SAAAnsD,G,IAAY,sB,OAAhB,oB,MAKsB,aAAf,mBAAU,SAAAA,G,IAAY,4B,OAAtB,oB,8NThClC,W,yDAAQ,iG,gBAAN,E,OAAM,E,kRAC2B,G,uVAA1B,E,gGAAP,UAAO,wC,gIANb,c,MAAA,a,6OAYV,sB,2DAVJ,cAAQ,gCAAR,kB,yBACe,2D,IAAA,2B,wOAAqC,E,8BAI1C,6D,8UAIV,mBAAI,IACA,gB,6BAXR,e,uBAUI,kB,uTAGF,gBACE3B,KAAA,aAAAA,KAAA,qBAAkB,eAAlB,G,qRAKO,KAAP,Y,iNAgBmC,c,MAAA,a,WAAA,K,WAAA,kB,2BAyB3C,G,gVAvBQ,mD,8EACI,sB,GAAA,+K,wTAEc,kB,yBAAA,wB,uCACC,e,gBAAA,yB,IAAA,mB,kBAFX,6BAEW,e,0KACT,E,OAHF,e,yLvG0GmC,wB,uFuG5G3C,wC,8MAcI,gB,wBAfR,kB,yDAcI,gB,6UAdJ,wB,kPAqBU,IAAN,8C,6KA3BZ,K,WAKI,KA8BJ,G,qCAEA,6D,WAAA,qB,gQAG8D,iB,MAAA,mC,0DAH9D,sB,mCAAA,E,sBAAA,wBUnFA,+B,mBAKI,gBAAe,sBAAF,GAA0D,KAE3E,G,0CNPA,+C,4EAO2B,a,0BAAQ,2B,oIAI/B,O,kDAEwC,uB,6BAEN,Q,4DAMlC,Y,OAAsD,6BAAS,GAAQ,KAG9C,sBzQsJI,mCyQtJM,EzQsJN,eyQrJ7B,6CAQU,6E,gDAHE,yBACJ,UAAS,SACT,CAAC,cAAD,iBAOA,iCAA4B,G,6BAC5B,mCAAsC,iC,wCAH1C,oB,yGAQJ,WACI,W,OAAsD,KAAO,iBAEjE,O,2DAE+B,KAAS,iB,kFAGb,O,aAAA,YAE3B,iC,8CADA,oB,oBAAA,0B,0CACA,sB,kBAAA,wB,YAAA,yD,wHEjDJ,2BAIuD,c,MvYoCtC,E,WAAb,S,kE4Y6CJ,eAKI,a,CACA,MAAO,S,sCAOqC,GAC5C,+BAA2B,Y,IAE/B,EADI,EAAO,a,IJ1GuC,eAC9C,a,CACA,eACA,iC,UzXm+CO,sBAAM,GAAa,sCAuEb,W,OAAb,KAAa,kBACG,ayXxiDsD,UzXwiDxC,Y,mIyXviD9B,0B,8BzXsiDaA,KAAA,iC,gCACT,gBAAY,ayXviDwD,oB,gKAExE,gB,8IAEyC,aAAS,oBAAI,Y,qEAEG,aAAS,QAAgB,W,yLAUlF,sB,yGAI8D,M,uFAIf,2BAC3C,aAAuB,mB,yCAEW,yBAAiB,iB,sCAEzB,EAAwB,0B,kKALP,K,kHK5BnD,Y,4BAAA,W,iBCuCQ,K,cAIA,GAAM,K,6NAZd,e,OAAA,oBX7BI,c,MAAQ,G,kCAEZ,I,IAKI,GAAe,K,cYRf,O,WAAA,U,8BAyF+C,IAAhB,I,mBAG3B,EAAI,MAAgB,mC,EACpB,KAAI,qB,EAAA,K,EAAA,EAuCsE,W,gCAGrD,4BrYiO2D,GqYjOhF,EAAqB,OAAf,KrYoJsD,G,OqYpJjD,K,sBAKmB,Q,mBAG9B,EAAI,GAAgB,yB,EACpB,KAAI,gCAAJ,WAA4B,YAAO,E,sB1XjC/B,+B,GAAA,Q,kCAGD,E,qGgThC8C,aACtC,EACZ,mBAAU,QAAb,e,e2EpFJ,kB,OAAA,O,OAAA,U,QAAA,G,oCAMA,0B,4FCGQ,oB,UACA,kB,SFTA,aAGiC,wB,0DAEjC,0C,OAMI,8BAEuD,aAAzC,+B,IAA+C,I,cAA/C,E7X2Df,S6X3DuE,wB7X2DvE,2B,+G6XzEP,E,iBAAA,+DA8FQ,yBAAuB,UAAM,sBAA7B,KAAkD,W,OACtD,KAAO,iC,4CAGX,eAAwE,EAAxE,e,wFAKsE,OAAvB,EAAK,KAAL,qBAAuB,gB,+CAGlE,KAAK,yB,yIAKqB,qFAC9B,aAA4C,M,kBAC5C,KAAAssB,OAAA,MADA,gC,OAIA,uB,oKAAA,E,S5RnFwF,M,W4RuFrC,8C,iCAEA,sBAAW,W,0EAEN,oBAAW,Y,mBAEL,gB,qDAEd,KAAZ,U,EAAO,EAAK,UAqNxC,Q,+BAnNR,W,SAAyC,gBAmNrC,IAnNqC,kC,iBAMzC,G,8BAEsD,mB,gEAQlD,KAAO,iBAAc,IAGzB,0C,MAA+B,cAjCyB,oD,gDACpD,EAAI,E,cAAwD,WAAnC,0BAAmC,2B,G7X5CzD,a,yO6XiF0B,2CAAC,0B,yCAAA,E,OAEL,OAD7B,OACQ,mBAAqB,GAAzB,GAAmD,M,wEAIN,gCAAO3rB,EAAA,G,+DAII,mB,EAAA,KAFN,SAAAA,EAAA,G,gCAAA,M,qDAQsB,mB,EAAf,KAJ3B,WAAA2rB,G,0CAMlC,6C,IACI,MAEA,EADA,OAAW,0FAGf,IADS,eACT,a,gBAEiD,2B,GAAA,iBAG7C,aAAc,sB,kBACd,IAIqB,EAHzB,iEAGyB,O,IACjB,eACJ,a,CAAA,e,oCACJ,K,wBAGyB,4B,YACjB,6B,sDAER,E,cAHI,EAAa,I,2BAMW,a,C7XlGrB,M6XkGH,ShYykDY,gD,IgYvkDJ,uBACK,a,6ChYygBV,aAAS,e,kBA2FA,I,cAAA,EgY5lBI,OhY4lBJ,EAAAtsB,KAAA,qBgY5lBI,eAAAqB,GAAA,O,GhY4lBJ,mB,WAAM,YgY5lBc,S,iCAAhC,W,4DAGJ,Y,OAEA,K,yCAEA,cACmB,a,oFrYyQH,a,6CAAA,EqYzQG,E,GrY0Qf,KAAc,M,MACV,EAAgB,uE,UqY3QpB,EAAe,KAAAirB,OAAf,UAAe,Y,KACX,Q,qEAIkD,G,oBAGtD,E,oF1EhJiD,I9P/DQ,E,oG8PqEjE,sB,kBACO,aACA,aAAU,SAAb,W,OAFqD,KAE5B,S9PvEoC,oE8P2EjE,I,mD6ExD+D,cAIc,8D,6DAAd,4E,sDAAA,gB,uDjGkDvD,kB,iBlSqjDG,yB,4F6Pp6CW,E,yEACV,Y,oFuI1OZ,MAEI,I,IAEA,kBAGA,a,CAGI,I,EAAA,W,uEARJ,G,6GAEA,I,EAAA,E,sBAAA,a,CACI,e,2DpYssDY,c,OAAA,G,qCoY9rDe,EpY+rDxB,EADe,M,mDqYpsD+D,a,gBDWjF,EAAI,OAAiB,KAAqB,EAAc,MACpD,iB,eAAA,O,WpYmwDK,iB,aAAb,qBAAa,coY/vDqB,aAAoB,e,mBAApB,mB,OAG9B,a,oDAGJ,4B,CnS4WuB,GAAhB,E9FrUP,QHktDa,IADb,eACa,a,CAAb,IAAa,eAAAtsB,KAAA,kB,CAAM,GAAO,EGltD1B,S,WiY5BQ,G,OAX0B,G,wCAeW6W,GAAA,U,kBAEyB,E,wEpY6lDtE,E,EAAqC,U,QAAA,M,SACrB,EoY9lD6C,YpY8lD7C,YoY9lD6C,GAAAD,GpY8lD7D,OAAgB,E,iDACT,IAAP,W,+CoY/lD6D,oB,4DAOzD,G,0CAIsB,KAAAxM,M,kBAAA,0BAClB,YAAI,yBACA,eAAO,KAAP,K,8DAOsB,wBAAQ,M,8CAGtC,EACI,eAAI,U,MACOyM,E,mBAIf,E,wDAIA,EAAI,EAAQ,I,OAIZ,a,6CAMA,MACA,+B,QAMA,IAFA,IAAQ,WAER,a,CACa,IAAAD,EAAA,SAAb,IAAa,eAAAA,GACT,e,qDpYyiDR,YAAI,OoYjiDA,I,aAAA,apYkiDY,S,kBAAhB,KAAgB,gBoYliDG,0B,kBpYkiDmC,0B,WoYjiDlD,qB,oDvI8Hc,QACC,e,cAAX,c,uCAEU,6C,wBuIhIlB,O,2DAGI,W,OACA,uB,2CAG0C,wC,cAE9C,qB,kBAAsD,4CAEU,6B,IAAA,E,OAC5D,yBvIuHI,euIvHkB,avIuHtB,mBAAI,K,0HuIvHJ,oC,uBAAA,kC,+CAEA,W,IAAkC,E,iIAET5W,KAAA,aAEzB,mCACI,kDAAS,IAEb,G,2HAIgC,M,qEAEH,2C,yBAEO,aAAU,a,+EAO1C,K,6EAzBwD,a,0CA6BhE,I,YAIgB,8B,YACZ,kB,OACI,OAAO,OAAP,e,OAGJ,gCACA,aAA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AE5C,WACI,kC,0IAIR,uC,+CxY+uDgB,E,MwY5uDZ,G,IxY4uDY,IwY3uDZ,WxY2uDJ,EAAgB,W,KAAA,WwY1uDRgb,EAAA,OAAW,mBAAc,E,OAG7B,EAAO,G,+BAGX,Y,QACI,GAAAnE,GrYcY,GqYXR,EAAO,gBACH,EAAI,W,oCASZ,EAAO,U,qEAIC,E,8CAE4C,aAAT,e,gBAAA,E7YuLlB,EAAA5b,KAAA,W,gHKw5CQ,E,GAAA,S,oBACrB,GwY9kD+C,ExY8kD/D,Q,IAAsB,EwY9kDwD,axY8kD/B,a,KAAA,W,4BAC/C,GAAO,E,8BwY7kD2B,G,uFCrEoB,oB,WACtD,K,yDAQY,E,8CAEqC,aAAS,eAAc,SAAA4W,G,2GzYqoDnC,E,GAAA,S,oBACrB,GyYpoDiD,EzYooDjE,Q,IAAsB,EyYpoD0D,azYooDjC,a,KAAA,W,4BAC/C,GAAO,E,8ByYnoD2B,G,uCAGxB,IAAN,KAAM,iB,yCAIN,MAGJ,wC,MACI,MAG8C,8BAC9C,yBAQA,gC,OAA6B,KAAAo3C,iBAAA,W,oCAGzB,KAAAA,iBAAiB,O,uGAZyB,M,+CAgBlD,OAGS,0B,oBACD,EAAO,O,kBAKH,aACA,gB,0BtYKI,KsYOA,+BAAJ,Y,iBAKA,kB,aAIR,EAAO,eAAP,YxYyDyC,EAAM,K,oJiSxC/C,c,mBrCiJc,sB,WACC,M,4CAED,qB6IjPlB,a7IoPQ,iC,iD6IpPR,M,IAAA,sB,e7I+OQ,e,mC8IzOR,0C,kCAAA,S,4IDLyC,SAAAxjC,GAAA,iDAAAA,M,kEAEP,W,IAAA,E,kFAG9B,E,OACO,4CAAwB,6B,IAA/B,EAAO,E,GACX,K,+BAEA,qCACI,W,yL7ImOc,E,WACC,sB,iBAED,8B,c8IjPiB,qB,8CAMnC,gB,oQACA,sB,e9IwOQ,e,wF+I/OuB,+B,yJDc3B,wBAAa,iBAAsB,U,IAEnC,YACJ,K,kDAQI,a,oCALA,EAAI,OAAQ,KAAK,YAAb9S,KAAA,Q,OACA,YAGJ,GAEJ,G,wCAGI,wBAAW,gB,mM9IiNG,E,WACC,kB,eAED,8B,c+IjPY,qBAC9B,8B/ImPQ,gB+IlPR,gB,oBAEA,E,WAGI,M,0FANJ,2B,kLACA,oE,sCCOI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rB,G,kGF8H+E,mB,mFAAD,iB,SAAA,EAdlF,iB,uBAqCmC,mC,gJASE,uB,8aAoBuB,GAAM,aAAU,4B,+LG9JxE,Q,MAAA,sB,uKAAA,iC,kPA6BoB,Y,oDAGe,Q,kBAAA,qB,iCCtDnC,E,4DACA,4C,uIARJ,YAOI,G,qFCAJ,Slf0HuD,Ekf9FJ,iB,uHAfnD,SAeI,Elf8FmD,iB,kQmf/E3C,eAEmB,mB,sBAAA,sE,wCAeD,2B,OAAA,sB,sJAUK,InfvD/B,EmfuDI,EAAuC,UAAvC,QAA2B,O,InftD3B,eACA,EAAM,W,sImfkE8B,e,MAAC,0B,iEAHzC,K,WA8BJ,kG,kCAfW,O,kBhZxEiF,E,4D2YbtD,c,OACf,EACf,S,eKmFG,G,oBAqBG,IpfgrBY,IAAwB,Q,gCofjrB9C,uBAGA,K1fyFwD,K0fzFpD,8B,iDLtHoD,mCCH5D,+B,4DAMI,oC,qBACA,c,IAAA,qC,kKKwCA,4BL/CJ,+B,IAAA,0Q,kCAgCA,eAG+D,WAAK,QAAI,YAAT,mBKuBU,oBACjE,mB,sBPwDyB,c,MAA0B,E,gEAA1B,E,2CAA0B,a,2CAZ3D,wBAYiC,W,sBAAA,wC,qEAZjC,a,0BAYiC,mD,6CAZjC,a,mCAAA,M,OAAA,yB,GAAA,6BA4BkF,gC,OAAA,sK,wLAAC,c,oUAGnF,c,IAAA,8CQ3IA,uE,OR2IA,kB,IAMoE,EAAQ,E,8CQhJhB,uB,yBRgJQ,mHAEpE,qF,kDAAA,sCQnJA,iC,OAAA,kB,IAAA,ERyJkE,EANlE,S,iNAaI,yBAA+B,oBAA/B,gC,iCAAA,c,4DAUA,sB,0BACA,W,gEAAA,2B,4EAQuC,E,gDAKvC,c,+DAIsD,KGvLP,c,MAC/C,a,WAkBA,K,gBAZA,iE,+TAII,EAAI,c,OACA,+BAAkB,G,sCAEe,8C,wEACrC,mCACO,qB,wLACX,4CAVA,kE,+CAYA,W,4JAG2B,4DAC3B,EAD2B,IAG3B,W,gHAFA,E,wIAEA,E,IAAA,W,wIAAA,oC,mFAAA,yB,0HAAA,gEAAAC,K,iEAAA,uB,wKAE4B,E,IAI5B,W,OAHA,0BAMA,gEAEA,EAFA,IAIA,W,OAEA,8BAIA,yBAAkD,UAAO,eAAP,eAElD,EAFkD,e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AAa,4BAAW,K,iICtGxB,mBAAc,uB,uB9amDH,kCAAU,sBAAsB,EAAtB,2BA5DA,E,gH+asCT,mB,oLDtDoC,QAAD,QAAC,kB,cAA7B,wBAA4B,Y,qIAY/C,iCAEJ,SAFI,WAQA,IAOJ,O,iD9a6DA,E,IAjFA,W,OAwFe,sBAAgC,qC,kBA/EpC,O,qI+abP,a,WAEA,K,WACA,K,wCAGsB,a/asFtB,YAAW,G,4C9EgsBK,OAAAA,K6frxBS,S,K7fqxBT,EAAM,GAANA,KAAA,sB,wDAAoB,iB6frxBuB,mB7fqxBb,O6frxB1C,a7fi9BG,EiG7lBgB,S,KjGm4CP,EAAhB,MAAgBA,KAAA,Y,KAAA,EGxsDhB,G0f3CY,K1f2CZ,kB,iC0f3CmC,M1f2CnC,yF,CHwsDgBA,K,UAAA,SGxsDhB,O,KHwsDgB,E6f/uDc,IAAC,EAAD,MAAC,uBAAD,gC1fuC9B,G0fvCwC,a7f+uDX,E6f9uDjB,K1fsCZ,S0ftCgB,8G1fsChB,gB0ftC4B,E5fmDxB,O4fjDc,E5fkDd,S,KACA,E4fjDQ,qB,Q1fkCZ,M,eAAA,IwD6MgD,8C,YkctO5C,iBAIJ,M,mCAAA,EAKI,mCAiBA,iBAKmC,IAoBvC,G,iBAAA,a,WAEI,K,4JAG0B,MAAM,G,0CADhC,0C1f9BJ,8C0f+BoC,4B,gBAagC,SAb5D,O,KAa4D,yB,KAAA,4E,8SACxD,eAEA,IAAI,8C,YAAJ,iB,mGAUA,2C,MAAA,iD,EAAA,EApE8B,kB,IAAA,EAAkB,qB,OACpD,EAAqB,E5fyBzB,EAAM,kB4f0CE,qC,sDALA,qB,sOASI,2B,6CAIJ,iD,kJALyD,gE,wCAuCzE,wBAcI,a,wDCjLJ,+B,EA4BI,kCAxBA,4BACA,yB,+LDqHQ,G,qCAd4D,kE,YAAA,iB,iLAgBC,oF,MAAA,E,4CAAA,gB,MAAA,E,8GACzD,qF,gCAAA,gB,mDAEqB,aAAL,sB,eAAK,E,sBAAA,6B,gBACP,iC,wDAHd,E,kOAlBR,4BACoC,iC,iMAlBxC,yB,KAAA,EA6CI,G,6BADJ,0JACI,gBAAc,EACd,OAAO,E,gBAI2B,qB,cAClC,KAAY,QAAL,E,kEAIiD,a,MACxD,2BAAgB,Q,yMAlI6C,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CA,gCAAyC,EAEnC,e,YElLV,mBAE6C,uB,oWCQzC,yB,iCH+IJ,qB,WAKI,MA6BI,yC,gBACJ,I,2GApBJ,iC,MAII,uB,sCACA,c,MAAA,E,WACA,kB,2GE3KA,c,2SCaA,Q,0KCCgD,2BAAQ,gBAAK,qB,4DDH7D,wE,+IC0BY,S,2HCoCZ,oCAAuC,6C,iKJjBZ,c,0CAF0B,MAE1B,OAAvB,iB,wDAAuB,G,MAAA,K,gBAAA,O,4EAEJ,8B,2BAAA,qL,UAAA,G,mDxB6FuC,E,+BwB3FlD,K,IxB2F+D,iC,+BQxJnB,M,UAAA,OAGxD,gBAHwD,S,sGRwJW,e,WAAA,+D,qCAAA,8B,GAAA,e,KAAA,e,+GAAL,SAAK,aAAL,Q,kHwBzFzC,IAAT,G,iFARyC,IAE1B,WAAvB,gD,qCADA,0B,gSIUR,M,IAAA,oD,kDJjBI,4EhBlDJ,mDoB2E2C,qB,yC5B8EuB,M,sDwB/F1D,Y,iDIgCD,gB,+LCUH,IAIuC,cAAC,oB,EAAA,K,yCAX5C,mCAMI,4D,cACA,4B,eACA,uB,0DAAA,uB,UvQCA,e,wDwQ4C2C,G,0EA3IZ,eAAgC,UAAuB,IAAvB,IAA/B,G,GAAiB,6EAAc,+B,gBAPnE,QAOoC,+B,iDAPpC,aAOqD,2B,2BHoJjD,oBAxGA,EAwGA,WAnGA,mBAmGA,WA9FA,M,4FA4LA,yFACA,+CACA,eAAe,EAAf,OACA,4CAA+B,UAA/B,kCAEI,YAAJ,YtgBxLA,EsgByLI,UAAW,qB,OtgBzLf,yBsgB2LI,ItgB3LJ,UsgB4LI,G,IAGR,MAFQ,EAAM,W,GAaqB,OAAC,U,8DATpC,aAKI,qE,gFACA,cAAe,wCACf,+C,IACA,MACA,EADA,S,StgBxMO,E,mCsgB4MX,uB,eAOA,GAGI,EAAO,wD,wGIzRP,M,OADA,kBAAkC,4BCHtC,wF,IAAA,0M,yTAKI,oG,CACgC,gBAA7B,cAAc,wB,6DRkDoC,O,SAE1B,4B,SAAA,uB,kBAEJ,0D,qBAAA,8C,gGQpD3B,uF,IAAA,+L,+PAKiC,G,iBAPG,MAA7B,E3gBiEI,G,UmgBdH,UADiD,qBACzB,yC,GAAxB,U,qJACuB,sD,MAAA,yC,cAAA,E,cAEJ,4B,oNxB6FuC,M,0dgCpI9D,+B,yDAfgC,Q,qBRmD5B,G,iBAAA,W,cACA,MAAuB,8D,OAAA,sBAAA0xD,QAAA,4H,6DAEJ,kB,qCAAA,O,oFxB6FoD,G,6NgC5H/E,oF,IAAA,8L,2WAMI,oG,CAEqB,gBAArB,sC,M3gBiCA,kB2gBhCI,uB,mERoBA,uB,gCAAuB,kB,+IAEJ,8C,2FhB3DiC,uBAGxD,2BAAmB,a,oHRqJgD,S,EAAL,2BAAK,a,gDwBzF9C,UAAT,O,iEQ5BT,0B,0BAOP,sC,yCAAA,kF,gFAAA,sD,wJAKI,GA1CgC,gBAA7B,gBA2CY,EA3CZ,wB,wGRmDC,M,2NhBvDJ,+B,6CADwD,Y,EAAA,W,qGRwJW,sB,EAAL,iBAAAnxD,KAAK,S,2BwBzF9C,SAAT,EAAS,c,0BQfrB,IAAO,G,wEAGX,kF,gFAAA,qG,IAAA,M,oQA9CoC,M,ORmD5B,8C,6FxBgG0D,uB,+IQxJN,W,aAAA,iBAGxD,uB,EAHwD,2B,qGRwJW,4B,YAAL,QAAK,G,KwBzF9C,EAAT,G,wEQNZ,GAAO,UACX,E,mJAEA,qG,IAAA,iB,qGAAA,4C,qHAvDoC,kBAA7B,4BRsDoB,wF,MAAf,uBAAe,mC,8FxB6FuC,EwB3FlD,U,ExB2F+D,W,uDQxJnB,2BACxD,iB,0BADwD,iBAGxD,KAAAoxD,S,oFRqJmE,KAAL,U,iEwBzFzC,EAAT,Q,qJQIhB,E,uGAEA,iB,SAAA,4B,+QRZ+B,sF,MAF0B,uBAE1B,mD,mCAEJ,yC,EAAf,EAAe,U,exB6FuC,E,SAAA,KwB3FlD,Y,yBxB2F+D,iB,gJQxJnB,I,EAAA,MAGxD,K,qFRqJmE,UAAL,0BAAK,sB,oNgC1EvE,E,kBAAA,E,mCAAA,uB,+ORtBQ,qF,MADiD,uBACzB,wCADyB,W,EAEjD,+B,EAAuB,yC,EAF0B,Y,eAI9B,S,EAAf,KAAe,mC,gDxB6FuC,U,cAAA,EwB3FlD,QxB2FkD,O,yEQxJN,I,2BAAA,oE,kKRwJM,8BAAK,wB,yDgCpEnE,E,kBAGJ,4B,SAAA,uB,eAAA,6D,sShCiEuE,qC,EAAL,uBAAK,mD,wIgC3DnE,EAAO,W,qDAGX,uG,cAAA,S,OAAA,2C,sJAKI,qBAAiB,IAhGe,S,WRmD5B,I,kBADiD,K,IACjD,E,+EACA,gDAAuB,oG,CAAA,sD,MAAA,yC,cAEJ,O,uFxB6FuC,c,4CAAA,qBwB3FlD,IxB2FkD,EwB3FlD,qE,mEQoDZ,qF,MACA,uB,EAAA,c,EACA,qC,EAAA,uB,qDACA,E,+BAAY,4C,EACZ,2B,gBAAA,Y,EAzG6B,W,EA2G7B,E3gBlDA,O,EAAA,K2gBmDA,YAAS,uB,E3gBnDT,U2gBoDA,kC,E3gBpDA,sB,E2gBhEgC,KAA7B,0B,iERmDC,I,oHAGmB,I,eAAA,M,MAAA,iC,0HxB6FuC,IwB3FlD,MxB2F+D,gD,qGQxJnB,8BACxD,wB,6ERuJmE,4B,+QgCpBnE,oF,MAAA,uB,EACA,c,EAAA,yBAAe,Y,EACf,kD,2DACA,iB,6BAAA,U,iCACA,Y,EAAA,W,EACA,S,EAAA,iBAAuC,U,eA7HV,iBAArB,2B,EA+HR,U3gBtEA,O2gBsEA,K,E3gBtEA,E2gBuEA,eAAS,c,2ERpFL,aADiD,I,0CAEjD,I,4EAEmB,I,cAAA,gB,OAAA,E,iBAAA,W,yFAAA,M,qJxB6FoD,sD,0HAAR,e,eAAA,G,0DAAL,yBAAK,kBAAL,qD,yMgCA9D,qC,EAAA,uB,qDACA,E,+BAAe,iB,6BACf,iB,0BAAA,Y,EACA,W,EAAA,S,EACA,2B,eAAA,iBAAY,2B,EACZ,sB,EAAA,iBAAuC,K,0E3gBxFvC,Q,E2gBhEgC,a,4BRmD5B,I,cAAA,I,0BACA,qBAAuB,I,eAAA,M,MAAA,mC,sBAEJ,E,QAAA,K,cAAA,E,gSxB6FuC,E,qEQxJN,4B,kDRwJW,0J,4VgCoBnE,iB,6BAAA,UAAiB,O,0BACjB,Y,EAAA,W,EACA,S,EAAA,iB,yBACA,2B,mBAAA,sB,EACA,sB,0EAGA,Q,E3gB9GA,iB,wB2gBhEgC,I,kCRkDqB,I,MACjD,qB,mBACA,M,IAAuB,I,cAAA,kB,OAAA,E,iBAAA,W,KAEJ,K,UAAA,8D,OAAA,sBAAAD,QAAA,wB,wNxB6FuC,E,cQxJN,MACxD,gBAAmB,EAAnB,I,SADwD,QAGxD,e,4ERqJmE,qB,yTgCiCvE,kD,kKAOI,W,EAAA,S,EACA,2B,eAAA,iBAAe,U,mBACf,sB,EAAA,iB,+EAGA,Q,eAzL6B,I,wB3gByD7B,I,cAAA,I,+CmgBbI,Q,WAAA,M,uCACA,S,aAAuB,E,QAAA,K,cAAA,E,qEAEJ,U,cAAA,EAAAA,QAAA,4H,CAAA,gBAAAE,cAAA,wB,6ExB6FoD,4B,+CQxJnB,6D,qHRwJW,8C,yUgCqDvE,2B,gGAOI,4C,EAAA,sB,EACA,sB,0EAEA,I,MACA,iB,wBACA,I,cAEA,I,gB3gBtJA,I,MAAA,qB2gBhEgC,Q,qBRmD5B,SADiD,WACzB,kBAAxB,S,WACA,I,kBAAuB,K,UAAA,8D,OAAA,sBAAAF,QAAA,wB,mHAEJ,EAAAE,cAAA,wB,MAAA,yC,mExB6FuC,MwB3FlD,IxB2FkD,GAAArxD,EAAA,Q,kBQxJN,gCACxD,0B,mKwBgOJ,mF,IAAA,mM,2ZAOI,I,MACA,G,EAEA,e,MAAA,M,IACA,O,YAAA,kBAAY,cACZ,S,EAAA,S,W3gBxKA,I,E2gB0KA,I3gB1KA,E2gB0KA,K,K3gB1KA,e2gBhEG,4B3gBiEI,E2gBjEJ,gC,6DRmDC,oG,CAAA,sD,6DACuB,O,sDAEJ,O,uBAAA,G,+KxB6FuC,kB,4BAAK,oF,MAAL,c,mLgCsF3D,4E,yFAOP,cAGoG,IAArB,SAA2B,E3gBnLtG,E2gBmLsG,OAA3B,0C,8CAE/E,yD,cAAA,S,OAAA,sB,WAAA,a,yJAQI,8D,GAAA,MAAuC,I,qJA9I3B,sD,MAxGiB,kBAArB,uB,c3gByDR,E2gBoDA,K,8CRlEqD,QACzB,e,kBACxB,0DAAuB,gG,4JhBzD6B,c,oFAGxD,+B,EAHwD,uB,mKRwJW,yC,EAAL,Y,ewBzFzC,EAAT,O,wFQoMT,wB,+CAKP,S,OAAA,sB,IAAA,qC,uBAAA,Y,+NAQI,oG,6DACG,E,qDArQ0B,O,SAuQ7B,E3gB9MA,0B,+CmgBdqD,GACjD,0D,wGACA,M,OAAuB,8CxB+FmC,EwB3FlD,sExB2FkD,c,MAAa,c,qHQxJnB,uB,yCAAA,uBAGxD,2BAAmB,a,aAHqC,K,+GRwJW,S,EAAL,2BAAK,a,gDwBzF9C,UAAT,O,2DQkNT,E,iCAKP,qC,IAAA,kE,gWAQI,yC,cACG,E,c3gB1NH,E2gB2FA,IAAS,IAAT,kB,SAgII,E3gB3NJ,M2gB2NI,O3gB3NJ,Q,4EmgBbI,gG,QAAA,M,OACA,8CAEI,EAAe,uEAAf,c,sBxB6FsD,uB,4FAAa,uB,qHQxJnB,KACxD,uC,6CADwD,Y,EAAA,W,qGRwJW,sB,EAAL,iBAAAA,KAAK,S,qBwBzF9C,E,iCQqOzB,OALO,Q,KAKP,iB,IAAA,4F,8XAQI,O,SA5HA,EAAY,0B,S3gB3GZ,Q2gB8GA,EAJe,G3gB1Gf,U,e2gByOI,GACJ,gB3gB1OA,gB2gB0OA,0BA1SgC,qBAA7B,I3gBiEI,kB2gBjEJ,qD,qBRmDC,kB,4BADiD,uEAE1B,c,sBAEJ,+D,mBAAA,+B,2BxB6FuC,U,6BAAA,uB,4JQxJN,W,aAAA,iBAGxD,uB,EAHwD,2B,+FRwJW,E,iCgCqJhE,OR9OkB,Q,sBQmPzB,uB,YAAA,2D,IAAA,mB,GAAA,O,6WASO,E,mCAlFH,EAAe,qB,eAMf,G3gB1KA,c2gB2KA,kBAAS,0B3gB3KT,qB2gB4KA,2E,QA4EA,M,qDRtQqD,oF,MAEjD,c,EAAuB,0D,wBAAA,+B,2BAEJ,qC,EAAf,uBAAe,mC,2GxB6FuC,EwB3FlD,U,ExB2F+D,W,uDQxJnB,2BACxD,iB,0BADwD,iBAGxD,KAAAoxD,S,+DRqJmE,QAAL,K,qBgCmK3D,Q,wDAKP,yB,IAAA,mB,GAAA,4F,6TAQI,QAAuC,EAAvC,a,eAvIA,GAGA,cAAY,4CAxLiB,qBAArB,2E,Q3gByDR,M,O2gBsQA,kB3gBtQA,4B,0G2emFmE,gF,EAAL,EAAK,6B,2BwBzF9C,UAAT,O,8IQ0QT,2C,2BAKP,4J,cAAA,S,OAAA,sB,4FAAA,gB,+BAQI,I,kBAAA,KACG,U,iEAlIH,IAAe,EAAf,IAGY,gDA5MiB,qBAArB,8CAAqB,iC,C3gByD7B,c2gBuJA,gBAAS,wB,M3gBvJT,E2gBwJA,gB,qCAxNgC,EAA7B,K,uFRoDwB,0J,qBAEJ,8ChB3DiC,qF,MAAA,c,8IRwJW,qC,EAAL,uBAAK,mD,gDwBzF9C,E,kEQwRlB,W,wFJnVoC,wBAAC,+CAcD,SAAC,6BAcA,IAcD,OAdA,QAAC,KAcA,E,eAcD,YAAC,WAdA,YAcA,S,wBAcD,SAAC,a,GAcD,IAAC,I,EAAD,aA5F3C,GA4F4C,E,KA5F5C,0J,gFAAA,qG,2EAAA,K,sFAQI,gG,QACG,M,OI+GH,kBAAY,4BAGZ,EAPiB,oEAOjB,c,I3gBlDA,I2gBmDA,Y3gBnDA,E2gBoDA,uB3gBpDA,yDugB/DS,iCACT,EvgB8DA,UugB9DA,aIFgC,YAA7B,2B,0HRmDC,6BAAAE,c,EADiD,Y,EAEjD,W,EAAuB,S,EAF0B,iBAE1B,uB,gDAEJ,sB,EAAf,EAAe,6B,qBxB6FuC,E,uDQxJN,e,mERwJW,SAAL,W,iBwBzFzC,IAAT,EAAS,K,UI1DlB,U,2EAKP,oJ,CAAA,qG,IAAA,iB,sQASO,kB,4BIkHY,sF,IAGf,IAAY,YA5HiB,yBAArB,2BAAqB,8BA+H7B,IAJe,6B3gBlEf,O2gBuEA,YAAS,M3gBvET,Y2gBwEA,e3gBxEA,YugBjDS,EvgBiDT,uBugBjDS,mDACT,8CIhBgC,EAA7B,iB3gBiEI,wB,2BmgBdH,W,EADiD,iBACzB,uB,EACxB,4C,EAAuB,sB,EAF0B,iBAE1B,c,qBAEJ,E,wCxB6FuC,a,EQxJN,e,gBAAA,O,YAGxD,OAHwD,2B,+BRwJM,I,EAAK,W,UwBzF9C,IAAT,EAAS,I,2EI5ClB,gD,qGAKP,qG,IAAA,iB,oTAQ2C,wF,IACpC,kGIwHH,iCAGA,IAAY,qBAhJiB,mBAArB,oBAmJR,E3gB1FA,uB2gBsFe,2BAIf,wB3gB1FA,E2gB2FS,iBAAW,Q3gB3FpB,qB2gB4FA,K3gB5FA,oCugBnCS,EvgBmCT,YugBlCA,EvgBkCA,EugBlCA,SI9BgC,IAA7B,O,wFRmDC,wB,EADiD,iBACzB,c,qBACD,E,wCAEJ,QAAf,K,ExB6FmE,e,uBAAb,Y,OQxJN,qBACxD,Q,WADwD,S,sCRwJW,UAAL,yBAAK,qC,awBzF9C,cAAT,kC,qGI9BT,sD,mDAKP,iB,SAAA,4B,SAAA,uB,wUAAA,gBAQI,kF,iCACG,gEIkJH,EAAe,uBAAf,mDAGA,EAAY,EAAZ,0CAxL6B,EAArB,2BAAqB,cA2L7B,E3gBlIA,E2gB2HiB,U3gB3HjB,E2gBmIA,W3gBnIA,I2gBoIA,OJzJS,EvgBqBT,UugBrBS,8BACT,EvgBoBA,UugBpBA,kCI5CgC,YAA7B,Y,sDRmDC,E,wCACuB,QAF0B,K,iCxBiGS,OwB7FtD,YxB6FsD,E,KAAa,0B,+BQxJnB,I,kBAAA,K,qFRwJW,gDAAL,yBAAK,4CAAL,+B,CwBzFzC,cAAT,wC,mDIhBT,M,oBAKP,4B,SAAA,uB,eAAA,G,6NpBrDA,uF,IoB6D2C,gBAAC,kF,iCAR5C,yBAQI,uC,EAAuC,uB,mDACpC,yFI4KH,EAAe,YAGf,EAAY,WAhOiB,WAmO7B,OAPiB,KAOjB,8B3gB1KA,E2gB2KA,iBAAS,2B3gB3KT,O2gB4KA,iBJnLS,EvgBOT,KugBPK,KAAI,qB,qBIzDuB,E,wCRmD5B,QADiD,K,uBAI9B,M,IAAf,OAJ6C,YAI9B,O,4BxB6FuC,iBwB3FlD,G,iChB7D4C,K,UAAA,uBAGxD,WAAmB,EAHqC,0B,GAAA,U,qJRwJW,sD,MAAL,kBAAK,uB,QwBzF9C,E,oBIGzB,4B,SAAA,uB,eAAA,kF,8IIsJgB,kEA5MiB,EA4MjB,e,O3gBnJZ,yDugBOS,wBvgBPT,eugBQA,EvgBRA,e,qCmgBbI,8B,wDACA,kB,yFISR,W,OAAA,gCI2IA,iF,OAtMA,8B,oBJ2DA,a,WAQI,K,WAAA,K,uHI9D6B,c,K3gByD7B,wB2gBuJS,G3gBvJT,gB2gBwJA7xD,KAAA,4BJjJS,avgBPT,EugBQA,S,KIxEgC,E,+CRmD5B,S,GACA,uCAAuB,eAF0B,iBAE1B,qD,kBAEJ,SAAf,S,UxB6FsD,a,EAAA,cwB3FlD,GxB2FkD,iDAAa,kB,2CQxJnB,iBAGxD,4BAHwD,kB,4BRwJW,gD,wBwBzF9C,aAAT,E,kGSjDZ,E,oCL6DG,S,gBAKP,wE,KAAA,mF,iOASO,8B,6DIoFH,gBAAe,E,OAGf,E,iB3gB3GA,sB2gB+GA,G3gB/GA,mB2gBgHA,KJ3FS,avgBrBT,G,sEmgBbI,mB,IADiD,WACzB,G,QAAxB,iC,GACA,wBAAuB,gB,iBAAA,yB,GAAA,oB,8EAEJ,iB,4NhB3DiC,a,kERwJW,kBwBzFvD,cAAS,+D,+DIiBzB,iE,wCAAA,yB,+CAAA,qB,KAAA,uC,CIqFA,oHA9JA,SARA,SRkDI,wB,KAAA,EhBlDJ,O,KAAA,EoByF2C,eAAC,S,OAR5C,mC,CAQI,yBACG,MI7E0B,GAiK7B,aAAe,EAGf,cAAY,8BApKiB,gBAArB,E3gByDR,kB,KAAA,EugBqBS,kBAAJ,SAAI,eAAJ,qBACL,KvgBtBA,mB,E2gBhEgC,sBAA7B,E,iFRmDC,iHADiD,wCACzBA,KAAA,oBACxB,sCAAuB,wBAF0B,uB,eAI9B,S,KAAf,E,uBxB6FsD,a,gBAAa,E,0CQxJnB,iBACxD,mE,yBADwD,E,sERwJW,E,MAAL,iB,OwBzFzC,aAAT,E,iBI0BT,O,QAKP,M,eAAA,kD,6BKnFI,MAFwB,mCAExB,EAC+C,kBAAhB,iBAA/B,qB,uGAqFoB,uB,qEAAA,kD,0BAAA,iB,+GAER,2BAAK,c,6BACK,S,EAAA,iBpQsD6B,uB,EoQtD7B,4C,EAAA,sB,sIAGF,W,uBAAA,E,4BATZ,iB,6LAYQ,yEAAR,kBAAmB,wBAAX,iC,CAAA,sD,MAAA,E,0GACV,uB,eAdF,G,4sBAwCJ,W,uSAKJ,GAXA,0E,kCAWA,E,KJjI2C,K,IAAC,mB,GA0BD,OAAC,U,8DAaD,aAAC,c,uIAiBA,c,2FAqBA,MAiBD,E,kBAzG3C,4B,SAAA,uB,eAAA,6J,mEAAA,+G,IAAA,sJGSA,iCARA,8CRkDI,2HhBlDJ,sEqBU2C,iC,cAAC,S,OAFxC,mCACA,K,MAAA,IAAyB,EACzB,iCAAuC,SGGV,K,M3gByD7B,EwgBzDI,EADJ,a,GxgB0DA,IwgBxDI,G,UxgBwDJ,qBwgBtDa,OAAW,MAAX,4BxgBsDb,KwgBrDI,EAAO,M,gDAGX,qB,6LLoCqD,EAE1B,E,EAAvB,O,SAEI,EAAe,0B,4GhB3DiC,uBACxD,oBAAmB,wBAAnB,MADwD,uB,QAAA,M,qDqBoCrD,+G,kfAdP,c,gGAAA,4B,IAxBA,MAwBA,a,GAxBA,OGSA,UARA,8DRkDI,iK,CAAA,sDhBlDJ,+C,IqBoC2C,M,EAAC,S,SADxC,4B,SACA,uB,eAC8B,GxgBiC9B,cwgBzDI,EAAS,0CxgByDb,qBwgBxDQ,EAAW,4CAAX,6B,QxgBwDR,M,OwgBhCA,ExgBgCA,gB,qSwgB5BJ,4E,EAAA,+C,yGAAA,W,qDAAA,uG,cGlCA,S,OR0CI,wFhBlDJ,mBqBiD2C,QAAC,Y,QAP5C,0BAOI,QAAuC,WGpCV,Q3gByD7BqtB,EAAA,G,IAAA,EwgBlBA,MACA,GG/CgC,SAA7B,Y3gBiEI,I,wCmgBdH,0BADiD,aACzB,I,IACD,S,EAF0B,G,MAI9B,I,gBAAf,O,UxB6FsD,qB,4CAAA,IwB3FlD,ExB2FkD,IAAa,gD,qGQxJnB,8BACxD,wB,qNqBsDJ,gG,QAAA,M,OAAA,kB,4BAAA,+G,IAUI,wC,EAAA,EAAuC,YGrDV,mBAArB,oB3gByDR,EwgBnBS,+BxgBmBT,EwgBlBA,uBAAO,2BxgBkBP,wBwgBFA,0DACA,8CG/DgC,EAA7B,iB3gBiEI,wB,2BmgBdH,W,EADiD,iBACzB,uB,EACxB,4C,EAAuB,sB,EAF0B,iBAE1B,c,qBAEJ,E,0CxB6FuC,uBAAa,Q,2DQxJnB,Q,+BRwJW,MAAL,qBAAK,K,oBwBzFvD,EAAS,E,cKGlB,M,iCAKP,+N,CAAA,qG,IAAA,iB,oTA8BI,sB,yBACA,W,OAAA,uBACA,sBAAuC,+CG3FV,EH2FU,IxgBlCvC,W,OAAA,8F2gBhEgC,E3gBgEhC,e,gCmgBdqD,yBACzB,mCACxB,EADwB,e,OADyB,0BAI9B,gEAAf,EAAe,e,OxB6FuC,8BAAa,kF,sCQxJnB,yBAGxD,mCAHwD,EAGxD,e,iCRqJmE,4DAAL,EAAK,e,OwBzF9C,0B,oBKyClB,E,mFC4BP,sBAa6C,aAb7C,sB,iCAa6C,e,WAAE,Q,mKAlJ/C,I,0BAAA,OAOoC,OAPpC,I,OAAA,G,eAAA,U,QAqBkD,MAAC,Q,yFxQ4F/B,QwQxFwC,K,mDAAG,2BAlBV,oBAAc,EAAd,WAPrD,uBAOqD,iBAeS,sB,+CAG1B,yCAA4B,G,iBAI5B,E,WAAA,S,WAAE,I,uCAAgB,kBAAgB,GApBtE,iBAII,kBlhBkEoD,ENsmapCrtB,KAAA,S,oCanja6B,cAAM,E,6D2gBrFnD,sB,eAGJ,2BAI4B,iBAAd,E,wDAiFd,gB,mBAuB0D,kB,iDAUtD,qC,EAOA,aACA,2BACA,iBAAmB,iB,8DI3JnB,wC,sEC0CJ,E,gJXZI,kF,EAAA,kD,sDAMqD,W,mHAsB7C,2B,6PM1CqC,E,WAAC,sB,iBArB9C,c,MAAiB,E,WAAM,wB,WAAO,I,0CACS,mBAE/B,wB,kBAFJ,eAK0B,yBAAgB,c,WACtC,Q,IAFa,E,iDAGb,sB,iBACI,sCAAmB,EAAY,SAAnB,KAAkC,cAAW,gBAAAmE,SAAA,e,KAG7D,aAPa,SAOb,W,MACI,E,SAGJ,IAFa,kBAAW,sBAExB,EAXa,SAWb,e,GAGoB,oBAAO,Y,OAEd,oBAAwB,iBAAxB,GAAwB,OAAI,eAAY,QAAhB,0G1gBjCqB,c0gBiD7B,8BAKhB,KALgB,WAMrC,K,wCAEA,4B,4CAKI,qB,KAAA,E,Gjc1BJnE,KAAK,U,+DicgCyC,kB,KAC1C,EAM0C,GAN1C,oBAAS,cjcjCbA,KAAK,iBAAI,E,8CicoCT,0BAG8C,yBAAmB,EAC7D,S,KAAA,EjcxCJA,KAAK,iBAAI,E,sCic8CwC,yC,KAC7C,cAAS,a,Kjc/Cb,E,cicqDqD,mB,IAAA,aAAmB,EACpE,S,KAAA,EAMgC,Gjc5DpCA,KAAK,iBAAI,E,6BicyDT,qDAGoC,yBAAmB,EAAe,S,KAAA,EAClE,iD,Kjc7DJ,E,+BicmEsD,yBAAmB,8C,YjcnEpE,IAALA,KAAK,Q,2CicgFwC,aAAmB,sB3gBWnB,iBAAM,I2gBFnD,G,uDAEA,K,YAA0C,E,oBAG9C,4DpSnCkB,K,wCoSgD2B,a,kEpS9C7C,c,UoS8C6D,epSxCzD,+BAAa,KAAb,M,yBACW,E,mEoSuCgC,S,2FAPxB,IAAnB,a,MACA,sB,aAAA,EAOJ,K,oFAWA,mCAZI,cAAO,8BMjJP,KNiJO,WMjJC,K,wCACR,yB,GACe,a,+BAOf,qB,KAAQ,E,UAEJ,GADJ,oBACI,KAAW,EAAX,K,0CAOJ,e,CAAa,GAAb,K,UAAA,c,yBAAa,gBAAQ,EAArB,S,SAEJ,GAFI,e,6CAEJ,kBAMI,kB,KAEA,EACA,MADA,oB,cACA,sB,EACA,iC,SAEA,E,+DAc2B,MAAvB,qBAAY,GAAW,Q,eAK3B,GAQA,G,eALJ,wCAKI,oC,KAAa,EAAb,c,8DAAA,mB,IAAA,e,gCAEJ,S,KAII,E,8BCjEJ,E,+BAOQ,mB,IlhB0HyC,KAAM,U,gEkhBxH/C,a,2BlhBwHyC,S,uHkhBrHjD,GAKyC,O,clhBgHQ,KAAM,U,2DkhBlGvD,oBlhBkGiD,MkhBhGjD,mClhBgGuD,EkhBnFvD,mClhBmFiD,iBAAM,I+gB9HnD,4B,sBAGA,SAAkD,KAAa,IAA/D,G,OAEA,EAEA,EAIA,kBAEA,yFAAwC,c,IAGxC,c,0DAhBA,E,OAAA,0C,+IAGA,gB,IAAA,I,gEAEA,c,qCAAA,8C,sHAEA,E,EAAA,S,SAEA,E,mFAEA,c,4CAAA,gG,wHIZJ,K,oEAuCsC,aAAgB,SAAQ,W,wHAMjB,SAAQ,S,OAOrD,MALA,kC,4BAaI,E,2IAOJ,eH5DI,GAPA,GADA,6BAAwC,EAAxC,wBACA,gBACA,EAFA,S,gBAAA,c,sCAAA,oBAQA,G,sDAAA,2BACI,S,KAKA,EAKA,sBAGsC,EAEtC,mBAGkC,IAElC,aAGkC,E,8FAxBtC,+C,KAAA,E,sJA+B4B,EAG5B,wCAFA,S,KAAA,EACA,uB,4GACA,M,mCAAA,EACI,aAGmC,sBAEnC,iBAGkC,I,uFATtC,0H,IAAA,iC,sKAuBmC,+C,IAA6B,M,yDAA5B,uB,eAA4B,G,mFALpE,0C,6BAAA,wBAKwC,uB,yLXxDd,a,WACtB,K,WACA,KAGI,a,uDAGJ,iC,WAAA,qB,KAAA,2E,GAAA,e,kRAWiC,mC,0DAGlB,yC,UAAA,G,0KAEE,a,sCAAA,c,WAAA,E,gYAhBjB,iB,2CA0BqD,wD,kQACzB,0B,OAAA,kB,iCAAxB,K,yOAEJ,6DAHqD,gE,gSAYjD,E,0IAAwBA,KAAA,qB,SACD,0C,SAAA,0B,qBAEJ,e,cAAA,kB,QAAA,gB,8GxB6FuC,gB,OAAA,QwB3FlD,iB,2FhB7D4C,iB,MAAA,mC,qCRwJW,qB,wDwBzElD,0B,kCAAA,+B,kBAAA,qB,waAXjB,a,6DAaA,G,yDxBiEJ,oBQnJA,ERmJA,WQnJA,eRmJA,WQnJA,I,IgBqEI,Q,sBhBpEwD,QACxD,M,gCADwD,mF,uCRwJM,iC,MwB5EtD,gBACA,cAAO,mBAEE,eAFF,iB,0BAMf,4B,uMAgBc,wB,yGALd,oC,8EA8BA,a,qBxB4B8D,0BAAa,O,0BQxJnB,0B,IAAA,G,iDRwJW,Q,+BAAL,U,sRwB9DxC,sB,eAAA,4E,mGADlB,E,0KAGJ,8CATA,iF,4CASA,O,oDAEA,E,IAAA,W,OAAA,sB,UAAA,6E,gTAWU,E,6DAEF,iF,OAAA,qC,ybAER,8CAMuB,sBAAnB,2D,OtgB+nBG,sBAAmB,eASV,4E,OAAM,KAAI,2B,4DACnB,E,sBsgBzoBH,0B,qCtgB0pDYA,KAAA,wC,MC1tDhB,E,WACI,M,iMqgB2ER,E,eAgBI,4C,4DAEJ,E,IAAA,W,OAAA,uC,2CAAA,kD,+FexIA,2D,6BCWsC,+B,eAIE,mB,kBAIK,iB,wGAgBF,sD,KAIG,M,0CAIT,Q,IAIC,E,EAAA,4C,6CAIS,S,sBC7D/C,gD,IAAA,S,OAAA,K,WAcoC,oBAAS,EAAT,WAK5B,KAL4B,iB,iCACM,WAAQ,O,wBACH,K,sFACF,KAAQ,e,kEAE7C,iD,sQAK6CA,KAAA,a,mIAsB7C,yB,oFCtBA,c,qBCvBJ,OthBsEO,Y,mBqhBhD8B,oC,WAAA,M,IAAA,Q,4HAG/B,8BAFF,+B,+HAGI,O,mNAqBmB,a,kEAAA,0B,oWlClD/B,O,QAAA,wB,qDAEA,gD,yCoCS6B,SAAgD,EAEzE,iB,sBzhByEI,Y,IACA,EAAM,gB,mCyhB5EgB,e,eAU1B,mB,aAAA,S,sCARA,Q,sBAAA,qB,yCAEA,Y,OAAA,oC,QAMA,GAyBA,iB,2FAjB0B,G,gBACJ,W,0CAAA,S,8CAAlB,E,UAGA,WAAkC,EAApB,EAAY,aAA1B,Q,MAKA,GACI,iCAEA,EACA,YAJG,Y,YAJP,G,0MAcJ,oB,EAAA,E,kHAoCoB,kC,IAChB,EAAY,IAAZ,GAAY,S,OACR,uBAAuB,oB,wBAJD,Y,UAS9B,2BACA,oBAUJ,M,OArBA,+C,EAAA,EAMoC,Y,OAAA,U,MANpC,6C,kBAQI,YAKkC,O,gCAAA,I,mBAI1B,SAAAwZ,G,MACA,E,0NAK0D,WAMtE,iB,iBANA,kCAAyD,GAAa,KAYlD,Q,iBAAC,mB,gQCtGW,2CACxB,4BAAmB,EACvB,uB,EAAA,K,wNCVJ,EDkBsB,qD,yBAEN,gCALR,gC,oQvZoRkC,O,yKyZ1R2B,qB,wV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,E,QlkBvEnC,MkkBuEkD,KlkBvElCtkB,cQzGhB,G,2J0jBoLP,W,uCACsB,I,EAAA,EAAX,wBAAW,EAAQ,KAAH,6DAAsEm1D,G,8GAAS,qB,4C/CR1G,2C,2BAAA,OAAuC,K,wFA9I3B,e,cAAA,wC,OAAA,W,iCAxGJ,c,gC3gByDR,oB2gBoDA,K,qDRlEqD,YACzB,W,qBACxB,e,cAAA,4C,OAAA,W,OAAuB,uD,8ZuDiNvB,O,cAAkB,c,sPADtB,gB,MAAA,iB,OAAA,sB,2NCzPJ,W,uCACsD,I,EAAA,E1dasC,GAAAzrE,M,2G0dbjC,0CAA0C,G,iDhDiPjG,iD,2BAAA,OAAuC,K,wFA9I3B,e,cAAA,wC,OAAA,W,iCAxGJ,c,gC3gByDR,oB2gBoDA,K,2DRlEqD,SACzB,iB,qBACxB,e,cAAA,4C,OAAA,W,OAAuB,6D,kbwDxCuB,8BAA3C,gB,iBAAP,OAAO,KAAP,W,8PCEA,gB,YAAsC,IAAA0rE,OAAoB,GAA1D,8D,2JAEA,W,uCACsB,I,EAAA,EAAX,WAAArF,WAAW,EAAM,KAAF,cAAsB,sB,EjDqNhD,gB,MAAA,O,KACA,O,YAAA,mBAAY,cACZ,S,GAAA,SAJA,K,YAMA,I3gB1KA,E2gB0KA,K,K3gB1KA,iB,C2gBhEG,+B3gBiEI,E2gBjEJ,K,+HRmDC,e,cAAA,wC,OAAA,W,+EACuB,yB,oEAEJ,S,uBAAA,G,gcAHnB,kD,8DyDlCA,O,cAAkB,c,gPADtB,gB,MAAA,iB,OAAA,sB,2JAIA,W,uCAKsB,I,EAAA,EAAX,WAAAA,WAAW,EAAM,KAAF,iBAAsB,uBAAtB,kBAAgD,kBAAhD,UAA8D,iB,EjD6MxF,gB,MAAA,O,KACA,O,YAAA,mBAAY,cACZ,S,GAAA,SAJA,K,YAMA,I3gB1KA,E2gB0KA,K,K3gB1KA,iB,C2gBhEG,+B3gBiEI,E2gBjEJ,K,+HRmDC,e,cAAA,wC,OAAA,W,+EACuB,yB,oEAEJ,S,uBAAA,G,gcAHnB,kD,8DyD1BA,O,cAAkB,c,8PALtB,oB,MAAA,qB,OAAA,sB,uCAMA,oB,YAJI,IAAA3zD,MAAc,QACd,IAAA4E,MAAa,KAHjB,8D,2JAQA,W,uCACsB,I,EAAA,EAAX,WAAA+uD,WAAW,EAAM,KAAF,cAAmB,e,EjDyM7C,gB,MAAA,O,KACA,O,YAAA,mBAAY,cACZ,S,GAAA,SAJA,K,YAMA,I3gB1KA,E2gB0KA,K,K3gB1KA,iB,C2gBhEG,+B3gBiEI,E2gBjEJ,K,+HRmDC,e,cAAA,wC,OAAA,W,+EACuB,yB,oEAEJ,S,uBAAA,G,gcAHnB,kD,8DyDtBA,O,cAAkB,c,6OADtB,gB,MAAA,iB,OAAA,sB,2JAIA,W,uCACsB,I,EAAA,EAAX,WAAAA,WAAW,EAAM,KAAF,gBAAqB,e,EjDqM/C,gB,MAAA,O,KACA,O,YAAA,mBAAY,cACZ,S,GAAA,SAJA,K,YAMA,I3gB1KA,E2gB0KA,K,K3gB1KA,iB,C2gBhEG,+B3gBiEI,E2gBjEJ,K,+HRmDC,e,cAAA,wC,OAAA,W,+EACuB,yB,oEAEJ,S,uBAAA,G,gcAHnB,kD,8DyDlBA,O,cAAkB,c,+OADtB,gB,MAAA,iB,OAAA,sB,2JAIA,W,uCACsB,I,EAAA,EAAX,WAAAA,WAAW,EAAM,KAAF,aAAkB,e,EjDiM5C,gB,MAAA,O,KACA,O,YAAA,mBAAY,cACZ,S,GAAA,SAJA,K,YAMA,I3gB1KA,E2gB0KA,K,K3gB1KA,iB,C2gBhEG,+B3gBiEI,E2gBjEJ,K,+HRmDC,e,cAAA,wC,OAAA,W,+EACuB,yB,oEAEJ,S,uBAAA,G,gcAHnB,kD,8DyDdA,O,cAAkB,c,4OADtB,gB,MAAA,iB,OAAA,sB,2JAIA,W,uCACsB,I,EAAA,EAAX,WAAAA,WAAW,EAAM,KAAF,WAAmB,c,EjD6L7C,gB,MAAA,O,KACA,O,YAAA,mBAAY,cACZ,S,GAAA,SAJA,K,YAMA,I3gB1KA,E2gB0KA,K,K3gB1KA,iB,C2gBhEG,+B3gBiEI,E2gBjEJ,K,+HRmDC,e,cAAA,wC,OAAA,W,+EACuB,yB,oEAEJ,S,uBAAA,G,gcAHnB,kD,8DyDVA,O,cAAkB,c,6OADtB,gB,MAAA,iB,OAAA,sB,2JAIA,W,uCACsB,I,EAAA,EAAX,WAAAA,W,EjDyLX,gB,MAAA,O,KACA,O,YAAA,mBAAY,cACZ,S,GAAA,MiD3L0B,gBjDuL1B,K,YAMA,I3gB1KA,E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M,OAGA,OACI,OACA,OACU,OACI,OACN,O,GAEX,OAEP,O,GAEc,OAET,OACS,OACR,OACM,O,GAEd,O,GACY,O,GACE,O,GACC,O,GACF,O,GACF,OACA,OACC,OACA,OAEN,OACE,OACP,OACC,O,GACE,OACC,OACA,OACO,OACY,O,GAEvB,O,GACY,O,GACE,O,GACC,O,GACF,OACA,OACV,OAEI,OACR,OAEgB,O,GAEV,OACU,O,GACJ,OACE,OACR,OACX,QAAY,WAAE,iBACb,QAAY,WAAE,iBAEI,OACN,O,GAEA,O,GACA,OACF,OACF,OAEI,OAEE,OACM,OAEnB,OAEG,OCrL3B,KACG,KACA,KACG,KACA,KACF,KACA,KAEJ,KACE,KACO,KACP,KACC,KACF,KACI,KAEA,KACC,KACH,KACA,KACD,KACK,KACD,KAEC,KACL,KACI,KACJ,KACG,KACH,KACD,KAEA,KACG,KAEG,KACF,KACI,KACJ,KACF,KAEF,KACA,KACA,KACA,KACA,KACA,KACI,KACA,KACJ,KACE,KAEH,KACK,KACH,KACE,KACF,KAEA,KACG,KAED,KACD,KAED,KACC,KACA,KACA,KACA,KACC,KAEF,KACK,KAEN,KACO,KACH,KAEL,KACE,KACK,KAEP,KAEG,KAEA,KACE,KACC,KACD,KACD,KACD,KACE,KACD,KACF,KACA,KACA,KAEE,KACA,KACH,KACM,KACH,KACH,KACG,KACD,KACF,KAEA,KAGG,K,oDM7Hb,UAEI,EAAO,CAAC,EAAW,KAAU,MAAyC,KAAS,MAAmB,MAA8C,aAAqB,0BAAP,EAkB1J,SAAUiB,EAAGD,EAAQolG,EAA+C1sC,EAAe2sC,EAAyB1sC,EAAoD2sC,GACtK,aACA,IA6IIC,EA7IA1sC,EAAuB54D,EAAE44D,uBAAyB54D,EAAE44D,qBAAuB,IAC3ElsD,EAAuB3M,EAAO2M,qBAC9BsvD,EAAUmpC,EAA8CvlC,MAAMa,gBAC9DxE,EAAUkpC,EAA8CvlC,MAAMc,gBAC9DxE,EAAMipC,EAA8CvlC,MAAMe,YAC1Dh5C,EAAgB8wC,EAAc9wC,cAC9BmzC,EAAWqqC,EAA8CvlC,MAAM9E,SAC/Df,EAA6Bh6D,EAAO4D,OAAOq2D,mCAC3CurC,EAAqBxlG,EAAO4D,OAAO0gD,KAAKkhD,mBACxCzsC,EAAa/4D,EAAOkS,KAAK8mD,MACzBysC,EAASJ,EAAwBhrC,QAAQqrC,KAAKD,OAC9C3sC,EAAO94D,EAAO4D,OAAOk1D,KACrB6sC,EAAcN,EAAwBhrC,QAAQqrC,KAAKC,YACnDpwF,EAAcvV,EAAO4D,OAAOs1D,YAAY3jD,YACxC4lD,EAAgBiqC,EAA8CvlC,MAAMC,sBACpEV,EAASkmC,EAAkBlmC,OAC3BjqD,EAASnV,EAAO4D,OAAOs1D,YAAY0sC,eACnCxvF,EAAKpW,EAAO4D,OAAOi3D,WACnBmP,EAAQhqE,EAAO4D,OAAOs1D,YAAY2sC,cAClC1tE,EAAen4B,EAAO4D,OAAOs1D,YAAY4sC,qBACzCC,EAAc/lG,EAAOkS,KAAKW,OAC1BmzF,EAAmBhmG,EAAOgmG,iBAE1BjjF,GADe/iB,EAAO6M,aACI7M,EAAO4D,OAAOs1D,YAAYU,iCACpDF,EAAiB15D,EAAO4D,OAAOs1D,YAAYY,uBAG/C,SAASmsC,EAAYjpG,GAKnB,IAAIisD,EAEJ,IANA8R,EAASn9D,KAAKP,MACdA,KAAKqhF,SAAW,IAAIwnB,EAAmC7oG,MACvDA,KAAKs+D,MAAQ3+D,EAAQK,KAAKqhF,UAC1BrhF,KAAKy/D,MAAQ,GAEb7T,EAAO5rD,KAAKs+D,MAAMwqC,kBAAkBvxF,WAC7Bq0C,EAAKn0C,WAAW,CACrB,IAAIb,EAAUg1C,EAAKl0C,OACnB1X,KAAK+oG,gBAAgBnyF,EAAQjV,IAAKiV,EAAQvV,QAoD9C,SAASwnG,EAAmCG,GAC1ChpG,KAAKgpG,iBAAmBA,EAc1B,SAASC,EAAoEC,GAC3ElpG,KAAKkpG,WAAaA,EA4BpB,SAASC,IACP,OAAO1tC,EAST,SAAS2tC,EAAiB3Y,GACxB,IAAI7kC,EACJ,OAA6C,OAArCA,EAAOs8C,EAASmB,UAAU5Y,IAAkB7kC,EAAO6kC,EAE7D,SAAS6Y,IACPC,EAAsBvpG,KA1HxB4oG,EAAY5mG,UAAYlB,OAAOY,OAAOg8D,EAAS17D,WAC/C4mG,EAAY5mG,UAAUO,YAAcqmG,EAapCA,EAAY5mG,UAAU+mG,gBAAkB,SAAUS,EAAWnoG,GAC3D,IAAIM,EAAMynG,EAAiBI,GAC3BxpG,KAAKy/D,MAAM99D,GAAON,GAEpBunG,EAAY5mG,UAAUynG,YAAc,SAAU99C,EAAWhrD,GACvD,OAAOX,KAAKy/D,MAAM9+D,IAEpBioG,EAAY5mG,UAAU0nG,YAAc,SAAU/9C,EAAWhrD,EAAMU,GAC7DrB,KAAKy/D,MAAM9+D,GAAQU,GAErBunG,EAAY5mG,UAAU2nG,2BAA6B,SAAUh+C,GAC3D,IAAIC,EACJ,OAAiE,OAAzDA,EAAO5rD,KAAKypG,YAAY99C,EAAW,oBAA6BC,GAE1Eg9C,EAAY5mG,UAAU4nG,2BAA6B,SAAUj+C,EAAWtqD,GACtErB,KAAK0pG,YAAY/9C,EAAW,iBAAkBtqD,IAEhDunG,EAAY5mG,UAAU6nG,mBAAqB,SAAUl+C,GACnD,IAAIC,EACJ,OAAyD,OAAhDA,EAAO5rD,KAAKypG,YAAY99C,EAAW,UAAoBC,EAAO,IAAI3wB,SAE7E2tE,EAAY5mG,UAAU8nG,mBAAqB,SAAUn+C,EAAWtqD,GAC9DrB,KAAK0pG,YAAY/9C,EAAW,QAASzzC,EAAY7W,KAEnDunG,EAAY5mG,UAAU+nG,kBAAoB,SAAUp+C,GAClD,OAAO3rD,KAAKypG,YAAY99C,EAAW,UAErCi9C,EAAY5mG,UAAUgoG,kBAAoB,SAAUr+C,EAAWtqD,GAC7DrB,KAAK0pG,YAAY/9C,EAAW,QAAStqD,IAEvCunG,EAAY5mG,UAAUioG,cAAgB36F,EAAqB,iFAAiF,SAAU40C,GACpJA,EAAQlkD,KAAKs+D,UAEfx9D,OAAOC,eAAe6nG,EAAY5mG,UAAW,MAAO,CAACS,cAAc,EAAMxB,IAAK,WAC5E,MAAM07D,EAA2B,GAAGx4D,aACnCkB,IAAK,SAAUhE,GAChBu9D,EAAQ5+D,KAAKy/D,MAAOp+D,MAEtBP,OAAOC,eAAe6nG,EAAY5mG,UAAW,MAAO,CAACS,cAAc,EAAMxB,IAAK,WAC5E,MAAM07D,EAA2B,GAAGx4D,aACnCkB,IAAK,SAAUhE,GAChBw9D,EAAQ7+D,KAAKy/D,MAAOp+D,MAEtBunG,EAAY5mG,UAAU0/D,YAAc,SAAUxd,GAC5C4a,EAAI9+D,KAAKy/D,MAAOvb,IAElB0kD,EAAY5mG,UAAUN,OAAS,WAC7B,OAAO6oB,EAAc9a,MAAM,KAAM,CAACzP,KAAKs+D,MAAMijB,QAASvhF,KAAKy/D,OAAO5+C,OAAO3I,EAAYlY,KAAK29D,cAK5FkrC,EAAmC7mG,UAAUkoG,6BAA+B,SAAU7wC,EAAKmwC,EAAWnoG,GACpGrB,KAAKgpG,iBAAiBD,gBAAgBS,EAAWnoG,IAEnDwnG,EAAmC7mG,UAAUmoG,qBAAuB,SAAUrlF,GAC5E,MAAM63C,EAA2B,+BAEnCksC,EAAmC7mG,UAAUooG,qBAAuB,SAAUtlF,GAC5E9kB,KAAKgpG,iBAAiBrrC,UAAU0B,UAAUv6C,IAE5C+jF,EAAmC7mG,UAAUqoG,2BAA6B,SAAUtrB,GAClF/+E,KAAKgpG,iBAAiBrrC,UAAU0B,UAAU0f,EAAO93B,OAKnDgiD,EAAoEjnG,UAAUu9D,kBAAoB,SAAU5T,GAC1G3rD,KAAKkpG,WAAWoB,eAAe3+C,IAEjCs9C,EAAoExjG,WAAa,CAAC8P,KAAMmmD,EAAY5lD,WAAY,CAACsyF,IACjHS,EAAmC7mG,UAAUuoG,2BAA6B,SAAUl9E,GAClF,IAAIrG,EAAKmhF,IACT96E,EAAM,IAAI47E,EAAoEjiF,IAC9E,IAAI4kC,EAAO5rD,KAAKgpG,iBAAiBvpC,MAC7B9T,EAAY,GAChBA,EAAU6+C,OAASxjF,EAAG7iB,WACtBynD,EAAK6+C,wBAA0B9+C,GAEjCk9C,EAAmC7mG,UAAU0oG,mBAAqB,SAAUrxC,GAC1E,MAAMsD,EAA2B,uCAEnCksC,EAAmC7mG,UAAU2oG,iBAAmB,SAAUtxC,GACxE,MAAMsD,EAA2B,uCAEnCksC,EAAmC7mG,UAAU4oG,mBAAqB,SAAUvxC,EAAKo3B,EAAOpvF,GACtFrB,KAAKgpG,iBAAiBD,gBAAgBtY,EAAOpvF,IAE/CwnG,EAAmC7mG,UAAU6oG,SAAW,WACtD,OAAOpvC,GAETotC,EAAmCpjG,WAAa,CAAC8P,KAAMmmD,EAAY5lD,WAAY,CAACwyF,IAChFM,EAAYnjG,WAAa,CAAC8P,KAAMmmD,EAAY53C,WAAY,cAAehO,WAAY,CAAC4nD,IAkBpF4rC,EAAWtnG,UAAU8oG,iBAAmB,SAAUzoC,EAAStgE,GACzD,IAAI6pD,EACJ,OAAuE,OAA/DA,EAAOyW,EAAQ7Q,WAAW63C,UAAUtnG,EAASoD,eAAyBymD,EAAO,IAEvF09C,EAAWtnG,UAAU+oG,iBAAmB,SAAU1oC,EAAStgE,EAAUV,GACnE,IAAIsqD,EAAY0W,EAAQ7Q,WACpB7vD,EAAMI,EAASoD,aACnBwmD,EAAUq/C,YAAYrpG,EAAKN,IAE7BioG,EAAW7jG,WAAa,CAAC8P,KAAMmzF,EAAa5kF,WAAY,aAAchO,WAAY,IAClF,IAAIyzF,EAAsB,KAC1B,SAAS0B,IAGN,OAF2B,OAAxB1B,GACF,IAAID,EACEC,EAGS,IAAIZ,EAAiB,OAEZ,IAAIA,EAAiB,gBAEnB,IAAIA,EAAiB,gBAE9B,IAAIA,EAAiB,SAC1CntC,EAAqB,8CAAgDF,EACrE,IAAIiH,EAAgB3/D,EAAE4/D,QAAU5/D,EAAE4/D,MAAQ,IACtC0oC,EAAc3oC,EAAc4oC,MAAQ5oC,EAAc4oC,IAAM,IAC5DD,EAAYtC,YAAcA,EAC1BsC,EAAYE,eA1CZ,SAAkBC,EAAW52F,EAAUyvC,QACpB,IAAbzvC,IACFA,EAAW00F,GACbpnC,EAAOjE,EAAc5Z,GAAUmnD,EAAW52F,IAwC5Cy2F,EAAYI,yBAA2BlC,EACvCtoG,OAAOC,eAAemqG,EAAa,aAAc,CAACjqG,IAAKgqG,IACvDzvC,EAAqB,mBAAqBwsC,EAC1CiB,EAAoEjnG,UAAUupG,kBAAoBnD,EAAOpmG,UAAUupG,kBACnHtC,EAAoEjnG,UAAUwpG,YAAcpD,EAAOpmG,UAAUwpG,YAC7GvC,EAAoEjnG,UAAUypG,YAAcrD,EAAOpmG,UAAUypG,YAC7GxC,EAAoEjnG,UAAU0pG,YAActD,EAAOpmG,UAAU0pG,YAC7G7C,EAAmC7mG,UAAU2pG,mBAAqBrD,EAAYtmG,UAAU2pG,mBAExF,IAEI//C,EAFAD,EADK7zC,EAAO,CAAC,SAAU,QAAS,UAAW,mBAAoB,qBAAsB,sBAAuB,YAAa,aAAc,UAAW,UAAW,SAAU,WAAY,UAAW,WAAY,UAAW,gBAAiB,gBAAiB,SAAU,YAAa,cAAe,aAAc,cAAe,aAAc,cAAe,SAAU,cAAe,eAAgB,eAAgB,cAAe,aAAc,cAAe,YAAa,WAAY,gBAAiB,aAAc,cAAe,eAAgB,WAAY,UAAW,UAAW,YAAa,mBAAoB,mBAAoB,YAAa,cAAe,UAAW,UAAW,eAAgB,mBAAoB,cAAe,UAAW,SAAU,YAAa,aAAc,eAAgB,WAAY,YAAa,YAAa,YAAa,eAAgB,iBAAkB,YAAa,SAAU,UAAW,mBAAoB,iBAAkB,uBAAwB,kBAAmB,SAAU,gBAAiB,YAAa,SAAU,kBAAmB,oBAAqB,MAAO,QAAS,eAAgB,YAAa,WAAY,UAAW,cAAe,cAAe,YAAa,UAAW,UAAW,OAAQ,UAAW,YAAa,UAAW,OAAQ,UAAW,kBAAmB,cAAe,WAAY,SAAU,cAAe,OAAQ,WAAY,UAAW,QAAS,MAAO,WAAY,WAAY,YAAa,UAAW,OAAQ,aAAc,cAAe,aAAc,iBAAkB,aAAc,cAAe,UAAW,SAAU,SAAU,OAAQ,OAAQ,WAAY,UAAW,YAAa,OAAQ,KAAM,YAAa,YAAa,KAAM,YAAa,UAAW,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,MAAO,WAAY,eAAgB,cAAe,MAAO,YAAa,QAAS,aAAc,SAAU,MAAO,YAAa,WAAY,QAAS,OAAQ,aAAc,QAAS,OAAQ,UAAW,UAAW,cAAe,SAAU,UAAW,UAAW,aAAc,WAAY,MAAO,WAAY,WAAY,OAAQ,UAAW,OAAQ,UAAW,QAAS,SAAU,YAAa,WAAY,WAAY,QAAS,OAAQ,QAAS,OAAQ,aAAc,MAAO,SAAU,UAAW,SAAU,QAAS,OAAQ,QAAS,UAAW,WAAY,SAAU,QAAS,OAAQ,SAAU,QAAS,QAAS,QAAS,SAExxEf,EAAcslD,EAAe32C,EAAwBimC,EAAW,KAGpE,IADAC,EAAOD,EAAUp0C,WACVq0C,EAAKn0C,WAAW,CACrB,IAAIR,EAAO20C,EAAKl0C,OAChBX,EAAYsoD,UAAUtmD,EAAG9B,EAAKqO,cAAerO,IAE/C,IAAI4oD,EAAc/kC,EAAa6xC,EAAM51D,IAQrC,OAPA8oD,EAAYmrC,YAAY,QAAS,aACjCnrC,EAAYmrC,YAAY,aAAc,iBACtC9C,EAAWroC,EACLorC,IACSA,IACEA,IACTA,IACDroG,IA/NgK,gC,8BCAzK,SAASgpG,IAEP,GAC4C,oBAAnCC,gCAC4C,mBAA5CA,+BAA+BD,SAFxC,CAMI,EAUJ,IAEEC,+BAA+BD,SAASA,GACxC,MAAO9oD,GAGPl/B,QAAQ0iC,MAAMxD,KAOhB8oD,GACA/rG,EAAOD,QAAU,EAAQ,M,6BChC3BkB,OAAOC,eAAenB,EAAS,aAAc,CAC3CyB,OAAO,IAETzB,EAAQ4gD,QAQR,SAA2Bz+C,GACzB,OAAO,EAAI+pG,EAAqBtrD,SAASz+C,IAP3C,IAIgCwD,EAJ5BwmG,EAAsB,EAAQ,KAE9BD,GAE4BvmG,EAFkBwmG,IAEGxmG,EAAI/D,WAAa+D,EAAM,CAAEi7C,QAASj7C,GAKvF1F,EAAOD,QAAUA,EAAiB,S,gBCf+BC,EAAgB,QAG/E,WAED,aAEA,OAAO,SAAUmsG,GAIhB,SAASC,EAAS5+E,GACjB,GAAIA,EACH,IACC2+E,EAAW3+E,EAAQ,KAClB,MAAO9oB,KAGX,OAAO,SAAoBmX,EAASoJ,EAAS0kE,EAAWK,EAAS/4D,EAAMu2D,EAAQ1iF,EAAQlD,EAAI0mF,EAAO2B,GACjG,OAAQpuE,GAEP,KAAK,EAEJ,GAAc,IAAVysE,GAAyC,KAA1BrjE,EAAQtc,WAAW,GACrC,OAAOwjG,EAAWlnF,EAAQ,KAAM,GACjC,MAED,KAAK,EACJ,GAAW,IAAPrjB,EACH,OAAOqjB,EArBK,QAsBb,MAED,KAAK,EACJ,OAAQrjB,GAEP,KAAK,IACL,KAAK,IACJ,OAAOuqG,EAAWxiB,EAAU,GAAG1kE,GAAU,GAC1C,QACC,OAAOA,GAAkB,IAAPglE,EA/BP,QA+B8B,IAE5C,KAAM,EACLhlE,EAAQ+uB,MAjCEvhB,UAiCYu+B,QAAQo7C,MA1CkDtsG,I,6BCgDtE,IAjDI,CACjBusG,wBAAyB,EACzBC,kBAAmB,EACnBC,iBAAkB,EAClBC,iBAAkB,EAClBC,QAAS,EACTC,aAAc,EACdC,gBAAiB,EACjBC,YAAa,EACbC,QAAS,EACTC,KAAM,EACNC,SAAU,EACVC,aAAc,EACdC,WAAY,EACZC,aAAc,EACdC,UAAW,EACXC,QAAS,EACTC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdC,WAAY,EACZC,cAAe,EACfC,eAAgB,EAChBC,gBAAiB,EACjBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,iBAAkB,EAClBC,WAAY,EACZC,WAAY,EACZC,QAAS,EACTC,MAAO,EACPC,QAAS,EACTC,QAAS,EACTC,OAAQ,EACRC,OAAQ,EACRC,KAAM,EACNC,gBAAiB,EAEjBC,YAAa,EACbC,aAAc,EACdC,YAAa,EACbC,gBAAiB,EACjBC,iBAAkB,EAClBC,iBAAkB,EAClBC,cAAe,EACfC,YAAa,I,6BCtCA,ICNXC,EAAkB,45HAElBl4F,EDJJ,SAAiBi7C,GACf,IAAItsD,EAAQ,GACZ,OAAO,SAAU62B,GAEf,YADmBlrB,IAAf3L,EAAM62B,KAAoB72B,EAAM62B,GAAOy1B,EAAGz1B,IACvC72B,EAAM62B,ICAL,EAAQ,SAAU8gD,GAC5B,OAAO4xB,EAAgBroF,KAAKy2D,IAAgC,MAAvBA,EAAK30E,WAAW,IAE3B,MAAvB20E,EAAK30E,WAAW,IAEhB20E,EAAK30E,WAAW,GAAK,MAKX,O,6BCRf,SAASwmG,EAAQC,GACb,OAAOnuG,OAAOkB,UAAUmC,SAAS5D,KAAK0uG,GAAS56F,MAAM,GAAI,GAQ7D,SAAS26C,EAAYigD,GACjB,MAA4B,cAArBD,EAAQC,GAQnB,SAASrgD,EAAOqgD,GACZ,MAA4B,SAArBD,EAAQC,GAQnB,SAASC,EAAcD,GACnB,MAAyB,WAArBD,EAAQC,KAELA,EAAQ1sG,cAAgBzB,QAAUA,OAAOsU,eAAe65F,KAAanuG,OAAOkB,WAiEvF,SAASgB,EAAQisG,GACb,MAA4B,UAArBD,EAAQC,GAsHnB,SAASlgD,EAASkgD,GACd,MAA4B,WAArBD,EAAQC,GA4EnB,IACiBnsG,EAAG4B,EAAGjE,EAAGC,EAAG6D,EAAZzB,EADe8rD,EACZlqD,EADoBsqD;;;;;;;;;;;;;;;ACxRxC,SAASmgD,IACL,IAAK,IAAIhtG,EAAI,EAAG/B,EAAI,EAAGgvG,EAAK1/F,UAAU/K,OAAQvE,EAAIgvG,EAAIhvG,IAAK+B,GAAKuN,UAAUtP,GAAGuE,OACxE,IAAIzD,EAAI6B,MAAMZ,GAAIuR,EAAI,EAA3B,IAA8BtT,EAAI,EAAGA,EAAIgvG,EAAIhvG,IACzC,IAAK,IAAI0C,EAAI4M,UAAUtP,GAAI6X,EAAI,EAAGo3F,EAAKvsG,EAAE6B,OAAQsT,EAAIo3F,EAAIp3F,IAAKvE,IAC1DxS,EAAEwS,GAAK5Q,EAAEmV,GACjB,OAAO/W,EAGX,SAASouG,EAAWrtE,EAAOtgC,EAAK4tG,EAAQC,GACpC,IAAIC,EAAWD,EAAezkB,qBAAqBppF,GAC7C,aACA,gBACW,eAAb8tG,IACAxtE,EAAMtgC,GAAO4tG,GACA,kBAAbE,GACA3uG,OAAOC,eAAekhC,EAAOtgC,EAAK,CAC9BN,MAAOkuG,EACPvuG,YAAY,EACZwB,UAAU,EACVC,cAAc,IAI1B,SAASitG,EAAiBC,EAAQC,EAAUC,GAExC,IAAKX,EAAcU,GAOf,OALIC,GAAc7sG,EAAQ6sG,IACtBA,EAAWh/C,SAAQ,SAAUi/C,GACzBF,EAAWE,EAAOH,EAAQC,MAG3BA,EAGX,IAAIG,EAAY,GACZb,EAAcS,KAGdI,EAAYZ,EAFEruG,OAAO0iD,oBAAoBmsD,GACzB7uG,OAAOyiD,sBAAsBosD,IACEK,QAAO,SAAU/tE,EAAOtgC,GAEnE,IAAIsuG,EAAYN,EAAOhuG,GAKvB,QAJMotD,EAASptD,KAASb,OAAO0iD,oBAAoBosD,GAAUr2D,SAAS53C,IACjEotD,EAASptD,KAASb,OAAOyiD,sBAAsBqsD,GAAUr2D,SAAS53C,KACnE2tG,EAAWrtE,EAAOtgC,EAAKsuG,EAAWN,GAE/B1tE,IACR,KAwBP,OApBaktE,EAFDruG,OAAO0iD,oBAAoBosD,GACzB9uG,OAAOyiD,sBAAsBqsD,IACCI,QAAO,SAAU/tE,EAAOtgC,GAEhE,IAAI4tG,EAASK,EAASjuG,GAClBsuG,EAAaf,EAAcS,GAEzBA,EAAOhuG,QACPwP,EAYN,OAVI0+F,GAAc7sG,EAAQ6sG,IACtBA,EAAWh/C,SAAQ,SAAUi/C,GACzBP,EAASO,EAAOG,EAAWV,WAIjBp+F,IAAd8+F,GAA2Bf,EAAcK,KACzCA,EAASG,EAAiBO,EAAWV,EAAQM,IAEjDP,EAAWrtE,EAAOtgC,EAAK4tG,EAAQK,GACxB3tE,IACR8tE,GAoCQ,IAxBf,SAAeJ,GAEX,IADA,IAAIO,EAAY,GACPrlB,EAAK,EAAGA,EAAKn7E,UAAU/K,OAAQkmF,IACpCqlB,EAAUrlB,EAAK,GAAKn7E,UAAUm7E,GAElC,IAAIglB,EAAa,KACbv4E,EAAOq4E,EAKX,OAJIT,EAAcS,IAAWA,EAAOE,YAA6C,IAA/B/uG,OAAOwgB,KAAKquF,GAAQhrG,SAClE2yB,EAAO,GACPu4E,EAAaF,EAAOE,YAEjBK,EAAUF,QAAO,SAAUjrG,EAAQ6qG,GACtC,OAAOF,EAAiB3qG,EAAQ6qG,EAAUC,KAC3Cv4E,K,iiE9I7EP,6C,sR+IdqB,Y,kTCo1BL,uBAAsB,mBAAkB,QAAQ,K,GAC5C,uBAAsB,mBAAkB,QAAQ,KAAK,I,GACxC,SAAO,iB,+QA2Ub,uBAAsB,mBAAkB,QAAQ,KAAK,wB,GAC5D,uBAAsB,mBAAkB,QAAQ,KAAK,I,GAzNnD,uBAAsB,mBAAkB,QAAQ,KAAK,WAAW,mB,GAEjE,uBAAsB,mBAAkB,QAAQ,KAAK,K,GA5gBxD,uBAAsB,mBAAkB,QAAQ,KAAK,E,yEAiiBpD,uBAAsB,mBAAkB,QAAQ,KAAK,G,mMAsNlD,uBAAsB,mBAAkB,QAAQ,KAAK,M,GAnjBpD,uBAAsB,mBAAkB,QAAQ,KAAK,O,6CAykCvD,uBAAsB,mBAAkB,QAAQ,KAAK,K,6MAxrBvD,uBAAsB,mBAAkB,QAAQ,KAAK,G,GCvUjD,uBAAqB,MAAM,S,GACpC,O,GAEiB,QAAM,e,uGCwjCrC,gD,GFhHwB,uBAAsB,mBAAkB,QAAQ,KAAK,Q,wVA9pB1D,uBAAsB,mBAAkB,QAAQ,KAAK,G,GAarD,uBAAsB,mBAAkB,QAAQ,KAAK,G,gMAqZpD,uBAAsB,mBAAkB,QAAQ,KAAK,I,0LG14CzE,iBAEI,OAAO,uBAAiB,gBAExB,OADI,EAAK,cAAM,GACf,KAFwB,MAKnB,e,EAAgDmoC,E,MAErD,iBAAwB0wC,IACxB,WAAkB,EAAoC,kBACtD,oBAA2B1wC,EAAMsE,aAEjC,YAAmBqsC,EAAe,WAAf,cACf,eACI,4BAA0C,EAAoB,EAAAC,qBAC9D,wCAAwC,iBAAaC,yBACrD,2BAA2B,iBAAaC,YACxC,wBAAmC,KAAAA,YAAYxpC,GAC/C,gCAAkD,GAClD,sCAAsC,EAAAuG,qBADY,eAAC,SCf/D,cAgBgC,MAhBhC,QAAekjC,EAAA,UAAW,aAAwB,GAC9C,uBAAe,oBAAI,IAMnB,wBAAgB,oBAAI,IAIpB,wBAAgB,oBAAI,IAKpB,gCAAwB,qBAAI,mBAK5B,OAJU,EAAAC,SCsBV,GDrBI,IAAcC,EAAM,UAAAC,MACpB,IAAoBC,GACpB,KAAmBA,GACvB,KACA,2BAAoB,oBAAI,IACxB,6BAAqB,oBAAI,IACzB,4BAAoB,oBAAI,IACxB,2BAAmB,oBAAI,IACvB,4BAAoB,oBAAI,IACxB,2BAAmB,oBAAI,I,kkBDNvB,WACc3hB,EAAV,mB,kCAGJ,WACctZ,EAAV,mB,2BAGJ,YACIk7B,GAAgB,EAAhB,MAA8B,c,uEAnB1B,iD,mFACA,6D,sEACA,gD,mEACA,6C,2EACA,qD,iFACA,2D,uLCfR,W,OAAA,oD,4FAMA,W,OAAA,qD,4FAIA,W,OAAA,qD,4GAKA,W,OAAA,6D,oGAMA,W,OAAA,wD,sGACA,W,OAAA,0D,oGACA,W,OAAA,yD,kGACA,W,OAAA,wD,oGACA,W,OAAA,yD,4BAzBmB,eAKnB,OAJI,YACA,cACA,cACA,cACJ,EACoB,eAGpB,OAFI,IAAkBH,EAAM,UAAAI,OACxB,IAAQJ,EAAM,UAAAK,OAClB,EACoB,eAIpB,OAHI,IAAkB,EAAH,KACf,IAAgB,EAAF,IACd,aACJ,EAOwB,eAAiB,OAAf1uE,GAAQ,EAAG,EAAH,KAAO,EAChB,eAAiB,OAAfA,GAAQ,EAAG,EAAH,KAAO,EAClB,eAAgB,OAAdA,GAAQ,EAAE,EAAF,IAAM,EACjB,eAAgB,OAAd2uE,GAAO,EAAG,EAAH,KAAO,EACf,eAAgB,OAAdA,GAAO,EAAG,EAAH,KAAO,EACjB,eAAe,OAAbA,GAAO,EAAE,EAAF,IAAM,E,sEAAtC,W,OAAA,wD,uEA3BJ,0CEXgB,eAEJ,OADI,EAAAjtC,aAAe,KACnB,EAHoC,eAIxC,OAHIktC,GAAA,EAAI,IAGR,EALY,eAMhB,OALIlvC,GAAOmvC,SAASC,eAAe,aAA/B,EAAwC,IAK5C,EAPJ,cACIlxE,OAAOmxE,OAAS,GASpB,ctJKW,UsJLX,QACI,cAAe3K,GAAe,GAAArgC,YAAYC,SAC1C,iBACA,sBACA,mCAEIgrC,KtJAM,EADC,kBACP,WtH8FO,kBsHlGa,KACqB,MAItC,eNuDA,cAAc,UhHsCV,kBsHlGa,KACqB,MsJIzC,KAAAd,YtJFJ,EACU,EADC,kBACP,WtH8FO,kBsHlGa,KACqB,MAItC,eNuDA,cAAc,UhHsCV,kBsHlGa,KACqB,MsJKzC,KAAAtrC,OtJHJ,EACU,EADC,kBACP,WtH8FO,kBsHlGa,KACqB,MAItC,eNuDA,cAAc,UhHsCV,kBsHlGa,KACqB,MsJMzC,KAAAqrC,yBtJJJ,EsJKapqC,GAAT,KAAAorC,cAAS,SAAO,qG,MAAA,iB,OAAA,qB,6JAAA,W,uCACZ,S,qWAXZ,0C,evoByOiD,sBwoB/OxC,iB,EAGkE7xC,E,MAIvE,WAAsCgnC,GAAe,GAAArgC,YAAYC,SAG7D,KAAAtjD,MAAQ,OAAawuF,GAQJ,kCAAY,OAAV,EAAA97E,KAAO,EAAG,GADP,uJ,MAAA,c,OAAA,sBADT,sH,eAeH,eACV,YChCC,iB,EAGmBgqC,E,MAGxB,6BAA4B,KAC5B,WAAsCgnC,GAAe,GAAArgC,YAAYC,SAG7DrmE,KAAK+iB,MAAQwuF,EAuBuB,oCAAwC,OAA9BtyC,GAAA,EAAS,iCAAmB,OAAjB,IAAW,GAAM,GAAnB,OAAqB,G,eAO3C,iBACjC,aACA,gBTpDR,eACI,IAAI5R,EAAJ,CAAAzxC,EAAkB,EAAY41F,aAC9B,GAAUrgG,MAANk8C,EAAA,E,CACAA,EAAA,EAAK,YUiBT,IAAI,EAAY,GACR,EVjB6DhsD,MAAQgsD,EAAA,EAAzEvsD,OAAOC,eAA0B,EAAM,cUkBpC,GVfP,OAAOssD,EAAA,EWTX,mBACiB,MAAb,gBAAMokD,GAAO,gBAGb,OAFI,EAAA9vG,IAAY,GAAN,GAAiBwC,WACvB,EAAAm6D,MAAA,MAAc,EAClB,KAEJ,mBACiB,MAAb,gBAAMmzC,GAAO,gBAGb,OAFI,EAAA9vG,IAAY,GAAN,GAAiBwC,WACvB,EAAAm6D,MAAA,MAAc,EAClB,KV60BA,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,GWx0BzB,eAEZozC,GAAA,UACAjyC,EACe,QAgBf,yBAAqD,KAAAkyC,MAAMC,OAP3B,eAI5B,OAHI,EAAKC,aAAa,MAAM,sDACxB,EAAKA,aAAa,UAAS,GAAK1tG,YAChC,EAAK0tG,aAAa,yBAA0B,qBAChD,EAeY,eAER,OADI,EAAA5qD,KAAO,qCACX,EAQS,eAGT,OAFI,EAAA6qD,kBAAoBC,GACpB,EAAAC,SAAU,EACd,EAEK,eAGT,OAFI,EAAAF,kBAAoBG,GACpB,EAAAD,SAAU,EACd,EXkmCJ,iBACE,OAAO,YACL,OAAO,IAAI,GAAS,GAAgB,CAAC,MAAO,EAAa,MAAO,IAAe,IAzNnF,mBACE,OAAO,YACL,OAAO,IAAI,GAAU,GAAgB,CAAC,SAAU,EAAgB,UAA8B,MAAnB,EAA0B,GAAW,GAAmB,KAAM,SAA4B,MAAlB,EAAyB,GAAW,GAAkB,OAAQ,IA9gBrN,iBACE,OAAO,YACL,OAAO,IAAI,GAAO,GAAgB,CAAC,OAAQ,EAAc,SAAU,IAAkB,IAoZzF,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,GYl0Bf,kCAItB,OAHI,gBAAM,+BAEN,OADI,KACJ,GAFM,KAGV,GANJ,iBAEI,OAAO30B,GAAM,EAAA60B,QAAN,EAAe,OZ48BtB,eACE,OAAO,IAAI,GAAQ,GAAI,SAAW,GA5IpC,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,Ga10BhB,kCAIrB,OAHI,gBAAM,+BAEN,OADI,KACJ,GAFM,KAGV,GANJ,iBAEI,OAAO70B,GAAM,EAAA1gE,QAAN,EAAc,Oby0BrB,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,Gcp0BmC,kCAI5E,OAHI,gBAAM,+BAEN,OADI,KACJ,GAFM,KAGV,GALA,iBAC4D,OAAA0gE,GAAA,EAAM80B,QAAN,EAAgB,Odm0BxE,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,GAs3BrC,eACE,OAAO,IAAI,GAAU,GAAI,SAAW,GA7uBtC,eACE,OAAO,IAAI,GAAQ,GAAI,SAAW,GA5IpC,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,Ge7zBb,kCAIxB,OAHI,gBAAM,+BAEN,OADI,KACJ,GAFM,KAGV,GANJ,iBAEI,OAAO90B,GAAM,EAAA+0B,QAAN,EAAiB,Of2/BxB,eACE,OAAO,IAAI,GAAQ,GAAI,SAAW,GAhMpC,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,GgB1zBN,kCAI/B,OAHI,gBAAM,+BAEN,OADI,KACJ,GAFM,KAGV,GANJ,iBAEI,OAAO/0B,GAAM,EAAAg1B,QAAN,EAAwB,OAwBJ,eAAG,ShBiyB9B,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,GiBz0BT,kCAI5B,OAHI,gBAAM,+BAEN,OADI,KACJ,GAFM,KAGV,GANJ,iBAEI,OAAOh1B,GAAM,EAAAi1B,QAAN,EAAqB,OjBw0B5B,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,GAk0BrC,eACE,OAAO,IAAI,GAAa,GAAI,SAAW,GkB3oD7B,eAEZZ,GAAA,UAA2CjyC,EAAqB,QAEhE,yBAAqD,KAAAkyC,MAAMC,OAYnC,eAAG,SAOG,kCAMlB,OALI,EAAAW,SAAW,EAAAxvF,MAAM0S,KAAKyxC,UAAU98D,KAAO,EACvC,EAAAooG,YAAc,8BAEd,OADI,EAAAb,MAAM,6BAAqB,EAAA5uF,MAAM0S,KAAKyxC,WAC1C,GAFc,IAGd,EAAAgB,KAAO,EAAAnlD,MAAM0S,KAAKyyC,KACtB,GAUkB,oCAGV,OAFI,EAAAuqC,QAAU,EACV,EAAAplC,cAAA,uBAAgB,c,yCAAhB,UAAgB,EAAAskC,QACpB,GlB6xBpB,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,GmBz0BZ,kCAIzB,OAHI,gBAAM,+BAEN,OADI,KACJ,GAFM,KAGV,GANJ,iBAEI,OAAOt0B,GAAM,EAAAq1B,QAAN,EAAkB,OnBw0BzB,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,GoB90BT,kCAI5B,OAHI,gBAAM,+BAEN,OADI,KACJ,GAFM,KAGV,GANJ,iBAEI,OAAOr1B,GAAM,EAAAs1B,QAAN,EAAqB,OpBk/B5B,eACE,OAAO,IAAI,GAAQ,GAAI,SAAW,GAYpC,eACE,OAAO,IAAI,GAAQ,GAAI,SAAW,GAnLpC,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,GqB5yBd,kCAIvB,OAHI,gBAAM,+BAEN,OADI,KACJ,GAFM,KAGV,GANJ,iBAEI,OAAOt1B,GAAM,EAAAu1B,QAAN,EAAgB,OA0GG,cAAC,SAMD,cAAC,SAII,eAAE,SrBogCjC,iBACE,OAAO,YACL,OAAO,IAAI,GAAS,GAAgB,CAAC,MAAO,EAAa,MAAO,IAAe,IApMnF,eACE,OAAO,IAAI,GAAQ,GAAI,SAAW,GAliBpC,iBACE,OAAO,YACL,OAAO,IAAI,GAAO,GAAgB,CAAC,OAAQ,EAAc,SAAU,IAAkB,IAoZzF,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,GAskBrC,eACE,OAAO,IAAI,GAAS,GAAI,SAAW,GsBp4CjB,kCAIpB,OAHI,gBAAM,+BAEN,OADI,KACJ,GAFM,KAGV,GANJ,iBAEI,OAAOv1B,GAAM,EAAAw1B,QAAN,EAAa,OC3BxB,sBAAsBrC,EAAA,UAAW,iBAA4B,GACzD,mBAAW,oBAAG,IxpB0P+B,sC,OAAA,0B,uGwoBzOtB,WAAQ,YAAA/wC,MAAMkyC,S,6JAWX,W,uCACd,OAAA1yC,GAAA,oCAAS,mBAAT,E,0YAFK,W,uCACC,MAAV,oCAAA6zC,UAAU,EAAQ,wC,6IAAlB,O,cAAU,c,8OAJlB,WAGiB,MAFH,GAAN,KAAArpB,SACA,KAAAA,MAAQgd,GAAe,GAAArgC,YAAYC,UACjCH,GAAN,KAAAujB,WAAM,UAAO,uB,MAAA,mB,OAAA,yB,kCAOjB,WACUmd,GAAN,KAAAnd,MAAa,wB,wPCnBM,WAAQ,YAAAhqB,MAAMkyC,S,+BAQrC,WN4uDgB,MAAhB,IAAgB,EM3uDZ,6BN2uDY,wB,CAAA,eM3uDY,yBN2uDC/6F,GM1uDf,GAAN,KAAA6yE,SACA,KAAAA,MAAQgd,GAAe,GAAArgC,YAAYC,W,iCAG3C,YACI0sC,EAAa1xG,MAAM,kBAAU0xG,EAAavnB,W,kCAG9C,WNkuDgB,MAAhB,IAAgB,EMjuDZ,6BNiuDY,wB,CAAA,eMjuDY,2BNiuDC50E,GMhuDnBgwF,GAAN,KAAAnd,MAAa,wB,mCAGjB,YACIspB,EAAa1xG,MAAM,oBAAY0xG,EAAavnB,W,iCAGhD,cACI,qCAAiB,OAAa,EAAM,YgBfxC,EAAK,UAAI50E,I,kObRT,WACU,aAAAo8F,kBAAA,WN6GV,IM5GI,MAAW,GAAA9B,SAASC,eAAe,kBACnC,EAAO8B,EAAKC,WAAWvuG,ON2G3B,EAAc,EAAd,EAAsBub,EAAtB,I,CM1GwB,QAAhB,OAAgB,EAAX,EAAAgzF,WAAWj8F,KAAK,KAAsB,EAAAk8F,YAAA,GAC3C,OAAgB,EAAX,EAAAD,WAAWj8F,KN0GbJ,KM1GyC,EAAAs8F,YAAA,GAE3CC,GAALH,EAAmB,SAAS,K,oEAOhC,8C,2BAEA,YXqzBE,IWvyBgB,EXuyBZ,EAAc,IAAI,GAAsB,IA5kBvC,EA6kBC,EA7kBS,IWtOL,YACA,gBACA,KAAW,GACX,cACA,cAGJI,GX4yBA,EW5yBQ,IAIRC,GXwyBA,GWxyBU,mBAIV,OAHI,EAAAprC,KAAO,EAAAnlD,MAAM0S,KAAKyyC,KAClB,EAAAtd,OAAA,kBAAS,c,oCAAT,UAAS,EAAA+mD,QACT,EAAA4B,aAAA,wBAAe,c,0CAAf,UAAe,EAAA5B,QACnB,KAEA6B,GXkyBA,EWlyBS,IXmyBC,gBAAe,EAAW,UW9xBxCA,GAAA,EAAS,K,mIO3Cb,8C,2BAEA,YAEI,IAUmB,EAVnB,EAAa,KAAAzwF,MAAM0S,KAAKg+E,YlBsoDtB,EAAc,IAAI,GAAsB,IkB/nDtC,GAHI,GlBmoDJ,EyBtlDI,MP7CK,eAGI,MAAV1uG,EACC2uG,GlB+nDJ,EkB/nDgB,Q,CAEZC,GlB6nDJ,GkB7nDe,gBAGX,OAFI,EAAAC,cAAgB,EAAO3sC,SACvB,EAAA4sC,UAAY,EAAO51E,MACvB,KAEA61E,GlBwnDJ,EkBxnDsB,UlBozB5B,IEo7BW,IFp7BP,EAAc,IAAI,GAAsB,IA5kBvC,EA6kBC,EA7kBS,IkB9NG,YACA,KAAW,GACX,gBACA,IAAQpD,EAAM,UAAAK,OhB0tDlC,IAAIl6F,EAAQ,EACZ,IAAa,EgBztDG,KAAAkM,MAAM0S,KAAKyxC,UhBytDd,wB,CAAA,eAAav6C,IAAmB9V,GAAA,EAAAA,GAAA,IAAnB,IgBxtDNk9F,GlBqyBZ,EkBryBsB,GhBwtDyB98F,EgBxtDzB,OlBwmDtB,EAl0BU,cAAe,EAAW,UA9kBrC,MAg5CC,EAh5CS,IkB/ML,EAAA+8F,QAAUC,GAAc,iBACxB,YACA5xE,GAAQ,EAAE,EAAF,IACR,gBACA,KAAW,GlB4lDL,gBAAe,EAAW,W,mFuB/pD9B,eASd,OARI,YAAwB,EAAH,KACrB,KAAe,EAAH,KACZ,IAAkBquE,EAAM,UAAAwD,aACxB,KAAY,EAAH,KACT,YACA,aACA,cACA,gBACJ,E,8DATA,W,OAAA,gD,6EADJ,0CGQW,eAAiCC,GAAA,UAChC10C,EACO,OAAoBA,EAAMkyC,MAAMyC,YAAY/yG,QAmBrC,yBAAlB,KAAAswG,MAAMyC,YAAwB,IAEvB,eACP,mBAH8B,iBAAmB,OAAjB,EAAAA,YAAc56F,EAAG,E,sEAhBjD,WAAQ,YAAAm4F,MAAMyC,YAAY/yG,MAAMgzG,YAAYnxC,a,sEAE1B,WAAQ,YAAAyuC,MAAM2C,a,2BAEpC,YAKS,MACoD,EACA,EANlD,EAAPC,GAAA,GAAO,mBAGP,OAFI,EAAAC,cAAiB,2BACjB,EAAAC,oBAAA,yBAAsB,Y,kCAAtB,UAAsB,gBAC1B,KACK,mBACD,eAAiB,YAAoC,wCAAyBvxC,WAC9E,gBAAiB,YAAoC,wCAAyBA,Y,+sCtBPvE,IAAAwtC,EAAM,WACF,IAAAA,EAAM,WACX,IAAAA,EAAM,WACJ,IAAAA,EAAM,W,SOmDK91E,GAAM,CACjC,iBAAiB,6BACjB,eAAe,4B,GAIEA,GAAM,CACvB,iIACW,4DACX,sHACW,8D,GCpDQ85E,GAAmC,YAAY,cZ8zBhE,IYnzB6B,EZmzBzB,EAAc,IAAI,GAAsB,IA5kBvC,EA6kBC,EA7kBS,IY9OT1D,GAAO,EAAG,EAAH,KACE,EAAAgB,UACL,EAAAgC,QAAUC,GAAc,mBAE5B,oBAAE,KAAOU,SAEb,MAA6CC,GAAvB,EAAA9C,kBAAkBxwF,KAAe,GACvD,IAA2B,EAAM,EAAAwwF,kBeqT+CxxF,QAAQ/I,WfrT7D,a,CAAA,eAAtBs9F,EewOuD,EAAAlzG,IfxOlDqkG,EeqPkD,EAAA3kG,MfpPxD,GAAG,GAAAwzG,EAAQC,IAAmB,EAAA9C,Q,CZg7BpC,IAAI,EAAc,IAAI,GAAsB,GALjC,KAEC,KAED,OY36BO,GZ66BZ,EyBj5BI,Mb5Ba,iBZ+yBjB,EA+HU,cAAe,EAAW,UAhhB1C,IAAI,EAAc,IAAI,GAAsB,GY1ZvBhM,EAAoB,WZ6nCrC,EAAc,IAAI,GAAsB,GAHpC,KAEA,OAEF,EyBtmCI,MbrBQlpF,IAAA,EZ2Nb,MAg6BC,EAh6BS,IYxNG,EAAAk3F,QAAUC,GAAc,iBACxBjD,GAAO,EAAE,EAAF,IACI,EAAAgB,UACP,KAAY,EAAH,KACT,KAAW,EAAH,KACR,IAAkB,EAAH,MZgZ/B,EAouBU,cAAe,EAAW,UApVpC,EA/YU,cAAe,EAAW,UY1YhD,OZ0xBsB,gBAAe,EAAW,UY1xBhD,K,GC9CsB0C,GAAkC,WAAW,cbs0B7D,IAAI,EAAc,IAAI,GAAsB,IA2IxC,EAAc,IAAI,GAAsB,IACtC,Ea/8BA,kBAAQ,EAAAztD,MbuPT,MAwtBC,EAxtBS,IahPrB,OALgB,EAAA+sD,QAAUC,GAAc,kBACxB,KAAe,GAAJ,Mbi0Bf,EA4IU,cAAe,EAAW,UA3I1B,gBAAe,EAAW,Ua9zBhD,K,GCHgBS,GAAoC,aAAY,cd+zB1D,IAAI,EAAc,IAAI,GAAsB,IACtC,EA7kBS,IchPTV,QAAUC,GAAc,eduqC9B,IAdF,QcppC+B,EdkqCzB,EAAc,IAAI,IAdxB,EAcgE,OAdhE,EASkB,KATlB,EAWiB,KAXjB,EAaW,KAZF,YACL,OAAO,IAAI,GAAW,GAAgB,CAAC,OAAwB,MAAhB,EAAuB,GAAW,GAAgB,KAAM,cAAsC,MAAvB,EAA8B,GAAW,GAAuB,KAAM,aAAoC,MAAtB,EAA6B,GAAW,GAAsB,KAAM,OAAQ,IAAgB,MyBjnCnS,EzB8nCC,EyB9nCI,MXtCA,EAAAc,YAAc,SACd,MAAmB,gBACF,IAAG,EAAhB,EAAa,SAAG,EAAHv7F,EAAGoG,OAAH,yBAEjB,OADI,EAAM2zF,aAAa3zF,EAAOve,OAC9B,KACA,KAAyB,+BAKzB,MAJ6B,SAAnB,EAAYM,MciOwB,IdhOnC,EAAMumE,KcgOmBvjE,OdhOHs7B,OAAO+0E,MAAM,yCACjC,EAAMpqD,OAAO,EAAMsd,OAEhC,GALyB,KAMzB,EAAA7mE,MAAc,EAAA6mE,KdypClB,EAx7BS,Ic9NL8rC,QAAUC,GAAc,iBd2yB5B,EA4WU,cAAe,EAAW,UAvjB1C,IAAI,EAAc,IAAI,GAZxB,gBACE,OAAO,YACL,OAAO,IAAI,GAAY,GAAgB,CAAC,cAAsC,MAAvB,EAA8B,GAAW,GAAuB,KAAM,aAAoC,MAAtB,EAA6B,GAAW,GAAsB,KAAM,OAAwB,MAAhB,EAAuB,GAAW,GAAgB,OAAQ,IAUvO,CAL5B,KAED,KAEN,Oc1lBC,Gd4lBJ,EyBzkBI,MXnBkB,+BAGlB,OciN8C,IdnNvC,EAAM/rC,KcmNuBvjE,OdnNPs7B,OAAO+0E,MAAM,yCACjC,EAAMpqD,OAAO,EAAMsd,MAC5B,GAHkB,Kd4lBtB,EAnYS,IcnNL8rC,QAAUC,GAAc,kBdknClC,IAVF,IAUM,EAAc,IAAI,IAVxB,EAOU,KAPV,EctmCwB,adumCf,YACL,OAAO,IAAI,GAAS,GAAgB,CAAC,MAAO,EAAa,MAAO,IAAe,McjmCvF,Od0mCY,EAh6BS,Ic/MDD,QAAUC,GAAc,iBdklBhC,EA8hBU,cAAe,EAAW,UApVpC,EAzMU,cAAe,EAAW,UA0M1B,gBAAe,EAAW,UcxxBhD,Ke3CkCS,GAA8C,yBAAyB,c7Bi0BnG,IAAI,EAAc,IAAI,GAAsB,IAu3BxC,EAAc,IAAI,GAAsB,IACtC,E6BvrDS,kBAAU,EAAA/tC,SAAT,gB7Bg0BV,EAw3BU,cAAe,EAAW,UAz3B1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EA7kBS,I6BhPLqtC,QAAUC,GAAc,uB7B4zBlC,IAAI,EAAc,IAAI,GAAsB,IACtC,EA7kBS,I6B9OQD,QAAUC,GAAc,iB7B2zBzC,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EA7kBS,I6B7OQD,QAAUC,GAAc,e7B0zBzC,EACU,cAAe,EAAW,UADpC,EACU,cAAe,EAAW,UA9kBrC,MA6kBC,EA7kBS,I6B1OT,YACA,cACgE,MAAtDA,GAAc,mBAAkB,IAAU,EAAAttC,WAKhE,OAL6F,EAAAA,SAAS,IxBsBlG,EwBtBsG,UAAI,UAAlG,EAAAqtC,QxBuBD,EwBtBC,KAAW,EAAH,KACR,KAAkB,EAAH,K7BozBL,gBAAe,EAAW,U6BjzBhD,K,GdVyBU,GAAqC,cAAa,cfyzBrE,IAyUF,IAzUM,EAAc,IAAI,GAAsB,IAmVxC,EAAc,IAAI,IAVxB,EAOU,KAPV,EehoCyB,EAAAd,cfioChB,YACL,OAAO,IAAI,GAAS,GAAgB,CAAC,MAAO,EAAa,MAAO,IAAe,MAv5B5E,EAg6BC,EAh6BS,IezOL,KAAa,EAAJ,MACT,KAAY,EAAJ,MfqzBZ,EAoVU,cAAe,EAAW,UA1M1C,IAAI,EAAc,IAAI,GAAsB,IACtC,Ee57BA,kBAAO,EAAAC,WAEH,Gf07BJ,EAxtBS,IelOL,Wf+yBJ,EA4IU,cAAe,EAAW,Uev7BpC,Gf2yBA,EyBnxBI,MVxBC,ef8NN,MA6kBC,EA7kBS,IerNrB,OANY,YACA,cACA,gBACA,KAAe,EAAH,KfsyBF,gBAAe,EAAW,UenyBhD,K,GCrBgCa,GAA4C,qBAAqB,cf6qB3F,QDkdF,IgBxmCkC,IfupB5B,EAAS,Ie5qBuB,Gf6qBhC,EAAQ,EAAO,GACf,EAAW,EAAO,G,EACf,IAAI,GAAsC,OAAjB,EAAO,IAAwB,SAAQ,EAAM,IAAO,EAAO,KAA2C,mBAAvB,EAAS,GAA2B,EAAS,Me/qBzJO,EAAA,eAAUC,EAAA,eAMf,GAJAz3C,GAAUw2C,GAAc,CAAAx0C,EAAMyI,OAAM,8BAEpC,OADI,GAAW,GACf,GAFoC,KAIjCzI,EAAM8yC,SACL,GAAG0C,E,ChB6yBL,IAAI,EAAc,IAAI,GAAsB,IA5kBvC,EA6kBC,EA7kBS,IgB9ND,YACA,cACA,cACA,KAAY,EAAH,KAEbE,GhBsyBJ,EgBtyBmB,IhBuyBT,gBAAe,EAAW,c,CAF1C,IAAI,EAAc,IAAI,GAAsB,IgB/xB9B,GhBgyBR,EyBnxBI,OTbsB,oBAGlB,OAFI,EAAM3C,cACN,GAAW,GACf,KhB4xBd,IAAI,EAAc,IAAI,GAAsB,IAmVxC,EAAc,IAAI,IAVxB,EgBjmCqD,sBhBimCrD,EgBjmCgC,ehBkmCvB,YACL,OAAO,IAAI,GAAS,GAAgB,CAAC,MAAO,EAAa,MAAO,IAAe,MAv5B5E,EAg6BC,EAh6BS,IgB1MO,EAAAwB,QAAUC,GAAc,uBACxB,KAAY,EAAH,KhBsxBzB,EAoVU,cAAe,EAAW,UAtJ1C,IAAI,EAAc,IAAI,GAAsB,IgB98BtB,GhB+8BhB,EyBl9BI,MTGiB,qBhB+8BrB,EgB78BY,kBAAE,gBhBiMf,MA4wBC,EA5wBS,IgB/LO,gBACA,KAAc,EAAH,KhB2wB3B,EAgMU,cAAe,EAAW,UA7wBrC,MA6kBC,EA7kBS,IgBzLG,EAAAD,QAAUC,GAAc,mBACxB,YACA,chBowBZ,EACU,cAAe,EAAW,UA9kBrC,MA6kBC,EA7kBS,IgBnLD,EAAAD,QAAUC,GAAc,qBACxB,YACA,chB+vBE,gBAAe,EAAW,UgB1vBhD,Y,GCxE6BS,GAAyC,yBAAyB,cjBg0BzF,IiB9zBuB,IjB8zBnB,EAAc,IAAI,GAAsB,IiB9zBrB,IAAA7tC,OACkB,EAAnC,gEAAmC,wBACnC,6DAAgC,YAChC,yDAA4B,YACpB,GAJZ,IjBuoCJ,IiB/nC8B,EjByoCxB,EAAc,IAAI,IAVxB,EAOU,KAPV,EiBvoCI,EjBwoCK,YACL,OAAO,IAAI,GAAS,GAAgB,CAAC,MAAO,EAAa,MAAO,IAAe,MiBjoCvE,GjB0oCJ,EyBtmCI,ORpCkB,gBAElB,OADI,EAAMuuC,UACV,KjBwOL,MAg6BC,EAh6BS,IiBrOL,KAAc,GAAL,MACTpE,GAAO,EAAE,EAAF,IjBizBX,EAoVU,cAAe,EAAW,UAj6BrC,MA6kBC,EA7kBS,IiB5NrB,OAJY,EAAAgD,QAAUC,GAAc,iBACxB,IAAmB,EAAJ,MjB6yBL,gBAAe,EAAW,UiB1yBhD,K,GE7B0BS,GAA4B,qBAAqB,cnBq0BrE,IAAI,EAAc,IAAI,GAAsB,IA5kBvC,EA6kBC,EA7kBS,ImBtPT,KAAW,GACX,YACA,cnBg0BN,IAAI,EAAc,IAAI,GAAsB,IAAxC,EAAc,IAAI,GAAsB,IACtC,EA7kBS,ImBjPSV,QAAUC,GAAc,sBnB8zB1C,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EA7kBS,ImBhPSD,QAAUC,GAAc,sBnB6zB1C,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EA7kBS,ImB/OSD,QAAUC,GAAc,sBnB4zB1C,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EA7kBS,ImB9OSD,QAAUC,GAAc,sBnB2zB1C,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EA7kBS,ImB7OSD,QAAUC,GAAc,sBnB0zB1C,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EA7kBS,ImB5OSD,QAAUC,GAAc,sBnByzB1C,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EA7kBS,ImB3OSD,QAAUC,GAAc,sBnBwzB1C,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EA7kBS,ImB1OSD,QAAUC,GAAc,sBnBuzB1C,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EA7kBS,ImBzOSD,QAAUC,GAAc,sBnBszB1C,EACU,cAAe,EAAW,UA9kBrC,MA6kBC,EA7kBS,ImBhOrB,OANgB,EAAAD,QAAUC,GAAc,kBACxB,KAAY,EAAH,KACT,KAAW,EAAH,KnBizBZ,EACU,cAAe,EAAW,UAA1B,gBAAe,EAAW,UmB9yBhD,K,GC9B6BS,GAA4B,mBAAmB,cpB00BtE,IAAI,EAAc,IAAI,GAAsB,IAAxC,EAAc,IAAI,GAAsB,IACtC,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EACU,cAAe,EAAW,UA9kBrC,MA6kBC,EA7kBS,IoBlPrB,OALY,EAAAV,QAAUC,GAAc,cACxB,KAAW,EAAH,KACR,KAAgB,EAAF,IpBm0BJ,gBAAe,EAAW,UoBh0BhD,K,GCsBwBS,GAAoC,cAAa,cpB+pBnE,QoB5pB8B,IpB6pB1B,EAAS,GoB/pBmCj1C,EAAMgzC,QAAQzpC,YpBgqB1D,EAAQ,EAAO,GACf,EAAW,EAAO,G,EACf,IAAI,GAAsC,OAAjB,EAAO,IAAwB,SAAQ,EAAM,IAAO,EAAO,KAA2C,mBAAvB,EAAS,GAA2B,EAAS,MoBlqBzJqsC,EAAA,eAAeC,EAAA,eACpB,EAAc71C,EAAMgzC,QACpBh1C,GAAU3lD,GAAO2nD,EAAMgzC,UAAS,mBAEhC,OADI,EAAkB,EAAMA,QAAQzpC,YACpC,KrBmyBE,IAyUF,IAzUM,EAAc,IAAI,GAAsB,IAmVxC,EAAc,IAAI,IAVxB,EAOU,KAPV,EqB1mC4B,EAAA4E,YrB2mCnB,YACL,OAAO,IAAI,GAAS,GAAgB,CAAC,MAAO,EAAa,MAAO,IAAe,MAv5B5E,EAg6BC,EAh6BS,IqBnNL,KAAY,EAAH,KACT,KAAW,EAAH,KrB+xBZ,EAoVU,cAAe,EAAW,UArV1C,IAAI,EAAc,IAAI,GAAsB,IqBxxBlC,GrByxBJ,EyBnxBI,MJNK,gBrB4MV,MA6kBC,EA7kBS,IqBzML,KAAW,GACX,KAAa,EAAF,IACX,YACA,gBACAojC,GAAO,EAAE,EAAF,IrBixBjB,IAAI,EAAc,IAAI,GAAsB,IA5kBvC,EA6kBC,EA7kBS,IqBjMD,KAAY,EAAH,KACT,cACA,YrBg7Bd,IAAI,EAAc,IAAI,GAAsB,IACtC,EqB96BQ,kBAAU,EAAA/yE,OrB4LnB,MAkvBC,EAlvBS,IqB1LGoE,GAAQ,EAAE,EAAF,IACR,KAAe,GAAJ,MACX,kBACA,gBACA,gBrBmwBZ,EAsKU,cAAe,EAAW,UAtKpC,EACU,cAAe,EAAW,UAF1C,IAAI,EAAc,IAAI,GAAsB,IA5kBvC,EA6kBC,EA7kBS,IqBhLD,KAAY,EAAH,KACT,cACA,YrB46Bd,IAAI,EAAc,IAAI,GAAsB,IACtC,EqB16BQ,kBAAkB6qC,GAAR,EAAAnD,QAAqB,MrB2KxC,MA+vBC,EA/vBS,IqBzKG,KAAW,GACX1nC,GAAQ,EAAE,EAAF,IACR,KAAa,GAAF,IACX,KAAe,GAAJ,MACX,kBACA,gBACA,gBrBgvBZ,EAmLU,cAAe,EAAW,UAF1C,IqBx3ByB,ErBw3BrB,EAAc,IAAI,GAAsB,IA9vBvC,EA+vBC,EA/vBS,IqB9JG,aACA,KAAW,GACXA,GAAQ,EAAE,EAAF,IACR,KAAa,GAAF,IACX,KAAe,GAAJ,MACX,kBACA,gBACA,gBrBs5BZ,EqBp5BQ,mBAAa,EAAA2oC,YAAY,GAApB,GAAH,oBAA0C,EAAAA,YAAY,GAAtD,QrBkuBV,EAmLU,cAAe,EAAW,UAnLpC,EACU,cAAe,EAAW,UADpC,EACU,cAAe,EAAW,UqB9tBpC,gEACIuqC,GrB4tBJ,EqB5tBmB,qCAMf,OALI,EAAAH,QAAU,kCAGV,OAFI,aACA,EAAM/nC,cAAc,GACxB,GAHU,QAIV,EAAAxG,OAAS,EACb,GANe,WAoBnB,6DACI0uC,GrBusBJ,GqBvsBmB,gBAGf,OAFI,EAAAH,QAAU,GACV,EAAAvuC,OAAS,EACb,KAEJ,yDACI0uC,GrBisBJ,EqBjsBmB,+BAGf,OAFI,EAAAH,QAAU,GACV,EAAAvuC,OAAS,EACb,GAHe,KAKXsuC,GrB4rBR,EqB5rBuB,IrB+GxB,MA6kBC,EA7kBS,IqBtGrB,OALY,cACA,YACA,KAAkB,EAAH,KrBurBL,gBAAe,EAAW,UqBprBhD,K,GCjIqBT,GAAiC,UAAU,ctB03C1D,IAAI,EAAc,IAAI,GAAsB,IACtC,EAppCS,IsBnOT,kBAAC,KAAac,KtB+yBpB,IsB3yB4B,EtB2yBxB,EAAc,IAAI,GAAsB,IyBlxBvC,EzBmxBC,EyBnxBI,MHzBA,MAAkB,gBAElB,OADI,EAAMf,sBACV,KACA,KAAiB,+BAEjB,OADI,EAAMA,sBACV,GAFiB,KtB2nC3B,IAAI,EAAc,IAAI,GAAsB,GsBvnCC,aAAvB,mBtBwNjB,EAg6BC,EAh6BS,IsBtND,KAAY,EAAH,KACT,KAAW,EAAH,KACR,IAAmB,EAAAD,cAAT,iBACV,KAAS,eACT,KAAiB,EAAH,KtB+xBtB,EAoVU,cAAe,EAAW,UAmPpC,EAtkBU,cAAe,EAAW,UAlZ1C,IAAI,EAAc,IAAI,GAAsB,GsB1Y3B,0CAAiD,WtB8M7D,EA6LC,EA7LS,IsB5ML,YACA,ctB0mCV,IAAI,EAAc,IAAI,GAAsB,GsBxmCC,OAAvB,mBtByMjB,EAg6BC,EAh6BS,IsBvMD,KAAY,EAAH,KACT,KAAW,EAAH,KtBmYhB,EAouBU,cAAe,EAAW,UA1M1C,IAAI,EAAc,IAAI,GAAsB,IACtC,EsB15BI,kBAAC,cAEG,GtBw5BR,EyB95BI,MHMS,WtBgMd,MAwtBC,EAxtBS,IsB7LD,KAAc,EAAH,KACX,YAAuB,EAAH,KtByX5B,EA4hBU,cAAe,EAAW,UA2bpC,EAt9BU,cAAe,EAAW,UA8Y1C,IAAI,EAAc,IAAI,GAAsB,IAhZxC,EAAc,IAAI,GAAsB,GsB7UvB,2CtB4UV,OAouBP,EAAc,IAAI,GAAsB,GAHpC,KsB5iCkB,etBgJrB,EAg6BC,EAh6BS,IsB9IG,KAAY,EAAH,KACT,KAAW,EAAH,KtB0UpB,EAouBU,cAAe,EAAW,UApVpC,EA/YU,cAAe,EAAW,UA9LrC,MA6kBC,EA7kBS,IsBlIrB,OANgB,YACA,cACA,KAAaiB,GAAgB,UAAAC,MtB0xCjC,EAtkBU,cAAe,EAAW,UAukB1B,gBAAe,EAAW,UsBvxChD,K;;;;;;;;GQ1Ja,IAAIr1G,EAAE,EAAQ,IAAiBwB,EAAE,MAAMK,EAAE,MAAMtC,EAAQw+D,SAAS,MAAMx+D,EAAQ+1G,WAAW,MAAM/1G,EAAQg2G,SAAS,MAAM,IAAI1yE,EAAE,MAAMhiC,EAAE,MAAMI,EAAE,MAAM1B,EAAQi2G,SAAS,MAAM,IAAInhE,EAAE,MAAM94B,EAAE,MACpM,GAAG,mBAAoBza,QAAQA,OAAO2/F,IAAI,CAAC,IAAIjgE,EAAE1/B,OAAO2/F,IAAIj/F,EAAEg/B,EAAE,iBAAiB3+B,EAAE2+B,EAAE,gBAAgBjhC,EAAQw+D,SAASv9B,EAAE,kBAAkBjhC,EAAQ+1G,WAAW90E,EAAE,qBAAqBjhC,EAAQg2G,SAAS/0E,EAAE,kBAAkBqC,EAAErC,EAAE,kBAAkB3/B,EAAE2/B,EAAE,iBAAiBv/B,EAAEu/B,EAAE,qBAAqBjhC,EAAQi2G,SAASh1E,EAAE,kBAAkB6T,EAAE7T,EAAE,cAAcjlB,EAAEilB,EAAE,cAAc,IAAIlwB,EAAE,mBAAoBxP,QAAQA,OAAOoW,SACtR,SAAS+8B,EAAExxC,GAAG,IAAI,IAAI4B,EAAE,yDAAyD5B,EAAErC,EAAE,EAAEA,EAAEiP,UAAU/K,OAAOlE,IAAIiE,GAAG,WAAWoxG,mBAAmBpmG,UAAUjP,IAAI,MAAM,yBAAyBqC,EAAE,WAAW4B,EAAE,iHACpU,IAAI6qC,EAAE,CAACwmE,UAAU,WAAW,OAAM,GAAIC,mBAAmB,aAAaC,oBAAoB,aAAaC,gBAAgB,cAAc1mE,EAAE,GAAG,SAASC,EAAE3sC,EAAE4B,EAAEjE,GAAGT,KAAKy/D,MAAM38D,EAAE9C,KAAK0b,QAAQhX,EAAE1E,KAAKm2G,KAAK3mE,EAAExvC,KAAKo2G,QAAQ31G,GAAG8uC,EACpN,SAASG,KAA6B,SAAS2mE,EAAEvzG,EAAE4B,EAAEjE,GAAGT,KAAKy/D,MAAM38D,EAAE9C,KAAK0b,QAAQhX,EAAE1E,KAAKm2G,KAAK3mE,EAAExvC,KAAKo2G,QAAQ31G,GAAG8uC,EADsGE,EAAEztC,UAAUs0G,iBAAiB,GAAG7mE,EAAEztC,UAAUi9D,SAAS,SAASn8D,EAAE4B,GAAG,GAAG,iBAAkB5B,GAAG,mBAAoBA,GAAG,MAAMA,EAAE,MAAMoE,MAAMotC,EAAE,KAAKt0C,KAAKo2G,QAAQF,gBAAgBl2G,KAAK8C,EAAE4B,EAAE,aAAa+qC,EAAEztC,UAAUu0G,YAAY,SAASzzG,GAAG9C,KAAKo2G,QAAQJ,mBAAmBh2G,KAAK8C,EAAE,gBACnd4sC,EAAE1tC,UAAUytC,EAAEztC,UAAsF,IAAIw0G,EAAEH,EAAEr0G,UAAU,IAAI0tC,EAAE8mE,EAAEj0G,YAAY8zG,EAAEh2G,EAAEm2G,EAAE/mE,EAAEztC,WAAWw0G,EAAEC,sBAAqB,EAAG,IAAItjD,EAAE,CAACx3C,QAAQ,MAAM43E,EAAEzyF,OAAOkB,UAAUC,eAAe00D,EAAE,CAACh1D,KAAI,EAAGm9D,KAAI,EAAG43C,QAAO,EAAGC,UAAS,GAChS,SAASC,EAAE9zG,EAAE4B,EAAEjE,GAAG,IAAI8D,EAAE7D,EAAE,GAAGgT,EAAE,KAAKg6B,EAAE,KAAK,GAAG,MAAMhpC,EAAE,IAAIH,UAAK,IAASG,EAAEo6D,MAAMpxB,EAAEhpC,EAAEo6D,UAAK,IAASp6D,EAAE/C,MAAM+R,EAAE,GAAGhP,EAAE/C,KAAK+C,EAAE6uF,EAAEhzF,KAAKmE,EAAEH,KAAKoyD,EAAE10D,eAAesC,KAAK7D,EAAE6D,GAAGG,EAAEH,IAAI,IAAIorC,EAAEjgC,UAAU/K,OAAO,EAAE,GAAG,IAAIgrC,EAAEjvC,EAAEi+D,SAASl+D,OAAO,GAAG,EAAEkvC,EAAE,CAAC,IAAI,IAAIzqC,EAAEnC,MAAM4sC,GAAGnvC,EAAE,EAAEA,EAAEmvC,EAAEnvC,IAAI0E,EAAE1E,GAAGkP,UAAUlP,EAAE,GAAGE,EAAEi+D,SAASz5D,EAAE,GAAGpC,GAAGA,EAAE+zG,aAAa,IAAItyG,KAAKorC,EAAE7sC,EAAE+zG,kBAAe,IAASn2G,EAAE6D,KAAK7D,EAAE6D,GAAGorC,EAAEprC,IAAI,MAAM,CAACuyG,SAASj1G,EAAEuU,KAAKtT,EAAEnB,IAAI+R,EAAEorD,IAAIpxB,EAAE+xB,MAAM/+D,EAAEq2G,OAAO5jD,EAAEx3C,SACxU,SAASq7F,EAAEl0G,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEg0G,WAAWj1G,EAAqG,IAAIqwD,EAAE,OAAO,SAAStnB,EAAE9nC,EAAE4B,GAAG,MAAM,iBAAkB5B,GAAG,OAAOA,GAAG,MAAMA,EAAEnB,IAA7K,SAAgBmB,GAAG,IAAI4B,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAI5B,EAAE+jB,QAAQ,SAAQ,SAAS/jB,GAAG,OAAO4B,EAAE5B,MAAmFykF,CAAO,GAAGzkF,EAAEnB,KAAK+C,EAAEP,SAAS,IAC5W,SAASmP,EAAExQ,EAAE4B,EAAEjE,EAAE8D,EAAE7D,GAAG,IAAIgT,SAAS5Q,EAAK,cAAc4Q,GAAG,YAAYA,IAAE5Q,EAAE,MAAK,IAAI4qC,GAAE,EAAG,GAAG,OAAO5qC,EAAE4qC,GAAE,OAAQ,OAAOh6B,GAAG,IAAK,SAAS,IAAK,SAASg6B,GAAE,EAAG,MAAM,IAAK,SAAS,OAAO5qC,EAAEg0G,UAAU,KAAKj1G,EAAE,KAAKK,EAAEwrC,GAAE,GAAI,GAAGA,EAAE,OAAWhtC,EAAEA,EAANgtC,EAAE5qC,GAASA,EAAE,KAAKyB,EAAE,IAAIqmC,EAAE8C,EAAE,GAAGnpC,EAAExB,MAAMC,QAAQtC,IAAID,EAAE,GAAG,MAAMqC,IAAIrC,EAAEqC,EAAE+jB,QAAQqrC,EAAE,OAAO,KAAK5+C,EAAE5S,EAAEgE,EAAEjE,EAAE,IAAG,SAASqC,GAAG,OAAOA,MAAK,MAAMpC,IAAIs2G,EAAEt2G,KAAKA,EAD/W,SAAWoC,EAAE4B,GAAG,MAAM,CAACoyG,SAASj1G,EAAEuU,KAAKtT,EAAEsT,KAAKzU,IAAI+C,EAAEo6D,IAAIh8D,EAAEg8D,IAAIW,MAAM38D,EAAE28D,MAAMs3C,OAAOj0G,EAAEi0G,QAC4RrkB,CAAEhyF,EAAED,IAAIC,EAAEiB,KAAK+rC,GAAGA,EAAE/rC,MAAMjB,EAAEiB,IAAI,IAAI,GAAGjB,EAAEiB,KAAKklB,QAAQqrC,EAAE,OAAO,KAAKpvD,IAAI4B,EAAEsZ,KAAKtd,IAAI,EAAyB,GAAvBgtC,EAAE,EAAEnpC,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOxB,MAAMC,QAAQF,GAAG,IAAI,IAAI6sC,EACzf,EAAEA,EAAE7sC,EAAE6B,OAAOgrC,IAAI,CAAQ,IAAIzqC,EAAEX,EAAEqmC,EAAfl3B,EAAE5Q,EAAE6sC,GAAeA,GAAGjC,GAAGp6B,EAAEI,EAAEhP,EAAEjE,EAAEyE,EAAExE,QAAQ,GAAU,mBAAPwE,EANhE,SAAWpC,GAAG,OAAG,OAAOA,GAAG,iBAAkBA,EAAS,KAAsC,mBAAjCA,EAAE6N,GAAG7N,EAAE6N,IAAI7N,EAAE,eAA0CA,EAAE,KAMlDiP,CAAEjP,IAAyB,IAAIA,EAAEoC,EAAE3E,KAAKuC,GAAG6sC,EAAE,IAAIj8B,EAAE5Q,EAAE4U,QAAQsrC,MAA6BtV,GAAGp6B,EAA1BI,EAAEA,EAAErS,MAA0BqD,EAAEjE,EAAtByE,EAAEX,EAAEqmC,EAAEl3B,EAAEi8B,KAAkBjvC,QAAQ,GAAG,WAAWgT,EAAE,MAAMhP,EAAE,GAAG5B,EAAEoE,MAAMotC,EAAE,GAAG,oBAAoB5vC,EAAE,qBAAqB5D,OAAOwgB,KAAKxe,GAAG0B,KAAK,MAAM,IAAIE,IAAI,OAAOgpC,EAAE,SAASupE,EAAEn0G,EAAE4B,EAAEjE,GAAG,GAAG,MAAMqC,EAAE,OAAOA,EAAE,IAAIyB,EAAE,GAAG7D,EAAE,EAAmD,OAAjD4S,EAAExQ,EAAEyB,EAAE,GAAG,IAAG,SAASzB,GAAG,OAAO4B,EAAEnE,KAAKE,EAAEqC,EAAEpC,QAAc6D,EAC1Z,SAAS2yG,EAAEp0G,GAAG,IAAI,IAAIA,EAAEq0G,QAAQ,CAAC,IAAIzyG,EAAE5B,EAAEs0G,QAAQ1yG,EAAEA,IAAI5B,EAAEq0G,QAAQ,EAAEr0G,EAAEs0G,QAAQ1yG,EAAEA,EAAE2yG,MAAK,SAAS3yG,GAAG,IAAI5B,EAAEq0G,UAAUzyG,EAAEA,EAAE87C,QAAQ19C,EAAEq0G,QAAQ,EAAEr0G,EAAEs0G,QAAQ1yG,MAAI,SAASA,GAAG,IAAI5B,EAAEq0G,UAAUr0G,EAAEq0G,QAAQ,EAAEr0G,EAAEs0G,QAAQ1yG,MAAK,GAAG,IAAI5B,EAAEq0G,QAAQ,OAAOr0G,EAAEs0G,QAAQ,MAAMt0G,EAAEs0G,QAAS,IAAIj0D,EAAE,CAACxnC,QAAQ,MAAM,SAAS27F,IAAI,IAAIx0G,EAAEqgD,EAAExnC,QAAQ,GAAG,OAAO7Y,EAAE,MAAMoE,MAAMotC,EAAE,MAAM,OAAOxxC,EAAE,IAAIk2F,EAAE,CAACue,uBAAuBp0D,EAAEq0D,wBAAwB,CAACC,WAAW,GAAGC,kBAAkBvkD,EAAEwkD,qBAAqB,CAACh8F,SAAQ,GAAIuwC,OAAO7rD,GACjeT,EAAQo8D,SAAS,CAAC13D,IAAI2yG,EAAEpmD,QAAQ,SAAS/tD,EAAE4B,EAAEjE,GAAGw2G,EAAEn0G,GAAE,WAAW4B,EAAE+K,MAAMzP,KAAK0P,aAAYjP,IAAI+W,MAAM,SAAS1U,GAAG,IAAI4B,EAAE,EAAuB,OAArBuyG,EAAEn0G,GAAE,WAAW4B,OAAaA,GAAGmZ,QAAQ,SAAS/a,GAAG,OAAOm0G,EAAEn0G,GAAE,SAASA,GAAG,OAAOA,MAAK,IAAI80G,KAAK,SAAS90G,GAAG,IAAIk0G,EAAEl0G,GAAG,MAAMoE,MAAMotC,EAAE,MAAM,OAAOxxC,IAAIlD,EAAQm9D,UAAUttB,EAAE7vC,EAAQi4G,cAAcxB,EAAEz2G,EAAQk4G,mDAAmD9e,EAChXp5F,EAAQu8D,aAAa,SAASr5D,EAAE4B,EAAEjE,GAAG,GAAG,MAAOqC,EAAc,MAAMoE,MAAMotC,EAAE,IAAIxxC,IAAI,IAAIyB,EAAElE,EAAE,GAAGyC,EAAE28D,OAAO/+D,EAAEoC,EAAEnB,IAAI+R,EAAE5Q,EAAEg8D,IAAIpxB,EAAE5qC,EAAEi0G,OAAO,GAAG,MAAMryG,EAAE,CAAoE,QAAnE,IAASA,EAAEo6D,MAAMprD,EAAEhP,EAAEo6D,IAAIpxB,EAAEylB,EAAEx3C,cAAS,IAASjX,EAAE/C,MAAMjB,EAAE,GAAGgE,EAAE/C,KAAQmB,EAAEsT,MAAMtT,EAAEsT,KAAKygG,aAAa,IAAIlnE,EAAE7sC,EAAEsT,KAAKygG,aAAa,IAAI3xG,KAAKR,EAAE6uF,EAAEhzF,KAAKmE,EAAEQ,KAAKyxD,EAAE10D,eAAeiD,KAAKX,EAAEW,QAAG,IAASR,EAAEQ,SAAI,IAASyqC,EAAEA,EAAEzqC,GAAGR,EAAEQ,IAAI,IAAIA,EAAEwK,UAAU/K,OAAO,EAAE,GAAG,IAAIO,EAAEX,EAAEo6D,SAASl+D,OAAO,GAAG,EAAEyE,EAAE,CAACyqC,EAAE5sC,MAAMmC,GAAG,IAAI,IAAI1E,EAAE,EAAEA,EAAE0E,EAAE1E,IAAImvC,EAAEnvC,GAAGkP,UAAUlP,EAAE,GAAG+D,EAAEo6D,SAAShvB,EAAE,MAAM,CAACmnE,SAASj1G,EAAEuU,KAAKtT,EAAEsT,KACxfzU,IAAIjB,EAAEo+D,IAAIprD,EAAE+rD,MAAMl7D,EAAEwyG,OAAOrpE,IAAI9tC,EAAQm4G,cAAc,SAASj1G,EAAE4B,GAA8K,YAA3K,IAASA,IAAIA,EAAE,OAAM5B,EAAE,CAACg0G,SAAS51G,EAAE82G,sBAAsBtzG,EAAEuzG,cAAcn1G,EAAEo1G,eAAep1G,EAAEq1G,aAAa,EAAEC,SAAS,KAAKC,SAAS,OAAQD,SAAS,CAACtB,SAAS5zE,EAAEo1E,SAASx1G,GAAUA,EAAEu1G,SAASv1G,GAAGlD,EAAQ2qB,cAAcqsF,EAAEh3G,EAAQ24G,cAAc,SAASz1G,GAAG,IAAI4B,EAAEkyG,EAAEh1G,KAAK,KAAKkB,GAAY,OAAT4B,EAAE0R,KAAKtT,EAAS4B,GAAG9E,EAAQ44G,UAAU,WAAW,MAAM,CAAC78F,QAAQ,OAAO/b,EAAQ64G,WAAW,SAAS31G,GAAG,MAAM,CAACg0G,SAASx1G,EAAEygE,OAAOj/D,IAAIlD,EAAQ84G,eAAe1B,EAC3ep3G,EAAQ+uE,KAAK,SAAS7rE,GAAG,MAAM,CAACg0G,SAASl7F,EAAE+8F,SAAS,CAACxB,SAAS,EAAEC,QAAQt0G,GAAGi9B,MAAMm3E,IAAIt3G,EAAQg5G,KAAK,SAAS91G,EAAE4B,GAAG,MAAM,CAACoyG,SAASpiE,EAAEt+B,KAAKtT,EAAEwJ,aAAQ,IAAS5H,EAAE,KAAKA,IAAI9E,EAAQi5G,YAAY,SAAS/1G,EAAE4B,GAAG,OAAO4yG,IAAIuB,YAAY/1G,EAAE4B,IAAI9E,EAAQk5G,WAAW,SAASh2G,EAAE4B,GAAG,OAAO4yG,IAAIwB,WAAWh2G,EAAE4B,IAAI9E,EAAQm5G,cAAc,aAAan5G,EAAQ69D,UAAU,SAAS36D,EAAE4B,GAAG,OAAO4yG,IAAI75C,UAAU36D,EAAE4B,IAAI9E,EAAQo5G,oBAAoB,SAASl2G,EAAE4B,EAAEjE,GAAG,OAAO62G,IAAI0B,oBAAoBl2G,EAAE4B,EAAEjE,IAC9cb,EAAQq5G,gBAAgB,SAASn2G,EAAE4B,GAAG,OAAO4yG,IAAI2B,gBAAgBn2G,EAAE4B,IAAI9E,EAAQs5G,QAAQ,SAASp2G,EAAE4B,GAAG,OAAO4yG,IAAI4B,QAAQp2G,EAAE4B,IAAI9E,EAAQu5G,WAAW,SAASr2G,EAAE4B,EAAEjE,GAAG,OAAO62G,IAAI6B,WAAWr2G,EAAE4B,EAAEjE,IAAIb,EAAQw5G,OAAO,SAASt2G,GAAG,OAAOw0G,IAAI8B,OAAOt2G,IAAIlD,EAAQy5G,SAAS,SAASv2G,GAAG,OAAOw0G,IAAI+B,SAASv2G,IAAIlD,EAAQy+B,QAAQ,U,kkBCRxM,oBA2CrG,MAQA,EARmB,EAzCvB,sBAEA,iBAIIwuB,IAGJ,qBAA4BysD,IAC5B,oBAA2BC,EAAgBhI,GAG3C,oBAA2B+H,IAC3B,gBAAuBE,IAGnB,qBAAcC,UAAUjuB,OAAS,EAAT,aAAkB,c,0BAAlB,mBAExB,gBAAS70E,KAAA,aAsBT,uCAAmB,mBAMnB,OALIk2C,IAEA,EAiDC4+B,YAhDG,aAASiuB,aAAA,GAEjB,KAEA,0CA7BI,uCC5BZ,oB,+DDmB8B,WAAQ,2BAAar4G,S,oEACd,WAAQ,OAAC,oBAAakxG,Y,0BAwCvD,YACI,oBAAanuC,OAAOxB,EAAK,oBAAavhE,S,mBAG1C,YAGI,OAFAwrD,IAEO,oBAAa4sD,UAAUjuB,I,mBAGlC,YAGI,OAFA3+B,IAEO,oBAAa4sD,UAAUjuB,I,mBAGlC,YACI3+B,IAEA,qBAAcuX,OAAOyhC,I,uBAGzB,YAmBS,KAAApa,YAjBD,gBAASkuB,aAAA,I,oBAIjB,WAIQ,MAHJ9sD,IAYK,KAAA4+B,aATD,2CACA,gBAASK,UACT,qBAAc3nB,aACd,oBAAaA,aACb,oBAAaA,e,8BAIrB,YACS,KAAAsnB,YACDp+D,K,+DAzE8B,WAAQ,6CAAahsB,S,qBAE/C,YACIwrD,IAEA,6BAmEZ,G,wBAAK,EAAA4+B,W,CAnEuB,6BA2B5B,iBAAarnB,OAzBO,YAAuB4rC,OAyBlB,iBAAa3uG,MAzBK,M,oBAKnC,YACIwrD,IAEA,sCAAauX,OAAO2iC,I,+HCvCpC,oBAOI,WAAA6S,EACmBrI,EACA3kD,EACG4sD,EACRK,I,8RAhBtB,uC,0+BCEyB,cA2CrB,SA1CA,UAAoC,KAApC,0BA0CA,oBACI,gCAAuC,I,2BAxC3C,gBAEuD,MADnD,QAA8Bx4G,EAAuB,0BAAvBA,GAAuByiB,WAArD,KACA,EAA6B,wBAAmB,GAAG,eAAAziB,IAAA,qBAAwB,yBAAuB,KAElG,OACK,4BADE,IAEay4G,EACAC,EACKC,EACLC,GAEf91G,Y,mCAGT,oBAsBI,OAhBA,iBAAO21G,GACP,iBAAO,MACP,iBAAOC,GAEe,MAAlBC,IACA,iBAAO,MACP,iBAAOA,IAGX,iBAAO,IAEU,MAAbC,IACA,iBAAO,MACP,iBAAOA,IAGJ,G,sEAGX,sCCjDJ,oB,8FAKI,YACIC,EAAKjzD,I,2EANb,sC,4BCF4B,gBACxB,gBACA,sBCAJ,oBACI,gCAAO6yD,EAAWC,EAAW14G,K71B4F7B,Q61B3FW,c,2B71B2FX,iB81B1FoG,kBACpG,kBACA,gBACA,mBAKQ,qECR+C,kBACvD,kBACA,gBACA,mBCL0E,kBAC1E,kBACA,gBACA,cCYqB,uBAErB,IAAA4jE,MAAiB,UACjB,IAAAk1C,MAA6B,IAAAC,GAF7B,kBAOA,qBAA4B,IAAAC,EAAcp1C,EAAQk1C,G,8ILvBlD,iD,2BAAkB,kE,iIEWoB,WAAQ,8BAAUp3F,S,qBAE5C,YACW9U,EAAP,mCAAuB,sCAAhB,SAAsElJ,GAC7E,uBAAU8hG,SAAS9hG,I,oBAGvB,YACWkJ,EAAP,mCAAuB,sCAAhB,QAAqE84F,GAC5E,uBAAUD,QAAQC,I,sDAZlC,YACI,gBAASpwF,KAAA,gB,yBAiBb,YACW1I,EAAP,cAAuB,iBAAhB,SAAsE+kB,GAC7E,gBAAS0mF,aAAa1mF,I,yBAG1B,YACW/kB,EAAP,cAAuB,iBAAhB,SAAsE43F,GAC7E,gBAAS8T,aAAa9T,I,oBA3B1B,6C,qFCEA,cACI,MAAoB,gBAAYmK,OAAA,KAGhC,OAFO/hG,EAAP,cAAuB,iBAAhB,QAAqEqsG,GAErEA,G,qFCNX,WACI,gBAASxuB,UACT,cAAO,YAAM,YAAF,e,oDAJf,gD,+CAAA,2C,mBAAA,8C,mBAAA,8C,mBAAA,8C,0FCqBA,oBAOI,OAAY,MAARnrF,EACO,gBAASe,YAAA,EACG6vG,EACA3kD,EACG4sD,EACRK,IAIlB,qBAAc,YAAI,EAAEl5G,GAAF,aAWX,IAAA45G,EARH,gBAAS74G,OACEf,EACQ4wG,EACA3kD,GACG,0BAAE,OAAkB,SAAlB,IAAuB,KACzB,YAARitD,EAAal5G,IAKlB,qBACFA,IAZX,IAK0B,O,mBAW9B,cAGI,WAAA65G,EACe,EACF,qBACGV,I,mBAGpB,cACI,WAAAW,EACe,EACF,qBACGX,I,sgBAnDpB,qDAAsC,SAAKlhF,EAAU,IAAe,IAAAwhF,GAApE,G,+HCxBJx6G,EAAQ65E,YAAc75E,EAAQ86G,IAAM96G,EAAQ+6G,kBAAoB/6G,EAAQg7G,KAAO,EAAQ,IACvFh7G,EAAQskG,WAAatkG,EAAQmrD,KAAO,EAAQ,IAC5CnrD,EAAQi7G,WAAaj7G,EAAQ83F,KAAO,EAAQ,IAE5C,IAAIojB,EAAQ,EAAQ,KAChBC,EAAWj6G,OAAOwgB,KAAKw5F,GACvBE,EAAS,CAAC,OAAQ,SAAU,SAAU,SAAU,SAAU,MAAO,UAAUn6F,OAAOk6F,GACtFn7G,EAAQq7G,UAAY,WAClB,OAAOD,GAGT,IAAI94G,EAAI,EAAQ,IAChBtC,EAAQq4F,OAAS/1F,EAAE+1F,OACnBr4F,EAAQ86D,WAAax4D,EAAEw4D,WAEvB,IAAI+gC,EAAM,EAAQ,KAElB77F,EAAQu3E,OAASskB,EAAItkB,OACrBv3E,EAAQo4E,aAAeyjB,EAAIzjB,aAC3Bp4E,EAAQs4E,SAAWujB,EAAIvjB,SACvBt4E,EAAQq4E,eAAiBwjB,EAAIxjB,eAC7Br4E,EAAQw4E,SAAWqjB,EAAIrjB,SACvBx4E,EAAQu4E,eAAiBsjB,EAAItjB,eAC7Bv4E,EAAQy4E,WAAaojB,EAAIpjB,WACzBz4E,EAAQ+6D,iBAAmB8gC,EAAI9gC,iBAC/B/6D,EAAQ24E,WAAakjB,EAAIljB,WACzB34E,EAAQ04E,YAAcmjB,EAAInjB,YAE1B,IAAIz4B,EAAK,EAAQ,KAEjBjgD,EAAQs7G,mBAAqBr7D,EAAGq7D,mBAChCt7G,EAAQu7G,yBAA2Bt7D,EAAGs7D,yBACtCv7G,EAAQw7G,iBAAmBv7D,EAAGu7D,iBAC9Bx7G,EAAQy7G,oBAAsBx7D,EAAGw7D,oBACjCz7G,EAAQ07G,cAAgBz7D,EAAGy7D,cAE3B,IAAIjqG,EAAO,EAAQ,KAEnBzR,EAAQ27G,WAAalqG,EAAKkqG,WAC1B37G,EAAQ47G,KAAOnqG,EAAKmqG,KACpB57G,EAAQ67G,aAAepqG,EAAKoqG,aAC5B77G,EAAQ87G,OAASrqG,EAAKqqG,OAEtB97G,EAAQ+7G,WAAa,EAAQ,KAE7B,IAAIC,EAAgB,EAAQ,KAE5Bh8G,EAAQg8G,cAAgBA,EAAcA,cACtCh8G,EAAQi8G,eAAiBD,EAAcC,eACvCj8G,EAAQk8G,cAAgBF,EAAcE,cACtCl8G,EAAQm8G,eAAiBH,EAAcG,eAevC,IAAIC,EAAK,EAAQ,KAEjBp8G,EAAQq8G,WAAaD,EAAGC,WACxBr8G,EAAQs8G,eAAiBF,EAAGE,eAE5Bt8G,EAAQu8G,kBAAoB,WAC1B,MAAM,IAAIj1G,MAAM,CACd,kDACA,0BACA,0DACA1C,KAAK,QAGT5E,EAAQo8E,UAAY,CAClB,0BAA6B,EAC7B,qBAAwB,EACxB,6BAAgC,EAChC,0BAA6B,EAC7B,YAAe,EACf,aAAgB,EAChB,kBAAqB,EACrB,mBAAsB,EACtB,eAAkB,EAClB,uBAA0B,EAC1B,iBAAoB,EACpB,sBAAyB,EACzB,4BAA+B,EAC/B,8BAAiC,EACjC,wBAA2B,I,6BC7F7Bp8E,EAAQmjC,WAuCR,SAAqBq5E,GACnB,IAAIC,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAC3B,OAAuC,GAA9BE,EAAWC,GAAuB,EAAKA,GA1ClD58G,EAAQ+8C,YAiDR,SAAsBy/D,GACpB,IAAIx+F,EAcAxd,EAbAi8G,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAEvBv3G,EAAM,IAAI23G,EAVhB,SAAsBL,EAAKG,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,EAS9BE,CAAYN,EAAKG,EAAUC,IAEzCG,EAAU,EAGVppG,EAAMipG,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAKn8G,EAAI,EAAGA,EAAImT,EAAKnT,GAAK,EACxBwd,EACGg/F,EAAUR,EAAI5zG,WAAWpI,KAAO,GAChCw8G,EAAUR,EAAI5zG,WAAWpI,EAAI,KAAO,GACpCw8G,EAAUR,EAAI5zG,WAAWpI,EAAI,KAAO,EACrCw8G,EAAUR,EAAI5zG,WAAWpI,EAAI,IAC/B0E,EAAI63G,KAAc/+F,GAAO,GAAM,IAC/B9Y,EAAI63G,KAAc/+F,GAAO,EAAK,IAC9B9Y,EAAI63G,KAAmB,IAAN/+F,EAGK,IAApB4+F,IACF5+F,EACGg/F,EAAUR,EAAI5zG,WAAWpI,KAAO,EAChCw8G,EAAUR,EAAI5zG,WAAWpI,EAAI,KAAO,EACvC0E,EAAI63G,KAAmB,IAAN/+F,GAGK,IAApB4+F,IACF5+F,EACGg/F,EAAUR,EAAI5zG,WAAWpI,KAAO,GAChCw8G,EAAUR,EAAI5zG,WAAWpI,EAAI,KAAO,EACpCw8G,EAAUR,EAAI5zG,WAAWpI,EAAI,KAAO,EACvC0E,EAAI63G,KAAc/+F,GAAO,EAAK,IAC9B9Y,EAAI63G,KAAmB,IAAN/+F,GAGnB,OAAO9Y,GA3FTlF,EAAQi4C,cAkHR,SAAwBglE,GAQtB,IAPA,IAAIj/F,EACArK,EAAMspG,EAAMl4G,OACZm4G,EAAavpG,EAAM,EACnBwpG,EAAQ,GAIH38G,EAAI,EAAG48G,EAAOzpG,EAAMupG,EAAY18G,EAAI48G,EAAM58G,GAH9B,MAInB28G,EAAM/+F,KAAKi/F,EAAYJ,EAAOz8G,EAAIA,EAJf,MAIqC48G,EAAOA,EAAQ58G,EAJpD,QAQF,IAAf08G,GACFl/F,EAAMi/F,EAAMtpG,EAAM,GAClBwpG,EAAM/+F,KACJk/F,EAAOt/F,GAAO,GACds/F,EAAQt/F,GAAO,EAAK,IACpB,OAEsB,IAAfk/F,IACTl/F,GAAOi/F,EAAMtpG,EAAM,IAAM,GAAKspG,EAAMtpG,EAAM,GAC1CwpG,EAAM/+F,KACJk/F,EAAOt/F,GAAO,IACds/F,EAAQt/F,GAAO,EAAK,IACpBs/F,EAAQt/F,GAAO,EAAK,IACpB,MAIJ,OAAOm/F,EAAMv4G,KAAK,KAzIpB,IALA,IAAI04G,EAAS,GACTN,EAAY,GACZH,EAA4B,oBAAfxnE,WAA6BA,WAAalyC,MAEvDwF,EAAO,mEACFnI,EAAI,EAAGmT,EAAMhL,EAAK5D,OAAQvE,EAAImT,IAAOnT,EAC5C88G,EAAO98G,GAAKmI,EAAKnI,GACjBw8G,EAAUr0G,EAAKC,WAAWpI,IAAMA,EAQlC,SAASk8G,EAASF,GAChB,IAAI7oG,EAAM6oG,EAAIz3G,OAEd,GAAI4O,EAAM,EAAI,EACZ,MAAM,IAAIrM,MAAM,kDAKlB,IAAIq1G,EAAWH,EAAInyG,QAAQ,KAO3B,OANkB,IAAdsyG,IAAiBA,EAAWhpG,GAMzB,CAACgpG,EAJcA,IAAahpG,EAC/B,EACA,EAAKgpG,EAAW,GAsEtB,SAASU,EAAaJ,EAAOrpG,EAAOG,GAGlC,IAFA,IAAIiK,EARoB2iB,EASpB5H,EAAS,GACJv4B,EAAIoT,EAAOpT,EAAIuT,EAAKvT,GAAK,EAChCwd,GACIi/F,EAAMz8G,IAAM,GAAM,WAClBy8G,EAAMz8G,EAAI,IAAM,EAAK,QACP,IAAfy8G,EAAMz8G,EAAI,IACbu4B,EAAO3a,KAdFk/F,GADiB38E,EAeM3iB,IAdT,GAAK,IACxBs/F,EAAO38E,GAAO,GAAK,IACnB28E,EAAO38E,GAAO,EAAI,IAClB28E,EAAa,GAAN38E,IAaT,OAAO5H,EAAOn0B,KAAK,IAjGrBo4G,EAAU,IAAIp0G,WAAW,IAAM,GAC/Bo0G,EAAU,IAAIp0G,WAAW,IAAM,I;;AClB/B5I,EAAQm1B,KAAO,SAAUjc,EAAQ/E,EAAQopG,EAAMC,EAAMC,GACnD,IAAI94G,EAAG/D,EACH88G,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTr9G,EAAI+8G,EAAQE,EAAS,EAAK,EAC1B38G,EAAIy8G,GAAQ,EAAI,EAChBh7G,EAAI2W,EAAO/E,EAAS3T,GAOxB,IALAA,GAAKM,EAEL6D,EAAIpC,GAAM,IAAOs7G,GAAU,EAC3Bt7G,KAAQs7G,EACRA,GAASH,EACFG,EAAQ,EAAGl5G,EAAS,IAAJA,EAAWuU,EAAO/E,EAAS3T,GAAIA,GAAKM,EAAG+8G,GAAS,GAKvE,IAHAj9G,EAAI+D,GAAM,IAAOk5G,GAAU,EAC3Bl5G,KAAQk5G,EACRA,GAASL,EACFK,EAAQ,EAAGj9G,EAAS,IAAJA,EAAWsY,EAAO/E,EAAS3T,GAAIA,GAAKM,EAAG+8G,GAAS,GAEvE,GAAU,IAANl5G,EACFA,EAAI,EAAIi5G,MACH,IAAIj5G,IAAMg5G,EACf,OAAO/8G,EAAI+Q,IAAsBc,KAAdlQ,GAAK,EAAI,GAE5B3B,GAAQuG,KAAKoD,IAAI,EAAGizG,GACpB74G,GAAQi5G,EAEV,OAAQr7G,GAAK,EAAI,GAAK3B,EAAIuG,KAAKoD,IAAI,EAAG5F,EAAI64G,IAG5Cx9G,EAAQ6jB,MAAQ,SAAU3K,EAAQzX,EAAO0S,EAAQopG,EAAMC,EAAMC,GAC3D,IAAI94G,EAAG/D,EAAGC,EACN68G,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBG,EAAe,KAATN,EAAcr2G,KAAKoD,IAAI,GAAI,IAAMpD,KAAKoD,IAAI,GAAI,IAAM,EAC1D/J,EAAI+8G,EAAO,EAAKE,EAAS,EACzB38G,EAAIy8G,EAAO,GAAK,EAChBh7G,EAAId,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQ0F,KAAK+K,IAAIzQ,GAEb6H,MAAM7H,IAAUA,IAAUgR,KAC5B7R,EAAI0I,MAAM7H,GAAS,EAAI,EACvBkD,EAAIg5G,IAEJh5G,EAAIwC,KAAK+G,MAAM/G,KAAKkH,IAAI5M,GAAS0F,KAAKmH,KAClC7M,GAASZ,EAAIsG,KAAKoD,IAAI,GAAI5F,IAAM,IAClCA,IACA9D,GAAK,IAGLY,GADEkD,EAAIi5G,GAAS,EACNE,EAAKj9G,EAELi9G,EAAK32G,KAAKoD,IAAI,EAAG,EAAIqzG,IAEpB/8G,GAAK,IACf8D,IACA9D,GAAK,GAGH8D,EAAIi5G,GAASD,GACf/8G,EAAI,EACJ+D,EAAIg5G,GACKh5G,EAAIi5G,GAAS,GACtBh9G,GAAMa,EAAQZ,EAAK,GAAKsG,KAAKoD,IAAI,EAAGizG,GACpC74G,GAAQi5G,IAERh9G,EAAIa,EAAQ0F,KAAKoD,IAAI,EAAGqzG,EAAQ,GAAKz2G,KAAKoD,IAAI,EAAGizG,GACjD74G,EAAI,IAID64G,GAAQ,EAAGtkG,EAAO/E,EAAS3T,GAAS,IAAJI,EAAUJ,GAAKM,EAAGF,GAAK,IAAK48G,GAAQ,GAI3E,IAFA74G,EAAKA,GAAK64G,EAAQ58G,EAClB88G,GAAQF,EACDE,EAAO,EAAGxkG,EAAO/E,EAAS3T,GAAS,IAAJmE,EAAUnE,GAAKM,EAAG6D,GAAK,IAAK+4G,GAAQ,GAE1ExkG,EAAO/E,EAAS3T,EAAIM,IAAU,IAAJyB,I,iBCnF5BvC,EAAUC,EAAOD,QAAU,EAAQ,KAC3B2yE,OAAS3yE,EACjBA,EAAQwoD,SAAWxoD,EACnBA,EAAQyoD,SAAW,EAAQ,IAC3BzoD,EAAQsoD,OAAS,EAAQ,IACzBtoD,EAAQ6hD,UAAY,EAAQ,IAC5B7hD,EAAQ4yE,YAAc,EAAQ,KAC9B5yE,EAAQywE,SAAW,EAAQ,IAC3BzwE,EAAQ+9G,SAAW,EAAQ,M,6CCN3B,SAASr6D,EAAQxhD,EAAQ87G,GAAkB,IAAIt8F,EAAOxgB,OAAOwgB,KAAKxf,GAAS,GAAIhB,OAAOyiD,sBAAuB,CAAE,IAAI+nC,EAAUxqF,OAAOyiD,sBAAsBzhD,GAAa87G,IAAgBtyB,EAAUA,EAAQlO,QAAO,SAAUygC,GAAO,OAAO/8G,OAAOqU,yBAAyBrT,EAAQ+7G,GAAK78G,eAAgBsgB,EAAKtD,KAAKvO,MAAM6R,EAAMgqE,GAAY,OAAOhqE,EAI9U,SAASw8F,EAAgBv4G,EAAK5D,EAAKN,GAAiK,OAApJM,KAAO4D,EAAOzE,OAAOC,eAAewE,EAAK5D,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAMyB,cAAc,EAAMD,UAAU,IAAkB+C,EAAI5D,GAAON,EAAgBkE,EAI3M,SAASw4G,EAAkBn+F,EAAQ6/C,GAAS,IAAK,IAAIr/D,EAAI,EAAGA,EAAIq/D,EAAM96D,OAAQvE,IAAK,CAAE,IAAI49G,EAAav+C,EAAMr/D,GAAI49G,EAAWh9G,WAAag9G,EAAWh9G,aAAc,EAAOg9G,EAAWv7G,cAAe,EAAU,UAAWu7G,IAAYA,EAAWx7G,UAAW,GAAM1B,OAAOC,eAAe6e,EAAQo+F,EAAWr8G,IAAKq8G,IAI7S,IACI9hF,EADW,EAAQ,GACDA,OAGlBwF,EADY,EAAQ,KACAA,QAEpBu8E,EAASv8E,GAAWA,EAAQu8E,QAAU,UAM1Cp+G,EAAOD,QAEP,WACE,SAAS6sF,KArBX,SAAyBj0D,EAAU0lF,GAAe,KAAM1lF,aAAoB0lF,GAAgB,MAAM,IAAI7qG,UAAU,qCAsB5G8qG,CAAgBn+G,KAAMysF,GAEtBzsF,KAAK6gD,KAAO,KACZ7gD,KAAKyrB,KAAO,KACZzrB,KAAK2E,OAAS,EAtBlB,IAAsBu5G,EAAaE,EAAYC,EAoM7C,OApMoBH,EAyBPzxB,GAzBoB2xB,EAyBR,CAAC,CACxBz8G,IAAK,OACLN,MAAO,SAAcua,GACnB,IAAI8E,EAAQ,CACV+U,KAAM7Z,EACNlE,KAAM,MAEJ1X,KAAK2E,OAAS,EAAG3E,KAAKyrB,KAAK/T,KAAOgJ,EAAW1gB,KAAK6gD,KAAOngC,EAC7D1gB,KAAKyrB,KAAO/K,IACV1gB,KAAK2E,SAER,CACDhD,IAAK,UACLN,MAAO,SAAiBua,GACtB,IAAI8E,EAAQ,CACV+U,KAAM7Z,EACNlE,KAAM1X,KAAK6gD,MAEO,IAAhB7gD,KAAK2E,SAAc3E,KAAKyrB,KAAO/K,GACnC1gB,KAAK6gD,KAAOngC,IACV1gB,KAAK2E,SAER,CACDhD,IAAK,QACLN,MAAO,WACL,GAAoB,IAAhBrB,KAAK2E,OAAT,CACA,IAAI+9B,EAAM1iC,KAAK6gD,KAAKprB,KAGpB,OAFoB,IAAhBz1B,KAAK2E,OAAc3E,KAAK6gD,KAAO7gD,KAAKyrB,KAAO,KAAUzrB,KAAK6gD,KAAO7gD,KAAK6gD,KAAKnpC,OAC7E1X,KAAK2E,OACA+9B,KAER,CACD/gC,IAAK,QACLN,MAAO,WACLrB,KAAK6gD,KAAO7gD,KAAKyrB,KAAO,KACxBzrB,KAAK2E,OAAS,IAEf,CACDhD,IAAK,OACLN,MAAO,SAAcc,GACnB,GAAoB,IAAhBnC,KAAK2E,OAAc,MAAO,GAI9B,IAHA,IAAIzC,EAAIlC,KAAK6gD,KACTne,EAAM,GAAKxgC,EAAEuzB,KAEVvzB,EAAIA,EAAEwV,MACXgrB,GAAOvgC,EAAID,EAAEuzB,KAGf,OAAOiN,IAER,CACD/gC,IAAK,SACLN,MAAO,SAAgBQ,GACrB,GAAoB,IAAhB7B,KAAK2E,OAAc,OAAOu3B,EAAOK,MAAM,GAK3C,IAJA,IArEczf,EAAK8C,EAAQ7L,EAqEvB2uB,EAAMxG,EAAOM,YAAY36B,IAAM,GAC/BK,EAAIlC,KAAK6gD,KACTzgD,EAAI,EAED8B,GAzEO4a,EA0ED5a,EAAEuzB,KA1EI7V,EA0EE8iB,EA1EM3uB,EA0ED3T,EAzE9B87B,EAAOl6B,UAAUq/B,KAAK9gC,KAAKuc,EAAK8C,EAAQ7L,GA0ElC3T,GAAK8B,EAAEuzB,KAAK9wB,OACZzC,EAAIA,EAAEwV,KAGR,OAAOgrB,IAGR,CACD/gC,IAAK,UACLN,MAAO,SAAiBQ,EAAGo1F,GACzB,IAAIv0D,EAcJ,OAZI7gC,EAAI7B,KAAK6gD,KAAKprB,KAAK9wB,QAErB+9B,EAAM1iC,KAAK6gD,KAAKprB,KAAKphB,MAAM,EAAGxS,GAC9B7B,KAAK6gD,KAAKprB,KAAOz1B,KAAK6gD,KAAKprB,KAAKphB,MAAMxS,IAGtC6gC,EAFS7gC,IAAM7B,KAAK6gD,KAAKprB,KAAK9wB,OAExB3E,KAAKyuC,QAGLwoD,EAAaj3F,KAAKs+G,WAAWz8G,GAAK7B,KAAKu+G,WAAW18G,GAGnD6gC,IAER,CACD/gC,IAAK,QACLN,MAAO,WACL,OAAOrB,KAAK6gD,KAAKprB,OAGlB,CACD9zB,IAAK,aACLN,MAAO,SAAoBQ,GACzB,IAAIK,EAAIlC,KAAK6gD,KACTpgD,EAAI,EACJiiC,EAAMxgC,EAAEuzB,KAGZ,IAFA5zB,GAAK6gC,EAAI/9B,OAEFzC,EAAIA,EAAEwV,MAAM,CACjB,IAAIpP,EAAMpG,EAAEuzB,KACRmxB,EAAK/kD,EAAIyG,EAAI3D,OAAS2D,EAAI3D,OAAS9C,EAIvC,GAHI+kD,IAAOt+C,EAAI3D,OAAQ+9B,GAAOp6B,EAASo6B,GAAOp6B,EAAI+L,MAAM,EAAGxS,GAGjD,IAFVA,GAAK+kD,GAEQ,CACPA,IAAOt+C,EAAI3D,UACXlE,EACEyB,EAAEwV,KAAM1X,KAAK6gD,KAAO3+C,EAAEwV,KAAU1X,KAAK6gD,KAAO7gD,KAAKyrB,KAAO,OAE5DzrB,KAAK6gD,KAAO3+C,EACZA,EAAEuzB,KAAOntB,EAAI+L,MAAMuyC,IAGrB,QAGAnmD,EAIJ,OADAT,KAAK2E,QAAUlE,EACRiiC,IAGR,CACD/gC,IAAK,aACLN,MAAO,SAAoBQ,GACzB,IAAI6gC,EAAMxG,EAAOM,YAAY36B,GACzBK,EAAIlC,KAAK6gD,KACTpgD,EAAI,EAIR,IAHAyB,EAAEuzB,KAAK4L,KAAKqB,GACZ7gC,GAAKK,EAAEuzB,KAAK9wB,OAELzC,EAAIA,EAAEwV,MAAM,CACjB,IAAIzR,EAAM/D,EAAEuzB,KACRmxB,EAAK/kD,EAAIoE,EAAItB,OAASsB,EAAItB,OAAS9C,EAIvC,GAHAoE,EAAIo7B,KAAKqB,EAAKA,EAAI/9B,OAAS9C,EAAG,EAAG+kD,GAGvB,IAFV/kD,GAAK+kD,GAEQ,CACPA,IAAO3gD,EAAItB,UACXlE,EACEyB,EAAEwV,KAAM1X,KAAK6gD,KAAO3+C,EAAEwV,KAAU1X,KAAK6gD,KAAO7gD,KAAKyrB,KAAO,OAE5DzrB,KAAK6gD,KAAO3+C,EACZA,EAAEuzB,KAAOxvB,EAAIoO,MAAMuyC,IAGrB,QAGAnmD,EAIJ,OADAT,KAAK2E,QAAUlE,EACRiiC,IAGR,CACD/gC,IAAKs8G,EACL58G,MAAO,SAAeuB,EAAG6iB,GACvB,OAAOic,EAAQ1hC,KAnMrB,SAAuB4f,GAAU,IAAK,IAAIxf,EAAI,EAAGA,EAAIsP,UAAU/K,OAAQvE,IAAK,CAAE,IAAI8c,EAAyB,MAAhBxN,UAAUtP,GAAasP,UAAUtP,GAAK,GAAQA,EAAI,EAAKkjD,EAAQxiD,OAAOoc,IAAS,GAAM2zC,SAAQ,SAAUlvD,GAAOm8G,EAAgBl+F,EAAQje,EAAKub,EAAOvb,OAAsBb,OAAO09G,0BAA6B19G,OAAO29G,iBAAiB7+F,EAAQ9e,OAAO09G,0BAA0BthG,IAAmBomC,EAAQxiD,OAAOoc,IAAS2zC,SAAQ,SAAUlvD,GAAOb,OAAOC,eAAe6e,EAAQje,EAAKb,OAAOqU,yBAAyB+H,EAAQvb,OAAe,OAAOie,EAmMlf8+F,CAAc,GAAIj5F,EAAS,CAE9C0iE,MAAO,EAEPw2B,eAAe,UA/LuDZ,EAAkBG,EAAYl8G,UAAWo8G,GAAiBC,GAAaN,EAAkBG,EAAaG,GAoM3K5xB,EApLT,I,8CC5BA,YAEA,IAAImyB,EAEJ,SAASd,EAAgBv4G,EAAK5D,EAAKN,GAAiK,OAApJM,KAAO4D,EAAOzE,OAAOC,eAAewE,EAAK5D,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAMyB,cAAc,EAAMD,UAAU,IAAkB+C,EAAI5D,GAAON,EAAgBkE,EAE3M,IAAI8qE,EAAW,EAAQ,IAEnBwuC,EAAe19G,OAAO,eACtB29G,EAAc39G,OAAO,cACrB49G,EAAS59G,OAAO,SAChB69G,EAAS79G,OAAO,SAChB89G,EAAe99G,OAAO,eACtB+9G,EAAiB/9G,OAAO,iBACxBg+G,EAAUh+G,OAAO,UAErB,SAASi+G,EAAiB/9G,EAAO2hD,GAC/B,MAAO,CACL3hD,MAAOA,EACP2hD,KAAMA,GAIV,SAASq8D,EAAe5+F,GACtB,IAAIojC,EAAUpjC,EAAKo+F,GAEnB,GAAgB,OAAZh7D,EAAkB,CACpB,IAAIpuB,EAAOhV,EAAK0+F,GAASpqF,OAIZ,OAATU,IACFhV,EAAKw+F,GAAgB,KACrBx+F,EAAKo+F,GAAgB,KACrBp+F,EAAKq+F,GAAe,KACpBj7D,EAAQu7D,EAAiB3pF,GAAM,MAKrC,SAAS6pF,EAAW7+F,GAGlBgJ,EAAQsU,SAASshF,EAAgB5+F,GAgBnC,IAAI8+F,EAAyBz+G,OAAOsU,gBAAe,eAC/CoqG,EAAuC1+G,OAAO2+G,gBA4D/C3B,EA5D+Dc,EAAwB,CACxF,aACE,OAAO5+G,KAAKm/G,IAGdznG,KAAM,WACJ,IAAIg7D,EAAQ1yE,KAIRsmD,EAAQtmD,KAAK++G,GAEjB,GAAc,OAAVz4D,EACF,OAAO1C,QAAQE,OAAOwC,GAGxB,GAAItmD,KAAKg/G,GACP,OAAOp7D,QAAQC,QAAQu7D,OAAiBjuG,GAAW,IAGrD,GAAInR,KAAKm/G,GAASp2D,UAKhB,OAAO,IAAInF,SAAQ,SAAUC,EAASC,GACpCr6B,EAAQsU,UAAS,WACX20C,EAAMqsC,GACRj7D,EAAO4uB,EAAMqsC,IAEbl7D,EAAQu7D,OAAiBjuG,GAAW,UAU5C,IACIuuG,EADAC,EAAc3/G,KAAKi/G,GAGvB,GAAIU,EACFD,EAAU,IAAI97D,QA1DpB,SAAqB+7D,EAAal/F,GAChC,OAAO,SAAUojC,EAASC,GACxB67D,EAAYtI,MAAK,WACX52F,EAAKu+F,GACPn7D,EAAQu7D,OAAiBjuG,GAAW,IAItCsP,EAAKy+F,GAAgBr7D,EAASC,KAC7BA,IAiDqB87D,CAAYD,EAAa3/G,WAC1C,CAGL,IAAIy1B,EAAOz1B,KAAKm/G,GAASpqF,OAEzB,GAAa,OAATU,EACF,OAAOmuB,QAAQC,QAAQu7D,EAAiB3pF,GAAM,IAGhDiqF,EAAU,IAAI97D,QAAQ5jD,KAAKk/G,IAI7B,OADAl/G,KAAKi/G,GAAgBS,EACdA,IAE+Bv+G,OAAO0vF,eAAe,WAC9D,OAAO7wF,QACL89G,EAAgBc,EAAuB,UAAU,WACnD,IAAItnB,EAASt3F,KAKb,OAAO,IAAI4jD,SAAQ,SAAUC,EAASC,GACpCwzC,EAAO6nB,GAASxpC,QAAQ,MAAM,SAAU7yB,GAClCA,EACFgB,EAAOhB,GAITe,EAAQu7D,OAAiBjuG,GAAW,aAGtCytG,GAAwBW,GAoE5B1/G,EAAOD,QAlEiC,SAA2CmwE,GACjF,IAAI8vC,EAEAtoG,EAAWzW,OAAOY,OAAO89G,GAA4D1B,EAArB+B,EAAiB,GAAoCV,EAAS,CAChI99G,MAAO0uE,EACPvtE,UAAU,IACRs7G,EAAgB+B,EAAgBhB,EAAc,CAChDx9G,MAAO,KACPmB,UAAU,IACRs7G,EAAgB+B,EAAgBf,EAAa,CAC/Cz9G,MAAO,KACPmB,UAAU,IACRs7G,EAAgB+B,EAAgBd,EAAQ,CAC1C19G,MAAO,KACPmB,UAAU,IACRs7G,EAAgB+B,EAAgBb,EAAQ,CAC1C39G,MAAO0uE,EAAOjnB,eAAeynB,WAC7B/tE,UAAU,IACRs7G,EAAgB+B,EAAgBX,EAAgB,CAClD79G,MAAO,SAAewiD,EAASC,GAC7B,IAAIruB,EAAOle,EAAS4nG,GAASpqF,OAEzBU,GACFle,EAAS0nG,GAAgB,KACzB1nG,EAASsnG,GAAgB,KACzBtnG,EAASunG,GAAe,KACxBj7D,EAAQu7D,EAAiB3pF,GAAM,MAE/Ble,EAASsnG,GAAgBh7D,EACzBtsC,EAASunG,GAAeh7D,IAG5BthD,UAAU,IACRq9G,IA8BJ,OA7BAtoG,EAAS0nG,GAAgB,KACzB5uC,EAASN,GAAQ,SAAUjtB,GACzB,GAAIA,GAAoB,+BAAbA,EAAIv6C,KAAuC,CACpD,IAAIu7C,EAASvsC,EAASunG,GAWtB,OARe,OAAXh7D,IACFvsC,EAAS0nG,GAAgB,KACzB1nG,EAASsnG,GAAgB,KACzBtnG,EAASunG,GAAe,KACxBh7D,EAAOhB,SAGTvrC,EAASwnG,GAAUj8D,GAIrB,IAAIe,EAAUtsC,EAASsnG,GAEP,OAAZh7D,IACFtsC,EAAS0nG,GAAgB,KACzB1nG,EAASsnG,GAAgB,KACzBtnG,EAASunG,GAAe,KACxBj7D,EAAQu7D,OAAiBjuG,GAAW,KAGtCoG,EAASynG,IAAU,KAErBjvC,EAAOxxC,GAAG,WAAY+gF,EAAW19G,KAAK,KAAM2V,IACrCA,K,+BC3MT1X,EAAOD,QAAU,WACf,MAAM,IAAIsH,MAAM,mD,6BCwBlBrH,EAAOD,QAAU4yE,EAEjB,IAAI/wB,EAAY,EAAQ,IAIxB,SAAS+wB,EAAY/sD,GACnB,KAAMzlB,gBAAgBwyE,GAAc,OAAO,IAAIA,EAAY/sD,GAC3Dg8B,EAAUlhD,KAAKP,KAAMylB,GAJvB,EAAQ,EAAR,CAAoB+sD,EAAa/wB,GAOjC+wB,EAAYxwE,UAAU6gD,WAAa,SAAU+K,EAAOlxB,EAAUusB,GAC5DA,EAAG,KAAM2E,K,6BCjCX,IAAIkiB,EAWJ,IAAI6c,EAAiB,EAAQ,IAAmB9iC,MAC5Ci2D,EAAmBnzB,EAAemzB,iBAClCnuB,EAAuBhF,EAAegF,qBAE1C,SAAS7zD,EAAKglB,GAEZ,GAAIA,EAAK,MAAMA,EAOjB,SAASi9D,EAAUhwC,EAAQud,EAAShZ,EAAS7/D,GAC3CA,EAvBF,SAAcA,GACZ,IAAIw7D,GAAS,EACb,OAAO,WACDA,IACJA,GAAS,EACTx7D,EAAShF,WAAM,EAAQC,aAkBd+uB,CAAKhqB,GAChB,IAAIisC,GAAS,EACbqvB,EAAOxxC,GAAG,SAAS,WACjBmiB,GAAS,UAECvvC,IAAR2+D,IAAmBA,EAAM,EAAQ,KACrCA,EAAIC,EAAQ,CACVxnB,SAAU+kC,EACV9qF,SAAU8xE,IACT,SAAUxxB,GACX,GAAIA,EAAK,OAAOruC,EAASquC,GACzBpC,GAAS,EACTjsC,OAEF,IAAIs0C,GAAY,EAChB,OAAO,SAAUjG,GACf,IAAIpC,IACAqI,EAGJ,OAFAA,GAAY,EAvBhB,SAAmBgnB,GACjB,OAAOA,EAAOa,WAAqC,mBAAjBb,EAAOc,MAwBnCC,CAAUf,GAAgBA,EAAOc,QACP,mBAAnBd,EAAO4F,QAA+B5F,EAAO4F,eACxDlhE,EAASquC,GAAO,IAAI6uC,EAAqB,UAI7C,SAASpxF,EAAKuxD,GACZA,IAGF,SAASukB,EAAK71D,EAAMzH,GAClB,OAAOyH,EAAK61D,KAAKt9D,GAGnB,SAASinG,EAAYC,GACnB,OAAKA,EAAQt7G,OAC8B,mBAAhCs7G,EAAQA,EAAQt7G,OAAS,GAA0Bm5B,EACvDmiF,EAAQn/F,MAFagd,EAgC9Bj+B,EAAOD,QA3BP,WACE,IAAK,IAAIyrD,EAAO37C,UAAU/K,OAAQs7G,EAAU,IAAIl9G,MAAMsoD,GAAOsI,EAAO,EAAGA,EAAOtI,EAAMsI,IAClFssD,EAAQtsD,GAAQjkD,UAAUikD,GAG5B,IAOIrN,EAPA7xC,EAAWurG,EAAYC,GAG3B,GAFIl9G,MAAMC,QAAQi9G,EAAQ,MAAKA,EAAUA,EAAQ,IAE7CA,EAAQt7G,OAAS,EACnB,MAAM,IAAIm7G,EAAiB,WAI7B,IAAII,EAAWD,EAAQ37G,KAAI,SAAUyrE,EAAQ3vE,GAC3C,IAAIktF,EAAUltF,EAAI6/G,EAAQt7G,OAAS,EAEnC,OAAOo7G,EAAUhwC,EAAQud,EADXltF,EAAI,GACyB,SAAU0iD,GAC9CwD,IAAOA,EAAQxD,GAChBA,GAAKo9D,EAASrvD,QAAQtwD,GACtB+sF,IACJ4yB,EAASrvD,QAAQtwD,GACjBkU,EAAS6xC,UAGb,OAAO25D,EAAQjQ,OAAO35B,K,gBCrFxB,IAAI72C,EAAW,EAAQ,GACnBurB,EAAO,EAAQ,IACf7uB,EAAS,EAAQ,GAAeA,OAEhCw2D,EAAI,CACN,WAAY,YAAY,YAAgB,WAGtCC,EAAI,IAAI5vF,MAAM,IAElB,SAASo9G,IACPngH,KAAK2W,OACL3W,KAAK6yF,GAAKF,EAEV5nC,EAAKxqD,KAAKP,KAAM,GAAI,IAmBtB,SAASogH,EAAQ7/E,GACf,OAAQA,GAAO,GAAOA,IAAQ,EAGhC,SAAS8/E,EAAIl+G,EAAGuC,EAAGjE,EAAGC,GACpB,OAAU,IAANyB,EAAiBuC,EAAIjE,GAAQiE,EAAKhE,EAC5B,IAANyB,EAAiBuC,EAAIjE,EAAMiE,EAAIhE,EAAMD,EAAIC,EACtCgE,EAAIjE,EAAIC,EAvBjB8+B,EAAS2gF,EAAKp1D,GAEdo1D,EAAIn+G,UAAU2U,KAAO,WAOnB,OANA3W,KAAK+uE,GAAK,WACV/uE,KAAKgvE,GAAK,WACVhvE,KAAKivE,GAAK,WACVjvE,KAAKkvE,GAAK,UACVlvE,KAAKqxE,GAAK,WAEHrxE,MAiBTmgH,EAAIn+G,UAAUugD,QAAU,SAAU2P,GAShC,IARA,IAfc3xB,EAeVoyD,EAAI3yF,KAAK6yF,GAET/vF,EAAc,EAAV9C,KAAK+uE,GACTrqE,EAAc,EAAV1E,KAAKgvE,GACTvuE,EAAc,EAAVT,KAAKivE,GACTvuE,EAAc,EAAVV,KAAKkvE,GACT3qE,EAAc,EAAVvE,KAAKqxE,GAEJjxE,EAAI,EAAGA,EAAI,KAAMA,EAAGuyF,EAAEvyF,GAAK8xD,EAAEjX,YAAgB,EAAJ76C,GAClD,KAAOA,EAAI,KAAMA,EAAGuyF,EAAEvyF,GAAKuyF,EAAEvyF,EAAI,GAAKuyF,EAAEvyF,EAAI,GAAKuyF,EAAEvyF,EAAI,IAAMuyF,EAAEvyF,EAAI,IAEnE,IAAK,IAAI6X,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAAI9V,KAAO8V,EAAI,IACX3W,EAAoD,IA5B5Ci/B,EA4BGz9B,IA3BF,EAAMy9B,IAAQ,IA2BP8/E,EAAGl+G,EAAGuC,EAAGjE,EAAGC,GAAK6D,EAAIouF,EAAE16E,GAAKy6E,EAAEvwF,GAElDoC,EAAI7D,EACJA,EAAID,EACJA,EAAI2/G,EAAO17G,GACXA,EAAI5B,EACJA,EAAIxB,EAGNtB,KAAK+uE,GAAMjsE,EAAI9C,KAAK+uE,GAAM,EAC1B/uE,KAAKgvE,GAAMtqE,EAAI1E,KAAKgvE,GAAM,EAC1BhvE,KAAKivE,GAAMxuE,EAAIT,KAAKivE,GAAM,EAC1BjvE,KAAKkvE,GAAMxuE,EAAIV,KAAKkvE,GAAM,EAC1BlvE,KAAKqxE,GAAM9sE,EAAIvE,KAAKqxE,GAAM,GAG5B8uC,EAAIn+G,UAAUypD,MAAQ,WACpB,IAAI8nC,EAAIr3D,EAAOM,YAAY,IAQ3B,OANA+2D,EAAEp3C,aAAuB,EAAVn8C,KAAK+uE,GAAQ,GAC5BwkB,EAAEp3C,aAAuB,EAAVn8C,KAAKgvE,GAAQ,GAC5BukB,EAAEp3C,aAAuB,EAAVn8C,KAAKivE,GAAQ,GAC5BskB,EAAEp3C,aAAuB,EAAVn8C,KAAKkvE,GAAQ,IAC5BqkB,EAAEp3C,aAAuB,EAAVn8C,KAAKqxE,GAAQ,IAErBkiB,GAGT1zF,EAAOD,QAAUugH,G,gBCpFjB,IAAI3gF,EAAW,EAAQ,GACnBurB,EAAO,EAAQ,IACf7uB,EAAS,EAAQ,GAAeA,OAEhCw2D,EAAI,CACN,WAAY,YAAY,YAAgB,WAGtCC,EAAI,IAAI5vF,MAAM,IAElB,SAASu9G,IACPtgH,KAAK2W,OACL3W,KAAK6yF,GAAKF,EAEV5nC,EAAKxqD,KAAKP,KAAM,GAAI,IAmBtB,SAASugH,EAAOhgF,GACd,OAAQA,GAAO,EAAMA,IAAQ,GAG/B,SAAS6/E,EAAQ7/E,GACf,OAAQA,GAAO,GAAOA,IAAQ,EAGhC,SAAS8/E,EAAIl+G,EAAGuC,EAAGjE,EAAGC,GACpB,OAAU,IAANyB,EAAiBuC,EAAIjE,GAAQiE,EAAKhE,EAC5B,IAANyB,EAAiBuC,EAAIjE,EAAMiE,EAAIhE,EAAMD,EAAIC,EACtCgE,EAAIjE,EAAIC,EA3BjB8+B,EAAS8gF,EAAMv1D,GAEfu1D,EAAKt+G,UAAU2U,KAAO,WAOpB,OANA3W,KAAK+uE,GAAK,WACV/uE,KAAKgvE,GAAK,WACVhvE,KAAKivE,GAAK,WACVjvE,KAAKkvE,GAAK,UACVlvE,KAAKqxE,GAAK,WAEHrxE,MAqBTsgH,EAAKt+G,UAAUugD,QAAU,SAAU2P,GASjC,IARA,IAnBc3xB,EAmBVoyD,EAAI3yF,KAAK6yF,GAET/vF,EAAc,EAAV9C,KAAK+uE,GACTrqE,EAAc,EAAV1E,KAAKgvE,GACTvuE,EAAc,EAAVT,KAAKivE,GACTvuE,EAAc,EAAVV,KAAKkvE,GACT3qE,EAAc,EAAVvE,KAAKqxE,GAEJjxE,EAAI,EAAGA,EAAI,KAAMA,EAAGuyF,EAAEvyF,GAAK8xD,EAAEjX,YAAgB,EAAJ76C,GAClD,KAAOA,EAAI,KAAMA,EAAGuyF,EAAEvyF,IA5BRmgC,EA4BmBoyD,EAAEvyF,EAAI,GAAKuyF,EAAEvyF,EAAI,GAAKuyF,EAAEvyF,EAAI,IAAMuyF,EAAEvyF,EAAI,MA3B1D,EAAMmgC,IAAQ,GA6B7B,IAAK,IAAItoB,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAAI9V,KAAO8V,EAAI,IACX3W,EAAKi/G,EAAMz9G,GAAKu9G,EAAGl+G,EAAGuC,EAAGjE,EAAGC,GAAK6D,EAAIouF,EAAE16E,GAAKy6E,EAAEvwF,GAAM,EAExDoC,EAAI7D,EACJA,EAAID,EACJA,EAAI2/G,EAAO17G,GACXA,EAAI5B,EACJA,EAAIxB,EAGNtB,KAAK+uE,GAAMjsE,EAAI9C,KAAK+uE,GAAM,EAC1B/uE,KAAKgvE,GAAMtqE,EAAI1E,KAAKgvE,GAAM,EAC1BhvE,KAAKivE,GAAMxuE,EAAIT,KAAKivE,GAAM,EAC1BjvE,KAAKkvE,GAAMxuE,EAAIV,KAAKkvE,GAAM,EAC1BlvE,KAAKqxE,GAAM9sE,EAAIvE,KAAKqxE,GAAM,GAG5BivC,EAAKt+G,UAAUypD,MAAQ,WACrB,IAAI8nC,EAAIr3D,EAAOM,YAAY,IAQ3B,OANA+2D,EAAEp3C,aAAuB,EAAVn8C,KAAK+uE,GAAQ,GAC5BwkB,EAAEp3C,aAAuB,EAAVn8C,KAAKgvE,GAAQ,GAC5BukB,EAAEp3C,aAAuB,EAAVn8C,KAAKivE,GAAQ,GAC5BskB,EAAEp3C,aAAuB,EAAVn8C,KAAKkvE,GAAQ,IAC5BqkB,EAAEp3C,aAAuB,EAAVn8C,KAAKqxE,GAAQ,IAErBkiB,GAGT1zF,EAAOD,QAAU0gH,G,gBC1FjB,IAAI9gF,EAAW,EAAQ,GACnBozD,EAAS,EAAQ,IACjB7nC,EAAO,EAAQ,IACf7uB,EAAS,EAAQ,GAAeA,OAEhCy2D,EAAI,IAAI5vF,MAAM,IAElB,SAASy9G,IACPxgH,KAAK2W,OAEL3W,KAAK6yF,GAAKF,EAEV5nC,EAAKxqD,KAAKP,KAAM,GAAI,IAGtBw/B,EAASghF,EAAQ5tB,GAEjB4tB,EAAOx+G,UAAU2U,KAAO,WAUtB,OATA3W,KAAK+uE,GAAK,WACV/uE,KAAKgvE,GAAK,UACVhvE,KAAKivE,GAAK,UACVjvE,KAAKkvE,GAAK,WACVlvE,KAAKqxE,GAAK,WACVrxE,KAAKkzF,GAAK,WACVlzF,KAAKmzF,GAAK,WACVnzF,KAAKozF,GAAK,WAEHpzF,MAGTwgH,EAAOx+G,UAAUypD,MAAQ,WACvB,IAAI8nC,EAAIr3D,EAAOM,YAAY,IAU3B,OARA+2D,EAAEp3C,aAAan8C,KAAK+uE,GAAI,GACxBwkB,EAAEp3C,aAAan8C,KAAKgvE,GAAI,GACxBukB,EAAEp3C,aAAan8C,KAAKivE,GAAI,GACxBskB,EAAEp3C,aAAan8C,KAAKkvE,GAAI,IACxBqkB,EAAEp3C,aAAan8C,KAAKqxE,GAAI,IACxBkiB,EAAEp3C,aAAan8C,KAAKkzF,GAAI,IACxBK,EAAEp3C,aAAan8C,KAAKmzF,GAAI,IAEjBI,GAGT1zF,EAAOD,QAAU4gH,G,gBCpDjB,IAAIhhF,EAAW,EAAQ,GACnBq/D,EAAS,EAAQ,IACjB9zC,EAAO,EAAQ,IACf7uB,EAAS,EAAQ,GAAeA,OAEhCy2D,EAAI,IAAI5vF,MAAM,KAElB,SAAS09G,IACPzgH,KAAK2W,OACL3W,KAAK6yF,GAAKF,EAEV5nC,EAAKxqD,KAAKP,KAAM,IAAK,KAGvBw/B,EAASihF,EAAQ5hB,GAEjB4hB,EAAOz+G,UAAU2U,KAAO,WAmBtB,OAlBA3W,KAAKg0F,IAAM,WACXh0F,KAAKi0F,IAAM,WACXj0F,KAAKk0F,IAAM,WACXl0F,KAAKm0F,IAAM,UACXn0F,KAAKo0F,IAAM,WACXp0F,KAAKq0F,IAAM,WACXr0F,KAAKs0F,IAAM,WACXt0F,KAAKu0F,IAAM,WAEXv0F,KAAKw0F,IAAM,WACXx0F,KAAKy0F,IAAM,UACXz0F,KAAK00F,IAAM,UACX10F,KAAK20F,IAAM,WACX30F,KAAK40F,IAAM,WACX50F,KAAK60F,IAAM,WACX70F,KAAK80F,IAAM,WACX90F,KAAK+0F,IAAM,WAEJ/0F,MAGTygH,EAAOz+G,UAAUypD,MAAQ,WACvB,IAAI8nC,EAAIr3D,EAAOM,YAAY,IAE3B,SAASq6D,EAAcnpD,EAAGrtC,EAAG0T,GAC3Bw/E,EAAEp3C,aAAazO,EAAG35B,GAClBw/E,EAAEp3C,aAAa97C,EAAG0T,EAAS,GAU7B,OAPA8iF,EAAa72F,KAAKg0F,IAAKh0F,KAAKw0F,IAAK,GACjCqC,EAAa72F,KAAKi0F,IAAKj0F,KAAKy0F,IAAK,GACjCoC,EAAa72F,KAAKk0F,IAAKl0F,KAAK00F,IAAK,IACjCmC,EAAa72F,KAAKm0F,IAAKn0F,KAAK20F,IAAK,IACjCkC,EAAa72F,KAAKo0F,IAAKp0F,KAAK40F,IAAK,IACjCiC,EAAa72F,KAAKq0F,IAAKr0F,KAAK60F,IAAK,IAE1BtB,GAGT1zF,EAAOD,QAAU6gH,G,gBCnCjB5gH,EAAOD,QAAU2yE,EAEjB,IAAImuC,EAAK,EAAQ,IAAUh9D,aAkB3B,SAAS6uB,IACPmuC,EAAGngH,KAAKP,MAlBK,EAAQ,EAEvBw/B,CAAS+yC,EAAQmuC,GACjBnuC,EAAOnqB,SAAW,EAAQ,IAC1BmqB,EAAOlqB,SAAW,EAAQ,KAC1BkqB,EAAOrqB,OAAS,EAAQ,KACxBqqB,EAAO9wB,UAAY,EAAQ,KAC3B8wB,EAAOC,YAAc,EAAQ,KAG7BD,EAAOA,OAASA,EAWhBA,EAAOvwE,UAAUq0E,KAAO,SAAS/0C,EAAM7b,GACrC,IAAIvI,EAASld,KAEb,SAASqwF,EAAOziC,GACVtsB,EAAK9+B,WACH,IAAU8+B,EAAK7d,MAAMmqC,IAAU1wC,EAAOszE,OACxCtzE,EAAOszE,QAOb,SAASJ,IACHlzE,EAAOqrC,UAAYrrC,EAAO+xE,QAC5B/xE,EAAO+xE,SAJX/xE,EAAOqhB,GAAG,OAAQ8xD,GAQlB/uD,EAAK/C,GAAG,QAAS6xD,GAIZ9uD,EAAKq/E,UAAcl7F,IAA2B,IAAhBA,EAAQ9R,MACzCuJ,EAAOqhB,GAAG,MAAOkqB,GACjBvrC,EAAOqhB,GAAG,QAASkyC,IAGrB,IAAImwC,GAAW,EACf,SAASn4D,IACHm4D,IACJA,GAAW,EAEXt/E,EAAK3tB,OAIP,SAAS88D,IACHmwC,IACJA,GAAW,EAEiB,mBAAjBt/E,EAAKq0C,SAAwBr0C,EAAKq0C,WAI/C,SAASnF,EAAQjqB,GAEf,GADAs6D,IACwC,IAApCH,EAAG36D,cAAc/lD,KAAM,SACzB,MAAMumD,EAQV,SAASs6D,IACP3jG,EAAOyhB,eAAe,OAAQ0xD,GAC9B/uD,EAAK3C,eAAe,QAASyxD,GAE7BlzE,EAAOyhB,eAAe,MAAO8pB,GAC7BvrC,EAAOyhB,eAAe,QAAS8xC,GAE/BvzD,EAAOyhB,eAAe,QAAS6xC,GAC/BlvC,EAAK3C,eAAe,QAAS6xC,GAE7BtzD,EAAOyhB,eAAe,MAAOkiF,GAC7B3jG,EAAOyhB,eAAe,QAASkiF,GAE/Bv/E,EAAK3C,eAAe,QAASkiF,GAW/B,OA5BA3jG,EAAOqhB,GAAG,QAASiyC,GACnBlvC,EAAK/C,GAAG,QAASiyC,GAmBjBtzD,EAAOqhB,GAAG,MAAOsiF,GACjB3jG,EAAOqhB,GAAG,QAASsiF,GAEnBv/E,EAAK/C,GAAG,QAASsiF,GAEjBv/E,EAAKzC,KAAK,OAAQ3hB,GAGXokB,I,6CCzHT,IAAIpF,EAAS,EAAQ,IAAeA,OAChCisB,EAAO,EAAQ,KAMnBtoD,EAAOD,QAAU,WACf,SAAS6sF,KAVX,SAAyBj0D,EAAU0lF,GAAe,KAAM1lF,aAAoB0lF,GAAgB,MAAM,IAAI7qG,UAAU,qCAW5G8qG,CAAgBn+G,KAAMysF,GAEtBzsF,KAAK6gD,KAAO,KACZ7gD,KAAKyrB,KAAO,KACZzrB,KAAK2E,OAAS,EAqDhB,OAlDA8nF,EAAWzqF,UAAUgc,KAAO,SAAcpC,GACxC,IAAI8E,EAAQ,CAAE+U,KAAM7Z,EAAGlE,KAAM,MACzB1X,KAAK2E,OAAS,EAAG3E,KAAKyrB,KAAK/T,KAAOgJ,EAAW1gB,KAAK6gD,KAAOngC,EAC7D1gB,KAAKyrB,KAAO/K,IACV1gB,KAAK2E,QAGT8nF,EAAWzqF,UAAUkjD,QAAU,SAAiBtpC,GAC9C,IAAI8E,EAAQ,CAAE+U,KAAM7Z,EAAGlE,KAAM1X,KAAK6gD,MACd,IAAhB7gD,KAAK2E,SAAc3E,KAAKyrB,KAAO/K,GACnC1gB,KAAK6gD,KAAOngC,IACV1gB,KAAK2E,QAGT8nF,EAAWzqF,UAAUysC,MAAQ,WAC3B,GAAoB,IAAhBzuC,KAAK2E,OAAT,CACA,IAAI+9B,EAAM1iC,KAAK6gD,KAAKprB,KAGpB,OAFoB,IAAhBz1B,KAAK2E,OAAc3E,KAAK6gD,KAAO7gD,KAAKyrB,KAAO,KAAUzrB,KAAK6gD,KAAO7gD,KAAK6gD,KAAKnpC,OAC7E1X,KAAK2E,OACA+9B,IAGT+pD,EAAWzqF,UAAUue,MAAQ,WAC3BvgB,KAAK6gD,KAAO7gD,KAAKyrB,KAAO,KACxBzrB,KAAK2E,OAAS,GAGhB8nF,EAAWzqF,UAAUwC,KAAO,SAAcrC,GACxC,GAAoB,IAAhBnC,KAAK2E,OAAc,MAAO,GAG9B,IAFA,IAAIzC,EAAIlC,KAAK6gD,KACTne,EAAM,GAAKxgC,EAAEuzB,KACVvzB,EAAIA,EAAEwV,MACXgrB,GAAOvgC,EAAID,EAAEuzB,KACd,OAAOiN,GAGV+pD,EAAWzqF,UAAU6e,OAAS,SAAgBhf,GAC5C,GAAoB,IAAhB7B,KAAK2E,OAAc,OAAOu3B,EAAOK,MAAM,GAC3C,GAAoB,IAAhBv8B,KAAK2E,OAAc,OAAO3E,KAAK6gD,KAAKprB,KAIxC,IAHA,IApDgB3Y,EAAK8C,EAAQ7L,EAoDzB2uB,EAAMxG,EAAOM,YAAY36B,IAAM,GAC/BK,EAAIlC,KAAK6gD,KACTzgD,EAAI,EACD8B,GAvDS4a,EAwDH5a,EAAEuzB,KAxDM7V,EAwDA8iB,EAxDQ3uB,EAwDH3T,EAvD5B0c,EAAIukB,KAAKzhB,EAAQ7L,GAwDb3T,GAAK8B,EAAEuzB,KAAK9wB,OACZzC,EAAIA,EAAEwV,KAER,OAAOgrB,GAGF+pD,EA3DQ,GA8DbtkC,GAAQA,EAAKzmB,SAAWymB,EAAKzmB,QAAQu8E,SACvCp+G,EAAOD,QAAQoC,UAAUmmD,EAAKzmB,QAAQu8E,QAAU,WAC9C,IAAI14G,EAAM4iD,EAAKzmB,QAAQ,CAAE/8B,OAAQ3E,KAAK2E,SACtC,OAAO3E,KAAKuC,YAAY5B,KAAO,IAAM4E,K,iCC5EzC,iCAC6B,oBAATgP,MAAwBA,MAChC0rB,OACRxwB,EAAQ6E,SAAStS,UAAUyN,MAiB/B,SAASqxG,EAAQzzD,EAAI0zD,GACnB/gH,KAAKghH,IAAM3zD,EACXrtD,KAAKihH,SAAWF,EAflBnhH,EAAQq9B,WAAa,WACnB,OAAO,IAAI6jF,EAAQrxG,EAAMlP,KAAK08B,WAAYwsD,EAAO/5E,WAAYwtB,eAE/Dt9B,EAAQshH,YAAc,WACpB,OAAO,IAAIJ,EAAQrxG,EAAMlP,KAAK2gH,YAAaz3B,EAAO/5E,WAAYyxG,gBAEhEvhH,EAAQs9B,aACRt9B,EAAQuhH,cAAgB,SAAS1jF,GAC3BA,GACFA,EAAQqpC,SAQZg6C,EAAQ9+G,UAAUo/G,MAAQN,EAAQ9+G,UAAU88D,IAAM,aAClDgiD,EAAQ9+G,UAAU8kE,MAAQ,WACxB9mE,KAAKihH,SAAS1gH,KAAKkpF,EAAOzpF,KAAKghH,MAIjCphH,EAAQyhH,OAAS,SAASpqG,EAAMqqG,GAC9BpkF,aAAajmB,EAAKsqG,gBAClBtqG,EAAKuqG,aAAeF,GAGtB1hH,EAAQ6hH,SAAW,SAASxqG,GAC1BimB,aAAajmB,EAAKsqG,gBAClBtqG,EAAKuqG,cAAgB,GAGvB5hH,EAAQ8hH,aAAe9hH,EAAQ+hH,OAAS,SAAS1qG,GAC/CimB,aAAajmB,EAAKsqG,gBAElB,IAAID,EAAQrqG,EAAKuqG,aACbF,GAAS,IACXrqG,EAAKsqG,eAAiBtkF,YAAW,WAC3BhmB,EAAK2qG,YACP3qG,EAAK2qG,eACNN,KAKP,EAAQ,KAIR1hH,EAAQqzE,aAAgC,oBAAT1+D,MAAwBA,KAAK0+D,mBAClB,IAAXz6B,GAA0BA,EAAOy6B,cACxCjzE,MAAQA,KAAKizE,aACrCrzE,EAAQiiH,eAAkC,oBAATttG,MAAwBA,KAAKstG,qBAClB,IAAXrpE,GAA0BA,EAAOqpE,gBACxC7hH,MAAQA,KAAK6hH,iB,kCC9DvC,6BACI,aAEA,IAAIrpE,EAAOy6B,aAAX,CAIA,IAII6uC,EA6HIzZ,EAZA/B,EArBAyb,EACAC,EAjGJC,EAAa,EACbC,EAAgB,GAChBC,GAAwB,EACxBC,EAAM5pE,EAAO04D,SAoJbmR,EAAWvhH,OAAOsU,gBAAkBtU,OAAOsU,eAAeojC,GAC9D6pE,EAAWA,GAAYA,EAASplF,WAAaolF,EAAW7pE,EAGf,qBAArC,GAAGr0C,SAAS5D,KAAKi4C,EAAO/uB,SApFxBq4F,EAAoB,SAASQ,GACzB74F,EAAQsU,UAAS,WAAcwkF,EAAaD,QAIpD,WAGI,GAAI9pE,EAAOgqE,cAAgBhqE,EAAOiqE,cAAe,CAC7C,IAAIC,GAA4B,EAC5BC,EAAenqE,EAAOoqE,UAM1B,OALApqE,EAAOoqE,UAAY,WACfF,GAA4B,GAEhClqE,EAAOgqE,YAAY,GAAI,KACvBhqE,EAAOoqE,UAAYD,EACZD,GAwEJG,GAIArqE,EAAOsqE,iBA9CVxc,EAAU,IAAIwc,gBACVC,MAAMH,UAAY,SAASnyB,GAE/B8xB,EADa9xB,EAAMh7D,OAIvBqsF,EAAoB,SAASQ,GACzBhc,EAAQ0c,MAAMR,YAAYF,KA2CvBF,GAAO,uBAAwBA,EAAI73F,cAAc,WAtCpD89E,EAAO+Z,EAAIa,gBACfnB,EAAoB,SAASQ,GAGzB,IAAIY,EAASd,EAAI73F,cAAc,UAC/B24F,EAAOC,mBAAqB,WACxBZ,EAAaD,GACbY,EAAOC,mBAAqB,KAC5B9a,EAAK8K,YAAY+P,GACjBA,EAAS,MAEb7a,EAAKvvE,YAAYoqF,KAKrBpB,EAAoB,SAASQ,GACzBrlF,WAAWslF,EAAc,EAAGD,KAlD5BP,EAAgB,gBAAkBh7G,KAAKC,SAAW,IAClDg7G,EAAkB,SAASvxB,GACvBA,EAAMvzE,SAAWs7B,GACK,iBAAfi4C,EAAMh7D,MACyB,IAAtCg7D,EAAMh7D,KAAKxrB,QAAQ83G,IACnBQ,GAAc9xB,EAAMh7D,KAAKphB,MAAM0tG,EAAcp9G,UAIjD6zC,EAAOwN,iBACPxN,EAAOwN,iBAAiB,UAAWg8D,GAAiB,GAEpDxpE,EAAO4qE,YAAY,YAAapB,GAGpCF,EAAoB,SAASQ,GACzB9pE,EAAOgqE,YAAYT,EAAgBO,EAAQ,OAgEnDD,EAASpvC,aA1KT,SAAsBx+D,GAEI,mBAAbA,IACTA,EAAW,IAAIH,SAAS,GAAKG,IAI/B,IADA,IAAIupB,EAAO,IAAIj7B,MAAM2M,UAAU/K,OAAS,GAC/BvE,EAAI,EAAGA,EAAI49B,EAAKr5B,OAAQvE,IAC7B49B,EAAK59B,GAAKsP,UAAUtP,EAAI,GAG5B,IAAIijH,EAAO,CAAE5uG,SAAUA,EAAUupB,KAAMA,GAGvC,OAFAkkF,EAAcD,GAAcoB,EAC5BvB,EAAkBG,GACXA,KA6JTI,EAASR,eAAiBA,EA1J1B,SAASA,EAAeS,UACbJ,EAAcI,GAyBzB,SAASC,EAAaD,GAGlB,GAAIH,EAGAllF,WAAWslF,EAAc,EAAGD,OACzB,CACH,IAAIe,EAAOnB,EAAcI,GACzB,GAAIe,EAAM,CACNlB,GAAwB,EACxB,KAjCZ,SAAakB,GACT,IAAI5uG,EAAW4uG,EAAK5uG,SAChBupB,EAAOqlF,EAAKrlF,KAChB,OAAQA,EAAKr5B,QACb,KAAK,EACD8P,IACA,MACJ,KAAK,EACDA,EAASupB,EAAK,IACd,MACJ,KAAK,EACDvpB,EAASupB,EAAK,GAAIA,EAAK,IACvB,MACJ,KAAK,EACDvpB,EAASupB,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAChC,MACJ,QACIvpB,EAAShF,WAnDrB,EAmDsCuuB,IAiBlBN,CAAI2lF,GACN,QACExB,EAAeS,GACfH,GAAwB,MAvE5C,CAyLkB,oBAAT5tG,UAAyC,IAAXikC,EAAyBx4C,KAAOw4C,EAASjkC,Q,mDC9JhF1U,EAAOD,QAAU4yE,EAEjB,IAAI/wB,EAAY,EAAQ,IAGpB0G,EAAOrnD,OAAOY,OAAO,EAAQ,KAMjC,SAAS8wE,EAAY/sD,GACnB,KAAMzlB,gBAAgBwyE,GAAc,OAAO,IAAIA,EAAY/sD,GAE3Dg8B,EAAUlhD,KAAKP,KAAMylB,GARvB0iC,EAAK3oB,SAAW,EAAQ,GAGxB2oB,EAAK3oB,SAASgzC,EAAa/wB,GAQ3B+wB,EAAYxwE,UAAU6gD,WAAa,SAAU+K,EAAOlxB,EAAUusB,GAC5DA,EAAG,KAAM2E,K,gBC7CX/tD,EAAOD,QAAU,EAAQ,K,gBCAzBC,EAAOD,QAAU,EAAQ,K,gBCAzBC,EAAOD,QAAU,EAAQ,IAAc6hD,W,gBCAvC5hD,EAAOD,QAAU,EAAQ,IAAc4yE,a,6BCCvC,IAAIhzC,EAAW,EAAQ,GACnBtD,EAAS,EAAQ,GAAeA,OAEhC6tB,EAAO,EAAQ,IAEf0tC,EAAQv7D,EAAOK,MAAM,KAGzB,SAASm7D,EAAMjpC,EAAK9sD,GAClBooD,EAAKxpD,KAAKP,KAAM,UACG,iBAAR2B,IACTA,EAAMu6B,EAAO1b,KAAK7e,IAGpB3B,KAAK43F,KAAOnpC,EACZzuD,KAAK2zD,KAAOhyD,EAERA,EAAIgD,OAXM,GAYZhD,EAAM8sD,EAAI9sD,GACDA,EAAIgD,OAbD,KAcZhD,EAAMu6B,EAAOrb,OAAO,CAAClf,EAAK81F,GAdd,KAoBd,IAHA,IAAII,EAAO73F,KAAK83F,MAAQ57D,EAAOM,YAjBjB,IAkBVu7D,EAAO/3F,KAAKg4F,MAAQ97D,EAAOM,YAlBjB,IAoBLp8B,EAAI,EAAGA,EApBF,GAoBiBA,IAC7By3F,EAAKz3F,GAAc,GAATuB,EAAIvB,GACd23F,EAAK33F,GAAc,GAATuB,EAAIvB,GAGhBJ,KAAKyrD,MAAQ,CAACosC,GAGhBr4D,EAASk4D,EAAM3tC,GAEf2tC,EAAK11F,UAAUugD,QAAU,SAAU9sB,GACjCz1B,KAAKyrD,MAAMztC,KAAKyX,IAGlBiiE,EAAK11F,UAAU+/C,OAAS,WACtB,IAAIrU,EAAI1tC,KAAK43F,KAAK17D,EAAOrb,OAAO7gB,KAAKyrD,QACrC,OAAOzrD,KAAK43F,KAAK17D,EAAOrb,OAAO,CAAC7gB,KAAKg4F,MAAOtqD,MAE9C7tC,EAAOD,QAAU83F,G,gBC7CjB73F,EAAOD,QAAU,EAAQ,K,iBCAzB,kBAOI0jH,EAPJ,EAAa,EAAQ,GAAepnF,OAEhCk8D,EAAkB,EAAQ,IAC1B/jB,EAAkB,EAAQ,IAC1BG,EAAO,EAAQ,IACf5xC,EAAW,EAAQ,IAGnB2gF,EAAS/qE,EAAOiR,QAAUjR,EAAOiR,OAAO85D,OACxCC,EAAY,CACdh1D,IAAK,QACL,QAAS,QACT0jB,KAAM,QACNE,OAAQ,UACR,UAAW,UACXC,OAAQ,UACR,UAAW,UACX,UAAW,UACXC,OAAQ,WAENmxC,EAAS,GAsBb,SAASC,EAAe9uD,EAAUC,EAAMsjC,EAAYxzF,EAAQ21D,GAC1D,OAAOipD,EAAOI,UACZ,MAAO/uD,EAAU,CAAEj0D,KAAM,WAAY,EAAO,CAAC,eAC7C02G,MAAK,SAAU11G,GACf,OAAO4hH,EAAOK,WAAW,CACvBjjH,KAAM,SACNk0D,KAAMA,EACNsjC,WAAYA,EACZrxF,KAAM,CACJnG,KAAM25D,IAEP34D,EAAKgD,GAAU,MACjB0yG,MAAK,SAAUzpG,GAChB,OAAOsuB,EAAO1b,KAAK5S,MAevB/N,EAAOD,QAAU,SAAUg1D,EAAUC,EAAMsjC,EAAY19B,EAAQjP,EAAQ/2C,GAC/C,mBAAX+2C,IACT/2C,EAAW+2C,EACXA,OAASr6C,GAIX,IAAImpD,EAAOkpD,GADXh4D,EAASA,GAAU,QACSlmC,eAE5B,IAAKg1C,GAAkC,mBAAnB9hB,EAAOoL,QACzB,OAAOn6B,EAAQsU,UAAS,WACtB,IAAIgE,EACJ,IACEA,EAAMyyC,EAAK5f,EAAUC,EAAMsjC,EAAY19B,EAAQjP,GAC/C,MAAOjnD,GACP,OAAOkQ,EAASlQ,GAElBkQ,EAAS,KAAMstB,MAOnB,GAHAq2D,EAAgBD,EAAY19B,GAC5B7F,EAAWhyB,EAASgyB,EAAUyf,EAAiB,YAC/Cxf,EAAOjyB,EAASiyB,EAAMwf,EAAiB,QACf,mBAAb5/D,EAAyB,MAAM,IAAIvN,MAAM,mCAnCtD,SAAyBw4G,EAASjrG,GAChCirG,EAAQrI,MAAK,SAAUt1E,GACrBtY,EAAQsU,UAAS,WACftpB,EAAS,KAAMstB,SAEhB,SAAUx9B,GACXklB,EAAQsU,UAAS,WACftpB,EAASlQ,SA8Bbs/G,CA3EF,SAAsBvpD,GACpB,GAAI9hB,EAAO/uB,UAAY+uB,EAAO/uB,QAAQyU,QACpC,OAAO0lB,QAAQC,SAAQ,GAEzB,IAAK0/D,IAAWA,EAAOI,YAAcJ,EAAOK,WAC1C,OAAOhgE,QAAQC,SAAQ,GAEzB,QAAqB1yC,IAAjBsyG,EAAOnpD,GACT,OAAOmpD,EAAOnpD,GAGhB,IAAIwpD,EAAOJ,EADXJ,EAAWA,GAAYpnF,EAAOK,MAAM,GACD+mF,EAAU,GAAI,IAAKhpD,GACnD+8C,MAAK,WACJ,OAAO,KACN0M,OAAM,WACP,OAAO,KAGX,OADAN,EAAOnpD,GAAQwpD,EACRA,EAyDQE,CAAY1pD,GAAM+8C,MAAK,SAAU4M,GAC9C,OAAIA,EAAaP,EAAc9uD,EAAUC,EAAMsjC,EAAY19B,EAAQH,GAE5Dka,EAAK5f,EAAUC,EAAMsjC,EAAY19B,EAAQjP,MAC9C/2C,M,sCCpGN,IAAIylF,EAAM,EAAQ,KACduB,EAAM,EAAQ,IACdyoB,EAAW,EAAQ,IACnBC,EAAW,EAAQ,KACnBC,EAAO,EAAQ,IAsCnB,SAASnsC,EAAgBosC,EAAO1iH,EAAKszD,GAEnC,GADAovD,EAAQA,EAAM/+F,cACV4+F,EAASG,GAAQ,OAAO5oB,EAAIxjB,eAAeosC,EAAO1iH,EAAKszD,GAC3D,GAAIkvD,EAASE,GAAQ,OAAO,IAAInqB,EAAI,CAAEv4F,IAAKA,EAAKszD,GAAIA,EAAI1zD,KAAM8iH,IAE9D,MAAM,IAAIhxG,UAAU,sBAGtB,SAASsnD,EAAkB0pD,EAAO1iH,EAAKszD,GAErC,GADAovD,EAAQA,EAAM/+F,cACV4+F,EAASG,GAAQ,OAAO5oB,EAAI9gC,iBAAiB0pD,EAAO1iH,EAAKszD,GAC7D,GAAIkvD,EAASE,GAAQ,OAAO,IAAInqB,EAAI,CAAEv4F,IAAKA,EAAKszD,GAAIA,EAAI1zD,KAAM8iH,EAAOnqD,SAAS,IAE9E,MAAM,IAAI7mD,UAAU,sBAOtBzT,EAAQo4E,aAAep4E,EAAQu3E,OAxD/B,SAAuBktC,EAAOzvD,GAG5B,IAAII,EAAQD,EACZ,GAHAsvD,EAAQA,EAAM/+F,cAGV4+F,EAASG,GACXrvD,EAASkvD,EAASG,GAAO1iH,IACzBozD,EAAQmvD,EAASG,GAAOpvD,OACnB,KAAIkvD,EAASE,GAIlB,MAAM,IAAIhxG,UAAU,sBAHpB2hD,EAA+B,EAAtBmvD,EAASE,GAAO1iH,IACzBozD,EAAQovD,EAASE,GAAOpvD,GAK1B,IAAI3zC,EAAO8iG,EAAKxvD,GAAU,EAAOI,EAAQD,GACzC,OAAOkjB,EAAeosC,EAAO/iG,EAAK3f,IAAK2f,EAAK2zC,KA0C9Cr1D,EAAQq4E,eAAiBr4E,EAAQs4E,SAAWD,EAC5Cr4E,EAAQu4E,eAAiBv4E,EAAQw4E,SAxCjC,SAAyBisC,EAAOzvD,GAG9B,IAAII,EAAQD,EACZ,GAHAsvD,EAAQA,EAAM/+F,cAGV4+F,EAASG,GACXrvD,EAASkvD,EAASG,GAAO1iH,IACzBozD,EAAQmvD,EAASG,GAAOpvD,OACnB,KAAIkvD,EAASE,GAIlB,MAAM,IAAIhxG,UAAU,sBAHpB2hD,EAA+B,EAAtBmvD,EAASE,GAAO1iH,IACzBozD,EAAQovD,EAASE,GAAOpvD,GAK1B,IAAI3zC,EAAO8iG,EAAKxvD,GAAU,EAAOI,EAAQD,GACzC,OAAO4F,EAAiB0pD,EAAO/iG,EAAK3f,IAAK2f,EAAK2zC,KA0BhDr1D,EAAQ+6D,iBAAmB/6D,EAAQy4E,WAAa1d,EAChD/6D,EAAQ04E,YAAc14E,EAAQ24E,WAR9B,WACE,OAAOz3E,OAAOwgB,KAAK6iG,GAAUtjG,OAAO46E,EAAIljB,gB,gBC3D1C,IAAI52B,EAAa,EAAQ,IACrB2iE,EAAM,EAAQ,KACd9kF,EAAW,EAAQ,GACnBtD,EAAS,EAAQ,GAAeA,OAEhC67C,EAAQ,CACV,eAAgBusC,EAAI5rC,IAAI6rC,YAAYD,EAAIE,KACxC,WAAYF,EAAIE,IAChB,cAAeF,EAAI5rC,IAAI6rC,YAAYD,EAAIE,KACvC,UAAWF,EAAIE,IACf,UAAWF,EAAI5rC,IAAI6rC,YAAYD,EAAIpqB,KACnC,UAAWoqB,EAAIpqB,KAMjB,SAASA,EAAKlqB,GACZruB,EAAWphD,KAAKP,MAChB,IAEIoW,EAFAquG,EAAWz0C,EAAKzuE,KAAK+jB,cACrB/jB,EAAOw2E,EAAM0sC,GAGfruG,EADE45D,EAAK9V,QACA,UAEA,UAET,IAAIv4D,EAAMquE,EAAKruE,IACVu6B,EAAOqZ,SAAS5zC,KACnBA,EAAMu6B,EAAO1b,KAAK7e,IAEH,YAAb8iH,GAAuC,gBAAbA,IAC5B9iH,EAAMu6B,EAAOrb,OAAO,CAAClf,EAAKA,EAAI0S,MAAM,EAAG,MAEzC,IAAI4gD,EAAK+a,EAAK/a,GACT/4B,EAAOqZ,SAAS0f,KACnBA,EAAK/4B,EAAO1b,KAAKy0C,IAEnBj1D,KAAK0kH,KAAOnjH,EAAKG,OAAO,CACtBC,IAAKA,EACLszD,GAAIA,EACJ7+C,KAAMA,IA5BV2hE,EAAMusC,IAAMvsC,EAAM,WAClBA,EAAM4sC,KAAO5sC,EAAM,gBACnBl4E,EAAOD,QAAUs6F,EACjB16D,EAAS06D,EAAKv4C,GA4Bdu4C,EAAIl4F,UAAUugD,QAAU,SAAU9sB,GAChC,OAAOyG,EAAO1b,KAAKxgB,KAAK0kH,KAAKviE,OAAO1sB,KAEtCykE,EAAIl4F,UAAU+/C,OAAS,WACrB,OAAO7lB,EAAO1b,KAAKxgB,KAAK0kH,KAAK5iE,W,6BC9C/BliD,EAAQo9C,MAAQ,EAAQ,IACxBp9C,EAAQu3E,OAAS,EAAQ,IACzBv3E,EAAQs6F,IAAM,EAAQ,IACtBt6F,EAAQ84E,IAAM,EAAQ,KACtB94E,EAAQ4kH,IAAM,EAAQ,M,6BCJtB,IAAIllF,EAAS,EAAQ,GACjBE,EAAW,EAAQ,GAEnBlqB,EAAQ,GAEZ,SAASsvG,EAAS3vD,GAChB31B,EAAOyd,MAAMkY,EAAGtwD,OAAQ,EAAG,qBAE3B3E,KAAKi1D,GAAK,IAAIlyD,MAAM,GACpB,IAAK,IAAI3C,EAAI,EAAGA,EAAIJ,KAAKi1D,GAAGtwD,OAAQvE,IAClCJ,KAAKi1D,GAAG70D,GAAK60D,EAAG70D,GAuBpBR,EAAQ2kH,YApBR,SAAqBx6D,GACnB,SAAS2uB,EAAIjzD,GACXskC,EAAKxpD,KAAKP,KAAMylB,GAChBzlB,KAAK6kH,WAEPrlF,EAASk5C,EAAK3uB,GAGd,IADA,IAAIzoC,EAAOxgB,OAAOwgB,KAAKhM,GACdlV,EAAI,EAAGA,EAAIkhB,EAAK3c,OAAQvE,IAAK,CACpC,IAAIuB,EAAM2f,EAAKlhB,GACfs4E,EAAI12E,UAAUL,GAAO2T,EAAM3T,GAO7B,OAJA+2E,EAAIh3E,OAAS,SAAgB+jB,GAC3B,OAAO,IAAIizD,EAAIjzD,IAGVizD,GAKTpjE,EAAMuvG,SAAW,WACf,IAAI9hG,EAAQ,IAAI6hG,EAAS5kH,KAAKylB,QAAQwvC,IACtCj1D,KAAK8kH,UAAY/hG,GAGnBzN,EAAMitC,QAAU,SAAiBi4C,EAAKC,EAAO14D,EAAK24D,GAChD,IAAI33E,EAAQ/iB,KAAK8kH,UACbC,EAAa/kH,KAAKuC,YAAYD,OAAON,UAErCizD,EAAKlyC,EAAMkyC,GACf,GAAkB,YAAdj1D,KAAKoW,KAAoB,CAC3B,IAAK,IAAIhW,EAAI,EAAGA,EAAIJ,KAAKgrD,UAAW5qD,IAClC60D,EAAG70D,IAAMo6F,EAAIC,EAAQr6F,GAEvB2kH,EAAWxiE,QAAQhiD,KAAKP,KAAMi1D,EAAI,EAAGlzB,EAAK24D,GAE1C,IAASt6F,EAAI,EAAGA,EAAIJ,KAAKgrD,UAAW5qD,IAClC60D,EAAG70D,GAAK2hC,EAAI24D,EAASt6F,OAClB,CACL2kH,EAAWxiE,QAAQhiD,KAAKP,KAAMw6F,EAAKC,EAAO14D,EAAK24D,GAE/C,IAASt6F,EAAI,EAAGA,EAAIJ,KAAKgrD,UAAW5qD,IAClC2hC,EAAI24D,EAASt6F,IAAM60D,EAAG70D,GAExB,IAASA,EAAI,EAAGA,EAAIJ,KAAKgrD,UAAW5qD,IAClC60D,EAAG70D,GAAKo6F,EAAIC,EAAQr6F,M,6BC5D1B,IAAIk/B,EAAS,EAAQ,GACjBE,EAAW,EAAQ,GAEnB23C,EAAS,EAAQ,IACjB+iB,EAAM,EAAQ,IAElB,SAAS8qB,EAAS5uG,EAAMzU,GACtB29B,EAAOyd,MAAMp7C,EAAIgD,OAAQ,GAAI,sBAE7B,IAAI64C,EAAK77C,EAAI0S,MAAM,EAAG,GAClBopC,EAAK97C,EAAI0S,MAAM,EAAG,IAClB4wG,EAAKtjH,EAAI0S,MAAM,GAAI,IAGrBrU,KAAK84D,QADM,YAAT1iD,EACa,CACb8jF,EAAIx4F,OAAO,CAAE0U,KAAM,UAAWzU,IAAK67C,IACnC08C,EAAIx4F,OAAO,CAAE0U,KAAM,UAAWzU,IAAK87C,IACnCy8C,EAAIx4F,OAAO,CAAE0U,KAAM,UAAWzU,IAAKsjH,KAGtB,CACb/qB,EAAIx4F,OAAO,CAAE0U,KAAM,UAAWzU,IAAKsjH,IACnC/qB,EAAIx4F,OAAO,CAAE0U,KAAM,UAAWzU,IAAK87C,IACnCy8C,EAAIx4F,OAAO,CAAE0U,KAAM,UAAWzU,IAAK67C,KAKzC,SAASgnE,EAAI/+F,GACX0xD,EAAO52E,KAAKP,KAAMylB,GAElB,IAAI1C,EAAQ,IAAIiiG,EAAShlH,KAAKoW,KAAMpW,KAAKylB,QAAQ9jB,KACjD3B,KAAKklH,UAAYniG,EAEnByc,EAASglF,EAAKrtC,GAEdt3E,EAAOD,QAAU4kH,EAEjBA,EAAI9iH,OAAS,SAAgB+jB,GAC3B,OAAO,IAAI++F,EAAI/+F,IAGjB++F,EAAIxiH,UAAUugD,QAAU,SAAiBi4C,EAAKC,EAAO14D,EAAK24D,GACxD,IAAI33E,EAAQ/iB,KAAKklH,UAEjBniG,EAAM+1C,QAAQ,GAAGvW,QAAQi4C,EAAKC,EAAO14D,EAAK24D,GAC1C33E,EAAM+1C,QAAQ,GAAGvW,QAAQxgB,EAAK24D,EAAQ34D,EAAK24D,GAC3C33E,EAAM+1C,QAAQ,GAAGvW,QAAQxgB,EAAK24D,EAAQ34D,EAAK24D,IAG7C8pB,EAAIxiH,UAAU+tD,KAAOmqC,EAAIl4F,UAAU+tD,KACnCy0D,EAAIxiH,UAAU61E,OAASqiB,EAAIl4F,UAAU61E,Q,gBCrDrC,IAAIstC,EAAQ,EAAQ,IAChBC,EAAa,EAAQ,KACrBlpF,EAAS,EAAQ,GAAeA,OAChCy/D,EAAe,EAAQ,KACvBl6C,EAAY,EAAQ,IACpBg6C,EAAM,EAAQ,IACd2oB,EAAO,EAAQ,IAGnB,SAASjtC,EAAQ51E,EAAMI,EAAKszD,GAC1BxT,EAAUlhD,KAAKP,MAEfA,KAAKw7F,OAAS,IAAI6pB,EAClBrlH,KAAKo7F,QAAU,IAAIK,EAAI/nC,IAAI/xD,GAC3B3B,KAAKq7F,MAAQn/D,EAAO1b,KAAKy0C,GACzBj1D,KAAKq8F,MAAQ96F,EACbvB,KAAKslH,cAAe,EATP,EAAQ,EAYvB9lF,CAAS23C,EAAQ11B,GAEjB01B,EAAOn1E,UAAUugD,QAAU,SAAU9sB,GAEnC,IAAIm4B,EACAlD,EAFJ1qD,KAAKw7F,OAAO/wF,IAAIgrB,GAKhB,IAFA,IAAIsM,EAAM,GAEF6rB,EAAQ5tD,KAAKw7F,OAAOv6F,OAC1BypD,EAAQ1qD,KAAKq8F,MAAMf,QAAQt7F,KAAM4tD,GACjC7rB,EAAI/jB,KAAK0sC,GAGX,OAAOxuB,EAAOrb,OAAOkhB,IAGvB,IAAIwjF,EAAUrpF,EAAOK,MAAM,GAAI,IAqB/B,SAAS8oF,IACPrlH,KAAKwF,MAAQ02B,EAAOM,YAAY,GA4BlC,SAASy7C,EAAgBosC,EAAOzvD,EAAUK,GACxC,IAAIya,EAASy1C,EAAMd,EAAM/+F,eACzB,IAAKoqD,EAAQ,MAAM,IAAIr8D,UAAU,sBAGjC,GADwB,iBAAbuhD,IAAuBA,EAAW14B,EAAO1b,KAAKo0C,IACrDA,EAASjwD,SAAW+qE,EAAO/tE,IAAM,EAAG,MAAM,IAAI0R,UAAU,sBAAwBuhD,EAASjwD,QAG7F,GADkB,iBAAPswD,IAAiBA,EAAK/4B,EAAO1b,KAAKy0C,IACzB,QAAhBya,EAAOnuE,MAAkB0zD,EAAGtwD,SAAW+qE,EAAOza,GAAI,MAAM,IAAI5hD,UAAU,qBAAuB4hD,EAAGtwD,QAEpG,MAAoB,WAAhB+qE,EAAOt5D,KACF,IAAIulF,EAAajsB,EAAO7vE,OAAQ+0D,EAAUK,GACxB,SAAhBya,EAAOt5D,KACT,IAAIgvG,EAAW11C,EAAO7vE,OAAQ+0D,EAAUK,GAG1C,IAAIkiB,EAAOzH,EAAO7vE,OAAQ+0D,EAAUK,GAhE7CkiB,EAAOn1E,UAAU+/C,OAAS,WACxB,IAAI6L,EAAQ5tD,KAAKw7F,OAAO73E,QACxB,GAAI3jB,KAAKslH,aAGP,OAFA13D,EAAQ5tD,KAAKq8F,MAAMf,QAAQt7F,KAAM4tD,GACjC5tD,KAAKo7F,QAAQzmC,QACN/G,EAGT,IAAKA,EAAMhpD,OAAO2gH,GAEhB,MADAvlH,KAAKo7F,QAAQzmC,QACP,IAAIztD,MAAM,sCAIpBiwE,EAAOn1E,UAAUygD,eAAiB,SAAU+iE,GAE1C,OADAxlH,KAAKslH,eAAiBE,EACfxlH,MAOTqlH,EAASrjH,UAAUyI,IAAM,SAAUgrB,GACjCz1B,KAAKwF,MAAQ02B,EAAOrb,OAAO,CAAC7gB,KAAKwF,MAAOiwB,KAG1C4vF,EAASrjH,UAAUf,IAAM,WACvB,GAAIjB,KAAKwF,MAAMb,OAAS,GAAI,CAC1B,IAAIo9B,EAAM/hC,KAAKwF,MAAM6O,MAAM,EAAG,IAE9B,OADArU,KAAKwF,MAAQxF,KAAKwF,MAAM6O,MAAM,IACvB0tB,EAET,OAAO,MAGTsjF,EAASrjH,UAAU2hB,MAAQ,WAKzB,IAJA,IAAIpQ,EAAM,GAAKvT,KAAKwF,MAAMb,OACtB8gH,EAAUvpF,EAAOM,YAAYjpB,GAE7BnT,GAAK,IACAA,EAAImT,GACXkyG,EAAQjqE,WAAWjoC,EAAKnT,GAG1B,OAAO87B,EAAOrb,OAAO,CAAC7gB,KAAKwF,MAAOigH,KA8BpC7lH,EAAQq4E,eAAiBA,EACzBr4E,EAAQo4E,aATR,SAAuBqsC,EAAOzvD,GAC5B,IAAI8a,EAASy1C,EAAMd,EAAM/+F,eACzB,IAAKoqD,EAAQ,MAAM,IAAIr8D,UAAU,sBAEjC,IAAIiO,EAAO8iG,EAAKxvD,GAAU,EAAO8a,EAAO/tE,IAAK+tE,EAAOza,IACpD,OAAOgjB,EAAeosC,EAAO/iG,EAAK3f,IAAK2f,EAAK2zC,M,cC7G9Cr1D,EAAQ07F,QAAU,SAAU/mF,EAAM8Y,GAChC,OAAO9Y,EAAK6mF,QAAQ5mC,aAAannC,IAGnCztB,EAAQs6D,QAAU,SAAU3lD,EAAM8Y,GAChC,OAAO9Y,EAAK6mF,QAAQ3mC,aAAapnC,K,gBCLnC,IAAI5e,EAAM,EAAQ,IAElB7O,EAAQ07F,QAAU,SAAU/mF,EAAM8Y,GAChC,IAAIoI,EAAOhnB,EAAI4e,EAAO9Y,EAAK8mF,OAG3B,OADA9mF,EAAK8mF,MAAQ9mF,EAAK6mF,QAAQ5mC,aAAa/+B,GAChClhB,EAAK8mF,OAGdz7F,EAAQs6D,QAAU,SAAU3lD,EAAM8Y,GAChC,IAAIwtE,EAAMtmF,EAAK8mF,MAEf9mF,EAAK8mF,MAAQhuE,EACb,IAAI0U,EAAMxtB,EAAK6mF,QAAQ3mC,aAAapnC,GAEpC,OAAO5e,EAAIszB,EAAK84D,K,gBCflB,IAAI3+D,EAAS,EAAQ,GAAeA,OAChCztB,EAAM,EAAQ,IAElB,SAASi3G,EAAcnxG,EAAMkhB,EAAMykC,GACjC,IAAI3mD,EAAMkiB,EAAK9wB,OACXo9B,EAAMtzB,EAAIgnB,EAAMlhB,EAAKinF,QAGzB,OAFAjnF,EAAKinF,OAASjnF,EAAKinF,OAAOnnF,MAAMd,GAChCgB,EAAK8mF,MAAQn/D,EAAOrb,OAAO,CAACtM,EAAK8mF,MAAOnhC,EAAUzkC,EAAOsM,IAClDA,EAGTniC,EAAQ07F,QAAU,SAAU/mF,EAAMkhB,EAAMykC,GAItC,IAHA,IACI3mD,EADAwuB,EAAM7F,EAAOM,YAAY,GAGtB/G,EAAK9wB,QAAQ,CAMlB,GAL2B,IAAvB4P,EAAKinF,OAAO72F,SACd4P,EAAKinF,OAASjnF,EAAK6mF,QAAQ5mC,aAAajgD,EAAK8mF,OAC7C9mF,EAAK8mF,MAAQn/D,EAAOM,YAAY,MAG9BjoB,EAAKinF,OAAO72F,QAAU8wB,EAAK9wB,QAIxB,CACLo9B,EAAM7F,EAAOrb,OAAO,CAACkhB,EAAK2jF,EAAanxG,EAAMkhB,EAAMykC,KACnD,MALA3mD,EAAMgB,EAAKinF,OAAO72F,OAClBo9B,EAAM7F,EAAOrb,OAAO,CAACkhB,EAAK2jF,EAAanxG,EAAMkhB,EAAKphB,MAAM,EAAGd,GAAM2mD,KACjEzkC,EAAOA,EAAKphB,MAAMd,GAOtB,OAAOwuB,I,gBC/BT,IAAI7F,EAAS,EAAQ,GAAeA,OAEpC,SAASypF,EAAapxG,EAAMqxG,EAAW1rD,GACrC,IACIn4B,EADMxtB,EAAK6mF,QAAQ5mC,aAAajgD,EAAK8mF,OAC3B,GAAKuqB,EAOnB,OALArxG,EAAK8mF,MAAQn/D,EAAOrb,OAAO,CACzBtM,EAAK8mF,MAAMhnF,MAAM,GACjB6nB,EAAO1b,KAAK,CAAC05C,EAAU0rD,EAAY7jF,MAG9BA,EAGTniC,EAAQ07F,QAAU,SAAU/mF,EAAMq5C,EAAOsM,GAKvC,IAJA,IAAI3mD,EAAMq6C,EAAMjpD,OACZo9B,EAAM7F,EAAOM,YAAYjpB,GACzBnT,GAAK,IAEAA,EAAImT,GACXwuB,EAAI3hC,GAAKulH,EAAYpxG,EAAMq5C,EAAMxtD,GAAI85D,GAGvC,OAAOn4B,I,gBCvBT,IAAI7F,EAAS,EAAQ,GAAeA,OAEpC,SAASypF,EAAapxG,EAAMqxG,EAAW1rD,GAMrC,IALA,IAIIjuD,EAAK5K,EAHLjB,GAAK,EAEL2hC,EAAM,IAED3hC,EAHC,GAKR6L,EAAO25G,EAAa,GAAM,EAAIxlH,EAAO,IAAO,EAE5C2hC,IAAiB,KADjB1gC,EAFMkT,EAAK6mF,QAAQ5mC,aAAajgD,EAAK8mF,OAEzB,GAAKpvF,KACU7L,EAAI,EAC/BmU,EAAK8mF,MAAQwqB,EAAQtxG,EAAK8mF,MAAOnhC,EAAUjuD,EAAM5K,GAEnD,OAAO0gC,EAGT,SAAS8jF,EAAS/sG,EAAQzX,GACxB,IAAIkS,EAAMuF,EAAOnU,OACbvE,GAAK,EACL2hC,EAAM7F,EAAOM,YAAY1jB,EAAOnU,QAGpC,IAFAmU,EAASojB,EAAOrb,OAAO,CAAC/H,EAAQojB,EAAO1b,KAAK,CAACnf,QAEpCjB,EAAImT,GACXwuB,EAAI3hC,GAAK0Y,EAAO1Y,IAAM,EAAI0Y,EAAO1Y,EAAI,IAAM,EAG7C,OAAO2hC,EAGTniC,EAAQ07F,QAAU,SAAU/mF,EAAMq5C,EAAOsM,GAKvC,IAJA,IAAI3mD,EAAMq6C,EAAMjpD,OACZo9B,EAAM7F,EAAOM,YAAYjpB,GACzBnT,GAAK,IAEAA,EAAImT,GACXwuB,EAAI3hC,GAAKulH,EAAYpxG,EAAMq5C,EAAMxtD,GAAI85D,GAGvC,OAAOn4B,I,iBCxCT,kBAAU,EAAQ,IAElB,SAASo5D,EAAU5mF,GAEjB,OADAA,EAAK8mF,MAAQ9mF,EAAK6mF,QAAQ5mC,aAAajgD,EAAK8mF,OACrC9mF,EAAK8mF,MAGdz7F,EAAQ07F,QAAU,SAAU/mF,EAAMq5C,GAChC,KAAOr5C,EAAKinF,OAAO72F,OAASipD,EAAMjpD,QAChC4P,EAAKinF,OAASt/D,EAAOrb,OAAO,CAACtM,EAAKinF,OAAQL,EAAS5mF,KAGrD,IAAIsmF,EAAMtmF,EAAKinF,OAAOnnF,MAAM,EAAGu5C,EAAMjpD,QAErC,OADA4P,EAAKinF,OAASjnF,EAAKinF,OAAOnnF,MAAMu5C,EAAMjpD,QAC/B8J,EAAIm/C,EAAOitC,M,wCCdpB,IAAI3+D,EAAS,EAAQ,GAAeA,OAChC4pF,EAAS5pF,EAAOK,MAAM,GAAI,GAW9B,SAASwpF,EAAWhkF,GAClB,IAAI97B,EAAMi2B,EAAOM,YAAY,IAK7B,OAJAv2B,EAAI21C,cAAc7Z,EAAI,KAAO,EAAG,GAChC97B,EAAI21C,cAAc7Z,EAAI,KAAO,EAAG,GAChC97B,EAAI21C,cAAc7Z,EAAI,KAAO,EAAG,GAChC97B,EAAI21C,cAAc7Z,EAAI,KAAO,EAAG,IACzB97B,EAGT,SAASy1F,EAAO/5F,GACd3B,KAAK0tC,EAAI/rC,EACT3B,KAAK+iB,MAAQmZ,EAAOK,MAAM,GAAI,GAC9Bv8B,KAAKwF,MAAQ02B,EAAOM,YAAY,GAKlCk/D,EAAM15F,UAAU+5F,MAAQ,SAAU1uE,GAEhC,IADA,IAAIjtB,GAAK,IACAA,EAAIitB,EAAM1oB,QACjB3E,KAAK+iB,MAAM3iB,IAAMitB,EAAMjtB,GAEzBJ,KAAKgmH,aAGPtqB,EAAM15F,UAAUgkH,UAAY,WAK1B,IAJA,IAnCgB//G,EAqCZgS,EAAOguG,EAFPC,EAlCG,EADSjgH,EAmCCjG,KAAK0tC,GAjChBgN,aAAa,GACjBz0C,EAAIy0C,aAAa,GACjBz0C,EAAIy0C,aAAa,GACjBz0C,EAAIy0C,aAAa,KA+BfyrE,EAAK,CAAC,EAAG,EAAG,EAAG,GAEf/lH,GAAK,IACAA,EAAI,KAAK,CAchB,IAbwD,IAAlDJ,KAAK+iB,SAAS3iB,EAAI,IAAO,GAAM,EAAKA,EAAI,KAG5C+lH,EAAG,IAAMD,EAAG,GACZC,EAAG,IAAMD,EAAG,GACZC,EAAG,IAAMD,EAAG,GACZC,EAAG,IAAMD,EAAG,IAIdD,EAAwB,IAAP,EAARC,EAAG,IAGPjuG,EAAI,EAAGA,EAAI,EAAGA,IACjBiuG,EAAGjuG,GAAMiuG,EAAGjuG,KAAO,GAAmB,EAAZiuG,EAAGjuG,EAAI,KAAW,GAE9CiuG,EAAG,GAAKA,EAAG,KAAO,EAGdD,IACFC,EAAG,GAAKA,EAAG,GAAM,KAAQ,IAG7BlmH,KAAK+iB,MAAQgjG,EAAUI,IAGzBzqB,EAAM15F,UAAUmgD,OAAS,SAAUl8C,GAEjC,IAAI2nD,EACJ,IAFA5tD,KAAKwF,MAAQ02B,EAAOrb,OAAO,CAAC7gB,KAAKwF,MAAOS,IAEjCjG,KAAKwF,MAAMb,QAAU,IAC1BipD,EAAQ5tD,KAAKwF,MAAM6O,MAAM,EAAG,IAC5BrU,KAAKwF,MAAQxF,KAAKwF,MAAM6O,MAAM,IAC9BrU,KAAK+7F,MAAMnuC,IAIf8tC,EAAM15F,UAAU8/C,MAAQ,SAAUskE,EAAK5mE,GAMrC,OALIx/C,KAAKwF,MAAMb,QACb3E,KAAK+7F,MAAM7/D,EAAOrb,OAAO,CAAC7gB,KAAKwF,MAAOsgH,GAAS,KAGjD9lH,KAAK+7F,MAAMgqB,EAAU,CAAC,EAAGK,EAAK,EAAG5mE,KAC1Bx/C,KAAK+iB,OAGdljB,EAAOD,QAAU87F,G,gBCxFjB,IAAI0pB,EAAa,EAAQ,KACrBlpF,EAAS,EAAQ,GAAeA,OAChCipF,EAAQ,EAAQ,IAChBxpB,EAAe,EAAQ,KACvBl6C,EAAY,EAAQ,IACpBg6C,EAAM,EAAQ,IACd2oB,EAAO,EAAQ,IAGnB,SAAShsC,EAAU72E,EAAMI,EAAKszD,GAC5BxT,EAAUlhD,KAAKP,MAEfA,KAAKw7F,OAAS,IAAI6pB,EAClBrlH,KAAKqmH,WAAQ,EACbrmH,KAAKo7F,QAAU,IAAIK,EAAI/nC,IAAI/xD,GAC3B3B,KAAKq7F,MAAQn/D,EAAO1b,KAAKy0C,GACzBj1D,KAAKq8F,MAAQ96F,EACbvB,KAAKslH,cAAe,EA+BtB,SAASD,IACPrlH,KAAKwF,MAAQ02B,EAAOM,YAAY,GA8ClC,SAASm+B,EAAkB0pD,EAAOzvD,EAAUK,GAC1C,IAAIya,EAASy1C,EAAMd,EAAM/+F,eACzB,IAAKoqD,EAAQ,MAAM,IAAIr8D,UAAU,sBAGjC,GADkB,iBAAP4hD,IAAiBA,EAAK/4B,EAAO1b,KAAKy0C,IACzB,QAAhBya,EAAOnuE,MAAkB0zD,EAAGtwD,SAAW+qE,EAAOza,GAAI,MAAM,IAAI5hD,UAAU,qBAAuB4hD,EAAGtwD,QAGpG,GADwB,iBAAbiwD,IAAuBA,EAAW14B,EAAO1b,KAAKo0C,IACrDA,EAASjwD,SAAW+qE,EAAO/tE,IAAM,EAAG,MAAM,IAAI0R,UAAU,sBAAwBuhD,EAASjwD,QAE7F,MAAoB,WAAhB+qE,EAAOt5D,KACF,IAAIulF,EAAajsB,EAAO7vE,OAAQ+0D,EAAUK,GAAI,GAC5B,SAAhBya,EAAOt5D,KACT,IAAIgvG,EAAW11C,EAAO7vE,OAAQ+0D,EAAUK,GAAI,GAG9C,IAAImjB,EAAS1I,EAAO7vE,OAAQ+0D,EAAUK,GAxGhC,EAAQ,EAavBz1B,CAAS44C,EAAU32B,GAEnB22B,EAASp2E,UAAUugD,QAAU,SAAU9sB,GAErC,IAAIm4B,EACAlD,EAFJ1qD,KAAKw7F,OAAO/wF,IAAIgrB,GAIhB,IADA,IAAIsM,EAAM,GACF6rB,EAAQ5tD,KAAKw7F,OAAOv6F,IAAIjB,KAAKslH,eACnC56D,EAAQ1qD,KAAKq8F,MAAMniC,QAAQl6D,KAAM4tD,GACjC7rB,EAAI/jB,KAAK0sC,GAEX,OAAOxuB,EAAOrb,OAAOkhB,IAGvBq2C,EAASp2E,UAAU+/C,OAAS,WAC1B,IAAI6L,EAAQ5tD,KAAKw7F,OAAO73E,QACxB,GAAI3jB,KAAKslH,aACP,OA0CJ,SAAgBtsG,GACd,IAAIstG,EAASttG,EAAK,IAClB,GAAIstG,EAAS,GAAKA,EAAS,GACzB,MAAM,IAAIp/G,MAAM,0BAElB,IAAI9G,GAAK,EACT,OAASA,EAAIkmH,GACX,GAAIttG,EAAM5Y,GAAK,GAAKkmH,MAAcA,EAChC,MAAM,IAAIp/G,MAAM,0BAGpB,GAAe,KAAXo/G,EAAe,OAEnB,OAAOttG,EAAK3E,MAAM,EAAG,GAAKiyG,GAvDjBC,CAAMvmH,KAAKq8F,MAAMniC,QAAQl6D,KAAM4tD,IACjC,GAAIA,EACT,MAAM,IAAI1mD,MAAM,sCAIpBkxE,EAASp2E,UAAUygD,eAAiB,SAAU+iE,GAE5C,OADAxlH,KAAKslH,eAAiBE,EACfxlH,MAOTqlH,EAASrjH,UAAUyI,IAAM,SAAUgrB,GACjCz1B,KAAKwF,MAAQ02B,EAAOrb,OAAO,CAAC7gB,KAAKwF,MAAOiwB,KAG1C4vF,EAASrjH,UAAUf,IAAM,SAAUulH,GACjC,IAAIzkF,EACJ,GAAIykF,GACF,GAAIxmH,KAAKwF,MAAMb,OAAS,GAGtB,OAFAo9B,EAAM/hC,KAAKwF,MAAM6O,MAAM,EAAG,IAC1BrU,KAAKwF,MAAQxF,KAAKwF,MAAM6O,MAAM,IACvB0tB,OAGT,GAAI/hC,KAAKwF,MAAMb,QAAU,GAGvB,OAFAo9B,EAAM/hC,KAAKwF,MAAM6O,MAAM,EAAG,IAC1BrU,KAAKwF,MAAQxF,KAAKwF,MAAM6O,MAAM,IACvB0tB,EAIX,OAAO,MAGTsjF,EAASrjH,UAAU2hB,MAAQ,WACzB,GAAI3jB,KAAKwF,MAAMb,OAAQ,OAAO3E,KAAKwF,OA8CrC5F,EAAQu4E,eARR,SAAyBksC,EAAOzvD,GAC9B,IAAI8a,EAASy1C,EAAMd,EAAM/+F,eACzB,IAAKoqD,EAAQ,MAAM,IAAIr8D,UAAU,sBAEjC,IAAIiO,EAAO8iG,EAAKxvD,GAAU,EAAO8a,EAAO/tE,IAAK+tE,EAAOza,IACpD,OAAO0F,EAAiB0pD,EAAO/iG,EAAK3f,IAAK2f,EAAK2zC,KAIhDr1D,EAAQ+6D,iBAAmBA,G,cC3H3B/6D,EAAQ,WAAa,CACnB+B,IAAK,EACLszD,GAAI,GAENr1D,EAAQ,WAAaA,EAAQ0kH,IAAM,CACjC3iH,IAAK,EACLszD,GAAI,GAENr1D,EAAQ,gBAAkBA,EAAQ+kH,KAAO,CACvChjH,IAAK,GACLszD,GAAI,GAENr1D,EAAQ,YAAc,CACpB+B,IAAK,GACLszD,GAAI,GAENr1D,EAAQ,eAAiB,CACvB+B,IAAK,GACLszD,GAAI,GAENr1D,EAAQ,WAAa,CACnB+B,IAAK,GACLszD,GAAI,I,iBCtBN,kBAAoB,EAAQ,KACxBviB,EAAS,EAAQ,KAEjB+zE,EAAK,EAAQ,KASjB,IAAIC,EAAY,CACd,QAAU,EAAM,KAAO,EAAM,QAAU,GA2BzC9mH,EAAQs7G,mBAAqBt7G,EAAQu7G,yBAA2Bv7G,EAAQw7G,iBAnCxE,SAA2BjgG,GACzB,IAAIk4B,EAAQ,IAAInX,EAAOwW,EAAOv3B,GAAKk4B,MAAO,OACtCiqD,EAAM,IAAIphE,EAAOwW,EAAOv3B,GAAKmiF,IAAK,OAEtC,OAAO,IAAImpB,EAAGpzE,EAAOiqD,IAgCvB19F,EAAQy7G,oBAAsBz7G,EAAQ07G,cAzBtC,SAASD,EAAqBhoE,EAAOoL,EAAKkoE,EAAWC,GACnD,OAAI1qF,EAAOqZ,SAASkJ,SAA2BttC,IAAnBu1G,EAAUjoE,GAC7B48D,EAAoBhoE,EAAO,SAAUoL,EAAKkoE,IAGnDloE,EAAMA,GAAO,SACbmoE,EAAOA,GAAQ,SACfD,EAAYA,GAAa,IAAIzqF,EAAO,CAAC,IAEhCA,EAAOqZ,SAASoxE,KACnBA,EAAY,IAAIzqF,EAAOyqF,EAAWC,IAGf,iBAAVvzE,EACF,IAAIozE,EAAGI,EAAcxzE,EAAOszE,GAAYA,GAAW,IAGvDzqF,EAAOqZ,SAASlC,KACnBA,EAAQ,IAAInX,EAAOmX,EAAOoL,IAGrB,IAAIgoE,EAAGpzE,EAAOszE,GAAW,Q,q7NCrClC,kBAAS,EAAQ,GAEb7pB,EAAc,IADA,EAAQ,MAEtBD,EAAa,IAAIp9D,EAAG,IACpB09D,EAAS,IAAI19D,EAAG,IAChBw9D,EAAM,IAAIx9D,EAAG,IACby9D,EAAQ,IAAIz9D,EAAG,GACfqnF,EAAQ,IAAIrnF,EAAG,GACfiT,EAAS,EAAQ,KACjB+mC,EAAc,EAAQ,IAG1B,SAASstC,EAAaC,EAAKvoE,GAMzB,OALAA,EAAMA,GAAO,OACRviB,EAAOqZ,SAASyxE,KACnBA,EAAM,IAAI9qF,EAAO8qF,EAAKvoE,IAExBz+C,KAAKinH,KAAO,IAAIxnF,EAAGunF,GACZhnH,KAGT,SAASknH,EAAcvtC,EAAMl7B,GAM3B,OALAA,EAAMA,GAAO,OACRviB,EAAOqZ,SAASokC,KACnBA,EAAO,IAAIz9C,EAAOy9C,EAAMl7B,IAE1Bz+C,KAAKmnH,MAAQ,IAAI1nF,EAAGk6C,GACb35E,KAjBTH,EAAOD,QAAU6mH,EAoBjB,IAAIW,EAAa,GAsDjB,SAASX,EAAGpzE,EAAOszE,EAAWU,GAC5BrnH,KAAKsnH,aAAaX,GAClB3mH,KAAKunH,QAAU,IAAI9nF,EAAG4T,GACtBrzC,KAAKszC,OAAS7T,EAAGgV,KAAKz0C,KAAKunH,SAC3BvnH,KAAKwnH,UAAYn0E,EAAM1uC,OACvB3E,KAAKinH,UAAO91G,EACZnR,KAAKmnH,WAAQh2G,EACbnR,KAAKynH,gBAAat2G,EACdk2G,GACFrnH,KAAK+mH,aAAeA,EACpB/mH,KAAKknH,cAAgBA,GAErBlnH,KAAKynH,WAAa,EA4DtB,SAASC,EAAkBnqB,EAAI9+C,GAC7B,IAAIx4C,EAAM,IAAIi2B,EAAOqhE,EAAG1/E,WACxB,OAAK4gC,EAGIx4C,EAAI9B,SAASs6C,GAFbx4C,EA5DXnF,OAAOC,eAAe0lH,EAAGzkH,UAAW,cAAe,CACjDhB,YAAY,EACZC,IAAK,WAIH,MAH+B,iBAApBjB,KAAKynH,aACdznH,KAAKynH,WAxEX,SAAoBp0E,EAAOszE,GACzB,IAAIrpB,EAAMqpB,EAAUxiH,SAAS,OACzBwjH,EAAM,CAACrqB,EAAKjqD,EAAMlvC,SAAS,KAAKK,KAAK,KACzC,GAAImjH,KAAOP,EACT,OAAOA,EAAWO,GAEpB,IAyBIl8G,EAzBA66C,EAAQ,EAEZ,GAAIjT,EAAMzD,WACP8C,EAAOiqD,cACPjqD,EAAOkqD,WAAWvpD,KAClBypD,EAAYp2E,KAAK2sB,GAclB,OAZAiT,GAAS,EAKPA,GAHU,OAARg3C,GAAwB,OAARA,EAGT,EAIA,EAEX8pB,EAAWO,GAAOrhE,EACXA,EAOT,OALKw2C,EAAYp2E,KAAK2sB,EAAMrF,KAAK,MAE/BsY,GAAS,GAGHg3C,GACN,IAAK,KACCjqD,EAAMl4B,IAAI0hF,GAAYr8D,IAAI28D,KAE5B72C,GAAS,GAEX,MACF,IAAK,MACH76C,EAAM4nC,EAAMl4B,IAAI8hF,IACRz8D,IAAI08D,IAAUzxF,EAAI+0B,IAAIsmF,KAE5BxgE,GAAS,GAEX,MACF,QACEA,GAAS,EAGb,OADA8gE,EAAWO,GAAOrhE,EACXA,EAsBeshE,CAAW5nH,KAAKunH,QAASvnH,KAAK6nH,QAE3C7nH,KAAKynH,cAGhBhB,EAAGzkH,UAAU8lH,aAAe,WAK1B,OAJK9nH,KAAKmnH,QACRnnH,KAAKmnH,MAAQ,IAAI1nF,EAAGg6C,EAAYz5E,KAAKwnH,aAEvCxnH,KAAKinH,KAAOjnH,KAAK+nH,KAAK52E,MAAMnxC,KAAKszC,QAAQb,OAAOzyC,KAAKmnH,OAAO51E,UACrDvxC,KAAKgoH,gBAGdvB,EAAGzkH,UAAUimH,cAAgB,SAAU97G,GAGrC,IAAI+7G,GADJ/7G,GADAA,EAAQ,IAAIszB,EAAGtzB,IACDglC,MAAMnxC,KAAKszC,SACNb,OAAOzyC,KAAKmnH,OAAO51E,UAClCxP,EAAM,IAAI7F,EAAOgsF,EAAOrqG,WACxBw1B,EAAQrzC,KAAKmoH,WACjB,GAAIpmF,EAAIp9B,OAAS0uC,EAAM1uC,OAAQ,CAC7B,IAAIyjH,EAAQ,IAAIlsF,EAAOmX,EAAM1uC,OAASo9B,EAAIp9B,QAC1CyjH,EAAMh1G,KAAK,GACX2uB,EAAM7F,EAAOrb,OAAO,CAACunG,EAAOrmF,IAE9B,OAAOA,GAGT0kF,EAAGzkH,UAAUgmH,aAAe,SAAsBvpE,GAChD,OAAOipE,EAAkB1nH,KAAKinH,KAAMxoE,IAGtCgoE,EAAGzkH,UAAUqmH,cAAgB,SAAuB5pE,GAClD,OAAOipE,EAAkB1nH,KAAKmnH,MAAO1oE,IAGvCgoE,EAAGzkH,UAAUmmH,SAAW,SAAU1pE,GAChC,OAAOipE,EAAkB1nH,KAAKunH,QAAS9oE,IAGzCgoE,EAAGzkH,UAAUsmH,aAAe,SAAU7pE,GACpC,OAAOipE,EAAkB1nH,KAAK+nH,KAAMtpE,IAGtCgoE,EAAGzkH,UAAUslH,aAAe,SAAUhqB,EAAK7+C,GAOzC,OANAA,EAAMA,GAAO,OACRviB,EAAOqZ,SAAS+nD,KACnBA,EAAM,IAAIphE,EAAOohE,EAAK7+C,IAExBz+C,KAAK6nH,MAAQvqB,EACbt9F,KAAK+nH,KAAO,IAAItoF,EAAG69D,GACZt9F,Q,wCCzJT,IAAIk8B,EAAS,EAAQ,GAAeA,OAChCgoE,EAAa,EAAQ,IACrBn0B,EAAS,EAAQ,KACjBvwC,EAAW,EAAQ,GACnBnuB,EAAO,EAAQ,KACfk3G,EAAS,EAAQ,KAEjBC,EAAa,EAAQ,IAMzB,SAAShN,EAAM7hD,GACboW,EAAO1nB,SAAS9nD,KAAKP,MAErB,IAAIy1B,EAAO+yF,EAAW7uD,GACtB,IAAKlkC,EAAM,MAAM,IAAIvuB,MAAM,0BAE3BlH,KAAKyoH,UAAYhzF,EAAK3uB,KACtB9G,KAAKyrD,MAAQy4C,EAAWzuE,EAAK3uB,MAC7B9G,KAAK0oH,KAAOjzF,EAAK43B,GACjBrtD,KAAK2oH,UAAYlzF,EAAKpkB,KAwBxB,SAASqqG,EAAQ/hD,GACfoW,EAAO1nB,SAAS9nD,KAAKP,MAErB,IAAIy1B,EAAO+yF,EAAW7uD,GACtB,IAAKlkC,EAAM,MAAM,IAAIvuB,MAAM,0BAE3BlH,KAAKyrD,MAAQy4C,EAAWzuE,EAAK3uB,MAC7B9G,KAAK0oH,KAAOjzF,EAAK43B,GACjBrtD,KAAK2oH,UAAYlzF,EAAKpkB,KAwBxB,SAASkqG,EAAY5hD,GACnB,OAAO,IAAI6hD,EAAK7hD,GAGlB,SAAS8hD,EAAc9hD,GACrB,OAAO,IAAI+hD,EAAO/hD,GA3EpB74D,OAAOwgB,KAAKknG,GAAY33D,SAAQ,SAAUlvD,GACxC6mH,EAAW7mH,GAAK0rD,GAAKnxB,EAAO1b,KAAKgoG,EAAW7mH,GAAK0rD,GAAI,OACrDm7D,EAAW7mH,EAAI2jB,eAAiBkjG,EAAW7mH,MAc7C69B,EAASg8E,EAAMzrC,EAAO1nB,UAEtBmzD,EAAKx5G,UAAUwzE,OAAS,SAAiB//C,EAAM7yB,EAAGogD,GAChDhjD,KAAKyrD,MAAMtJ,OAAO1sB,GAClButB,KAGFw4D,EAAKx5G,UAAUmgD,OAAS,SAAiB1sB,EAAMgpB,GAI7C,MAHoB,iBAAThpB,IAAmBA,EAAOyG,EAAO1b,KAAKiV,EAAMgpB,IAEvDz+C,KAAKyrD,MAAMtJ,OAAO1sB,GACXz1B,MAGTw7G,EAAKx5G,UAAUqP,KAAO,SAAqB1P,EAAK88C,GAC9Cz+C,KAAK2T,MACL,IAAI7M,EAAO9G,KAAKyrD,MAAMD,SAClBo9D,EAAMv3G,EAAKvK,EAAMnF,EAAK3B,KAAKyoH,UAAWzoH,KAAK2oH,UAAW3oH,KAAK0oH,MAE/D,OAAOjqE,EAAMmqE,EAAIzkH,SAASs6C,GAAOmqE,GAanCppF,EAASk8E,EAAQ3rC,EAAO1nB,UAExBqzD,EAAO15G,UAAUwzE,OAAS,SAAiB//C,EAAM7yB,EAAGogD,GAClDhjD,KAAKyrD,MAAMtJ,OAAO1sB,GAClButB,KAGF04D,EAAO15G,UAAUmgD,OAAS,SAAiB1sB,EAAMgpB,GAI/C,MAHoB,iBAAThpB,IAAmBA,EAAOyG,EAAO1b,KAAKiV,EAAMgpB,IAEvDz+C,KAAKyrD,MAAMtJ,OAAO1sB,GACXz1B,MAGT07G,EAAO15G,UAAUumH,OAAS,SAAuB5mH,EAAKinH,EAAKnqE,GACtC,iBAARmqE,IAAkBA,EAAM1sF,EAAO1b,KAAKooG,EAAKnqE,IAEpDz+C,KAAK2T,MACL,IAAI7M,EAAO9G,KAAKyrD,MAAMD,SACtB,OAAO+8D,EAAOK,EAAK9hH,EAAMnF,EAAK3B,KAAK2oH,UAAW3oH,KAAK0oH,OAWrD7oH,EAAOD,QAAU,CACf47G,KAAMD,EACNG,OAAQD,EACRF,WAAYA,EACZE,aAAcA,I,iBC1FhB77G,EAAUC,EAAOD,QAAU,EAAQ,MAC3B2yE,OAAS3yE,EACjBA,EAAQwoD,SAAWxoD,EACnBA,EAAQyoD,SAAW,EAAQ,KAC3BzoD,EAAQsoD,OAAS,EAAQ,IACzBtoD,EAAQ6hD,UAAY,EAAQ,KAC5B7hD,EAAQ4yE,YAAc,EAAQ,KAC9B5yE,EAAQywE,SAAW,EAAQ,IAC3BzwE,EAAQ+9G,SAAW,EAAQ,M,6CCN3B,SAASr6D,EAAQxhD,EAAQ87G,GAAkB,IAAIt8F,EAAOxgB,OAAOwgB,KAAKxf,GAAS,GAAIhB,OAAOyiD,sBAAuB,CAAE,IAAI+nC,EAAUxqF,OAAOyiD,sBAAsBzhD,GAAa87G,IAAgBtyB,EAAUA,EAAQlO,QAAO,SAAUygC,GAAO,OAAO/8G,OAAOqU,yBAAyBrT,EAAQ+7G,GAAK78G,eAAgBsgB,EAAKtD,KAAKvO,MAAM6R,EAAMgqE,GAAY,OAAOhqE,EAI9U,SAASw8F,EAAgBv4G,EAAK5D,EAAKN,GAAiK,OAApJM,KAAO4D,EAAOzE,OAAOC,eAAewE,EAAK5D,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAMyB,cAAc,EAAMD,UAAU,IAAkB+C,EAAI5D,GAAON,EAAgBkE,EAI3M,SAASw4G,EAAkBn+F,EAAQ6/C,GAAS,IAAK,IAAIr/D,EAAI,EAAGA,EAAIq/D,EAAM96D,OAAQvE,IAAK,CAAE,IAAI49G,EAAav+C,EAAMr/D,GAAI49G,EAAWh9G,WAAag9G,EAAWh9G,aAAc,EAAOg9G,EAAWv7G,cAAe,EAAU,UAAWu7G,IAAYA,EAAWx7G,UAAW,GAAM1B,OAAOC,eAAe6e,EAAQo+F,EAAWr8G,IAAKq8G,IAI7S,IACI9hF,EADW,EAAQ,GACDA,OAGlBwF,EADY,EAAQ,KACAA,QAEpBu8E,EAASv8E,GAAWA,EAAQu8E,QAAU,UAM1Cp+G,EAAOD,QAEP,WACE,SAAS6sF,KArBX,SAAyBj0D,EAAU0lF,GAAe,KAAM1lF,aAAoB0lF,GAAgB,MAAM,IAAI7qG,UAAU,qCAsB5G8qG,CAAgBn+G,KAAMysF,GAEtBzsF,KAAK6gD,KAAO,KACZ7gD,KAAKyrB,KAAO,KACZzrB,KAAK2E,OAAS,EAtBlB,IAAsBu5G,EAAaE,EAAYC,EAoM7C,OApMoBH,EAyBPzxB,GAzBoB2xB,EAyBR,CAAC,CACxBz8G,IAAK,OACLN,MAAO,SAAcua,GACnB,IAAI8E,EAAQ,CACV+U,KAAM7Z,EACNlE,KAAM,MAEJ1X,KAAK2E,OAAS,EAAG3E,KAAKyrB,KAAK/T,KAAOgJ,EAAW1gB,KAAK6gD,KAAOngC,EAC7D1gB,KAAKyrB,KAAO/K,IACV1gB,KAAK2E,SAER,CACDhD,IAAK,UACLN,MAAO,SAAiBua,GACtB,IAAI8E,EAAQ,CACV+U,KAAM7Z,EACNlE,KAAM1X,KAAK6gD,MAEO,IAAhB7gD,KAAK2E,SAAc3E,KAAKyrB,KAAO/K,GACnC1gB,KAAK6gD,KAAOngC,IACV1gB,KAAK2E,SAER,CACDhD,IAAK,QACLN,MAAO,WACL,GAAoB,IAAhBrB,KAAK2E,OAAT,CACA,IAAI+9B,EAAM1iC,KAAK6gD,KAAKprB,KAGpB,OAFoB,IAAhBz1B,KAAK2E,OAAc3E,KAAK6gD,KAAO7gD,KAAKyrB,KAAO,KAAUzrB,KAAK6gD,KAAO7gD,KAAK6gD,KAAKnpC,OAC7E1X,KAAK2E,OACA+9B,KAER,CACD/gC,IAAK,QACLN,MAAO,WACLrB,KAAK6gD,KAAO7gD,KAAKyrB,KAAO,KACxBzrB,KAAK2E,OAAS,IAEf,CACDhD,IAAK,OACLN,MAAO,SAAcc,GACnB,GAAoB,IAAhBnC,KAAK2E,OAAc,MAAO,GAI9B,IAHA,IAAIzC,EAAIlC,KAAK6gD,KACTne,EAAM,GAAKxgC,EAAEuzB,KAEVvzB,EAAIA,EAAEwV,MACXgrB,GAAOvgC,EAAID,EAAEuzB,KAGf,OAAOiN,IAER,CACD/gC,IAAK,SACLN,MAAO,SAAgBQ,GACrB,GAAoB,IAAhB7B,KAAK2E,OAAc,OAAOu3B,EAAOK,MAAM,GAK3C,IAJA,IArEczf,EAAK8C,EAAQ7L,EAqEvB2uB,EAAMxG,EAAOM,YAAY36B,IAAM,GAC/BK,EAAIlC,KAAK6gD,KACTzgD,EAAI,EAED8B,GAzEO4a,EA0ED5a,EAAEuzB,KA1EI7V,EA0EE8iB,EA1EM3uB,EA0ED3T,EAzE9B87B,EAAOl6B,UAAUq/B,KAAK9gC,KAAKuc,EAAK8C,EAAQ7L,GA0ElC3T,GAAK8B,EAAEuzB,KAAK9wB,OACZzC,EAAIA,EAAEwV,KAGR,OAAOgrB,IAGR,CACD/gC,IAAK,UACLN,MAAO,SAAiBQ,EAAGo1F,GACzB,IAAIv0D,EAcJ,OAZI7gC,EAAI7B,KAAK6gD,KAAKprB,KAAK9wB,QAErB+9B,EAAM1iC,KAAK6gD,KAAKprB,KAAKphB,MAAM,EAAGxS,GAC9B7B,KAAK6gD,KAAKprB,KAAOz1B,KAAK6gD,KAAKprB,KAAKphB,MAAMxS,IAGtC6gC,EAFS7gC,IAAM7B,KAAK6gD,KAAKprB,KAAK9wB,OAExB3E,KAAKyuC,QAGLwoD,EAAaj3F,KAAKs+G,WAAWz8G,GAAK7B,KAAKu+G,WAAW18G,GAGnD6gC,IAER,CACD/gC,IAAK,QACLN,MAAO,WACL,OAAOrB,KAAK6gD,KAAKprB,OAGlB,CACD9zB,IAAK,aACLN,MAAO,SAAoBQ,GACzB,IAAIK,EAAIlC,KAAK6gD,KACTpgD,EAAI,EACJiiC,EAAMxgC,EAAEuzB,KAGZ,IAFA5zB,GAAK6gC,EAAI/9B,OAEFzC,EAAIA,EAAEwV,MAAM,CACjB,IAAIpP,EAAMpG,EAAEuzB,KACRmxB,EAAK/kD,EAAIyG,EAAI3D,OAAS2D,EAAI3D,OAAS9C,EAIvC,GAHI+kD,IAAOt+C,EAAI3D,OAAQ+9B,GAAOp6B,EAASo6B,GAAOp6B,EAAI+L,MAAM,EAAGxS,GAGjD,IAFVA,GAAK+kD,GAEQ,CACPA,IAAOt+C,EAAI3D,UACXlE,EACEyB,EAAEwV,KAAM1X,KAAK6gD,KAAO3+C,EAAEwV,KAAU1X,KAAK6gD,KAAO7gD,KAAKyrB,KAAO,OAE5DzrB,KAAK6gD,KAAO3+C,EACZA,EAAEuzB,KAAOntB,EAAI+L,MAAMuyC,IAGrB,QAGAnmD,EAIJ,OADAT,KAAK2E,QAAUlE,EACRiiC,IAGR,CACD/gC,IAAK,aACLN,MAAO,SAAoBQ,GACzB,IAAI6gC,EAAMxG,EAAOM,YAAY36B,GACzBK,EAAIlC,KAAK6gD,KACTpgD,EAAI,EAIR,IAHAyB,EAAEuzB,KAAK4L,KAAKqB,GACZ7gC,GAAKK,EAAEuzB,KAAK9wB,OAELzC,EAAIA,EAAEwV,MAAM,CACjB,IAAIzR,EAAM/D,EAAEuzB,KACRmxB,EAAK/kD,EAAIoE,EAAItB,OAASsB,EAAItB,OAAS9C,EAIvC,GAHAoE,EAAIo7B,KAAKqB,EAAKA,EAAI/9B,OAAS9C,EAAG,EAAG+kD,GAGvB,IAFV/kD,GAAK+kD,GAEQ,CACPA,IAAO3gD,EAAItB,UACXlE,EACEyB,EAAEwV,KAAM1X,KAAK6gD,KAAO3+C,EAAEwV,KAAU1X,KAAK6gD,KAAO7gD,KAAKyrB,KAAO,OAE5DzrB,KAAK6gD,KAAO3+C,EACZA,EAAEuzB,KAAOxvB,EAAIoO,MAAMuyC,IAGrB,QAGAnmD,EAIJ,OADAT,KAAK2E,QAAUlE,EACRiiC,IAGR,CACD/gC,IAAKs8G,EACL58G,MAAO,SAAeuB,EAAG6iB,GACvB,OAAOic,EAAQ1hC,KAnMrB,SAAuB4f,GAAU,IAAK,IAAIxf,EAAI,EAAGA,EAAIsP,UAAU/K,OAAQvE,IAAK,CAAE,IAAI8c,EAAyB,MAAhBxN,UAAUtP,GAAasP,UAAUtP,GAAK,GAAQA,EAAI,EAAKkjD,EAAQxiD,OAAOoc,IAAS,GAAM2zC,SAAQ,SAAUlvD,GAAOm8G,EAAgBl+F,EAAQje,EAAKub,EAAOvb,OAAsBb,OAAO09G,0BAA6B19G,OAAO29G,iBAAiB7+F,EAAQ9e,OAAO09G,0BAA0BthG,IAAmBomC,EAAQxiD,OAAOoc,IAAS2zC,SAAQ,SAAUlvD,GAAOb,OAAOC,eAAe6e,EAAQje,EAAKb,OAAOqU,yBAAyB+H,EAAQvb,OAAe,OAAOie,EAmMlf8+F,CAAc,GAAIj5F,EAAS,CAE9C0iE,MAAO,EAEPw2B,eAAe,UA/LuDZ,EAAkBG,EAAYl8G,UAAWo8G,GAAiBC,GAAaN,EAAkBG,EAAaG,GAoM3K5xB,EApLT,I,8CC5BA,YAEA,IAAImyB,EAEJ,SAASd,EAAgBv4G,EAAK5D,EAAKN,GAAiK,OAApJM,KAAO4D,EAAOzE,OAAOC,eAAewE,EAAK5D,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAMyB,cAAc,EAAMD,UAAU,IAAkB+C,EAAI5D,GAAON,EAAgBkE,EAE3M,IAAI8qE,EAAW,EAAQ,IAEnBwuC,EAAe19G,OAAO,eACtB29G,EAAc39G,OAAO,cACrB49G,EAAS59G,OAAO,SAChB69G,EAAS79G,OAAO,SAChB89G,EAAe99G,OAAO,eACtB+9G,EAAiB/9G,OAAO,iBACxBg+G,EAAUh+G,OAAO,UAErB,SAASi+G,EAAiB/9G,EAAO2hD,GAC/B,MAAO,CACL3hD,MAAOA,EACP2hD,KAAMA,GAIV,SAASq8D,EAAe5+F,GACtB,IAAIojC,EAAUpjC,EAAKo+F,GAEnB,GAAgB,OAAZh7D,EAAkB,CACpB,IAAIpuB,EAAOhV,EAAK0+F,GAASpqF,OAIZ,OAATU,IACFhV,EAAKw+F,GAAgB,KACrBx+F,EAAKo+F,GAAgB,KACrBp+F,EAAKq+F,GAAe,KACpBj7D,EAAQu7D,EAAiB3pF,GAAM,MAKrC,SAAS6pF,EAAW7+F,GAGlBgJ,EAAQsU,SAASshF,EAAgB5+F,GAgBnC,IAAI8+F,EAAyBz+G,OAAOsU,gBAAe,eAC/CoqG,EAAuC1+G,OAAO2+G,gBA4D/C3B,EA5D+Dc,EAAwB,CACxF,aACE,OAAO5+G,KAAKm/G,IAGdznG,KAAM,WACJ,IAAIg7D,EAAQ1yE,KAIRsmD,EAAQtmD,KAAK++G,GAEjB,GAAc,OAAVz4D,EACF,OAAO1C,QAAQE,OAAOwC,GAGxB,GAAItmD,KAAKg/G,GACP,OAAOp7D,QAAQC,QAAQu7D,OAAiBjuG,GAAW,IAGrD,GAAInR,KAAKm/G,GAASp2D,UAKhB,OAAO,IAAInF,SAAQ,SAAUC,EAASC,GACpCr6B,EAAQsU,UAAS,WACX20C,EAAMqsC,GACRj7D,EAAO4uB,EAAMqsC,IAEbl7D,EAAQu7D,OAAiBjuG,GAAW,UAU5C,IACIuuG,EADAC,EAAc3/G,KAAKi/G,GAGvB,GAAIU,EACFD,EAAU,IAAI97D,QA1DpB,SAAqB+7D,EAAal/F,GAChC,OAAO,SAAUojC,EAASC,GACxB67D,EAAYtI,MAAK,WACX52F,EAAKu+F,GACPn7D,EAAQu7D,OAAiBjuG,GAAW,IAItCsP,EAAKy+F,GAAgBr7D,EAASC,KAC7BA,IAiDqB87D,CAAYD,EAAa3/G,WAC1C,CAGL,IAAIy1B,EAAOz1B,KAAKm/G,GAASpqF,OAEzB,GAAa,OAATU,EACF,OAAOmuB,QAAQC,QAAQu7D,EAAiB3pF,GAAM,IAGhDiqF,EAAU,IAAI97D,QAAQ5jD,KAAKk/G,IAI7B,OADAl/G,KAAKi/G,GAAgBS,EACdA,IAE+Bv+G,OAAO0vF,eAAe,WAC9D,OAAO7wF,QACL89G,EAAgBc,EAAuB,UAAU,WACnD,IAAItnB,EAASt3F,KAKb,OAAO,IAAI4jD,SAAQ,SAAUC,EAASC,GACpCwzC,EAAO6nB,GAASxpC,QAAQ,MAAM,SAAU7yB,GAClCA,EACFgB,EAAOhB,GAITe,EAAQu7D,OAAiBjuG,GAAW,aAGtCytG,GAAwBW,GAoE5B1/G,EAAOD,QAlEiC,SAA2CmwE,GACjF,IAAI8vC,EAEAtoG,EAAWzW,OAAOY,OAAO89G,GAA4D1B,EAArB+B,EAAiB,GAAoCV,EAAS,CAChI99G,MAAO0uE,EACPvtE,UAAU,IACRs7G,EAAgB+B,EAAgBhB,EAAc,CAChDx9G,MAAO,KACPmB,UAAU,IACRs7G,EAAgB+B,EAAgBf,EAAa,CAC/Cz9G,MAAO,KACPmB,UAAU,IACRs7G,EAAgB+B,EAAgBd,EAAQ,CAC1C19G,MAAO,KACPmB,UAAU,IACRs7G,EAAgB+B,EAAgBb,EAAQ,CAC1C39G,MAAO0uE,EAAOjnB,eAAeynB,WAC7B/tE,UAAU,IACRs7G,EAAgB+B,EAAgBX,EAAgB,CAClD79G,MAAO,SAAewiD,EAASC,GAC7B,IAAIruB,EAAOle,EAAS4nG,GAASpqF,OAEzBU,GACFle,EAAS0nG,GAAgB,KACzB1nG,EAASsnG,GAAgB,KACzBtnG,EAASunG,GAAe,KACxBj7D,EAAQu7D,EAAiB3pF,GAAM,MAE/Ble,EAASsnG,GAAgBh7D,EACzBtsC,EAASunG,GAAeh7D,IAG5BthD,UAAU,IACRq9G,IA8BJ,OA7BAtoG,EAAS0nG,GAAgB,KACzB5uC,EAASN,GAAQ,SAAUjtB,GACzB,GAAIA,GAAoB,+BAAbA,EAAIv6C,KAAuC,CACpD,IAAIu7C,EAASvsC,EAASunG,GAWtB,OARe,OAAXh7D,IACFvsC,EAAS0nG,GAAgB,KACzB1nG,EAASsnG,GAAgB,KACzBtnG,EAASunG,GAAe,KACxBh7D,EAAOhB,SAGTvrC,EAASwnG,GAAUj8D,GAIrB,IAAIe,EAAUtsC,EAASsnG,GAEP,OAAZh7D,IACFtsC,EAAS0nG,GAAgB,KACzB1nG,EAASsnG,GAAgB,KACzBtnG,EAASunG,GAAe,KACxBj7D,EAAQu7D,OAAiBjuG,GAAW,KAGtCoG,EAASynG,IAAU,KAErBjvC,EAAOxxC,GAAG,WAAY+gF,EAAW19G,KAAK,KAAM2V,IACrCA,K,+BC3MT1X,EAAOD,QAAU,WACf,MAAM,IAAIsH,MAAM,mD,6BCwBlBrH,EAAOD,QAAU4yE,EAEjB,IAAI/wB,EAAY,EAAQ,KAIxB,SAAS+wB,EAAY/sD,GACnB,KAAMzlB,gBAAgBwyE,GAAc,OAAO,IAAIA,EAAY/sD,GAC3Dg8B,EAAUlhD,KAAKP,KAAMylB,GAJvB,EAAQ,EAAR,CAAoB+sD,EAAa/wB,GAOjC+wB,EAAYxwE,UAAU6gD,WAAa,SAAU+K,EAAOlxB,EAAUusB,GAC5DA,EAAG,KAAM2E,K,6BCjCX,IAAIkiB,EAWJ,IAAI6c,EAAiB,EAAQ,IAAmB9iC,MAC5Ci2D,EAAmBnzB,EAAemzB,iBAClCnuB,EAAuBhF,EAAegF,qBAE1C,SAAS7zD,EAAKglB,GAEZ,GAAIA,EAAK,MAAMA,EAOjB,SAASi9D,EAAUhwC,EAAQud,EAAShZ,EAAS7/D,GAC3CA,EAvBF,SAAcA,GACZ,IAAIw7D,GAAS,EACb,OAAO,WACDA,IACJA,GAAS,EACTx7D,EAAShF,WAAM,EAAQC,aAkBd+uB,CAAKhqB,GAChB,IAAIisC,GAAS,EACbqvB,EAAOxxC,GAAG,SAAS,WACjBmiB,GAAS,UAECvvC,IAAR2+D,IAAmBA,EAAM,EAAQ,KACrCA,EAAIC,EAAQ,CACVxnB,SAAU+kC,EACV9qF,SAAU8xE,IACT,SAAUxxB,GACX,GAAIA,EAAK,OAAOruC,EAASquC,GACzBpC,GAAS,EACTjsC,OAEF,IAAIs0C,GAAY,EAChB,OAAO,SAAUjG,GACf,IAAIpC,IACAqI,EAGJ,OAFAA,GAAY,EAvBhB,SAAmBgnB,GACjB,OAAOA,EAAOa,WAAqC,mBAAjBb,EAAOc,MAwBnCC,CAAUf,GAAgBA,EAAOc,QACP,mBAAnBd,EAAO4F,QAA+B5F,EAAO4F,eACxDlhE,EAASquC,GAAO,IAAI6uC,EAAqB,UAI7C,SAASpxF,EAAKuxD,GACZA,IAGF,SAASukB,EAAK71D,EAAMzH,GAClB,OAAOyH,EAAK61D,KAAKt9D,GAGnB,SAASinG,EAAYC,GACnB,OAAKA,EAAQt7G,OAC8B,mBAAhCs7G,EAAQA,EAAQt7G,OAAS,GAA0Bm5B,EACvDmiF,EAAQn/F,MAFagd,EAgC9Bj+B,EAAOD,QA3BP,WACE,IAAK,IAAIyrD,EAAO37C,UAAU/K,OAAQs7G,EAAU,IAAIl9G,MAAMsoD,GAAOsI,EAAO,EAAGA,EAAOtI,EAAMsI,IAClFssD,EAAQtsD,GAAQjkD,UAAUikD,GAG5B,IAOIrN,EAPA7xC,EAAWurG,EAAYC,GAG3B,GAFIl9G,MAAMC,QAAQi9G,EAAQ,MAAKA,EAAUA,EAAQ,IAE7CA,EAAQt7G,OAAS,EACnB,MAAM,IAAIm7G,EAAiB,WAI7B,IAAII,EAAWD,EAAQ37G,KAAI,SAAUyrE,EAAQ3vE,GAC3C,IAAIktF,EAAUltF,EAAI6/G,EAAQt7G,OAAS,EAEnC,OAAOo7G,EAAUhwC,EAAQud,EADXltF,EAAI,GACyB,SAAU0iD,GAC9CwD,IAAOA,EAAQxD,GAChBA,GAAKo9D,EAASrvD,QAAQtwD,GACtB+sF,IACJ4yB,EAASrvD,QAAQtwD,GACjBkU,EAAS6xC,UAGb,OAAO25D,EAAQjQ,OAAO35B,K,gBC5FxB,IAAIn6C,EAAS,EAAQ,GAAeA,OAChC2+E,EAAa,EAAQ,IACrB9gC,EAAM,EAAQ,IACd8uC,EAAK,EAAQ,IAAY9tC,GACzBt7C,EAAK,EAAQ,KACbu5B,EAAY,EAAQ,IACpB8hB,EAAS,EAAQ,KAyErB,SAASguC,EAAQn4G,EAAGuyB,EAAGp8B,EAAMwzD,GAE3B,IADA3pD,EAAIurB,EAAO1b,KAAK7P,EAAEkN,YACZlZ,OAASu+B,EAAEH,aAAc,CAC7B,IAAIpB,EAAQzF,EAAOK,MAAM2G,EAAEH,aAAepyB,EAAEhM,QAC5CgM,EAAIurB,EAAOrb,OAAO,CAAC8gB,EAAOhxB,IAE5B,IAAIo4G,EAAOjiH,EAAKnC,OACZqkH,EAkBN,SAAsBjnG,EAAMmhB,GAE1BnhB,GADAA,EAAOknG,EAASlnG,EAAMmhB,IACV/nB,IAAI+nB,GAChB,IAAInB,EAAM7F,EAAO1b,KAAKuB,EAAKlE,WAC3B,GAAIkkB,EAAIp9B,OAASu+B,EAAEH,aAAc,CAC/B,IAAIpB,EAAQzF,EAAOK,MAAM2G,EAAEH,aAAehB,EAAIp9B,QAC9Co9B,EAAM7F,EAAOrb,OAAO,CAAC8gB,EAAOI,IAE9B,OAAOA,EA1BKmnF,CAAYpiH,EAAMo8B,GAC1BtnB,EAAIsgB,EAAOK,MAAMwsF,GACrBntG,EAAExI,KAAK,GACP,IAAIM,EAAIwoB,EAAOK,MAAMwsF,GAKrB,OAJAr1G,EAAImnG,EAAWvgD,EAAM5mD,GAAGyuC,OAAOvmC,GAAGumC,OAAOjmB,EAAO1b,KAAK,CAAC,KAAK2hC,OAAOxxC,GAAGwxC,OAAO6mE,GAAOx9D,SACnF5vC,EAAIi/F,EAAWvgD,EAAM5mD,GAAGyuC,OAAOvmC,GAAG4vC,SAG3B,CAAE93C,EAFTA,EAAImnG,EAAWvgD,EAAM5mD,GAAGyuC,OAAOvmC,GAAGumC,OAAOjmB,EAAO1b,KAAK,CAAC,KAAK2hC,OAAOxxC,GAAGwxC,OAAO6mE,GAAOx9D,SAEpE5vC,EADfA,EAAIi/F,EAAWvgD,EAAM5mD,GAAGyuC,OAAOvmC,GAAG4vC,UAIpC,SAASy9D,EAAUE,EAAOjmF,GACxB,IAAInhB,EAAO,IAAI0d,EAAG0pF,GACd16E,GAAS06E,EAAMxkH,QAAU,GAAKu+B,EAAEK,YAEpC,OADIkL,EAAQ,GAAG1sB,EAAK8rB,MAAMY,GACnB1sB,EAcT,SAASqnG,EAASlmF,EAAGmmF,EAAI/uD,GACvB,IAAIh5D,EACAoS,EAEJ,EAAG,CAGD,IAFApS,EAAI46B,EAAOK,MAAM,GAEC,EAAXj7B,EAAEqD,OAAau+B,EAAEK,aACtB8lF,EAAGztG,EAAIi/F,EAAWvgD,EAAM+uD,EAAG31G,GAAGyuC,OAAOknE,EAAGztG,GAAG4vC,SAC3ClqD,EAAI46B,EAAOrb,OAAO,CAACvf,EAAG+nH,EAAGztG,IAG3BlI,EAAIu1G,EAAS3nH,EAAG4hC,GAChBmmF,EAAG31G,EAAImnG,EAAWvgD,EAAM+uD,EAAG31G,GAAGyuC,OAAOknE,EAAGztG,GAAGumC,OAAOjmB,EAAO1b,KAAK,CAAC,KAAKgrC,SACpE69D,EAAGztG,EAAIi/F,EAAWvgD,EAAM+uD,EAAG31G,GAAGyuC,OAAOknE,EAAGztG,GAAG4vC,gBACtB,IAAd93C,EAAE8sB,IAAI0C,IAEf,OAAOxvB,EAGT,SAAS41G,EAAO35E,EAAGj8B,EAAGxR,EAAGghC,GACvB,OAAOyM,EAAEwB,MAAM1R,EAAGgV,KAAKvyC,IAAIuwC,OAAO/+B,GAAG69B,UAAUp2B,IAAI+nB,GAGrDrjC,EAAOD,QAnIP,SAAekH,EAAMnF,EAAK4nH,EAAUC,EAAUnwD,GAC5C,IAAIsgB,EAAO3gB,EAAUr3D,GACrB,GAAIg4E,EAAKvjB,MAAO,CAEd,GAAiB,UAAbozD,GAAqC,cAAbA,EAA0B,MAAM,IAAItiH,MAAM,0BACtE,OAmBJ,SAAiBJ,EAAM6yE,GACrB,IAAI8vC,EAAU3uC,EAAOnB,EAAKvjB,MAAM5xD,KAAK,MACrC,IAAKilH,EAAS,MAAM,IAAIviH,MAAM,iBAAmByyE,EAAKvjB,MAAM5xD,KAAK,MAEjE,IAEIu9B,EAFQ,IAAI8mF,EAAGY,GACHC,eAAe/vC,EAAK5e,YACtB1pD,KAAKvK,GAEnB,OAAOo1B,EAAO1b,KAAKuhB,EAAI4nF,SA3BdC,CAAO9iH,EAAM6yE,GACf,GAAkB,QAAdA,EAAKvjE,KAAgB,CAC9B,GAAiB,QAAbozG,EAAoB,MAAM,IAAItiH,MAAM,0BACxC,OA2BJ,SAAkBJ,EAAM6yE,EAAMrf,GAC5B,IAKI5mD,EALA/C,EAAIgpE,EAAK5f,OAAOkB,SAChB/4D,EAAIy3E,EAAK5f,OAAO73D,EAChBghC,EAAIy2C,EAAK5f,OAAO72B,EAChByM,EAAIgqC,EAAK5f,OAAOpqB,EAChBzuC,EAAI,IAAIu+B,EAAG,GAEX8zD,EAAI01B,EAASniH,EAAMo8B,GAAG/nB,IAAI+nB,GAC1B/gC,GAAI,EACJknH,EAAKP,EAAOn4G,EAAGuyB,EAAGp8B,EAAMwzD,GAC5B,MAAa,IAANn4D,GACLuR,EAAI01G,EAAQlmF,EAAGmmF,EAAI/uD,GACnBp5D,EAAIooH,EAAM35E,EAAGj8B,EAAGxR,EAAGghC,GAED,KADlB/gC,EAAIuR,EAAE28B,KAAKnN,GAAG/7B,KAAKosF,EAAE9oF,IAAIkG,EAAE2vB,IAAIp/B,KAAKia,IAAI+nB,IAClCkN,KAAK,KACTjuC,GAAI,EACJjB,EAAI,IAAIu+B,EAAG,IAGf,OAGF,SAAgBv+B,EAAGiB,GACjBjB,EAAIA,EAAE2c,UACN1b,EAAIA,EAAE0b,UAGK,IAAP3c,EAAE,KAAWA,EAAI,CAAC,GAAG2f,OAAO3f,IACrB,IAAPiB,EAAE,KAAWA,EAAI,CAAC,GAAG0e,OAAO1e,IAEhC,IACIyL,EAAM,CAAC,GADC1M,EAAEyD,OAASxC,EAAEwC,OAAS,EACV,EAAMzD,EAAEyD,QAEhC,OADAiJ,EAAMA,EAAIiT,OAAO3f,EAAG,CAAC,EAAMiB,EAAEwC,QAASxC,GAC/B+5B,EAAO1b,KAAK5S,GAdZ+7G,CAAMzoH,EAAGiB,GA9CP0nH,CAAQ/iH,EAAM6yE,EAAM4vC,GAE3B,GAAiB,QAAbC,GAAmC,cAAbA,EAA0B,MAAM,IAAItiH,MAAM,0BAEtEJ,EAAOo1B,EAAOrb,OAAO,CAACw4C,EAAKvyD,IAG3B,IAFA,IAAIyM,EAAMomE,EAAKC,QAAQ72C,aACnB83D,EAAM,CAAC,EAAG,GACP/zF,EAAKnC,OAASk2F,EAAIl2F,OAAS,EAAI4O,GAAKsnF,EAAI78E,KAAK,KACpD68E,EAAI78E,KAAK,GAET,IADA,IAAI5d,GAAK,IACAA,EAAI0G,EAAKnC,QAAQk2F,EAAI78E,KAAKlX,EAAK1G,IAGxC,OADU25E,EAAI8gB,EAAKlhB,IAgHrB95E,EAAOD,QAAQkpH,OAASA,EACxBjpH,EAAOD,QAAQwpH,QAAUA,G,iBC9IzB,2BACE,aAGA,SAAS9pF,EAAQtzB,EAAKuzB,GACpB,IAAKvzB,EAAK,MAAM,IAAI9E,MAAMq4B,GAAO,oBAKnC,SAASC,EAAUp9B,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIK,EAAW,aACfA,EAASV,UAAYK,EAAUL,UAC/BI,EAAKJ,UAAY,IAAIU,EACrBN,EAAKJ,UAAUO,YAAcH,EAK/B,SAASq9B,EAAIvL,EAAQoD,EAAMoI,GACzB,GAAID,EAAGE,KAAKzL,GACV,OAAOA,EAGTl0B,KAAK4/B,SAAW,EAChB5/B,KAAK6/B,MAAQ,KACb7/B,KAAK2E,OAAS,EAGd3E,KAAK8/B,IAAM,KAEI,OAAX5L,IACW,OAAToD,GAA0B,OAATA,IACnBoI,EAASpI,EACTA,EAAO,IAGTt3B,KAAK+/B,MAAM7L,GAAU,EAAGoD,GAAQ,GAAIoI,GAAU,OAYlD,IAAIxD,EATkB,iBAAXr8B,EACTA,EAAOD,QAAU6/B,EAEjB7/B,EAAQ6/B,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGO,SAAW,GAGd,IAEI9D,EADoB,oBAAX+D,aAAmD,IAAlBA,OAAO/D,OACxC+D,OAAO/D,OAEP,EAAQ,KAAUA,OAE7B,MAAO33B,IAgIT,SAAS27B,EAAeha,EAAQrP,GAC9B,IAAIpW,EAAIylB,EAAO1d,WAAWqO,GAE1B,OAAIpW,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,GAClBA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,QAEX6+B,GAAO,EAAO,wBAA0BpZ,GAI5C,SAASia,EAAcja,EAAQka,EAAYvpB,GACzC,IAAI3V,EAAIg/B,EAAcha,EAAQrP,GAI9B,OAHIA,EAAQ,GAAKupB,IACfl/B,GAAKg/B,EAAcha,EAAQrP,EAAQ,IAAM,GAEpC3V,EA8CT,SAASm/B,EAAW/3B,EAAKkL,EAAOG,EAAK2sB,GAInC,IAHA,IAAIp/B,EAAI,EACJwD,EAAI,EACJ6O,EAAMxM,KAAKsD,IAAI/B,EAAI3D,OAAQgP,GACtBvT,EAAIoT,EAAOpT,EAAImT,EAAKnT,IAAK,CAChC,IAAIK,EAAI6H,EAAIE,WAAWpI,GAAK,GAE5Bc,GAAKo/B,EAIH57B,EADEjE,GAAK,GACHA,EAAI,GAAK,GAGJA,GAAK,GACVA,EAAI,GAAK,GAITA,EAEN6+B,EAAO7+B,GAAK,GAAKiE,EAAI47B,EAAK,qBAC1Bp/B,GAAKwD,EAEP,OAAOxD,EA4DT,SAAS0/F,EAAMt/D,EAAMxkB,GACnBwkB,EAAKzB,MAAQ/iB,EAAI+iB,MACjByB,EAAK38B,OAASmY,EAAInY,OAClB28B,EAAK1B,SAAW9iB,EAAI8iB,SACpB0B,EAAKxB,IAAMhjB,EAAIgjB,IAsCjB,GA9TAL,EAAGE,KAAO,SAAeY,GACvB,OAAIA,aAAed,GAIJ,OAARc,GAA+B,iBAARA,GAC5BA,EAAIh+B,YAAYy9B,WAAaP,EAAGO,UAAYj9B,MAAMC,QAAQu9B,EAAIV,QAGlEJ,EAAG5xB,IAAM,SAAcyR,EAAMG,GAC3B,OAAIH,EAAKkhB,IAAI/gB,GAAS,EAAUH,EACzBG,GAGTggB,EAAGp1B,IAAM,SAAciV,EAAMG,GAC3B,OAAIH,EAAKkhB,IAAI/gB,GAAS,EAAUH,EACzBG,GAGTggB,EAAGz9B,UAAU+9B,MAAQ,SAAe7L,EAAQoD,EAAMoI,GAChD,GAAsB,iBAAXxL,EACT,OAAOl0B,KAAKygC,YAAYvM,EAAQoD,EAAMoI,GAGxC,GAAsB,iBAAXxL,EACT,OAAOl0B,KAAK0gC,WAAWxM,EAAQoD,EAAMoI,GAG1B,QAATpI,IACFA,EAAO,IAETgI,EAAOhI,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAGnD,IAAI9jB,EAAQ,EACM,OAFlB0gB,EAASA,EAAO/vB,WAAW0iB,QAAQ,OAAQ,KAEhC,KACTrT,IACAxT,KAAK4/B,SAAW,GAGdpsB,EAAQ0gB,EAAOvvB,SACJ,KAAT2yB,EACFt3B,KAAK2gC,UAAUzM,EAAQ1gB,EAAOksB,IAE9B1/B,KAAK4gC,WAAW1M,EAAQoD,EAAM9jB,GACf,OAAXksB,GACF1/B,KAAK0gC,WAAW1gC,KAAK6d,UAAWyZ,EAAMoI,MAM9CD,EAAGz9B,UAAUy+B,YAAc,SAAsBvM,EAAQoD,EAAMoI,GACzDxL,EAAS,IACXl0B,KAAK4/B,SAAW,EAChB1L,GAAUA,GAERA,EAAS,UACXl0B,KAAK6/B,MAAQ,CAAU,SAAT3L,GACdl0B,KAAK2E,OAAS,GACLuvB,EAAS,kBAClBl0B,KAAK6/B,MAAQ,CACF,SAAT3L,EACCA,EAAS,SAAa,UAEzBl0B,KAAK2E,OAAS,IAEd26B,EAAOpL,EAAS,kBAChBl0B,KAAK6/B,MAAQ,CACF,SAAT3L,EACCA,EAAS,SAAa,SACvB,GAEFl0B,KAAK2E,OAAS,GAGD,OAAX+6B,GAGJ1/B,KAAK0gC,WAAW1gC,KAAK6d,UAAWyZ,EAAMoI,IAGxCD,EAAGz9B,UAAU0+B,WAAa,SAAqBxM,EAAQoD,EAAMoI,GAG3D,GADAJ,EAAgC,iBAAlBpL,EAAOvvB,QACjBuvB,EAAOvvB,QAAU,EAGnB,OAFA3E,KAAK6/B,MAAQ,CAAC,GACd7/B,KAAK2E,OAAS,EACP3E,KAGTA,KAAK2E,OAASoC,KAAKiH,KAAKkmB,EAAOvvB,OAAS,GACxC3E,KAAK6/B,MAAQ,IAAI98B,MAAM/C,KAAK2E,QAC5B,IAAK,IAAIvE,EAAI,EAAGA,EAAIJ,KAAK2E,OAAQvE,IAC/BJ,KAAK6/B,MAAMz/B,GAAK,EAGlB,IAAI6X,EAAG4oB,EACHnC,EAAM,EACV,GAAe,OAAXgB,EACF,IAAKt/B,EAAI8zB,EAAOvvB,OAAS,EAAGsT,EAAI,EAAG7X,GAAK,EAAGA,GAAK,EAC9CygC,EAAI3M,EAAO9zB,GAAM8zB,EAAO9zB,EAAI,IAAM,EAAM8zB,EAAO9zB,EAAI,IAAM,GACzDJ,KAAK6/B,MAAM5nB,IAAO4oB,GAAKnC,EAAO,SAC9B1+B,KAAK6/B,MAAM5nB,EAAI,GAAM4oB,IAAO,GAAKnC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPzmB,UAGC,GAAe,OAAXynB,EACT,IAAKt/B,EAAI,EAAG6X,EAAI,EAAG7X,EAAI8zB,EAAOvvB,OAAQvE,GAAK,EACzCygC,EAAI3M,EAAO9zB,GAAM8zB,EAAO9zB,EAAI,IAAM,EAAM8zB,EAAO9zB,EAAI,IAAM,GACzDJ,KAAK6/B,MAAM5nB,IAAO4oB,GAAKnC,EAAO,SAC9B1+B,KAAK6/B,MAAM5nB,EAAI,GAAM4oB,IAAO,GAAKnC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPzmB,KAIN,OAAOjY,KAAK+zC,UA2BdtU,EAAGz9B,UAAU2+B,UAAY,SAAoBzM,EAAQ1gB,EAAOksB,GAE1D1/B,KAAK2E,OAASoC,KAAKiH,MAAMkmB,EAAOvvB,OAAS6O,GAAS,GAClDxT,KAAK6/B,MAAQ,IAAI98B,MAAM/C,KAAK2E,QAC5B,IAAK,IAAIvE,EAAI,EAAGA,EAAIJ,KAAK2E,OAAQvE,IAC/BJ,KAAK6/B,MAAMz/B,GAAK,EAIlB,IAGIygC,EAHAnC,EAAM,EACNzmB,EAAI,EAGR,GAAe,OAAXynB,EACF,IAAKt/B,EAAI8zB,EAAOvvB,OAAS,EAAGvE,GAAKoT,EAAOpT,GAAK,EAC3CygC,EAAIV,EAAajM,EAAQ1gB,EAAOpT,IAAMs+B,EACtC1+B,KAAK6/B,MAAM5nB,IAAU,SAAJ4oB,EACbnC,GAAO,IACTA,GAAO,GACPzmB,GAAK,EACLjY,KAAK6/B,MAAM5nB,IAAM4oB,IAAM,IAEvBnC,GAAO,OAKX,IAAKt+B,GADa8zB,EAAOvvB,OAAS6O,GACX,GAAM,EAAIA,EAAQ,EAAIA,EAAOpT,EAAI8zB,EAAOvvB,OAAQvE,GAAK,EAC1EygC,EAAIV,EAAajM,EAAQ1gB,EAAOpT,IAAMs+B,EACtC1+B,KAAK6/B,MAAM5nB,IAAU,SAAJ4oB,EACbnC,GAAO,IACTA,GAAO,GACPzmB,GAAK,EACLjY,KAAK6/B,MAAM5nB,IAAM4oB,IAAM,IAEvBnC,GAAO,EAKb1+B,KAAK+zC,UA8BPtU,EAAGz9B,UAAU4+B,WAAa,SAAqB1M,EAAQoD,EAAM9jB,GAE3DxT,KAAK6/B,MAAQ,CAAC,GACd7/B,KAAK2E,OAAS,EAGd,IAAK,IAAIo8B,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAW1J,EAClEyJ,IAEFA,IACAC,EAAWA,EAAU1J,EAAQ,EAO7B,IALA,IAAI2J,EAAQ/M,EAAOvvB,OAAS6O,EACxB2H,EAAM8lB,EAAQF,EACdptB,EAAM5M,KAAKsD,IAAI42B,EAAOA,EAAQ9lB,GAAO3H,EAErC0tB,EAAO,EACF9gC,EAAIoT,EAAOpT,EAAIuT,EAAKvT,GAAK2gC,EAChCG,EAAOb,EAAUnM,EAAQ9zB,EAAGA,EAAI2gC,EAASzJ,GAEzCt3B,KAAKmhC,MAAMH,GACPhhC,KAAK6/B,MAAM,GAAKqB,EAAO,SACzBlhC,KAAK6/B,MAAM,IAAMqB,EAEjBlhC,KAAKohC,OAAOF,GAIhB,GAAY,IAAR/lB,EAAW,CACb,IAAIhR,EAAM,EAGV,IAFA+2B,EAAOb,EAAUnM,EAAQ9zB,EAAG8zB,EAAOvvB,OAAQ2yB,GAEtCl3B,EAAI,EAAGA,EAAI+a,EAAK/a,IACnB+J,GAAOmtB,EAGTt3B,KAAKmhC,MAAMh3B,GACPnK,KAAK6/B,MAAM,GAAKqB,EAAO,SACzBlhC,KAAK6/B,MAAM,IAAMqB,EAEjBlhC,KAAKohC,OAAOF,GAIhBlhC,KAAK+zC,UAGPtU,EAAGz9B,UAAUq/B,KAAO,SAAeC,GACjCA,EAAKzB,MAAQ,IAAI98B,MAAM/C,KAAK2E,QAC5B,IAAK,IAAIvE,EAAI,EAAGA,EAAIJ,KAAK2E,OAAQvE,IAC/BkhC,EAAKzB,MAAMz/B,GAAKJ,KAAK6/B,MAAMz/B,GAE7BkhC,EAAK38B,OAAS3E,KAAK2E,OACnB28B,EAAK1B,SAAW5/B,KAAK4/B,SACrB0B,EAAKxB,IAAM9/B,KAAK8/B,KAUlBL,EAAGz9B,UAAU6+F,MAAQ,SAAgBv/D,GACnCs/D,EAAKt/D,EAAMthC,OAGby/B,EAAGz9B,UAAUu/B,MAAQ,WACnB,IAAIrgC,EAAI,IAAIu+B,EAAG,MAEf,OADAz/B,KAAKqhC,KAAKngC,GACHA,GAGTu+B,EAAGz9B,UAAUw/B,QAAU,SAAkBp3B,GACvC,KAAOpK,KAAK2E,OAASyF,GACnBpK,KAAK6/B,MAAM7/B,KAAK2E,UAAY,EAE9B,OAAO3E,MAITy/B,EAAGz9B,UAAU+xC,OAAS,WACpB,KAAO/zC,KAAK2E,OAAS,GAAqC,IAAhC3E,KAAK6/B,MAAM7/B,KAAK2E,OAAS,IACjD3E,KAAK2E,SAEP,OAAO3E,KAAKyhC,aAGdhC,EAAGz9B,UAAUy/B,UAAY,WAKvB,OAHoB,IAAhBzhC,KAAK2E,QAAkC,IAAlB3E,KAAK6/B,MAAM,KAClC7/B,KAAK4/B,SAAW,GAEX5/B,MAKa,oBAAXmB,QAAgD,mBAAfA,OAAO2/F,IACjD,IACErhE,EAAGz9B,UAAUb,OAAO2/F,IAAI,+BAAiCp/D,EACzD,MAAOn9B,GACPk7B,EAAGz9B,UAAU0/B,QAAUA,OAGzBjC,EAAGz9B,UAAU0/B,QAAUA,EAGzB,SAASA,IACP,OAAQ1hC,KAAK8/B,IAAM,UAAY,SAAW9/B,KAAKmE,SAAS,IAAM,IAiChE,IAAIw9B,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAG9DpC,EAAGz9B,UAAUmC,SAAW,SAAmBmzB,EAAM+K,GAI/C,IAAIN,EACJ,GAHAM,EAAoB,EAAVA,GAAe,EAGZ,MAJb/K,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCyK,EAAM,GAGN,IAFA,IAAIrD,EAAM,EACNuD,EAAQ,EACH7hC,EAAI,EAAGA,EAAIJ,KAAK2E,OAAQvE,IAAK,CACpC,IAAIygC,EAAI7gC,KAAK6/B,MAAMz/B,GACf8gC,GAA+B,UAArBL,GAAKnC,EAAOuD,IAAmB99B,SAAS,IAGpD49B,EADY,KADdE,EAASpB,IAAO,GAAKnC,EAAQ,WACVt+B,IAAMJ,KAAK2E,OAAS,EAC/Bg9B,EAAM,EAAIT,EAAKv8B,QAAUu8B,EAAOa,EAEhCb,EAAOa,GAEfrD,GAAO,IACI,KACTA,GAAO,GACPt+B,KAMJ,IAHc,IAAV6hC,IACFF,EAAME,EAAM99B,SAAS,IAAM49B,GAEtBA,EAAIp9B,OAAS09B,GAAY,GAC9BN,EAAM,IAAMA,EAKd,OAHsB,IAAlB/hC,KAAK4/B,WACPmC,EAAM,IAAMA,GAEPA,EAGT,GAAIzK,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAIgL,EAAYV,EAAWtK,GAEvBiL,EAAYV,EAAWvK,GAC3ByK,EAAM,GACN,IAAIthC,EAAIT,KAAKuhC,QAEb,IADA9gC,EAAEm/B,SAAW,GACLn/B,EAAE2K,UAAU,CAClB,IAAIlK,EAAIT,EAAEsgG,MAAMx+D,GAAWp+B,SAASmzB,GAMlCyK,GALFthC,EAAIA,EAAEgiC,MAAMF,IAELn3B,SAGClK,EAAI6gC,EAFJJ,EAAMW,EAAYphC,EAAEyD,QAAUzD,EAAI6gC,EAQ5C,IAHI/hC,KAAKoL,WACP22B,EAAM,IAAMA,GAEPA,EAAIp9B,OAAS09B,GAAY,GAC9BN,EAAM,IAAMA,EAKd,OAHsB,IAAlB/hC,KAAK4/B,WACPmC,EAAM,IAAMA,GAEPA,EAGTzC,GAAO,EAAO,oCAGhBG,EAAGz9B,UAAUkJ,SAAW,WACtB,IAAIw3B,EAAM1iC,KAAK6/B,MAAM,GASrB,OARoB,IAAhB7/B,KAAK2E,OACP+9B,GAAuB,SAAhB1iC,KAAK6/B,MAAM,GACO,IAAhB7/B,KAAK2E,QAAkC,IAAlB3E,KAAK6/B,MAAM,GAEzC6C,GAAO,iBAAoC,SAAhB1iC,KAAK6/B,MAAM,GAC7B7/B,KAAK2E,OAAS,GACvB26B,GAAO,EAAO,8CAEU,IAAlBt/B,KAAK4/B,UAAmB8C,EAAMA,GAGxCjD,EAAGz9B,UAAU2gC,OAAS,WACpB,OAAO3iC,KAAKmE,SAAS,GAAI,IAGvB+3B,IACFuD,EAAGz9B,UAAU4gC,SAAW,SAAmBlD,EAAQ/6B,GACjD,OAAO3E,KAAK6iC,YAAY3G,EAAQwD,EAAQ/6B,KAI5C86B,EAAGz9B,UAAU6b,QAAU,SAAkB6hB,EAAQ/6B,GAC/C,OAAO3E,KAAK6iC,YAAY9/B,MAAO28B,EAAQ/6B,IA4gBzC,SAASm9B,EAAYvtB,EAAMgsB,EAAKwB,GAC9BA,EAAInC,SAAWW,EAAIX,SAAWrrB,EAAKqrB,SACnC,IAAIrsB,EAAOgB,EAAK5P,OAAS47B,EAAI57B,OAAU,EACvCo9B,EAAIp9B,OAAS4O,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIzQ,EAAoB,EAAhByR,EAAKsrB,MAAM,GACfn7B,EAAmB,EAAf67B,EAAIV,MAAM,GACd3+B,EAAI4B,EAAI4B,EAERs9B,EAAS,SAAJ9gC,EACL+gC,EAAS/gC,EAAI,SAAa,EAC9B6gC,EAAIlC,MAAM,GAAKmC,EAEf,IAAK,IAAItuB,EAAI,EAAGA,EAAIH,EAAKG,IAAK,CAM5B,IAHA,IAAIwuB,EAASD,IAAU,GACnBE,EAAgB,SAARF,EACRG,EAAOr7B,KAAKsD,IAAIqJ,EAAG6sB,EAAI57B,OAAS,GAC3BsT,EAAIlR,KAAK8G,IAAI,EAAG6F,EAAIa,EAAK5P,OAAS,GAAIsT,GAAKmqB,EAAMnqB,IAAK,CAC7D,IAAI7X,EAAKsT,EAAIuE,EAAK,EAIlBiqB,IADAhhC,GAFA4B,EAAoB,EAAhByR,EAAKsrB,MAAMz/B,KACfsE,EAAmB,EAAf67B,EAAIV,MAAM5nB,IACFkqB,GACG,SAAa,EAC5BA,EAAY,SAAJjhC,EAEV6gC,EAAIlC,MAAMnsB,GAAa,EAARyuB,EACfF,EAAiB,EAATC,EAQV,OANc,IAAVD,EACFF,EAAIlC,MAAMnsB,GAAa,EAARuuB,EAEfF,EAAIp9B,SAGCo9B,EAAIgS,SAxiBbtU,EAAGz9B,UAAU6gC,YAAc,SAAsBC,EAAWpD,EAAQ/6B,GAClE3E,KAAK+zC,SAEL,IAAIhR,EAAa/iC,KAAK+iC,aAClBC,EAAYr+B,GAAUoC,KAAK8G,IAAI,EAAGk1B,GACtCzD,EAAOyD,GAAcC,EAAW,yCAChC1D,EAAO0D,EAAY,EAAG,+BAEtB,IAAIp1B,EAfS,SAAmBk1B,EAAW14B,GAC3C,OAAI04B,EAAUtG,YACLsG,EAAUtG,YAAYpyB,GAExB,IAAI04B,EAAU14B,GAWX42F,CAASl+D,EAAWE,GAG9B,OADAhjC,KAAK,gBADoB,OAAX0/B,EAAkB,KAAO,OACR9xB,EAAKm1B,GAC7Bn1B,GAGT6xB,EAAGz9B,UAAUi/F,eAAiB,SAAyBrzF,EAAKm1B,GAI1D,IAHA,IAAIhyB,EAAW,EACXkxB,EAAQ,EAEH7hC,EAAI,EAAGquC,EAAQ,EAAGruC,EAAIJ,KAAK2E,OAAQvE,IAAK,CAC/C,IAAI8gC,EAAQlhC,KAAK6/B,MAAMz/B,IAAMquC,EAASxM,EAEtCr0B,EAAImD,KAAqB,IAAPmwB,EACdnwB,EAAWnD,EAAIjJ,SACjBiJ,EAAImD,KAAemwB,GAAQ,EAAK,KAE9BnwB,EAAWnD,EAAIjJ,SACjBiJ,EAAImD,KAAemwB,GAAQ,GAAM,KAGrB,IAAVuN,GACE19B,EAAWnD,EAAIjJ,SACjBiJ,EAAImD,KAAemwB,GAAQ,GAAM,KAEnCe,EAAQ,EACRwM,EAAQ,IAERxM,EAAQf,IAAS,GACjBuN,GAAS,GAIb,GAAI19B,EAAWnD,EAAIjJ,OAGjB,IAFAiJ,EAAImD,KAAckxB,EAEXlxB,EAAWnD,EAAIjJ,QACpBiJ,EAAImD,KAAc,GAKxB0uB,EAAGz9B,UAAUk/F,eAAiB,SAAyBtzF,EAAKm1B,GAI1D,IAHA,IAAIhyB,EAAWnD,EAAIjJ,OAAS,EACxBs9B,EAAQ,EAEH7hC,EAAI,EAAGquC,EAAQ,EAAGruC,EAAIJ,KAAK2E,OAAQvE,IAAK,CAC/C,IAAI8gC,EAAQlhC,KAAK6/B,MAAMz/B,IAAMquC,EAASxM,EAEtCr0B,EAAImD,KAAqB,IAAPmwB,EACdnwB,GAAY,IACdnD,EAAImD,KAAemwB,GAAQ,EAAK,KAE9BnwB,GAAY,IACdnD,EAAImD,KAAemwB,GAAQ,GAAM,KAGrB,IAAVuN,GACE19B,GAAY,IACdnD,EAAImD,KAAemwB,GAAQ,GAAM,KAEnCe,EAAQ,EACRwM,EAAQ,IAERxM,EAAQf,IAAS,GACjBuN,GAAS,GAIb,GAAI19B,GAAY,EAGd,IAFAnD,EAAImD,KAAckxB,EAEXlxB,GAAY,GACjBnD,EAAImD,KAAc,GAKpBhK,KAAKkM,MACPwsB,EAAGz9B,UAAUqhC,WAAa,SAAqBxC,GAC7C,OAAO,GAAK95B,KAAKkM,MAAM4tB,IAGzBpB,EAAGz9B,UAAUqhC,WAAa,SAAqBxC,GAC7C,IAAIv/B,EAAIu/B,EACJ3/B,EAAI,EAiBR,OAhBII,GAAK,OACPJ,GAAK,GACLI,KAAO,IAELA,GAAK,KACPJ,GAAK,EACLI,KAAO,GAELA,GAAK,IACPJ,GAAK,EACLI,KAAO,GAELA,GAAK,IACPJ,GAAK,EACLI,KAAO,GAEFJ,EAAII,GAIfm+B,EAAGz9B,UAAUshC,UAAY,SAAoBzC,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAIv/B,EAAIu/B,EACJ3/B,EAAI,EAoBR,OAnBqB,IAAZ,KAAJI,KACHJ,GAAK,GACLI,KAAO,IAEU,IAAV,IAAJA,KACHJ,GAAK,EACLI,KAAO,GAES,IAAT,GAAJA,KACHJ,GAAK,EACLI,KAAO,GAES,IAAT,EAAJA,KACHJ,GAAK,EACLI,KAAO,GAES,IAAT,EAAJA,IACHJ,IAEKA,GAITu+B,EAAGz9B,UAAUuhC,UAAY,WACvB,IAAI1C,EAAI7gC,KAAK6/B,MAAM7/B,KAAK2E,OAAS,GAC7B6+B,EAAKxjC,KAAKqjC,WAAWxC,GACzB,OAA2B,IAAnB7gC,KAAK2E,OAAS,GAAU6+B,GAiBlC/D,EAAGz9B,UAAUyhC,SAAW,WACtB,GAAIzjC,KAAKoL,SAAU,OAAO,EAG1B,IADA,IAAIlK,EAAI,EACCd,EAAI,EAAGA,EAAIJ,KAAK2E,OAAQvE,IAAK,CACpC,IAAIsE,EAAI1E,KAAKsjC,UAAUtjC,KAAK6/B,MAAMz/B,IAElC,GADAc,GAAKwD,EACK,KAANA,EAAU,MAEhB,OAAOxD,GAGTu+B,EAAGz9B,UAAU+gC,WAAa,WACxB,OAAOh8B,KAAKiH,KAAKhO,KAAKujC,YAAc,IAGtC9D,EAAGz9B,UAAU0hC,OAAS,SAAiBC,GACrC,OAAsB,IAAlB3jC,KAAK4/B,SACA5/B,KAAK8R,MAAM8xB,MAAMD,GAAOE,MAAM,GAEhC7jC,KAAKuhC,SAGd9B,EAAGz9B,UAAU8hC,SAAW,SAAmBH,GACzC,OAAI3jC,KAAK+jC,MAAMJ,EAAQ,GACd3jC,KAAKgkC,KAAKL,GAAOE,MAAM,GAAGI,OAE5BjkC,KAAKuhC,SAGd9B,EAAGz9B,UAAUkiC,MAAQ,WACnB,OAAyB,IAAlBlkC,KAAK4/B,UAIdH,EAAGz9B,UAAUmiC,IAAM,WACjB,OAAOnkC,KAAKuhC,QAAQ0C,QAGtBxE,EAAGz9B,UAAUiiC,KAAO,WAKlB,OAJKjkC,KAAKoL,WACRpL,KAAK4/B,UAAY,GAGZ5/B,MAITy/B,EAAGz9B,UAAUoiC,KAAO,SAAe7D,GACjC,KAAOvgC,KAAK2E,OAAS47B,EAAI57B,QACvB3E,KAAK6/B,MAAM7/B,KAAK2E,UAAY,EAG9B,IAAK,IAAIvE,EAAI,EAAGA,EAAImgC,EAAI57B,OAAQvE,IAC9BJ,KAAK6/B,MAAMz/B,GAAKJ,KAAK6/B,MAAMz/B,GAAKmgC,EAAIV,MAAMz/B,GAG5C,OAAOJ,KAAK+zC,UAGdtU,EAAGz9B,UAAUqiC,IAAM,SAAc9D,GAE/B,OADAjB,EAA0C,IAAlCt/B,KAAK4/B,SAAWW,EAAIX,WACrB5/B,KAAKokC,KAAK7D,IAInBd,EAAGz9B,UAAUwM,GAAK,SAAa+xB,GAC7B,OAAIvgC,KAAK2E,OAAS47B,EAAI57B,OAAe3E,KAAKuhC,QAAQ8C,IAAI9D,GAC/CA,EAAIgB,QAAQ8C,IAAIrkC,OAGzBy/B,EAAGz9B,UAAUsiC,IAAM,SAAc/D,GAC/B,OAAIvgC,KAAK2E,OAAS47B,EAAI57B,OAAe3E,KAAKuhC,QAAQ6C,KAAK7D,GAChDA,EAAIgB,QAAQ6C,KAAKpkC,OAI1By/B,EAAGz9B,UAAUuiC,MAAQ,SAAgBhE,GAEnC,IAAI77B,EAEFA,EADE1E,KAAK2E,OAAS47B,EAAI57B,OAChB47B,EAEAvgC,KAGN,IAAK,IAAII,EAAI,EAAGA,EAAIsE,EAAEC,OAAQvE,IAC5BJ,KAAK6/B,MAAMz/B,GAAKJ,KAAK6/B,MAAMz/B,GAAKmgC,EAAIV,MAAMz/B,GAK5C,OAFAJ,KAAK2E,OAASD,EAAEC,OAET3E,KAAK+zC,UAGdtU,EAAGz9B,UAAUwiC,KAAO,SAAejE,GAEjC,OADAjB,EAA0C,IAAlCt/B,KAAK4/B,SAAWW,EAAIX,WACrB5/B,KAAKukC,MAAMhE,IAIpBd,EAAGz9B,UAAUuM,IAAM,SAAcgyB,GAC/B,OAAIvgC,KAAK2E,OAAS47B,EAAI57B,OAAe3E,KAAKuhC,QAAQiD,KAAKjE,GAChDA,EAAIgB,QAAQiD,KAAKxkC,OAG1By/B,EAAGz9B,UAAUyiC,KAAO,SAAelE,GACjC,OAAIvgC,KAAK2E,OAAS47B,EAAI57B,OAAe3E,KAAKuhC,QAAQgD,MAAMhE,GACjDA,EAAIgB,QAAQgD,MAAMvkC,OAI3By/B,EAAGz9B,UAAU0iC,MAAQ,SAAgBnE,GAEnC,IAAIz9B,EACA4B,EACA1E,KAAK2E,OAAS47B,EAAI57B,QACpB7B,EAAI9C,KACJ0E,EAAI67B,IAEJz9B,EAAIy9B,EACJ77B,EAAI1E,MAGN,IAAK,IAAII,EAAI,EAAGA,EAAIsE,EAAEC,OAAQvE,IAC5BJ,KAAK6/B,MAAMz/B,GAAK0C,EAAE+8B,MAAMz/B,GAAKsE,EAAEm7B,MAAMz/B,GAGvC,GAAIJ,OAAS8C,EACX,KAAO1C,EAAI0C,EAAE6B,OAAQvE,IACnBJ,KAAK6/B,MAAMz/B,GAAK0C,EAAE+8B,MAAMz/B,GAM5B,OAFAJ,KAAK2E,OAAS7B,EAAE6B,OAET3E,KAAK+zC,UAGdtU,EAAGz9B,UAAU2iC,KAAO,SAAepE,GAEjC,OADAjB,EAA0C,IAAlCt/B,KAAK4/B,SAAWW,EAAIX,WACrB5/B,KAAK0kC,MAAMnE,IAIpBd,EAAGz9B,UAAUyM,IAAM,SAAc8xB,GAC/B,OAAIvgC,KAAK2E,OAAS47B,EAAI57B,OAAe3E,KAAKuhC,QAAQoD,KAAKpE,GAChDA,EAAIgB,QAAQoD,KAAK3kC,OAG1By/B,EAAGz9B,UAAU4iC,KAAO,SAAerE,GACjC,OAAIvgC,KAAK2E,OAAS47B,EAAI57B,OAAe3E,KAAKuhC,QAAQmD,MAAMnE,GACjDA,EAAIgB,QAAQmD,MAAM1kC,OAI3By/B,EAAGz9B,UAAU4hC,MAAQ,SAAgBD,GACnCrE,EAAwB,iBAAVqE,GAAsBA,GAAS,GAE7C,IAAIkB,EAAsC,EAAxB99B,KAAKiH,KAAK21B,EAAQ,IAChCmB,EAAWnB,EAAQ,GAGvB3jC,KAAKwhC,QAAQqD,GAETC,EAAW,GACbD,IAIF,IAAK,IAAIzkC,EAAI,EAAGA,EAAIykC,EAAazkC,IAC/BJ,KAAK6/B,MAAMz/B,GAAsB,UAAhBJ,KAAK6/B,MAAMz/B,GAS9B,OALI0kC,EAAW,IACb9kC,KAAK6/B,MAAMz/B,IAAMJ,KAAK6/B,MAAMz/B,GAAM,UAAc,GAAK0kC,GAIhD9kC,KAAK+zC,UAGdtU,EAAGz9B,UAAUgiC,KAAO,SAAeL,GACjC,OAAO3jC,KAAKuhC,QAAQqC,MAAMD,IAI5BlE,EAAGz9B,UAAU+iC,KAAO,SAAe94B,EAAKD,GACtCszB,EAAsB,iBAARrzB,GAAoBA,GAAO,GAEzC,IAAIyyB,EAAOzyB,EAAM,GAAM,EACnB+4B,EAAO/4B,EAAM,GAUjB,OARAjM,KAAKwhC,QAAQ9C,EAAM,GAGjB1+B,KAAK6/B,MAAMnB,GADT1yB,EACgBhM,KAAK6/B,MAAMnB,GAAQ,GAAKsG,EAExBhlC,KAAK6/B,MAAMnB,KAAS,GAAKsG,GAGtChlC,KAAK+zC,UAIdtU,EAAGz9B,UAAUijC,KAAO,SAAe1E,GACjC,IAAIr/B,EAkBA4B,EAAG4B,EAfP,GAAsB,IAAlB1E,KAAK4/B,UAAmC,IAAjBW,EAAIX,SAI7B,OAHA5/B,KAAK4/B,SAAW,EAChB1+B,EAAIlB,KAAKklC,KAAK3E,GACdvgC,KAAK4/B,UAAY,EACV5/B,KAAKyhC,YAGP,GAAsB,IAAlBzhC,KAAK4/B,UAAmC,IAAjBW,EAAIX,SAIpC,OAHAW,EAAIX,SAAW,EACf1+B,EAAIlB,KAAKklC,KAAK3E,GACdA,EAAIX,SAAW,EACR1+B,EAAEugC,YAKPzhC,KAAK2E,OAAS47B,EAAI57B,QACpB7B,EAAI9C,KACJ0E,EAAI67B,IAEJz9B,EAAIy9B,EACJ77B,EAAI1E,MAIN,IADA,IAAIiiC,EAAQ,EACH7hC,EAAI,EAAGA,EAAIsE,EAAEC,OAAQvE,IAC5Bc,GAAkB,EAAb4B,EAAE+8B,MAAMz/B,KAAwB,EAAbsE,EAAEm7B,MAAMz/B,IAAU6hC,EAC1CjiC,KAAK6/B,MAAMz/B,GAAS,SAAJc,EAChB+gC,EAAQ/gC,IAAM,GAEhB,KAAiB,IAAV+gC,GAAe7hC,EAAI0C,EAAE6B,OAAQvE,IAClCc,GAAkB,EAAb4B,EAAE+8B,MAAMz/B,IAAU6hC,EACvBjiC,KAAK6/B,MAAMz/B,GAAS,SAAJc,EAChB+gC,EAAQ/gC,IAAM,GAIhB,GADAlB,KAAK2E,OAAS7B,EAAE6B,OACF,IAAVs9B,EACFjiC,KAAK6/B,MAAM7/B,KAAK2E,QAAUs9B,EAC1BjiC,KAAK2E,cAEA,GAAI7B,IAAM9C,KACf,KAAOI,EAAI0C,EAAE6B,OAAQvE,IACnBJ,KAAK6/B,MAAMz/B,GAAK0C,EAAE+8B,MAAMz/B,GAI5B,OAAOJ,MAITy/B,EAAGz9B,UAAUyI,IAAM,SAAc81B,GAC/B,IAAI3yB,EACJ,OAAqB,IAAjB2yB,EAAIX,UAAoC,IAAlB5/B,KAAK4/B,UAC7BW,EAAIX,SAAW,EACfhyB,EAAM5N,KAAKmlC,IAAI5E,GACfA,EAAIX,UAAY,EACThyB,GACmB,IAAjB2yB,EAAIX,UAAoC,IAAlB5/B,KAAK4/B,UACpC5/B,KAAK4/B,SAAW,EAChBhyB,EAAM2yB,EAAI4E,IAAInlC,MACdA,KAAK4/B,SAAW,EACThyB,GAGL5N,KAAK2E,OAAS47B,EAAI57B,OAAe3E,KAAKuhC,QAAQ0D,KAAK1E,GAEhDA,EAAIgB,QAAQ0D,KAAKjlC,OAI1By/B,EAAGz9B,UAAUkjC,KAAO,SAAe3E,GAEjC,GAAqB,IAAjBA,EAAIX,SAAgB,CACtBW,EAAIX,SAAW,EACf,IAAI1+B,EAAIlB,KAAKilC,KAAK1E,GAElB,OADAA,EAAIX,SAAW,EACR1+B,EAAEugC,YAGJ,GAAsB,IAAlBzhC,KAAK4/B,SAId,OAHA5/B,KAAK4/B,SAAW,EAChB5/B,KAAKilC,KAAK1E,GACVvgC,KAAK4/B,SAAW,EACT5/B,KAAKyhC,YAId,IAWI3+B,EAAG4B,EAXH87B,EAAMxgC,KAAKwgC,IAAID,GAGnB,GAAY,IAARC,EAIF,OAHAxgC,KAAK4/B,SAAW,EAChB5/B,KAAK2E,OAAS,EACd3E,KAAK6/B,MAAM,GAAK,EACT7/B,KAKLwgC,EAAM,GACR19B,EAAI9C,KACJ0E,EAAI67B,IAEJz9B,EAAIy9B,EACJ77B,EAAI1E,MAIN,IADA,IAAIiiC,EAAQ,EACH7hC,EAAI,EAAGA,EAAIsE,EAAEC,OAAQvE,IAE5B6hC,GADA/gC,GAAkB,EAAb4B,EAAE+8B,MAAMz/B,KAAwB,EAAbsE,EAAEm7B,MAAMz/B,IAAU6hC,IAC7B,GACbjiC,KAAK6/B,MAAMz/B,GAAS,SAAJc,EAElB,KAAiB,IAAV+gC,GAAe7hC,EAAI0C,EAAE6B,OAAQvE,IAElC6hC,GADA/gC,GAAkB,EAAb4B,EAAE+8B,MAAMz/B,IAAU6hC,IACV,GACbjiC,KAAK6/B,MAAMz/B,GAAS,SAAJc,EAIlB,GAAc,IAAV+gC,GAAe7hC,EAAI0C,EAAE6B,QAAU7B,IAAM9C,KACvC,KAAOI,EAAI0C,EAAE6B,OAAQvE,IACnBJ,KAAK6/B,MAAMz/B,GAAK0C,EAAE+8B,MAAMz/B,GAU5B,OANAJ,KAAK2E,OAASoC,KAAK8G,IAAI7N,KAAK2E,OAAQvE,GAEhC0C,IAAM9C,OACRA,KAAK4/B,SAAW,GAGX5/B,KAAK+zC,UAIdtU,EAAGz9B,UAAUmjC,IAAM,SAAc5E,GAC/B,OAAOvgC,KAAKuhC,QAAQ2D,KAAK3E,IA+C3B,IAAI6E,EAAc,SAAsB7wB,EAAMgsB,EAAKwB,GACjD,IAIIC,EACAqD,EACA7B,EANA1gC,EAAIyR,EAAKsrB,MACTn7B,EAAI67B,EAAIV,MACRh/B,EAAIkhC,EAAIlC,MACRp/B,EAAI,EAIJ6kC,EAAY,EAAPxiC,EAAE,GACPyiC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3iC,EAAE,GACP4iC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9iC,EAAE,GACP+iC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjjC,EAAE,GACPkjC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPpjC,EAAE,GACPqjC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvjC,EAAE,GACPwjC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1jC,EAAE,GACP2jC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7jC,EAAE,GACP8jC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhkC,EAAE,GACPikC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnkC,EAAE,GACPokC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1iC,EAAE,GACP2iC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7iC,EAAE,GACP8iC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhjC,EAAE,GACPijC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnjC,EAAE,GACPojC,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPtjC,EAAE,GACPujC,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAPzjC,EAAE,GACP0jC,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP5jC,EAAE,GACP6jC,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP/jC,EAAE,GACPgkC,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPlkC,EAAE,GACPmkC,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPrkC,EAAE,GACPskC,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjBhH,EAAInC,SAAWrrB,EAAKqrB,SAAWW,EAAIX,SACnCmC,EAAIp9B,OAAS,GAMb,IAAIukC,IAAQzoC,GAJZuhC,EAAKj7B,KAAKI,KAAKo+B,EAAK8B,IAIE,KAAa,MAFnChC,GADAA,EAAMt+B,KAAKI,KAAKo+B,EAAK+B,IACRvgC,KAAKI,KAAKq+B,EAAK6B,GAAQ,KAEU,IAAO,EACrD5mC,IAFA+iC,EAAKz8B,KAAKI,KAAKq+B,EAAK8B,KAEPjC,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAENlH,EAAKj7B,KAAKI,KAAKu+B,EAAK2B,GAEpBhC,GADAA,EAAMt+B,KAAKI,KAAKu+B,EAAK4B,IACRvgC,KAAKI,KAAKw+B,EAAK0B,GAAQ,EACpC7D,EAAKz8B,KAAKI,KAAKw+B,EAAK2B,GAKpB,IAAI6B,IAAQ1oC,GAJZuhC,EAAMA,EAAKj7B,KAAKI,KAAKo+B,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCnC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKo+B,EAAKkC,GAAQ,GACvB1gC,KAAKI,KAAKq+B,EAAKgC,GAAQ,KAEU,IAAO,EACrD/mC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKq+B,EAAKiC,GAAQ,IAErBpC,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAENnH,EAAKj7B,KAAKI,KAAK0+B,EAAKwB,GAEpBhC,GADAA,EAAMt+B,KAAKI,KAAK0+B,EAAKyB,IACRvgC,KAAKI,KAAK2+B,EAAKuB,GAAQ,EACpC7D,EAAKz8B,KAAKI,KAAK2+B,EAAKwB,GACpBtF,EAAMA,EAAKj7B,KAAKI,KAAKu+B,EAAK8B,GAAQ,EAElCnC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKu+B,EAAK+B,GAAQ,GACvB1gC,KAAKI,KAAKw+B,EAAK6B,GAAQ,EACpChE,EAAMA,EAAKz8B,KAAKI,KAAKw+B,EAAK8B,GAAQ,EAKlC,IAAI2B,IAAQ3oC,GAJZuhC,EAAMA,EAAKj7B,KAAKI,KAAKo+B,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCtC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKo+B,EAAKqC,GAAQ,GACvB7gC,KAAKI,KAAKq+B,EAAKmC,GAAQ,KAEU,IAAO,EACrDlnC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKq+B,EAAKoC,GAAQ,IAErBvC,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAENpH,EAAKj7B,KAAKI,KAAK6+B,EAAKqB,GAEpBhC,GADAA,EAAMt+B,KAAKI,KAAK6+B,EAAKsB,IACRvgC,KAAKI,KAAK8+B,EAAKoB,GAAQ,EACpC7D,EAAKz8B,KAAKI,KAAK8+B,EAAKqB,GACpBtF,EAAMA,EAAKj7B,KAAKI,KAAK0+B,EAAK2B,GAAQ,EAElCnC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK0+B,EAAK4B,GAAQ,GACvB1gC,KAAKI,KAAK2+B,EAAK0B,GAAQ,EACpChE,EAAMA,EAAKz8B,KAAKI,KAAK2+B,EAAK2B,GAAQ,EAClCzF,EAAMA,EAAKj7B,KAAKI,KAAKu+B,EAAKiC,GAAQ,EAElCtC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKu+B,EAAKkC,GAAQ,GACvB7gC,KAAKI,KAAKw+B,EAAKgC,GAAQ,EACpCnE,EAAMA,EAAKz8B,KAAKI,KAAKw+B,EAAKiC,GAAQ,EAKlC,IAAIyB,IAAQ5oC,GAJZuhC,EAAMA,EAAKj7B,KAAKI,KAAKo+B,EAAKuC,GAAQ,GAIZ,KAAa,MAFnCzC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKo+B,EAAKwC,GAAQ,GACvBhhC,KAAKI,KAAKq+B,EAAKsC,GAAQ,KAEU,IAAO,EACrDrnC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKq+B,EAAKuC,GAAQ,IAErB1C,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAENrH,EAAKj7B,KAAKI,KAAKg/B,EAAKkB,GAEpBhC,GADAA,EAAMt+B,KAAKI,KAAKg/B,EAAKmB,IACRvgC,KAAKI,KAAKi/B,EAAKiB,GAAQ,EACpC7D,EAAKz8B,KAAKI,KAAKi/B,EAAKkB,GACpBtF,EAAMA,EAAKj7B,KAAKI,KAAK6+B,EAAKwB,GAAQ,EAElCnC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK6+B,EAAKyB,GAAQ,GACvB1gC,KAAKI,KAAK8+B,EAAKuB,GAAQ,EACpChE,EAAMA,EAAKz8B,KAAKI,KAAK8+B,EAAKwB,GAAQ,EAClCzF,EAAMA,EAAKj7B,KAAKI,KAAK0+B,EAAK8B,GAAQ,EAElCtC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK0+B,EAAK+B,GAAQ,GACvB7gC,KAAKI,KAAK2+B,EAAK6B,GAAQ,EACpCnE,EAAMA,EAAKz8B,KAAKI,KAAK2+B,EAAK8B,GAAQ,EAClC5F,EAAMA,EAAKj7B,KAAKI,KAAKu+B,EAAKoC,GAAQ,EAElCzC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKu+B,EAAKqC,GAAQ,GACvBhhC,KAAKI,KAAKw+B,EAAKmC,GAAQ,EACpCtE,EAAMA,EAAKz8B,KAAKI,KAAKw+B,EAAKoC,GAAQ,EAKlC,IAAIuB,IAAQ7oC,GAJZuhC,EAAMA,EAAKj7B,KAAKI,KAAKo+B,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC5C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKo+B,EAAK2C,IAAQ,GACvBnhC,KAAKI,KAAKq+B,EAAKyC,GAAQ,KAEU,IAAO,EACrDxnC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKq+B,EAAK0C,IAAQ,IAErB7C,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENtH,EAAKj7B,KAAKI,KAAKm/B,EAAKe,GAEpBhC,GADAA,EAAMt+B,KAAKI,KAAKm/B,EAAKgB,IACRvgC,KAAKI,KAAKo/B,EAAKc,GAAQ,EACpC7D,EAAKz8B,KAAKI,KAAKo/B,EAAKe,GACpBtF,EAAMA,EAAKj7B,KAAKI,KAAKg/B,EAAKqB,GAAQ,EAElCnC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKg/B,EAAKsB,GAAQ,GACvB1gC,KAAKI,KAAKi/B,EAAKoB,GAAQ,EACpChE,EAAMA,EAAKz8B,KAAKI,KAAKi/B,EAAKqB,GAAQ,EAClCzF,EAAMA,EAAKj7B,KAAKI,KAAK6+B,EAAK2B,GAAQ,EAElCtC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK6+B,EAAK4B,GAAQ,GACvB7gC,KAAKI,KAAK8+B,EAAK0B,GAAQ,EACpCnE,EAAMA,EAAKz8B,KAAKI,KAAK8+B,EAAK2B,GAAQ,EAClC5F,EAAMA,EAAKj7B,KAAKI,KAAK0+B,EAAKiC,GAAQ,EAElCzC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK0+B,EAAKkC,GAAQ,GACvBhhC,KAAKI,KAAK2+B,EAAKgC,GAAQ,EACpCtE,EAAMA,EAAKz8B,KAAKI,KAAK2+B,EAAKiC,GAAQ,EAClC/F,EAAMA,EAAKj7B,KAAKI,KAAKu+B,EAAKuC,GAAQ,EAElC5C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKu+B,EAAKwC,IAAQ,GACvBnhC,KAAKI,KAAKw+B,EAAKsC,GAAQ,EACpCzE,EAAMA,EAAKz8B,KAAKI,KAAKw+B,EAAKuC,IAAQ,EAKlC,IAAIqB,IAAQ9oC,GAJZuhC,EAAMA,EAAKj7B,KAAKI,KAAKo+B,EAAK6C,IAAQ,GAIZ,KAAa,MAFnC/C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKo+B,EAAK8C,IAAQ,GACvBthC,KAAKI,KAAKq+B,EAAK4C,IAAQ,KAEU,IAAO,EACrD3nC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKq+B,EAAK6C,IAAQ,IAErBhD,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENvH,EAAKj7B,KAAKI,KAAKs/B,EAAKY,GAEpBhC,GADAA,EAAMt+B,KAAKI,KAAKs/B,EAAKa,IACRvgC,KAAKI,KAAKu/B,EAAKW,GAAQ,EACpC7D,EAAKz8B,KAAKI,KAAKu/B,EAAKY,GACpBtF,EAAMA,EAAKj7B,KAAKI,KAAKm/B,EAAKkB,GAAQ,EAElCnC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKm/B,EAAKmB,GAAQ,GACvB1gC,KAAKI,KAAKo/B,EAAKiB,GAAQ,EACpChE,EAAMA,EAAKz8B,KAAKI,KAAKo/B,EAAKkB,GAAQ,EAClCzF,EAAMA,EAAKj7B,KAAKI,KAAKg/B,EAAKwB,GAAQ,EAElCtC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKg/B,EAAKyB,GAAQ,GACvB7gC,KAAKI,KAAKi/B,EAAKuB,GAAQ,EACpCnE,EAAMA,EAAKz8B,KAAKI,KAAKi/B,EAAKwB,GAAQ,EAClC5F,EAAMA,EAAKj7B,KAAKI,KAAK6+B,EAAK8B,GAAQ,EAElCzC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK6+B,EAAK+B,GAAQ,GACvBhhC,KAAKI,KAAK8+B,EAAK6B,GAAQ,EACpCtE,EAAMA,EAAKz8B,KAAKI,KAAK8+B,EAAK8B,GAAQ,EAClC/F,EAAMA,EAAKj7B,KAAKI,KAAK0+B,EAAKoC,GAAQ,EAElC5C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK0+B,EAAKqC,IAAQ,GACvBnhC,KAAKI,KAAK2+B,EAAKmC,GAAQ,EACpCzE,EAAMA,EAAKz8B,KAAKI,KAAK2+B,EAAKoC,IAAQ,EAClClG,EAAMA,EAAKj7B,KAAKI,KAAKu+B,EAAK0C,IAAQ,EAElC/C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKu+B,EAAK2C,IAAQ,GACvBthC,KAAKI,KAAKw+B,EAAKyC,IAAQ,EACpC5E,EAAMA,EAAKz8B,KAAKI,KAAKw+B,EAAK0C,IAAQ,EAKlC,IAAImB,IAAQ/oC,GAJZuhC,EAAMA,EAAKj7B,KAAKI,KAAKo+B,EAAKgD,IAAQ,GAIZ,KAAa,MAFnClD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKo+B,EAAKiD,IAAQ,GACvBzhC,KAAKI,KAAKq+B,EAAK+C,IAAQ,KAEU,IAAO,EACrD9nC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKq+B,EAAKgD,IAAQ,IAErBnD,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENxH,EAAKj7B,KAAKI,KAAKy/B,EAAKS,GAEpBhC,GADAA,EAAMt+B,KAAKI,KAAKy/B,EAAKU,IACRvgC,KAAKI,KAAK0/B,EAAKQ,GAAQ,EACpC7D,EAAKz8B,KAAKI,KAAK0/B,EAAKS,GACpBtF,EAAMA,EAAKj7B,KAAKI,KAAKs/B,EAAKe,GAAQ,EAElCnC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKs/B,EAAKgB,GAAQ,GACvB1gC,KAAKI,KAAKu/B,EAAKc,GAAQ,EACpChE,EAAMA,EAAKz8B,KAAKI,KAAKu/B,EAAKe,GAAQ,EAClCzF,EAAMA,EAAKj7B,KAAKI,KAAKm/B,EAAKqB,GAAQ,EAElCtC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKm/B,EAAKsB,GAAQ,GACvB7gC,KAAKI,KAAKo/B,EAAKoB,GAAQ,EACpCnE,EAAMA,EAAKz8B,KAAKI,KAAKo/B,EAAKqB,GAAQ,EAClC5F,EAAMA,EAAKj7B,KAAKI,KAAKg/B,EAAK2B,GAAQ,EAElCzC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKg/B,EAAK4B,GAAQ,GACvBhhC,KAAKI,KAAKi/B,EAAK0B,GAAQ,EACpCtE,EAAMA,EAAKz8B,KAAKI,KAAKi/B,EAAK2B,GAAQ,EAClC/F,EAAMA,EAAKj7B,KAAKI,KAAK6+B,EAAKiC,GAAQ,EAElC5C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK6+B,EAAKkC,IAAQ,GACvBnhC,KAAKI,KAAK8+B,EAAKgC,GAAQ,EACpCzE,EAAMA,EAAKz8B,KAAKI,KAAK8+B,EAAKiC,IAAQ,EAClClG,EAAMA,EAAKj7B,KAAKI,KAAK0+B,EAAKuC,IAAQ,EAElC/C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK0+B,EAAKwC,IAAQ,GACvBthC,KAAKI,KAAK2+B,EAAKsC,IAAQ,EACpC5E,EAAMA,EAAKz8B,KAAKI,KAAK2+B,EAAKuC,IAAQ,EAClCrG,EAAMA,EAAKj7B,KAAKI,KAAKu+B,EAAK6C,IAAQ,EAElClD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKu+B,EAAK8C,IAAQ,GACvBzhC,KAAKI,KAAKw+B,EAAK4C,IAAQ,EACpC/E,EAAMA,EAAKz8B,KAAKI,KAAKw+B,EAAK6C,IAAQ,EAKlC,IAAIiB,IAAQhpC,GAJZuhC,EAAMA,EAAKj7B,KAAKI,KAAKo+B,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCrD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKo+B,EAAKoD,IAAQ,GACvB5hC,KAAKI,KAAKq+B,EAAKkD,IAAQ,KAEU,IAAO,EACrDjoC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKq+B,EAAKmD,IAAQ,IAErBtD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENzH,EAAKj7B,KAAKI,KAAK4/B,EAAKM,GAEpBhC,GADAA,EAAMt+B,KAAKI,KAAK4/B,EAAKO,IACRvgC,KAAKI,KAAK6/B,EAAKK,GAAQ,EACpC7D,EAAKz8B,KAAKI,KAAK6/B,EAAKM,GACpBtF,EAAMA,EAAKj7B,KAAKI,KAAKy/B,EAAKY,GAAQ,EAElCnC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKy/B,EAAKa,GAAQ,GACvB1gC,KAAKI,KAAK0/B,EAAKW,GAAQ,EACpChE,EAAMA,EAAKz8B,KAAKI,KAAK0/B,EAAKY,GAAQ,EAClCzF,EAAMA,EAAKj7B,KAAKI,KAAKs/B,EAAKkB,GAAQ,EAElCtC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKs/B,EAAKmB,GAAQ,GACvB7gC,KAAKI,KAAKu/B,EAAKiB,GAAQ,EACpCnE,EAAMA,EAAKz8B,KAAKI,KAAKu/B,EAAKkB,GAAQ,EAClC5F,EAAMA,EAAKj7B,KAAKI,KAAKm/B,EAAKwB,GAAQ,EAElCzC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKm/B,EAAKyB,GAAQ,GACvBhhC,KAAKI,KAAKo/B,EAAKuB,GAAQ,EACpCtE,EAAMA,EAAKz8B,KAAKI,KAAKo/B,EAAKwB,GAAQ,EAClC/F,EAAMA,EAAKj7B,KAAKI,KAAKg/B,EAAK8B,GAAQ,EAElC5C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKg/B,EAAK+B,IAAQ,GACvBnhC,KAAKI,KAAKi/B,EAAK6B,GAAQ,EACpCzE,EAAMA,EAAKz8B,KAAKI,KAAKi/B,EAAK8B,IAAQ,EAClClG,EAAMA,EAAKj7B,KAAKI,KAAK6+B,EAAKoC,IAAQ,EAElC/C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK6+B,EAAKqC,IAAQ,GACvBthC,KAAKI,KAAK8+B,EAAKmC,IAAQ,EACpC5E,EAAMA,EAAKz8B,KAAKI,KAAK8+B,EAAKoC,IAAQ,EAClCrG,EAAMA,EAAKj7B,KAAKI,KAAK0+B,EAAK0C,IAAQ,EAElClD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK0+B,EAAK2C,IAAQ,GACvBzhC,KAAKI,KAAK2+B,EAAKyC,IAAQ,EACpC/E,EAAMA,EAAKz8B,KAAKI,KAAK2+B,EAAK0C,IAAQ,EAClCxG,EAAMA,EAAKj7B,KAAKI,KAAKu+B,EAAKgD,IAAQ,EAElCrD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKu+B,EAAKiD,IAAQ,GACvB5hC,KAAKI,KAAKw+B,EAAK+C,IAAQ,EACpClF,EAAMA,EAAKz8B,KAAKI,KAAKw+B,EAAKgD,IAAQ,EAKlC,IAAIe,IAAQjpC,GAJZuhC,EAAMA,EAAKj7B,KAAKI,KAAKo+B,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCxD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKo+B,EAAKuD,IAAQ,GACvB/hC,KAAKI,KAAKq+B,EAAKqD,IAAQ,KAEU,IAAO,EACrDpoC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKq+B,EAAKsD,IAAQ,IAErBzD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAEN1H,EAAKj7B,KAAKI,KAAK+/B,EAAKG,GAEpBhC,GADAA,EAAMt+B,KAAKI,KAAK+/B,EAAKI,IACRvgC,KAAKI,KAAKggC,EAAKE,GAAQ,EACpC7D,EAAKz8B,KAAKI,KAAKggC,EAAKG,GACpBtF,EAAMA,EAAKj7B,KAAKI,KAAK4/B,EAAKS,GAAQ,EAElCnC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK4/B,EAAKU,GAAQ,GACvB1gC,KAAKI,KAAK6/B,EAAKQ,GAAQ,EACpChE,EAAMA,EAAKz8B,KAAKI,KAAK6/B,EAAKS,GAAQ,EAClCzF,EAAMA,EAAKj7B,KAAKI,KAAKy/B,EAAKe,GAAQ,EAElCtC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKy/B,EAAKgB,GAAQ,GACvB7gC,KAAKI,KAAK0/B,EAAKc,GAAQ,EACpCnE,EAAMA,EAAKz8B,KAAKI,KAAK0/B,EAAKe,GAAQ,EAClC5F,EAAMA,EAAKj7B,KAAKI,KAAKs/B,EAAKqB,GAAQ,EAElCzC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKs/B,EAAKsB,GAAQ,GACvBhhC,KAAKI,KAAKu/B,EAAKoB,GAAQ,EACpCtE,EAAMA,EAAKz8B,KAAKI,KAAKu/B,EAAKqB,GAAQ,EAClC/F,EAAMA,EAAKj7B,KAAKI,KAAKm/B,EAAK2B,GAAQ,EAElC5C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKm/B,EAAK4B,IAAQ,GACvBnhC,KAAKI,KAAKo/B,EAAK0B,GAAQ,EACpCzE,EAAMA,EAAKz8B,KAAKI,KAAKo/B,EAAK2B,IAAQ,EAClClG,EAAMA,EAAKj7B,KAAKI,KAAKg/B,EAAKiC,IAAQ,EAElC/C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKg/B,EAAKkC,IAAQ,GACvBthC,KAAKI,KAAKi/B,EAAKgC,IAAQ,EACpC5E,EAAMA,EAAKz8B,KAAKI,KAAKi/B,EAAKiC,IAAQ,EAClCrG,EAAMA,EAAKj7B,KAAKI,KAAK6+B,EAAKuC,IAAQ,EAElClD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK6+B,EAAKwC,IAAQ,GACvBzhC,KAAKI,KAAK8+B,EAAKsC,IAAQ,EACpC/E,EAAMA,EAAKz8B,KAAKI,KAAK8+B,EAAKuC,IAAQ,EAClCxG,EAAMA,EAAKj7B,KAAKI,KAAK0+B,EAAK6C,IAAQ,EAElCrD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK0+B,EAAK8C,IAAQ,GACvB5hC,KAAKI,KAAK2+B,EAAK4C,IAAQ,EACpClF,EAAMA,EAAKz8B,KAAKI,KAAK2+B,EAAK6C,IAAQ,EAClC3G,EAAMA,EAAKj7B,KAAKI,KAAKu+B,EAAKmD,IAAQ,EAElCxD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKu+B,EAAKoD,IAAQ,GACvB/hC,KAAKI,KAAKw+B,EAAKkD,IAAQ,EACpCrF,EAAMA,EAAKz8B,KAAKI,KAAKw+B,EAAKmD,IAAQ,EAKlC,IAAIa,IAAQlpC,GAJZuhC,EAAMA,EAAKj7B,KAAKI,KAAKo+B,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC3D,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKo+B,EAAK0D,IAAQ,GACvBliC,KAAKI,KAAKq+B,EAAKwD,IAAQ,KAEU,IAAO,EACrDvoC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKq+B,EAAKyD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAEN3H,EAAKj7B,KAAKI,KAAK+/B,EAAKM,GAEpBnC,GADAA,EAAMt+B,KAAKI,KAAK+/B,EAAKO,IACR1gC,KAAKI,KAAKggC,EAAKK,GAAQ,EACpChE,EAAKz8B,KAAKI,KAAKggC,EAAKM,GACpBzF,EAAMA,EAAKj7B,KAAKI,KAAK4/B,EAAKY,GAAQ,EAElCtC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK4/B,EAAKa,GAAQ,GACvB7gC,KAAKI,KAAK6/B,EAAKW,GAAQ,EACpCnE,EAAMA,EAAKz8B,KAAKI,KAAK6/B,EAAKY,GAAQ,EAClC5F,EAAMA,EAAKj7B,KAAKI,KAAKy/B,EAAKkB,GAAQ,EAElCzC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKy/B,EAAKmB,GAAQ,GACvBhhC,KAAKI,KAAK0/B,EAAKiB,GAAQ,EACpCtE,EAAMA,EAAKz8B,KAAKI,KAAK0/B,EAAKkB,GAAQ,EAClC/F,EAAMA,EAAKj7B,KAAKI,KAAKs/B,EAAKwB,GAAQ,EAElC5C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKs/B,EAAKyB,IAAQ,GACvBnhC,KAAKI,KAAKu/B,EAAKuB,GAAQ,EACpCzE,EAAMA,EAAKz8B,KAAKI,KAAKu/B,EAAKwB,IAAQ,EAClClG,EAAMA,EAAKj7B,KAAKI,KAAKm/B,EAAK8B,IAAQ,EAElC/C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKm/B,EAAK+B,IAAQ,GACvBthC,KAAKI,KAAKo/B,EAAK6B,IAAQ,EACpC5E,EAAMA,EAAKz8B,KAAKI,KAAKo/B,EAAK8B,IAAQ,EAClCrG,EAAMA,EAAKj7B,KAAKI,KAAKg/B,EAAKoC,IAAQ,EAElClD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKg/B,EAAKqC,IAAQ,GACvBzhC,KAAKI,KAAKi/B,EAAKmC,IAAQ,EACpC/E,EAAMA,EAAKz8B,KAAKI,KAAKi/B,EAAKoC,IAAQ,EAClCxG,EAAMA,EAAKj7B,KAAKI,KAAK6+B,EAAK0C,IAAQ,EAElCrD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK6+B,EAAK2C,IAAQ,GACvB5hC,KAAKI,KAAK8+B,EAAKyC,IAAQ,EACpClF,EAAMA,EAAKz8B,KAAKI,KAAK8+B,EAAK0C,IAAQ,EAClC3G,EAAMA,EAAKj7B,KAAKI,KAAK0+B,EAAKgD,IAAQ,EAElCxD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK0+B,EAAKiD,IAAQ,GACvB/hC,KAAKI,KAAK2+B,EAAK+C,IAAQ,EACpCrF,EAAMA,EAAKz8B,KAAKI,KAAK2+B,EAAKgD,IAAQ,EAKlC,IAAIc,IAASnpC,GAJbuhC,EAAMA,EAAKj7B,KAAKI,KAAKu+B,EAAKsD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKu+B,EAAKuD,IAAQ,GACvBliC,KAAKI,KAAKw+B,EAAKqD,IAAQ,KAEW,IAAO,EACtDvoC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKw+B,EAAKsD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMuE,KAAQ,IAAO,EACjDA,IAAO,SAEP5H,EAAKj7B,KAAKI,KAAK+/B,EAAKS,GAEpBtC,GADAA,EAAMt+B,KAAKI,KAAK+/B,EAAKU,IACR7gC,KAAKI,KAAKggC,EAAKQ,GAAQ,EACpCnE,EAAKz8B,KAAKI,KAAKggC,EAAKS,GACpB5F,EAAMA,EAAKj7B,KAAKI,KAAK4/B,EAAKe,GAAQ,EAElCzC,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK4/B,EAAKgB,GAAQ,GACvBhhC,KAAKI,KAAK6/B,EAAKc,GAAQ,EACpCtE,EAAMA,EAAKz8B,KAAKI,KAAK6/B,EAAKe,GAAQ,EAClC/F,EAAMA,EAAKj7B,KAAKI,KAAKy/B,EAAKqB,GAAQ,EAElC5C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKy/B,EAAKsB,IAAQ,GACvBnhC,KAAKI,KAAK0/B,EAAKoB,GAAQ,EACpCzE,EAAMA,EAAKz8B,KAAKI,KAAK0/B,EAAKqB,IAAQ,EAClClG,EAAMA,EAAKj7B,KAAKI,KAAKs/B,EAAK2B,IAAQ,EAElC/C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKs/B,EAAK4B,IAAQ,GACvBthC,KAAKI,KAAKu/B,EAAK0B,IAAQ,EACpC5E,EAAMA,EAAKz8B,KAAKI,KAAKu/B,EAAK2B,IAAQ,EAClCrG,EAAMA,EAAKj7B,KAAKI,KAAKm/B,EAAKiC,IAAQ,EAElClD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKm/B,EAAKkC,IAAQ,GACvBzhC,KAAKI,KAAKo/B,EAAKgC,IAAQ,EACpC/E,EAAMA,EAAKz8B,KAAKI,KAAKo/B,EAAKiC,IAAQ,EAClCxG,EAAMA,EAAKj7B,KAAKI,KAAKg/B,EAAKuC,IAAQ,EAElCrD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKg/B,EAAKwC,IAAQ,GACvB5hC,KAAKI,KAAKi/B,EAAKsC,IAAQ,EACpClF,EAAMA,EAAKz8B,KAAKI,KAAKi/B,EAAKuC,IAAQ,EAClC3G,EAAMA,EAAKj7B,KAAKI,KAAK6+B,EAAK6C,IAAQ,EAElCxD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK6+B,EAAK8C,IAAQ,GACvB/hC,KAAKI,KAAK8+B,EAAK4C,IAAQ,EACpCrF,EAAMA,EAAKz8B,KAAKI,KAAK8+B,EAAK6C,IAAQ,EAKlC,IAAIe,IAASppC,GAJbuhC,EAAMA,EAAKj7B,KAAKI,KAAK0+B,EAAKmD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK0+B,EAAKoD,IAAQ,GACvBliC,KAAKI,KAAK2+B,EAAKkD,IAAQ,KAEW,IAAO,EACtDvoC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAK2+B,EAAKmD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEP7H,EAAKj7B,KAAKI,KAAK+/B,EAAKY,GAEpBzC,GADAA,EAAMt+B,KAAKI,KAAK+/B,EAAKa,IACRhhC,KAAKI,KAAKggC,EAAKW,GAAQ,EACpCtE,EAAKz8B,KAAKI,KAAKggC,EAAKY,GACpB/F,EAAMA,EAAKj7B,KAAKI,KAAK4/B,EAAKkB,GAAQ,EAElC5C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK4/B,EAAKmB,IAAQ,GACvBnhC,KAAKI,KAAK6/B,EAAKiB,GAAQ,EACpCzE,EAAMA,EAAKz8B,KAAKI,KAAK6/B,EAAKkB,IAAQ,EAClClG,EAAMA,EAAKj7B,KAAKI,KAAKy/B,EAAKwB,IAAQ,EAElC/C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKy/B,EAAKyB,IAAQ,GACvBthC,KAAKI,KAAK0/B,EAAKuB,IAAQ,EACpC5E,EAAMA,EAAKz8B,KAAKI,KAAK0/B,EAAKwB,IAAQ,EAClCrG,EAAMA,EAAKj7B,KAAKI,KAAKs/B,EAAK8B,IAAQ,EAElClD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKs/B,EAAK+B,IAAQ,GACvBzhC,KAAKI,KAAKu/B,EAAK6B,IAAQ,EACpC/E,EAAMA,EAAKz8B,KAAKI,KAAKu/B,EAAK8B,IAAQ,EAClCxG,EAAMA,EAAKj7B,KAAKI,KAAKm/B,EAAKoC,IAAQ,EAElCrD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKm/B,EAAKqC,IAAQ,GACvB5hC,KAAKI,KAAKo/B,EAAKmC,IAAQ,EACpClF,EAAMA,EAAKz8B,KAAKI,KAAKo/B,EAAKoC,IAAQ,EAClC3G,EAAMA,EAAKj7B,KAAKI,KAAKg/B,EAAK0C,IAAQ,EAElCxD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKg/B,EAAK2C,IAAQ,GACvB/hC,KAAKI,KAAKi/B,EAAKyC,IAAQ,EACpCrF,EAAMA,EAAKz8B,KAAKI,KAAKi/B,EAAK0C,IAAQ,EAKlC,IAAIgB,IAASrpC,GAJbuhC,EAAMA,EAAKj7B,KAAKI,KAAK6+B,EAAKgD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK6+B,EAAKiD,IAAQ,GACvBliC,KAAKI,KAAK8+B,EAAK+C,IAAQ,KAEW,IAAO,EACtDvoC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAK8+B,EAAKgD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEP9H,EAAKj7B,KAAKI,KAAK+/B,EAAKe,GAEpB5C,GADAA,EAAMt+B,KAAKI,KAAK+/B,EAAKgB,KACRnhC,KAAKI,KAAKggC,EAAKc,GAAQ,EACpCzE,EAAKz8B,KAAKI,KAAKggC,EAAKe,IACpBlG,EAAMA,EAAKj7B,KAAKI,KAAK4/B,EAAKqB,IAAQ,EAElC/C,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK4/B,EAAKsB,IAAQ,GACvBthC,KAAKI,KAAK6/B,EAAKoB,IAAQ,EACpC5E,EAAMA,EAAKz8B,KAAKI,KAAK6/B,EAAKqB,IAAQ,EAClCrG,EAAMA,EAAKj7B,KAAKI,KAAKy/B,EAAK2B,IAAQ,EAElClD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKy/B,EAAK4B,IAAQ,GACvBzhC,KAAKI,KAAK0/B,EAAK0B,IAAQ,EACpC/E,EAAMA,EAAKz8B,KAAKI,KAAK0/B,EAAK2B,IAAQ,EAClCxG,EAAMA,EAAKj7B,KAAKI,KAAKs/B,EAAKiC,IAAQ,EAElCrD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKs/B,EAAKkC,IAAQ,GACvB5hC,KAAKI,KAAKu/B,EAAKgC,IAAQ,EACpClF,EAAMA,EAAKz8B,KAAKI,KAAKu/B,EAAKiC,IAAQ,EAClC3G,EAAMA,EAAKj7B,KAAKI,KAAKm/B,EAAKuC,IAAQ,EAElCxD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKm/B,EAAKwC,IAAQ,GACvB/hC,KAAKI,KAAKo/B,EAAKsC,IAAQ,EACpCrF,EAAMA,EAAKz8B,KAAKI,KAAKo/B,EAAKuC,IAAQ,EAKlC,IAAIiB,IAAStpC,GAJbuhC,EAAMA,EAAKj7B,KAAKI,KAAKg/B,EAAK6C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKg/B,EAAK8C,IAAQ,GACvBliC,KAAKI,KAAKi/B,EAAK4C,IAAQ,KAEW,IAAO,EACtDvoC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKi/B,EAAK6C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEP/H,EAAKj7B,KAAKI,KAAK+/B,EAAKkB,IAEpB/C,GADAA,EAAMt+B,KAAKI,KAAK+/B,EAAKmB,KACRthC,KAAKI,KAAKggC,EAAKiB,IAAQ,EACpC5E,EAAKz8B,KAAKI,KAAKggC,EAAKkB,IACpBrG,EAAMA,EAAKj7B,KAAKI,KAAK4/B,EAAKwB,IAAQ,EAElClD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK4/B,EAAKyB,IAAQ,GACvBzhC,KAAKI,KAAK6/B,EAAKuB,IAAQ,EACpC/E,EAAMA,EAAKz8B,KAAKI,KAAK6/B,EAAKwB,IAAQ,EAClCxG,EAAMA,EAAKj7B,KAAKI,KAAKy/B,EAAK8B,IAAQ,EAElCrD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKy/B,EAAK+B,IAAQ,GACvB5hC,KAAKI,KAAK0/B,EAAK6B,IAAQ,EACpClF,EAAMA,EAAKz8B,KAAKI,KAAK0/B,EAAK8B,IAAQ,EAClC3G,EAAMA,EAAKj7B,KAAKI,KAAKs/B,EAAKoC,IAAQ,EAElCxD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKs/B,EAAKqC,IAAQ,GACvB/hC,KAAKI,KAAKu/B,EAAKmC,IAAQ,EACpCrF,EAAMA,EAAKz8B,KAAKI,KAAKu/B,EAAKoC,IAAQ,EAKlC,IAAIkB,IAASvpC,GAJbuhC,EAAMA,EAAKj7B,KAAKI,KAAKm/B,EAAK0C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKm/B,EAAK2C,IAAQ,GACvBliC,KAAKI,KAAKo/B,EAAKyC,IAAQ,KAEW,IAAO,EACtDvoC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKo/B,EAAK0C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPhI,EAAKj7B,KAAKI,KAAK+/B,EAAKqB,IAEpBlD,GADAA,EAAMt+B,KAAKI,KAAK+/B,EAAKsB,KACRzhC,KAAKI,KAAKggC,EAAKoB,IAAQ,EACpC/E,EAAKz8B,KAAKI,KAAKggC,EAAKqB,IACpBxG,EAAMA,EAAKj7B,KAAKI,KAAK4/B,EAAK2B,IAAQ,EAElCrD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK4/B,EAAK4B,IAAQ,GACvB5hC,KAAKI,KAAK6/B,EAAK0B,IAAQ,EACpClF,EAAMA,EAAKz8B,KAAKI,KAAK6/B,EAAK2B,IAAQ,EAClC3G,EAAMA,EAAKj7B,KAAKI,KAAKy/B,EAAKiC,IAAQ,EAElCxD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKy/B,EAAKkC,IAAQ,GACvB/hC,KAAKI,KAAK0/B,EAAKgC,IAAQ,EACpCrF,EAAMA,EAAKz8B,KAAKI,KAAK0/B,EAAKiC,IAAQ,EAKlC,IAAImB,IAASxpC,GAJbuhC,EAAMA,EAAKj7B,KAAKI,KAAKs/B,EAAKuC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKs/B,EAAKwC,IAAQ,GACvBliC,KAAKI,KAAKu/B,EAAKsC,IAAQ,KAEW,IAAO,EACtDvoC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAKu/B,EAAKuC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPjI,EAAKj7B,KAAKI,KAAK+/B,EAAKwB,IAEpBrD,GADAA,EAAMt+B,KAAKI,KAAK+/B,EAAKyB,KACR5hC,KAAKI,KAAKggC,EAAKuB,IAAQ,EACpClF,EAAKz8B,KAAKI,KAAKggC,EAAKwB,IACpB3G,EAAMA,EAAKj7B,KAAKI,KAAK4/B,EAAK8B,IAAQ,EAElCxD,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK4/B,EAAK+B,IAAQ,GACvB/hC,KAAKI,KAAK6/B,EAAK6B,IAAQ,EACpCrF,EAAMA,EAAKz8B,KAAKI,KAAK6/B,EAAK8B,IAAQ,EAKlC,IAAIoB,IAASzpC,GAJbuhC,EAAMA,EAAKj7B,KAAKI,KAAKy/B,EAAKoC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMt+B,KAAKI,KAAKy/B,EAAKqC,IAAQ,GACvBliC,KAAKI,KAAK0/B,EAAKmC,IAAQ,KAEW,IAAO,EACtDvoC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAK0/B,EAAKoC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPlI,EAAKj7B,KAAKI,KAAK+/B,EAAK2B,IAEpBxD,GADAA,EAAMt+B,KAAKI,KAAK+/B,EAAK4B,KACR/hC,KAAKI,KAAKggC,EAAK0B,IAAQ,EACpCrF,EAAKz8B,KAAKI,KAAKggC,EAAK2B,IAKpB,IAAIqB,IAAS1pC,GAJbuhC,EAAMA,EAAKj7B,KAAKI,KAAK4/B,EAAKiC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMt+B,KAAKI,KAAK4/B,EAAKkC,IAAQ,GACvBliC,KAAKI,KAAK6/B,EAAKgC,IAAQ,KAEW,IAAO,EACtDvoC,IAFA+iC,EAAMA,EAAKz8B,KAAKI,KAAK6/B,EAAKiC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAAS3pC,GAJbuhC,EAAKj7B,KAAKI,KAAK+/B,EAAK8B,KAIG,KAAa,MAFpC3D,GADAA,EAAMt+B,KAAKI,KAAK+/B,EAAK+B,KACRliC,KAAKI,KAAKggC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBAvoC,IAFA+iC,EAAKz8B,KAAKI,KAAKggC,EAAK8B,MAEP5D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SACPvpC,EAAE,GAAKqoC,GACProC,EAAE,GAAKsoC,GACPtoC,EAAE,GAAKuoC,GACPvoC,EAAE,GAAKwoC,GACPxoC,EAAE,GAAKyoC,GACPzoC,EAAE,GAAK0oC,GACP1oC,EAAE,GAAK2oC,GACP3oC,EAAE,GAAK4oC,GACP5oC,EAAE,GAAK6oC,GACP7oC,EAAE,GAAK8oC,GACP9oC,EAAE,IAAM+oC,GACR/oC,EAAE,IAAMgpC,GACRhpC,EAAE,IAAMipC,GACRjpC,EAAE,IAAMkpC,GACRlpC,EAAE,IAAMmpC,GACRnpC,EAAE,IAAMopC,GACRppC,EAAE,IAAMqpC,GACRrpC,EAAE,IAAMspC,GACRtpC,EAAE,IAAMupC,GACE,IAAN3pC,IACFI,EAAE,IAAMJ,EACRshC,EAAIp9B,UAECo9B,GAQT,SAAS2I,EAAUn2B,EAAMgsB,EAAKwB,GAC5BA,EAAInC,SAAWW,EAAIX,SAAWrrB,EAAKqrB,SACnCmC,EAAIp9B,OAAS4P,EAAK5P,OAAS47B,EAAI57B,OAI/B,IAFA,IAAIs9B,EAAQ,EACRwI,EAAU,EACL/2B,EAAI,EAAGA,EAAIquB,EAAIp9B,OAAS,EAAG+O,IAAK,CAGvC,IAAIwuB,EAASuI,EACbA,EAAU,EAGV,IAFA,IAAItI,EAAgB,SAARF,EACRG,EAAOr7B,KAAKsD,IAAIqJ,EAAG6sB,EAAI57B,OAAS,GAC3BsT,EAAIlR,KAAK8G,IAAI,EAAG6F,EAAIa,EAAK5P,OAAS,GAAIsT,GAAKmqB,EAAMnqB,IAAK,CAC7D,IAAI7X,EAAIsT,EAAIuE,EAGR/W,GAFoB,EAAhBqT,EAAKsrB,MAAMz/B,KACI,EAAfmgC,EAAIV,MAAM5nB,IAGd+pB,EAAS,SAAJ9gC,EAGTihC,EAAa,UADbH,EAAMA,EAAKG,EAAS,GAIpBsI,IAFAvI,GAHAA,EAAUA,GAAWhhC,EAAI,SAAa,GAAM,IAGxB8gC,IAAO,IAAO,KAEZ,GACtBE,GAAU,SAEZH,EAAIlC,MAAMnsB,GAAKyuB,EACfF,EAAQC,EACRA,EAASuI,EAQX,OANc,IAAVxI,EACFF,EAAIlC,MAAMnsB,GAAKuuB,EAEfF,EAAIp9B,SAGCo9B,EAAIgS,SAGb,SAAS1J,EAAY91B,EAAMgsB,EAAKwB,GAI9B,OAAO2I,EAASn2B,EAAMgsB,EAAKwB,GAsB7B,SAASuI,EAAM35B,EAAGoB,GAChB/R,KAAK2Q,EAAIA,EACT3Q,KAAK+R,EAAIA,EAzENhL,KAAKI,OACRi+B,EAActD,GAmDhBrC,EAAGz9B,UAAUwoC,MAAQ,SAAgBjK,EAAKwB,GACxC,IACIxuB,EAAMvT,KAAK2E,OAAS47B,EAAI57B,OAW5B,OAVoB,KAAhB3E,KAAK2E,QAAgC,KAAf47B,EAAI57B,OACtBygC,EAAYplC,KAAMugC,EAAKwB,GACpBxuB,EAAM,GACTuuB,EAAW9hC,KAAMugC,EAAKwB,GACnBxuB,EAAM,KACTm3B,EAAS1qC,KAAMugC,EAAKwB,GAEpBsI,EAAWrqC,KAAMugC,EAAKwB,IAchCuI,EAAKtoC,UAAU2oC,QAAU,SAAkBC,GAGzC,IAFA,IAAItpC,EAAI,IAAIyB,MAAM6nC,GACdvqC,EAAIo/B,EAAGz9B,UAAUqhC,WAAWuH,GAAK,EAC5BxqC,EAAI,EAAGA,EAAIwqC,EAAGxqC,IACrBkB,EAAElB,GAAKJ,KAAK6qC,OAAOzqC,EAAGC,EAAGuqC,GAG3B,OAAOtpC,GAITgpC,EAAKtoC,UAAU6oC,OAAS,SAAiBl6B,EAAGtQ,EAAGuqC,GAC7C,GAAU,IAANj6B,GAAWA,IAAMi6B,EAAI,EAAG,OAAOj6B,EAGnC,IADA,IAAIm6B,EAAK,EACA1qC,EAAI,EAAGA,EAAIC,EAAGD,IACrB0qC,IAAW,EAAJn6B,IAAWtQ,EAAID,EAAI,EAC1BuQ,IAAM,EAGR,OAAOm6B,GAKTR,EAAKtoC,UAAU+oC,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMR,GACpE,IAAK,IAAIxqC,EAAI,EAAGA,EAAIwqC,EAAGxqC,IACrB+qC,EAAK/qC,GAAK6qC,EAAID,EAAI5qC,IAClBgrC,EAAKhrC,GAAK8qC,EAAIF,EAAI5qC,KAItBkqC,EAAKtoC,UAAU6W,UAAY,SAAoBoyB,EAAKC,EAAKC,EAAMC,EAAMR,EAAGI,GACtEhrC,KAAK+qC,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMR,GAExC,IAAK,IAAIzoC,EAAI,EAAGA,EAAIyoC,EAAGzoC,IAAM,EAM3B,IALA,IAAI9B,EAAI8B,GAAK,EAETkpC,EAAQtkC,KAAKukC,IAAI,EAAIvkC,KAAKwkC,GAAKlrC,GAC/BmrC,EAAQzkC,KAAK0kC,IAAI,EAAI1kC,KAAKwkC,GAAKlrC,GAE1B6B,EAAI,EAAGA,EAAI0oC,EAAG1oC,GAAK7B,EAI1B,IAHA,IAAIqrC,EAASL,EACTM,EAASH,EAEJvzB,EAAI,EAAGA,EAAI9V,EAAG8V,IAAK,CAC1B,IAAI2zB,EAAKT,EAAKjpC,EAAI+V,GACd4zB,EAAKT,EAAKlpC,EAAI+V,GAEd6zB,EAAKX,EAAKjpC,EAAI+V,EAAI9V,GAClB4pC,EAAKX,EAAKlpC,EAAI+V,EAAI9V,GAElB6pC,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELb,EAAKjpC,EAAI+V,GAAK2zB,EAAKE,EACnBV,EAAKlpC,EAAI+V,GAAK4zB,EAAKE,EAEnBZ,EAAKjpC,EAAI+V,EAAI9V,GAAKypC,EAAKE,EACvBV,EAAKlpC,EAAI+V,EAAI9V,GAAK0pC,EAAKE,EAGnB9zB,IAAM5X,IACR2rC,EAAKX,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASM,KAOnB1B,EAAKtoC,UAAUiqC,YAAc,SAAsBpqC,EAAGrB,GACpD,IAAIoqC,EAAqB,EAAjB7jC,KAAK8G,IAAIrN,EAAGqB,GAChBqqC,EAAU,EAAJtB,EACNxqC,EAAI,EACR,IAAKwqC,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BxqC,IAGF,OAAO,GAAKA,EAAI,EAAI8rC,GAGtB5B,EAAKtoC,UAAUmqC,UAAY,SAAoBlB,EAAKC,EAAKN,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIxqC,EAAI,EAAGA,EAAIwqC,EAAI,EAAGxqC,IAAK,CAC9B,IAAIkB,EAAI2pC,EAAI7qC,GAEZ6qC,EAAI7qC,GAAK6qC,EAAIL,EAAIxqC,EAAI,GACrB6qC,EAAIL,EAAIxqC,EAAI,GAAKkB,EAEjBA,EAAI4pC,EAAI9qC,GAER8qC,EAAI9qC,IAAM8qC,EAAIN,EAAIxqC,EAAI,GACtB8qC,EAAIN,EAAIxqC,EAAI,IAAMkB,IAItBgpC,EAAKtoC,UAAUoqC,aAAe,SAAuBC,EAAIzB,GAEvD,IADA,IAAI3I,EAAQ,EACH7hC,EAAI,EAAGA,EAAIwqC,EAAI,EAAGxqC,IAAK,CAC9B,IAAIygC,EAAoC,KAAhC95B,KAAKmjB,MAAMmiB,EAAG,EAAIjsC,EAAI,GAAKwqC,GACjC7jC,KAAKmjB,MAAMmiB,EAAG,EAAIjsC,GAAKwqC,GACvB3I,EAEFoK,EAAGjsC,GAAS,SAAJygC,EAGNoB,EADEpB,EAAI,SACE,EAEAA,EAAI,SAAY,EAI5B,OAAOwL,GAGT/B,EAAKtoC,UAAUsqC,WAAa,SAAqBD,EAAI94B,EAAK03B,EAAKL,GAE7D,IADA,IAAI3I,EAAQ,EACH7hC,EAAI,EAAGA,EAAImT,EAAKnT,IACvB6hC,GAAyB,EAARoK,EAAGjsC,GAEpB6qC,EAAI,EAAI7qC,GAAa,KAAR6hC,EAAgBA,KAAkB,GAC/CgJ,EAAI,EAAI7qC,EAAI,GAAa,KAAR6hC,EAAgBA,KAAkB,GAIrD,IAAK7hC,EAAI,EAAImT,EAAKnT,EAAIwqC,IAAKxqC,EACzB6qC,EAAI7qC,GAAK,EAGXk/B,EAAiB,IAAV2C,GACP3C,EAA6B,KAAb,KAAR2C,KAGVqI,EAAKtoC,UAAUuqC,KAAO,SAAe3B,GAEnC,IADA,IAAI4B,EAAK,IAAIzpC,MAAM6nC,GACVxqC,EAAI,EAAGA,EAAIwqC,EAAGxqC,IACrBosC,EAAGpsC,GAAK,EAGV,OAAOosC,GAGTlC,EAAKtoC,UAAUuoC,KAAO,SAAe55B,EAAGoB,EAAGgwB,GACzC,IAAI6I,EAAI,EAAI5qC,KAAKisC,YAAYt7B,EAAEhM,OAAQoN,EAAEpN,QAErCqmC,EAAMhrC,KAAK2qC,QAAQC,GAEnBhoC,EAAI5C,KAAKusC,KAAK3B,GAEdK,EAAM,IAAIloC,MAAM6nC,GAChB6B,EAAO,IAAI1pC,MAAM6nC,GACjB8B,EAAO,IAAI3pC,MAAM6nC,GAEjB+B,EAAO,IAAI5pC,MAAM6nC,GACjBgC,EAAQ,IAAI7pC,MAAM6nC,GAClBiC,EAAQ,IAAI9pC,MAAM6nC,GAElBkC,EAAO/K,EAAIlC,MACfiN,EAAKnoC,OAASimC,EAEd5qC,KAAKssC,WAAW37B,EAAEkvB,MAAOlvB,EAAEhM,OAAQsmC,EAAKL,GACxC5qC,KAAKssC,WAAWv6B,EAAE8tB,MAAO9tB,EAAEpN,OAAQgoC,EAAM/B,GAEzC5qC,KAAK6Y,UAAUoyB,EAAKroC,EAAG6pC,EAAMC,EAAM9B,EAAGI,GACtChrC,KAAK6Y,UAAU8zB,EAAM/pC,EAAGgqC,EAAOC,EAAOjC,EAAGI,GAEzC,IAAK,IAAI5qC,EAAI,EAAGA,EAAIwqC,EAAGxqC,IAAK,CAC1B,IAAI4rC,EAAKS,EAAKrsC,GAAKwsC,EAAMxsC,GAAKssC,EAAKtsC,GAAKysC,EAAMzsC,GAC9CssC,EAAKtsC,GAAKqsC,EAAKrsC,GAAKysC,EAAMzsC,GAAKssC,EAAKtsC,GAAKwsC,EAAMxsC,GAC/CqsC,EAAKrsC,GAAK4rC,EAUZ,OAPAhsC,KAAKmsC,UAAUM,EAAMC,EAAM9B,GAC3B5qC,KAAK6Y,UAAU4zB,EAAMC,EAAMI,EAAMlqC,EAAGgoC,EAAGI,GACvChrC,KAAKmsC,UAAUW,EAAMlqC,EAAGgoC,GACxB5qC,KAAKosC,aAAaU,EAAMlC,GAExB7I,EAAInC,SAAWjvB,EAAEivB,SAAW7tB,EAAE6tB,SAC9BmC,EAAIp9B,OAASgM,EAAEhM,OAASoN,EAAEpN,OACnBo9B,EAAIgS,UAIbtU,EAAGz9B,UAAUs+B,IAAM,SAAcC,GAC/B,IAAIwB,EAAM,IAAItC,EAAG,MAEjB,OADAsC,EAAIlC,MAAQ,IAAI98B,MAAM/C,KAAK2E,OAAS47B,EAAI57B,QACjC3E,KAAKwqC,MAAMjK,EAAKwB,IAIzBtC,EAAGz9B,UAAU+qC,KAAO,SAAexM,GACjC,IAAIwB,EAAM,IAAItC,EAAG,MAEjB,OADAsC,EAAIlC,MAAQ,IAAI98B,MAAM/C,KAAK2E,OAAS47B,EAAI57B,QACjC0lC,EAAWrqC,KAAMugC,EAAKwB,IAI/BtC,EAAGz9B,UAAUmF,KAAO,SAAeo5B,GACjC,OAAOvgC,KAAKuhC,QAAQiJ,MAAMjK,EAAKvgC,OAGjCy/B,EAAGz9B,UAAUm/B,MAAQ,SAAgBZ,GACnC,IAAI4gE,EAAW5gE,EAAM,EACjB4gE,IAAU5gE,GAAOA,GAErBjB,EAAsB,iBAARiB,GACdjB,EAAOiB,EAAM,UAIb,IADA,IAAI0B,EAAQ,EACH7hC,EAAI,EAAGA,EAAIJ,KAAK2E,OAAQvE,IAAK,CACpC,IAAIygC,GAAqB,EAAhB7gC,KAAK6/B,MAAMz/B,IAAUmgC,EAC1ByB,GAAU,SAAJnB,IAA0B,SAARoB,GAC5BA,IAAU,GACVA,GAAUpB,EAAI,SAAa,EAE3BoB,GAASD,IAAO,GAChBhiC,KAAK6/B,MAAMz/B,GAAU,SAAL4hC,EAQlB,OALc,IAAVC,IACFjiC,KAAK6/B,MAAMz/B,GAAK6hC,EAChBjiC,KAAK2E,UAGAw8F,EAAWnhG,KAAKikC,OAASjkC,MAGlCy/B,EAAGz9B,UAAUgrC,KAAO,SAAezM,GACjC,OAAOvgC,KAAKuhC,QAAQJ,MAAMZ,IAI5Bd,EAAGz9B,UAAUirC,IAAM,WACjB,OAAOjtC,KAAKsgC,IAAItgC,OAIlBy/B,EAAGz9B,UAAUkrC,KAAO,WAClB,OAAOltC,KAAKmH,KAAKnH,KAAKuhC,UAIxB9B,EAAGz9B,UAAUmI,IAAM,SAAco2B,GAC/B,IAAIM,EA7xCN,SAAqBN,GAGnB,IAFA,IAAIM,EAAI,IAAI99B,MAAMw9B,EAAIgD,aAEbt3B,EAAM,EAAGA,EAAM40B,EAAEl8B,OAAQsH,IAAO,CACvC,IAAIyyB,EAAOzyB,EAAM,GAAM,EACnB+4B,EAAO/4B,EAAM,GAEjB40B,EAAE50B,GAAQs0B,EAAIV,MAAMnB,KAASsG,EAAQ,EAGvC,OAAOnE,EAmxCCsM,CAAW5M,GACnB,GAAiB,IAAbM,EAAEl8B,OAAc,OAAO,IAAI86B,EAAG,GAIlC,IADA,IAAI7xB,EAAM5N,KACDI,EAAI,EAAGA,EAAIygC,EAAEl8B,QACP,IAATk8B,EAAEzgC,GADsBA,IAAKwN,EAAMA,EAAIq/B,OAI7C,KAAM7sC,EAAIygC,EAAEl8B,OACV,IAAK,IAAIu+B,EAAIt1B,EAAIq/B,MAAO7sC,EAAIygC,EAAEl8B,OAAQvE,IAAK8iC,EAAIA,EAAE+J,MAClC,IAATpM,EAAEzgC,KAENwN,EAAMA,EAAI0yB,IAAI4C,IAIlB,OAAOt1B,GAIT6xB,EAAGz9B,UAAUorC,OAAS,SAAiBrrB,GACrCud,EAAuB,iBAATvd,GAAqBA,GAAQ,GAC3C,IAGI3hB,EAHAc,EAAI6gB,EAAO,GACX5f,GAAK4f,EAAO7gB,GAAK,GACjBmsC,EAAa,WAAe,GAAKnsC,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAI+gC,EAAQ,EAEZ,IAAK7hC,EAAI,EAAGA,EAAIJ,KAAK2E,OAAQvE,IAAK,CAChC,IAAIktC,EAAWttC,KAAK6/B,MAAMz/B,GAAKitC,EAC3B5sC,GAAsB,EAAhBT,KAAK6/B,MAAMz/B,IAAUktC,GAAapsC,EAC5ClB,KAAK6/B,MAAMz/B,GAAKK,EAAIwhC,EACpBA,EAAQqL,IAAc,GAAKpsC,EAGzB+gC,IACFjiC,KAAK6/B,MAAMz/B,GAAK6hC,EAChBjiC,KAAK2E,UAIT,GAAU,IAANxC,EAAS,CACX,IAAK/B,EAAIJ,KAAK2E,OAAS,EAAGvE,GAAK,EAAGA,IAChCJ,KAAK6/B,MAAMz/B,EAAI+B,GAAKnC,KAAK6/B,MAAMz/B,GAGjC,IAAKA,EAAI,EAAGA,EAAI+B,EAAG/B,IACjBJ,KAAK6/B,MAAMz/B,GAAK,EAGlBJ,KAAK2E,QAAUxC,EAGjB,OAAOnC,KAAK+zC,UAGdtU,EAAGz9B,UAAUurC,MAAQ,SAAgBxrB,GAGnC,OADAud,EAAyB,IAAlBt/B,KAAK4/B,UACL5/B,KAAKotC,OAAOrrB,IAMrB0d,EAAGz9B,UAAUohC,OAAS,SAAiBrhB,EAAMyrB,EAAMC,GAEjD,IAAIC,EADJpO,EAAuB,iBAATvd,GAAqBA,GAAQ,GAGzC2rB,EADEF,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAItsC,EAAI6gB,EAAO,GACX5f,EAAI4E,KAAKsD,KAAK0X,EAAO7gB,GAAK,GAAIlB,KAAK2E,QACnCgpC,EAAO,SAAc,WAAczsC,GAAMA,EACzC0sC,EAAcH,EAMlB,GAJAC,GAAKvrC,EACLurC,EAAI3mC,KAAK8G,IAAI,EAAG6/B,GAGZE,EAAa,CACf,IAAK,IAAIxtC,EAAI,EAAGA,EAAI+B,EAAG/B,IACrBwtC,EAAY/N,MAAMz/B,GAAKJ,KAAK6/B,MAAMz/B,GAEpCwtC,EAAYjpC,OAASxC,EAGvB,GAAU,IAANA,QAEG,GAAInC,KAAK2E,OAASxC,EAEvB,IADAnC,KAAK2E,QAAUxC,EACV/B,EAAI,EAAGA,EAAIJ,KAAK2E,OAAQvE,IAC3BJ,KAAK6/B,MAAMz/B,GAAKJ,KAAK6/B,MAAMz/B,EAAI+B,QAGjCnC,KAAK6/B,MAAM,GAAK,EAChB7/B,KAAK2E,OAAS,EAGhB,IAAIs9B,EAAQ,EACZ,IAAK7hC,EAAIJ,KAAK2E,OAAS,EAAGvE,GAAK,IAAgB,IAAV6hC,GAAe7hC,GAAKstC,GAAIttC,IAAK,CAChE,IAAI8gC,EAAuB,EAAhBlhC,KAAK6/B,MAAMz/B,GACtBJ,KAAK6/B,MAAMz/B,GAAM6hC,GAAU,GAAK/gC,EAAOggC,IAAShgC,EAChD+gC,EAAQf,EAAOyM,EAajB,OATIC,GAAyB,IAAV3L,IACjB2L,EAAY/N,MAAM+N,EAAYjpC,UAAYs9B,GAGxB,IAAhBjiC,KAAK2E,SACP3E,KAAK6/B,MAAM,GAAK,EAChB7/B,KAAK2E,OAAS,GAGT3E,KAAK+zC,UAGdtU,EAAGz9B,UAAU6rC,MAAQ,SAAgB9rB,EAAMyrB,EAAMC,GAG/C,OADAnO,EAAyB,IAAlBt/B,KAAK4/B,UACL5/B,KAAKojC,OAAOrhB,EAAMyrB,EAAMC,IAIjChO,EAAGz9B,UAAU8rC,KAAO,SAAe/rB,GACjC,OAAO/hB,KAAKuhC,QAAQgM,MAAMxrB,IAG5B0d,EAAGz9B,UAAU+rC,MAAQ,SAAgBhsB,GACnC,OAAO/hB,KAAKuhC,QAAQ6L,OAAOrrB,IAI7B0d,EAAGz9B,UAAUgsC,KAAO,SAAejsB,GACjC,OAAO/hB,KAAKuhC,QAAQsM,MAAM9rB,IAG5B0d,EAAGz9B,UAAUisC,MAAQ,SAAgBlsB,GACnC,OAAO/hB,KAAKuhC,QAAQ6B,OAAOrhB,IAI7B0d,EAAGz9B,UAAU+hC,MAAQ,SAAgB93B,GACnCqzB,EAAsB,iBAARrzB,GAAoBA,GAAO,GACzC,IAAI/K,EAAI+K,EAAM,GACV9J,GAAK8J,EAAM/K,GAAK,GAChBgiC,EAAI,GAAKhiC,EAGb,QAAIlB,KAAK2E,QAAUxC,OAGXnC,KAAK6/B,MAAM19B,GAEL+gC,IAIhBzD,EAAGz9B,UAAUksC,OAAS,SAAiBnsB,GACrCud,EAAuB,iBAATvd,GAAqBA,GAAQ,GAC3C,IAAI7gB,EAAI6gB,EAAO,GACX5f,GAAK4f,EAAO7gB,GAAK,GAIrB,GAFAo+B,EAAyB,IAAlBt/B,KAAK4/B,SAAgB,2CAExB5/B,KAAK2E,QAAUxC,EACjB,OAAOnC,KAQT,GALU,IAANkB,GACFiB,IAEFnC,KAAK2E,OAASoC,KAAKsD,IAAIlI,EAAGnC,KAAK2E,QAErB,IAANzD,EAAS,CACX,IAAIysC,EAAO,SAAc,WAAczsC,GAAMA,EAC7ClB,KAAK6/B,MAAM7/B,KAAK2E,OAAS,IAAMgpC,EAGjC,OAAO3tC,KAAK+zC,UAIdtU,EAAGz9B,UAAUmsC,MAAQ,SAAgBpsB,GACnC,OAAO/hB,KAAKuhC,QAAQ2M,OAAOnsB,IAI7B0d,EAAGz9B,UAAU6hC,MAAQ,SAAgBtD,GAGnC,OAFAjB,EAAsB,iBAARiB,GACdjB,EAAOiB,EAAM,UACTA,EAAM,EAAUvgC,KAAKouC,OAAO7N,GAGV,IAAlBvgC,KAAK4/B,SACa,IAAhB5/B,KAAK2E,SAAiC,EAAhB3E,KAAK6/B,MAAM,KAAWU,GAC9CvgC,KAAK6/B,MAAM,GAAKU,GAAuB,EAAhBvgC,KAAK6/B,MAAM,IAClC7/B,KAAK4/B,SAAW,EACT5/B,OAGTA,KAAK4/B,SAAW,EAChB5/B,KAAKouC,MAAM7N,GACXvgC,KAAK4/B,SAAW,EACT5/B,MAIFA,KAAKohC,OAAOb,IAGrBd,EAAGz9B,UAAUo/B,OAAS,SAAiBb,GACrCvgC,KAAK6/B,MAAM,IAAMU,EAGjB,IAAK,IAAIngC,EAAI,EAAGA,EAAIJ,KAAK2E,QAAU3E,KAAK6/B,MAAMz/B,IAAM,SAAWA,IAC7DJ,KAAK6/B,MAAMz/B,IAAM,SACbA,IAAMJ,KAAK2E,OAAS,EACtB3E,KAAK6/B,MAAMz/B,EAAI,GAAK,EAEpBJ,KAAK6/B,MAAMz/B,EAAI,KAKnB,OAFAJ,KAAK2E,OAASoC,KAAK8G,IAAI7N,KAAK2E,OAAQvE,EAAI,GAEjCJ,MAITy/B,EAAGz9B,UAAUosC,MAAQ,SAAgB7N,GAGnC,GAFAjB,EAAsB,iBAARiB,GACdjB,EAAOiB,EAAM,UACTA,EAAM,EAAG,OAAOvgC,KAAK6jC,OAAOtD,GAEhC,GAAsB,IAAlBvgC,KAAK4/B,SAIP,OAHA5/B,KAAK4/B,SAAW,EAChB5/B,KAAK6jC,MAAMtD,GACXvgC,KAAK4/B,SAAW,EACT5/B,KAKT,GAFAA,KAAK6/B,MAAM,IAAMU,EAEG,IAAhBvgC,KAAK2E,QAAgB3E,KAAK6/B,MAAM,GAAK,EACvC7/B,KAAK6/B,MAAM,IAAM7/B,KAAK6/B,MAAM,GAC5B7/B,KAAK4/B,SAAW,OAGhB,IAAK,IAAIx/B,EAAI,EAAGA,EAAIJ,KAAK2E,QAAU3E,KAAK6/B,MAAMz/B,GAAK,EAAGA,IACpDJ,KAAK6/B,MAAMz/B,IAAM,SACjBJ,KAAK6/B,MAAMz/B,EAAI,IAAM,EAIzB,OAAOJ,KAAK+zC,UAGdtU,EAAGz9B,UAAUqsC,KAAO,SAAe9N,GACjC,OAAOvgC,KAAKuhC,QAAQsC,MAAMtD,IAG5Bd,EAAGz9B,UAAUssC,KAAO,SAAe/N,GACjC,OAAOvgC,KAAKuhC,QAAQ6M,MAAM7N,IAG5Bd,EAAGz9B,UAAUusC,KAAO,WAGlB,OAFAvuC,KAAK4/B,SAAW,EAET5/B,MAGTy/B,EAAGz9B,UAAU8P,IAAM,WACjB,OAAO9R,KAAKuhC,QAAQgN,QAGtB9O,EAAGz9B,UAAUwsC,aAAe,SAAuBjO,EAAKD,EAAKmO,GAC3D,IACIruC,EAIAygC,EALAttB,EAAMgtB,EAAI57B,OAAS8pC,EAGvBzuC,KAAKwhC,QAAQjuB,GAGb,IAAI0uB,EAAQ,EACZ,IAAK7hC,EAAI,EAAGA,EAAImgC,EAAI57B,OAAQvE,IAAK,CAC/BygC,GAA6B,EAAxB7gC,KAAK6/B,MAAMz/B,EAAIquC,IAAcxM,EAClC,IAAIxiB,GAAwB,EAAf8gB,EAAIV,MAAMz/B,IAAUkgC,EAEjC2B,IADApB,GAAa,SAARphB,IACS,KAAQA,EAAQ,SAAa,GAC3Czf,KAAK6/B,MAAMz/B,EAAIquC,GAAa,SAAJ5N,EAE1B,KAAOzgC,EAAIJ,KAAK2E,OAAS8pC,EAAOruC,IAE9B6hC,GADApB,GAA6B,EAAxB7gC,KAAK6/B,MAAMz/B,EAAIquC,IAAcxM,IACrB,GACbjiC,KAAK6/B,MAAMz/B,EAAIquC,GAAa,SAAJ5N,EAG1B,GAAc,IAAVoB,EAAa,OAAOjiC,KAAK+zC,SAK7B,IAFAzU,GAAkB,IAAX2C,GACPA,EAAQ,EACH7hC,EAAI,EAAGA,EAAIJ,KAAK2E,OAAQvE,IAE3B6hC,GADApB,IAAsB,EAAhB7gC,KAAK6/B,MAAMz/B,IAAU6hC,IACd,GACbjiC,KAAK6/B,MAAMz/B,GAAS,SAAJygC,EAIlB,OAFA7gC,KAAK4/B,SAAW,EAET5/B,KAAK+zC,UAGdtU,EAAGz9B,UAAU0sC,SAAW,SAAmBnO,EAAKh/B,GAC9C,IAAIktC,GAAQzuC,KAAK2E,OAAS47B,EAAI57B,QAE1B7B,EAAI9C,KAAKuhC,QACT78B,EAAI67B,EAGJoO,EAA8B,EAAxBjqC,EAAEm7B,MAAMn7B,EAAEC,OAAS,GAGf,KADd8pC,EAAQ,GADMzuC,KAAKqjC,WAAWsL,MAG5BjqC,EAAIA,EAAEqpC,MAAMU,GACZ3rC,EAAEsqC,OAAOqB,GACTE,EAA8B,EAAxBjqC,EAAEm7B,MAAMn7B,EAAEC,OAAS,IAI3B,IACIu+B,EADA1iC,EAAIsC,EAAE6B,OAASD,EAAEC,OAGrB,GAAa,QAATpD,EAAgB,EAClB2hC,EAAI,IAAIzD,EAAG,OACT96B,OAASnE,EAAI,EACf0iC,EAAErD,MAAQ,IAAI98B,MAAMmgC,EAAEv+B,QACtB,IAAK,IAAIvE,EAAI,EAAGA,EAAI8iC,EAAEv+B,OAAQvE,IAC5B8iC,EAAErD,MAAMz/B,GAAK,EAIjB,IAAIwuC,EAAO9rC,EAAEy+B,QAAQiN,aAAa9pC,EAAG,EAAGlE,GAClB,IAAlBouC,EAAKhP,WACP98B,EAAI8rC,EACA1L,IACFA,EAAErD,MAAMr/B,GAAK,IAIjB,IAAK,IAAIyX,EAAIzX,EAAI,EAAGyX,GAAK,EAAGA,IAAK,CAC/B,IAAI42B,EAAmC,UAAL,EAAxB/rC,EAAE+8B,MAAMn7B,EAAEC,OAASsT,KACE,EAA5BnV,EAAE+8B,MAAMn7B,EAAEC,OAASsT,EAAI,IAO1B,IAHA42B,EAAK9nC,KAAKsD,IAAKwkC,EAAKF,EAAO,EAAG,UAE9B7rC,EAAE0rC,aAAa9pC,EAAGmqC,EAAI52B,GACA,IAAfnV,EAAE88B,UACPiP,IACA/rC,EAAE88B,SAAW,EACb98B,EAAE0rC,aAAa9pC,EAAG,EAAGuT,GAChBnV,EAAEsI,WACLtI,EAAE88B,UAAY,GAGdsD,IACFA,EAAErD,MAAM5nB,GAAK42B,GAajB,OAVI3L,GACFA,EAAE6Q,SAEJjxC,EAAEixC,SAGW,QAATxyC,GAA4B,IAAVktC,GACpB3rC,EAAEsgC,OAAOqL,GAGJ,CACLjjC,IAAK03B,GAAK,KACV/nB,IAAKrY,IAQT28B,EAAGz9B,UAAU8sC,OAAS,SAAiBvO,EAAKh/B,EAAMwtC,GAGhD,OAFAzP,GAAQiB,EAAIn1B,UAERpL,KAAKoL,SACA,CACLI,IAAK,IAAIi0B,EAAG,GACZtkB,IAAK,IAAIskB,EAAG,IAKM,IAAlBz/B,KAAK4/B,UAAmC,IAAjBW,EAAIX,UAC7BhyB,EAAM5N,KAAKmkC,MAAM2K,OAAOvO,EAAKh/B,GAEhB,QAATA,IACFiK,EAAMoC,EAAIpC,IAAI24B,OAGH,QAAT5iC,IACF4Z,EAAMvN,EAAIuN,IAAIgpB,MACV4K,GAA6B,IAAjB5zB,EAAIykB,UAClBzkB,EAAI8pB,KAAK1E,IAIN,CACL/0B,IAAKA,EACL2P,IAAKA,IAIa,IAAlBnb,KAAK4/B,UAAmC,IAAjBW,EAAIX,UAC7BhyB,EAAM5N,KAAK8uC,OAAOvO,EAAI4D,MAAO5iC,GAEhB,QAATA,IACFiK,EAAMoC,EAAIpC,IAAI24B,OAGT,CACL34B,IAAKA,EACL2P,IAAKvN,EAAIuN,MAI0B,IAAlCnb,KAAK4/B,SAAWW,EAAIX,WACvBhyB,EAAM5N,KAAKmkC,MAAM2K,OAAOvO,EAAI4D,MAAO5iC,GAEtB,QAATA,IACF4Z,EAAMvN,EAAIuN,IAAIgpB,MACV4K,GAA6B,IAAjB5zB,EAAIykB,UAClBzkB,EAAI+pB,KAAK3E,IAIN,CACL/0B,IAAKoC,EAAIpC,IACT2P,IAAKA,IAOLolB,EAAI57B,OAAS3E,KAAK2E,QAAU3E,KAAKwgC,IAAID,GAAO,EACvC,CACL/0B,IAAK,IAAIi0B,EAAG,GACZtkB,IAAKnb,MAKU,IAAfugC,EAAI57B,OACO,QAATpD,EACK,CACLiK,IAAKxL,KAAKgvC,KAAKzO,EAAIV,MAAM,IACzB1kB,IAAK,MAII,QAAT5Z,EACK,CACLiK,IAAK,KACL2P,IAAK,IAAIskB,EAAGz/B,KAAK+gG,MAAMxgE,EAAIV,MAAM,MAI9B,CACLr0B,IAAKxL,KAAKgvC,KAAKzO,EAAIV,MAAM,IACzB1kB,IAAK,IAAIskB,EAAGz/B,KAAK+gG,MAAMxgE,EAAIV,MAAM,MAI9B7/B,KAAK0uC,SAASnO,EAAKh/B,GAlF1B,IAAIiK,EAAK2P,EAAKvN,GAsFhB6xB,EAAGz9B,UAAUwJ,IAAM,SAAc+0B,GAC/B,OAAOvgC,KAAK8uC,OAAOvO,EAAK,OAAO,GAAO/0B,KAIxCi0B,EAAGz9B,UAAUmZ,IAAM,SAAcolB,GAC/B,OAAOvgC,KAAK8uC,OAAOvO,EAAK,OAAO,GAAOplB,KAGxCskB,EAAGz9B,UAAUitC,KAAO,SAAe1O,GACjC,OAAOvgC,KAAK8uC,OAAOvO,EAAK,OAAO,GAAMplB,KAIvCskB,EAAGz9B,UAAUktC,SAAW,SAAmB3O,GACzC,IAAI4O,EAAKnvC,KAAK8uC,OAAOvO,GAGrB,GAAI4O,EAAGh0B,IAAI/P,SAAU,OAAO+jC,EAAG3jC,IAE/B,IAAI2P,EAA0B,IAApBg0B,EAAG3jC,IAAIo0B,SAAiBuP,EAAGh0B,IAAI+pB,KAAK3E,GAAO4O,EAAGh0B,IAEpDi0B,EAAO7O,EAAI0N,MAAM,GACjBoB,EAAK9O,EAAI4C,MAAM,GACf3C,EAAMrlB,EAAIqlB,IAAI4O,GAGlB,OAAI5O,EAAM,GAAa,IAAP6O,GAAoB,IAAR7O,EAAmB2O,EAAG3jC,IAGvB,IAApB2jC,EAAG3jC,IAAIo0B,SAAiBuP,EAAG3jC,IAAI4iC,MAAM,GAAKe,EAAG3jC,IAAIq4B,MAAM,IAGhEpE,EAAGz9B,UAAU++F,MAAQ,SAAgBxgE,GACnC,IAAI4gE,EAAW5gE,EAAM,EACjB4gE,IAAU5gE,GAAOA,GAErBjB,EAAOiB,GAAO,UAId,IAHA,IAAIr+B,GAAK,GAAK,IAAMq+B,EAEhBlS,EAAM,EACDjuB,EAAIJ,KAAK2E,OAAS,EAAGvE,GAAK,EAAGA,IACpCiuB,GAAOnsB,EAAImsB,GAAuB,EAAhBruB,KAAK6/B,MAAMz/B,KAAWmgC,EAG1C,OAAO4gE,GAAY9yE,EAAMA,GAI3BoR,EAAGz9B,UAAUwgC,KAAO,SAAejC,GACjC,OAAOvgC,KAAK+gG,MAAMxgE,IAIpBd,EAAGz9B,UAAUygC,MAAQ,SAAgBlC,GACnC,IAAI4gE,EAAW5gE,EAAM,EACjB4gE,IAAU5gE,GAAOA,GAErBjB,EAAOiB,GAAO,UAGd,IADA,IAAI0B,EAAQ,EACH7hC,EAAIJ,KAAK2E,OAAS,EAAGvE,GAAK,EAAGA,IAAK,CACzC,IAAIygC,GAAqB,EAAhB7gC,KAAK6/B,MAAMz/B,IAAkB,SAAR6hC,EAC9BjiC,KAAK6/B,MAAMz/B,GAAMygC,EAAIN,EAAO,EAC5B0B,EAAQpB,EAAIN,EAId,OADAvgC,KAAK+zC,SACEotD,EAAWnhG,KAAKikC,OAASjkC,MAGlCy/B,EAAGz9B,UAAUgtC,KAAO,SAAezO,GACjC,OAAOvgC,KAAKuhC,QAAQkB,MAAMlC,IAG5Bd,EAAGz9B,UAAUstC,KAAO,SAAeptC,GACjCo9B,EAAsB,IAAfp9B,EAAE09B,UACTN,GAAQp9B,EAAEkJ,UAEV,IAAIuF,EAAI3Q,KACJ+R,EAAI7P,EAAEq/B,QAGR5wB,EADiB,IAAfA,EAAEivB,SACAjvB,EAAEs+B,KAAK/sC,GAEPyO,EAAE4wB,QAaR,IATA,IAAIgO,EAAI,IAAI9P,EAAG,GACX+P,EAAI,IAAI/P,EAAG,GAGXgQ,EAAI,IAAIhQ,EAAG,GACXiQ,EAAI,IAAIjQ,EAAG,GAEXkQ,EAAI,EAEDh/B,EAAEi/B,UAAY79B,EAAE69B,UACrBj/B,EAAEyyB,OAAO,GACTrxB,EAAEqxB,OAAO,KACPuM,EAMJ,IAHA,IAAIE,EAAK99B,EAAEwvB,QACPuO,EAAKn/B,EAAE4wB,SAEH5wB,EAAEvF,UAAU,CAClB,IAAK,IAAIhL,EAAI,EAAG2vC,EAAK,EAAyB,IAArBp/B,EAAEkvB,MAAM,GAAKkQ,IAAa3vC,EAAI,KAAMA,EAAG2vC,IAAO,GACvE,GAAI3vC,EAAI,EAEN,IADAuQ,EAAEyyB,OAAOhjC,GACFA,KAAM,IACPmvC,EAAErjC,SAAWsjC,EAAEtjC,WACjBqjC,EAAEtK,KAAK4K,GACPL,EAAEtK,KAAK4K,IAGTP,EAAEnM,OAAO,GACToM,EAAEpM,OAAO,GAIb,IAAK,IAAInrB,EAAI,EAAG+3B,EAAK,EAAyB,IAArBj+B,EAAE8tB,MAAM,GAAKmQ,IAAa/3B,EAAI,KAAMA,EAAG+3B,IAAO,GACvE,GAAI/3B,EAAI,EAEN,IADAlG,EAAEqxB,OAAOnrB,GACFA,KAAM,IACPw3B,EAAEvjC,SAAWwjC,EAAExjC,WACjBujC,EAAExK,KAAK4K,GACPH,EAAExK,KAAK4K,IAGTL,EAAErM,OAAO,GACTsM,EAAEtM,OAAO,GAITzyB,EAAE6vB,IAAIzuB,IAAM,GACdpB,EAAEu0B,KAAKnzB,GACPw9B,EAAErK,KAAKuK,GACPD,EAAEtK,KAAKwK,KAEP39B,EAAEmzB,KAAKv0B,GACP8+B,EAAEvK,KAAKqK,GACPG,EAAExK,KAAKsK,IAIX,MAAO,CACL1sC,EAAG2sC,EACH/qC,EAAGgrC,EACHO,IAAKl+B,EAAEq7B,OAAOuC,KAOlBlQ,EAAGz9B,UAAUkuC,OAAS,SAAiBhuC,GACrCo9B,EAAsB,IAAfp9B,EAAE09B,UACTN,GAAQp9B,EAAEkJ,UAEV,IAAItI,EAAI9C,KACJ0E,EAAIxC,EAAEq/B,QAGRz+B,EADiB,IAAfA,EAAE88B,SACA98B,EAAEmsC,KAAK/sC,GAEPY,EAAEy+B,QAQR,IALA,IAuCI3zB,EAvCAuiC,EAAK,IAAI1Q,EAAG,GACZ/sB,EAAK,IAAI+sB,EAAG,GAEZtxB,EAAQzJ,EAAE68B,QAEPz+B,EAAEstC,KAAK,GAAK,GAAK1rC,EAAE0rC,KAAK,GAAK,GAAG,CACrC,IAAK,IAAIhwC,EAAI,EAAG2vC,EAAK,EAAyB,IAArBjtC,EAAE+8B,MAAM,GAAKkQ,IAAa3vC,EAAI,KAAMA,EAAG2vC,IAAO,GACvE,GAAI3vC,EAAI,EAEN,IADA0C,EAAEsgC,OAAOhjC,GACFA,KAAM,GACP+vC,EAAGjkC,SACLikC,EAAGlL,KAAK92B,GAGVgiC,EAAG/M,OAAO,GAId,IAAK,IAAInrB,EAAI,EAAG+3B,EAAK,EAAyB,IAArBtrC,EAAEm7B,MAAM,GAAKmQ,IAAa/3B,EAAI,KAAMA,EAAG+3B,IAAO,GACvE,GAAI/3B,EAAI,EAEN,IADAvT,EAAE0+B,OAAOnrB,GACFA,KAAM,GACPvF,EAAGxG,SACLwG,EAAGuyB,KAAK92B,GAGVuE,EAAG0wB,OAAO,GAIVtgC,EAAE09B,IAAI97B,IAAM,GACd5B,EAAEoiC,KAAKxgC,GACPyrC,EAAGjL,KAAKxyB,KAERhO,EAAEwgC,KAAKpiC,GACP4P,EAAGwyB,KAAKiL,IAeZ,OATEviC,EADgB,IAAd9K,EAAEstC,KAAK,GACHD,EAEAz9B,GAGA09B,KAAK,GAAK,GAChBxiC,EAAIq3B,KAAK/iC,GAGJ0L,GAGT6xB,EAAGz9B,UAAUiuC,IAAM,SAAc1P,GAC/B,GAAIvgC,KAAKoL,SAAU,OAAOm1B,EAAIzuB,MAC9B,GAAIyuB,EAAIn1B,SAAU,OAAOpL,KAAK8R,MAE9B,IAAIhP,EAAI9C,KAAKuhC,QACT78B,EAAI67B,EAAIgB,QACZz+B,EAAE88B,SAAW,EACbl7B,EAAEk7B,SAAW,EAGb,IAAK,IAAI6O,EAAQ,EAAG3rC,EAAE8sC,UAAYlrC,EAAEkrC,SAAUnB,IAC5C3rC,EAAEsgC,OAAO,GACT1+B,EAAE0+B,OAAO,GAGX,OAAG,CACD,KAAOtgC,EAAE8sC,UACP9sC,EAAEsgC,OAAO,GAEX,KAAO1+B,EAAEkrC,UACPlrC,EAAE0+B,OAAO,GAGX,IAAIliC,EAAI4B,EAAE09B,IAAI97B,GACd,GAAIxD,EAAI,EAAG,CAET,IAAII,EAAIwB,EACRA,EAAI4B,EACJA,EAAIpD,OACC,GAAU,IAANJ,GAAyB,IAAdwD,EAAE0rC,KAAK,GAC3B,MAGFttC,EAAEoiC,KAAKxgC,GAGT,OAAOA,EAAE0oC,OAAOqB,IAIlBhP,EAAGz9B,UAAUquC,KAAO,SAAe9P,GACjC,OAAOvgC,KAAKsvC,KAAK/O,GAAKz9B,EAAEmsC,KAAK1O,IAG/Bd,EAAGz9B,UAAU4tC,OAAS,WACpB,OAA+B,IAAP,EAAhB5vC,KAAK6/B,MAAM,KAGrBJ,EAAGz9B,UAAUkK,MAAQ,WACnB,OAA+B,IAAP,EAAhBlM,KAAK6/B,MAAM,KAIrBJ,EAAGz9B,UAAUmhC,MAAQ,SAAgB5C,GACnC,OAAOvgC,KAAK6/B,MAAM,GAAKU,GAIzBd,EAAGz9B,UAAUsuC,MAAQ,SAAgBrkC,GACnCqzB,EAAsB,iBAARrzB,GACd,IAAI/K,EAAI+K,EAAM,GACV9J,GAAK8J,EAAM/K,GAAK,GAChBgiC,EAAI,GAAKhiC,EAGb,GAAIlB,KAAK2E,QAAUxC,EAGjB,OAFAnC,KAAKwhC,QAAQr/B,EAAI,GACjBnC,KAAK6/B,MAAM19B,IAAM+gC,EACVljC,KAKT,IADA,IAAIiiC,EAAQiB,EACH9iC,EAAI+B,EAAa,IAAV8/B,GAAe7hC,EAAIJ,KAAK2E,OAAQvE,IAAK,CACnD,IAAIygC,EAAoB,EAAhB7gC,KAAK6/B,MAAMz/B,GAEnB6hC,GADApB,GAAKoB,KACS,GACdpB,GAAK,SACL7gC,KAAK6/B,MAAMz/B,GAAKygC,EAMlB,OAJc,IAAVoB,IACFjiC,KAAK6/B,MAAMz/B,GAAK6hC,EAChBjiC,KAAK2E,UAEA3E,MAGTy/B,EAAGz9B,UAAUoJ,OAAS,WACpB,OAAuB,IAAhBpL,KAAK2E,QAAkC,IAAlB3E,KAAK6/B,MAAM,IAGzCJ,EAAGz9B,UAAUouC,KAAO,SAAe7P,GACjC,IAOI3yB,EAPAgyB,EAAWW,EAAM,EAErB,GAAsB,IAAlBvgC,KAAK4/B,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlB5/B,KAAK4/B,UAAkBA,EAAU,OAAO,EAK5C,GAHA5/B,KAAK+zC,SAGD/zC,KAAK2E,OAAS,EAChBiJ,EAAM,MACD,CACDgyB,IACFW,GAAOA,GAGTjB,EAAOiB,GAAO,SAAW,qBAEzB,IAAIM,EAAoB,EAAhB7gC,KAAK6/B,MAAM,GACnBjyB,EAAMizB,IAAMN,EAAM,EAAIM,EAAIN,GAAO,EAAI,EAEvC,OAAsB,IAAlBvgC,KAAK4/B,SAA8B,GAANhyB,EAC1BA,GAOT6xB,EAAGz9B,UAAUw+B,IAAM,SAAcD,GAC/B,GAAsB,IAAlBvgC,KAAK4/B,UAAmC,IAAjBW,EAAIX,SAAgB,OAAQ,EACvD,GAAsB,IAAlB5/B,KAAK4/B,UAAmC,IAAjBW,EAAIX,SAAgB,OAAO,EAEtD,IAAIhyB,EAAM5N,KAAKuwC,KAAKhQ,GACpB,OAAsB,IAAlBvgC,KAAK4/B,SAA8B,GAANhyB,EAC1BA,GAIT6xB,EAAGz9B,UAAUuuC,KAAO,SAAehQ,GAEjC,GAAIvgC,KAAK2E,OAAS47B,EAAI57B,OAAQ,OAAO,EACrC,GAAI3E,KAAK2E,OAAS47B,EAAI57B,OAAQ,OAAQ,EAGtC,IADA,IAAIiJ,EAAM,EACDxN,EAAIJ,KAAK2E,OAAS,EAAGvE,GAAK,EAAGA,IAAK,CACzC,IAAI0C,EAAoB,EAAhB9C,KAAK6/B,MAAMz/B,GACfsE,EAAmB,EAAf67B,EAAIV,MAAMz/B,GAElB,GAAI0C,IAAM4B,EAAV,CACI5B,EAAI4B,EACNkJ,GAAO,EACE9K,EAAI4B,IACbkJ,EAAM,GAER,OAEF,OAAOA,GAGT6xB,EAAGz9B,UAAUwuC,IAAM,SAAcjQ,GAC/B,OAA0B,IAAnBvgC,KAAKowC,KAAK7P,IAGnBd,EAAGz9B,UAAUyuC,GAAK,SAAalQ,GAC7B,OAAyB,IAAlBvgC,KAAKwgC,IAAID,IAGlBd,EAAGz9B,UAAU0uC,KAAO,SAAenQ,GACjC,OAAOvgC,KAAKowC,KAAK7P,IAAQ,GAG3Bd,EAAGz9B,UAAU2uC,IAAM,SAAcpQ,GAC/B,OAAOvgC,KAAKwgC,IAAID,IAAQ,GAG1Bd,EAAGz9B,UAAU4uC,IAAM,SAAcrQ,GAC/B,OAA2B,IAApBvgC,KAAKowC,KAAK7P,IAGnBd,EAAGz9B,UAAU6uC,GAAK,SAAatQ,GAC7B,OAA0B,IAAnBvgC,KAAKwgC,IAAID,IAGlBd,EAAGz9B,UAAU8uC,KAAO,SAAevQ,GACjC,OAAOvgC,KAAKowC,KAAK7P,IAAQ,GAG3Bd,EAAGz9B,UAAU+uC,IAAM,SAAcxQ,GAC/B,OAAOvgC,KAAKwgC,IAAID,IAAQ,GAG1Bd,EAAGz9B,UAAUgvC,IAAM,SAAczQ,GAC/B,OAA0B,IAAnBvgC,KAAKowC,KAAK7P,IAGnBd,EAAGz9B,UAAUivC,GAAK,SAAa1Q,GAC7B,OAAyB,IAAlBvgC,KAAKwgC,IAAID,IAOlBd,EAAGK,IAAM,SAAcS,GACrB,OAAO,IAAI2Q,EAAI3Q,IAGjBd,EAAGz9B,UAAUmvC,MAAQ,SAAgBC,GAGnC,OAFA9R,GAAQt/B,KAAK8/B,IAAK,yCAClBR,EAAyB,IAAlBt/B,KAAK4/B,SAAgB,iCACrBwR,EAAIC,UAAUrxC,MAAMsxC,UAAUF,IAGvC3R,EAAGz9B,UAAUuvC,QAAU,WAErB,OADAjS,EAAOt/B,KAAK8/B,IAAK,wDACV9/B,KAAK8/B,IAAI0R,YAAYxxC,OAG9By/B,EAAGz9B,UAAUsvC,UAAY,SAAoBF,GAE3C,OADApxC,KAAK8/B,IAAMsR,EACJpxC,MAGTy/B,EAAGz9B,UAAUyvC,SAAW,SAAmBL,GAEzC,OADA9R,GAAQt/B,KAAK8/B,IAAK,yCACX9/B,KAAKsxC,UAAUF,IAGxB3R,EAAGz9B,UAAU0vC,OAAS,SAAiBnR,GAErC,OADAjB,EAAOt/B,KAAK8/B,IAAK,sCACV9/B,KAAK8/B,IAAIr1B,IAAIzK,KAAMugC,IAG5Bd,EAAGz9B,UAAU2vC,QAAU,SAAkBpR,GAEvC,OADAjB,EAAOt/B,KAAK8/B,IAAK,uCACV9/B,KAAK8/B,IAAImF,KAAKjlC,KAAMugC,IAG7Bd,EAAGz9B,UAAU4vC,OAAS,SAAiBrR,GAErC,OADAjB,EAAOt/B,KAAK8/B,IAAK,sCACV9/B,KAAK8/B,IAAIqF,IAAInlC,KAAMugC,IAG5Bd,EAAGz9B,UAAU6vC,QAAU,SAAkBtR,GAEvC,OADAjB,EAAOt/B,KAAK8/B,IAAK,uCACV9/B,KAAK8/B,IAAIoF,KAAKllC,KAAMugC,IAG7Bd,EAAGz9B,UAAU8vC,OAAS,SAAiBvR,GAErC,OADAjB,EAAOt/B,KAAK8/B,IAAK,sCACV9/B,KAAK8/B,IAAIiS,IAAI/xC,KAAMugC,IAG5Bd,EAAGz9B,UAAUgwC,OAAS,SAAiBzR,GAGrC,OAFAjB,EAAOt/B,KAAK8/B,IAAK,sCACjB9/B,KAAK8/B,IAAImS,SAASjyC,KAAMugC,GACjBvgC,KAAK8/B,IAAIQ,IAAItgC,KAAMugC,IAG5Bd,EAAGz9B,UAAUkwC,QAAU,SAAkB3R,GAGvC,OAFAjB,EAAOt/B,KAAK8/B,IAAK,sCACjB9/B,KAAK8/B,IAAImS,SAASjyC,KAAMugC,GACjBvgC,KAAK8/B,IAAI34B,KAAKnH,KAAMugC,IAG7Bd,EAAGz9B,UAAUmwC,OAAS,WAGpB,OAFA7S,EAAOt/B,KAAK8/B,IAAK,sCACjB9/B,KAAK8/B,IAAIsS,SAASpyC,MACXA,KAAK8/B,IAAImN,IAAIjtC,OAGtBy/B,EAAGz9B,UAAUqwC,QAAU,WAGrB,OAFA/S,EAAOt/B,KAAK8/B,IAAK,uCACjB9/B,KAAK8/B,IAAIsS,SAASpyC,MACXA,KAAK8/B,IAAIoN,KAAKltC,OAIvBy/B,EAAGz9B,UAAUswC,QAAU,WAGrB,OAFAhT,EAAOt/B,KAAK8/B,IAAK,uCACjB9/B,KAAK8/B,IAAIsS,SAASpyC,MACXA,KAAK8/B,IAAIruB,KAAKzR,OAGvBy/B,EAAGz9B,UAAUuwC,QAAU,WAGrB,OAFAjT,EAAOt/B,KAAK8/B,IAAK,uCACjB9/B,KAAK8/B,IAAIsS,SAASpyC,MACXA,KAAK8/B,IAAIuQ,KAAKrwC,OAIvBy/B,EAAGz9B,UAAUwwC,OAAS,WAGpB,OAFAlT,EAAOt/B,KAAK8/B,IAAK,sCACjB9/B,KAAK8/B,IAAIsS,SAASpyC,MACXA,KAAK8/B,IAAIqE,IAAInkC,OAGtBy/B,EAAGz9B,UAAUywC,OAAS,SAAiBlS,GAGrC,OAFAjB,EAAOt/B,KAAK8/B,MAAQS,EAAIT,IAAK,qBAC7B9/B,KAAK8/B,IAAIsS,SAASpyC,MACXA,KAAK8/B,IAAI31B,IAAInK,KAAMugC,IAI5B,IAAImS,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQpyC,EAAMuB,GAErBlC,KAAKW,KAAOA,EACZX,KAAKkC,EAAI,IAAIu9B,EAAGv9B,EAAG,IACnBlC,KAAK6B,EAAI7B,KAAKkC,EAAEqhC,YAChBvjC,KAAK0T,EAAI,IAAI+rB,EAAG,GAAG2N,OAAOptC,KAAK6B,GAAGqjC,KAAKllC,KAAKkC,GAE5ClC,KAAK4d,IAAM5d,KAAKgzC,OAiDlB,SAASC,IACPF,EAAOxyC,KACLP,KACA,OACA,2EA+DJ,SAASkzC,IACPH,EAAOxyC,KACLP,KACA,OACA,kEAIJ,SAASmzC,IACPJ,EAAOxyC,KACLP,KACA,OACA,yDAIJ,SAASozC,IAEPL,EAAOxyC,KACLP,KACA,QACA,uEA8CJ,SAASkxC,EAAK1wC,GACZ,GAAiB,iBAANA,EAAgB,CACzB,IAAI6yC,EAAQ5T,EAAG6T,OAAO9yC,GACtBR,KAAKQ,EAAI6yC,EAAMnxC,EACflC,KAAKqzC,MAAQA,OAEb/T,EAAO9+B,EAAEgwC,IAAI,GAAI,kCACjBxwC,KAAKQ,EAAIA,EACTR,KAAKqzC,MAAQ,KAoOjB,SAASE,EAAM/yC,GACb0wC,EAAI3wC,KAAKP,KAAMQ,GAEfR,KAAKyuC,MAAQzuC,KAAKQ,EAAE+iC,YAChBvjC,KAAKyuC,MAAQ,IAAO,IACtBzuC,KAAKyuC,OAAS,GAAMzuC,KAAKyuC,MAAQ,IAGnCzuC,KAAKkB,EAAI,IAAIu+B,EAAG,GAAG2N,OAAOptC,KAAKyuC,OAC/BzuC,KAAKqvC,GAAKrvC,KAAKwzC,KAAKxzC,KAAKkB,EAAE+rC,OAC3BjtC,KAAKyzC,KAAOzzC,KAAKkB,EAAEgvC,OAAOlwC,KAAKQ,GAE/BR,KAAK0zC,KAAO1zC,KAAKyzC,KAAKnT,IAAItgC,KAAKkB,GAAGktC,MAAM,GAAG5iC,IAAIxL,KAAKQ,GACpDR,KAAK0zC,KAAO1zC,KAAK0zC,KAAKzE,KAAKjvC,KAAKkB,GAChClB,KAAK0zC,KAAO1zC,KAAKkB,EAAEikC,IAAInlC,KAAK0zC,MA9a9BX,EAAO/wC,UAAUgxC,KAAO,WACtB,IAAIp1B,EAAM,IAAI6hB,EAAG,MAEjB,OADA7hB,EAAIiiB,MAAQ,IAAI98B,MAAMgE,KAAKiH,KAAKhO,KAAK6B,EAAI,KAClC+b,GAGTm1B,EAAO/wC,UAAU2xC,QAAU,SAAkBpT,GAG3C,IACIqT,EADA1yC,EAAIq/B,EAGR,GACEvgC,KAAK6zC,MAAM3yC,EAAGlB,KAAK4d,KAGnBg2B,GADA1yC,GADAA,EAAIlB,KAAK8zC,MAAM5yC,IACT+jC,KAAKjlC,KAAK4d,MACP2lB,kBACFqQ,EAAO5zC,KAAK6B,GAErB,IAAI2+B,EAAMoT,EAAO5zC,KAAK6B,GAAK,EAAIX,EAAEqvC,KAAKvwC,KAAKkC,GAgB3C,OAfY,IAARs+B,GACFt/B,EAAE2+B,MAAM,GAAK,EACb3+B,EAAEyD,OAAS,GACF67B,EAAM,EACft/B,EAAEgkC,KAAKllC,KAAKkC,QAEIiP,IAAZjQ,EAAE4/B,MAEJ5/B,EAAE4/B,QAGF5/B,EAAE6yC,SAIC7yC,GAGT6xC,EAAO/wC,UAAU6xC,MAAQ,SAAgBptB,EAAOsb,GAC9Ctb,EAAM2c,OAAOpjC,KAAK6B,EAAG,EAAGkgC,IAG1BgR,EAAO/wC,UAAU8xC,MAAQ,SAAgBvT,GACvC,OAAOA,EAAIp5B,KAAKnH,KAAK0T,IASvB8rB,EAASyT,EAAMF,GAEfE,EAAKjxC,UAAU6xC,MAAQ,SAAgBptB,EAAOkS,GAK5C,IAHA,IAEIqb,EAASjtC,KAAKsD,IAAIoc,EAAM9hB,OAAQ,GAC3BvE,EAAI,EAAGA,EAAI4zC,EAAQ5zC,IAC1Bu4B,EAAOkH,MAAMz/B,GAAKqmB,EAAMoZ,MAAMz/B,GAIhC,GAFAu4B,EAAOh0B,OAASqvC,EAEZvtB,EAAM9hB,QAAU,EAGlB,OAFA8hB,EAAMoZ,MAAM,GAAK,OACjBpZ,EAAM9hB,OAAS,GAKjB,IAAIsvC,EAAOxtB,EAAMoZ,MAAM,GAGvB,IAFAlH,EAAOkH,MAAMlH,EAAOh0B,UAhBT,QAgBqBsvC,EAE3B7zC,EAAI,GAAIA,EAAIqmB,EAAM9hB,OAAQvE,IAAK,CAClC,IAAIsX,EAAwB,EAAjB+O,EAAMoZ,MAAMz/B,GACvBqmB,EAAMoZ,MAAMz/B,EAAI,KApBP,QAoBesX,IAAgB,EAAMu8B,IAAS,GACvDA,EAAOv8B,EAETu8B,KAAU,GACVxtB,EAAMoZ,MAAMz/B,EAAI,IAAM6zC,EACT,IAATA,GAAcxtB,EAAM9hB,OAAS,GAC/B8hB,EAAM9hB,QAAU,GAEhB8hB,EAAM9hB,QAAU,GAIpBsuC,EAAKjxC,UAAU8xC,MAAQ,SAAgBvT,GAErCA,EAAIV,MAAMU,EAAI57B,QAAU,EACxB47B,EAAIV,MAAMU,EAAI57B,OAAS,GAAK,EAC5B47B,EAAI57B,QAAU,EAId,IADA,IAAIq9B,EAAK,EACA5hC,EAAI,EAAGA,EAAImgC,EAAI57B,OAAQvE,IAAK,CACnC,IAAIygC,EAAmB,EAAfN,EAAIV,MAAMz/B,GAClB4hC,GAAU,IAAJnB,EACNN,EAAIV,MAAMz/B,GAAU,SAAL4hC,EACfA,EAAS,GAAJnB,GAAamB,EAAK,SAAa,GAUtC,OANkC,IAA9BzB,EAAIV,MAAMU,EAAI57B,OAAS,KACzB47B,EAAI57B,SAC8B,IAA9B47B,EAAIV,MAAMU,EAAI57B,OAAS,IACzB47B,EAAI57B,UAGD47B,GASTf,EAAS0T,EAAMH,GAQfvT,EAAS2T,EAAMJ,GASfvT,EAAS4T,EAAQL,GAEjBK,EAAOpxC,UAAU8xC,MAAQ,SAAgBvT,GAGvC,IADA,IAAI0B,EAAQ,EACH7hC,EAAI,EAAGA,EAAImgC,EAAI57B,OAAQvE,IAAK,CACnC,IAAIojC,EAA0B,IAAL,EAAfjD,EAAIV,MAAMz/B,IAAiB6hC,EACjCD,EAAU,SAALwB,EACTA,KAAQ,GAERjD,EAAIV,MAAMz/B,GAAK4hC,EACfC,EAAQuB,EAKV,OAHc,IAAVvB,IACF1B,EAAIV,MAAMU,EAAI57B,UAAYs9B,GAErB1B,GAITd,EAAG6T,OAAS,SAAgB3yC,GAE1B,GAAI+xC,EAAO/xC,GAAO,OAAO+xC,EAAO/xC,GAEhC,IAAI0yC,EACJ,GAAa,SAAT1yC,EACF0yC,EAAQ,IAAIJ,OACP,GAAa,SAATtyC,EACT0yC,EAAQ,IAAIH,OACP,GAAa,SAATvyC,EACT0yC,EAAQ,IAAIF,MACP,IAAa,WAATxyC,EAGT,MAAM,IAAIuG,MAAM,iBAAmBvG,GAFnC0yC,EAAQ,IAAID,EAMd,OAFAV,EAAO/xC,GAAQ0yC,EAERA,GAkBTnC,EAAIlvC,UAAUowC,SAAW,SAAmBtvC,GAC1Cw8B,EAAsB,IAAfx8B,EAAE88B,SAAgB,iCACzBN,EAAOx8B,EAAEg9B,IAAK,oCAGhBoR,EAAIlvC,UAAUiwC,SAAW,SAAmBnvC,EAAG4B,GAC7C46B,EAAqC,IAA7Bx8B,EAAE88B,SAAWl7B,EAAEk7B,UAAiB,iCACxCN,EAAOx8B,EAAEg9B,KAAOh9B,EAAEg9B,MAAQp7B,EAAEo7B,IAC1B,oCAGJoR,EAAIlvC,UAAUwxC,KAAO,SAAe1wC,GAClC,OAAI9C,KAAKqzC,MAAcrzC,KAAKqzC,MAAMM,QAAQ7wC,GAAGwuC,UAAUtxC,OAEvD4gG,EAAK99F,EAAGA,EAAEmsC,KAAKjvC,KAAKQ,GAAG8wC,UAAUtxC,OAC1B8C,IAGTouC,EAAIlvC,UAAUmiC,IAAM,SAAcrhC,GAChC,OAAIA,EAAEsI,SACGtI,EAAEy+B,QAGJvhC,KAAKQ,EAAE2kC,IAAIriC,GAAGwuC,UAAUtxC,OAGjCkxC,EAAIlvC,UAAUyI,IAAM,SAAc3H,EAAG4B,GACnC1E,KAAKiyC,SAASnvC,EAAG4B,GAEjB,IAAIkJ,EAAM9K,EAAE2H,IAAI/F,GAIhB,OAHIkJ,EAAI4yB,IAAIxgC,KAAKQ,IAAM,GACrBoN,EAAIs3B,KAAKllC,KAAKQ,GAEToN,EAAI0jC,UAAUtxC,OAGvBkxC,EAAIlvC,UAAUijC,KAAO,SAAeniC,EAAG4B,GACrC1E,KAAKiyC,SAASnvC,EAAG4B,GAEjB,IAAIkJ,EAAM9K,EAAEmiC,KAAKvgC,GAIjB,OAHIkJ,EAAI4yB,IAAIxgC,KAAKQ,IAAM,GACrBoN,EAAIs3B,KAAKllC,KAAKQ,GAEToN,GAGTsjC,EAAIlvC,UAAUmjC,IAAM,SAAcriC,EAAG4B,GACnC1E,KAAKiyC,SAASnvC,EAAG4B,GAEjB,IAAIkJ,EAAM9K,EAAEqiC,IAAIzgC,GAIhB,OAHIkJ,EAAIwiC,KAAK,GAAK,GAChBxiC,EAAIq3B,KAAKjlC,KAAKQ,GAEToN,EAAI0jC,UAAUtxC,OAGvBkxC,EAAIlvC,UAAUkjC,KAAO,SAAepiC,EAAG4B,GACrC1E,KAAKiyC,SAASnvC,EAAG4B,GAEjB,IAAIkJ,EAAM9K,EAAEoiC,KAAKxgC,GAIjB,OAHIkJ,EAAIwiC,KAAK,GAAK,GAChBxiC,EAAIq3B,KAAKjlC,KAAKQ,GAEToN,GAGTsjC,EAAIlvC,UAAU+vC,IAAM,SAAcjvC,EAAGy9B,GAEnC,OADAvgC,KAAKoyC,SAAStvC,GACP9C,KAAKwzC,KAAK1wC,EAAEirC,MAAMxN,KAG3B2Q,EAAIlvC,UAAUmF,KAAO,SAAerE,EAAG4B,GAErC,OADA1E,KAAKiyC,SAASnvC,EAAG4B,GACV1E,KAAKwzC,KAAK1wC,EAAEqE,KAAKzC,KAG1BwsC,EAAIlvC,UAAUs+B,IAAM,SAAcx9B,EAAG4B,GAEnC,OADA1E,KAAKiyC,SAASnvC,EAAG4B,GACV1E,KAAKwzC,KAAK1wC,EAAEw9B,IAAI57B,KAGzBwsC,EAAIlvC,UAAUkrC,KAAO,SAAepqC,GAClC,OAAO9C,KAAKmH,KAAKrE,EAAGA,EAAEy+B,UAGxB2P,EAAIlvC,UAAUirC,IAAM,SAAcnqC,GAChC,OAAO9C,KAAKsgC,IAAIx9B,EAAGA,IAGrBouC,EAAIlvC,UAAUyP,KAAO,SAAe3O,GAClC,GAAIA,EAAEsI,SAAU,OAAOtI,EAAEy+B,QAEzB,IAAI2S,EAAOl0C,KAAKQ,EAAE2iC,MAAM,GAIxB,GAHA7D,EAAO4U,EAAO,GAAM,GAGP,IAATA,EAAY,CACd,IAAI/pC,EAAMnK,KAAKQ,EAAEiK,IAAI,IAAIg1B,EAAG,IAAI2D,OAAO,GACvC,OAAOpjC,KAAKmK,IAAIrH,EAAGqH,GAQrB,IAFA,IAAI+4B,EAAIljC,KAAKQ,EAAE8tC,KAAK,GAChBnsC,EAAI,GACA+gC,EAAE93B,UAA2B,IAAf83B,EAAEC,MAAM,IAC5BhhC,IACA+gC,EAAEE,OAAO,GAEX9D,GAAQ4D,EAAE93B,UAEV,IAAI+oC,EAAM,IAAI1U,EAAG,GAAG0R,MAAMnxC,MACtBo0C,EAAOD,EAAI3B,SAIX6B,EAAOr0C,KAAKQ,EAAE8tC,KAAK,GAAGlL,OAAO,GAC7BkR,EAAIt0C,KAAKQ,EAAE+iC,YAGf,IAFA+Q,EAAI,IAAI7U,EAAG,EAAI6U,EAAIA,GAAGnD,MAAMnxC,MAEW,IAAhCA,KAAKmK,IAAImqC,EAAGD,GAAM7T,IAAI4T,IAC3BE,EAAE3C,QAAQyC,GAOZ,IAJA,IAAI3zC,EAAIT,KAAKmK,IAAImqC,EAAGpR,GAChBhiC,EAAIlB,KAAKmK,IAAIrH,EAAGogC,EAAEmL,KAAK,GAAGjL,OAAO,IACjC9hC,EAAItB,KAAKmK,IAAIrH,EAAGogC,GAChB1iC,EAAI2B,EACc,IAAfb,EAAEk/B,IAAI2T,IAAY,CAEvB,IADA,IAAIv2B,EAAMtc,EACDlB,EAAI,EAAoB,IAAjBwd,EAAI4iB,IAAI2T,GAAY/zC,IAClCwd,EAAMA,EAAIu0B,SAEZ7S,EAAOl/B,EAAII,GACX,IAAIkE,EAAI1E,KAAKmK,IAAI1J,EAAG,IAAIg/B,EAAG,GAAG2N,OAAO5sC,EAAIJ,EAAI,IAE7Cc,EAAIA,EAAE8wC,OAAOttC,GACbjE,EAAIiE,EAAEytC,SACN7wC,EAAIA,EAAE0wC,OAAOvxC,GACbD,EAAIJ,EAGN,OAAOc,GAGTgwC,EAAIlvC,UAAUquC,KAAO,SAAevtC,GAClC,IAAIoM,EAAMpM,EAAEotC,OAAOlwC,KAAKQ,GACxB,OAAqB,IAAjB0O,EAAI0wB,UACN1wB,EAAI0wB,SAAW,EACR5/B,KAAKwzC,KAAKtkC,GAAKsjC,UAEfxyC,KAAKwzC,KAAKtkC,IAIrBgiC,EAAIlvC,UAAUmI,IAAM,SAAcrH,EAAGy9B,GACnC,GAAIA,EAAIn1B,SAAU,OAAO,IAAIq0B,EAAG,GAAG0R,MAAMnxC,MACzC,GAAoB,IAAhBugC,EAAI6P,KAAK,GAAU,OAAOttC,EAAEy+B,QAEhC,IACIgT,EAAM,IAAIxxC,MAAM,IACpBwxC,EAAI,GAAK,IAAI9U,EAAG,GAAG0R,MAAMnxC,MACzBu0C,EAAI,GAAKzxC,EACT,IAAK,IAAI1C,EAAI,EAAGA,EAAIm0C,EAAI5vC,OAAQvE,IAC9Bm0C,EAAIn0C,GAAKJ,KAAKsgC,IAAIiU,EAAIn0C,EAAI,GAAI0C,GAGhC,IAAI8K,EAAM2mC,EAAI,GACV54B,EAAU,EACV64B,EAAa,EACbhhC,EAAQ+sB,EAAIgD,YAAc,GAK9B,IAJc,IAAV/vB,IACFA,EAAQ,IAGLpT,EAAImgC,EAAI57B,OAAS,EAAGvE,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAI8gC,EAAOX,EAAIV,MAAMz/B,GACZ6X,EAAIzE,EAAQ,EAAGyE,GAAK,EAAGA,IAAK,CACnC,IAAIhM,EAAOi1B,GAAQjpB,EAAK,EACpBrK,IAAQ2mC,EAAI,KACd3mC,EAAM5N,KAAKitC,IAAIr/B,IAGL,IAAR3B,GAAyB,IAAZ0P,GAKjBA,IAAY,EACZA,GAAW1P,GA9BE,MA+BbuoC,GACwC,IAANp0C,GAAiB,IAAN6X,KAE7CrK,EAAM5N,KAAKsgC,IAAI1yB,EAAK2mC,EAAI54B,IACxB64B,EAAa,EACb74B,EAAU,IAXR64B,EAAa,EAajBhhC,EAAQ,GAGV,OAAO5F,GAGTsjC,EAAIlvC,UAAUqvC,UAAY,SAAoB9Q,GAC5C,IAAIr/B,EAAIq/B,EAAI0O,KAAKjvC,KAAKQ,GAEtB,OAAOU,IAAMq/B,EAAMr/B,EAAEqgC,QAAUrgC,GAGjCgwC,EAAIlvC,UAAUwvC,YAAc,SAAsBjR,GAChD,IAAI3yB,EAAM2yB,EAAIgB,QAEd,OADA3zB,EAAIkyB,IAAM,KACHlyB,GAOT6xB,EAAGgV,KAAO,SAAelU,GACvB,OAAO,IAAIgT,EAAKhT,IAmBlBf,EAAS+T,EAAMrC,GAEfqC,EAAKvxC,UAAUqvC,UAAY,SAAoB9Q,GAC7C,OAAOvgC,KAAKwzC,KAAKjT,EAAIwN,MAAM/tC,KAAKyuC,SAGlC8E,EAAKvxC,UAAUwvC,YAAc,SAAsBjR,GACjD,IAAIr/B,EAAIlB,KAAKwzC,KAAKjT,EAAID,IAAItgC,KAAKyzC,OAE/B,OADAvyC,EAAE4+B,IAAM,KACD5+B,GAGTqyC,EAAKvxC,UAAUmF,KAAO,SAAerE,EAAG4B,GACtC,GAAI5B,EAAEsI,UAAY1G,EAAE0G,SAGlB,OAFAtI,EAAE+8B,MAAM,GAAK,EACb/8B,EAAE6B,OAAS,EACJ7B,EAGT,IAAIxB,EAAIwB,EAAEqE,KAAKzC,GACXjE,EAAIa,EAAE6sC,MAAMnuC,KAAKyuC,OAAOnO,IAAItgC,KAAK0zC,MAAMxF,OAAOluC,KAAKyuC,OAAOnO,IAAItgC,KAAKQ,GACnEk0C,EAAIpzC,EAAE4jC,KAAKzkC,GAAG2iC,OAAOpjC,KAAKyuC,OAC1B7gC,EAAM8mC,EAQV,OANIA,EAAElU,IAAIxgC,KAAKQ,IAAM,EACnBoN,EAAM8mC,EAAExP,KAAKllC,KAAKQ,GACTk0C,EAAEtE,KAAK,GAAK,IACrBxiC,EAAM8mC,EAAEzP,KAAKjlC,KAAKQ,IAGboN,EAAI0jC,UAAUtxC,OAGvBuzC,EAAKvxC,UAAUs+B,IAAM,SAAcx9B,EAAG4B,GACpC,GAAI5B,EAAEsI,UAAY1G,EAAE0G,SAAU,OAAO,IAAIq0B,EAAG,GAAG6R,UAAUtxC,MAEzD,IAAIsB,EAAIwB,EAAEw9B,IAAI57B,GACVjE,EAAIa,EAAE6sC,MAAMnuC,KAAKyuC,OAAOnO,IAAItgC,KAAK0zC,MAAMxF,OAAOluC,KAAKyuC,OAAOnO,IAAItgC,KAAKQ,GACnEk0C,EAAIpzC,EAAE4jC,KAAKzkC,GAAG2iC,OAAOpjC,KAAKyuC,OAC1B7gC,EAAM8mC,EAOV,OANIA,EAAElU,IAAIxgC,KAAKQ,IAAM,EACnBoN,EAAM8mC,EAAExP,KAAKllC,KAAKQ,GACTk0C,EAAEtE,KAAK,GAAK,IACrBxiC,EAAM8mC,EAAEzP,KAAKjlC,KAAKQ,IAGboN,EAAI0jC,UAAUtxC,OAGvBuzC,EAAKvxC,UAAUquC,KAAO,SAAevtC,GAGnC,OADU9C,KAAKwzC,KAAK1wC,EAAEotC,OAAOlwC,KAAKQ,GAAG8/B,IAAItgC,KAAKqvC,KACnCiC,UAAUtxC,OAx9GzB,CA09GoCH,EAAQG,Q,4sCCx9G5C,IAAIg9C,EAAQ,EAAQ,IAChBvd,EAAK,EAAQ,GACbD,EAAW,EAAQ,GACnBuqB,EAAO,EAAQ,IAEfzqB,EAAS0d,EAAM1d,OAEnB,SAASwqF,EAAWx0D,GAClBvL,EAAKxpD,KAAKP,KAAM,QAASs1D,GAEzBt1D,KAAK8C,EAAI,IAAI28B,EAAG61B,EAAKxyD,EAAG,IAAIquC,MAAMnxC,KAAK8/B,KACvC9/B,KAAK0E,EAAI,IAAI+6B,EAAG61B,EAAK5wD,EAAG,IAAIysC,MAAMnxC,KAAK8/B,KACvC9/B,KAAK+pH,KAAO/pH,KAAKw1D,IAAIjjB,UAErBvyC,KAAKgqH,MAAqC,IAA7BhqH,KAAK8C,EAAEyuC,UAAUnB,KAAK,GACnCpwC,KAAKiqH,OAAmD,IAA1CjqH,KAAK8C,EAAEyuC,UAAUpM,IAAInlC,KAAKkC,GAAGkuC,MAAM,GAGjDpwC,KAAKkqH,KAAOlqH,KAAKmqH,iBAAiB70D,GAClCt1D,KAAKoqH,YAAc,IAAIrnH,MAAM,GAC7B/C,KAAKqqH,YAAc,IAAItnH,MAAM,GAoO/B,SAASunH,EAAMl0D,EAAOzlD,EAAGoB,EAAGw4G,GAC1BxgE,EAAKoM,UAAU51D,KAAKP,KAAMo2D,EAAO,UACvB,OAANzlD,GAAoB,OAANoB,GAChB/R,KAAK2Q,EAAI,KACT3Q,KAAK+R,EAAI,KACT/R,KAAKwqH,KAAM,IAEXxqH,KAAK2Q,EAAI,IAAI8uB,EAAG9uB,EAAG,IACnB3Q,KAAK+R,EAAI,IAAI0tB,EAAG1tB,EAAG,IAEfw4G,IACFvqH,KAAK2Q,EAAE8gC,SAASzxC,KAAKo2D,MAAMt2B,KAC3B9/B,KAAK+R,EAAE0/B,SAASzxC,KAAKo2D,MAAMt2B,MAExB9/B,KAAK2Q,EAAEmvB,MACV9/B,KAAK2Q,EAAI3Q,KAAK2Q,EAAEwgC,MAAMnxC,KAAKo2D,MAAMt2B,MAC9B9/B,KAAK+R,EAAE+tB,MACV9/B,KAAK+R,EAAI/R,KAAK+R,EAAEo/B,MAAMnxC,KAAKo2D,MAAMt2B,MACnC9/B,KAAKwqH,KAAM,GA6Nf,SAASC,EAAOr0D,EAAOzlD,EAAGoB,EAAGuiC,GAC3ByV,EAAKoM,UAAU51D,KAAKP,KAAMo2D,EAAO,YACvB,OAANzlD,GAAoB,OAANoB,GAAoB,OAANuiC,GAC9Bt0C,KAAK2Q,EAAI3Q,KAAKo2D,MAAMjiB,IACpBn0C,KAAK+R,EAAI/R,KAAKo2D,MAAMjiB,IACpBn0C,KAAKs0C,EAAI,IAAI7U,EAAG,KAEhBz/B,KAAK2Q,EAAI,IAAI8uB,EAAG9uB,EAAG,IACnB3Q,KAAK+R,EAAI,IAAI0tB,EAAG1tB,EAAG,IACnB/R,KAAKs0C,EAAI,IAAI7U,EAAG6U,EAAG,KAEhBt0C,KAAK2Q,EAAEmvB,MACV9/B,KAAK2Q,EAAI3Q,KAAK2Q,EAAEwgC,MAAMnxC,KAAKo2D,MAAMt2B,MAC9B9/B,KAAK+R,EAAE+tB,MACV9/B,KAAK+R,EAAI/R,KAAK+R,EAAEo/B,MAAMnxC,KAAKo2D,MAAMt2B,MAC9B9/B,KAAKs0C,EAAExU,MACV9/B,KAAKs0C,EAAIt0C,KAAKs0C,EAAEnD,MAAMnxC,KAAKo2D,MAAMt2B,MAEnC9/B,KAAK0qH,KAAO1qH,KAAKs0C,IAAMt0C,KAAKo2D,MAAMjiB,IAnepC3U,EAASsqF,EAAY//D,GACrBlqD,EAAOD,QAAUkqH,EAEjBA,EAAW9nH,UAAUmoH,iBAAmB,SAA0B70D,GAEhE,GAAKt1D,KAAKgqH,OAAUhqH,KAAK2vC,GAAM3vC,KAAK6B,GAAwB,IAAnB7B,KAAKkC,EAAEsgC,KAAK,GAArD,CAIA,IAAI+1B,EACAgjB,EACJ,GAAIjmB,EAAKiD,KACPA,EAAO,IAAI94B,EAAG61B,EAAKiD,KAAM,IAAIpnB,MAAMnxC,KAAK8/B,SACnC,CACL,IAAI6qF,EAAQ3qH,KAAK4qH,cAAc5qH,KAAKkC,GAGpCq2D,GADAA,EAAOoyD,EAAM,GAAGnqF,IAAImqF,EAAM,IAAM,EAAIA,EAAM,GAAKA,EAAM,IACzCx5E,MAAMnxC,KAAK8/B,KAEzB,GAAIw1B,EAAKimB,OACPA,EAAS,IAAI97C,EAAG61B,EAAKimB,OAAQ,QACxB,CAEL,IAAIsvC,EAAU7qH,KAAK4qH,cAAc5qH,KAAK6B,GACsB,IAAxD7B,KAAK2vC,EAAErP,IAAIuqF,EAAQ,IAAIl6G,EAAE6vB,IAAIxgC,KAAK2vC,EAAEh/B,EAAEqhC,OAAOumB,IAC/CgjB,EAASsvC,EAAQ,IAEjBtvC,EAASsvC,EAAQ,GACjBvrF,EAA2D,IAApDt/B,KAAK2vC,EAAErP,IAAIi7C,GAAQ5qE,EAAE6vB,IAAIxgC,KAAK2vC,EAAEh/B,EAAEqhC,OAAOumB,MAiBpD,MAAO,CACLA,KAAMA,EACNgjB,OAAQA,EACRC,MAdElmB,EAAKkmB,MACClmB,EAAKkmB,MAAMl3E,KAAI,SAASwmH,GAC9B,MAAO,CACLhoH,EAAG,IAAI28B,EAAGqrF,EAAIhoH,EAAG,IACjB4B,EAAG,IAAI+6B,EAAGqrF,EAAIpmH,EAAG,QAIb1E,KAAK+qH,cAAcxvC,MAU/BuuC,EAAW9nH,UAAU4oH,cAAgB,SAAuBrqF,GAI1D,IAAIT,EAAMS,IAAQvgC,KAAKkC,EAAIlC,KAAK8/B,IAAML,EAAGgV,KAAKlU,GAC1CwpF,EAAO,IAAItqF,EAAG,GAAG0R,MAAMrR,GAAKyS,UAC5By4E,EAAQjB,EAAKv3E,SAEbrwC,EAAI,IAAIs9B,EAAG,GAAG0R,MAAMrR,GAAK0S,SAASF,UAAUN,OAAO+3E,GAIvD,MAAO,CAFEiB,EAAMt5E,OAAOvvC,GAAGovC,UAChBy5E,EAAMp5E,OAAOzvC,GAAGovC,YAI3Bu4E,EAAW9nH,UAAU+oH,cAAgB,SAAuBxvC,GA2B1D,IAzBA,IAYIj2C,EACA8B,EAEA3B,EACA8B,EAEA3B,EACA8B,EAEAujF,EAEA/pH,EACAyP,EAxBAu6G,EAAWlrH,KAAK6B,EAAEosC,MAAMlnC,KAAK+G,MAAM9N,KAAK6B,EAAE0hC,YAAc,IAIxDmR,EAAI6mC,EACJ3/D,EAAI5b,KAAK6B,EAAE0/B,QACX4O,EAAK,IAAI1Q,EAAG,GACZxtB,EAAK,IAAIwtB,EAAG,GACZ/sB,EAAK,IAAI+sB,EAAG,GACZ0rF,EAAK,IAAI1rF,EAAG,GAaZr/B,EAAI,EAGa,IAAds0C,EAAEtE,KAAK,IAAU,CACtB,IAAIlN,EAAItnB,EAAEpQ,IAAIkpC,GACdxzC,EAAI0a,EAAEupB,IAAIjC,EAAE5C,IAAIoU,IAChB/jC,EAAI+B,EAAGyyB,IAAIjC,EAAE5C,IAAI6P,IACjB,IAAIp+B,EAAIo5G,EAAGhmF,IAAIjC,EAAE5C,IAAIruB,IAErB,IAAKwzB,GAAMvkC,EAAEs/B,IAAI0qF,GAAY,EAC3B5lF,EAAK2lF,EAAM9mF,MACXiD,EAAK+I,EACL1K,EAAKvkC,EAAEijC,MACPoD,EAAK52B,OACA,GAAI80B,GAAc,KAANrlC,EACjB,MAEF6qH,EAAQ/pH,EAER0a,EAAI84B,EACJA,EAAIxzC,EACJwR,EAAKy9B,EACLA,EAAKx/B,EACLw6G,EAAKl5G,EACLA,EAAKF,EAEP6zB,EAAK1kC,EAAEijC,MACPuD,EAAK/2B,EAEL,IAAIy6G,EAAO3lF,EAAGwH,MAAMxiC,IAAI88B,EAAG0F,OAiB3B,OAhBWrH,EAAGqH,MAAMxiC,IAAIi9B,EAAGuF,OAClBzM,IAAI4qF,IAAS,IACpBxlF,EAAKN,EACLoC,EAAKN,GAIH3B,EAAG7F,WACL6F,EAAKA,EAAGtB,MACRoD,EAAKA,EAAGpD,OAENyB,EAAGhG,WACLgG,EAAKA,EAAGzB,MACRuD,EAAKA,EAAGvD,OAGH,CACL,CAAErhC,EAAG2iC,EAAI/gC,EAAG6iC,GACZ,CAAEzkC,EAAG8iC,EAAIlhC,EAAGgjC,KAIhBoiF,EAAW9nH,UAAUqpH,WAAa,SAAoB33G,GACpD,IAAI8nE,EAAQx7E,KAAKkqH,KAAK1uC,MAClBvkD,EAAKukD,EAAM,GACXtkD,EAAKskD,EAAM,GAEXlB,EAAKpjD,EAAGxyB,EAAE47B,IAAI5sB,GAAGw7B,SAASlvC,KAAK6B,GAC/B04E,EAAKtjD,EAAGvyB,EAAEy/B,MAAM7D,IAAI5sB,GAAGw7B,SAASlvC,KAAK6B,GAErCypH,EAAKhxC,EAAGh6C,IAAIrJ,EAAGn0B,GACfyoH,EAAKhxC,EAAGj6C,IAAIpJ,EAAGp0B,GACf0oH,EAAKlxC,EAAGh6C,IAAIrJ,EAAGvyB,GACf+mH,EAAKlxC,EAAGj6C,IAAIpJ,EAAGxyB,GAKnB,MAAO,CAAE84C,GAFA9pC,EAAEyxB,IAAImmF,GAAInmF,IAAIomF,GAEN9tE,GADR+tE,EAAG/gH,IAAIghH,GAAItnF,QAItB2lF,EAAW9nH,UAAUg2D,WAAa,SAAoBrnD,EAAGu7B,IACvDv7B,EAAI,IAAI8uB,EAAG9uB,EAAG,KACPmvB,MACLnvB,EAAIA,EAAEwgC,MAAMnxC,KAAK8/B,MAEnB,IAAIqrF,EAAKx6G,EAAEwhC,SAASH,OAAOrhC,GAAGghC,QAAQhhC,EAAEqhC,OAAOhyC,KAAK8C,IAAI6uC,QAAQ3xC,KAAK0E,GACjEqN,EAAIo5G,EAAG74E,UACX,GAA6C,IAAzCvgC,EAAEogC,SAASP,OAAOu5E,GAAI3qF,IAAIxgC,KAAKu1D,MACjC,MAAM,IAAIruD,MAAM,iBAIlB,IAAIgF,EAAQ6F,EAAEw/B,UAAUrlC,QAIxB,OAHIggC,IAAQhgC,IAAUggC,GAAOhgC,KAC3B6F,EAAIA,EAAEygC,UAEDxyC,KAAKs2D,MAAM3lD,EAAGoB,IAGvB+3G,EAAW9nH,UAAUu0D,SAAW,SAAkBD,GAChD,GAAIA,EAAMk0D,IACR,OAAO,EAET,IAAI75G,EAAI2lD,EAAM3lD,EACVoB,EAAIukD,EAAMvkD,EAEV25G,EAAK1rH,KAAK8C,EAAEkvC,OAAOrhC,GACnBg7G,EAAMh7G,EAAEwhC,SAASH,OAAOrhC,GAAGghC,QAAQ+5E,GAAI/5E,QAAQ3xC,KAAK0E,GACxD,OAA2C,IAApCqN,EAAEogC,SAASN,QAAQ85E,GAAKv7E,KAAK,IAGtC05E,EAAW9nH,UAAU4pH,gBACjB,SAAyB50D,EAAQQ,EAAQC,GAGvC,IAFA,IAAIo0D,EAAU7rH,KAAKoqH,YACf0B,EAAU9rH,KAAKqqH,YACVjqH,EAAI,EAAGA,EAAI42D,EAAOryD,OAAQvE,IAAK,CACtC,IAAIyzC,EAAQ7zC,KAAKqrH,WAAW7zD,EAAOp3D,IAC/B8B,EAAI80D,EAAO52D,GACXm4D,EAAOr2D,EAAEs2D,WAET3kB,EAAM2J,GAAG5d,WACXiU,EAAM2J,GAAGvZ,OACT/hC,EAAIA,EAAEiiC,KAAI,IAER0P,EAAM4J,GAAG7d,WACXiU,EAAM4J,GAAGxZ,OACTs0B,EAAOA,EAAKp0B,KAAI,IAGlB0nF,EAAY,EAAJzrH,GAAS8B,EACjB2pH,EAAY,EAAJzrH,EAAQ,GAAKm4D,EACrBuzD,EAAY,EAAJ1rH,GAASyzC,EAAM2J,GACvBsuE,EAAY,EAAJ1rH,EAAQ,GAAKyzC,EAAM4J,GAK7B,IAHA,IAAI7vC,EAAM5N,KAAKs3D,YAAY,EAAGu0D,EAASC,EAAa,EAAJ1rH,EAAOq3D,GAG9Cx/C,EAAI,EAAGA,EAAQ,EAAJ7X,EAAO6X,IACzB4zG,EAAQ5zG,GAAK,KACb6zG,EAAQ7zG,GAAK,KAEf,OAAOrK,GAwBb4xB,EAAS8qF,EAAOvgE,EAAKoM,WAErB2zD,EAAW9nH,UAAUs0D,MAAQ,SAAe3lD,EAAGoB,EAAGw4G,GAChD,OAAO,IAAID,EAAMtqH,KAAM2Q,EAAGoB,EAAGw4G,IAG/BT,EAAW9nH,UAAUyzD,cAAgB,SAAuBlwD,EAAKu6B,GAC/D,OAAOwqF,EAAMyB,SAAS/rH,KAAMuF,EAAKu6B,IAGnCwqF,EAAMtoH,UAAUw2D,SAAW,WACzB,GAAKx4D,KAAKo2D,MAAM8zD,KAAhB,CAGA,IAAIjvC,EAAMj7E,KAAKq2D,YACf,GAAI4kB,GAAOA,EAAI1iB,KACb,OAAO0iB,EAAI1iB,KAEb,IAAIA,EAAOv4D,KAAKo2D,MAAME,MAAMt2D,KAAK2Q,EAAEqhC,OAAOhyC,KAAKo2D,MAAM8zD,KAAK3xD,MAAOv4D,KAAK+R,GACtE,GAAIkpE,EAAK,CACP,IAAI7kB,EAAQp2D,KAAKo2D,MACb41D,EAAU,SAAS9pH,GACrB,OAAOk0D,EAAME,MAAMp0D,EAAEyO,EAAEqhC,OAAOokB,EAAM8zD,KAAK3xD,MAAOr2D,EAAE6P,IAEpDkpE,EAAI1iB,KAAOA,EACXA,EAAKlC,YAAc,CACjBkC,KAAM,KACNjb,IAAK29B,EAAI39B,KAAO,CACd/I,IAAK0mC,EAAI39B,IAAI/I,IACbyiB,OAAQikB,EAAI39B,IAAI0Z,OAAO1yD,IAAI0nH,IAE7Bv1D,QAASwkB,EAAIxkB,SAAW,CACtBv9C,KAAM+hE,EAAIxkB,QAAQv9C,KAClB89C,OAAQikB,EAAIxkB,QAAQO,OAAO1yD,IAAI0nH,KAIrC,OAAOzzD,IAGT+xD,EAAMtoH,UAAU2gC,OAAS,WACvB,OAAK3iC,KAAKq2D,YAGH,CAAEr2D,KAAK2Q,EAAG3Q,KAAK+R,EAAG/R,KAAKq2D,aAAe,CAC3CI,QAASz2D,KAAKq2D,YAAYI,SAAW,CACnCv9C,KAAMlZ,KAAKq2D,YAAYI,QAAQv9C,KAC/B89C,OAAQh3D,KAAKq2D,YAAYI,QAAQO,OAAO3iD,MAAM,IAEhDipC,IAAKt9C,KAAKq2D,YAAY/Y,KAAO,CAC3B/I,IAAKv0C,KAAKq2D,YAAY/Y,IAAI/I,IAC1ByiB,OAAQh3D,KAAKq2D,YAAY/Y,IAAI0Z,OAAO3iD,MAAM,MATrC,CAAErU,KAAK2Q,EAAG3Q,KAAK+R,IAc1Bu4G,EAAMyB,SAAW,SAAkB31D,EAAO7wD,EAAKu6B,GAC1B,iBAARv6B,IACTA,EAAMm6E,KAAKusC,MAAM1mH,IACnB,IAAIqI,EAAMwoD,EAAME,MAAM/wD,EAAI,GAAIA,EAAI,GAAIu6B,GACtC,IAAKv6B,EAAI,GACP,OAAOqI,EAET,SAASs+G,EAAU3mH,GACjB,OAAO6wD,EAAME,MAAM/wD,EAAI,GAAIA,EAAI,GAAIu6B,GAGrC,IAAIm7C,EAAM11E,EAAI,GAYd,OAXAqI,EAAIyoD,YAAc,CAChBkC,KAAM,KACN9B,QAASwkB,EAAIxkB,SAAW,CACtBv9C,KAAM+hE,EAAIxkB,QAAQv9C,KAClB89C,OAAQ,CAAEppD,GAAMiT,OAAOo6D,EAAIxkB,QAAQO,OAAO1yD,IAAI4nH,KAEhD5uE,IAAK29B,EAAI39B,KAAO,CACd/I,IAAK0mC,EAAI39B,IAAI/I,IACbyiB,OAAQ,CAAEppD,GAAMiT,OAAOo6D,EAAI39B,IAAI0Z,OAAO1yD,IAAI4nH,MAGvCt+G,GAGT08G,EAAMtoH,UAAU0/B,QAAU,WACxB,OAAI1hC,KAAKq7E,aACA,sBACF,gBAAkBr7E,KAAK2Q,EAAE4gC,UAAUptC,SAAS,GAAI,GACnD,OAASnE,KAAK+R,EAAEw/B,UAAUptC,SAAS,GAAI,GAAK,KAGlDmmH,EAAMtoH,UAAUq5E,WAAa,WAC3B,OAAOr7E,KAAKwqH,KAGdF,EAAMtoH,UAAUyI,IAAM,SAAavI,GAEjC,GAAIlC,KAAKwqH,IACP,OAAOtoH,EAGT,GAAIA,EAAEsoH,IACJ,OAAOxqH,KAGT,GAAIA,KAAKixC,GAAG/uC,GACV,OAAOlC,KAAK04D,MAGd,GAAI14D,KAAKmkC,MAAM8M,GAAG/uC,GAChB,OAAOlC,KAAKo2D,MAAME,MAAM,KAAM,MAGhC,GAAwB,IAApBt2D,KAAK2Q,EAAE6vB,IAAIt+B,EAAEyO,GACf,OAAO3Q,KAAKo2D,MAAME,MAAM,KAAM,MAEhC,IAAI71D,EAAIT,KAAK+R,EAAE6/B,OAAO1vC,EAAE6P,GACN,IAAdtR,EAAE2vC,KAAK,KACT3vC,EAAIA,EAAEuxC,OAAOhyC,KAAK2Q,EAAEihC,OAAO1vC,EAAEyO,GAAG4hC,YAClC,IAAI45E,EAAK1rH,EAAE0xC,SAASN,QAAQ7xC,KAAK2Q,GAAGkhC,QAAQ3vC,EAAEyO,GAC1Cy7G,EAAK3rH,EAAEuxC,OAAOhyC,KAAK2Q,EAAEihC,OAAOu6E,IAAKt6E,QAAQ7xC,KAAK+R,GAClD,OAAO/R,KAAKo2D,MAAME,MAAM61D,EAAIC,IAG9B9B,EAAMtoH,UAAU02D,IAAM,WACpB,GAAI14D,KAAKwqH,IACP,OAAOxqH,KAGT,IAAIqsH,EAAMrsH,KAAK+R,EAAE2/B,OAAO1xC,KAAK+R,GAC7B,GAAoB,IAAhBs6G,EAAIj8E,KAAK,GACX,OAAOpwC,KAAKo2D,MAAME,MAAM,KAAM,MAEhC,IAAIxzD,EAAI9C,KAAKo2D,MAAMtzD,EAEf4P,EAAK1S,KAAK2Q,EAAEwhC,SACZm6E,EAAQD,EAAI95E,UACZ9xC,EAAIiS,EAAGg/B,OAAOh/B,GAAIi/B,QAAQj/B,GAAIi/B,QAAQ7uC,GAAGkvC,OAAOs6E,GAEhDH,EAAK1rH,EAAE0xC,SAASN,QAAQ7xC,KAAK2Q,EAAE+gC,OAAO1xC,KAAK2Q,IAC3Cy7G,EAAK3rH,EAAEuxC,OAAOhyC,KAAK2Q,EAAEihC,OAAOu6E,IAAKt6E,QAAQ7xC,KAAK+R,GAClD,OAAO/R,KAAKo2D,MAAME,MAAM61D,EAAIC,IAG9B9B,EAAMtoH,UAAUo2D,KAAO,WACrB,OAAOp4D,KAAK2Q,EAAE4gC,WAGhB+4E,EAAMtoH,UAAUq2D,KAAO,WACrB,OAAOr4D,KAAK+R,EAAEw/B,WAGhB+4E,EAAMtoH,UAAUs+B,IAAM,SAAa5sB,GAEjC,OADAA,EAAI,IAAI+rB,EAAG/rB,EAAG,IACV1T,KAAKq7E,aACAr7E,KACAA,KAAKy4D,YAAY/kD,GACjB1T,KAAKo2D,MAAMI,aAAax2D,KAAM0T,GAC9B1T,KAAKo2D,MAAM8zD,KACXlqH,KAAKo2D,MAAMw1D,gBAAgB,CAAE5rH,MAAQ,CAAE0T,IAEvC1T,KAAKo2D,MAAMc,SAASl3D,KAAM0T,IAGrC42G,EAAMtoH,UAAUuqH,OAAS,SAAgB/uE,EAAI+tE,EAAI9tE,GAC/C,IAAIuZ,EAAS,CAAEh3D,KAAMurH,GACjB/zD,EAAS,CAAEha,EAAIC,GACnB,OAAIz9C,KAAKo2D,MAAM8zD,KACNlqH,KAAKo2D,MAAMw1D,gBAAgB50D,EAAQQ,GAEnCx3D,KAAKo2D,MAAMkB,YAAY,EAAGN,EAAQQ,EAAQ,IAGrD8yD,EAAMtoH,UAAUwqH,QAAU,SAAiBhvE,EAAI+tE,EAAI9tE,GACjD,IAAIuZ,EAAS,CAAEh3D,KAAMurH,GACjB/zD,EAAS,CAAEha,EAAIC,GACnB,OAAIz9C,KAAKo2D,MAAM8zD,KACNlqH,KAAKo2D,MAAMw1D,gBAAgB50D,EAAQQ,GAAQ,GAE3Cx3D,KAAKo2D,MAAMkB,YAAY,EAAGN,EAAQQ,EAAQ,GAAG,IAGxD8yD,EAAMtoH,UAAUivC,GAAK,SAAY/uC,GAC/B,OAAOlC,OAASkC,GACTlC,KAAKwqH,MAAQtoH,EAAEsoH,MACVxqH,KAAKwqH,KAA2B,IAApBxqH,KAAK2Q,EAAE6vB,IAAIt+B,EAAEyO,IAAgC,IAApB3Q,KAAK+R,EAAEyuB,IAAIt+B,EAAE6P,KAGhEu4G,EAAMtoH,UAAUmiC,IAAM,SAAasoF,GACjC,GAAIzsH,KAAKwqH,IACP,OAAOxqH,KAET,IAAI4N,EAAM5N,KAAKo2D,MAAME,MAAMt2D,KAAK2Q,EAAG3Q,KAAK+R,EAAEygC,UAC1C,GAAIi6E,GAAezsH,KAAKq2D,YAAa,CACnC,IAAI4kB,EAAMj7E,KAAKq2D,YACX9sD,EAAS,SAASrH,GACpB,OAAOA,EAAEiiC,OAEXv2B,EAAIyoD,YAAc,CAChB/Y,IAAK29B,EAAI39B,KAAO,CACd/I,IAAK0mC,EAAI39B,IAAI/I,IACbyiB,OAAQikB,EAAI39B,IAAI0Z,OAAO1yD,IAAIiF,IAE7BktD,QAASwkB,EAAIxkB,SAAW,CACtBv9C,KAAM+hE,EAAIxkB,QAAQv9C,KAClB89C,OAAQikB,EAAIxkB,QAAQO,OAAO1yD,IAAIiF,KAIrC,OAAOqE,GAGT08G,EAAMtoH,UAAU41D,IAAM,WACpB,OAAI53D,KAAKwqH,IACAxqH,KAAKo2D,MAAMU,OAAO,KAAM,KAAM,MAE7B92D,KAAKo2D,MAAMU,OAAO92D,KAAK2Q,EAAG3Q,KAAK+R,EAAG/R,KAAKo2D,MAAMjiB,MAwBzD3U,EAASirF,EAAQ1gE,EAAKoM,WAEtB2zD,EAAW9nH,UAAU80D,OAAS,SAAgBnmD,EAAGoB,EAAGuiC,GAClD,OAAO,IAAIm2E,EAAOzqH,KAAM2Q,EAAGoB,EAAGuiC,IAGhCm2E,EAAOzoH,UAAUi1D,IAAM,WACrB,GAAIj3D,KAAKq7E,aACP,OAAOr7E,KAAKo2D,MAAME,MAAM,KAAM,MAEhC,IAAIo2D,EAAO1sH,KAAKs0C,EAAE/B,UACdo6E,EAAQD,EAAKv6E,SACbu5E,EAAK1rH,KAAK2Q,EAAEqhC,OAAO26E,GACnBC,EAAK5sH,KAAK+R,EAAEigC,OAAO26E,GAAO36E,OAAO06E,GAErC,OAAO1sH,KAAKo2D,MAAME,MAAMo1D,EAAIkB,IAG9BnC,EAAOzoH,UAAUmiC,IAAM,WACrB,OAAOnkC,KAAKo2D,MAAMU,OAAO92D,KAAK2Q,EAAG3Q,KAAK+R,EAAEygC,SAAUxyC,KAAKs0C,IAGzDm2E,EAAOzoH,UAAUyI,IAAM,SAAavI,GAElC,GAAIlC,KAAKq7E,aACP,OAAOn5E,EAGT,GAAIA,EAAEm5E,aACJ,OAAOr7E,KAGT,IAAI6sH,EAAM3qH,EAAEoyC,EAAEnC,SACV26E,EAAK9sH,KAAKs0C,EAAEnC,SACZ2L,EAAK99C,KAAK2Q,EAAEqhC,OAAO66E,GACnB9uE,EAAK77C,EAAEyO,EAAEqhC,OAAO86E,GAChBplG,EAAK1nB,KAAK+R,EAAEigC,OAAO66E,EAAI76E,OAAO9vC,EAAEoyC,IAChC3sB,EAAKzlB,EAAE6P,EAAEigC,OAAO86E,EAAG96E,OAAOhyC,KAAKs0C,IAE/B5G,EAAIoQ,EAAGlM,OAAOmM,GACd78C,EAAIwmB,EAAGkqB,OAAOjqB,GAClB,GAAkB,IAAd+lB,EAAE0C,KAAK,GACT,OAAkB,IAAdlvC,EAAEkvC,KAAK,GACFpwC,KAAKo2D,MAAMU,OAAO,KAAM,KAAM,MAE9B92D,KAAK04D,MAGhB,IAAIq0D,EAAKr/E,EAAEyE,SACP66E,EAAKD,EAAG/6E,OAAOtE,GACf9xB,EAAIkiC,EAAG9L,OAAO+6E,GAEdZ,EAAKjrH,EAAEixC,SAASR,QAAQq7E,GAAIn7E,QAAQj2B,GAAGi2B,QAAQj2B,GAC/CwwG,EAAKlrH,EAAE8wC,OAAOp2B,EAAEi2B,QAAQs6E,IAAKt6E,QAAQnqB,EAAGsqB,OAAOg7E,IAC/CC,EAAKjtH,KAAKs0C,EAAEtC,OAAO9vC,EAAEoyC,GAAGtC,OAAOtE,GAEnC,OAAO1tC,KAAKo2D,MAAMU,OAAOq1D,EAAIC,EAAIa,IAGnCxC,EAAOzoH,UAAU+0D,SAAW,SAAkB70D,GAE5C,GAAIlC,KAAKq7E,aACP,OAAOn5E,EAAE01D,MAGX,GAAI11D,EAAEm5E,aACJ,OAAOr7E,KAGT,IAAI8sH,EAAK9sH,KAAKs0C,EAAEnC,SACZ2L,EAAK99C,KAAK2Q,EACVotC,EAAK77C,EAAEyO,EAAEqhC,OAAO86E,GAChBplG,EAAK1nB,KAAK+R,EACV4V,EAAKzlB,EAAE6P,EAAEigC,OAAO86E,GAAI96E,OAAOhyC,KAAKs0C,GAEhC5G,EAAIoQ,EAAGlM,OAAOmM,GACd78C,EAAIwmB,EAAGkqB,OAAOjqB,GAClB,GAAkB,IAAd+lB,EAAE0C,KAAK,GACT,OAAkB,IAAdlvC,EAAEkvC,KAAK,GACFpwC,KAAKo2D,MAAMU,OAAO,KAAM,KAAM,MAE9B92D,KAAK04D,MAGhB,IAAIq0D,EAAKr/E,EAAEyE,SACP66E,EAAKD,EAAG/6E,OAAOtE,GACf9xB,EAAIkiC,EAAG9L,OAAO+6E,GAEdZ,EAAKjrH,EAAEixC,SAASR,QAAQq7E,GAAIn7E,QAAQj2B,GAAGi2B,QAAQj2B,GAC/CwwG,EAAKlrH,EAAE8wC,OAAOp2B,EAAEi2B,QAAQs6E,IAAKt6E,QAAQnqB,EAAGsqB,OAAOg7E,IAC/CC,EAAKjtH,KAAKs0C,EAAEtC,OAAOtE,GAEvB,OAAO1tC,KAAKo2D,MAAMU,OAAOq1D,EAAIC,EAAIa,IAGnCxC,EAAOzoH,UAAUq1D,KAAO,SAAcltD,GACpC,GAAY,IAARA,EACF,OAAOnK,KACT,GAAIA,KAAKq7E,aACP,OAAOr7E,KACT,IAAKmK,EACH,OAAOnK,KAAK04D,MAEd,IAAIt4D,EACJ,GAAIJ,KAAKo2D,MAAM4zD,OAAShqH,KAAKo2D,MAAM6zD,OAAQ,CACzC,IAAI/oH,EAAIlB,KACR,IAAKI,EAAI,EAAGA,EAAI+J,EAAK/J,IACnBc,EAAIA,EAAEw3D,MACR,OAAOx3D,EAKT,IAAI4B,EAAI9C,KAAKo2D,MAAMtzD,EACfinH,EAAO/pH,KAAKo2D,MAAM2zD,KAElBmD,EAAKltH,KAAK2Q,EACVw8G,EAAKntH,KAAK+R,EACVq7G,EAAKptH,KAAKs0C,EACV+4E,EAAMD,EAAGj7E,SAASA,SAGlBm7E,EAAMH,EAAGz7E,OAAOy7E,GACpB,IAAK/sH,EAAI,EAAGA,EAAI+J,EAAK/J,IAAK,CACxB,IAAImtH,EAAML,EAAG/6E,SACTq7E,EAAOF,EAAIn7E,SACXs7E,EAAOD,EAAKr7E,SACZ1xC,EAAI8sH,EAAI77E,OAAO67E,GAAK57E,QAAQ47E,GAAK57E,QAAQ7uC,EAAEkvC,OAAOq7E,IAElD76D,EAAK06D,EAAGl7E,OAAOw7E,GACfrB,EAAK1rH,EAAE0xC,SAASN,QAAQ2gB,EAAG9gB,OAAO8gB,IAClCC,EAAKD,EAAG3gB,QAAQs6E,GAChBuB,EAAMjtH,EAAEuxC,OAAOygB,GACnBi7D,EAAMA,EAAI/7E,QAAQ+7E,GAAK77E,QAAQ47E,GAC/B,IAAIR,EAAKK,EAAIt7E,OAAOo7E,GAChBhtH,EAAI,EAAI+J,IACVkjH,EAAMA,EAAIr7E,OAAOy7E,IAEnBP,EAAKf,EACLiB,EAAKH,EACLK,EAAMI,EAGR,OAAO1tH,KAAKo2D,MAAMU,OAAOo2D,EAAII,EAAIt7E,OAAO+3E,GAAOqD,IAGjD3C,EAAOzoH,UAAU02D,IAAM,WACrB,OAAI14D,KAAKq7E,aACAr7E,KAELA,KAAKo2D,MAAM4zD,MACNhqH,KAAK2tH,WACL3tH,KAAKo2D,MAAM6zD,OACXjqH,KAAK4tH,YAEL5tH,KAAK6tH,QAGhBpD,EAAOzoH,UAAU2rH,SAAW,WAC1B,IAAIxB,EACAC,EACAa,EAEJ,GAAIjtH,KAAK0qH,KAAM,CAMb,IAAIoD,EAAK9tH,KAAK2Q,EAAEwhC,SAEZ47E,EAAK/tH,KAAK+R,EAAEogC,SAEZ67E,EAAOD,EAAG57E,SAEVhwC,EAAInC,KAAK2Q,EAAE+gC,OAAOq8E,GAAI57E,SAASN,QAAQi8E,GAAIj8E,QAAQm8E,GACvD7rH,EAAIA,EAAEwvC,QAAQxvC,GAEd,IAAI3B,EAAIstH,EAAGp8E,OAAOo8E,GAAIn8E,QAAQm8E,GAE1BxsH,EAAId,EAAE2xC,SAASN,QAAQ1vC,GAAG0vC,QAAQ1vC,GAGlC8rH,EAAQD,EAAKr8E,QAAQq8E,GAEzBC,GADAA,EAAQA,EAAMt8E,QAAQs8E,IACRt8E,QAAQs8E,GAGtB9B,EAAK7qH,EAEL8qH,EAAK5rH,EAAEwxC,OAAO7vC,EAAE0vC,QAAQvwC,IAAIuwC,QAAQo8E,GAEpChB,EAAKjtH,KAAK+R,EAAE2/B,OAAO1xC,KAAK+R,OACnB,CAML,IAAIjP,EAAI9C,KAAK2Q,EAAEwhC,SAEXztC,EAAI1E,KAAK+R,EAAEogC,SAEX1xC,EAAIiE,EAAEytC,SAENzxC,EAAIV,KAAK2Q,EAAE+gC,OAAOhtC,GAAGytC,SAASN,QAAQ/uC,GAAG+uC,QAAQpxC,GACrDC,EAAIA,EAAEixC,QAAQjxC,GAEd,IAAI6D,EAAIzB,EAAE4uC,OAAO5uC,GAAG6uC,QAAQ7uC,GAExBoC,EAAIX,EAAE4tC,SAGN+7E,EAAKztH,EAAEkxC,QAAQlxC,GAEnBytH,GADAA,EAAKA,EAAGv8E,QAAQu8E,IACRv8E,QAAQu8E,GAGhB/B,EAAKjnH,EAAE2sC,QAAQnxC,GAAGmxC,QAAQnxC,GAE1B0rH,EAAK7nH,EAAEytC,OAAOtxC,EAAEmxC,QAAQs6E,IAAKt6E,QAAQq8E,GAGrCjB,GADAA,EAAKjtH,KAAK+R,EAAEigC,OAAOhyC,KAAKs0C,IAChB3C,QAAQs7E,GAGlB,OAAOjtH,KAAKo2D,MAAMU,OAAOq1D,EAAIC,EAAIa,IAGnCxC,EAAOzoH,UAAU4rH,UAAY,WAC3B,IAAIzB,EACAC,EACAa,EAEJ,GAAIjtH,KAAK0qH,KAAM,CAMb,IAAIoD,EAAK9tH,KAAK2Q,EAAEwhC,SAEZ47E,EAAK/tH,KAAK+R,EAAEogC,SAEZ67E,EAAOD,EAAG57E,SAEVhwC,EAAInC,KAAK2Q,EAAE+gC,OAAOq8E,GAAI57E,SAASN,QAAQi8E,GAAIj8E,QAAQm8E,GACvD7rH,EAAIA,EAAEwvC,QAAQxvC,GAEd,IAAI3B,EAAIstH,EAAGp8E,OAAOo8E,GAAIn8E,QAAQm8E,GAAIn8E,QAAQ3xC,KAAKo2D,MAAMtzD,GAEjDxB,EAAId,EAAE2xC,SAASN,QAAQ1vC,GAAG0vC,QAAQ1vC,GAEtCgqH,EAAK7qH,EAEL,IAAI2sH,EAAQD,EAAKr8E,QAAQq8E,GAEzBC,GADAA,EAAQA,EAAMt8E,QAAQs8E,IACRt8E,QAAQs8E,GACtB7B,EAAK5rH,EAAEwxC,OAAO7vC,EAAE0vC,QAAQvwC,IAAIuwC,QAAQo8E,GAEpChB,EAAKjtH,KAAK+R,EAAE2/B,OAAO1xC,KAAK+R,OACnB,CAKL,IAAI5D,EAAQnO,KAAKs0C,EAAEnC,SAEfg8E,EAAQnuH,KAAK+R,EAAEogC,SAEfomB,EAAOv4D,KAAK2Q,EAAEqhC,OAAOm8E,GAErBC,EAAQpuH,KAAK2Q,EAAEihC,OAAOzjC,GAAO6jC,OAAOhyC,KAAK2Q,EAAE+gC,OAAOvjC,IACtDigH,EAAQA,EAAM18E,OAAO08E,GAAOz8E,QAAQy8E,GAEpC,IAAIC,EAAQ91D,EAAK5mB,QAAQ4mB,GAErB+1D,GADJD,EAAQA,EAAM18E,QAAQ08E,IACJ38E,OAAO28E,GACzBlC,EAAKiC,EAAMj8E,SAASN,QAAQy8E,GAE5BrB,EAAKjtH,KAAK+R,EAAE2/B,OAAO1xC,KAAKs0C,GAAGnC,SAASN,QAAQs8E,GAAOt8E,QAAQ1jC,GAE3D,IAAIogH,EAAUJ,EAAMh8E,SAGpBo8E,GADAA,GADAA,EAAUA,EAAQ58E,QAAQ48E,IACR58E,QAAQ48E,IACR58E,QAAQ48E,GAC1BnC,EAAKgC,EAAMp8E,OAAOq8E,EAAMx8E,QAAQs6E,IAAKt6E,QAAQ08E,GAG/C,OAAOvuH,KAAKo2D,MAAMU,OAAOq1D,EAAIC,EAAIa,IAGnCxC,EAAOzoH,UAAU6rH,KAAO,WACtB,IAAI/qH,EAAI9C,KAAKo2D,MAAMtzD,EAGfoqH,EAAKltH,KAAK2Q,EACVw8G,EAAKntH,KAAK+R,EACVq7G,EAAKptH,KAAKs0C,EACV+4E,EAAMD,EAAGj7E,SAASA,SAElBo7E,EAAML,EAAG/6E,SACTq8E,EAAMrB,EAAGh7E,SAET1xC,EAAI8sH,EAAI77E,OAAO67E,GAAK57E,QAAQ47E,GAAK57E,QAAQ7uC,EAAEkvC,OAAOq7E,IAElDoB,EAAOvB,EAAGx7E,OAAOw7E,GAEjB16D,GADJi8D,EAAOA,EAAK98E,QAAQ88E,IACNz8E,OAAOw8E,GACjBrC,EAAK1rH,EAAE0xC,SAASN,QAAQ2gB,EAAG9gB,OAAO8gB,IAClCC,EAAKD,EAAG3gB,QAAQs6E,GAEhBuC,EAAOF,EAAIr8E,SAGfu8E,GADAA,GADAA,EAAOA,EAAK/8E,QAAQ+8E,IACR/8E,QAAQ+8E,IACR/8E,QAAQ+8E,GACpB,IAAItC,EAAK3rH,EAAEuxC,OAAOygB,GAAI5gB,QAAQ68E,GAC1BzB,EAAKE,EAAGz7E,OAAOy7E,GAAIn7E,OAAOo7E,GAE9B,OAAOptH,KAAKo2D,MAAMU,OAAOq1D,EAAIC,EAAIa,IAGnCxC,EAAOzoH,UAAU2sH,KAAO,WACtB,IAAK3uH,KAAKo2D,MAAM4zD,MACd,OAAOhqH,KAAK04D,MAAMjuD,IAAIzK,MAMxB,IAAI8tH,EAAK9tH,KAAK2Q,EAAEwhC,SAEZ47E,EAAK/tH,KAAK+R,EAAEogC,SAEZy8E,EAAK5uH,KAAKs0C,EAAEnC,SAEZ67E,EAAOD,EAAG57E,SAEV3xC,EAAIstH,EAAGp8E,OAAOo8E,GAAIn8E,QAAQm8E,GAE1Be,EAAKruH,EAAE2xC,SAEP5tC,EAAIvE,KAAK2Q,EAAE+gC,OAAOq8E,GAAI57E,SAASN,QAAQi8E,GAAIj8E,QAAQm8E,GAKnDc,GAFJvqH,GADAA,GADAA,EAAIA,EAAEotC,QAAQptC,IACRmtC,OAAOntC,GAAGotC,QAAQptC,IAClBstC,QAAQg9E,IAEH18E,SAEP7wC,EAAI0sH,EAAKr8E,QAAQq8E,GAGrB1sH,GADAA,GADAA,EAAIA,EAAEqwC,QAAQrwC,IACRqwC,QAAQrwC,IACRqwC,QAAQrwC,GAEd,IAAIozC,EAAIl0C,EAAEmxC,QAAQptC,GAAG4tC,SAASN,QAAQg9E,GAAIh9E,QAAQi9E,GAAIj9E,QAAQvwC,GAE1DytH,EAAOhB,EAAG/7E,OAAO0C,GAErBq6E,GADAA,EAAOA,EAAKp9E,QAAQo9E,IACRp9E,QAAQo9E,GACpB,IAAI5C,EAAKnsH,KAAK2Q,EAAEqhC,OAAO88E,GAAIj9E,QAAQk9E,GAEnC5C,GADAA,EAAKA,EAAGx6E,QAAQw6E,IACRx6E,QAAQw6E,GAEhB,IAAIC,EAAKpsH,KAAK+R,EAAEigC,OAAO0C,EAAE1C,OAAO1wC,EAAEuwC,QAAQ6C,IAAI7C,QAAQttC,EAAEytC,OAAO88E,KAG/D1C,GADAA,GADAA,EAAKA,EAAGz6E,QAAQy6E,IACRz6E,QAAQy6E,IACRz6E,QAAQy6E,GAEhB,IAAIa,EAAKjtH,KAAKs0C,EAAE5C,OAAOntC,GAAG4tC,SAASN,QAAQ+8E,GAAI/8E,QAAQi9E,GAEvD,OAAO9uH,KAAKo2D,MAAMU,OAAOq1D,EAAIC,EAAIa,IAGnCxC,EAAOzoH,UAAUs+B,IAAM,SAAa5sB,EAAGs7G,GAGrC,OAFAt7G,EAAI,IAAI+rB,EAAG/rB,EAAGs7G,GAEPhvH,KAAKo2D,MAAMc,SAASl3D,KAAM0T,IAGnC+2G,EAAOzoH,UAAUivC,GAAK,SAAY/uC,GAChC,GAAe,WAAXA,EAAEkU,KACJ,OAAOpW,KAAKixC,GAAG/uC,EAAE01D,OAEnB,GAAI53D,OAASkC,EACX,OAAO,EAGT,IAAI4qH,EAAK9sH,KAAKs0C,EAAEnC,SACZ06E,EAAM3qH,EAAEoyC,EAAEnC,SACd,GAA2D,IAAvDnyC,KAAK2Q,EAAEqhC,OAAO66E,GAAKh7E,QAAQ3vC,EAAEyO,EAAEqhC,OAAO86E,IAAK18E,KAAK,GAClD,OAAO,EAGT,IAAI6+E,EAAKnC,EAAG96E,OAAOhyC,KAAKs0C,GACpB46E,EAAMrC,EAAI76E,OAAO9vC,EAAEoyC,GACvB,OAA8D,IAAvDt0C,KAAK+R,EAAEigC,OAAOk9E,GAAKr9E,QAAQ3vC,EAAE6P,EAAEigC,OAAOi9E,IAAK7+E,KAAK,IAGzDq6E,EAAOzoH,UAAUmtH,OAAS,SAAgBx+G,GACxC,IAAIy+G,EAAKpvH,KAAKs0C,EAAEnC,SACZnG,EAAKr7B,EAAEwgC,MAAMnxC,KAAKo2D,MAAMt2B,KAAKkS,OAAOo9E,GACxC,GAAuB,IAAnBpvH,KAAK2Q,EAAE6vB,IAAIwL,GACb,OAAO,EAIT,IAFA,IAAIqjF,EAAK1+G,EAAE4wB,QACPjgC,EAAItB,KAAKo2D,MAAMH,KAAKjkB,OAAOo9E,KACtB,CAEP,GADAC,EAAGpqF,KAAKjlC,KAAKo2D,MAAMv0D,GACfwtH,EAAG7uF,IAAIxgC,KAAKo2D,MAAMl0D,IAAM,EAC1B,OAAO,EAGT,GADA8pC,EAAG2F,QAAQrwC,GACY,IAAnBtB,KAAK2Q,EAAE6vB,IAAIwL,GACb,OAAO,IAIby+E,EAAOzoH,UAAU0/B,QAAU,WACzB,OAAI1hC,KAAKq7E,aACA,uBACF,iBAAmBr7E,KAAK2Q,EAAExM,SAAS,GAAI,GAC1C,OAASnE,KAAK+R,EAAE5N,SAAS,GAAI,GAC7B,OAASnE,KAAKs0C,EAAEnwC,SAAS,GAAI,GAAK,KAGxCsmH,EAAOzoH,UAAUq5E,WAAa,WAE5B,OAA0B,IAAnBr7E,KAAKs0C,EAAElE,KAAK,K,6BCt6BrB,IAAI3Q,EAAK,EAAQ,GACbD,EAAW,EAAQ,GACnBuqB,EAAO,EAAQ,IAEf/M,EAAQ,EAAQ,IAEpB,SAASsyE,EAAUh6D,GACjBvL,EAAKxpD,KAAKP,KAAM,OAAQs1D,GAExBt1D,KAAK8C,EAAI,IAAI28B,EAAG61B,EAAKxyD,EAAG,IAAIquC,MAAMnxC,KAAK8/B,KACvC9/B,KAAK0E,EAAI,IAAI+6B,EAAG61B,EAAK5wD,EAAG,IAAIysC,MAAMnxC,KAAK8/B,KACvC9/B,KAAKuvH,GAAK,IAAI9vF,EAAG,GAAG0R,MAAMnxC,KAAK8/B,KAAKyS,UACpCvyC,KAAKw1D,IAAM,IAAI/1B,EAAG,GAAG0R,MAAMnxC,KAAK8/B,KAChC9/B,KAAKwvH,IAAMxvH,KAAKuvH,GAAGv9E,OAAOhyC,KAAK8C,EAAE4uC,OAAO1xC,KAAKw1D,MAc/C,SAAS80D,EAAMl0D,EAAOzlD,EAAG2jC,GACvByV,EAAKoM,UAAU51D,KAAKP,KAAMo2D,EAAO,cACvB,OAANzlD,GAAoB,OAAN2jC,GAChBt0C,KAAK2Q,EAAI3Q,KAAKo2D,MAAMjiB,IACpBn0C,KAAKs0C,EAAIt0C,KAAKo2D,MAAMb,OAEpBv1D,KAAK2Q,EAAI,IAAI8uB,EAAG9uB,EAAG,IACnB3Q,KAAKs0C,EAAI,IAAI7U,EAAG6U,EAAG,IACdt0C,KAAK2Q,EAAEmvB,MACV9/B,KAAK2Q,EAAI3Q,KAAK2Q,EAAEwgC,MAAMnxC,KAAKo2D,MAAMt2B,MAC9B9/B,KAAKs0C,EAAExU,MACV9/B,KAAKs0C,EAAIt0C,KAAKs0C,EAAEnD,MAAMnxC,KAAKo2D,MAAMt2B,OAvBvCN,EAAS8vF,EAAWvlE,GACpBlqD,EAAOD,QAAU0vH,EAEjBA,EAAUttH,UAAUu0D,SAAW,SAAkBD,GAC/C,IAAI3lD,EAAI2lD,EAAMm5D,YAAY9+G,EACtB+B,EAAK/B,EAAEwhC,SACPw5E,EAAMj5G,EAAGs/B,OAAOrhC,GAAG+gC,OAAOh/B,EAAGs/B,OAAOhyC,KAAK8C,IAAI4uC,OAAO/gC,GAGxD,OAA+B,IAFvBg7G,EAAIr5E,UAEHH,SAAS3R,IAAImrF,IAiBxBnsF,EAAS8qF,EAAOvgE,EAAKoM,WAErBm5D,EAAUttH,UAAU+1D,YAAc,SAAqBzvC,EAAOm2B,GAC5D,OAAOz+C,KAAKs2D,MAAMtZ,EAAMn/B,QAAQyK,EAAOm2B,GAAM,IAG/C6wE,EAAUttH,UAAUs0D,MAAQ,SAAe3lD,EAAG2jC,GAC5C,OAAO,IAAIg2E,EAAMtqH,KAAM2Q,EAAG2jC,IAG5Bg7E,EAAUttH,UAAUyzD,cAAgB,SAAuBlwD,GACzD,OAAO+kH,EAAMyB,SAAS/rH,KAAMuF,IAG9B+kH,EAAMtoH,UAAUs2D,WAAa,aAI7BgyD,EAAMtoH,UAAUk2D,QAAU,WACxB,OAAOl4D,KAAKo4D,OAAOv6C,QAAQ,KAAM7d,KAAKo2D,MAAMl0D,EAAE6gC,eAGhDunF,EAAMyB,SAAW,SAAkB31D,EAAO7wD,GACxC,OAAO,IAAI+kH,EAAMl0D,EAAO7wD,EAAI,GAAIA,EAAI,IAAM6wD,EAAMjiB,MAGlDm2E,EAAMtoH,UAAU0/B,QAAU,WACxB,OAAI1hC,KAAKq7E,aACA,sBACF,gBAAkBr7E,KAAK2Q,EAAE4gC,UAAUptC,SAAS,GAAI,GACnD,OAASnE,KAAKs0C,EAAE/C,UAAUptC,SAAS,GAAI,GAAK,KAGlDmmH,EAAMtoH,UAAUq5E,WAAa,WAE3B,OAA0B,IAAnBr7E,KAAKs0C,EAAElE,KAAK,IAGrBk6E,EAAMtoH,UAAU02D,IAAM,WAKpB,IAEIg3D,EAFI1vH,KAAK2Q,EAAE+gC,OAAO1xC,KAAKs0C,GAEhBnC,SAIPw9E,EAFI3vH,KAAK2Q,EAAEihC,OAAO5xC,KAAKs0C,GAEhBnC,SAEP1xC,EAAIivH,EAAG99E,OAAO+9E,GAEdxD,EAAKuD,EAAG19E,OAAO29E,GAEf1C,EAAKxsH,EAAEuxC,OAAO29E,EAAGj+E,OAAO1xC,KAAKo2D,MAAMo5D,IAAIx9E,OAAOvxC,KAClD,OAAOT,KAAKo2D,MAAME,MAAM61D,EAAIc,IAG9B3C,EAAMtoH,UAAUyI,IAAM,WACpB,MAAM,IAAIvD,MAAM,sCAGlBojH,EAAMtoH,UAAU4tH,QAAU,SAAiB1tH,EAAG0sC,GAK5C,IAAI9rC,EAAI9C,KAAK2Q,EAAE+gC,OAAO1xC,KAAKs0C,GAEvB5vC,EAAI1E,KAAK2Q,EAAEihC,OAAO5xC,KAAKs0C,GAEvB7zC,EAAIyB,EAAEyO,EAAE+gC,OAAOxvC,EAAEoyC,GAIjBu7E,EAFI3tH,EAAEyO,EAAEihC,OAAO1vC,EAAEoyC,GAEVtC,OAAOlvC,GAEdmmD,EAAKxoD,EAAEuxC,OAAOttC,GAEdynH,EAAKv9E,EAAK0F,EAAEtC,OAAO69E,EAAGn+E,OAAOuX,GAAI9W,UAEjC86E,EAAKr+E,EAAKj+B,EAAEqhC,OAAO69E,EAAGh+E,QAAQoX,GAAI9W,UACtC,OAAOnyC,KAAKo2D,MAAME,MAAM61D,EAAIc,IAG9B3C,EAAMtoH,UAAUs+B,IAAM,SAAa5sB,GAMjC,IALA,IAAIpS,EAAIoS,EAAE6tB,QACNz+B,EAAI9C,KACJ0E,EAAI1E,KAAKo2D,MAAME,MAAM,KAAM,MAGtBv0C,EAAO,GAAkB,IAAdzgB,EAAE8uC,KAAK,GAAU9uC,EAAE8hC,OAAO,GAC5CrhB,EAAK/D,KAAK1c,EAAE6hC,MAAM,IAEpB,IAAK,IAAI/iC,EAAI2hB,EAAKpd,OAAS,EAAGvE,GAAK,EAAGA,IACpB,IAAZ2hB,EAAK3hB,IAEP0C,EAAIA,EAAE8sH,QAAQlrH,EARV1E,MAUJ0E,EAAIA,EAAEg0D,QAGNh0D,EAAI5B,EAAE8sH,QAAQlrH,EAbV1E,MAeJ8C,EAAIA,EAAE41D,OAGV,OAAOh0D,GAGT4lH,EAAMtoH,UAAUuqH,OAAS,WACvB,MAAM,IAAIrlH,MAAM,sCAGlBojH,EAAMtoH,UAAU8tH,QAAU,WACxB,MAAM,IAAI5oH,MAAM,sCAGlBojH,EAAMtoH,UAAUivC,GAAK,SAAY9kC,GAC/B,OAAyC,IAAlCnM,KAAKo4D,OAAO53B,IAAIr0B,EAAMisD,SAG/BkyD,EAAMtoH,UAAUytH,UAAY,WAG1B,OAFAzvH,KAAK2Q,EAAI3Q,KAAK2Q,EAAEqhC,OAAOhyC,KAAKs0C,EAAE/B,WAC9BvyC,KAAKs0C,EAAIt0C,KAAKo2D,MAAMjiB,IACbn0C,MAGTsqH,EAAMtoH,UAAUo2D,KAAO,WAIrB,OAFAp4D,KAAKyvH,YAEEzvH,KAAK2Q,EAAE4gC,Y,6BC9KhB,IAAIyL,EAAQ,EAAQ,IAChBvd,EAAK,EAAQ,GACbD,EAAW,EAAQ,GACnBuqB,EAAO,EAAQ,IAEfzqB,EAAS0d,EAAM1d,OAEnB,SAASywF,EAAaz6D,GAEpBt1D,KAAKgwH,QAA2B,IAAP,EAAT16D,EAAKxyD,GACrB9C,KAAKiwH,MAAQjwH,KAAKgwH,UAA6B,IAAR,EAAT16D,EAAKxyD,GACnC9C,KAAKytC,SAAWztC,KAAKiwH,MAErBlmE,EAAKxpD,KAAKP,KAAM,UAAWs1D,GAE3Bt1D,KAAK8C,EAAI,IAAI28B,EAAG61B,EAAKxyD,EAAG,IAAImsC,KAAKjvC,KAAK8/B,IAAIt/B,GAC1CR,KAAK8C,EAAI9C,KAAK8C,EAAEquC,MAAMnxC,KAAK8/B,KAC3B9/B,KAAKS,EAAI,IAAIg/B,EAAG61B,EAAK70D,EAAG,IAAI0wC,MAAMnxC,KAAK8/B,KACvC9/B,KAAKu6E,GAAKv6E,KAAKS,EAAE0xC,SACjBnyC,KAAKU,EAAI,IAAI++B,EAAG61B,EAAK50D,EAAG,IAAIywC,MAAMnxC,KAAK8/B,KACvC9/B,KAAKkwH,GAAKlwH,KAAKU,EAAEgxC,OAAO1xC,KAAKU,GAE7B4+B,GAAQt/B,KAAKgwH,SAAwC,IAA7BhwH,KAAKS,EAAE8wC,UAAUnB,KAAK,IAC9CpwC,KAAKmwH,KAAwB,IAAP,EAAT76D,EAAK70D,GAwFpB,SAAS6pH,EAAMl0D,EAAOzlD,EAAGoB,EAAGuiC,EAAGhzC,GAC7ByoD,EAAKoM,UAAU51D,KAAKP,KAAMo2D,EAAO,cACvB,OAANzlD,GAAoB,OAANoB,GAAoB,OAANuiC,GAC9Bt0C,KAAK2Q,EAAI3Q,KAAKo2D,MAAMb,KACpBv1D,KAAK+R,EAAI/R,KAAKo2D,MAAMjiB,IACpBn0C,KAAKs0C,EAAIt0C,KAAKo2D,MAAMjiB,IACpBn0C,KAAKsB,EAAItB,KAAKo2D,MAAMb,KACpBv1D,KAAK0qH,MAAO,IAEZ1qH,KAAK2Q,EAAI,IAAI8uB,EAAG9uB,EAAG,IACnB3Q,KAAK+R,EAAI,IAAI0tB,EAAG1tB,EAAG,IACnB/R,KAAKs0C,EAAIA,EAAI,IAAI7U,EAAG6U,EAAG,IAAMt0C,KAAKo2D,MAAMjiB,IACxCn0C,KAAKsB,EAAIA,GAAK,IAAIm+B,EAAGn+B,EAAG,IACnBtB,KAAK2Q,EAAEmvB,MACV9/B,KAAK2Q,EAAI3Q,KAAK2Q,EAAEwgC,MAAMnxC,KAAKo2D,MAAMt2B,MAC9B9/B,KAAK+R,EAAE+tB,MACV9/B,KAAK+R,EAAI/R,KAAK+R,EAAEo/B,MAAMnxC,KAAKo2D,MAAMt2B,MAC9B9/B,KAAKs0C,EAAExU,MACV9/B,KAAKs0C,EAAIt0C,KAAKs0C,EAAEnD,MAAMnxC,KAAKo2D,MAAMt2B,MAC/B9/B,KAAKsB,IAAMtB,KAAKsB,EAAEw+B,MACpB9/B,KAAKsB,EAAItB,KAAKsB,EAAE6vC,MAAMnxC,KAAKo2D,MAAMt2B,MACnC9/B,KAAK0qH,KAAO1qH,KAAKs0C,IAAMt0C,KAAKo2D,MAAMjiB,IAG9Bn0C,KAAKo2D,MAAM3oB,WAAaztC,KAAKsB,IAC/BtB,KAAKsB,EAAItB,KAAK2Q,EAAEqhC,OAAOhyC,KAAK+R,GACvB/R,KAAK0qH,OACR1qH,KAAKsB,EAAItB,KAAKsB,EAAE0wC,OAAOhyC,KAAKs0C,EAAE/B,cAjHtC/S,EAASuwF,EAAchmE,GACvBlqD,EAAOD,QAAUmwH,EAEjBA,EAAa/tH,UAAUouH,MAAQ,SAAe7vF,GAC5C,OAAIvgC,KAAKiwH,MACA1vF,EAAIiS,SAEJxyC,KAAK8C,EAAEkvC,OAAOzR,IAGzBwvF,EAAa/tH,UAAUquH,MAAQ,SAAe9vF,GAC5C,OAAIvgC,KAAKmwH,KACA5vF,EAEAvgC,KAAKS,EAAEuxC,OAAOzR,IAIzBwvF,EAAa/tH,UAAU80D,OAAS,SAAgBnmD,EAAGoB,EAAGuiC,EAAGhzC,GACvD,OAAOtB,KAAKs2D,MAAM3lD,EAAGoB,EAAGuiC,EAAGhzC,IAG7ByuH,EAAa/tH,UAAUg2D,WAAa,SAAoBrnD,EAAGu7B,IACzDv7B,EAAI,IAAI8uB,EAAG9uB,EAAG,KACPmvB,MACLnvB,EAAIA,EAAEwgC,MAAMnxC,KAAK8/B,MAEnB,IAAIptB,EAAK/B,EAAEwhC,SACPw5E,EAAM3rH,KAAKu6E,GAAG3oC,OAAO5xC,KAAK8C,EAAEkvC,OAAOt/B,IACnC49G,EAAMtwH,KAAKm0C,IAAIvC,OAAO5xC,KAAKu6E,GAAGvoC,OAAOhyC,KAAKU,GAAGsxC,OAAOt/B,IAEpDy4G,EAAKQ,EAAI35E,OAAOs+E,EAAI/9E,WACpBxgC,EAAIo5G,EAAG74E,UACX,GAA6C,IAAzCvgC,EAAEogC,SAASP,OAAOu5E,GAAI3qF,IAAIxgC,KAAKu1D,MACjC,MAAM,IAAIruD,MAAM,iBAElB,IAAIgF,EAAQ6F,EAAEw/B,UAAUrlC,QAIxB,OAHIggC,IAAQhgC,IAAUggC,GAAOhgC,KAC3B6F,EAAIA,EAAEygC,UAEDxyC,KAAKs2D,MAAM3lD,EAAGoB,IAGvBg+G,EAAa/tH,UAAUuuH,WAAa,SAAoBx+G,EAAGm6B,IACzDn6B,EAAI,IAAI0tB,EAAG1tB,EAAG,KACP+tB,MACL/tB,EAAIA,EAAEo/B,MAAMnxC,KAAK8/B,MAGnB,IAAIqrF,EAAKp5G,EAAEogC,SACPm+E,EAAMnF,EAAGv5E,OAAO5xC,KAAKu6E,IACrBoxC,EAAMR,EAAGn5E,OAAOhyC,KAAKU,GAAGsxC,OAAOhyC,KAAKu6E,IAAI3oC,OAAO5xC,KAAK8C,GACpD4P,EAAK49G,EAAIt+E,OAAO25E,EAAIp5E,WAExB,GAA0B,IAAtB7/B,EAAG8tB,IAAIxgC,KAAKu1D,MAAa,CAC3B,GAAIrpB,EACF,MAAM,IAAIhlC,MAAM,iBAEhB,OAAOlH,KAAKs2D,MAAMt2D,KAAKu1D,KAAMxjD,GAGjC,IAAIpB,EAAI+B,EAAG4/B,UACX,GAA6C,IAAzC3hC,EAAEwhC,SAASP,OAAOl/B,GAAI8tB,IAAIxgC,KAAKu1D,MACjC,MAAM,IAAIruD,MAAM,iBAKlB,OAHIyJ,EAAE4gC,UAAUrlC,UAAYggC,IAC1Bv7B,EAAIA,EAAE6hC,UAEDxyC,KAAKs2D,MAAM3lD,EAAGoB,IAGvBg+G,EAAa/tH,UAAUu0D,SAAW,SAAkBD,GAClD,GAAIA,EAAM+kB,aACR,OAAO,EAGT/kB,EAAMm5D,YAEN,IAAI/8G,EAAK4jD,EAAM3lD,EAAEwhC,SACbg5E,EAAK70D,EAAMvkD,EAAEogC,SACbm+E,EAAM59G,EAAGs/B,OAAOhyC,KAAK8C,GAAG4uC,OAAOy5E,GAC/BQ,EAAM3rH,KAAKu6E,GAAGvoC,OAAOhyC,KAAKm0C,IAAIzC,OAAO1xC,KAAKU,EAAEsxC,OAAOt/B,GAAIs/B,OAAOm5E,KAElE,OAAwB,IAAjBmF,EAAI9vF,IAAImrF,IAkCjBnsF,EAAS8qF,EAAOvgE,EAAKoM,WAErB45D,EAAa/tH,UAAUyzD,cAAgB,SAAuBlwD,GAC5D,OAAO+kH,EAAMyB,SAAS/rH,KAAMuF,IAG9BwqH,EAAa/tH,UAAUs0D,MAAQ,SAAe3lD,EAAGoB,EAAGuiC,EAAGhzC,GACrD,OAAO,IAAIgpH,EAAMtqH,KAAM2Q,EAAGoB,EAAGuiC,EAAGhzC,IAGlCgpH,EAAMyB,SAAW,SAAkB31D,EAAO7wD,GACxC,OAAO,IAAI+kH,EAAMl0D,EAAO7wD,EAAI,GAAIA,EAAI,GAAIA,EAAI,KAG9C+kH,EAAMtoH,UAAU0/B,QAAU,WACxB,OAAI1hC,KAAKq7E,aACA,sBACF,gBAAkBr7E,KAAK2Q,EAAE4gC,UAAUptC,SAAS,GAAI,GACnD,OAASnE,KAAK+R,EAAEw/B,UAAUptC,SAAS,GAAI,GACvC,OAASnE,KAAKs0C,EAAE/C,UAAUptC,SAAS,GAAI,GAAK,KAGlDmmH,EAAMtoH,UAAUq5E,WAAa,WAE3B,OAA0B,IAAnBr7E,KAAK2Q,EAAEy/B,KAAK,KACO,IAAvBpwC,KAAK+R,EAAEyuB,IAAIxgC,KAAKs0C,IAChBt0C,KAAK0qH,MAAqC,IAA7B1qH,KAAK+R,EAAEyuB,IAAIxgC,KAAKo2D,MAAM31D,KAGxC6pH,EAAMtoH,UAAUwuH,QAAU,WAMxB,IAAI1tH,EAAI9C,KAAK2Q,EAAEwhC,SAEXztC,EAAI1E,KAAK+R,EAAEogC,SAEX1xC,EAAIT,KAAKs0C,EAAEnC,SACf1xC,EAAIA,EAAEkxC,QAAQlxC,GAEd,IAAIC,EAAIV,KAAKo2D,MAAMg6D,MAAMttH,GAErByB,EAAIvE,KAAK2Q,EAAE+gC,OAAO1xC,KAAK+R,GAAGogC,SAASN,QAAQ/uC,GAAG+uC,QAAQntC,GAEtDirC,EAAIjvC,EAAEgxC,OAAOhtC,GAEbQ,EAAIyqC,EAAEiC,OAAOnxC,GAEbitC,EAAIhtC,EAAEkxC,OAAOltC,GAEbynH,EAAK5nH,EAAEytC,OAAO9sC,GAEdknH,EAAKz8E,EAAEqC,OAAOtE,GAEd+iF,EAAKlsH,EAAEytC,OAAOtE,GAEdu/E,EAAK/nH,EAAE8sC,OAAOrC,GAClB,OAAO3vC,KAAKo2D,MAAME,MAAM61D,EAAIC,EAAIa,EAAIwD,IAGtCnG,EAAMtoH,UAAU0uH,SAAW,WAQzB,IAMIvE,EACAC,EACAa,EACA1oH,EACAmpC,EACAz1B,EAXAvT,EAAI1E,KAAK2Q,EAAE+gC,OAAO1xC,KAAK+R,GAAGogC,SAE1B1xC,EAAIT,KAAK2Q,EAAEwhC,SAEXzxC,EAAIV,KAAK+R,EAAEogC,SAQf,GAAInyC,KAAKo2D,MAAM45D,QAAS,CAItB,IAAI9qH,GAFJX,EAAIvE,KAAKo2D,MAAMg6D,MAAM3vH,IAEXixC,OAAOhxC,GACbV,KAAK0qH,MAEPyB,EAAKznH,EAAEktC,OAAOnxC,GAAGmxC,OAAOlxC,GAAGsxC,OAAO9sC,EAAE0sC,OAAO5xC,KAAKo2D,MAAMZ,MAEtD42D,EAAKlnH,EAAE8sC,OAAOztC,EAAEqtC,OAAOlxC,IAEvBusH,EAAK/nH,EAAEitC,SAASP,OAAO1sC,GAAG0sC,OAAO1sC,KAGjCwoC,EAAI1tC,KAAKs0C,EAAEnC,SAEXl6B,EAAI/S,EAAE0sC,OAAOlE,GAAGmE,QAAQnE,GAExBy+E,EAAKznH,EAAEktC,OAAOnxC,GAAGoxC,QAAQnxC,GAAGsxC,OAAO/5B,GAEnCm0G,EAAKlnH,EAAE8sC,OAAOztC,EAAEqtC,OAAOlxC,IAEvBusH,EAAK/nH,EAAE8sC,OAAO/5B,SAIhB1T,EAAI9D,EAAEixC,OAAOhxC,GAEbgtC,EAAI1tC,KAAKo2D,MAAMi6D,MAAMrwH,KAAKs0C,GAAGnC,SAE7Bl6B,EAAI1T,EAAEqtC,OAAOlE,GAAGkE,OAAOlE,GAEvBy+E,EAAKnsH,KAAKo2D,MAAMi6D,MAAM3rH,EAAEmtC,QAAQttC,IAAIytC,OAAO/5B,GAE3Cm0G,EAAKpsH,KAAKo2D,MAAMi6D,MAAM9rH,GAAGytC,OAAOvxC,EAAEoxC,QAAQnxC,IAE1CusH,EAAK1oH,EAAEytC,OAAO/5B,GAEhB,OAAOjY,KAAKo2D,MAAME,MAAM61D,EAAIC,EAAIa,IAGlC3C,EAAMtoH,UAAU02D,IAAM,WACpB,OAAI14D,KAAKq7E,aACAr7E,KAGLA,KAAKo2D,MAAM3oB,SACNztC,KAAKwwH,UAELxwH,KAAK0wH,YAGhBpG,EAAMtoH,UAAU2uH,QAAU,SAAiBzuH,GAMzC,IAAIY,EAAI9C,KAAK+R,EAAE6/B,OAAO5xC,KAAK2Q,GAAGqhC,OAAO9vC,EAAE6P,EAAE6/B,OAAO1vC,EAAEyO,IAE9CjM,EAAI1E,KAAK+R,EAAE2/B,OAAO1xC,KAAK2Q,GAAGqhC,OAAO9vC,EAAE6P,EAAE2/B,OAAOxvC,EAAEyO,IAE9ClQ,EAAIT,KAAKsB,EAAE0wC,OAAOhyC,KAAKo2D,MAAM85D,IAAIl+E,OAAO9vC,EAAEZ,GAE1CZ,EAAIV,KAAKs0C,EAAEtC,OAAO9vC,EAAEoyC,EAAE5C,OAAOxvC,EAAEoyC,IAE/B/vC,EAAIG,EAAEktC,OAAO9uC,GAEboC,EAAIxE,EAAEkxC,OAAOnxC,GAEbkvC,EAAIjvC,EAAEgxC,OAAOjxC,GAEbitC,EAAIhpC,EAAEgtC,OAAO5uC,GAEbqpH,EAAK5nH,EAAEytC,OAAO9sC,GAEdknH,EAAKz8E,EAAEqC,OAAOtE,GAEd+iF,EAAKlsH,EAAEytC,OAAOtE,GAEdu/E,EAAK/nH,EAAE8sC,OAAOrC,GAClB,OAAO3vC,KAAKo2D,MAAME,MAAM61D,EAAIC,EAAIa,EAAIwD,IAGtCnG,EAAMtoH,UAAU4uH,SAAW,SAAkB1uH,GAO3C,IAgBIkqH,EACAa,EAjBAnqH,EAAI9C,KAAKs0C,EAAEtC,OAAO9vC,EAAEoyC,GAEpB5vC,EAAI5B,EAAEqvC,SAEN1xC,EAAIT,KAAK2Q,EAAEqhC,OAAO9vC,EAAEyO,GAEpBjQ,EAAIV,KAAK+R,EAAEigC,OAAO9vC,EAAE6P,GAEpBxN,EAAIvE,KAAKo2D,MAAM11D,EAAEsxC,OAAOvxC,GAAGuxC,OAAOtxC,GAElCwE,EAAIR,EAAEktC,OAAOrtC,GAEborC,EAAIjrC,EAAEgtC,OAAOntC,GAEbqZ,EAAM5d,KAAK2Q,EAAE+gC,OAAO1xC,KAAK+R,GAAGigC,OAAO9vC,EAAEyO,EAAE+gC,OAAOxvC,EAAE6P,IAAI8/B,QAAQpxC,GAAGoxC,QAAQnxC,GACvEyrH,EAAKrpH,EAAEkvC,OAAO9sC,GAAG8sC,OAAOp0B,GAc5B,OAXI5d,KAAKo2D,MAAM45D,SAEb5D,EAAKtpH,EAAEkvC,OAAOrC,GAAGqC,OAAOtxC,EAAEkxC,OAAO5xC,KAAKo2D,MAAMg6D,MAAM3vH,KAElDwsH,EAAK/nH,EAAE8sC,OAAOrC,KAGdy8E,EAAKtpH,EAAEkvC,OAAOrC,GAAGqC,OAAOtxC,EAAEkxC,OAAOnxC,IAEjCwsH,EAAKjtH,KAAKo2D,MAAMi6D,MAAMnrH,GAAG8sC,OAAOrC,IAE3B3vC,KAAKo2D,MAAME,MAAM61D,EAAIC,EAAIa,IAGlC3C,EAAMtoH,UAAUyI,IAAM,SAAavI,GACjC,OAAIlC,KAAKq7E,aACAn5E,EACLA,EAAEm5E,aACGr7E,KAELA,KAAKo2D,MAAM3oB,SACNztC,KAAK2wH,QAAQzuH,GAEblC,KAAK4wH,SAAS1uH,IAGzBooH,EAAMtoH,UAAUs+B,IAAM,SAAa5sB,GACjC,OAAI1T,KAAKy4D,YAAY/kD,GACZ1T,KAAKo2D,MAAMI,aAAax2D,KAAM0T,GAE9B1T,KAAKo2D,MAAMc,SAASl3D,KAAM0T,IAGrC42G,EAAMtoH,UAAUuqH,OAAS,SAAgB/uE,EAAIt7C,EAAGu7C,GAC9C,OAAOz9C,KAAKo2D,MAAMkB,YAAY,EAAG,CAAEt3D,KAAMkC,GAAK,CAAEs7C,EAAIC,GAAM,GAAG,IAG/D6sE,EAAMtoH,UAAUwqH,QAAU,SAAiBhvE,EAAIt7C,EAAGu7C,GAChD,OAAOz9C,KAAKo2D,MAAMkB,YAAY,EAAG,CAAEt3D,KAAMkC,GAAK,CAAEs7C,EAAIC,GAAM,GAAG,IAG/D6sE,EAAMtoH,UAAUytH,UAAY,WAC1B,GAAIzvH,KAAK0qH,KACP,OAAO1qH,KAGT,IAAI6wH,EAAK7wH,KAAKs0C,EAAE/B,UAOhB,OANAvyC,KAAK2Q,EAAI3Q,KAAK2Q,EAAEqhC,OAAO6+E,GACvB7wH,KAAK+R,EAAI/R,KAAK+R,EAAEigC,OAAO6+E,GACnB7wH,KAAKsB,IACPtB,KAAKsB,EAAItB,KAAKsB,EAAE0wC,OAAO6+E,IACzB7wH,KAAKs0C,EAAIt0C,KAAKo2D,MAAMjiB,IACpBn0C,KAAK0qH,MAAO,EACL1qH,MAGTsqH,EAAMtoH,UAAUmiC,IAAM,WACpB,OAAOnkC,KAAKo2D,MAAME,MAAMt2D,KAAK2Q,EAAE6hC,SAC7BxyC,KAAK+R,EACL/R,KAAKs0C,EACLt0C,KAAKsB,GAAKtB,KAAKsB,EAAEkxC,WAGrB83E,EAAMtoH,UAAUo2D,KAAO,WAErB,OADAp4D,KAAKyvH,YACEzvH,KAAK2Q,EAAE4gC,WAGhB+4E,EAAMtoH,UAAUq2D,KAAO,WAErB,OADAr4D,KAAKyvH,YACEzvH,KAAK+R,EAAEw/B,WAGhB+4E,EAAMtoH,UAAUivC,GAAK,SAAY9kC,GAC/B,OAAOnM,OAASmM,GACyB,IAAlCnM,KAAKo4D,OAAO53B,IAAIr0B,EAAMisD,SACY,IAAlCp4D,KAAKq4D,OAAO73B,IAAIr0B,EAAMksD,SAG/BiyD,EAAMtoH,UAAUmtH,OAAS,SAAgBx+G,GACvC,IAAIq7B,EAAKr7B,EAAEwgC,MAAMnxC,KAAKo2D,MAAMt2B,KAAKkS,OAAOhyC,KAAKs0C,GAC7C,GAAuB,IAAnBt0C,KAAK2Q,EAAE6vB,IAAIwL,GACb,OAAO,EAIT,IAFA,IAAIqjF,EAAK1+G,EAAE4wB,QACPjgC,EAAItB,KAAKo2D,MAAMH,KAAKjkB,OAAOhyC,KAAKs0C,KAC3B,CAEP,GADA+6E,EAAGpqF,KAAKjlC,KAAKo2D,MAAMv0D,GACfwtH,EAAG7uF,IAAIxgC,KAAKo2D,MAAMl0D,IAAM,EAC1B,OAAO,EAGT,GADA8pC,EAAG2F,QAAQrwC,GACY,IAAnBtB,KAAK2Q,EAAE6vB,IAAIwL,GACb,OAAO,IAKbs+E,EAAMtoH,UAAUi1D,IAAMqzD,EAAMtoH,UAAUytH,UACtCnF,EAAMtoH,UAAU+0D,SAAWuzD,EAAMtoH,UAAUyI,K,6BChb3C7K,EAAQsyE,KAAO,EAAQ,KACvBtyE,EAAQuyE,OAAS,EAAQ,KACzBvyE,EAAQwyE,OAAS,EAAQ,KACzBxyE,EAAQyyE,OAAS,EAAQ,KACzBzyE,EAAQ0yE,OAAS,EAAQ,M,6BCJzB,IAAIt1B,EAAQ,EAAQ,IAChBy+B,EAAS,EAAQ,IACjBgjB,EAAY,EAAQ,KAEpB3/C,EAAS9B,EAAM8B,OACfC,EAAQ/B,EAAM+B,MACdG,EAAUlC,EAAMkC,QAChBk/C,EAAOK,EAAUL,KACjB7uC,EAAYksB,EAAOlsB,UAEnBuhE,EAAS,CACX,WAAY,WACZ,WAAY,YAGd,SAASC,IACP,KAAM/wH,gBAAgB+wH,GACpB,OAAO,IAAIA,EAEbxhE,EAAUhvD,KAAKP,MACfA,KAAK0tC,EAAI,CACP,WAAY,WAAY,WACxB,UAAY,YACd1tC,KAAK2yF,EAAI,IAAI5vF,MAAM,IAGrBi6C,EAAMxd,SAASuxF,EAAMxhE,GACrB1vD,EAAOD,QAAUmxH,EAEjBA,EAAK/lE,UAAY,IACjB+lE,EAAKrhE,QAAU,IACfqhE,EAAKphE,aAAe,GACpBohE,EAAKnhE,UAAY,GAEjBmhE,EAAK/uH,UAAUugD,QAAU,SAAiBhjB,EAAK/rB,GAG7C,IAFA,IAAIm/E,EAAI3yF,KAAK2yF,EAEJvyF,EAAI,EAAGA,EAAI,GAAIA,IACtBuyF,EAAEvyF,GAAKm/B,EAAI/rB,EAAQpT,GAErB,KAAMA,EAAIuyF,EAAEhuF,OAAQvE,IAClBuyF,EAAEvyF,GAAK0+C,EAAO6zC,EAAEvyF,EAAI,GAAKuyF,EAAEvyF,EAAI,GAAKuyF,EAAEvyF,EAAI,IAAMuyF,EAAEvyF,EAAI,IAAK,GAE7D,IAAI0C,EAAI9C,KAAK0tC,EAAE,GACXhpC,EAAI1E,KAAK0tC,EAAE,GACXjtC,EAAIT,KAAK0tC,EAAE,GACXhtC,EAAIV,KAAK0tC,EAAE,GACXnpC,EAAIvE,KAAK0tC,EAAE,GAEf,IAAKttC,EAAI,EAAGA,EAAIuyF,EAAEhuF,OAAQvE,IAAK,CAC7B,IAAI+B,KAAO/B,EAAI,IACXkB,EAAI49C,EAAQJ,EAAOh8C,EAAG,GAAIs7F,EAAKj8F,EAAGuC,EAAGjE,EAAGC,GAAI6D,EAAGouF,EAAEvyF,GAAI0wH,EAAO3uH,IAChEoC,EAAI7D,EACJA,EAAID,EACJA,EAAIq+C,EAAOp6C,EAAG,IACdA,EAAI5B,EACJA,EAAIxB,EAGNtB,KAAK0tC,EAAE,GAAKqR,EAAM/+C,KAAK0tC,EAAE,GAAI5qC,GAC7B9C,KAAK0tC,EAAE,GAAKqR,EAAM/+C,KAAK0tC,EAAE,GAAIhpC,GAC7B1E,KAAK0tC,EAAE,GAAKqR,EAAM/+C,KAAK0tC,EAAE,GAAIjtC,GAC7BT,KAAK0tC,EAAE,GAAKqR,EAAM/+C,KAAK0tC,EAAE,GAAIhtC,GAC7BV,KAAK0tC,EAAE,GAAKqR,EAAM/+C,KAAK0tC,EAAE,GAAInpC,IAG/BwsH,EAAK/uH,UAAUguD,QAAU,SAAgBvR,GACvC,MAAY,QAARA,EACKzB,EAAM0B,QAAQ1+C,KAAK0tC,EAAG,OAEtBsP,EAAM4B,QAAQ5+C,KAAK0tC,EAAG,S,6BCtEjC,IAAIsP,EAAQ,EAAQ,IAChB2hD,EAAS,EAAQ,KAErB,SAASqyB,IACP,KAAMhxH,gBAAgBgxH,GACpB,OAAO,IAAIA,EAEbryB,EAAOp+F,KAAKP,MACZA,KAAK0tC,EAAI,CACP,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,YAExCsP,EAAMxd,SAASwxF,EAAQryB,GACvB9+F,EAAOD,QAAUoxH,EAEjBA,EAAOhmE,UAAY,IACnBgmE,EAAOthE,QAAU,IACjBshE,EAAOrhE,aAAe,IACtBqhE,EAAOphE,UAAY,GAEnBohE,EAAOhvH,UAAUguD,QAAU,SAAgBvR,GAEzC,MAAY,QAARA,EACKzB,EAAM0B,QAAQ1+C,KAAK0tC,EAAEr5B,MAAM,EAAG,GAAI,OAElC2oC,EAAM4B,QAAQ5+C,KAAK0tC,EAAEr5B,MAAM,EAAG,GAAI,S,6BCzB7C,IAAI2oC,EAAQ,EAAQ,IAEhB6hD,EAAS,EAAQ,KAErB,SAASoyB,IACP,KAAMjxH,gBAAgBixH,GACpB,OAAO,IAAIA,EAEbpyB,EAAOt+F,KAAKP,MACZA,KAAK0tC,EAAI,CACP,WAAY,WACZ,WAAY,UACZ,WAAY,UACZ,UAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,YAEhBsP,EAAMxd,SAASyxF,EAAQpyB,GACvBh/F,EAAOD,QAAUqxH,EAEjBA,EAAOjmE,UAAY,KACnBimE,EAAOvhE,QAAU,IACjBuhE,EAAOthE,aAAe,IACtBshE,EAAOrhE,UAAY,IAEnBqhE,EAAOjvH,UAAUguD,QAAU,SAAgBvR,GACzC,MAAY,QAARA,EACKzB,EAAM0B,QAAQ1+C,KAAK0tC,EAAEr5B,MAAM,EAAG,IAAK,OAEnC2oC,EAAM4B,QAAQ5+C,KAAK0tC,EAAEr5B,MAAM,EAAG,IAAK,S,6BC/B9C,IAAI2oC,EAAQ,EAAQ,IAChBy+B,EAAS,EAAQ,IAEjB38B,EAAS9B,EAAM8B,OACfC,EAAQ/B,EAAM+B,MACdC,EAAUhC,EAAMgC,QAChBC,EAAUjC,EAAMiC,QAChBsQ,EAAYksB,EAAOlsB,UAEvB,SAAShB,IACP,KAAMvuD,gBAAgBuuD,GACpB,OAAO,IAAIA,EAEbgB,EAAUhvD,KAAKP,MAEfA,KAAK0tC,EAAI,CAAE,WAAY,WAAY,WAAY,UAAY,YAC3D1tC,KAAK0/B,OAAS,SA0DhB,SAASx6B,EAAE+S,EAAGtH,EAAGoB,EAAGuiC,GAClB,OAAIr8B,GAAK,GACAtH,EAAIoB,EAAIuiC,EACRr8B,GAAK,GACJtH,EAAIoB,GAAQpB,EAAK2jC,EAClBr8B,GAAK,IACJtH,GAAMoB,GAAMuiC,EACbr8B,GAAK,GACJtH,EAAI2jC,EAAMviC,GAAMuiC,EAEjB3jC,GAAKoB,GAAMuiC,GAGtB,SAASo+C,EAAEz6E,GACT,OAAIA,GAAK,GACA,EACAA,GAAK,GACL,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WAEA,WAGX,SAASi5G,EAAGj5G,GACV,OAAIA,GAAK,GACA,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WAEA,EA5FX+kC,EAAMxd,SAAS+uB,EAAWgB,GAC1B3vD,EAAQg8E,UAAYrtB,EAEpBA,EAAUvD,UAAY,IACtBuD,EAAUmB,QAAU,IACpBnB,EAAUoB,aAAe,IACzBpB,EAAUqB,UAAY,GAEtBrB,EAAUvsD,UAAUugD,QAAU,SAAgBhjB,EAAK/rB,GAWjD,IAVA,IAAI+7B,EAAIvvC,KAAK0tC,EAAE,GACX8B,EAAIxvC,KAAK0tC,EAAE,GACX+B,EAAIzvC,KAAK0tC,EAAE,GACXgC,EAAI1vC,KAAK0tC,EAAE,GACX2oE,EAAIr2G,KAAK0tC,EAAE,GACXyjF,EAAK5hF,EACL6hF,EAAK5hF,EACLikD,EAAKhkD,EACL4hF,EAAK3hF,EACL4hF,EAAKjb,EACAp+F,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAI+gF,EAAIj6C,EACND,EACEG,EAAQ1P,EAAGrqC,EAAE+S,EAAGu3B,EAAGC,EAAGC,GAAInQ,EAAIr+B,EAAE+W,GAAKzE,GAAQk/E,EAAEz6E,IAC/C9V,EAAE8V,IACJo+F,GACF9mE,EAAI8mE,EACJA,EAAI3mE,EACJA,EAAIoP,EAAOrP,EAAG,IACdA,EAAID,EACJA,EAAIwpD,EACJA,EAAIj6C,EACFD,EACEG,EAAQkyE,EAAIjsH,EAAE,GAAK+S,EAAGm5G,EAAI39B,EAAI49B,GAAK9xF,EAAIgyF,EAAGt5G,GAAKzE,GAAQ09G,EAAGj5G,IAC1Du5G,EAAGv5G,IACLq5G,GACFH,EAAKG,EACLA,EAAKD,EACLA,EAAKvyE,EAAO20C,EAAI,IAChBA,EAAK29B,EACLA,EAAKp4B,EAEPA,EAAIh6C,EAAQh/C,KAAK0tC,EAAE,GAAI+B,EAAG4hF,GAC1BrxH,KAAK0tC,EAAE,GAAKsR,EAAQh/C,KAAK0tC,EAAE,GAAIgC,EAAG4hF,GAClCtxH,KAAK0tC,EAAE,GAAKsR,EAAQh/C,KAAK0tC,EAAE,GAAI2oE,EAAG8a,GAClCnxH,KAAK0tC,EAAE,GAAKsR,EAAQh/C,KAAK0tC,EAAE,GAAI6B,EAAG6hF,GAClCpxH,KAAK0tC,EAAE,GAAKsR,EAAQh/C,KAAK0tC,EAAE,GAAI8B,EAAGikD,GAClCzzF,KAAK0tC,EAAE,GAAKsrD,GAGdzqC,EAAUvsD,UAAUguD,QAAU,SAAgBvR,GAC5C,MAAY,QAARA,EACKzB,EAAM0B,QAAQ1+C,KAAK0tC,EAAG,UAEtBsP,EAAM4B,QAAQ5+C,KAAK0tC,EAAG,WA0CjC,IAAIxsC,EAAI,CACN,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EACnD,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAClD,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EACnD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAGhDqwH,EAAK,CACP,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAClD,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EACnD,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAClD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAClD,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,IAGhDpvH,EAAI,CACN,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EACrD,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GACpD,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EACrD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GACpD,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAGnDqvH,EAAK,CACP,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EACrD,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GACpD,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EACrD,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EACrD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,K,6BC9ItD,IAAIx0E,EAAQ,EAAQ,IAChB1d,EAAS,EAAQ,GAErB,SAASo4D,EAAK5wF,EAAMnF,EAAK88C,GACvB,KAAMz+C,gBAAgB03F,GACpB,OAAO,IAAIA,EAAK5wF,EAAMnF,EAAK88C,GAC7Bz+C,KAAK+qD,KAAOjkD,EACZ9G,KAAKgrD,UAAYlkD,EAAKkkD,UAAY,EAClChrD,KAAK0vD,QAAU5oD,EAAK4oD,QAAU,EAC9B1vD,KAAKyxH,MAAQ,KACbzxH,KAAK0xH,MAAQ,KAEb1xH,KAAK+/B,MAAMid,EAAMn/B,QAAQlc,EAAK88C,IAEhC5+C,EAAOD,QAAU83F,EAEjBA,EAAK11F,UAAU+9B,MAAQ,SAAcp+B,GAE/BA,EAAIgD,OAAS3E,KAAKgrD,YACpBrpD,GAAM,IAAI3B,KAAK+qD,MAAO5I,OAAOxgD,GAAK6pD,UACpClsB,EAAO39B,EAAIgD,QAAU3E,KAAKgrD,WAG1B,IAAK,IAAI5qD,EAAIuB,EAAIgD,OAAQvE,EAAIJ,KAAKgrD,UAAW5qD,IAC3CuB,EAAIqc,KAAK,GAEX,IAAK5d,EAAI,EAAGA,EAAIuB,EAAIgD,OAAQvE,IAC1BuB,EAAIvB,IAAM,GAIZ,IAHAJ,KAAKyxH,OAAQ,IAAIzxH,KAAK+qD,MAAO5I,OAAOxgD,GAG/BvB,EAAI,EAAGA,EAAIuB,EAAIgD,OAAQvE,IAC1BuB,EAAIvB,IAAM,IACZJ,KAAK0xH,OAAQ,IAAI1xH,KAAK+qD,MAAO5I,OAAOxgD,IAGtC+1F,EAAK11F,UAAUmgD,OAAS,SAAgB5iB,EAAKkf,GAE3C,OADAz+C,KAAKyxH,MAAMtvE,OAAO5iB,EAAKkf,GAChBz+C,MAGT03F,EAAK11F,UAAUwpD,OAAS,SAAgB/M,GAEtC,OADAz+C,KAAK0xH,MAAMvvE,OAAOniD,KAAKyxH,MAAMjmE,UACtBxrD,KAAK0xH,MAAMlmE,OAAO/M,K,cC7C3B5+C,EAAOD,QAAU,CACf62D,QAAS,CACPv9C,KAAM,EACN89C,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAIN1Z,IAAK,CACH/I,IAAK,EACLyiB,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,wE,6BCrwBR,IAAIv3B,EAAK,EAAQ,GACbkyF,EAAW,EAAQ,KACnB30E,EAAQ,EAAQ,IAChB89B,EAAS,EAAQ,IACjB1B,EAAO,EAAQ,IACf95C,EA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","file":"web-app.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"web-app\"] = factory();\n\telse\n\t\troot[\"web-app\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 144);\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define('kotlin', ['exports'], factory);\n }\n else if (typeof exports === 'object') {\n factory(module.exports);\n }\n else {\n root.kotlin = {};\n factory(root.kotlin);\n }\n}(this, function (Kotlin) {\n var _ = Kotlin;\n\n insertContent();\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\nKotlin.isBooleanArray = function (a) {\n return (Array.isArray(a) || a instanceof Int8Array) && a.$type$ === \"BooleanArray\"\n};\n\nKotlin.isByteArray = function (a) {\n return a instanceof Int8Array && a.$type$ !== \"BooleanArray\"\n};\n\nKotlin.isShortArray = function (a) {\n return a instanceof Int16Array\n};\n\nKotlin.isCharArray = function (a) {\n return a instanceof Uint16Array && a.$type$ === \"CharArray\"\n};\n\nKotlin.isIntArray = function (a) {\n return a instanceof Int32Array\n};\n\nKotlin.isFloatArray = function (a) {\n return a instanceof Float32Array\n};\n\nKotlin.isDoubleArray = function (a) {\n return a instanceof Float64Array\n};\n\nKotlin.isLongArray = function (a) {\n return Array.isArray(a) && a.$type$ === \"LongArray\"\n};\n\nKotlin.isArray = function (a) {\n return Array.isArray(a) && !a.$type$;\n};\n\nKotlin.isArrayish = function (a) {\n return Array.isArray(a) || ArrayBuffer.isView(a)\n};\n\nKotlin.arrayToString = function (a) {\n if (a === null) return \"null\"\n var toString = Kotlin.isCharArray(a) ? String.fromCharCode : Kotlin.toString;\n return \"[\" + Array.prototype.map.call(a, function(e) { return toString(e); }).join(\", \") + \"]\";\n};\n\nKotlin.arrayDeepToString = function (arr) {\n return Kotlin.kotlin.collections.contentDeepToStringImpl(arr);\n};\n\nKotlin.arrayEquals = function (a, b) {\n if (a === b) {\n return true;\n }\n if (a === null || b === null || !Kotlin.isArrayish(b) || a.length !== b.length) {\n return false;\n }\n\n for (var i = 0, n = a.length; i < n; i++) {\n if (!Kotlin.equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n};\n\nKotlin.arrayDeepEquals = function (a, b) {\n return Kotlin.kotlin.collections.contentDeepEqualsImpl(a, b);\n};\n\nKotlin.arrayHashCode = function (arr) {\n if (arr === null) return 0\n var result = 1;\n for (var i = 0, n = arr.length; i < n; i++) {\n result = ((31 * result | 0) + Kotlin.hashCode(arr[i])) | 0;\n }\n return result;\n};\n\nKotlin.arrayDeepHashCode = function (arr) {\n return Kotlin.kotlin.collections.contentDeepHashCodeImpl(arr);\n};\n\nKotlin.primitiveArraySort = function (array) {\n array.sort(Kotlin.doubleCompareTo)\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\nKotlin.getCallableRef = function(name, f) {\n f.callableName = name;\n return f;\n};\n\nKotlin.getPropertyCallableRef = function(name, paramCount, getter, setter) {\n getter.get = getter;\n getter.set = setter;\n getter.callableName = name;\n return getPropertyRefClass(getter, setter, propertyRefClassMetadataCache[paramCount]);\n};\n\nfunction getPropertyRefClass(obj, setter, cache) {\n obj.$metadata$ = getPropertyRefMetadata(typeof setter === \"function\" ? cache.mutable : cache.immutable);\n obj.constructor = obj;\n return obj;\n}\n\nvar propertyRefClassMetadataCache = [\n {\n mutable: { value: null, implementedInterface: function () {\n return Kotlin.kotlin.reflect.KMutableProperty0 }\n },\n immutable: { value: null, implementedInterface: function () {\n return Kotlin.kotlin.reflect.KProperty0 }\n }\n },\n {\n mutable: { value: null, implementedInterface: function () {\n return Kotlin.kotlin.reflect.KMutableProperty1 }\n },\n immutable: { value: null, implementedInterface: function () {\n return Kotlin.kotlin.reflect.KProperty1 }\n }\n }\n];\n\nfunction getPropertyRefMetadata(cache) {\n if (cache.value === null) {\n cache.value = {\n interfaces: [cache.implementedInterface()],\n baseClass: null,\n functions: {},\n properties: {},\n types: {},\n staticMembers: {}\n };\n }\n return cache.value;\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\nKotlin.compareTo = function (a, b) {\n var typeA = typeof a;\n if (typeA === \"number\") {\n if (typeof b === \"number\") {\n return Kotlin.doubleCompareTo(a, b);\n }\n return Kotlin.primitiveCompareTo(a, b);\n }\n if (typeA === \"string\" || typeA === \"boolean\") {\n return Kotlin.primitiveCompareTo(a, b);\n }\n return a.compareTo_11rb$(b);\n};\n\nKotlin.primitiveCompareTo = function (a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n};\n\nKotlin.doubleCompareTo = function (a, b) {\n if (a < b) return -1;\n if (a > b) return 1;\n\n if (a === b) {\n if (a !== 0) return 0;\n\n var ia = 1 / a;\n return ia === 1 / b ? 0 : (ia < 0 ? -1 : 1);\n }\n\n return a !== a ? (b !== b ? 0 : 1) : -1\n};\n\nKotlin.charInc = function (value) {\n return Kotlin.toChar(value+1);\n};\n\nKotlin.charDec = function (value) {\n return Kotlin.toChar(value-1);\n};\n\nKotlin.imul = Math.imul || imul;\n\nKotlin.imulEmulated = imul;\n\nfunction imul(a, b) {\n return ((a & 0xffff0000) * (b & 0xffff) + (a & 0xffff) * (b | 0)) | 0;\n}\n\n(function() {\n var buf = new ArrayBuffer(8);\n var bufFloat64 = new Float64Array(buf);\n var bufFloat32 = new Float32Array(buf);\n var bufInt32 = new Int32Array(buf);\n var lowIndex = 0;\n var highIndex = 1;\n\n bufFloat64[0] = -1; // bff00000_00000000\n if (bufInt32[lowIndex] !== 0) {\n lowIndex = 1;\n highIndex = 0;\n }\n\n Kotlin.doubleToBits = function(value) {\n return Kotlin.doubleToRawBits(isNaN(value) ? NaN : value);\n };\n\n Kotlin.doubleToRawBits = function(value) {\n bufFloat64[0] = value;\n return Kotlin.Long.fromBits(bufInt32[lowIndex], bufInt32[highIndex]);\n };\n\n Kotlin.doubleFromBits = function(value) {\n bufInt32[lowIndex] = value.low_;\n bufInt32[highIndex] = value.high_;\n return bufFloat64[0];\n };\n\n Kotlin.floatToBits = function(value) {\n return Kotlin.floatToRawBits(isNaN(value) ? NaN : value);\n };\n\n Kotlin.floatToRawBits = function(value) {\n bufFloat32[0] = value;\n return bufInt32[0];\n };\n\n Kotlin.floatFromBits = function(value) {\n bufInt32[0] = value;\n return bufFloat32[0];\n };\n\n // returns zero value for number with positive sign bit and non-zero value for number with negative sign bit.\n Kotlin.doubleSignBit = function(value) {\n bufFloat64[0] = value;\n return bufInt32[highIndex] & 0x80000000;\n };\n\n Kotlin.numberHashCode = function(obj) {\n if ((obj | 0) === obj) {\n return obj | 0;\n }\n else {\n bufFloat64[0] = obj;\n return (bufInt32[highIndex] * 31 | 0) + bufInt32[lowIndex] | 0;\n }\n }\n})();\n\nKotlin.ensureNotNull = function(x) {\n return x != null ? x : Kotlin.throwNPE();\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\nif (typeof String.prototype.startsWith === \"undefined\") {\n Object.defineProperty(String.prototype, \"startsWith\", {\n value: function (searchString, position) {\n position = position || 0;\n return this.lastIndexOf(searchString, position) === position;\n }\n });\n}\nif (typeof String.prototype.endsWith === \"undefined\") {\n Object.defineProperty(String.prototype, \"endsWith\", {\n value: function (searchString, position) {\n var subjectString = this.toString();\n if (position === undefined || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n }\n });\n}\n// ES6 Math polyfills\nif (typeof Math.sign === \"undefined\") {\n Math.sign = function(x) {\n x = +x; // convert to a number\n if (x === 0 || isNaN(x)) {\n return Number(x);\n }\n return x > 0 ? 1 : -1;\n };\n}\nif (typeof Math.trunc === \"undefined\") {\n Math.trunc = function(x) {\n if (isNaN(x)) {\n return NaN;\n }\n if (x > 0) {\n return Math.floor(x);\n }\n return Math.ceil(x);\n };\n}\n\n(function() {\n var epsilon = 2.220446049250313E-16;\n var taylor_2_bound = Math.sqrt(epsilon);\n var taylor_n_bound = Math.sqrt(taylor_2_bound);\n var upper_taylor_2_bound = 1/taylor_2_bound;\n var upper_taylor_n_bound = 1/taylor_n_bound;\n\n if (typeof Math.sinh === \"undefined\") {\n Math.sinh = function(x) {\n if (Math.abs(x) < taylor_n_bound) {\n var result = x;\n if (Math.abs(x) > taylor_2_bound) {\n result += (x * x * x) / 6;\n }\n return result;\n } else {\n var y = Math.exp(x);\n var y1 = 1 / y;\n if (!isFinite(y)) return Math.exp(x - Math.LN2);\n if (!isFinite(y1)) return -Math.exp(-x - Math.LN2);\n return (y - y1) / 2;\n }\n };\n }\n if (typeof Math.cosh === \"undefined\") {\n Math.cosh = function(x) {\n var y = Math.exp(x);\n var y1 = 1 / y;\n if (!isFinite(y) || !isFinite(y1)) return Math.exp(Math.abs(x) - Math.LN2);\n return (y + y1) / 2;\n };\n }\n\n if (typeof Math.tanh === \"undefined\") {\n Math.tanh = function(x){\n if (Math.abs(x) < taylor_n_bound) {\n var result = x;\n if (Math.abs(x) > taylor_2_bound) {\n result -= (x * x * x) / 3;\n }\n return result;\n }\n else {\n var a = Math.exp(+x), b = Math.exp(-x);\n return a === Infinity ? 1 : b === Infinity ? -1 : (a - b) / (a + b);\n }\n };\n }\n\n // Inverse hyperbolic function implementations derived from boost special math functions,\n // Copyright Eric Ford & Hubert Holin 2001.\n\n if (typeof Math.asinh === \"undefined\") {\n var asinh = function(x) {\n if (x >= +taylor_n_bound)\n {\n if (x > upper_taylor_n_bound)\n {\n if (x > upper_taylor_2_bound)\n {\n // approximation by laurent series in 1/x at 0+ order from -1 to 0\n return Math.log(x) + Math.LN2;\n }\n else\n {\n // approximation by laurent series in 1/x at 0+ order from -1 to 1\n return Math.log(x * 2 + (1 / (x * 2)));\n }\n }\n else\n {\n return Math.log(x + Math.sqrt(x * x + 1));\n }\n }\n else if (x <= -taylor_n_bound)\n {\n return -asinh(-x);\n }\n else\n {\n // approximation by taylor series in x at 0 up to order 2\n var result = x;\n if (Math.abs(x) >= taylor_2_bound)\n {\n var x3 = x * x * x;\n // approximation by taylor series in x at 0 up to order 4\n result -= x3 / 6;\n }\n return result;\n }\n };\n Math.asinh = asinh;\n }\n if (typeof Math.acosh === \"undefined\") {\n Math.acosh = function(x) {\n if (x < 1)\n {\n return NaN;\n }\n else if (x - 1 >= taylor_n_bound)\n {\n if (x > upper_taylor_2_bound)\n {\n // approximation by laurent series in 1/x at 0+ order from -1 to 0\n return Math.log(x) + Math.LN2;\n }\n else\n {\n return Math.log(x + Math.sqrt(x * x - 1));\n }\n }\n else\n {\n var y = Math.sqrt(x - 1);\n // approximation by taylor series in y at 0 up to order 2\n var result = y;\n if (y >= taylor_2_bound)\n {\n var y3 = y * y * y;\n // approximation by taylor series in y at 0 up to order 4\n result -= y3 / 12;\n }\n\n return Math.sqrt(2) * result;\n }\n };\n }\n if (typeof Math.atanh === \"undefined\") {\n Math.atanh = function(x) {\n if (Math.abs(x) < taylor_n_bound) {\n var result = x;\n if (Math.abs(x) > taylor_2_bound) {\n result += (x * x * x) / 3;\n }\n return result;\n }\n return Math.log((1 + x) / (1 - x)) / 2;\n };\n }\n if (typeof Math.log1p === \"undefined\") {\n Math.log1p = function(x) {\n if (Math.abs(x) < taylor_n_bound) {\n var x2 = x * x;\n var x3 = x2 * x;\n var x4 = x3 * x;\n // approximation by taylor series in x at 0 up to order 4\n return (-x4 / 4 + x3 / 3 - x2 / 2 + x);\n }\n return Math.log(x + 1);\n };\n }\n if (typeof Math.expm1 === \"undefined\") {\n Math.expm1 = function(x) {\n if (Math.abs(x) < taylor_n_bound) {\n var x2 = x * x;\n var x3 = x2 * x;\n var x4 = x3 * x;\n // approximation by taylor series in x at 0 up to order 4\n return (x4 / 24 + x3 / 6 + x2 / 2 + x);\n }\n return Math.exp(x) - 1;\n };\n }\n})();\nif (typeof Math.hypot === \"undefined\") {\n Math.hypot = function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n };\n}\nif (typeof Math.log10 === \"undefined\") {\n Math.log10 = function(x) {\n return Math.log(x) * Math.LOG10E;\n };\n}\nif (typeof Math.log2 === \"undefined\") {\n Math.log2 = function(x) {\n return Math.log(x) * Math.LOG2E;\n };\n}\nif (typeof Math.clz32 === \"undefined\") {\n Math.clz32 = (function(log, LN2) {\n return function(x) {\n var asUint = x >>> 0;\n if (asUint === 0) {\n return 32;\n }\n return 31 - (log(asUint) / LN2 | 0) | 0; // the \"| 0\" acts like math.floor\n };\n })(Math.log, Math.LN2);\n}\n\n// For HtmlUnit and PhantomJs\nif (typeof ArrayBuffer.isView === \"undefined\") {\n ArrayBuffer.isView = function(a) {\n return a != null && a.__proto__ != null && a.__proto__.__proto__ === Int8Array.prototype.__proto__;\n };\n}\n\nif (typeof Array.prototype.fill === \"undefined\") {\n // Polyfill from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill#Polyfill\n Object.defineProperty(Array.prototype, 'fill', {\n value: function (value) {\n\n // Steps 1-2.\n if (this == null) {\n throw new TypeError('this is null or not defined');\n }\n\n var O = Object(this);\n\n // Steps 3-5.\n var len = O.length >>> 0;\n\n // Steps 6-7.\n var start = arguments[1];\n var relativeStart = start >> 0;\n\n // Step 8.\n var k = relativeStart < 0 ?\n Math.max(len + relativeStart, 0) :\n Math.min(relativeStart, len);\n\n // Steps 9-10.\n var end = arguments[2];\n var relativeEnd = end === undefined ?\n len : end >> 0;\n\n // Step 11.\n var finalValue = relativeEnd < 0 ?\n Math.max(len + relativeEnd, 0) :\n Math.min(relativeEnd, len);\n\n // Step 12.\n while (k < finalValue) {\n O[k] = value;\n k++;\n }\n\n // Step 13.\n return O;\n }\n });\n}\n\n(function() {\n function normalizeOffset(offset, length) {\n if (offset < 0) return Math.max(0, offset + length);\n return Math.min(offset, length);\n }\n function typedArraySlice(begin, end) {\n if (typeof end === \"undefined\") {\n end = this.length;\n }\n begin = normalizeOffset(begin || 0, this.length);\n end = Math.max(begin, normalizeOffset(end, this.length));\n return new this.constructor(this.subarray(begin, end));\n }\n\n var arrays = [Int8Array, Int16Array, Uint16Array, Int32Array, Float32Array, Float64Array];\n for (var i = 0; i < arrays.length; ++i) {\n var TypedArray = arrays[i];\n if (typeof TypedArray.prototype.fill === \"undefined\") {\n Object.defineProperty(TypedArray.prototype, 'fill', {\n value: Array.prototype.fill\n });\n }\n if (typeof TypedArray.prototype.slice === \"undefined\") {\n Object.defineProperty(TypedArray.prototype, 'slice', {\n value: typedArraySlice\n });\n }\n }\n\n // Patch apply to work with TypedArrays if needed.\n try {\n (function() {}).apply(null, new Int32Array(0))\n } catch (e) {\n var apply = Function.prototype.apply;\n Object.defineProperty(Function.prototype, 'apply', {\n value: function(self, array) {\n return apply.call(this, self, [].slice.call(array));\n }\n });\n }\n\n\n // Patch map to work with TypedArrays if needed.\n for (var i = 0; i < arrays.length; ++i) {\n var TypedArray = arrays[i];\n if (typeof TypedArray.prototype.map === \"undefined\") {\n Object.defineProperty(TypedArray.prototype, 'map', {\n value: function(callback, self) {\n return [].slice.call(this).map(callback, self);\n }\n });\n }\n }\n\n // Patch sort to work with TypedArrays if needed.\n // TODO: consider to remove following function and replace it with `Kotlin.doubleCompareTo` (see misc.js)\n var totalOrderComparator = function (a, b) {\n if (a < b) return -1;\n if (a > b) return 1;\n\n if (a === b) {\n if (a !== 0) return 0;\n\n var ia = 1 / a;\n return ia === 1 / b ? 0 : (ia < 0 ? -1 : 1);\n }\n\n return a !== a ? (b !== b ? 0 : 1) : -1\n };\n\n for (var i = 0; i < arrays.length; ++i) {\n var TypedArray = arrays[i];\n if (typeof TypedArray.prototype.sort === \"undefined\") {\n Object.defineProperty(TypedArray.prototype, 'sort', {\n value: function(compareFunction) {\n return Array.prototype.sort.call(this, compareFunction || totalOrderComparator);\n }\n });\n }\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\nKotlin.equals = function (obj1, obj2) {\n if (obj1 == null) {\n return obj2 == null;\n }\n\n if (obj2 == null) {\n return false;\n }\n\n if (obj1 !== obj1) {\n return obj2 !== obj2;\n }\n\n if (typeof obj1 === \"object\" && typeof obj1.equals === \"function\") {\n return obj1.equals(obj2);\n }\n\n if (typeof obj1 === \"number\" && typeof obj2 === \"number\") {\n return obj1 === obj2 && (obj1 !== 0 || 1 / obj1 === 1 / obj2)\n }\n\n return obj1 === obj2;\n};\n\nKotlin.hashCode = function (obj) {\n if (obj == null) {\n return 0;\n }\n var objType = typeof obj;\n if (\"object\" === objType) {\n return \"function\" === typeof obj.hashCode ? obj.hashCode() : getObjectHashCode(obj);\n }\n if (\"function\" === objType) {\n return getObjectHashCode(obj);\n }\n if (\"number\" === objType) {\n return Kotlin.numberHashCode(obj);\n }\n if (\"boolean\" === objType) {\n return Number(obj)\n }\n\n var str = String(obj);\n return getStringHashCode(str);\n};\n\n\nKotlin.toString = function (o) {\n if (o == null) {\n return \"null\";\n }\n else if (Kotlin.isArrayish(o)) {\n return \"[...]\";\n }\n else {\n return o.toString();\n }\n};\n\n/** @const */\nvar POW_2_32 = 4294967296;\n// TODO: consider switching to Symbol type once we are on ES6.\n/** @const */\nvar OBJECT_HASH_CODE_PROPERTY_NAME = \"kotlinHashCodeValue$\";\n\nfunction getObjectHashCode(obj) {\n if (!(OBJECT_HASH_CODE_PROPERTY_NAME in obj)) {\n var hash = (Math.random() * POW_2_32) | 0; // Make 32-bit singed integer.\n Object.defineProperty(obj, OBJECT_HASH_CODE_PROPERTY_NAME, { value: hash, enumerable: false });\n }\n return obj[OBJECT_HASH_CODE_PROPERTY_NAME];\n}\n\nfunction getStringHashCode(str) {\n var hash = 0;\n for (var i = 0; i < str.length; i++) {\n var code = str.charCodeAt(i);\n hash = (hash * 31 + code) | 0; // Keep it 32-bit.\n }\n return hash;\n}\n\nKotlin.identityHashCode = getObjectHashCode;\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/**\n * @param {string} id\n * @param {Object} declaration\n */\nKotlin.defineModule = function (id, declaration) {\n};\n\nKotlin.defineInlineFunction = function(tag, fun) {\n return fun;\n};\n\nKotlin.wrapFunction = function(fun) {\n var f = function() {\n f = fun();\n return f.apply(this, arguments);\n };\n return function() {\n return f.apply(this, arguments);\n };\n};\n\nKotlin.isTypeOf = function(type) {\n return function (object) {\n return typeof object === type;\n }\n};\n\nKotlin.isInstanceOf = function (klass) {\n return function (object) {\n return Kotlin.isType(object, klass);\n }\n};\n\nKotlin.orNull = function (fn) {\n return function (object) {\n return object == null || fn(object);\n }\n};\n\nKotlin.andPredicate = function (a, b) {\n return function (object) {\n return a(object) && b(object);\n }\n};\n\nKotlin.kotlinModuleMetadata = function (abiVersion, moduleName, data) {\n};\n\nKotlin.suspendCall = function(value) {\n return value;\n};\n\nKotlin.coroutineResult = function(qualifier) {\n throwMarkerError();\n};\n\nKotlin.coroutineController = function(qualifier) {\n throwMarkerError();\n};\n\nKotlin.coroutineReceiver = function(qualifier) {\n throwMarkerError();\n};\n\nKotlin.setCoroutineResult = function(value, qualifier) {\n throwMarkerError();\n};\n\nKotlin.getReifiedTypeParameterKType = function(typeParameter) {\n throwMarkerError();\n};\n\nfunction throwMarkerError() {\n throw new Error(\n \"This marker function should never been called. \" +\n \"Looks like compiler did not eliminate it properly. \" +\n \"Please, report an issue if you caught this exception.\");\n}\n\nKotlin.getFunctionById = function(id, defaultValue) {\n return function() {\n return defaultValue;\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\nKotlin.toShort = function (a) {\n return (a & 0xFFFF) << 16 >> 16;\n};\n\nKotlin.toByte = function (a) {\n return (a & 0xFF) << 24 >> 24;\n};\n\nKotlin.toChar = function (a) {\n return a & 0xFFFF;\n};\n\nKotlin.numberToLong = function (a) {\n return a instanceof Kotlin.Long ? a : Kotlin.Long.fromNumber(a);\n};\n\nKotlin.numberToInt = function (a) {\n return a instanceof Kotlin.Long ? a.toInt() : Kotlin.doubleToInt(a);\n};\n\nKotlin.numberToShort = function (a) {\n return Kotlin.toShort(Kotlin.numberToInt(a));\n};\n\nKotlin.numberToByte = function (a) {\n return Kotlin.toByte(Kotlin.numberToInt(a));\n};\n\nKotlin.numberToDouble = function (a) {\n return +a;\n};\n\nKotlin.numberToChar = function (a) {\n return Kotlin.toChar(Kotlin.numberToInt(a));\n};\n\nKotlin.doubleToInt = function(a) {\n if (a > 2147483647) return 2147483647;\n if (a < -2147483648) return -2147483648;\n return a | 0;\n};\n\nKotlin.toBoxedChar = function (a) {\n if (a == null) return a;\n if (a instanceof Kotlin.BoxedChar) return a;\n return new Kotlin.BoxedChar(a);\n};\n\nKotlin.unboxChar = function(a) {\n if (a == null) return a;\n return Kotlin.toChar(a);\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// Copyright 2009 The Closure Library Authors. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS-IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\n/**\n * Constructs a 64-bit two's-complement integer, given its low and high 32-bit\n * values as *signed* integers. See the from* functions below for more\n * convenient ways of constructing Longs.\n *\n * The internal representation of a long is the two given signed, 32-bit values.\n * We use 32-bit pieces because these are the size of integers on which\n * Javascript performs bit-operations. For operations like addition and\n * multiplication, we split each number into 16-bit pieces, which can easily be\n * multiplied within Javascript's floating-point representation without overflow\n * or change in sign.\n *\n * In the algorithms below, we frequently reduce the negative case to the\n * positive case by negating the input(s) and then post-processing the result.\n * Note that we must ALWAYS check specially whether those values are MIN_VALUE\n * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n * a positive number, it overflows back into a negative). Not handling this\n * case would often result in infinite recursion.\n *\n * @param {number} low The low (signed) 32 bits of the long.\n * @param {number} high The high (signed) 32 bits of the long.\n * @constructor\n * @final\n */\nKotlin.Long = function(low, high) {\n /**\n * @type {number}\n * @private\n */\n this.low_ = low | 0; // force into 32 signed bits.\n\n /**\n * @type {number}\n * @private\n */\n this.high_ = high | 0; // force into 32 signed bits.\n};\n\nKotlin.Long.$metadata$ = {\n kind: \"class\",\n simpleName: \"Long\",\n interfaces:[]\n};\n\n\n// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the\n// from* methods on which they depend.\n\n\n/**\n * A cache of the Long representations of small integer values.\n * @type {!Object}\n * @private\n */\nKotlin.Long.IntCache_ = {};\n\n\n/**\n * Returns a Long representing the given (32-bit) integer value.\n * @param {number} value The 32-bit integer in question.\n * @return {!Kotlin.Long} The corresponding Long value.\n */\nKotlin.Long.fromInt = function(value) {\n if (-128 <= value && value < 128) {\n var cachedObj = Kotlin.Long.IntCache_[value];\n if (cachedObj) {\n return cachedObj;\n }\n }\n\n var obj = new Kotlin.Long(value | 0, value < 0 ? -1 : 0);\n if (-128 <= value && value < 128) {\n Kotlin.Long.IntCache_[value] = obj;\n }\n return obj;\n};\n\n\n/**\n * Converts this number value to `Long`.\n * The fractional part, if any, is rounded down towards zero.\n * Returns zero if this `Double` value is `NaN`, `Long.MIN_VALUE` if it's less than `Long.MIN_VALUE`,\n * `Long.MAX_VALUE` if it's bigger than `Long.MAX_VALUE`.\n * @param {number} value The number in question.\n * @return {!Kotlin.Long} The corresponding Long value.\n */\nKotlin.Long.fromNumber = function(value) {\n if (isNaN(value)) {\n return Kotlin.Long.ZERO;\n } else if (value <= -Kotlin.Long.TWO_PWR_63_DBL_) {\n return Kotlin.Long.MIN_VALUE;\n } else if (value + 1 >= Kotlin.Long.TWO_PWR_63_DBL_) {\n return Kotlin.Long.MAX_VALUE;\n } else if (value < 0) {\n return Kotlin.Long.fromNumber(-value).negate();\n } else {\n return new Kotlin.Long(\n (value % Kotlin.Long.TWO_PWR_32_DBL_) | 0,\n (value / Kotlin.Long.TWO_PWR_32_DBL_) | 0);\n }\n};\n\n\n/**\n * Returns a Long representing the 64-bit integer that comes by concatenating\n * the given high and low bits. Each is assumed to use 32 bits.\n * @param {number} lowBits The low 32-bits.\n * @param {number} highBits The high 32-bits.\n * @return {!Kotlin.Long} The corresponding Long value.\n */\nKotlin.Long.fromBits = function(lowBits, highBits) {\n return new Kotlin.Long(lowBits, highBits);\n};\n\n\n/**\n * Returns a Long representation of the given string, written using the given\n * radix.\n * @param {string} str The textual representation of the Long.\n * @param {number=} opt_radix The radix in which the text is written.\n * @return {!Kotlin.Long} The corresponding Long value.\n */\nKotlin.Long.fromString = function(str, opt_radix) {\n if (str.length == 0) {\n throw Error('number format error: empty string');\n }\n\n var radix = opt_radix || 10;\n if (radix < 2 || 36 < radix) {\n throw Error('radix out of range: ' + radix);\n }\n\n if (str.charAt(0) == '-') {\n return Kotlin.Long.fromString(str.substring(1), radix).negate();\n } else if (str.indexOf('-') >= 0) {\n throw Error('number format error: interior \"-\" character: ' + str);\n }\n\n // Do several (8) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 8));\n\n var result = Kotlin.Long.ZERO;\n for (var i = 0; i < str.length; i += 8) {\n var size = Math.min(8, str.length - i);\n var value = parseInt(str.substring(i, i + size), radix);\n if (size < 8) {\n var power = Kotlin.Long.fromNumber(Math.pow(radix, size));\n result = result.multiply(power).add(Kotlin.Long.fromNumber(value));\n } else {\n result = result.multiply(radixToPower);\n result = result.add(Kotlin.Long.fromNumber(value));\n }\n }\n return result;\n};\n\n\n// NOTE: the compiler should inline these constant values below and then remove\n// these variables, so there should be no runtime penalty for these.\n\n\n/**\n * Number used repeated below in calculations. This must appear before the\n * first call to any from* function below.\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_16_DBL_ = 1 << 16;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_24_DBL_ = 1 << 24;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_32_DBL_ =\n Kotlin.Long.TWO_PWR_16_DBL_ * Kotlin.Long.TWO_PWR_16_DBL_;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_31_DBL_ =\n Kotlin.Long.TWO_PWR_32_DBL_ / 2;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_48_DBL_ =\n Kotlin.Long.TWO_PWR_32_DBL_ * Kotlin.Long.TWO_PWR_16_DBL_;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_64_DBL_ =\n Kotlin.Long.TWO_PWR_32_DBL_ * Kotlin.Long.TWO_PWR_32_DBL_;\n\n\n/**\n * @type {number}\n * @private\n */\nKotlin.Long.TWO_PWR_63_DBL_ =\n Kotlin.Long.TWO_PWR_64_DBL_ / 2;\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.ZERO = Kotlin.Long.fromInt(0);\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.ONE = Kotlin.Long.fromInt(1);\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.NEG_ONE = Kotlin.Long.fromInt(-1);\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.MAX_VALUE =\n Kotlin.Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0);\n\n\n/** @type {!Kotlin.Long} */\nKotlin.Long.MIN_VALUE = Kotlin.Long.fromBits(0, 0x80000000 | 0);\n\n\n/**\n * @type {!Kotlin.Long}\n * @private\n */\nKotlin.Long.TWO_PWR_24_ = Kotlin.Long.fromInt(1 << 24);\n\n\n/** @return {number} The value, assuming it is a 32-bit integer. */\nKotlin.Long.prototype.toInt = function() {\n return this.low_;\n};\n\n\n/** @return {number} The closest floating-point representation to this value. */\nKotlin.Long.prototype.toNumber = function() {\n return this.high_ * Kotlin.Long.TWO_PWR_32_DBL_ +\n this.getLowBitsUnsigned();\n};\n\n/** @return {number} The 32-bit hashCode of this value. */\nKotlin.Long.prototype.hashCode = function() {\n return this.high_ ^ this.low_;\n};\n\n/**\n * @param {number=} opt_radix The radix in which the text should be written.\n * @return {string} The textual representation of this value.\n * @override\n */\nKotlin.Long.prototype.toString = function(opt_radix) {\n var radix = opt_radix || 10;\n if (radix < 2 || 36 < radix) {\n throw Error('radix out of range: ' + radix);\n }\n\n if (this.isZero()) {\n return '0';\n }\n\n if (this.isNegative()) {\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n // We need to change the Long value before it can be negated, so we remove\n // the bottom-most digit in this base and then recurse to do the rest.\n var radixLong = Kotlin.Long.fromNumber(radix);\n var div = this.div(radixLong);\n var rem = div.multiply(radixLong).subtract(this);\n return div.toString(radix) + rem.toInt().toString(radix);\n } else {\n return '-' + this.negate().toString(radix);\n }\n }\n\n // Do several (6) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 6));\n\n var rem = this;\n var result = '';\n while (true) {\n var remDiv = rem.div(radixToPower);\n var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt();\n var digits = intval.toString(radix);\n\n rem = remDiv;\n if (rem.isZero()) {\n return digits + result;\n } else {\n while (digits.length < 6) {\n digits = '0' + digits;\n }\n result = '' + digits + result;\n }\n }\n};\n\n\n/** @return {number} The high 32-bits as a signed value. */\nKotlin.Long.prototype.getHighBits = function() {\n return this.high_;\n};\n\n\n/** @return {number} The low 32-bits as a signed value. */\nKotlin.Long.prototype.getLowBits = function() {\n return this.low_;\n};\n\n\n/** @return {number} The low 32-bits as an unsigned value. */\nKotlin.Long.prototype.getLowBitsUnsigned = function() {\n return (this.low_ >= 0) ?\n this.low_ : Kotlin.Long.TWO_PWR_32_DBL_ + this.low_;\n};\n\n\n/**\n * @return {number} Returns the number of bits needed to represent the absolute\n * value of this Long.\n */\nKotlin.Long.prototype.getNumBitsAbs = function() {\n if (this.isNegative()) {\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return 64;\n } else {\n return this.negate().getNumBitsAbs();\n }\n } else {\n var val = this.high_ != 0 ? this.high_ : this.low_;\n for (var bit = 31; bit > 0; bit--) {\n if ((val & (1 << bit)) != 0) {\n break;\n }\n }\n return this.high_ != 0 ? bit + 33 : bit + 1;\n }\n};\n\n\n/** @return {boolean} Whether this value is zero. */\nKotlin.Long.prototype.isZero = function() {\n return this.high_ == 0 && this.low_ == 0;\n};\n\n\n/** @return {boolean} Whether this value is negative. */\nKotlin.Long.prototype.isNegative = function() {\n return this.high_ < 0;\n};\n\n\n/** @return {boolean} Whether this value is odd. */\nKotlin.Long.prototype.isOdd = function() {\n return (this.low_ & 1) == 1;\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long equals the other.\n */\nKotlin.Long.prototype.equalsLong = function(other) {\n return (this.high_ == other.high_) && (this.low_ == other.low_);\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long does not equal the other.\n */\nKotlin.Long.prototype.notEqualsLong = function(other) {\n return (this.high_ != other.high_) || (this.low_ != other.low_);\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long is less than the other.\n */\nKotlin.Long.prototype.lessThan = function(other) {\n return this.compare(other) < 0;\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long is less than or equal to the other.\n */\nKotlin.Long.prototype.lessThanOrEqual = function(other) {\n return this.compare(other) <= 0;\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long is greater than the other.\n */\nKotlin.Long.prototype.greaterThan = function(other) {\n return this.compare(other) > 0;\n};\n\n\n/**\n * @param {Kotlin.Long} other Long to compare against.\n * @return {boolean} Whether this Long is greater than or equal to the other.\n */\nKotlin.Long.prototype.greaterThanOrEqual = function(other) {\n return this.compare(other) >= 0;\n};\n\n\n/**\n * Compares this Long with the given one.\n * @param {Kotlin.Long} other Long to compare against.\n * @return {number} 0 if they are the same, 1 if the this is greater, and -1\n * if the given one is greater.\n */\nKotlin.Long.prototype.compare = function(other) {\n if (this.equalsLong(other)) {\n return 0;\n }\n\n var thisNeg = this.isNegative();\n var otherNeg = other.isNegative();\n if (thisNeg && !otherNeg) {\n return -1;\n }\n if (!thisNeg && otherNeg) {\n return 1;\n }\n\n // at this point, the signs are the same, so subtraction will not overflow\n if (this.subtract(other).isNegative()) {\n return -1;\n } else {\n return 1;\n }\n};\n\n\n/** @return {!Kotlin.Long} The negation of this value. */\nKotlin.Long.prototype.negate = function() {\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return Kotlin.Long.MIN_VALUE;\n } else {\n return this.not().add(Kotlin.Long.ONE);\n }\n};\n\n\n/**\n * Returns the sum of this and the given Long.\n * @param {Kotlin.Long} other Long to add to this one.\n * @return {!Kotlin.Long} The sum of this and the given Long.\n */\nKotlin.Long.prototype.add = function(other) {\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n\n var a48 = this.high_ >>> 16;\n var a32 = this.high_ & 0xFFFF;\n var a16 = this.low_ >>> 16;\n var a00 = this.low_ & 0xFFFF;\n\n var b48 = other.high_ >>> 16;\n var b32 = other.high_ & 0xFFFF;\n var b16 = other.low_ >>> 16;\n var b00 = other.low_ & 0xFFFF;\n\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n c00 += a00 + b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 + b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 + b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 + b48;\n c48 &= 0xFFFF;\n return Kotlin.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);\n};\n\n\n/**\n * Returns the difference of this and the given Long.\n * @param {Kotlin.Long} other Long to subtract from this.\n * @return {!Kotlin.Long} The difference of this and the given Long.\n */\nKotlin.Long.prototype.subtract = function(other) {\n return this.add(other.negate());\n};\n\n\n/**\n * Returns the product of this and the given long.\n * @param {Kotlin.Long} other Long to multiply with this.\n * @return {!Kotlin.Long} The product of this and the other.\n */\nKotlin.Long.prototype.multiply = function(other) {\n if (this.isZero()) {\n return Kotlin.Long.ZERO;\n } else if (other.isZero()) {\n return Kotlin.Long.ZERO;\n }\n\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return other.isOdd() ? Kotlin.Long.MIN_VALUE : Kotlin.Long.ZERO;\n } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return this.isOdd() ? Kotlin.Long.MIN_VALUE : Kotlin.Long.ZERO;\n }\n\n if (this.isNegative()) {\n if (other.isNegative()) {\n return this.negate().multiply(other.negate());\n } else {\n return this.negate().multiply(other).negate();\n }\n } else if (other.isNegative()) {\n return this.multiply(other.negate()).negate();\n }\n\n // If both longs are small, use float multiplication\n if (this.lessThan(Kotlin.Long.TWO_PWR_24_) &&\n other.lessThan(Kotlin.Long.TWO_PWR_24_)) {\n return Kotlin.Long.fromNumber(this.toNumber() * other.toNumber());\n }\n\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n // We can skip products that would overflow.\n\n var a48 = this.high_ >>> 16;\n var a32 = this.high_ & 0xFFFF;\n var a16 = this.low_ >>> 16;\n var a00 = this.low_ & 0xFFFF;\n\n var b48 = other.high_ >>> 16;\n var b32 = other.high_ & 0xFFFF;\n var b16 = other.low_ >>> 16;\n var b00 = other.low_ & 0xFFFF;\n\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n c00 += a00 * b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 * b00;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c16 += a00 * b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 * b00;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a16 * b16;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a00 * b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n c48 &= 0xFFFF;\n return Kotlin.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);\n};\n\n\n/**\n * Returns this Long divided by the given one.\n * @param {Kotlin.Long} other Long by which to divide.\n * @return {!Kotlin.Long} This Long divided by the given one.\n */\nKotlin.Long.prototype.div = function(other) {\n if (other.isZero()) {\n throw Error('division by zero');\n } else if (this.isZero()) {\n return Kotlin.Long.ZERO;\n }\n\n if (this.equalsLong(Kotlin.Long.MIN_VALUE)) {\n if (other.equalsLong(Kotlin.Long.ONE) ||\n other.equalsLong(Kotlin.Long.NEG_ONE)) {\n return Kotlin.Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\n } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return Kotlin.Long.ONE;\n } else {\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n var halfThis = this.shiftRight(1);\n var approx = halfThis.div(other).shiftLeft(1);\n if (approx.equalsLong(Kotlin.Long.ZERO)) {\n return other.isNegative() ? Kotlin.Long.ONE : Kotlin.Long.NEG_ONE;\n } else {\n var rem = this.subtract(other.multiply(approx));\n var result = approx.add(rem.div(other));\n return result;\n }\n }\n } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) {\n return Kotlin.Long.ZERO;\n }\n\n if (this.isNegative()) {\n if (other.isNegative()) {\n return this.negate().div(other.negate());\n } else {\n return this.negate().div(other).negate();\n }\n } else if (other.isNegative()) {\n return this.div(other.negate()).negate();\n }\n\n // Repeat the following until the remainder is less than other: find a\n // floating-point that approximates remainder / other *from below*, add this\n // into the result, and subtract it from the remainder. It is critical that\n // the approximate value is less than or equal to the real value so that the\n // remainder never becomes negative.\n var res = Kotlin.Long.ZERO;\n var rem = this;\n while (rem.greaterThanOrEqual(other)) {\n // Approximate the result of division. This may be a little greater or\n // smaller than the actual value.\n var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber()));\n\n // We will tweak the approximate result by changing it in the 48-th digit or\n // the smallest non-fractional digit, whichever is larger.\n var log2 = Math.ceil(Math.log(approx) / Math.LN2);\n var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48);\n\n // Decrease the approximation until it is smaller than the remainder. Note\n // that if it is too large, the product overflows and is negative.\n var approxRes = Kotlin.Long.fromNumber(approx);\n var approxRem = approxRes.multiply(other);\n while (approxRem.isNegative() || approxRem.greaterThan(rem)) {\n approx -= delta;\n approxRes = Kotlin.Long.fromNumber(approx);\n approxRem = approxRes.multiply(other);\n }\n\n // We know the answer can't be zero... and actually, zero would cause\n // infinite recursion since we would make no progress.\n if (approxRes.isZero()) {\n approxRes = Kotlin.Long.ONE;\n }\n\n res = res.add(approxRes);\n rem = rem.subtract(approxRem);\n }\n return res;\n};\n\n\n/**\n * Returns this Long modulo the given one.\n * @param {Kotlin.Long} other Long by which to mod.\n * @return {!Kotlin.Long} This Long modulo the given one.\n */\nKotlin.Long.prototype.modulo = function(other) {\n return this.subtract(this.div(other).multiply(other));\n};\n\n\n/** @return {!Kotlin.Long} The bitwise-NOT of this value. */\nKotlin.Long.prototype.not = function() {\n return Kotlin.Long.fromBits(~this.low_, ~this.high_);\n};\n\n\n/**\n * Returns the bitwise-AND of this Long and the given one.\n * @param {Kotlin.Long} other The Long with which to AND.\n * @return {!Kotlin.Long} The bitwise-AND of this and the other.\n */\nKotlin.Long.prototype.and = function(other) {\n return Kotlin.Long.fromBits(this.low_ & other.low_,\n this.high_ & other.high_);\n};\n\n\n/**\n * Returns the bitwise-OR of this Long and the given one.\n * @param {Kotlin.Long} other The Long with which to OR.\n * @return {!Kotlin.Long} The bitwise-OR of this and the other.\n */\nKotlin.Long.prototype.or = function(other) {\n return Kotlin.Long.fromBits(this.low_ | other.low_,\n this.high_ | other.high_);\n};\n\n\n/**\n * Returns the bitwise-XOR of this Long and the given one.\n * @param {Kotlin.Long} other The Long with which to XOR.\n * @return {!Kotlin.Long} The bitwise-XOR of this and the other.\n */\nKotlin.Long.prototype.xor = function(other) {\n return Kotlin.Long.fromBits(this.low_ ^ other.low_,\n this.high_ ^ other.high_);\n};\n\n\n/**\n * Returns this Long with bits shifted to the left by the given amount.\n * @param {number} numBits The number of bits by which to shift.\n * @return {!Kotlin.Long} This shifted to the left by the given amount.\n */\nKotlin.Long.prototype.shiftLeft = function(numBits) {\n numBits &= 63;\n if (numBits == 0) {\n return this;\n } else {\n var low = this.low_;\n if (numBits < 32) {\n var high = this.high_;\n return Kotlin.Long.fromBits(\n low << numBits,\n (high << numBits) | (low >>> (32 - numBits)));\n } else {\n return Kotlin.Long.fromBits(0, low << (numBits - 32));\n }\n }\n};\n\n\n/**\n * Returns this Long with bits shifted to the right by the given amount.\n * @param {number} numBits The number of bits by which to shift.\n * @return {!Kotlin.Long} This shifted to the right by the given amount.\n */\nKotlin.Long.prototype.shiftRight = function(numBits) {\n numBits &= 63;\n if (numBits == 0) {\n return this;\n } else {\n var high = this.high_;\n if (numBits < 32) {\n var low = this.low_;\n return Kotlin.Long.fromBits(\n (low >>> numBits) | (high << (32 - numBits)),\n high >> numBits);\n } else {\n return Kotlin.Long.fromBits(\n high >> (numBits - 32),\n high >= 0 ? 0 : -1);\n }\n }\n};\n\n\n/**\n * Returns this Long with bits shifted to the right by the given amount, with\n * zeros placed into the new leading bits.\n * @param {number} numBits The number of bits by which to shift.\n * @return {!Kotlin.Long} This shifted to the right by the given amount, with\n * zeros placed into the new leading bits.\n */\nKotlin.Long.prototype.shiftRightUnsigned = function(numBits) {\n numBits &= 63;\n if (numBits == 0) {\n return this;\n } else {\n var high = this.high_;\n if (numBits < 32) {\n var low = this.low_;\n return Kotlin.Long.fromBits(\n (low >>> numBits) | (high << (32 - numBits)),\n high >>> numBits);\n } else if (numBits == 32) {\n return Kotlin.Long.fromBits(high, 0);\n } else {\n return Kotlin.Long.fromBits(high >>> (numBits - 32), 0);\n }\n }\n};\n\n// Support for Kotlin\nKotlin.Long.prototype.equals = function (other) {\n return other instanceof Kotlin.Long && this.equalsLong(other);\n};\n\nKotlin.Long.prototype.compareTo_11rb$ = Kotlin.Long.prototype.compare;\n\nKotlin.Long.prototype.inc = function() {\n return this.add(Kotlin.Long.ONE);\n};\n\nKotlin.Long.prototype.dec = function() {\n return this.add(Kotlin.Long.NEG_ONE);\n};\n\nKotlin.Long.prototype.valueOf = function() {\n return this.toNumber();\n};\n\nKotlin.Long.prototype.unaryPlus = function() {\n return this;\n};\n\nKotlin.Long.prototype.unaryMinus = Kotlin.Long.prototype.negate;\nKotlin.Long.prototype.inv = Kotlin.Long.prototype.not;\n\nKotlin.Long.prototype.rangeTo = function (other) {\n return new Kotlin.kotlin.ranges.LongRange(this, other);\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\nKotlin.Kind = {\n CLASS: \"class\",\n INTERFACE: \"interface\",\n OBJECT: \"object\"\n};\n\nKotlin.callGetter = function (thisObject, klass, propertyName) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName);\n if (propertyDescriptor != null && propertyDescriptor.get != null) {\n return propertyDescriptor.get.call(thisObject);\n }\n\n propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName);\n if (propertyDescriptor != null && \"value\" in propertyDescriptor) {\n return thisObject[propertyName];\n }\n\n return Kotlin.callGetter(thisObject, Object.getPrototypeOf(klass), propertyName);\n};\n\nKotlin.callSetter = function (thisObject, klass, propertyName, value) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName);\n if (propertyDescriptor != null && propertyDescriptor.set != null) {\n propertyDescriptor.set.call(thisObject, value);\n return;\n }\n\n propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName);\n if (propertyDescriptor != null && \"value\" in propertyDescriptor) {\n thisObject[propertyName] = value;\n return\n }\n\n Kotlin.callSetter(thisObject, Object.getPrototypeOf(klass), propertyName, value);\n};\n\nfunction isInheritanceFromInterface(ctor, iface) {\n if (ctor === iface) return true;\n\n var metadata = ctor.$metadata$;\n if (metadata != null) {\n var interfaces = metadata.interfaces;\n for (var i = 0; i < interfaces.length; i++) {\n if (isInheritanceFromInterface(interfaces[i], iface)) {\n return true;\n }\n }\n }\n\n var superPrototype = ctor.prototype != null ? Object.getPrototypeOf(ctor.prototype) : null;\n var superConstructor = superPrototype != null ? superPrototype.constructor : null;\n return superConstructor != null && isInheritanceFromInterface(superConstructor, iface);\n}\n\n/**\n *\n * @param {*} object\n * @param {Function|Object} klass\n * @returns {Boolean}\n */\nKotlin.isType = function (object, klass) {\n if (klass === Object) {\n switch (typeof object) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n case \"function\":\n return true;\n default:\n return object instanceof Object;\n }\n }\n\n if (object == null || klass == null || (typeof object !== 'object' && typeof object !== 'function')) {\n return false;\n }\n\n if (typeof klass === \"function\" && object instanceof klass) {\n return true;\n }\n\n var proto = Object.getPrototypeOf(klass);\n var constructor = proto != null ? proto.constructor : null;\n if (constructor != null && \"$metadata$\" in constructor) {\n var metadata = constructor.$metadata$;\n if (metadata.kind === Kotlin.Kind.OBJECT) {\n return object === klass;\n }\n }\n\n var klassMetadata = klass.$metadata$;\n\n // In WebKit (JavaScriptCore) for some interfaces from DOM typeof returns \"object\", nevertheless they can be used in RHS of instanceof\n if (klassMetadata == null) {\n return object instanceof klass;\n }\n\n if (klassMetadata.kind === Kotlin.Kind.INTERFACE && object.constructor != null) {\n return isInheritanceFromInterface(object.constructor, klass);\n }\n\n return false;\n};\n\nKotlin.isNumber = function (a) {\n return typeof a == \"number\" || a instanceof Kotlin.Long;\n};\n\nKotlin.isChar = function (value) {\n return value instanceof Kotlin.BoxedChar\n};\n\nKotlin.isComparable = function (value) {\n var type = typeof value;\n\n return type === \"string\" ||\n type === \"boolean\" ||\n Kotlin.isNumber(value) ||\n Kotlin.isType(value, Kotlin.kotlin.Comparable);\n};\n\nKotlin.isCharSequence = function (value) {\n return typeof value === \"string\" || Kotlin.isType(value, Kotlin.kotlin.CharSequence);\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 Array(size: Int): Array\n\n@JsName(\"newArray\")\nfun newArray(size: Int, initValue: T) = fillArrayVal(Array(size), initValue)\n\n@JsName(\"newArrayF\")\ninline fun arrayWithFun(size: Int, init: (Int) -> T) = fillArrayFun(Array(size), init)\n\n@JsName(\"fillArray\")\ninline fun fillArrayFun(array: Array, init: (Int) -> T): Array {\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 {\n val result: dynamic = Array(size)\n result.`$type$` = \"BooleanArray\"\n return when (init) {\n null, true -> fillArrayVal(result, false)\n false -> result\n else -> fillArrayFun(result, init)\n }\n}\n\n@JsName(\"booleanArrayF\")\ninline fun booleanArrayWithFun(size: Int, init: (Int) -> Boolean): Array = fillArrayFun(booleanArray(size, false), init)\n\n@JsName(\"charArray\")\n@Suppress(\"UNUSED_PARAMETER\")\nfun charArray(size: Int, init: dynamic): Array {\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(result, init)\n }\n}\n\n@JsName(\"charArrayF\")\ninline fun charArrayWithFun(size: Int, init: (Int) -> Char): Array {\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 {\n val array = Array(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 {\n val result: dynamic = Array(size)\n result.`$type$` = \"LongArray\"\n return when (init) {\n null, true -> fillArrayVal(result, 0L)\n false -> result\n else -> fillArrayFun(result, init)\n }\n}\n\n@JsName(\"longArrayF\")\ninline fun longArrayWithFun(size: Int, init: (Int) -> Long): Array = fillArrayFun(longArray(size, false), init)\n\nprivate fun fillArrayVal(array: Array, initValue: T): Array {\n for (i in 0..array.size - 1) {\n array[i] = initValue\n }\n return array\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\npublic class Enum> : Comparable> {\n @JsName(\"name$\") private var _name: String = \"\"\n @JsName(\"ordinal$\") private var _ordinal: Int = 0\n\n val name: String\n get() = _name\n\n val ordinal: Int\n get() = _ordinal\n\n override fun compareTo(other: Enum) = ordinal.compareTo(other.ordinal)\n\n override fun equals(other: Any?) = this === other\n\n override fun hashCode(): Int = js(\"Kotlin.identityHashCode\")(this)\n\n override fun toString() = name\n\n companion object\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\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 Array.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 Array.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 Array.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 Array.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 Array.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.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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.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 Array.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 Array.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 * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic fun Array.last(): T {\n if (isEmpty())\n throw NoSuchElementException(\"Array is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last element.\n * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic inline fun Array.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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\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.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 * \n * @sample samples.collections.Collections.Elements.last\n */\npublic fun Array.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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\n */\npublic inline fun Array.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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 * \n * @sample samples.collections.Collections.Elements.last\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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.drop(n: Int): List {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 Array.dropLast(n: Int): List {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 Array.dropLastWhile(predicate: (T) -> Boolean): List {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 Array.dropWhile(predicate: (T) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\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 {\n var yielding = false\n val list = ArrayList()\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 {\n var yielding = false\n val list = ArrayList()\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 {\n var yielding = false\n val list = ArrayList()\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 {\n var yielding = false\n val list = ArrayList()\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 {\n var yielding = false\n val list = ArrayList()\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 {\n var yielding = false\n val list = ArrayList()\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 {\n var yielding = false\n val list = ArrayList()\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 {\n var yielding = false\n val list = ArrayList()\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 Array.filter(predicate: (T) -> Boolean): List {\n return filterTo(ArrayList(), 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 {\n return filterTo(ArrayList(), 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 {\n return filterTo(ArrayList(), 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 {\n return filterTo(ArrayList(), 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 {\n return filterTo(ArrayList(), 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 {\n return filterTo(ArrayList(), 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 {\n return filterTo(ArrayList(), 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 {\n return filterTo(ArrayList(), 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 {\n return filterTo(ArrayList(), 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 Array.filterIndexed(predicate: (index: Int, T) -> Boolean): List {\n return filterIndexedTo(ArrayList(), 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 {\n return filterIndexedTo(ArrayList(), 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 {\n return filterIndexedTo(ArrayList(), 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 {\n return filterIndexedTo(ArrayList(), 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 {\n return filterIndexedTo(ArrayList(), 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 {\n return filterIndexedTo(ArrayList(), 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 {\n return filterIndexedTo(ArrayList(), 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 {\n return filterIndexedTo(ArrayList(), 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 {\n return filterIndexedTo(ArrayList(), 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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 Array<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList())\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 > 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 Array.filterNot(predicate: (T) -> Boolean): List {\n return filterNotTo(ArrayList(), 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 {\n return filterNotTo(ArrayList(), 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 {\n return filterNotTo(ArrayList(), 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 {\n return filterNotTo(ArrayList(), 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 {\n return filterNotTo(ArrayList(), 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 {\n return filterNotTo(ArrayList(), 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 {\n return filterNotTo(ArrayList(), 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 {\n return filterNotTo(ArrayList(), 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 {\n return filterNotTo(ArrayList(), 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 Array.filterNotNull(): List {\n return filterNotNullTo(ArrayList())\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 , T : Any> Array.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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 Array.slice(indices: IntRange): List {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 Array.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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 Array.sliceArray(indices: Collection): Array {\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): 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): 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): 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): 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): 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): 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): 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): 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 Array.sliceArray(indices: IntRange): Array {\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 Array.take(n: Int): List {\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(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 {\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(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 {\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(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 {\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(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 {\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(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 {\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(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 {\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(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 {\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(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 {\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(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 Array.takeLast(n: Int): List {\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(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 {\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(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 {\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(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 {\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(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 {\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(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 {\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(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 {\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(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 {\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(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 {\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(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 Array.takeLastWhile(predicate: (T) -> Boolean): List {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 Array.takeWhile(predicate: (T) -> Boolean): List {\n val list = ArrayList()\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 {\n val list = ArrayList()\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 {\n val list = ArrayList()\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 {\n val list = ArrayList()\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 {\n val list = ArrayList()\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 {\n val list = ArrayList()\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 {\n val list = ArrayList()\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 {\n val list = ArrayList()\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 {\n val list = ArrayList()\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 Array.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 Array.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 Array.reversed(): List {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 Array.reversedArray(): Array {\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 Array.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 Array.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 > Array.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 > Array.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 > Array.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 > Array.sorted(): List {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 > Array.sortedArray(): Array {\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 > Array.sortedArrayDescending(): Array {\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 Array.sortedArrayWith(comparator: Comparator): Array {\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 > Array.sortedBy(crossinline selector: (T) -> R?): List {\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 > ByteArray.sortedBy(crossinline selector: (Byte) -> R?): List {\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 > ShortArray.sortedBy(crossinline selector: (Short) -> R?): List {\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 > IntArray.sortedBy(crossinline selector: (Int) -> R?): List {\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 > LongArray.sortedBy(crossinline selector: (Long) -> R?): List {\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 > FloatArray.sortedBy(crossinline selector: (Float) -> R?): List {\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 > DoubleArray.sortedBy(crossinline selector: (Double) -> R?): List {\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 > BooleanArray.sortedBy(crossinline selector: (Boolean) -> R?): List {\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 > CharArray.sortedBy(crossinline selector: (Char) -> R?): List {\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 > Array.sortedByDescending(crossinline selector: (T) -> R?): List {\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 > ByteArray.sortedByDescending(crossinline selector: (Byte) -> R?): List {\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 > ShortArray.sortedByDescending(crossinline selector: (Short) -> R?): List {\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 > IntArray.sortedByDescending(crossinline selector: (Int) -> R?): List {\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 > LongArray.sortedByDescending(crossinline selector: (Long) -> R?): List {\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 > FloatArray.sortedByDescending(crossinline selector: (Float) -> R?): List {\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 > DoubleArray.sortedByDescending(crossinline selector: (Double) -> R?): List {\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 > BooleanArray.sortedByDescending(crossinline selector: (Boolean) -> R?): List {\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 > CharArray.sortedByDescending(crossinline selector: (Char) -> R?): List {\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 > Array.sortedDescending(): List {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 Array.sortedWith(comparator: Comparator): List {\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): List {\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): List {\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): List {\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): List {\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): List {\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): List {\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): List {\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): List {\n return toTypedArray().apply { sortWith(comparator) }.asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun Array.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun ByteArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun ShortArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun IntArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun LongArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun FloatArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun DoubleArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun BooleanArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic expect fun CharArray.asList(): List\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 Array.contentDeepEquals(other: Array): 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 Array?.contentDeepEquals(other: Array?): 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 Array.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 Array?.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 Array.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 Array?.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 Array.contentEquals(other: Array): 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 Array?.contentEquals(other: Array?): 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 Array.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 Array?.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 Array.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 Array?.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 Array.copyInto(destination: Array, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array\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 Array.copyOf(): Array\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 Array.copyOf(newSize: Int): Array\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 Array.copyOfRange(fromIndex: Int, toIndex: Int): Array\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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.plus(element: T): Array\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 Array.plus(elements: Collection): Array\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): 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): 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): 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): 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): 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): 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): 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): 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 Array.plus(elements: Array): Array\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 Array.plusElement(element: T): Array\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 > Array.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 > Array.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 > Array.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 Array.sortWith(comparator: Comparator): 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 Array.sortWith(comparator: Comparator, 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.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.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.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.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.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.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.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.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\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun ShortArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun IntArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun LongArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun FloatArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun DoubleArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun BooleanArray.toTypedArray(): Array\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\npublic expect fun CharArray.toTypedArray(): Array\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 Array.associate(transform: (T) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(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 ByteArray.associate(transform: (Byte) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(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 ShortArray.associate(transform: (Short) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(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 IntArray.associate(transform: (Int) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(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 LongArray.associate(transform: (Long) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(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 FloatArray.associate(transform: (Float) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(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 DoubleArray.associate(transform: (Double) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(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 BooleanArray.associate(transform: (Boolean) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(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 CharArray.associate(transform: (Char) -> Pair): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateTo(LinkedHashMap(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 Array.associateBy(keySelector: (T) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 ByteArray.associateBy(keySelector: (Byte) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 ShortArray.associateBy(keySelector: (Short) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 IntArray.associateBy(keySelector: (Int) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 LongArray.associateBy(keySelector: (Long) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 FloatArray.associateBy(keySelector: (Float) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 DoubleArray.associateBy(keySelector: (Double) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 BooleanArray.associateBy(keySelector: (Boolean) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 CharArray.associateBy(keySelector: (Char) -> K): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 Array.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 ByteArray.associateBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 ShortArray.associateBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 IntArray.associateBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 LongArray.associateBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 FloatArray.associateBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 DoubleArray.associateBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 BooleanArray.associateBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 CharArray.associateBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map {\n val capacity = mapCapacity(size).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > Array.associateTo(destination: M, transform: (T) -> Pair): 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 > ByteArray.associateTo(destination: M, transform: (Byte) -> Pair): 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 > ShortArray.associateTo(destination: M, transform: (Short) -> Pair): 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 > IntArray.associateTo(destination: M, transform: (Int) -> Pair): 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 > LongArray.associateTo(destination: M, transform: (Long) -> Pair): 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 > FloatArray.associateTo(destination: M, transform: (Float) -> Pair): 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 > DoubleArray.associateTo(destination: M, transform: (Double) -> Pair): 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 > BooleanArray.associateTo(destination: M, transform: (Boolean) -> Pair): 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 > CharArray.associateTo(destination: M, transform: (Char) -> Pair): 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 Array.associateWith(valueSelector: (K) -> V): Map {\n val result = LinkedHashMap(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 ByteArray.associateWith(valueSelector: (Byte) -> V): Map {\n val result = LinkedHashMap(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 ShortArray.associateWith(valueSelector: (Short) -> V): Map {\n val result = LinkedHashMap(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 IntArray.associateWith(valueSelector: (Int) -> V): Map {\n val result = LinkedHashMap(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 LongArray.associateWith(valueSelector: (Long) -> V): Map {\n val result = LinkedHashMap(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 FloatArray.associateWith(valueSelector: (Float) -> V): Map {\n val result = LinkedHashMap(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 DoubleArray.associateWith(valueSelector: (Double) -> V): Map {\n val result = LinkedHashMap(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 BooleanArray.associateWith(valueSelector: (Boolean) -> V): Map {\n val result = LinkedHashMap(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 CharArray.associateWith(valueSelector: (Char) -> V): Map {\n val result = LinkedHashMap(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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 Array.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun ByteArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun ShortArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun IntArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun LongArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun FloatArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun DoubleArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun BooleanArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size)))\n}\n\n/**\n * Returns a new [HashSet] of all elements.\n */\npublic fun CharArray.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(size.coerceAtMost(128))))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun Array.toList(): List {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 Array.toMutableList(): MutableList {\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 {\n val list = ArrayList(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 {\n val list = ArrayList(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 {\n val list = ArrayList(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 {\n val list = ArrayList(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 {\n val list = ArrayList(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 {\n val list = ArrayList(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 {\n val list = ArrayList(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 {\n val list = ArrayList(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 Array.toSet(): Set {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(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 {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(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 {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(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 {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(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 {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(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 {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(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 {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(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 {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(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 {\n return when (size) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(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 Array.flatMap(transform: (T) -> Iterable): List {\n return flatMapTo(ArrayList(), 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 ByteArray.flatMap(transform: (Byte) -> Iterable): List {\n return flatMapTo(ArrayList(), 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 ShortArray.flatMap(transform: (Short) -> Iterable): List {\n return flatMapTo(ArrayList(), 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 IntArray.flatMap(transform: (Int) -> Iterable): List {\n return flatMapTo(ArrayList(), 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 LongArray.flatMap(transform: (Long) -> Iterable): List {\n return flatMapTo(ArrayList(), 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 FloatArray.flatMap(transform: (Float) -> Iterable): List {\n return flatMapTo(ArrayList(), 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 DoubleArray.flatMap(transform: (Double) -> Iterable): List {\n return flatMapTo(ArrayList(), 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 BooleanArray.flatMap(transform: (Boolean) -> Iterable): List {\n return flatMapTo(ArrayList(), 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 CharArray.flatMap(transform: (Char) -> Iterable): List {\n return flatMapTo(ArrayList(), 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 Array.flatMap(transform: (T) -> Sequence): List {\n return flatMapTo(ArrayList(), 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 Array.flatMapIndexed(transform: (index: Int, T) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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 ByteArray.flatMapIndexed(transform: (index: Int, Byte) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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 ShortArray.flatMapIndexed(transform: (index: Int, Short) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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 IntArray.flatMapIndexed(transform: (index: Int, Int) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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 LongArray.flatMapIndexed(transform: (index: Int, Long) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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 FloatArray.flatMapIndexed(transform: (index: Int, Float) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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 DoubleArray.flatMapIndexed(transform: (index: Int, Double) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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 BooleanArray.flatMapIndexed(transform: (index: Int, Boolean) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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 CharArray.flatMapIndexed(transform: (index: Int, Char) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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 Array.flatMapIndexed(transform: (index: Int, T) -> Sequence): List {\n return flatMapIndexedTo(ArrayList(), 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 > Array.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Iterable): 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 > ByteArray.flatMapIndexedTo(destination: C, transform: (index: Int, Byte) -> Iterable): 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 > ShortArray.flatMapIndexedTo(destination: C, transform: (index: Int, Short) -> Iterable): 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 > IntArray.flatMapIndexedTo(destination: C, transform: (index: Int, Int) -> Iterable): 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 > LongArray.flatMapIndexedTo(destination: C, transform: (index: Int, Long) -> Iterable): 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 > FloatArray.flatMapIndexedTo(destination: C, transform: (index: Int, Float) -> Iterable): 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 > DoubleArray.flatMapIndexedTo(destination: C, transform: (index: Int, Double) -> Iterable): 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 > BooleanArray.flatMapIndexedTo(destination: C, transform: (index: Int, Boolean) -> Iterable): 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 > CharArray.flatMapIndexedTo(destination: C, transform: (index: Int, Char) -> Iterable): 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 > Array.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Sequence): 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 > Array.flatMapTo(destination: C, transform: (T) -> Iterable): 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 > ByteArray.flatMapTo(destination: C, transform: (Byte) -> Iterable): 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 > ShortArray.flatMapTo(destination: C, transform: (Short) -> Iterable): 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 > IntArray.flatMapTo(destination: C, transform: (Int) -> Iterable): 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 > LongArray.flatMapTo(destination: C, transform: (Long) -> Iterable): 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 > FloatArray.flatMapTo(destination: C, transform: (Float) -> Iterable): 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 > DoubleArray.flatMapTo(destination: C, transform: (Double) -> Iterable): 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 > BooleanArray.flatMapTo(destination: C, transform: (Boolean) -> Iterable): 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 > CharArray.flatMapTo(destination: C, transform: (Char) -> Iterable): 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 > Array.flatMapTo(destination: C, transform: (T) -> Sequence): 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 Array.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 ByteArray.groupBy(keySelector: (Byte) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 ShortArray.groupBy(keySelector: (Short) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 IntArray.groupBy(keySelector: (Int) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 LongArray.groupBy(keySelector: (Long) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 FloatArray.groupBy(keySelector: (Float) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 DoubleArray.groupBy(keySelector: (Double) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 BooleanArray.groupBy(keySelector: (Boolean) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 CharArray.groupBy(keySelector: (Char) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 Array.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 ByteArray.groupBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 ShortArray.groupBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 IntArray.groupBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 LongArray.groupBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 FloatArray.groupBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 DoubleArray.groupBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 BooleanArray.groupBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 CharArray.groupBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 >> Array.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\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 >> 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() }\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 >> 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() }\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 >> 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() }\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 >> 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() }\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 >> 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() }\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 >> 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() }\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 >> 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() }\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 >> 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() }\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 >> Array.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() }\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 >> 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() }\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 >> 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() }\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 >> 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() }\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 >> 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() }\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 >> 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() }\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 >> 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() }\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 >> 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() }\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 >> 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() }\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 Array.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = 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 Array.map(transform: (T) -> R): List {\n return mapTo(ArrayList(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 ByteArray.map(transform: (Byte) -> R): List {\n return mapTo(ArrayList(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 ShortArray.map(transform: (Short) -> R): List {\n return mapTo(ArrayList(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 IntArray.map(transform: (Int) -> R): List {\n return mapTo(ArrayList(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 LongArray.map(transform: (Long) -> R): List {\n return mapTo(ArrayList(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 FloatArray.map(transform: (Float) -> R): List {\n return mapTo(ArrayList(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 DoubleArray.map(transform: (Double) -> R): List {\n return mapTo(ArrayList(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 BooleanArray.map(transform: (Boolean) -> R): List {\n return mapTo(ArrayList(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 CharArray.map(transform: (Char) -> R): List {\n return mapTo(ArrayList(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 Array.mapIndexed(transform: (index: Int, T) -> R): List {\n return mapIndexedTo(ArrayList(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 ByteArray.mapIndexed(transform: (index: Int, Byte) -> R): List {\n return mapIndexedTo(ArrayList(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 ShortArray.mapIndexed(transform: (index: Int, Short) -> R): List {\n return mapIndexedTo(ArrayList(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 IntArray.mapIndexed(transform: (index: Int, Int) -> R): List {\n return mapIndexedTo(ArrayList(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 LongArray.mapIndexed(transform: (index: Int, Long) -> R): List {\n return mapIndexedTo(ArrayList(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 FloatArray.mapIndexed(transform: (index: Int, Float) -> R): List {\n return mapIndexedTo(ArrayList(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 DoubleArray.mapIndexed(transform: (index: Int, Double) -> R): List {\n return mapIndexedTo(ArrayList(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 BooleanArray.mapIndexed(transform: (index: Int, Boolean) -> R): List {\n return mapIndexedTo(ArrayList(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 CharArray.mapIndexed(transform: (index: Int, Char) -> R): List {\n return mapIndexedTo(ArrayList(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 Array.mapIndexedNotNull(transform: (index: Int, T) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), 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 > Array.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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 Array.mapNotNull(transform: (T) -> R?): List {\n return mapNotNullTo(ArrayList(), 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 > Array.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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 Array.withIndex(): Iterable> {\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> {\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> {\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> {\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> {\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> {\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> {\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> {\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> {\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 Array.distinct(): List {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 Array.distinctBy(selector: (T) -> K): List {\n val set = HashSet()\n val list = ArrayList()\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 ByteArray.distinctBy(selector: (Byte) -> K): List {\n val set = HashSet()\n val list = ArrayList()\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 ShortArray.distinctBy(selector: (Short) -> K): List {\n val set = HashSet()\n val list = ArrayList()\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 IntArray.distinctBy(selector: (Int) -> K): List {\n val set = HashSet()\n val list = ArrayList()\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 LongArray.distinctBy(selector: (Long) -> K): List {\n val set = HashSet()\n val list = ArrayList()\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 FloatArray.distinctBy(selector: (Float) -> K): List {\n val set = HashSet()\n val list = ArrayList()\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 DoubleArray.distinctBy(selector: (Double) -> K): List {\n val set = HashSet()\n val list = ArrayList()\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 BooleanArray.distinctBy(selector: (Boolean) -> K): List {\n val set = HashSet()\n val list = ArrayList()\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 CharArray.distinctBy(selector: (Char) -> K): List {\n val set = HashSet()\n val list = ArrayList()\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 Array.intersect(other: Iterable): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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 Array.subtract(other: Iterable): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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 Array.toMutableSet(): MutableSet {\n return toCollection(LinkedHashSet(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 {\n return toCollection(LinkedHashSet(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 {\n return toCollection(LinkedHashSet(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 {\n return toCollection(LinkedHashSet(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 {\n return toCollection(LinkedHashSet(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 {\n return toCollection(LinkedHashSet(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 {\n return toCollection(LinkedHashSet(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 {\n return toCollection(LinkedHashSet(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 {\n return toCollection(LinkedHashSet(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 Array.union(other: Iterable): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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): Set {\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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 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 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 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 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 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 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 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 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 Array.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 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 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 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 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 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 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 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 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 Array.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 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 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 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 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 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 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 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 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 Array.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 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 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 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 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 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 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 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 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 Array.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 Array.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(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Array.max(): Double? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Array.max(): Float? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun > Array.max(): T? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ByteArray.max(): Byte? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ShortArray.max(): Short? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun IntArray.max(): Int? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun LongArray.max(): Long? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun FloatArray.max(): Float? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun DoubleArray.max(): Double? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun CharArray.max(): Char? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > Array.maxBy(selector: (T) -> R): T? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > ByteArray.maxBy(selector: (Byte) -> R): Byte? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > ShortArray.maxBy(selector: (Short) -> R): Short? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > IntArray.maxBy(selector: (Int) -> R): Int? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > LongArray.maxBy(selector: (Long) -> R): Long? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > FloatArray.maxBy(selector: (Float) -> R): Float? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > DoubleArray.maxBy(selector: (Double) -> R): Double? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > BooleanArray.maxBy(selector: (Boolean) -> R): Boolean? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > 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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 Array.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 Array.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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 Array.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 Array.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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 Array.maxOfWith(comparator: Comparator, 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 ByteArray.maxOfWith(comparator: Comparator, 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 ShortArray.maxOfWith(comparator: Comparator, 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 IntArray.maxOfWith(comparator: Comparator, 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 LongArray.maxOfWith(comparator: Comparator, 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 FloatArray.maxOfWith(comparator: Comparator, 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 DoubleArray.maxOfWith(comparator: Comparator, 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 BooleanArray.maxOfWith(comparator: Comparator, 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 CharArray.maxOfWith(comparator: Comparator, 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 Array.maxOfWithOrNull(comparator: Comparator, 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 ByteArray.maxOfWithOrNull(comparator: Comparator, 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 ShortArray.maxOfWithOrNull(comparator: Comparator, 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 IntArray.maxOfWithOrNull(comparator: Comparator, 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 LongArray.maxOfWithOrNull(comparator: Comparator, 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 FloatArray.maxOfWithOrNull(comparator: Comparator, 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 DoubleArray.maxOfWithOrNull(comparator: Comparator, 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 BooleanArray.maxOfWithOrNull(comparator: Comparator, 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 CharArray.maxOfWithOrNull(comparator: Comparator, 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.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.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 > Array.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(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun Array.maxWith(comparator: Comparator): T? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ByteArray.maxWith(comparator: Comparator): Byte? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ShortArray.maxWith(comparator: Comparator): Short? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun IntArray.maxWith(comparator: Comparator): Int? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun LongArray.maxWith(comparator: Comparator): Long? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun FloatArray.maxWith(comparator: Comparator): Float? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun DoubleArray.maxWith(comparator: Comparator): Double? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun BooleanArray.maxWith(comparator: Comparator): Boolean? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun CharArray.maxWith(comparator: Comparator): 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 Array.maxWithOrNull(comparator: Comparator): 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): 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): 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): 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): 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): 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): 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): 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): 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(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Array.min(): Double? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Array.min(): Float? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun > Array.min(): T? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ByteArray.min(): Byte? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ShortArray.min(): Short? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun IntArray.min(): Int? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun LongArray.min(): Long? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun FloatArray.min(): Float? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun DoubleArray.min(): Double? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun CharArray.min(): Char? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > Array.minBy(selector: (T) -> R): T? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > ByteArray.minBy(selector: (Byte) -> R): Byte? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > ShortArray.minBy(selector: (Short) -> R): Short? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > IntArray.minBy(selector: (Int) -> R): Int? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > LongArray.minBy(selector: (Long) -> R): Long? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > FloatArray.minBy(selector: (Float) -> R): Float? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > DoubleArray.minBy(selector: (Double) -> R): Double? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > BooleanArray.minBy(selector: (Boolean) -> R): Boolean? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > 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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 Array.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 Array.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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 Array.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 Array.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 > Array.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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 Array.minOfWith(comparator: Comparator, 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 ByteArray.minOfWith(comparator: Comparator, 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 ShortArray.minOfWith(comparator: Comparator, 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 IntArray.minOfWith(comparator: Comparator, 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 LongArray.minOfWith(comparator: Comparator, 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 FloatArray.minOfWith(comparator: Comparator, 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 DoubleArray.minOfWith(comparator: Comparator, 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 BooleanArray.minOfWith(comparator: Comparator, 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 CharArray.minOfWith(comparator: Comparator, 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 Array.minOfWithOrNull(comparator: Comparator, 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 ByteArray.minOfWithOrNull(comparator: Comparator, 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 ShortArray.minOfWithOrNull(comparator: Comparator, 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 IntArray.minOfWithOrNull(comparator: Comparator, 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 LongArray.minOfWithOrNull(comparator: Comparator, 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 FloatArray.minOfWithOrNull(comparator: Comparator, 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 DoubleArray.minOfWithOrNull(comparator: Comparator, 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 BooleanArray.minOfWithOrNull(comparator: Comparator, 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 CharArray.minOfWithOrNull(comparator: Comparator, 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.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.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 > Array.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(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun Array.minWith(comparator: Comparator): T? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ByteArray.minWith(comparator: Comparator): Byte? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun ShortArray.minWith(comparator: Comparator): Short? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun IntArray.minWith(comparator: Comparator): Int? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun LongArray.minWith(comparator: Comparator): Long? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun FloatArray.minWith(comparator: Comparator): Float? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun DoubleArray.minWith(comparator: Comparator): Double? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun BooleanArray.minWith(comparator: Comparator): Boolean? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun CharArray.minWith(comparator: Comparator): 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 Array.minWithOrNull(comparator: Comparator): 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): 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): 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): 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): 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): 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): 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): 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): 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 Array.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 Array.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 Array.onEach(action: (T) -> Unit): Array {\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 Array.onEachIndexed(action: (index: Int, T) -> Unit): Array {\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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.runningFold(initial: R, operation: (acc: R, T) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 ByteArray.runningFold(initial: R, operation: (acc: R, Byte) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 ShortArray.runningFold(initial: R, operation: (acc: R, Short) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 IntArray.runningFold(initial: R, operation: (acc: R, Int) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 LongArray.runningFold(initial: R, operation: (acc: R, Long) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 FloatArray.runningFold(initial: R, operation: (acc: R, Float) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 DoubleArray.runningFold(initial: R, operation: (acc: R, Double) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 BooleanArray.runningFold(initial: R, operation: (acc: R, Boolean) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 CharArray.runningFold(initial: R, operation: (acc: R, Char) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 Array.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 ByteArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 ShortArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 IntArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 LongArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 FloatArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 DoubleArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 BooleanArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 CharArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 Array.runningReduce(operation: (acc: S, T) -> S): List {\n if (isEmpty()) return emptyList()\n var accumulator: S = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 Array.runningReduceIndexed(operation: (index: Int, acc: S, T) -> S): List {\n if (isEmpty()) return emptyList()\n var accumulator: S = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 Array.scan(initial: R, operation: (acc: R, T) -> R): List {\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 ByteArray.scan(initial: R, operation: (acc: R, Byte) -> R): List {\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 ShortArray.scan(initial: R, operation: (acc: R, Short) -> R): List {\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 IntArray.scan(initial: R, operation: (acc: R, Int) -> R): List {\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 LongArray.scan(initial: R, operation: (acc: R, Long) -> R): List {\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 FloatArray.scan(initial: R, operation: (acc: R, Float) -> R): List {\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 DoubleArray.scan(initial: R, operation: (acc: R, Double) -> R): List {\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 BooleanArray.scan(initial: R, operation: (acc: R, Boolean) -> R): List {\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 CharArray.scan(initial: R, operation: (acc: R, Char) -> R): List {\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 Array.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List {\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 ByteArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): List {\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 ShortArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): List {\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 IntArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): List {\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 LongArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): List {\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 FloatArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): List {\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 DoubleArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): List {\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 BooleanArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): List {\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 CharArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): List {\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 Array.scanReduce(operation: (acc: S, T) -> S): List {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 Array.scanReduceIndexed(operation: (index: Int, acc: S, T) -> S): List {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.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 Array.requireNoNulls(): Array {\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\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 Array.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\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> {\n val first = ArrayList()\n val second = ArrayList()\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> {\n val first = ArrayList()\n val second = ArrayList()\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> {\n val first = ArrayList()\n val second = ArrayList()\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> {\n val first = ArrayList()\n val second = ArrayList()\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> {\n val first = ArrayList()\n val second = ArrayList()\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> {\n val first = ArrayList()\n val second = ArrayList()\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> {\n val first = ArrayList()\n val second = ArrayList()\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> {\n val first = ArrayList()\n val second = ArrayList()\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 Array.zip(other: Array): List> {\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 ByteArray.zip(other: Array): List> {\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: Array): List> {\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: Array): List> {\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: Array): List> {\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: Array): List> {\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: Array): List> {\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: Array): List> {\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: Array): List> {\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 Array.zip(other: Array, transform: (a: T, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 ByteArray.zip(other: Array, transform: (a: Byte, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 ShortArray.zip(other: Array, transform: (a: Short, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 IntArray.zip(other: Array, transform: (a: Int, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 LongArray.zip(other: Array, transform: (a: Long, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 FloatArray.zip(other: Array, transform: (a: Float, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 DoubleArray.zip(other: Array, transform: (a: Double, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 BooleanArray.zip(other: Array, transform: (a: Boolean, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 CharArray.zip(other: Array, transform: (a: Char, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 Array.zip(other: Iterable): List> {\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 ByteArray.zip(other: Iterable): List> {\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 ShortArray.zip(other: Iterable): List> {\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 IntArray.zip(other: Iterable): List> {\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 LongArray.zip(other: Iterable): List> {\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 FloatArray.zip(other: Iterable): List> {\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 DoubleArray.zip(other: Iterable): List> {\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 BooleanArray.zip(other: Iterable): List> {\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 CharArray.zip(other: Iterable): List> {\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 Array.zip(other: Iterable, transform: (a: T, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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 ByteArray.zip(other: Iterable, transform: (a: Byte, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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 ShortArray.zip(other: Iterable, transform: (a: Short, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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 IntArray.zip(other: Iterable, transform: (a: Int, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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 LongArray.zip(other: Iterable, transform: (a: Long, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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 FloatArray.zip(other: Iterable, transform: (a: Float, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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 DoubleArray.zip(other: Iterable, transform: (a: Double, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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 BooleanArray.zip(other: Iterable, transform: (a: Boolean, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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 CharArray.zip(other: Iterable, transform: (a: Char, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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> {\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> {\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> {\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> {\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> {\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> {\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> {\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> {\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 ByteArray.zip(other: ByteArray, transform: (a: Byte, b: Byte) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 ShortArray.zip(other: ShortArray, transform: (a: Short, b: Short) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 IntArray.zip(other: IntArray, transform: (a: Int, b: Int) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 LongArray.zip(other: LongArray, transform: (a: Long, b: Long) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 FloatArray.zip(other: FloatArray, transform: (a: Float, b: Float) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 DoubleArray.zip(other: DoubleArray, transform: (a: Double, b: Double) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 BooleanArray.zip(other: BooleanArray, transform: (a: Boolean, b: Boolean) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 CharArray.zip(other: CharArray, transform: (a: Char, b: Char) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 Array.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 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 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 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 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 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 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 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 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 Array.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 Array.asIterable(): Iterable {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 Array.asSequence(): Sequence {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\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.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.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.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.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.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.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.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.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.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.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.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.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\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"RangesKt\")\n\npackage kotlin.ranges\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 a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun IntRange.random(): Int {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun LongRange.random(): Long {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun CharRange.random(): Char {\n return random(Random)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun IntRange.random(random: Random): Int {\n try {\n return random.nextInt(this)\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun LongRange.random(random: Random): Long {\n try {\n return random.nextLong(this)\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness.\n * \n * @throws IllegalArgumentException if this range is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun CharRange.random(random: Random): Char {\n try {\n return random.nextInt(first.toInt(), last.toInt() + 1).toChar()\n } catch(e: IllegalArgumentException) {\n throw NoSuchElementException(e.message)\n }\n}\n\n/**\n * Returns a random element from this range, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun IntRange.randomOrNull(): Int? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this range, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun LongRange.randomOrNull(): Long? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this range, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun CharRange.randomOrNull(): Char? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun IntRange.randomOrNull(random: Random): Int? {\n if (isEmpty())\n return null\n return random.nextInt(this)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun LongRange.randomOrNull(random: Random): Long? {\n if (isEmpty())\n return null\n return random.nextLong(this)\n}\n\n/**\n * Returns a random element from this range using the specified source of randomness, or `null` if this range is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun CharRange.randomOrNull(random: Random): Char? {\n if (isEmpty())\n return null\n return random.nextInt(first.toInt(), last.toInt() + 1).toChar()\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline operator fun IntRange.contains(element: Int?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline operator fun LongRange.contains(element: Long?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Returns `true` if this range contains the specified [element].\n * \n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline operator fun CharRange.contains(element: Char?): Boolean {\n return element != null && contains(element)\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toInt())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toLong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toShort())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Byte): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return value.toIntExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return value.toLongExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return value.toShortExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Double): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return value.toIntExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return value.toLongExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return value.toShortExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Float): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return contains(value.toLong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return value.toShortExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Int): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return value.toIntExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"shortRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return value.toShortExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Long): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"intRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return contains(value.toInt())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"longRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return contains(value.toLong())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@kotlin.jvm.JvmName(\"byteRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return value.toByteExactOrNull().let { if (it != null) contains(it) else false }\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"doubleRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return contains(value.toDouble())\n}\n\n/**\n * Checks if the specified [value] belongs to this range.\n */\n@Deprecated(\"This `contains` operation mixing integer and floating point arguments has ambiguous semantics and is going to be removed.\")\n@DeprecatedSinceKotlin(warningSince = \"1.3\", errorSince = \"1.4\")\n@kotlin.jvm.JvmName(\"floatRangeContains\")\npublic operator fun ClosedRange.contains(value: Short): Boolean {\n return contains(value.toFloat())\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Int.downTo(to: Byte): IntProgression {\n return IntProgression.fromClosedRange(this, to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Long.downTo(to: Byte): LongProgression {\n return LongProgression.fromClosedRange(this, to.toLong(), -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Byte.downTo(to: Byte): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Short.downTo(to: Byte): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Char.downTo(to: Char): CharProgression {\n return CharProgression.fromClosedRange(this, to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Int.downTo(to: Int): IntProgression {\n return IntProgression.fromClosedRange(this, to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Long.downTo(to: Int): LongProgression {\n return LongProgression.fromClosedRange(this, to.toLong(), -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Byte.downTo(to: Int): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Short.downTo(to: Int): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to, -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Int.downTo(to: Long): LongProgression {\n return LongProgression.fromClosedRange(this.toLong(), to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Long.downTo(to: Long): LongProgression {\n return LongProgression.fromClosedRange(this, to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Byte.downTo(to: Long): LongProgression {\n return LongProgression.fromClosedRange(this.toLong(), to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Short.downTo(to: Long): LongProgression {\n return LongProgression.fromClosedRange(this.toLong(), to, -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Int.downTo(to: Short): IntProgression {\n return IntProgression.fromClosedRange(this, to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Long.downTo(to: Short): LongProgression {\n return LongProgression.fromClosedRange(this, to.toLong(), -1L)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Byte.downTo(to: Short): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to.toInt(), -1)\n}\n\n/**\n * Returns a progression from this value down to the specified [to] value with the step -1.\n * \n * The [to] value should be less than or equal to `this` value.\n * If the [to] value is greater than `this` value the returned progression is empty.\n */\npublic infix fun Short.downTo(to: Short): IntProgression {\n return IntProgression.fromClosedRange(this.toInt(), to.toInt(), -1)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\npublic fun IntProgression.reversed(): IntProgression {\n return IntProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\npublic fun LongProgression.reversed(): LongProgression {\n return LongProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range in the opposite direction with the same step.\n */\npublic fun CharProgression.reversed(): CharProgression {\n return CharProgression.fromClosedRange(last, first, -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\npublic infix fun IntProgression.step(step: Int): IntProgression {\n checkStepIsPositive(step > 0, step)\n return IntProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\npublic infix fun LongProgression.step(step: Long): LongProgression {\n checkStepIsPositive(step > 0, step)\n return LongProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\n/**\n * Returns a progression that goes over the same range with the given step.\n */\npublic infix fun CharProgression.step(step: Int): CharProgression {\n checkStepIsPositive(step > 0, step)\n return CharProgression.fromClosedRange(first, last, if (this.step > 0) step else -step)\n}\n\ninternal fun Int.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toInt()..Byte.MAX_VALUE.toInt()) this.toByte() else null\n}\n\ninternal fun Long.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toLong()..Byte.MAX_VALUE.toLong()) this.toByte() else null\n}\n\ninternal fun Short.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toShort()..Byte.MAX_VALUE.toShort()) this.toByte() else null\n}\n\ninternal fun Double.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toDouble()..Byte.MAX_VALUE.toDouble()) this.toInt().toByte() else null\n}\n\ninternal fun Float.toByteExactOrNull(): Byte? {\n return if (this in Byte.MIN_VALUE.toFloat()..Byte.MAX_VALUE.toFloat()) this.toInt().toByte() else null\n}\n\ninternal fun Long.toIntExactOrNull(): Int? {\n return if (this in Int.MIN_VALUE.toLong()..Int.MAX_VALUE.toLong()) this.toInt() else null\n}\n\ninternal fun Double.toIntExactOrNull(): Int? {\n return if (this in Int.MIN_VALUE.toDouble()..Int.MAX_VALUE.toDouble()) this.toInt() else null\n}\n\ninternal fun Float.toIntExactOrNull(): Int? {\n return if (this in Int.MIN_VALUE.toFloat()..Int.MAX_VALUE.toFloat()) this.toInt() else null\n}\n\ninternal fun Double.toLongExactOrNull(): Long? {\n return if (this in Long.MIN_VALUE.toDouble()..Long.MAX_VALUE.toDouble()) this.toLong() else null\n}\n\ninternal fun Float.toLongExactOrNull(): Long? {\n return if (this in Long.MIN_VALUE.toFloat()..Long.MAX_VALUE.toFloat()) this.toLong() else null\n}\n\ninternal fun Int.toShortExactOrNull(): Short? {\n return if (this in Short.MIN_VALUE.toInt()..Short.MAX_VALUE.toInt()) this.toShort() else null\n}\n\ninternal fun Long.toShortExactOrNull(): Short? {\n return if (this in Short.MIN_VALUE.toLong()..Short.MAX_VALUE.toLong()) this.toShort() else null\n}\n\ninternal fun Double.toShortExactOrNull(): Short? {\n return if (this in Short.MIN_VALUE.toDouble()..Short.MAX_VALUE.toDouble()) this.toInt().toShort() else null\n}\n\ninternal fun Float.toShortExactOrNull(): Short? {\n return if (this in Short.MIN_VALUE.toFloat()..Short.MAX_VALUE.toFloat()) this.toInt().toShort() else null\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Int.until(to: Byte): IntRange {\n return this .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Long.until(to: Byte): LongRange {\n return this .. (to.toLong() - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Byte.until(to: Byte): IntRange {\n return this.toInt() .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Short.until(to: Byte): IntRange {\n return this.toInt() .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Char.until(to: Char): CharRange {\n if (to <= '\\u0000') return CharRange.EMPTY\n return this .. (to - 1).toChar()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Int.until(to: Int): IntRange {\n if (to <= Int.MIN_VALUE) return IntRange.EMPTY\n return this .. (to - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Long.until(to: Int): LongRange {\n return this .. (to.toLong() - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Byte.until(to: Int): IntRange {\n if (to <= Int.MIN_VALUE) return IntRange.EMPTY\n return this.toInt() .. (to - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Short.until(to: Int): IntRange {\n if (to <= Int.MIN_VALUE) return IntRange.EMPTY\n return this.toInt() .. (to - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Int.until(to: Long): LongRange {\n if (to <= Long.MIN_VALUE) return LongRange.EMPTY\n return this.toLong() .. (to - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Long.until(to: Long): LongRange {\n if (to <= Long.MIN_VALUE) return LongRange.EMPTY\n return this .. (to - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Byte.until(to: Long): LongRange {\n if (to <= Long.MIN_VALUE) return LongRange.EMPTY\n return this.toLong() .. (to - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Short.until(to: Long): LongRange {\n if (to <= Long.MIN_VALUE) return LongRange.EMPTY\n return this.toLong() .. (to - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Int.until(to: Short): IntRange {\n return this .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Long.until(to: Short): LongRange {\n return this .. (to.toLong() - 1).toLong()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Byte.until(to: Short): IntRange {\n return this.toInt() .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Returns a range from this value up to but excluding the specified [to] value.\n * \n * If the [to] value is less than or equal to `this` value, then the returned range is empty.\n */\npublic infix fun Short.until(to: Short): IntRange {\n return this.toInt() .. (to.toInt() - 1).toInt()\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeastComparable\n */\npublic fun > T.coerceAtLeast(minimumValue: T): T {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Byte.coerceAtLeast(minimumValue: Byte): Byte {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Short.coerceAtLeast(minimumValue: Short): Short {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Int.coerceAtLeast(minimumValue: Int): Int {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Long.coerceAtLeast(minimumValue: Long): Long {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Float.coerceAtLeast(minimumValue: Float): Float {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not less than the specified [minimumValue].\n * \n * @return this value if it's greater than or equal to the [minimumValue] or the [minimumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtLeast\n */\npublic fun Double.coerceAtLeast(minimumValue: Double): Double {\n return if (this < minimumValue) minimumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMostComparable\n */\npublic fun > T.coerceAtMost(maximumValue: T): T {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Byte.coerceAtMost(maximumValue: Byte): Byte {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Short.coerceAtMost(maximumValue: Short): Short {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Int.coerceAtMost(maximumValue: Int): Int {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Long.coerceAtMost(maximumValue: Long): Long {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Float.coerceAtMost(maximumValue: Float): Float {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value is not greater than the specified [maximumValue].\n * \n * @return this value if it's less than or equal to the [maximumValue] or the [maximumValue] otherwise.\n * \n * @sample samples.comparisons.ComparableOps.coerceAtMost\n */\npublic fun Double.coerceAtMost(maximumValue: Double): Double {\n return if (this > maximumValue) maximumValue else this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceInComparable\n */\npublic fun > T.coerceIn(minimumValue: T?, maximumValue: T?): T {\n if (minimumValue !== null && maximumValue !== null) {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n }\n else {\n if (minimumValue !== null && this < minimumValue) return minimumValue\n if (maximumValue !== null && this > maximumValue) return maximumValue\n }\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Byte.coerceIn(minimumValue: Byte, maximumValue: Byte): Byte {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Short.coerceIn(minimumValue: Short, maximumValue: Short): Short {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Int.coerceIn(minimumValue: Int, maximumValue: Int): Int {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Long.coerceIn(minimumValue: Long, maximumValue: Long): Long {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Float.coerceIn(minimumValue: Float, maximumValue: Float): Float {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified range [minimumValue]..[maximumValue].\n * \n * @return this value if it's in the range, or [minimumValue] if this value is less than [minimumValue], or [maximumValue] if this value is greater than [maximumValue].\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Double.coerceIn(minimumValue: Double, maximumValue: Double): Double {\n if (minimumValue > maximumValue) throw IllegalArgumentException(\"Cannot coerce value to an empty range: maximum $maximumValue is less than minimum $minimumValue.\")\n if (this < minimumValue) return minimumValue\n if (this > maximumValue) return maximumValue\n return this\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceInFloatingPointRange\n */\n@SinceKotlin(\"1.1\")\npublic fun > T.coerceIn(range: ClosedFloatingPointRange): T {\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n // this < start equiv to this <= start && !(this >= start)\n range.lessThanOrEquals(this, range.start) && !range.lessThanOrEquals(range.start, this) -> range.start\n // this > end equiv to this >= end && !(this <= end)\n range.lessThanOrEquals(range.endInclusive, this) && !range.lessThanOrEquals(this, range.endInclusive) -> range.endInclusive\n else -> this\n }\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceInComparable\n */\npublic fun > T.coerceIn(range: ClosedRange): T {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Int.coerceIn(range: ClosedRange): Int {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\n}\n\n/**\n * Ensures that this value lies in the specified [range].\n * \n * @return this value if it's in the [range], or `range.start` if this value is less than `range.start`, or `range.endInclusive` if this value is greater than `range.endInclusive`.\n * \n * @sample samples.comparisons.ComparableOps.coerceIn\n */\npublic fun Long.coerceIn(range: ClosedRange): Long {\n if (range is ClosedFloatingPointRange) {\n return this.coerceIn(range)\n }\n if (range.isEmpty()) throw IllegalArgumentException(\"Cannot coerce value to an empty range: $range.\")\n return when {\n this < range.start -> range.start\n this > range.endInclusive -> range.endInclusive\n else -> this\n }\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\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\nimport kotlin.experimental.*\n\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UByte @PublishedApi internal constructor(@PublishedApi internal val data: Byte) : Comparable {\n\n companion object {\n /**\n * A constant holding the minimum value an instance of UByte can have.\n */\n public const val MIN_VALUE: UByte = UByte(0)\n\n /**\n * A constant holding the maximum value an instance of UByte can have.\n */\n public const val MAX_VALUE: UByte = UByte(-1)\n\n /**\n * The number of bytes used to represent an instance of UByte in a binary form.\n */\n public const val SIZE_BYTES: Int = 1\n\n /**\n * The number of bits used to represent an instance of UByte in a binary form.\n */\n public const val SIZE_BITS: Int = 8\n }\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n @Suppress(\"OVERRIDE_BY_INLINE\")\n public override inline operator fun compareTo(other: UByte): Int = this.toInt().compareTo(other.toInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UShort): Int = this.toInt().compareTo(other.toInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UInt): Int = this.toUInt().compareTo(other)\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: ULong): Int = this.toULong().compareTo(other)\n\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UByte): UInt = this.toUInt().plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UShort): UInt = this.toUInt().plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UInt): UInt = this.toUInt().plus(other)\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: ULong): ULong = this.toULong().plus(other)\n\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UByte): UInt = this.toUInt().minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UShort): UInt = this.toUInt().minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UInt): UInt = this.toUInt().minus(other)\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: ULong): ULong = this.toULong().minus(other)\n\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UByte): UInt = this.toUInt().times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UShort): UInt = this.toUInt().times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UInt): UInt = this.toUInt().times(other)\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: ULong): ULong = this.toULong().times(other)\n\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UByte): UInt = this.toUInt().div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UShort): UInt = this.toUInt().div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UInt): UInt = this.toUInt().div(other)\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: ULong): ULong = this.toULong().div(other)\n\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UByte): UInt = this.toUInt().rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UShort): UInt = this.toUInt().rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UInt): UInt = this.toUInt().rem(other)\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: ULong): ULong = this.toULong().rem(other)\n\n /** Increments this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun inc(): UByte = UByte(data.inc())\n /** Decrements this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun dec(): UByte = UByte(data.dec())\n\n /** Creates a range from this value to the specified [other] value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rangeTo(other: UByte): UIntRange = UIntRange(this.toUInt(), other.toUInt())\n\n /** Performs a bitwise AND operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun and(other: UByte): UByte = UByte(this.data and other.data)\n /** Performs a bitwise OR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun or(other: UByte): UByte = UByte(this.data or other.data)\n /** Performs a bitwise XOR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun xor(other: UByte): UByte = UByte(this.data xor other.data)\n /** Inverts the bits in this value. */\n @kotlin.internal.InlineOnly\n public inline fun inv(): UByte = UByte(data.inv())\n\n /**\n * Converts this [UByte] value to [Byte].\n *\n * If this value is less than or equals to [Byte.MAX_VALUE], the resulting `Byte` value represents\n * the same numerical value as this `UByte`. Otherwise the result is negative.\n *\n * The resulting `Byte` value has the same binary representation as this `UByte` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toByte(): Byte = data\n /**\n * Converts this [UByte] value to [Short].\n *\n * The resulting `Short` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `Short` value are the same as the bits of this `UByte` value,\n * whereas the most significant 8 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toShort(): Short = data.toShort() and 0xFF\n /**\n * Converts this [UByte] value to [Int].\n *\n * The resulting `Int` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `Int` value are the same as the bits of this `UByte` value,\n * whereas the most significant 24 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toInt(): Int = data.toInt() and 0xFF\n /**\n * Converts this [UByte] value to [Long].\n *\n * The resulting `Long` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `Long` value are the same as the bits of this `UByte` value,\n * whereas the most significant 56 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toLong(): Long = data.toLong() and 0xFF\n\n /** Returns this value. */\n @kotlin.internal.InlineOnly\n public inline fun toUByte(): UByte = this\n /**\n * Converts this [UByte] value to [UShort].\n *\n * The resulting `UShort` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `UShort` value are the same as the bits of this `UByte` value,\n * whereas the most significant 8 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUShort(): UShort = UShort(data.toShort() and 0xFF)\n /**\n * Converts this [UByte] value to [UInt].\n *\n * The resulting `UInt` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `UInt` value are the same as the bits of this `UByte` value,\n * whereas the most significant 24 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUInt(): UInt = UInt(data.toInt() and 0xFF)\n /**\n * Converts this [UByte] value to [ULong].\n *\n * The resulting `ULong` value represents the same numerical value as this `UByte`.\n *\n * The least significant 8 bits of the resulting `ULong` value are the same as the bits of this `UByte` value,\n * whereas the most significant 56 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toULong(): ULong = ULong(data.toLong() and 0xFF)\n\n /**\n * Converts this [UByte] value to [Float].\n *\n * The resulting `Float` value represents the same numerical value as this `UByte`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toFloat(): Float = this.toInt().toFloat()\n /**\n * Converts this [UByte] value to [Double].\n *\n * The resulting `Double` value represents the same numerical value as this `UByte`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toDouble(): Double = this.toInt().toDouble()\n\n public override fun toString(): String = toInt().toString()\n\n}\n\n/**\n * Converts this [Byte] value to [UByte].\n *\n * If this value is positive, the resulting `UByte` value represents the same numerical value as this `Byte`.\n *\n * The resulting `UByte` value has the same binary representation as this `Byte` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Byte.toUByte(): UByte = UByte(this)\n/**\n * Converts this [Short] value to [UByte].\n *\n * If this value is positive and less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `Short`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `Short` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Short.toUByte(): UByte = UByte(this.toByte())\n/**\n * Converts this [Int] value to [UByte].\n *\n * If this value is positive and less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `Int`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `Int` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Int.toUByte(): UByte = UByte(this.toByte())\n/**\n * Converts this [Long] value to [UByte].\n *\n * If this value is positive and less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `Long`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `Long` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Long.toUByte(): UByte = UByte(this.toByte())\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// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\nimport kotlin.experimental.*\n\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UInt @PublishedApi internal constructor(@PublishedApi internal val data: Int) : Comparable {\n\n companion object {\n /**\n * A constant holding the minimum value an instance of UInt can have.\n */\n public const val MIN_VALUE: UInt = UInt(0)\n\n /**\n * A constant holding the maximum value an instance of UInt can have.\n */\n public const val MAX_VALUE: UInt = UInt(-1)\n\n /**\n * The number of bytes used to represent an instance of UInt in a binary form.\n */\n public const val SIZE_BYTES: Int = 4\n\n /**\n * The number of bits used to represent an instance of UInt in a binary form.\n */\n public const val SIZE_BITS: Int = 32\n }\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UByte): Int = this.compareTo(other.toUInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UShort): Int = this.compareTo(other.toUInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n @Suppress(\"OVERRIDE_BY_INLINE\")\n public override inline operator fun compareTo(other: UInt): Int = uintCompare(this.data, other.data)\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: ULong): Int = this.toULong().compareTo(other)\n\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UByte): UInt = this.plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UShort): UInt = this.plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UInt): UInt = UInt(this.data.plus(other.data))\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: ULong): ULong = this.toULong().plus(other)\n\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UByte): UInt = this.minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UShort): UInt = this.minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UInt): UInt = UInt(this.data.minus(other.data))\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: ULong): ULong = this.toULong().minus(other)\n\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UByte): UInt = this.times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UShort): UInt = this.times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UInt): UInt = UInt(this.data.times(other.data))\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: ULong): ULong = this.toULong().times(other)\n\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UByte): UInt = this.div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UShort): UInt = this.div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UInt): UInt = uintDivide(this, other)\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: ULong): ULong = this.toULong().div(other)\n\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UByte): UInt = this.rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UShort): UInt = this.rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UInt): UInt = uintRemainder(this, other)\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: ULong): ULong = this.toULong().rem(other)\n\n /** Increments this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun inc(): UInt = UInt(data.inc())\n /** Decrements this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun dec(): UInt = UInt(data.dec())\n\n /** Creates a range from this value to the specified [other] value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rangeTo(other: UInt): UIntRange = UIntRange(this, other)\n\n /**\n * Shifts this value left by the [bitCount] number of bits.\n *\n * Note that only the five lowest-order bits of the [bitCount] are used as the shift distance.\n * The shift distance actually used is therefore always in the range `0..31`.\n */\n @kotlin.internal.InlineOnly\n public inline infix fun shl(bitCount: Int): UInt = UInt(data shl bitCount)\n\n /**\n * Shifts this value right by the [bitCount] number of bits, filling the leftmost bits with zeros.\n *\n * Note that only the five lowest-order bits of the [bitCount] are used as the shift distance.\n * The shift distance actually used is therefore always in the range `0..31`.\n */\n @kotlin.internal.InlineOnly\n public inline infix fun shr(bitCount: Int): UInt = UInt(data ushr bitCount)\n\n /** Performs a bitwise AND operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun and(other: UInt): UInt = UInt(this.data and other.data)\n /** Performs a bitwise OR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun or(other: UInt): UInt = UInt(this.data or other.data)\n /** Performs a bitwise XOR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun xor(other: UInt): UInt = UInt(this.data xor other.data)\n /** Inverts the bits in this value. */\n @kotlin.internal.InlineOnly\n public inline fun inv(): UInt = UInt(data.inv())\n\n /**\n * Converts this [UInt] value to [Byte].\n *\n * If this value is less than or equals to [Byte.MAX_VALUE], the resulting `Byte` value represents\n * the same numerical value as this `UInt`.\n *\n * The resulting `Byte` value is represented by the least significant 8 bits of this `UInt` value.\n * Note that the resulting `Byte` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toByte(): Byte = data.toByte()\n /**\n * Converts this [UInt] value to [Short].\n *\n * If this value is less than or equals to [Short.MAX_VALUE], the resulting `Short` value represents\n * the same numerical value as this `UInt`.\n *\n * The resulting `Short` value is represented by the least significant 16 bits of this `UInt` value.\n * Note that the resulting `Short` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toShort(): Short = data.toShort()\n /**\n * Converts this [UInt] value to [Int].\n *\n * If this value is less than or equals to [Int.MAX_VALUE], the resulting `Int` value represents\n * the same numerical value as this `UInt`. Otherwise the result is negative.\n *\n * The resulting `Int` value has the same binary representation as this `UInt` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toInt(): Int = data\n /**\n * Converts this [UInt] value to [Long].\n *\n * The resulting `Long` value represents the same numerical value as this `UInt`.\n *\n * The least significant 32 bits of the resulting `Long` value are the same as the bits of this `UInt` value,\n * whereas the most significant 32 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toLong(): Long = data.toLong() and 0xFFFF_FFFF\n\n /**\n * Converts this [UInt] value to [UByte].\n *\n * If this value is less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `UInt`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `UInt` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUByte(): UByte = data.toUByte()\n /**\n * Converts this [UInt] value to [UShort].\n *\n * If this value is less than or equals to [UShort.MAX_VALUE], the resulting `UShort` value represents\n * the same numerical value as this `UInt`.\n *\n * The resulting `UShort` value is represented by the least significant 16 bits of this `UInt` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUShort(): UShort = data.toUShort()\n /** Returns this value. */\n @kotlin.internal.InlineOnly\n public inline fun toUInt(): UInt = this\n /**\n * Converts this [UInt] value to [ULong].\n *\n * The resulting `ULong` value represents the same numerical value as this `UInt`.\n *\n * The least significant 32 bits of the resulting `ULong` value are the same as the bits of this `UInt` value,\n * whereas the most significant 32 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toULong(): ULong = ULong(data.toLong() and 0xFFFF_FFFF)\n\n /**\n * Converts this [UInt] value to [Float].\n *\n * The resulting value is the closest `Float` to this `UInt` value.\n * In case when this `UInt` value is exactly between two `Float`s,\n * the one with zero at least significant bit of mantissa is selected.\n */\n @kotlin.internal.InlineOnly\n public inline fun toFloat(): Float = this.toDouble().toFloat()\n /**\n * Converts this [UInt] value to [Double].\n *\n * The resulting `Double` value represents the same numerical value as this `UInt`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toDouble(): Double = uintToDouble(data)\n\n public override fun toString(): String = toLong().toString()\n\n}\n\n/**\n * Converts this [Byte] value to [UInt].\n *\n * If this value is positive, the resulting `UInt` value represents the same numerical value as this `Byte`.\n *\n * The least significant 8 bits of the resulting `UInt` value are the same as the bits of this `Byte` value,\n * whereas the most significant 24 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Byte.toUInt(): UInt = UInt(this.toInt())\n/**\n * Converts this [Short] value to [UInt].\n *\n * If this value is positive, the resulting `UInt` value represents the same numerical value as this `Short`.\n *\n * The least significant 16 bits of the resulting `UInt` value are the same as the bits of this `Short` value,\n * whereas the most significant 16 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Short.toUInt(): UInt = UInt(this.toInt())\n/**\n * Converts this [Int] value to [UInt].\n *\n * If this value is positive, the resulting `UInt` value represents the same numerical value as this `Int`.\n *\n * The resulting `UInt` value has the same binary representation as this `Int` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Int.toUInt(): UInt = UInt(this)\n/**\n * Converts this [Long] value to [UInt].\n *\n * If this value is positive and less than or equals to [UInt.MAX_VALUE], the resulting `UInt` value represents\n * the same numerical value as this `Long`.\n *\n * The resulting `UInt` value is represented by the least significant 32 bits of this `Long` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Long.toUInt(): UInt = UInt(this.toInt())\n\n/**\n * Converts this [Float] value to [UInt].\n *\n * The fractional part, if any, is rounded down towards zero.\n * Returns zero if this `Float` value is negative or `NaN`, [UInt.MAX_VALUE] if it's bigger than `UInt.MAX_VALUE`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Float.toUInt(): UInt = doubleToUInt(this.toDouble())\n/**\n * Converts this [Double] value to [UInt].\n *\n * The fractional part, if any, is rounded down towards zero.\n * Returns zero if this `Double` value is negative or `NaN`, [UInt.MAX_VALUE] if it's bigger than `UInt.MAX_VALUE`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Double.toUInt(): UInt = doubleToUInt(this)\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// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\nimport kotlin.experimental.*\n\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class UShort @PublishedApi internal constructor(@PublishedApi internal val data: Short) : Comparable {\n\n companion object {\n /**\n * A constant holding the minimum value an instance of UShort can have.\n */\n public const val MIN_VALUE: UShort = UShort(0)\n\n /**\n * A constant holding the maximum value an instance of UShort can have.\n */\n public const val MAX_VALUE: UShort = UShort(-1)\n\n /**\n * The number of bytes used to represent an instance of UShort in a binary form.\n */\n public const val SIZE_BYTES: Int = 2\n\n /**\n * The number of bits used to represent an instance of UShort in a binary form.\n */\n public const val SIZE_BITS: Int = 16\n }\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UByte): Int = this.toInt().compareTo(other.toInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n @Suppress(\"OVERRIDE_BY_INLINE\")\n public override inline operator fun compareTo(other: UShort): Int = this.toInt().compareTo(other.toInt())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UInt): Int = this.toUInt().compareTo(other)\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: ULong): Int = this.toULong().compareTo(other)\n\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UByte): UInt = this.toUInt().plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UShort): UInt = this.toUInt().plus(other.toUInt())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UInt): UInt = this.toUInt().plus(other)\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: ULong): ULong = this.toULong().plus(other)\n\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UByte): UInt = this.toUInt().minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UShort): UInt = this.toUInt().minus(other.toUInt())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UInt): UInt = this.toUInt().minus(other)\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: ULong): ULong = this.toULong().minus(other)\n\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UByte): UInt = this.toUInt().times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UShort): UInt = this.toUInt().times(other.toUInt())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UInt): UInt = this.toUInt().times(other)\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: ULong): ULong = this.toULong().times(other)\n\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UByte): UInt = this.toUInt().div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UShort): UInt = this.toUInt().div(other.toUInt())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UInt): UInt = this.toUInt().div(other)\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: ULong): ULong = this.toULong().div(other)\n\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UByte): UInt = this.toUInt().rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UShort): UInt = this.toUInt().rem(other.toUInt())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UInt): UInt = this.toUInt().rem(other)\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: ULong): ULong = this.toULong().rem(other)\n\n /** Increments this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun inc(): UShort = UShort(data.inc())\n /** Decrements this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun dec(): UShort = UShort(data.dec())\n\n /** Creates a range from this value to the specified [other] value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rangeTo(other: UShort): UIntRange = UIntRange(this.toUInt(), other.toUInt())\n\n /** Performs a bitwise AND operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun and(other: UShort): UShort = UShort(this.data and other.data)\n /** Performs a bitwise OR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun or(other: UShort): UShort = UShort(this.data or other.data)\n /** Performs a bitwise XOR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun xor(other: UShort): UShort = UShort(this.data xor other.data)\n /** Inverts the bits in this value. */\n @kotlin.internal.InlineOnly\n public inline fun inv(): UShort = UShort(data.inv())\n\n /**\n * Converts this [UShort] value to [Byte].\n *\n * If this value is less than or equals to [Byte.MAX_VALUE], the resulting `Byte` value represents\n * the same numerical value as this `UShort`.\n *\n * The resulting `Byte` value is represented by the least significant 8 bits of this `UShort` value.\n * Note that the resulting `Byte` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toByte(): Byte = data.toByte()\n /**\n * Converts this [UShort] value to [Short].\n *\n * If this value is less than or equals to [Short.MAX_VALUE], the resulting `Short` value represents\n * the same numerical value as this `UShort`. Otherwise the result is negative.\n *\n * The resulting `Short` value has the same binary representation as this `UShort` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toShort(): Short = data\n /**\n * Converts this [UShort] value to [Int].\n *\n * The resulting `Int` value represents the same numerical value as this `UShort`.\n *\n * The least significant 16 bits of the resulting `Int` value are the same as the bits of this `UShort` value,\n * whereas the most significant 16 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toInt(): Int = data.toInt() and 0xFFFF\n /**\n * Converts this [UShort] value to [Long].\n *\n * The resulting `Long` value represents the same numerical value as this `UShort`.\n *\n * The least significant 16 bits of the resulting `Long` value are the same as the bits of this `UShort` value,\n * whereas the most significant 48 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toLong(): Long = data.toLong() and 0xFFFF\n\n /**\n * Converts this [UShort] value to [UByte].\n *\n * If this value is less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `UShort`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `UShort` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUByte(): UByte = data.toUByte()\n /** Returns this value. */\n @kotlin.internal.InlineOnly\n public inline fun toUShort(): UShort = this\n /**\n * Converts this [UShort] value to [UInt].\n *\n * The resulting `UInt` value represents the same numerical value as this `UShort`.\n *\n * The least significant 16 bits of the resulting `UInt` value are the same as the bits of this `UShort` value,\n * whereas the most significant 16 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUInt(): UInt = UInt(data.toInt() and 0xFFFF)\n /**\n * Converts this [UShort] value to [ULong].\n *\n * The resulting `ULong` value represents the same numerical value as this `UShort`.\n *\n * The least significant 16 bits of the resulting `ULong` value are the same as the bits of this `UShort` value,\n * whereas the most significant 48 bits are filled with zeros.\n */\n @kotlin.internal.InlineOnly\n public inline fun toULong(): ULong = ULong(data.toLong() and 0xFFFF)\n\n /**\n * Converts this [UShort] value to [Float].\n *\n * The resulting `Float` value represents the same numerical value as this `UShort`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toFloat(): Float = this.toInt().toFloat()\n /**\n * Converts this [UShort] value to [Double].\n *\n * The resulting `Double` value represents the same numerical value as this `UShort`.\n */\n @kotlin.internal.InlineOnly\n public inline fun toDouble(): Double = this.toInt().toDouble()\n\n public override fun toString(): String = toInt().toString()\n\n}\n\n/**\n * Converts this [Byte] value to [UShort].\n *\n * If this value is positive, the resulting `UShort` value represents the same numerical value as this `Byte`.\n *\n * The least significant 8 bits of the resulting `UShort` value are the same as the bits of this `Byte` value,\n * whereas the most significant 8 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Byte.toUShort(): UShort = UShort(this.toShort())\n/**\n * Converts this [Short] value to [UShort].\n *\n * If this value is positive, the resulting `UShort` value represents the same numerical value as this `Short`.\n *\n * The resulting `UShort` value has the same binary representation as this `Short` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Short.toUShort(): UShort = UShort(this)\n/**\n * Converts this [Int] value to [UShort].\n *\n * If this value is positive and less than or equals to [UShort.MAX_VALUE], the resulting `UShort` value represents\n * the same numerical value as this `Int`.\n *\n * The resulting `UShort` value is represented by the least significant 16 bits of this `Int` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Int.toUShort(): UShort = UShort(this.toShort())\n/**\n * Converts this [Long] value to [UShort].\n *\n * If this value is positive and less than or equals to [UShort.MAX_VALUE], the resulting `UShort` value represents\n * the same numerical value as this `Long`.\n *\n * The resulting `UShort` value is represented by the least significant 16 bits of this `Long` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Long.toUShort(): UShort = UShort(this.toShort())\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// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\n/**\n * A range of values of type `Char`.\n */\npublic class CharRange(start: Char, endInclusive: Char) : CharProgression(start, endInclusive, 1), ClosedRange {\n override val start: Char get() = first\n override val endInclusive: Char get() = last\n\n override fun contains(value: Char): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is CharRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * first.toInt() + last.toInt())\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type Char. */\n public val EMPTY: CharRange = CharRange(1.toChar(), 0.toChar())\n }\n}\n\n/**\n * A range of values of type `Int`.\n */\npublic class IntRange(start: Int, endInclusive: Int) : IntProgression(start, endInclusive, 1), ClosedRange {\n override val start: Int get() = first\n override val endInclusive: Int get() = last\n\n override fun contains(value: Int): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is IntRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * first + last)\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type Int. */\n public val EMPTY: IntRange = IntRange(1, 0)\n }\n}\n\n/**\n * A range of values of type `Long`.\n */\npublic class LongRange(start: Long, endInclusive: Long) : LongProgression(start, endInclusive, 1), ClosedRange {\n override val start: Long get() = first\n override val endInclusive: Long get() = last\n\n override fun contains(value: Long): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is LongRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (first xor (first ushr 32)) + (last xor (last ushr 32))).toInt()\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type Long. */\n public val EMPTY: LongRange = LongRange(1, 0)\n }\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\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 {\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, 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): 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 = EmptyIterator\n override fun listIterator(): ListIterator = EmptyIterator\n override fun listIterator(index: Int): ListIterator {\n if (index != 0) throw IndexOutOfBoundsException(\"Index: $index\")\n return EmptyIterator\n }\n\n override fun subList(fromIndex: Int, toIndex: Int): List {\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 Array.asCollection(): Collection = ArrayAsCollection(this, isVarargs = false)\n\nprivate class ArrayAsCollection(val values: Array, val isVarargs: Boolean) : Collection {\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): Boolean = elements.all { contains(it) }\n override fun iterator(): Iterator = values.iterator()\n // override hidden toArray implementation to prevent copying of values array\n public fun toArray(): Array = 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 emptyList(): List = 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 listOf(vararg elements: T): List = 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 listOf(): List = 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 mutableListOf(): MutableList = 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 arrayListOf(): ArrayList = ArrayList()\n\n/**\n * Returns a new [MutableList] with the given elements.\n * @sample samples.collections.Collections.Lists.mutableList\n */\npublic fun mutableListOf(vararg elements: T): MutableList =\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 arrayListOf(vararg elements: T): ArrayList =\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 listOfNotNull(element: T?): List = 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 listOfNotNull(vararg elements: T?): List = 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 List(size: Int, init: (index: Int) -> T): List = 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 MutableList(size: Int, init: (index: Int) -> T): MutableList {\n val list = ArrayList(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 buildList(@BuilderInference builderAction: MutableList.() -> Unit): List {\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 buildListInternal(builderAction: MutableList.() -> Unit): List\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.buildListSampleWithCapacity\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildList(capacity: Int, @BuilderInference builderAction: MutableList.() -> Unit): List {\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 buildListInternal(capacity: Int, builderAction: MutableList.() -> Unit): List\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 List.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 Collection.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 Collection?.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 Collection?.orEmpty(): Collection = 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 List?.orEmpty(): List = 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.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`.\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.containsAll(elements: Collection): 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 Iterable.shuffled(random: Random): List = toMutableList().apply { shuffle(random) }\n\n\ninternal fun List.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 > List.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 List.binarySearch(element: T, comparator: Comparator, 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 > List.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 List.binarySearchBy(key: K, comparator: Comparator, 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 List.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","/*\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, 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> get() = EmptySet\n override val keys: Set get() = EmptySet\n override val values: Collection 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 emptyMap(): Map = @Suppress(\"UNCHECKED_CAST\") (EmptyMap as Map)\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 mapOf(vararg pairs: Pair): Map =\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 mapOf(): Map = 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 mutableMapOf(): MutableMap = 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 mutableMapOf(vararg pairs: Pair): MutableMap =\n LinkedHashMap(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 hashMapOf(): HashMap = HashMap()\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 hashMapOf(vararg pairs: Pair): HashMap = HashMap(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 linkedMapOf(): LinkedHashMap = LinkedHashMap()\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 linkedMapOf(vararg pairs: Pair): LinkedHashMap = 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 buildMap(@BuilderInference builderAction: MutableMap.() -> Unit): Map {\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 buildMapInternal(builderAction: MutableMap.() -> Unit): Map\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 buildMap(capacity: Int, @BuilderInference builderAction: MutableMap.() -> Unit): Map {\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 buildMapInternal(capacity: Int, builderAction: MutableMap.() -> Unit): Map\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 Map.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 Map?.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 Map?.orEmpty(): Map = 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.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.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.get(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as Map).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 MutableMap.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.containsKey(key: K): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as Map).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 Map.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.remove(key: K): V? =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableMap).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 Map.Entry.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 Map.Entry.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 Map.Entry.toPair(): Pair = 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 Map.getOrElse(key: K, defaultValue: () -> V): V = get(key) ?: defaultValue()\n\n\ninternal inline fun Map.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 Map.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 MutableMap.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 Map.iterator(): Iterator> = 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 MutableMap.iterator(): MutableIterator> = 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 > Map.mapValuesTo(destination: M, transform: (Map.Entry) -> 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 > Map.mapKeysTo(destination: M, transform: (Map.Entry) -> 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 MutableMap.putAll(pairs: Array>): 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 MutableMap.putAll(pairs: Iterable>): 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 MutableMap.putAll(pairs: Sequence>): 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 Map.mapValues(transform: (Map.Entry) -> R): Map {\n return mapValuesTo(LinkedHashMap(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 Map.mapKeys(transform: (Map.Entry) -> R): Map {\n return mapKeysTo(LinkedHashMap(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 Map.filterKeys(predicate: (K) -> Boolean): Map {\n val result = LinkedHashMap()\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 Map.filterValues(predicate: (V) -> Boolean): Map {\n val result = LinkedHashMap()\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 > Map.filterTo(destination: M, predicate: (Map.Entry) -> 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 Map.filter(predicate: (Map.Entry) -> Boolean): Map {\n return filterTo(LinkedHashMap(), 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 > Map.filterNotTo(destination: M, predicate: (Map.Entry) -> 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 Map.filterNot(predicate: (Map.Entry) -> Boolean): Map {\n return filterNotTo(LinkedHashMap(), 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 Iterable>.toMap(): Map {\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(mapCapacity(size)))\n }\n }\n return toMap(LinkedHashMap()).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 > Iterable>.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 Array>.toMap(): Map = when (size) {\n 0 -> emptyMap()\n 1 -> mapOf(this[0])\n else -> toMap(LinkedHashMap(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 > Array>.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 Sequence>.toMap(): Map = toMap(LinkedHashMap()).optimizeReadOnlyMap()\n\n/**\n * Populates and returns the [destination] mutable map with key-value pairs from the given sequence of pairs.\n */\npublic fun > Sequence>.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 Map.toMap(): Map = 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 Map.toMutableMap(): MutableMap = 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 > Map.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 Map.plus(pair: Pair): Map =\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 Map.plus(pairs: Iterable>): Map =\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 Map.plus(pairs: Array>): Map =\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 Map.plus(pairs: Sequence>): Map =\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 Map.plus(map: Map): Map =\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 MutableMap.plusAssign(pair: Pair) {\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 MutableMap.plusAssign(pairs: Iterable>) {\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 MutableMap.plusAssign(pairs: Array>) {\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 MutableMap.plusAssign(pairs: Sequence>) {\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 MutableMap.plusAssign(map: Map) {\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 Map.minus(key: K): Map =\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 Map.minus(keys: Iterable): Map =\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 Map.minus(keys: Array): Map =\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 Map.minus(keys: Sequence): Map =\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 MutableMap.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 MutableMap.minusAssign(keys: Iterable) {\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 MutableMap.minusAssign(keys: Array) {\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 MutableMap.minusAssign(keys: Sequence) {\n this.keys.removeAll(keys)\n}\n\n\n// do not expose for now @PublishedApi\ninternal fun Map.optimizeReadOnlyMap() = when (size) {\n 0 -> emptyMap()\n 1 -> toSingletonMapOrSelf()\n else -> this\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(\"SetsKt\")\n@file:OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n\npackage kotlin.collections\n\nimport kotlin.contracts.*\n\ninternal object EmptySet : Set, Serializable {\n private const val serialVersionUID: Long = 3406603774387020532\n\n override fun equals(other: Any?): Boolean = other is Set<*> && 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 override fun contains(element: Nothing): Boolean = false\n override fun containsAll(elements: Collection): Boolean = elements.isEmpty()\n\n override fun iterator(): Iterator = EmptyIterator\n\n private fun readResolve(): Any = EmptySet\n}\n\n\n/**\n * Returns an empty read-only set. The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.emptyReadOnlySet\n */\npublic fun emptySet(): Set = EmptySet\n\n/**\n * Returns a new read-only set with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.readOnlySet\n */\npublic fun setOf(vararg elements: T): Set = if (elements.size > 0) elements.toSet() else emptySet()\n\n/**\n * Returns an empty read-only set. The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.emptyReadOnlySet\n */\n@kotlin.internal.InlineOnly\npublic inline fun setOf(): Set = emptySet()\n\n/**\n * Returns an empty new [MutableSet].\n *\n * The returned set preserves the element iteration order.\n * @sample samples.collections.Collections.Sets.emptyMutableSet\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun mutableSetOf(): MutableSet = LinkedHashSet()\n\n/**\n * Returns a new [MutableSet] with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * @sample samples.collections.Collections.Sets.mutableSet\n */\npublic fun mutableSetOf(vararg elements: T): MutableSet = elements.toCollection(LinkedHashSet(mapCapacity(elements.size)))\n\n/** Returns an empty new [HashSet]. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun hashSetOf(): HashSet = HashSet()\n\n/** Returns a new [HashSet] with the given elements. */\npublic fun hashSetOf(vararg elements: T): HashSet = elements.toCollection(HashSet(mapCapacity(elements.size)))\n\n/**\n * Returns an empty new [LinkedHashSet].\n * @sample samples.collections.Collections.Sets.emptyLinkedHashSet\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun linkedSetOf(): LinkedHashSet = LinkedHashSet()\n\n/**\n * Returns a new [LinkedHashSet] with the given elements.\n * Elements of the set are iterated in the order they were specified.\n * @sample samples.collections.Collections.Sets.linkedHashSet\n */\npublic fun linkedSetOf(vararg elements: T): LinkedHashSet = elements.toCollection(LinkedHashSet(mapCapacity(elements.size)))\n\n/**\n * Returns a new read-only set either with single given element, if it is not null, or empty set if the element is null.\n * The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.setOfNotNull\n */\n@SinceKotlin(\"1.4\")\npublic fun setOfNotNull(element: T?): Set = if (element != null) setOf(element) else emptySet()\n\n/**\n * Returns a new read-only set only with those given elements, that are not null.\n * Elements of the set are iterated in the order they were specified.\n * The returned set is serializable (JVM).\n * @sample samples.collections.Collections.Sets.setOfNotNull\n */\n@SinceKotlin(\"1.4\")\npublic fun setOfNotNull(vararg elements: T?): Set {\n return elements.filterNotNullTo(LinkedHashSet())\n}\n\n/**\n * Builds a new read-only [Set] by populating a [MutableSet] using the given [builderAction]\n * and returning a read-only set with the same elements.\n *\n * The set 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 * Elements of the set are iterated in the order they were added by the [builderAction].\n *\n * @sample samples.collections.Builders.Sets.buildSetSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildSet(@BuilderInference builderAction: MutableSet.() -> Unit): Set {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return buildSetInternal(builderAction)\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal expect inline fun buildSetInternal(builderAction: MutableSet.() -> Unit): Set\n\n/**\n * Builds a new read-only [Set] by populating a [MutableSet] using the given [builderAction]\n * and returning a read-only set with the same elements.\n *\n * The set 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 * Elements of the set 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.Sets.buildSetSample\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic inline fun buildSet(capacity: Int, @BuilderInference builderAction: MutableSet.() -> Unit): Set {\n contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }\n return buildSetInternal(capacity, builderAction)\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal expect inline fun buildSetInternal(capacity: Int, builderAction: MutableSet.() -> Unit): Set\n\n\n/** Returns this Set if it's not `null` and the empty set otherwise. */\n@kotlin.internal.InlineOnly\npublic inline fun Set?.orEmpty(): Set = this ?: emptySet()\n\ninternal fun Set.optimizeReadOnlySet() = when (size) {\n 0 -> emptySet()\n 1 -> setOf(iterator().next())\n else -> this\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(\"StringsKt\")\n@file:Suppress(\"PLATFORM_CLASS_MAPPED_TO_KOTLIN\")\n\npackage kotlin.text\n\n/**\n * Parses the string as a signed [Byte] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toByteOrNull(): Byte? = toByteOrNull(radix = 10)\n\n/**\n * Parses the string as a signed [Byte] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toByteOrNull(radix: Int): Byte? {\n val int = this.toIntOrNull(radix) ?: return null\n if (int < Byte.MIN_VALUE || int > Byte.MAX_VALUE) return null\n return int.toByte()\n}\n\n/**\n * Parses the string as a [Short] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toShortOrNull(): Short? = toShortOrNull(radix = 10)\n\n/**\n * Parses the string as a [Short] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toShortOrNull(radix: Int): Short? {\n val int = this.toIntOrNull(radix) ?: return null\n if (int < Short.MIN_VALUE || int > Short.MAX_VALUE) return null\n return int.toShort()\n}\n\n/**\n * Parses the string as an [Int] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toIntOrNull(): Int? = toIntOrNull(radix = 10)\n\n/**\n * Parses the string as an [Int] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toIntOrNull(radix: Int): Int? {\n checkRadix(radix)\n\n val length = this.length\n if (length == 0) return null\n\n val start: Int\n val isNegative: Boolean\n val limit: Int\n\n val firstChar = this[0]\n if (firstChar < '0') { // Possible leading sign\n if (length == 1) return null // non-digit (possible sign) only, no digits after\n\n start = 1\n\n if (firstChar == '-') {\n isNegative = true\n limit = Int.MIN_VALUE\n } else if (firstChar == '+') {\n isNegative = false\n limit = -Int.MAX_VALUE\n } else\n return null\n } else {\n start = 0\n isNegative = false\n limit = -Int.MAX_VALUE\n }\n\n\n val limitForMaxRadix = (-Int.MAX_VALUE) / 36\n\n var limitBeforeMul = limitForMaxRadix\n var result = 0\n for (i in start until length) {\n val digit = digitOf(this[i], radix)\n\n if (digit < 0) return null\n if (result < limitBeforeMul) {\n if (limitBeforeMul == limitForMaxRadix) {\n limitBeforeMul = limit / radix\n\n if (result < limitBeforeMul) {\n return null\n }\n } else {\n return null\n }\n }\n\n result *= radix\n\n if (result < limit + digit) return null\n\n result -= digit\n }\n\n return if (isNegative) result else -result\n}\n\n/**\n * Parses the string as a [Long] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toLongOrNull(): Long? = toLongOrNull(radix = 10)\n\n/**\n * Parses the string as a [Long] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.1\")\npublic fun String.toLongOrNull(radix: Int): Long? {\n checkRadix(radix)\n\n val length = this.length\n if (length == 0) return null\n\n val start: Int\n val isNegative: Boolean\n val limit: Long\n\n val firstChar = this[0]\n if (firstChar < '0') { // Possible leading sign\n if (length == 1) return null // non-digit (possible sign) only, no digits after\n\n start = 1\n\n if (firstChar == '-') {\n isNegative = true\n limit = Long.MIN_VALUE\n } else if (firstChar == '+') {\n isNegative = false\n limit = -Long.MAX_VALUE\n } else\n return null\n } else {\n start = 0\n isNegative = false\n limit = -Long.MAX_VALUE\n }\n\n\n val limitForMaxRadix = (-Long.MAX_VALUE) / 36\n\n var limitBeforeMul = limitForMaxRadix\n var result = 0L\n for (i in start until length) {\n val digit = digitOf(this[i], radix)\n\n if (digit < 0) return null\n if (result < limitBeforeMul) {\n if (limitBeforeMul == limitForMaxRadix) {\n limitBeforeMul = limit / radix\n\n if (result < limitBeforeMul) {\n return null\n }\n } else {\n return null\n }\n }\n\n result *= radix\n\n if (result < limit + digit) return null\n\n result -= digit\n }\n\n return if (isNegative) result else -result\n}\n\n\ninternal fun numberFormatError(input: String): Nothing = throw NumberFormatException(\"Invalid number format: '$input'\")\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@file:kotlin.jvm.JvmName(\"UnsignedKt\")\n@file:OptIn(ExperimentalUnsignedTypes::class)\npackage kotlin\n\n@PublishedApi\ninternal fun uintCompare(v1: Int, v2: Int): Int = (v1 xor Int.MIN_VALUE).compareTo(v2 xor Int.MIN_VALUE)\n@PublishedApi\ninternal fun ulongCompare(v1: Long, v2: Long): Int = (v1 xor Long.MIN_VALUE).compareTo(v2 xor Long.MIN_VALUE)\n\n@PublishedApi\ninternal fun uintDivide(v1: UInt, v2: UInt): UInt = (v1.toLong() / v2.toLong()).toUInt()\n@PublishedApi\ninternal fun uintRemainder(v1: UInt, v2: UInt): UInt = (v1.toLong() % v2.toLong()).toUInt()\n\n// Division and remainder are based on Guava's UnsignedLongs implementation\n// Copyright 2011 The Guava Authors\n\n@PublishedApi\ninternal fun ulongDivide(v1: ULong, v2: ULong): ULong {\n val dividend = v1.toLong()\n val divisor = v2.toLong()\n if (divisor < 0) { // i.e., divisor >= 2^63:\n return if (v1 < v2) ULong(0) else ULong(1)\n }\n\n // Optimization - use signed division if both dividend and divisor < 2^63\n if (dividend >= 0) {\n return ULong(dividend / divisor)\n }\n\n // Otherwise, approximate the quotient, check, and correct if necessary.\n val quotient = ((dividend ushr 1) / divisor) shl 1\n val rem = dividend - quotient * divisor\n return ULong(quotient + if (ULong(rem) >= ULong(divisor)) 1 else 0)\n\n}\n\n@PublishedApi\ninternal fun ulongRemainder(v1: ULong, v2: ULong): ULong {\n val dividend = v1.toLong()\n val divisor = v2.toLong()\n if (divisor < 0) { // i.e., divisor >= 2^63:\n return if (v1 < v2) {\n v1 // dividend < divisor\n } else {\n v1 - v2 // dividend >= divisor\n }\n }\n\n // Optimization - use signed modulus if both dividend and divisor < 2^63\n if (dividend >= 0) {\n return ULong(dividend % divisor)\n }\n\n // Otherwise, approximate the quotient, check, and correct if necessary.\n val quotient = ((dividend ushr 1) / divisor) shl 1\n val rem = dividend - quotient * divisor\n return ULong(rem - if (ULong(rem) >= ULong(divisor)) divisor else 0)\n}\n\n@PublishedApi\ninternal fun doubleToUInt(v: Double): UInt = when {\n v.isNaN() -> 0u\n v <= UInt.MIN_VALUE.toDouble() -> UInt.MIN_VALUE\n v >= UInt.MAX_VALUE.toDouble() -> UInt.MAX_VALUE\n v <= Int.MAX_VALUE -> v.toInt().toUInt()\n else -> (v - Int.MAX_VALUE).toInt().toUInt() + Int.MAX_VALUE.toUInt() // Int.MAX_VALUE < v < UInt.MAX_VALUE\n}\n\n@PublishedApi\ninternal fun doubleToULong(v: Double): ULong = when {\n v.isNaN() -> 0u\n v <= ULong.MIN_VALUE.toDouble() -> ULong.MIN_VALUE\n v >= ULong.MAX_VALUE.toDouble() -> ULong.MAX_VALUE\n v < Long.MAX_VALUE -> v.toLong().toULong()\n\n // Real values from Long.MAX_VALUE to (Long.MAX_VALUE + 1) are not representable in Double, so don't handle them.\n else -> (v - 9223372036854775808.0).toLong().toULong() + 9223372036854775808uL // Long.MAX_VALUE + 1 < v < ULong.MAX_VALUE\n}\n\n\n@PublishedApi\ninternal fun uintToDouble(v: Int): Double = (v and Int.MAX_VALUE).toDouble() + (v ushr 31 shl 30).toDouble() * 2\n\n@PublishedApi\ninternal fun ulongToDouble(v: Long): Double = (v ushr 11).toDouble() * 2048 + (v and 2047)\n\n\ninternal fun ulongToString(v: Long): String = ulongToString(v, 10)\n\ninternal fun ulongToString(v: Long, base: Int): String {\n if (v >= 0) return v.toString(base)\n\n var quotient = ((v ushr 1) / base) shl 1\n var rem = v - quotient * base\n if (rem >= base) {\n rem -= base\n quotient += 1\n }\n return quotient.toString(base) + rem.toString(base)\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\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SequencesKt\")\n\npackage kotlin.sequences\n\nimport kotlin.random.Random\n\n/**\n * Given an [iterator] function constructs a [Sequence] that returns values through the [Iterator]\n * provided by that function.\n * The values are evaluated lazily, and the sequence is potentially infinite.\n *\n * @sample samples.collections.Sequences.Building.sequenceFromIterator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence(crossinline iterator: () -> Iterator): Sequence = object : Sequence {\n override fun iterator(): Iterator = iterator()\n}\n\n/**\n * Creates a sequence that returns all elements from this iterator. The sequence is constrained to be iterated only once.\n *\n * @sample samples.collections.Sequences.Building.sequenceFromIterator\n */\npublic fun Iterator.asSequence(): Sequence = Sequence { this }.constrainOnce()\n\n/**\n * Creates a sequence that returns the specified values.\n *\n * @sample samples.collections.Sequences.Building.sequenceOfValues\n */\npublic fun sequenceOf(vararg elements: T): Sequence = if (elements.isEmpty()) emptySequence() else elements.asSequence()\n\n/**\n * Returns an empty sequence.\n */\npublic fun emptySequence(): Sequence = EmptySequence\n\nprivate object EmptySequence : Sequence, DropTakeSequence {\n override fun iterator(): Iterator = EmptyIterator\n override fun drop(n: Int) = EmptySequence\n override fun take(n: Int) = EmptySequence\n}\n\n/**\n * Returns this sequence if it's not `null` and the empty sequence otherwise.\n * @sample samples.collections.Sequences.Usage.sequenceOrEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun Sequence?.orEmpty(): Sequence = this ?: emptySequence()\n\n\n/**\n * Returns a sequence that iterates through the elements either of this sequence\n * or, if this sequence turns out to be empty, of the sequence returned by [defaultValue] function.\n *\n * @sample samples.collections.Sequences.Usage.sequenceIfEmpty\n */\n@SinceKotlin(\"1.3\")\npublic fun Sequence.ifEmpty(defaultValue: () -> Sequence): Sequence = sequence {\n val iterator = this@ifEmpty.iterator()\n if (iterator.hasNext()) {\n yieldAll(iterator)\n } else {\n yieldAll(defaultValue())\n }\n}\n\n/**\n * Returns a sequence of all elements from all sequences in this sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n *\n * @sample samples.collections.Sequences.Transformations.flattenSequenceOfSequences\n */\npublic fun Sequence>.flatten(): Sequence = flatten { it.iterator() }\n\n/**\n * Returns a sequence of all elements from all iterables in this sequence.\n *\n * The operation is _intermediate_ and _stateless_.\n *\n * @sample samples.collections.Sequences.Transformations.flattenSequenceOfLists\n */\n@kotlin.jvm.JvmName(\"flattenSequenceOfIterable\")\npublic fun Sequence>.flatten(): Sequence = flatten { it.iterator() }\n\nprivate fun Sequence.flatten(iterator: (T) -> Iterator): Sequence {\n if (this is TransformingSequence<*, *>) {\n return (this as TransformingSequence<*, T>).flatten(iterator)\n }\n return FlatteningSequence(this, { it }, iterator)\n}\n\n/**\n * Returns a pair of lists, where\n * *first* list is built from the first values of each pair from this sequence,\n * *second* list is built from the second values of each pair from this sequence.\n *\n * The operation is _terminal_.\n *\n * @sample samples.collections.Sequences.Transformations.unzip\n */\npublic fun Sequence>.unzip(): Pair, List> {\n val listT = ArrayList()\n val listR = ArrayList()\n for (pair in this) {\n listT.add(pair.first)\n listR.add(pair.second)\n }\n return listT to listR\n}\n\n/**\n * Returns a sequence that yields elements of this sequence randomly shuffled.\n *\n * Note that every iteration of the sequence returns elements in a different order.\n *\n * The operation is _intermediate_ and _stateful_.\n */\n@SinceKotlin(\"1.4\")\npublic fun Sequence.shuffled(): Sequence = shuffled(Random)\n\n/**\n * Returns a sequence that yields elements of this sequence randomly shuffled\n * using the specified [random] instance as the source of randomness.\n *\n * Note that every iteration of the sequence returns elements in a different order.\n *\n * The operation is _intermediate_ and _stateful_.\n */\n@SinceKotlin(\"1.4\")\npublic fun Sequence.shuffled(random: Random): Sequence = sequence {\n val buffer = toMutableList()\n while (buffer.isNotEmpty()) {\n val j = random.nextInt(buffer.size)\n val last = @OptIn(ExperimentalStdlibApi::class) buffer.removeLast()\n val value = if (j < buffer.size) buffer.set(j, last) else last\n yield(value)\n }\n}\n\n\n/**\n * A sequence that returns the values from the underlying [sequence] that either match or do not match\n * the specified [predicate].\n *\n * @param sendWhen If `true`, values for which the predicate returns `true` are returned. Otherwise,\n * values for which the predicate returns `false` are returned\n */\ninternal class FilteringSequence(\n private val sequence: Sequence,\n private val sendWhen: Boolean = true,\n private val predicate: (T) -> Boolean\n) : Sequence {\n\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue\n var nextItem: T? = null\n\n private fun calcNext() {\n while (iterator.hasNext()) {\n val item = iterator.next()\n if (predicate(item) == sendWhen) {\n nextItem = item\n nextState = 1\n return\n }\n }\n nextState = 0\n }\n\n override fun next(): T {\n if (nextState == -1)\n calcNext()\n if (nextState == 0)\n throw NoSuchElementException()\n val result = nextItem\n nextItem = null\n nextState = -1\n @Suppress(\"UNCHECKED_CAST\")\n return result as T\n }\n\n override fun hasNext(): Boolean {\n if (nextState == -1)\n calcNext()\n return nextState == 1\n }\n }\n}\n\n/**\n * A sequence which returns the results of applying the given [transformer] function to the values\n * in the underlying [sequence].\n */\n\ninternal class TransformingSequence\nconstructor(private val sequence: Sequence, private val transformer: (T) -> R) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n override fun next(): R {\n return transformer(iterator.next())\n }\n\n override fun hasNext(): Boolean {\n return iterator.hasNext()\n }\n }\n\n internal fun flatten(iterator: (R) -> Iterator): Sequence {\n return FlatteningSequence(sequence, transformer, iterator)\n }\n}\n\n/**\n * A sequence which returns the results of applying the given [transformer] function to the values\n * in the underlying [sequence], where the transformer function takes the index of the value in the underlying\n * sequence along with the value itself.\n */\ninternal class TransformingIndexedSequence\nconstructor(private val sequence: Sequence, private val transformer: (Int, T) -> R) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var index = 0\n override fun next(): R {\n return transformer(checkIndexOverflow(index++), iterator.next())\n }\n\n override fun hasNext(): Boolean {\n return iterator.hasNext()\n }\n }\n}\n\n/**\n * A sequence which combines values from the underlying [sequence] with their indices and returns them as\n * [IndexedValue] objects.\n */\ninternal class IndexingSequence\nconstructor(private val sequence: Sequence) : Sequence> {\n override fun iterator(): Iterator> = object : Iterator> {\n val iterator = sequence.iterator()\n var index = 0\n override fun next(): IndexedValue {\n return IndexedValue(checkIndexOverflow(index++), iterator.next())\n }\n\n override fun hasNext(): Boolean {\n return iterator.hasNext()\n }\n }\n}\n\n/**\n * A sequence which takes the values from two parallel underlying sequences, passes them to the given\n * [transform] function and returns the values returned by that function. The sequence stops returning\n * values as soon as one of the underlying sequences stops returning values.\n */\ninternal class MergingSequence\nconstructor(\n private val sequence1: Sequence,\n private val sequence2: Sequence,\n private val transform: (T1, T2) -> V\n) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator1 = sequence1.iterator()\n val iterator2 = sequence2.iterator()\n override fun next(): V {\n return transform(iterator1.next(), iterator2.next())\n }\n\n override fun hasNext(): Boolean {\n return iterator1.hasNext() && iterator2.hasNext()\n }\n }\n}\n\ninternal class FlatteningSequence\nconstructor(\n private val sequence: Sequence,\n private val transformer: (T) -> R,\n private val iterator: (R) -> Iterator\n) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var itemIterator: Iterator? = null\n\n override fun next(): E {\n if (!ensureItemIterator())\n throw NoSuchElementException()\n return itemIterator!!.next()\n }\n\n override fun hasNext(): Boolean {\n return ensureItemIterator()\n }\n\n private fun ensureItemIterator(): Boolean {\n if (itemIterator?.hasNext() == false)\n itemIterator = null\n\n while (itemIterator == null) {\n if (!iterator.hasNext()) {\n return false\n } else {\n val element = iterator.next()\n val nextItemIterator = iterator(transformer(element))\n if (nextItemIterator.hasNext()) {\n itemIterator = nextItemIterator\n return true\n }\n }\n }\n return true\n }\n }\n}\n\ninternal fun flatMapIndexed(source: Sequence, transform: (Int, T) -> C, iterator: (C) -> Iterator): Sequence =\n sequence {\n var index = 0\n for (element in source) {\n val result = transform(checkIndexOverflow(index++), element)\n yieldAll(iterator(result))\n }\n }\n\n/**\n * A sequence that supports drop(n) and take(n) operations\n */\ninternal interface DropTakeSequence : Sequence {\n fun drop(n: Int): Sequence\n fun take(n: Int): Sequence\n}\n\n/**\n * A sequence that skips [startIndex] values from the underlying [sequence]\n * and stops returning values right before [endIndex], i.e. stops at `endIndex - 1`\n */\ninternal class SubSequence(\n private val sequence: Sequence,\n private val startIndex: Int,\n private val endIndex: Int\n) : Sequence, DropTakeSequence {\n\n init {\n require(startIndex >= 0) { \"startIndex should be non-negative, but is $startIndex\" }\n require(endIndex >= 0) { \"endIndex should be non-negative, but is $endIndex\" }\n require(endIndex >= startIndex) { \"endIndex should be not less than startIndex, but was $endIndex < $startIndex\" }\n }\n\n private val count: Int get() = endIndex - startIndex\n\n override fun drop(n: Int): Sequence = if (n >= count) emptySequence() else SubSequence(sequence, startIndex + n, endIndex)\n override fun take(n: Int): Sequence = if (n >= count) this else SubSequence(sequence, startIndex, startIndex + n)\n\n override fun iterator() = object : Iterator {\n\n val iterator = sequence.iterator()\n var position = 0\n\n // Shouldn't be called from constructor to avoid premature iteration\n private fun drop() {\n while (position < startIndex && iterator.hasNext()) {\n iterator.next()\n position++\n }\n }\n\n override fun hasNext(): Boolean {\n drop()\n return (position < endIndex) && iterator.hasNext()\n }\n\n override fun next(): T {\n drop()\n if (position >= endIndex)\n throw NoSuchElementException()\n position++\n return iterator.next()\n }\n }\n}\n\n/**\n * A sequence that returns at most [count] values from the underlying [sequence], and stops returning values\n * as soon as that count is reached.\n */\ninternal class TakeSequence(\n private val sequence: Sequence,\n private val count: Int\n) : Sequence, DropTakeSequence {\n\n init {\n require(count >= 0) { \"count must be non-negative, but was $count.\" }\n }\n\n override fun drop(n: Int): Sequence = if (n >= count) emptySequence() else SubSequence(sequence, n, count)\n override fun take(n: Int): Sequence = if (n >= count) this else TakeSequence(sequence, n)\n\n override fun iterator(): Iterator = object : Iterator {\n var left = count\n val iterator = sequence.iterator()\n\n override fun next(): T {\n if (left == 0)\n throw NoSuchElementException()\n left--\n return iterator.next()\n }\n\n override fun hasNext(): Boolean {\n return left > 0 && iterator.hasNext()\n }\n }\n}\n\n/**\n * A sequence that returns values from the underlying [sequence] while the [predicate] function returns\n * `true`, and stops returning values once the function returns `false` for the next element.\n */\ninternal class TakeWhileSequence\nconstructor(\n private val sequence: Sequence,\n private val predicate: (T) -> Boolean\n) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue\n var nextItem: T? = null\n\n private fun calcNext() {\n if (iterator.hasNext()) {\n val item = iterator.next()\n if (predicate(item)) {\n nextState = 1\n nextItem = item\n return\n }\n }\n nextState = 0\n }\n\n override fun next(): T {\n if (nextState == -1)\n calcNext() // will change nextState\n if (nextState == 0)\n throw NoSuchElementException()\n @Suppress(\"UNCHECKED_CAST\")\n val result = nextItem as T\n\n // Clean next to avoid keeping reference on yielded instance\n nextItem = null\n nextState = -1\n return result\n }\n\n override fun hasNext(): Boolean {\n if (nextState == -1)\n calcNext() // will change nextState\n return nextState == 1\n }\n }\n}\n\n/**\n * A sequence that skips the specified number of values from the underlying [sequence] and returns\n * all values after that.\n */\ninternal class DropSequence(\n private val sequence: Sequence,\n private val count: Int\n) : Sequence, DropTakeSequence {\n init {\n require(count >= 0) { \"count must be non-negative, but was $count.\" }\n }\n\n override fun drop(n: Int): Sequence = (count + n).let { n1 -> if (n1 < 0) DropSequence(this, n) else DropSequence(sequence, n1) }\n override fun take(n: Int): Sequence = (count + n).let { n1 -> if (n1 < 0) TakeSequence(this, n) else SubSequence(sequence, count, n1) }\n\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var left = count\n\n // Shouldn't be called from constructor to avoid premature iteration\n private fun drop() {\n while (left > 0 && iterator.hasNext()) {\n iterator.next()\n left--\n }\n }\n\n override fun next(): T {\n drop()\n return iterator.next()\n }\n\n override fun hasNext(): Boolean {\n drop()\n return iterator.hasNext()\n }\n }\n}\n\n/**\n * A sequence that skips the values from the underlying [sequence] while the given [predicate] returns `true` and returns\n * all values after that.\n */\ninternal class DropWhileSequence\nconstructor(\n private val sequence: Sequence,\n private val predicate: (T) -> Boolean\n) : Sequence {\n\n override fun iterator(): Iterator = object : Iterator {\n val iterator = sequence.iterator()\n var dropState: Int = -1 // -1 for not dropping, 1 for nextItem, 0 for normal iteration\n var nextItem: T? = null\n\n private fun drop() {\n while (iterator.hasNext()) {\n val item = iterator.next()\n if (!predicate(item)) {\n nextItem = item\n dropState = 1\n return\n }\n }\n dropState = 0\n }\n\n override fun next(): T {\n if (dropState == -1)\n drop()\n\n if (dropState == 1) {\n @Suppress(\"UNCHECKED_CAST\")\n val result = nextItem as T\n nextItem = null\n dropState = 0\n return result\n }\n return iterator.next()\n }\n\n override fun hasNext(): Boolean {\n if (dropState == -1)\n drop()\n return dropState == 1 || iterator.hasNext()\n }\n }\n}\n\ninternal class DistinctSequence(private val source: Sequence, private val keySelector: (T) -> K) : Sequence {\n override fun iterator(): Iterator = DistinctIterator(source.iterator(), keySelector)\n}\n\nprivate class DistinctIterator(private val source: Iterator, private val keySelector: (T) -> K) : AbstractIterator() {\n private val observed = HashSet()\n\n override fun computeNext() {\n while (source.hasNext()) {\n val next = source.next()\n val key = keySelector(next)\n\n if (observed.add(key)) {\n setNext(next)\n return\n }\n }\n\n done()\n }\n}\n\n\nprivate class GeneratorSequence(private val getInitialValue: () -> T?, private val getNextValue: (T) -> T?) : Sequence {\n override fun iterator(): Iterator = object : Iterator {\n var nextItem: T? = null\n var nextState: Int = -2 // -2 for initial unknown, -1 for next unknown, 0 for done, 1 for continue\n\n private fun calcNext() {\n nextItem = if (nextState == -2) getInitialValue() else getNextValue(nextItem!!)\n nextState = if (nextItem == null) 0 else 1\n }\n\n override fun next(): T {\n if (nextState < 0)\n calcNext()\n\n if (nextState == 0)\n throw NoSuchElementException()\n val result = nextItem as T\n // Do not clean nextItem (to avoid keeping reference on yielded instance) -- need to keep state for getNextValue\n nextState = -1\n return result\n }\n\n override fun hasNext(): Boolean {\n if (nextState < 0)\n calcNext()\n return nextState == 1\n }\n }\n}\n\n/**\n * Returns a wrapper sequence that provides values of this sequence, but ensures it can be iterated only one time.\n *\n * The operation is _intermediate_ and _stateless_.\n *\n * [IllegalStateException] is thrown on iterating the returned sequence from the second time.\n *\n */\npublic fun Sequence.constrainOnce(): Sequence {\n // as? does not work in js\n //return this as? ConstrainedOnceSequence ?: ConstrainedOnceSequence(this)\n return if (this is ConstrainedOnceSequence) this else ConstrainedOnceSequence(this)\n}\n\n\n/**\n * Returns a sequence which invokes the function to calculate the next value on each iteration until the function returns `null`.\n *\n * The returned sequence is constrained to be iterated only once.\n *\n * @see constrainOnce\n * @see kotlin.sequences.sequence\n *\n * @sample samples.collections.Sequences.Building.generateSequence\n */\npublic fun generateSequence(nextFunction: () -> T?): Sequence {\n return GeneratorSequence(nextFunction, { nextFunction() }).constrainOnce()\n}\n\n/**\n * Returns a sequence defined by the starting value [seed] and the function [nextFunction],\n * which is invoked to calculate the next value based on the previous one on each iteration.\n *\n * The sequence produces values until it encounters first `null` value.\n * If [seed] is `null`, an empty sequence is produced.\n *\n * The sequence can be iterated multiple times, each time starting with [seed].\n *\n * @see kotlin.sequences.sequence\n *\n * @sample samples.collections.Sequences.Building.generateSequenceWithSeed\n */\n@kotlin.internal.LowPriorityInOverloadResolution\npublic fun generateSequence(seed: T?, nextFunction: (T) -> T?): Sequence =\n if (seed == null)\n EmptySequence\n else\n GeneratorSequence({ seed }, nextFunction)\n\n/**\n * Returns a sequence defined by the function [seedFunction], which is invoked to produce the starting value,\n * and the [nextFunction], which is invoked to calculate the next value based on the previous one on each iteration.\n *\n * The sequence produces values until it encounters first `null` value.\n * If [seedFunction] returns `null`, an empty sequence is produced.\n *\n * The sequence can be iterated multiple times.\n *\n * @see kotlin.sequences.sequence\n *\n * @sample samples.collections.Sequences.Building.generateSequenceWithLazySeed\n */\npublic fun generateSequence(seedFunction: () -> T?, nextFunction: (T) -> T?): Sequence =\n GeneratorSequence(seedFunction, nextFunction)\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\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 List.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 List.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 List.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 List.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 List.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.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 Iterable.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 List.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 Iterable.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 List.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 Iterable.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 List.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 Iterable.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 Iterable.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 List.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 Iterable.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 List.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 Iterable.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 Iterable.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 List.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 Iterable.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 List.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 List.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.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.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 Iterable.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 List.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 Iterable.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 List.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 * \n * @throws NoSuchElementException if the collection is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic fun Iterable.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 * \n * @throws NoSuchElementException if the list is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic fun List.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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic inline fun Iterable.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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic inline fun List.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.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.lastIndexOf(element: T): Int {\n return lastIndexOf(element)\n}\n\n/**\n * Returns the last element, or `null` if the collection is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic fun Iterable.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 * \n * @sample samples.collections.Collections.Elements.last\n */\npublic fun List.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 * \n * @sample samples.collections.Collections.Elements.last\n */\npublic inline fun Iterable.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 * \n * @sample samples.collections.Collections.Elements.last\n */\npublic inline fun List.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 Collection.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 Collection.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 Collection.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 Collection.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 Iterable.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 List.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 Iterable.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 Iterable.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 List.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 Iterable.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 Iterable.drop(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return toList()\n val list: ArrayList\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(resultSize)\n if (this is List) {\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()\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 List.dropLast(n: Int): List {\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 List.dropLastWhile(predicate: (T) -> Boolean): List {\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 Iterable.dropWhile(predicate: (T) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\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 Iterable.filter(predicate: (T) -> Boolean): List {\n return filterTo(ArrayList(), 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 Iterable.filterIndexed(predicate: (index: Int, T) -> Boolean): List {\n return filterIndexedTo(ArrayList(), 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 > Iterable.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 Iterable<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> {\n return filterIsInstanceTo(ArrayList())\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 > 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 Iterable.filterNot(predicate: (T) -> Boolean): List {\n return filterNotTo(ArrayList(), 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 Iterable.filterNotNull(): List {\n return filterNotNullTo(ArrayList())\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 , T : Any> Iterable.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 > Iterable.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 > Iterable.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 List.slice(indices: IntRange): List {\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 List.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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 Iterable.take(n: Int): List {\n require(n >= 0) { \"Requested element count $n is less than zero.\" }\n if (n == 0) return emptyList()\n if (this is Collection) {\n if (n >= size) return toList()\n if (n == 1) return listOf(first())\n }\n var count = 0\n val list = ArrayList(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 List.takeLast(n: Int): List {\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(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 List.takeLastWhile(predicate: (T) -> Boolean): List {\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(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 Iterable.takeWhile(predicate: (T) -> Boolean): List {\n val list = ArrayList()\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 MutableList.reverse(): Unit\n\n/**\n * Returns a list with elements in reversed order.\n */\npublic fun Iterable.reversed(): List {\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 MutableList.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 > MutableList.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 > MutableList.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 > MutableList.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 > Iterable.sorted(): List {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray>() as Array).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 > Iterable.sortedBy(crossinline selector: (T) -> R?): List {\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 > Iterable.sortedByDescending(crossinline selector: (T) -> R?): List {\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 > Iterable.sortedDescending(): List {\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 Iterable.sortedWith(comparator: Comparator): List {\n if (this is Collection) {\n if (size <= 1) return this.toList()\n @Suppress(\"UNCHECKED_CAST\")\n return (toTypedArray() as Array).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.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.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.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.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.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.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.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.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 Iterable.associate(transform: (T) -> Pair): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateTo(LinkedHashMap(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 Iterable.associateBy(keySelector: (T) -> K): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 Iterable.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 > Iterable.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 > Iterable.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 > Iterable.associateTo(destination: M, transform: (T) -> Pair): 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 Iterable.associateWith(valueSelector: (K) -> V): Map {\n val result = LinkedHashMap(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 > Iterable.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 > Iterable.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 Iterable.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(collectionSizeOrDefault(12))))\n}\n\n/**\n * Returns a [List] containing all elements.\n */\npublic fun Iterable.toList(): List {\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 Iterable.toMutableList(): MutableList {\n if (this is Collection)\n return this.toMutableList()\n return toCollection(ArrayList())\n}\n\n/**\n * Returns a new [MutableList] filled with all elements of this collection.\n */\npublic fun Collection.toMutableList(): MutableList {\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 Iterable.toSet(): Set {\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(mapCapacity(size)))\n }\n }\n return toCollection(LinkedHashSet()).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 Iterable.flatMap(transform: (T) -> Iterable): List {\n return flatMapTo(ArrayList(), 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 Iterable.flatMap(transform: (T) -> Sequence): List {\n return flatMapTo(ArrayList(), 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 Iterable.flatMapIndexed(transform: (index: Int, T) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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 Iterable.flatMapIndexed(transform: (index: Int, T) -> Sequence): List {\n return flatMapIndexedTo(ArrayList(), 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 > Iterable.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Iterable): 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 > Iterable.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Sequence): 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 > Iterable.flatMapTo(destination: C, transform: (T) -> Iterable): 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 > Iterable.flatMapTo(destination: C, transform: (T) -> Sequence): 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 Iterable.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 Iterable.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 >> Iterable.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\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 >> Iterable.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() }\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 Iterable.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = 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 Iterable.map(transform: (T) -> R): List {\n return mapTo(ArrayList(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 Iterable.mapIndexed(transform: (index: Int, T) -> R): List {\n return mapIndexedTo(ArrayList(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 Iterable.mapIndexedNotNull(transform: (index: Int, T) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), 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 > Iterable.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 > Iterable.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 Iterable.mapNotNull(transform: (T) -> R?): List {\n return mapNotNullTo(ArrayList(), 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 > Iterable.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 > Iterable.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 Iterable.withIndex(): Iterable> {\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 Iterable.distinct(): List {\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 Iterable.distinctBy(selector: (T) -> K): List {\n val set = HashSet()\n val list = ArrayList()\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 Iterable.intersect(other: Iterable): Set {\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 Iterable.subtract(other: Iterable): Set {\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 Iterable.toMutableSet(): MutableSet {\n return when (this) {\n is Collection -> LinkedHashSet(this)\n else -> toCollection(LinkedHashSet())\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 Iterable.union(other: Iterable): Set {\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 Iterable.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 Iterable.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 Iterable.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 Iterable.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 Collection.count(): Int {\n return size\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\npublic inline fun Iterable.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 Iterable.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 Iterable.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 List.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 List.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 Iterable.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 Iterable.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(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Iterable.max(): Double? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Iterable.max(): Float? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun > Iterable.max(): T? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > Iterable.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 > Iterable.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 Iterable.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 Iterable.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 > Iterable.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 Iterable.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 Iterable.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 > Iterable.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 Iterable.maxOfWith(comparator: Comparator, 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 Iterable.maxOfWithOrNull(comparator: Comparator, 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.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.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 > Iterable.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(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun Iterable.maxWith(comparator: Comparator): 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 Iterable.maxWithOrNull(comparator: Comparator): 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(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Iterable.min(): Double? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Iterable.min(): Float? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun > Iterable.min(): T? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > Iterable.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 > Iterable.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 Iterable.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 Iterable.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 > Iterable.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 Iterable.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 Iterable.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 > Iterable.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 Iterable.minOfWith(comparator: Comparator, 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 Iterable.minOfWithOrNull(comparator: Comparator, 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.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.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 > Iterable.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(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun Iterable.minWith(comparator: Comparator): 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 Iterable.minWithOrNull(comparator: Comparator): 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 Iterable.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 Iterable.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 > 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 > 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 Iterable.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 Iterable.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 Iterable.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 Iterable.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 List.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 List.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 List.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 List.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 Iterable.runningFold(initial: R, operation: (acc: R, T) -> R): List {\n val estimatedSize = collectionSizeOrDefault(9)\n if (estimatedSize == 0) return listOf(initial)\n val result = ArrayList(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 Iterable.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List {\n val estimatedSize = collectionSizeOrDefault(9)\n if (estimatedSize == 0) return listOf(initial)\n val result = ArrayList(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 Iterable.runningReduce(operation: (acc: S, T) -> S): List {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return emptyList()\n var accumulator: S = iterator.next()\n val result = ArrayList(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 Iterable.runningReduceIndexed(operation: (index: Int, acc: S, T) -> S): List {\n val iterator = this.iterator()\n if (!iterator.hasNext()) return emptyList()\n var accumulator: S = iterator.next()\n val result = ArrayList(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 Iterable.scan(initial: R, operation: (acc: R, T) -> R): List {\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 Iterable.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List {\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 Iterable.scanReduce(operation: (acc: S, T) -> S): List {\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 Iterable.scanReduceIndexed(operation: (index: Int, acc: S, T) -> S): List {\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 Iterable.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 Iterable.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 Iterable.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 Iterable.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 Iterable.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 Iterable.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 Iterable.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 Iterable.requireNoNulls(): Iterable {\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\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 List.requireNoNulls(): List {\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\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 fewer 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 Iterable.chunked(size: Int): List> {\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 fewer 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 Iterable.chunked(size: Int, transform: (List) -> R): List {\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 Iterable.minus(element: T): List {\n val result = ArrayList(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 Iterable.minus(elements: Array): List {\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 Iterable.minus(elements: Iterable): List {\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 Iterable.minus(elements: Sequence): List {\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 Iterable.minusElement(element: T): List {\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 Iterable.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\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 Iterable.plus(element: T): List {\n if (this is Collection) return this.plus(element)\n val result = ArrayList()\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 Collection.plus(element: T): List {\n val result = ArrayList(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 Iterable.plus(elements: Array): List {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList()\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 Collection.plus(elements: Array): List {\n val result = ArrayList(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 Iterable.plus(elements: Iterable): List {\n if (this is Collection) return this.plus(elements)\n val result = ArrayList()\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 Collection.plus(elements: Iterable): List {\n if (elements is Collection) {\n val result = ArrayList(this.size + elements.size)\n result.addAll(this)\n result.addAll(elements)\n return result\n } else {\n val result = ArrayList(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 Iterable.plus(elements: Sequence): List {\n val result = ArrayList()\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 Collection.plus(elements: Sequence): List {\n val result = ArrayList(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 Iterable.plusElement(element: T): List {\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 Collection.plusElement(element: T): List {\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 fewer 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 Iterable.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): List> {\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>(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>()\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 fewer 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 Iterable.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (List) -> R): List {\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(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()\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 Iterable.zip(other: Array): List> {\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 Iterable.zip(other: Array, transform: (a: T, b: R) -> V): List {\n val arraySize = other.size\n val list = ArrayList(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 Iterable.zip(other: Iterable): List> {\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 Iterable.zip(other: Iterable, transform: (a: T, b: R) -> V): List {\n val first = iterator()\n val second = other.iterator()\n val list = ArrayList(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 Iterable.zipWithNext(): List> {\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 Iterable.zipWithNext(transform: (a: T, b: T) -> R): List {\n val iterator = iterator()\n if (!iterator.hasNext()) return emptyList()\n val result = mutableListOf()\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 Iterable.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 Iterable.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 Iterable.asIterable(): Iterable {\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 Iterable.asSequence(): Sequence {\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.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.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.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.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.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.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.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.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.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.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.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.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(\"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 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 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 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 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\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 Array?.orEmpty(): Array = this ?: emptyArray()\n\n@kotlin.internal.InlineOnly\npublic actual inline fun Collection.toTypedArray(): Array = copyToArray(this)\n\n@JsName(\"copyToArray\")\n@PublishedApi\ninternal fun copyToArray(collection: Collection): Array {\n return if (collection.asDynamic().toArray !== undefined)\n collection.asDynamic().toArray().unsafeCast>()\n else\n copyToArrayImpl(collection).unsafeCast>()\n}\n\n@JsName(\"copyToArrayImpl\")\ninternal actual fun copyToArrayImpl(collection: Collection<*>): Array {\n val array = emptyArray()\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 copyToArrayImpl(collection: Collection<*>, array: Array): Array {\n if (array.size < collection.size)\n return copyToArrayImpl(collection).unsafeCast>()\n\n val iterator = collection.iterator()\n var index = 0\n while (iterator.hasNext()) {\n array[index++] = iterator.next().unsafeCast()\n }\n if (index < array.size) {\n array[index] = null.unsafeCast()\n }\n return array\n}\n\n\n/**\n * Returns an immutable list containing only the specified object [element].\n */\npublic fun listOf(element: T): List = arrayListOf(element)\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal actual inline fun buildListInternal(builderAction: MutableList.() -> Unit): List {\n return ArrayList().apply(builderAction).build()\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal actual inline fun buildListInternal(capacity: Int, builderAction: MutableList.() -> Unit): List {\n checkBuilderCapacity(capacity)\n return ArrayList(capacity).apply(builderAction).build()\n}\n\n\n/**\n * Returns an immutable set containing only the specified object [element].\n */\npublic fun setOf(element: T): Set = hashSetOf(element)\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal actual inline fun buildSetInternal(builderAction: MutableSet.() -> Unit): Set {\n return LinkedHashSet().apply(builderAction).build()\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal actual inline fun buildSetInternal(capacity: Int, builderAction: MutableSet.() -> Unit): Set {\n return LinkedHashSet(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 mapOf(pair: Pair): Map = hashMapOf(pair)\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal actual inline fun buildMapInternal(builderAction: MutableMap.() -> Unit): Map {\n return LinkedHashMap().apply(builderAction).build()\n}\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\ninternal actual inline fun buildMapInternal(capacity: Int, builderAction: MutableMap.() -> Unit): Map {\n return LinkedHashMap(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 MutableList.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 MutableList.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 Iterable.shuffled(): List = 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 > MutableList.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 MutableList.sortWith(comparator: Comparator): Unit {\n collectionsSort(this, comparator)\n}\n\nprivate fun collectionsSort(list: MutableList, comparator: Comparator) {\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 arrayOfNulls(reference: Array, size: Int): Array {\n return arrayOfNulls(size).unsafeCast>()\n}\n\n@SinceKotlin(\"1.3\")\n@PublishedApi\n@JsName(\"arrayCopy\")\ninternal fun arrayCopy(source: Array, destination: Array, 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 Map.toSingletonMapOrSelf(): Map = this\n\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal actual inline fun Map.toSingletonMap(): Map = this.toMutableMap()\n\n\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal actual inline fun Array.copyToArrayOfAny(isVarargs: Boolean): Array =\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-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 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.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 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.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.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.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 * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#takeif-and-takeunless).\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun 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 * For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#takeif-and-takeunless).\n */\n@kotlin.internal.InlineOnly\n@SinceKotlin(\"1.1\")\npublic inline fun 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","/*\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@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CollectionsKt\")\n\npackage kotlin.collections\n\n/**\n * Given an [iterator] function constructs an [Iterable] instance that returns values through the [Iterator]\n * provided by that function.\n * @sample samples.collections.Iterables.Building.iterable\n */\n@kotlin.internal.InlineOnly\npublic inline fun Iterable(crossinline iterator: () -> Iterator): Iterable = object : Iterable {\n override fun iterator(): Iterator = iterator()\n}\n\n/**\n * A wrapper over another [Iterable] (or any other object that can produce an [Iterator]) that returns\n * an indexing iterator.\n */\ninternal class IndexingIterable(private val iteratorFactory: () -> Iterator) : Iterable> {\n override fun iterator(): Iterator> = IndexingIterator(iteratorFactory())\n}\n\n\n/**\n * Returns the size of this iterable if it is known, or `null` otherwise.\n */\n@PublishedApi\ninternal fun Iterable.collectionSizeOrNull(): Int? = if (this is Collection<*>) this.size else null\n\n/**\n * Returns the size of this iterable if it is known, or the specified [default] value otherwise.\n */\n@PublishedApi\ninternal fun Iterable.collectionSizeOrDefault(default: Int): Int = if (this is Collection<*>) this.size else default\n\n/** Returns true when it's safe to convert this collection to a set without changing contains method behavior. */\nprivate fun Collection.safeToConvertToSet() = size > 2 && this is ArrayList\n\n/** Converts this collection to a set, when it's worth so and it doesn't change contains method behavior. */\ninternal fun Iterable.convertToSetForSetOperationWith(source: Iterable): Collection =\n when (this) {\n is Set -> this\n is Collection ->\n when {\n source is Collection && source.size < 2 -> this\n else -> if (this.safeToConvertToSet()) toHashSet() else this\n }\n else -> toHashSet()\n }\n\n/** Converts this collection to a set, when it's worth so and it doesn't change contains method behavior. */\ninternal fun Iterable.convertToSetForSetOperation(): Collection =\n when (this) {\n is Set -> this\n is Collection -> if (this.safeToConvertToSet()) toHashSet() else this\n else -> toHashSet()\n }\n\n\n/**\n * Returns a single list of all elements from all collections in the given collection.\n * @sample samples.collections.Iterables.Operations.flattenIterable\n */\npublic fun Iterable>.flatten(): List {\n val result = ArrayList()\n for (element in this) {\n result.addAll(element)\n }\n return result\n}\n\n/**\n * Returns a pair of lists, where\n * *first* list is built from the first values of each pair from this collection,\n * *second* list is built from the second values of each pair from this collection.\n * @sample samples.collections.Iterables.Operations.unzipIterable\n */\npublic fun Iterable>.unzip(): Pair, List> {\n val expectedSize = collectionSizeOrDefault(10)\n val listT = ArrayList(expectedSize)\n val listR = ArrayList(expectedSize)\n for (pair in this) {\n listT.add(pair.first)\n listR.add(pair.second)\n }\n return listT to listR\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(\"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.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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.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 Sequence.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 Sequence.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 *\n * The operation is _terminal_.\n * \n * @throws NoSuchElementException if the sequence is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic fun Sequence.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 *\n * The operation is _terminal_.\n * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\n */\npublic inline fun Sequence.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.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 * \n * @sample samples.collections.Collections.Elements.last\n */\npublic fun Sequence.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 * \n * @sample samples.collections.Collections.Elements.last\n */\npublic inline fun Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.drop(n: Int): Sequence {\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 Sequence.dropWhile(predicate: (T) -> Boolean): Sequence {\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 Sequence.filter(predicate: (T) -> Boolean): Sequence {\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 Sequence.filterIndexed(predicate: (index: Int, T) -> Boolean): Sequence {\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 > Sequence.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 Sequence<*>.filterIsInstance(): Sequence<@kotlin.internal.NoInfer R> {\n @Suppress(\"UNCHECKED_CAST\")\n return filter { it is R } as Sequence\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 > 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 Sequence.filterNot(predicate: (T) -> Boolean): Sequence {\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 Sequence.filterNotNull(): Sequence {\n @Suppress(\"UNCHECKED_CAST\")\n return filterNot { it == null } as Sequence\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 , T : Any> Sequence.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 > Sequence.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 > Sequence.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 Sequence.take(n: Int): Sequence {\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 Sequence.takeWhile(predicate: (T) -> Boolean): Sequence {\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 > Sequence.sorted(): Sequence {\n return object : Sequence {\n override fun iterator(): Iterator {\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 > Sequence.sortedBy(crossinline selector: (T) -> R?): Sequence {\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 > Sequence.sortedByDescending(crossinline selector: (T) -> R?): Sequence {\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 > Sequence.sortedDescending(): Sequence {\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 Sequence.sortedWith(comparator: Comparator): Sequence {\n return object : Sequence {\n override fun iterator(): Iterator {\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 Sequence.associate(transform: (T) -> Pair): Map {\n return associateTo(LinkedHashMap(), 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 Sequence.associateBy(keySelector: (T) -> K): Map {\n return associateByTo(LinkedHashMap(), 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 Sequence.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map {\n return associateByTo(LinkedHashMap(), 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 > Sequence.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 > Sequence.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 > Sequence.associateTo(destination: M, transform: (T) -> Pair): 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 Sequence.associateWith(valueSelector: (K) -> V): Map {\n val result = LinkedHashMap()\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 > Sequence.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 > Sequence.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 Sequence.toHashSet(): HashSet {\n return toCollection(HashSet())\n}\n\n/**\n * Returns a [List] containing all elements.\n *\n * The operation is _terminal_.\n */\npublic fun Sequence.toList(): List {\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 Sequence.toMutableList(): MutableList {\n return toCollection(ArrayList())\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 Sequence.toSet(): Set {\n return toCollection(LinkedHashSet()).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 Sequence.flatMap(transform: (T) -> Iterable): Sequence {\n return FlatteningSequence(this, transform, Iterable::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 Sequence.flatMap(transform: (T) -> Sequence): Sequence {\n return FlatteningSequence(this, transform, Sequence::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 Sequence.flatMapIndexed(transform: (index: Int, T) -> Iterable): Sequence {\n return flatMapIndexed(this, transform, Iterable::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 Sequence.flatMapIndexed(transform: (index: Int, T) -> Sequence): Sequence {\n return flatMapIndexed(this, transform, Sequence::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 > Sequence.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Iterable): 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 > Sequence.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Sequence): 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 > Sequence.flatMapTo(destination: C, transform: (T) -> Iterable): 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 > Sequence.flatMapTo(destination: C, transform: (T) -> Sequence): 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 Sequence.groupBy(keySelector: (T) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 Sequence.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 >> Sequence.groupByTo(destination: M, keySelector: (T) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\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 >> Sequence.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() }\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 Sequence.groupingBy(crossinline keySelector: (T) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = 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 Sequence.map(transform: (T) -> R): Sequence {\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 Sequence.mapIndexed(transform: (index: Int, T) -> R): Sequence {\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 Sequence.mapIndexedNotNull(transform: (index: Int, T) -> R?): Sequence {\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 > Sequence.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 > Sequence.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 Sequence.mapNotNull(transform: (T) -> R?): Sequence {\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 > Sequence.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 > Sequence.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 Sequence.withIndex(): Sequence> {\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 Sequence.distinct(): Sequence {\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 Sequence.distinctBy(selector: (T) -> K): Sequence {\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 Sequence.toMutableSet(): MutableSet {\n val set = LinkedHashSet()\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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Sequence.max(): Double? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Sequence.max(): Float? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun > Sequence.max(): T? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > Sequence.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 > Sequence.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 Sequence.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 Sequence.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 > Sequence.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 Sequence.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 Sequence.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 > Sequence.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 Sequence.maxOfWith(comparator: Comparator, 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 Sequence.maxOfWithOrNull(comparator: Comparator, 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.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.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 > Sequence.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(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun Sequence.maxWith(comparator: Comparator): 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 Sequence.maxWithOrNull(comparator: Comparator): 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(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Sequence.min(): Double? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.1\")\npublic fun Sequence.min(): Float? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun > Sequence.min(): T? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > Sequence.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 > Sequence.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 Sequence.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 Sequence.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 > Sequence.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 Sequence.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 Sequence.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 > Sequence.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 Sequence.minOfWith(comparator: Comparator, 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 Sequence.minOfWithOrNull(comparator: Comparator, 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.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.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 > Sequence.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(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun Sequence.minWith(comparator: Comparator): 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 Sequence.minWithOrNull(comparator: Comparator): 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 Sequence.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 Sequence.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 Sequence.onEach(action: (T) -> Unit): Sequence {\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 Sequence.onEachIndexed(action: (index: Int, T) -> Unit): Sequence {\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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.runningFold(initial: R, operation: (acc: R, T) -> R): Sequence {\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 Sequence.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): Sequence {\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 Sequence.runningReduce(operation: (acc: S, T) -> S): Sequence {\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 Sequence.runningReduceIndexed(operation: (index: Int, acc: S, T) -> S): Sequence {\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 Sequence.scan(initial: R, operation: (acc: R, T) -> R): Sequence {\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 Sequence.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): Sequence {\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 Sequence.scanReduce(operation: (acc: S, T) -> S): Sequence {\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 Sequence.scanReduceIndexed(operation: (index: Int, acc: S, T) -> S): Sequence {\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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.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 Sequence.requireNoNulls(): Sequence {\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 fewer 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 Sequence.chunked(size: Int): Sequence> {\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 fewer 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 Sequence.chunked(size: Int, transform: (List) -> R): Sequence {\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 Sequence.minus(element: T): Sequence {\n return object: Sequence {\n override fun iterator(): Iterator {\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 Sequence.minus(elements: Array): Sequence {\n if (elements.isEmpty()) return this\n return object: Sequence {\n override fun iterator(): Iterator {\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 Sequence.minus(elements: Iterable): Sequence {\n return object: Sequence {\n override fun iterator(): Iterator {\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 Sequence.minus(elements: Sequence): Sequence {\n return object: Sequence {\n override fun iterator(): Iterator {\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 Sequence.minusElement(element: T): Sequence {\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 Sequence.partition(predicate: (T) -> Boolean): Pair, List> {\n val first = ArrayList()\n val second = ArrayList()\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 Sequence.plus(element: T): Sequence {\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 Sequence.plus(elements: Array): Sequence {\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 Sequence.plus(elements: Iterable): Sequence {\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 Sequence.plus(elements: Sequence): Sequence {\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 Sequence.plusElement(element: T): Sequence {\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 fewer 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 Sequence.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): Sequence> {\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 fewer 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 Sequence.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (List) -> R): Sequence {\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 Sequence.zip(other: Sequence): Sequence> {\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 Sequence.zip(other: Sequence, transform: (a: T, b: R) -> V): Sequence {\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 Sequence.zipWithNext(): Sequence> {\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 Sequence.zipWithNext(transform: (a: T, b: T) -> R): Sequence {\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 Sequence.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 Sequence.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 Sequence.asIterable(): Iterable {\n return Iterable { this.iterator() }\n}\n\n/**\n * Returns this sequence as a [Sequence].\n */\n@kotlin.internal.InlineOnly\npublic inline fun Sequence.asSequence(): Sequence {\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.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.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.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.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.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.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.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.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.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.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.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.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\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"StringsKt\")\n\npackage kotlin.text\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 a character at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this char sequence.\n * \n * @sample samples.collections.Collections.Elements.elementAt\n */\npublic expect fun CharSequence.elementAt(index: Int): Char\n\n/**\n * Returns a character at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this char sequence.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrElse\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.elementAtOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns a character at the given [index] or `null` if the [index] is out of bounds of this char sequence.\n * \n * @sample samples.collections.Collections.Elements.elementAtOrNull\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.elementAtOrNull(index: Int): Char? {\n return this.getOrNull(index)\n}\n\n/**\n * Returns the first character matching the given [predicate], or `null` if no such character was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.find(predicate: (Char) -> Boolean): Char? {\n return firstOrNull(predicate)\n}\n\n/**\n * Returns the last character matching the given [predicate], or `null` if no such character was found.\n * \n * @sample samples.collections.Collections.Elements.find\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.findLast(predicate: (Char) -> Boolean): Char? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first character.\n * @throws [NoSuchElementException] if the char sequence is empty.\n */\npublic fun CharSequence.first(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Char sequence is empty.\")\n return this[0]\n}\n\n/**\n * Returns the first character matching the given [predicate].\n * @throws [NoSuchElementException] if no such character is found.\n */\npublic inline fun CharSequence.first(predicate: (Char) -> Boolean): Char {\n for (element in this) if (predicate(element)) return element\n throw NoSuchElementException(\"Char sequence contains no character matching the predicate.\")\n}\n\n/**\n * Returns the first character, or `null` if the char sequence is empty.\n */\npublic fun CharSequence.firstOrNull(): Char? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first character matching the given [predicate], or `null` if character was not found.\n */\npublic inline fun CharSequence.firstOrNull(predicate: (Char) -> Boolean): Char? {\n for (element in this) if (predicate(element)) return element\n return null\n}\n\n/**\n * Returns a character at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this char sequence.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.getOrElse(index: Int, defaultValue: (Int) -> Char): Char {\n return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)\n}\n\n/**\n * Returns a character at the given [index] or `null` if the [index] is out of bounds of this char sequence.\n * \n * @sample samples.collections.Collections.Elements.getOrNull\n */\npublic fun CharSequence.getOrNull(index: Int): Char? {\n return if (index >= 0 && index <= lastIndex) get(index) else null\n}\n\n/**\n * Returns index of the first character matching the given [predicate], or -1 if the char sequence does not contain such character.\n */\npublic inline fun CharSequence.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 character matching the given [predicate], or -1 if the char sequence does not contain such character.\n */\npublic inline fun CharSequence.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 character.\n * \n * @throws NoSuchElementException if the char sequence is empty.\n * \n * @sample samples.text.Strings.last\n */\npublic fun CharSequence.last(): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Char sequence is empty.\")\n return this[lastIndex]\n}\n\n/**\n * Returns the last character matching the given [predicate].\n * \n * @throws NoSuchElementException if no such character is found.\n * \n * @sample samples.text.Strings.last\n */\npublic inline fun CharSequence.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(\"Char sequence contains no character matching the predicate.\")\n}\n\n/**\n * Returns the last character, or `null` if the char sequence is empty.\n * \n * @sample samples.text.Strings.last\n */\npublic fun CharSequence.lastOrNull(): Char? {\n return if (isEmpty()) null else this[length - 1]\n}\n\n/**\n * Returns the last character matching the given [predicate], or `null` if no such character was found.\n * \n * @sample samples.text.Strings.last\n */\npublic inline fun CharSequence.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 character from this char sequence.\n * \n * @throws NoSuchElementException if this char sequence is empty.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.random(): Char {\n return random(Random)\n}\n\n/**\n * Returns a random character from this char sequence using the specified source of randomness.\n * \n * @throws NoSuchElementException if this char sequence is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun CharSequence.random(random: Random): Char {\n if (isEmpty())\n throw NoSuchElementException(\"Char sequence is empty.\")\n return get(random.nextInt(length))\n}\n\n/**\n * Returns a random character from this char sequence, or `null` if this char sequence is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.randomOrNull(): Char? {\n return randomOrNull(Random)\n}\n\n/**\n * Returns a random character from this char sequence using the specified source of randomness, or `null` if this char sequence is empty.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic fun CharSequence.randomOrNull(random: Random): Char? {\n if (isEmpty())\n return null\n return get(random.nextInt(length))\n}\n\n/**\n * Returns the single character, or throws an exception if the char sequence is empty or has more than one character.\n */\npublic fun CharSequence.single(): Char {\n return when (length) {\n 0 -> throw NoSuchElementException(\"Char sequence is empty.\")\n 1 -> this[0]\n else -> throw IllegalArgumentException(\"Char sequence has more than one element.\")\n }\n}\n\n/**\n * Returns the single character matching the given [predicate], or throws exception if there is no or more than one matching character.\n */\npublic inline fun CharSequence.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(\"Char sequence contains more than one matching element.\")\n single = element\n found = true\n }\n }\n if (!found) throw NoSuchElementException(\"Char sequence contains no character matching the predicate.\")\n @Suppress(\"UNCHECKED_CAST\")\n return single as Char\n}\n\n/**\n * Returns single character, or `null` if the char sequence is empty or has more than one character.\n */\npublic fun CharSequence.singleOrNull(): Char? {\n return if (length == 1) this[0] else null\n}\n\n/**\n * Returns the single character matching the given [predicate], or `null` if character was not found or more than one character was found.\n */\npublic inline fun CharSequence.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 subsequence of this char sequence with the first [n] characters removed.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.drop\n */\npublic fun CharSequence.drop(n: Int): CharSequence {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return subSequence(n.coerceAtMost(length), length)\n}\n\n/**\n * Returns a string with the first [n] characters removed.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.drop\n */\npublic fun String.drop(n: Int): String {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return substring(n.coerceAtMost(length))\n}\n\n/**\n * Returns a subsequence of this char sequence with the last [n] characters removed.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.drop\n */\npublic fun CharSequence.dropLast(n: Int): CharSequence {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return take((length - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a string with the last [n] characters removed.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.drop\n */\npublic fun String.dropLast(n: Int): String {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return take((length - n).coerceAtLeast(0))\n}\n\n/**\n * Returns a subsequence of this char sequence containing all characters except last characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.drop\n */\npublic inline fun CharSequence.dropLastWhile(predicate: (Char) -> Boolean): CharSequence {\n for (index in lastIndex downTo 0)\n if (!predicate(this[index]))\n return subSequence(0, index + 1)\n return \"\"\n}\n\n/**\n * Returns a string containing all characters except last characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.drop\n */\npublic inline fun String.dropLastWhile(predicate: (Char) -> Boolean): String {\n for (index in lastIndex downTo 0)\n if (!predicate(this[index]))\n return substring(0, index + 1)\n return \"\"\n}\n\n/**\n * Returns a subsequence of this char sequence containing all characters except first characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.drop\n */\npublic inline fun CharSequence.dropWhile(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices)\n if (!predicate(this[index]))\n return subSequence(index, length)\n return \"\"\n}\n\n/**\n * Returns a string containing all characters except first characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.drop\n */\npublic inline fun String.dropWhile(predicate: (Char) -> Boolean): String {\n for (index in this.indices)\n if (!predicate(this[index]))\n return substring(index)\n return \"\"\n}\n\n/**\n * Returns a char sequence containing only those characters from the original char sequence that match the given [predicate].\n * \n * @sample samples.text.Strings.filter\n */\npublic inline fun CharSequence.filter(predicate: (Char) -> Boolean): CharSequence {\n return filterTo(StringBuilder(), predicate)\n}\n\n/**\n * Returns a string containing only those characters from the original string that match the given [predicate].\n * \n * @sample samples.text.Strings.filter\n */\npublic inline fun String.filter(predicate: (Char) -> Boolean): String {\n return filterTo(StringBuilder(), predicate).toString()\n}\n\n/**\n * Returns a char sequence containing only those characters from the original char sequence that match the given [predicate].\n * @param [predicate] function that takes the index of a character and the character itself\n * and returns the result of predicate evaluation on the character.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun CharSequence.filterIndexed(predicate: (index: Int, Char) -> Boolean): CharSequence {\n return filterIndexedTo(StringBuilder(), predicate)\n}\n\n/**\n * Returns a string containing only those characters from the original string that match the given [predicate].\n * @param [predicate] function that takes the index of a character and the character itself\n * and returns the result of predicate evaluation on the character.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexed\n */\npublic inline fun String.filterIndexed(predicate: (index: Int, Char) -> Boolean): String {\n return filterIndexedTo(StringBuilder(), predicate).toString()\n}\n\n/**\n * Appends all characters matching the given [predicate] to the given [destination].\n * @param [predicate] function that takes the index of a character and the character itself\n * and returns the result of predicate evaluation on the character.\n * \n * @sample samples.collections.Collections.Filtering.filterIndexedTo\n */\npublic inline fun CharSequence.filterIndexedTo(destination: C, predicate: (index: Int, Char) -> Boolean): C {\n forEachIndexed { index, element ->\n if (predicate(index, element)) destination.append(element)\n }\n return destination\n}\n\n/**\n * Returns a char sequence containing only those characters from the original char sequence that do not match the given [predicate].\n * \n * @sample samples.text.Strings.filterNot\n */\npublic inline fun CharSequence.filterNot(predicate: (Char) -> Boolean): CharSequence {\n return filterNotTo(StringBuilder(), predicate)\n}\n\n/**\n * Returns a string containing only those characters from the original string that do not match the given [predicate].\n * \n * @sample samples.text.Strings.filterNot\n */\npublic inline fun String.filterNot(predicate: (Char) -> Boolean): String {\n return filterNotTo(StringBuilder(), predicate).toString()\n}\n\n/**\n * Appends all characters not matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun CharSequence.filterNotTo(destination: C, predicate: (Char) -> Boolean): C {\n for (element in this) if (!predicate(element)) destination.append(element)\n return destination\n}\n\n/**\n * Appends all characters matching the given [predicate] to the given [destination].\n * \n * @sample samples.collections.Collections.Filtering.filterTo\n */\npublic inline fun CharSequence.filterTo(destination: C, predicate: (Char) -> Boolean): C {\n for (index in 0 until length) {\n val element = get(index)\n if (predicate(element)) destination.append(element)\n }\n return destination\n}\n\n/**\n * Returns a char sequence containing characters of the original char sequence at the specified range of [indices].\n */\npublic fun CharSequence.slice(indices: IntRange): CharSequence {\n if (indices.isEmpty()) return \"\"\n return subSequence(indices)\n}\n\n/**\n * Returns a string containing characters of the original string at the specified range of [indices].\n */\npublic fun String.slice(indices: IntRange): String {\n if (indices.isEmpty()) return \"\"\n return substring(indices)\n}\n\n/**\n * Returns a char sequence containing characters of the original char sequence at specified [indices].\n */\npublic fun CharSequence.slice(indices: Iterable): CharSequence {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return \"\"\n val result = StringBuilder(size)\n for (i in indices) {\n result.append(get(i))\n }\n return result\n}\n\n/**\n * Returns a string containing characters of the original string at specified [indices].\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.slice(indices: Iterable): String {\n return (this as CharSequence).slice(indices).toString()\n}\n\n/**\n * Returns a subsequence of this char sequence containing the first [n] characters from this char sequence, or the entire char sequence if this char sequence is shorter.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.take\n */\npublic fun CharSequence.take(n: Int): CharSequence {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return subSequence(0, n.coerceAtMost(length))\n}\n\n/**\n * Returns a string containing the first [n] characters from this string, or the entire string if this string is shorter.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.take\n */\npublic fun String.take(n: Int): String {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n return substring(0, n.coerceAtMost(length))\n}\n\n/**\n * Returns a subsequence of this char sequence containing the last [n] characters from this char sequence, or the entire char sequence if this char sequence is shorter.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.take\n */\npublic fun CharSequence.takeLast(n: Int): CharSequence {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n val length = length\n return subSequence(length - n.coerceAtMost(length), length)\n}\n\n/**\n * Returns a string containing the last [n] characters from this string, or the entire string if this string is shorter.\n * \n * @throws IllegalArgumentException if [n] is negative.\n * \n * @sample samples.text.Strings.take\n */\npublic fun String.takeLast(n: Int): String {\n require(n >= 0) { \"Requested character count $n is less than zero.\" }\n val length = length\n return substring(length - n.coerceAtMost(length))\n}\n\n/**\n * Returns a subsequence of this char sequence containing last characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.take\n */\npublic inline fun CharSequence.takeLastWhile(predicate: (Char) -> Boolean): CharSequence {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return subSequence(index + 1, length)\n }\n }\n return subSequence(0, length)\n}\n\n/**\n * Returns a string containing last characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.take\n */\npublic inline fun String.takeLastWhile(predicate: (Char) -> Boolean): String {\n for (index in lastIndex downTo 0) {\n if (!predicate(this[index])) {\n return substring(index + 1)\n }\n }\n return this\n}\n\n/**\n * Returns a subsequence of this char sequence containing the first characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.take\n */\npublic inline fun CharSequence.takeWhile(predicate: (Char) -> Boolean): CharSequence {\n for (index in 0 until length)\n if (!predicate(get(index))) {\n return subSequence(0, index)\n }\n return subSequence(0, length)\n}\n\n/**\n * Returns a string containing the first characters that satisfy the given [predicate].\n * \n * @sample samples.text.Strings.take\n */\npublic inline fun String.takeWhile(predicate: (Char) -> Boolean): String {\n for (index in 0 until length)\n if (!predicate(get(index))) {\n return substring(0, index)\n }\n return this\n}\n\n/**\n * Returns a char sequence with characters in reversed order.\n */\npublic fun CharSequence.reversed(): CharSequence {\n return StringBuilder(this).reverse()\n}\n\n/**\n * Returns a string with characters in reversed order.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.reversed(): String {\n return (this as CharSequence).reversed().toString()\n}\n\n/**\n * Returns a [Map] containing key-value pairs provided by [transform] function\n * applied to characters of the given char 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 char sequence.\n * \n * @sample samples.text.Strings.associate\n */\npublic inline fun CharSequence.associate(transform: (Char) -> Pair): Map {\n val capacity = mapCapacity(length).coerceAtLeast(16)\n return associateTo(LinkedHashMap(capacity), transform)\n}\n\n/**\n * Returns a [Map] containing the characters from the given char sequence indexed by the key\n * returned from [keySelector] function applied to each character.\n * \n * If any two characters 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 char sequence.\n * \n * @sample samples.text.Strings.associateBy\n */\npublic inline fun CharSequence.associateBy(keySelector: (Char) -> K): Map {\n val capacity = mapCapacity(length).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(capacity), keySelector)\n}\n\n/**\n * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to characters of the given char sequence.\n * \n * If any two characters 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 char sequence.\n * \n * @sample samples.text.Strings.associateByWithValueTransform\n */\npublic inline fun CharSequence.associateBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map {\n val capacity = mapCapacity(length).coerceAtLeast(16)\n return associateByTo(LinkedHashMap(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 character of the given char sequence\n * and value is the character itself.\n * \n * If any two characters would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.text.Strings.associateByTo\n */\npublic inline fun > CharSequence.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 characters of the given char sequence.\n * \n * If any two characters would have the same key returned by [keySelector] the last one gets added to the map.\n * \n * @sample samples.text.Strings.associateByToWithValueTransform\n */\npublic inline fun > CharSequence.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 character of the given char sequence.\n * \n * If any of two pairs would have the same key the last one gets added to the map.\n * \n * @sample samples.text.Strings.associateTo\n */\npublic inline fun > CharSequence.associateTo(destination: M, transform: (Char) -> Pair): M {\n for (element in this) {\n destination += transform(element)\n }\n return destination\n}\n\n/**\n * Returns a [Map] where keys are characters from the given char sequence and values are\n * produced by the [valueSelector] function applied to each character.\n * \n * If any two characters are equal, the last one gets added to the map.\n * \n * The returned map preserves the entry iteration order of the original char sequence.\n * \n * @sample samples.text.Strings.associateWith\n */\n@SinceKotlin(\"1.3\")\npublic inline fun CharSequence.associateWith(valueSelector: (Char) -> V): Map {\n val result = LinkedHashMap(mapCapacity(length.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 character of the given char sequence,\n * where key is the character itself and value is provided by the [valueSelector] function applied to that key.\n * \n * If any two characters are equal, the last one overwrites the former value in the map.\n * \n * @sample samples.text.Strings.associateWithTo\n */\n@SinceKotlin(\"1.3\")\npublic inline fun > CharSequence.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 characters to the given [destination] collection.\n */\npublic fun > CharSequence.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 characters.\n */\npublic fun CharSequence.toHashSet(): HashSet {\n return toCollection(HashSet(mapCapacity(length.coerceAtMost(128))))\n}\n\n/**\n * Returns a [List] containing all characters.\n */\npublic fun CharSequence.toList(): List {\n return when (length) {\n 0 -> emptyList()\n 1 -> listOf(this[0])\n else -> this.toMutableList()\n }\n}\n\n/**\n * Returns a new [MutableList] filled with all characters of this char sequence.\n */\npublic fun CharSequence.toMutableList(): MutableList {\n return toCollection(ArrayList(length))\n}\n\n/**\n * Returns a [Set] of all characters.\n * \n * The returned set preserves the element iteration order of the original char sequence.\n */\npublic fun CharSequence.toSet(): Set {\n return when (length) {\n 0 -> emptySet()\n 1 -> setOf(this[0])\n else -> toCollection(LinkedHashSet(mapCapacity(length.coerceAtMost(128))))\n }\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each character of original char sequence.\n * \n * @sample samples.collections.Collections.Transformations.flatMap\n */\npublic inline fun CharSequence.flatMap(transform: (Char) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each character\n * and its index in the original char sequence.\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 CharSequence.flatMapIndexed(transform: (index: Int, Char) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each character\n * and its index in the original char sequence, 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 > CharSequence.flatMapIndexedTo(destination: C, transform: (index: Int, Char) -> Iterable): 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 character of original char sequence, to the given [destination].\n */\npublic inline fun > CharSequence.flatMapTo(destination: C, transform: (Char) -> Iterable): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Groups characters of the original char sequence by the key returned by the given [keySelector] function\n * applied to each character and returns a map where each group key is associated with a list of corresponding characters.\n * \n * The returned map preserves the entry iteration order of the keys produced from the original char sequence.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun CharSequence.groupBy(keySelector: (Char) -> K): Map> {\n return groupByTo(LinkedHashMap>(), keySelector)\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each character of the original char sequence\n * by the key returned by the given [keySelector] function applied to the character\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 char sequence.\n * \n * @sample samples.collections.Collections.Transformations.groupByKeysAndValues\n */\npublic inline fun CharSequence.groupBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map> {\n return groupByTo(LinkedHashMap>(), keySelector, valueTransform)\n}\n\n/**\n * Groups characters of the original char sequence by the key returned by the given [keySelector] function\n * applied to each character and puts to the [destination] map each group key associated with a list of corresponding characters.\n * \n * @return The [destination] map.\n * \n * @sample samples.collections.Collections.Transformations.groupBy\n */\npublic inline fun >> CharSequence.groupByTo(destination: M, keySelector: (Char) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(element)\n }\n return destination\n}\n\n/**\n * Groups values returned by the [valueTransform] function applied to each character of the original char sequence\n * by the key returned by the given [keySelector] function applied to the character\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 >> CharSequence.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() }\n list.add(valueTransform(element))\n }\n return destination\n}\n\n/**\n * Creates a [Grouping] source from a char sequence to be used later with one of group-and-fold operations\n * using the specified [keySelector] function to extract a key from each character.\n * \n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic inline fun CharSequence.groupingBy(crossinline keySelector: (Char) -> K): Grouping {\n return object : Grouping {\n override fun sourceIterator(): Iterator = this@groupingBy.iterator()\n override fun keyOf(element: Char): K = keySelector(element)\n }\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each character in the original char sequence.\n * \n * @sample samples.text.Strings.map\n */\npublic inline fun CharSequence.map(transform: (Char) -> R): List {\n return mapTo(ArrayList(length), transform)\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each character and its index in the original char sequence.\n * @param [transform] function that takes the index of a character and the character itself\n * and returns the result of the transform applied to the character.\n */\npublic inline fun CharSequence.mapIndexed(transform: (index: Int, Char) -> R): List {\n return mapIndexedTo(ArrayList(length), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each character and its index in the original char sequence.\n * @param [transform] function that takes the index of a character and the character itself\n * and returns the result of the transform applied to the character.\n */\npublic inline fun CharSequence.mapIndexedNotNull(transform: (index: Int, Char) -> R?): List {\n return mapIndexedNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each character and its index in the original char sequence\n * and appends only the non-null results to the given [destination].\n * @param [transform] function that takes the index of a character and the character itself\n * and returns the result of the transform applied to the character.\n */\npublic inline fun > CharSequence.mapIndexedNotNullTo(destination: C, transform: (index: Int, Char) -> 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 character and its index in the original char sequence\n * and appends the results to the given [destination].\n * @param [transform] function that takes the index of a character and the character itself\n * and returns the result of the transform applied to the character.\n */\npublic inline fun > CharSequence.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 character in the original char sequence.\n * \n * @sample samples.collections.Collections.Transformations.mapNotNull\n */\npublic inline fun CharSequence.mapNotNull(transform: (Char) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each character in the original char sequence\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > CharSequence.mapNotNullTo(destination: C, transform: (Char) -> 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 character of the original char sequence\n * and appends the results to the given [destination].\n */\npublic inline fun > CharSequence.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 character of the original char sequence\n * into an [IndexedValue] containing the index of that character and the character itself.\n */\npublic fun CharSequence.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns `true` if all characters match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun CharSequence.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 char sequence has at least one character.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun CharSequence.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if at least one character matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun CharSequence.any(predicate: (Char) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the length of this char sequence.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.count(): Int {\n return length\n}\n\n/**\n * Returns the number of characters matching the given [predicate].\n */\npublic inline fun CharSequence.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 character.\n * \n * Returns the specified [initial] value if the char sequence is empty.\n * \n * @param [operation] function that takes current accumulator value and a character, and calculates the next accumulator value.\n */\npublic inline fun CharSequence.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 character with its index in the original char sequence.\n * \n * Returns the specified [initial] value if the char sequence is empty.\n * \n * @param [operation] function that takes the index of a character, current accumulator value\n * and the character itself, and calculates the next accumulator value.\n */\npublic inline fun CharSequence.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 character and current accumulator value.\n * \n * Returns the specified [initial] value if the char sequence is empty.\n * \n * @param [operation] function that takes a character and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun CharSequence.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 character with its index in the original char sequence and current accumulator value.\n * \n * Returns the specified [initial] value if the char sequence is empty.\n * \n * @param [operation] function that takes the index of a character, the character itself\n * and current accumulator value, and calculates the next accumulator value.\n */\npublic inline fun CharSequence.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 character.\n */\npublic inline fun CharSequence.forEach(action: (Char) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each character, providing sequential index with the character.\n * @param [action] function that takes the index of a character and the character itself\n * and performs the action on the character.\n */\npublic inline fun CharSequence.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(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun CharSequence.max(): Char? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > CharSequence.maxBy(selector: (Char) -> R): Char? {\n return maxByOrNull(selector)\n}\n\n/**\n * Returns the first character yielding the largest value of the given function or `null` if there are no characters.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun > CharSequence.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 character in the char sequence.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the char sequence is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.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 character in the char sequence.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the char sequence is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.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 character in the char sequence.\n * \n * @throws NoSuchElementException if the char sequence is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun > CharSequence.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 character in the char sequence or `null` if there are no characters.\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 CharSequence.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 character in the char sequence or `null` if there are no characters.\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 CharSequence.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 character in the char sequence or `null` if there are no characters.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun > CharSequence.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 character in the char sequence.\n * \n * @throws NoSuchElementException if the char sequence is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.maxOfWith(comparator: Comparator, 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 character in the char sequence or `null` if there are no characters.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.maxOfWithOrNull(comparator: Comparator, 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 character or `null` if there are no characters.\n */\n@SinceKotlin(\"1.4\")\npublic fun CharSequence.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(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun CharSequence.maxWith(comparator: Comparator): Char? {\n return maxWithOrNull(comparator)\n}\n\n/**\n * Returns the first character having the largest value according to the provided [comparator] or `null` if there are no characters.\n */\n@SinceKotlin(\"1.4\")\npublic fun CharSequence.maxWithOrNull(comparator: Comparator): 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(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun CharSequence.min(): Char? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > CharSequence.minBy(selector: (Char) -> R): Char? {\n return minByOrNull(selector)\n}\n\n/**\n * Returns the first character yielding the smallest value of the given function or `null` if there are no characters.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun > CharSequence.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 character in the char sequence.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the char sequence is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.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 character in the char sequence.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the char sequence is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.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 character in the char sequence.\n * \n * @throws NoSuchElementException if the char sequence is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun > CharSequence.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 character in the char sequence or `null` if there are no characters.\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 CharSequence.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 character in the char sequence or `null` if there are no characters.\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 CharSequence.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 character in the char sequence or `null` if there are no characters.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun > CharSequence.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 character in the char sequence.\n * \n * @throws NoSuchElementException if the char sequence is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.minOfWith(comparator: Comparator, 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 character in the char sequence or `null` if there are no characters.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.minOfWithOrNull(comparator: Comparator, 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 character or `null` if there are no characters.\n */\n@SinceKotlin(\"1.4\")\npublic fun CharSequence.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(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun CharSequence.minWith(comparator: Comparator): Char? {\n return minWithOrNull(comparator)\n}\n\n/**\n * Returns the first character having the smallest value according to the provided [comparator] or `null` if there are no characters.\n */\n@SinceKotlin(\"1.4\")\npublic fun CharSequence.minWithOrNull(comparator: Comparator): 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 char sequence has no characters.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun CharSequence.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no characters match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun CharSequence.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 character and returns the char sequence itself afterwards.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun S.onEach(action: (Char) -> Unit): S {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each character, providing sequential index with the character,\n * and returns the char sequence itself afterwards.\n * @param [action] function that takes the index of a character and the character itself\n * and performs the action on the character.\n */\n@SinceKotlin(\"1.4\")\npublic inline fun S.onEachIndexed(action: (index: Int, Char) -> Unit): S {\n return apply { forEachIndexed(action) }\n}\n\n/**\n * Accumulates value starting with the first character and applying [operation] from left to right\n * to current accumulator value and each character.\n * \n * Throws an exception if this char sequence is empty. If the char 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 a character,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun CharSequence.reduce(operation: (acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty char sequence 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 character and applying [operation] from left to right\n * to current accumulator value and each character with its index in the original char sequence.\n * \n * Throws an exception if this char sequence is empty. If the char 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 a character, current accumulator value and the character itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduce\n */\npublic inline fun CharSequence.reduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): Char {\n if (isEmpty())\n throw UnsupportedOperationException(\"Empty char sequence 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 character and applying [operation] from left to right\n * to current accumulator value and each character with its index in the original char sequence.\n * \n * Returns `null` if the char sequence is empty.\n * \n * @param [operation] function that takes the index of a character, current accumulator value and the character itself,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceOrNull\n */\n@SinceKotlin(\"1.4\")\npublic inline fun CharSequence.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 character and applying [operation] from left to right\n * to current accumulator value and each character.\n * \n * Returns `null` if the char sequence is empty.\n * \n * @param [operation] function that takes current accumulator value and a character,\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 CharSequence.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 character and applying [operation] from right to left\n * to each character and current accumulator value.\n * \n * Throws an exception if this char sequence is empty. If the char sequence 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 a character and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun CharSequence.reduceRight(operation: (Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty char sequence 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 character and applying [operation] from right to left\n * to each character with its index in the original char sequence and current accumulator value.\n * \n * Throws an exception if this char sequence is empty. If the char sequence 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 a character, the character itself and current accumulator value,\n * and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.reduceRight\n */\npublic inline fun CharSequence.reduceRightIndexed(operation: (index: Int, Char, acc: Char) -> Char): Char {\n var index = lastIndex\n if (index < 0) throw UnsupportedOperationException(\"Empty char sequence 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 character and applying [operation] from right to left\n * to each character with its index in the original char sequence and current accumulator value.\n * \n * Returns `null` if the char sequence is empty.\n * \n * @param [operation] function that takes the index of a character, the character 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 CharSequence.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 character and applying [operation] from right to left\n * to each character and current accumulator value.\n * \n * Returns `null` if the char sequence is empty.\n * \n * @param [operation] function that takes a character 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 CharSequence.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 character 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 a character, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\npublic inline fun CharSequence.runningFold(initial: R, operation: (acc: R, Char) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(length + 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 character, its index in the original char 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 list.\n * \n * @param [operation] function that takes the index of a character, current accumulator value\n * and the character itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningFold\n */\n@SinceKotlin(\"1.4\")\npublic inline fun CharSequence.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(length + 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 character and current accumulator value that starts with the first character of this char 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 list.\n * \n * @param [operation] function that takes current accumulator value and a character, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\npublic inline fun CharSequence.runningReduce(operation: (acc: Char, Char) -> Char): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(length).apply { add(accumulator) }\n for (index in 1 until length) {\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 character, its index in the original char sequence and current accumulator value that starts with the first character of this char 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 list.\n * \n * @param [operation] function that takes the index of a character, current accumulator value\n * and the character itself, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\npublic inline fun CharSequence.runningReduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(length).apply { add(accumulator) }\n for (index in 1 until length) {\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 character 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 a character, 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 CharSequence.scan(initial: R, operation: (acc: R, Char) -> R): List {\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 character, its index in the original char 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 list.\n * \n * @param [operation] function that takes the index of a character, current accumulator value\n * and the character 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 CharSequence.scanIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): List {\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 CharSequence.scanReduce(operation: (acc: Char, Char) -> Char): List {\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 CharSequence.scanReduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): List {\n return runningReduceIndexed(operation)\n}\n\n/**\n * Returns the sum of all values produced by [selector] function applied to each character in the char sequence.\n */\npublic inline fun CharSequence.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 character in the char sequence.\n */\npublic inline fun CharSequence.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 character in the char sequence.\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 CharSequence.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 character in the char sequence.\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 CharSequence.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 character in the char sequence.\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 CharSequence.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 character in the char sequence.\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 CharSequence.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 character in the char sequence.\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 CharSequence.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 * Splits this char sequence into a list of strings each not exceeding the given [size].\n * \n * The last string in the resulting list may have fewer characters than the given [size].\n * \n * @param size the number of elements to take in each string, must be positive and can be greater than the number of elements in this char sequence.\n * \n * @sample samples.text.Strings.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.chunked(size: Int): List {\n return windowed(size, size, partialWindows = true)\n}\n\n/**\n * Splits this char sequence into several char sequences 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 char sequence.\n * \n * Note that the char sequence 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 char sequence may have fewer characters than the given [size].\n * \n * @param size the number of elements to take in each char sequence, must be positive and can be greater than the number of elements in this char sequence.\n * \n * @sample samples.text.Strings.chunkedTransform\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.chunked(size: Int, transform: (CharSequence) -> R): List {\n return windowed(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Splits this char sequence into a sequence of strings each not exceeding the given [size].\n * \n * The last string in the resulting sequence may have fewer characters than the given [size].\n * \n * @param size the number of elements to take in each string, must be positive and can be greater than the number of elements in this char sequence.\n * \n * @sample samples.collections.Collections.Transformations.chunked\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.chunkedSequence(size: Int): Sequence {\n return chunkedSequence(size) { it.toString() }\n}\n\n/**\n * Splits this char sequence into several char sequences 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 char sequence.\n * \n * Note that the char sequence 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 char sequence may have fewer characters than the given [size].\n * \n * @param size the number of elements to take in each char sequence, must be positive and can be greater than the number of elements in this char sequence.\n * \n * @sample samples.text.Strings.chunkedTransformToSequence\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.chunkedSequence(size: Int, transform: (CharSequence) -> R): Sequence {\n return windowedSequence(size, size, partialWindows = true, transform = transform)\n}\n\n/**\n * Splits the original char sequence into pair of char sequences,\n * where *first* char sequence contains characters for which [predicate] yielded `true`,\n * while *second* char sequence contains characters for which [predicate] yielded `false`.\n * \n * @sample samples.text.Strings.partition\n */\npublic inline fun CharSequence.partition(predicate: (Char) -> Boolean): Pair {\n val first = StringBuilder()\n val second = StringBuilder()\n for (element in this) {\n if (predicate(element)) {\n first.append(element)\n } else {\n second.append(element)\n }\n }\n return Pair(first, second)\n}\n\n/**\n * Splits the original string into pair of strings,\n * where *first* string contains characters for which [predicate] yielded `true`,\n * while *second* string contains characters for which [predicate] yielded `false`.\n * \n * @sample samples.text.Strings.partition\n */\npublic inline fun String.partition(predicate: (Char) -> Boolean): Pair {\n val first = StringBuilder()\n val second = StringBuilder()\n for (element in this) {\n if (predicate(element)) {\n first.append(element)\n } else {\n second.append(element)\n }\n }\n return Pair(first.toString(), second.toString())\n}\n\n/**\n * Returns a list of snapshots of the window of the given [size]\n * sliding along this char sequence with the given [step], where each\n * snapshot is a string.\n * \n * Several last strings may have fewer characters than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this char 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 CharSequence.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false): List {\n return windowed(size, step, partialWindows) { it.toString() }\n}\n\n/**\n * Returns a list of results of applying the given [transform] function to\n * an each char sequence representing a view over the window of the given [size]\n * sliding along this char sequence with the given [step].\n * \n * Note that the char sequence 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 char sequences may have fewer characters than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this char 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 CharSequence.windowed(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (CharSequence) -> R): List {\n checkWindowSizeStep(size, step)\n val thisSize = this.length\n val resultCapacity = thisSize / step + if (thisSize % step == 0) 0 else 1\n val result = ArrayList(resultCapacity)\n var index = 0\n while (index in 0 until thisSize) {\n val end = index + size\n val coercedEnd = if (end < 0 || end > thisSize) { if (partialWindows) thisSize else break } else end\n result.add(transform(subSequence(index, coercedEnd)))\n index += step\n }\n return result\n}\n\n/**\n * Returns a sequence of snapshots of the window of the given [size]\n * sliding along this char sequence with the given [step], where each\n * snapshot is a string.\n * \n * Several last strings may have fewer characters than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this char 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 CharSequence.windowedSequence(size: Int, step: Int = 1, partialWindows: Boolean = false): Sequence {\n return windowedSequence(size, step, partialWindows) { it.toString() }\n}\n\n/**\n * Returns a sequence of results of applying the given [transform] function to\n * an each char sequence representing a view over the window of the given [size]\n * sliding along this char sequence with the given [step].\n * \n * Note that the char sequence 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 char sequences may have fewer characters than the given [size].\n * \n * Both [size] and [step] must be positive and can be greater than the number of elements in this char 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 CharSequence.windowedSequence(size: Int, step: Int = 1, partialWindows: Boolean = false, transform: (CharSequence) -> R): Sequence {\n checkWindowSizeStep(size, step)\n val windows = (if (partialWindows) indices else 0 until length - size + 1) step step\n return windows.asSequence().map { index ->\n val end = index + size\n val coercedEnd = if (end < 0 || end > length) length else end\n transform(subSequence(index, coercedEnd))\n }\n}\n\n/**\n * Returns a list of pairs built from the characters of `this` and the [other] char sequences with the same index\n * The returned list has length of the shortest char sequence.\n * \n * @sample samples.text.Strings.zip\n */\npublic infix fun CharSequence.zip(other: CharSequence): List> {\n return zip(other) { c1, c2 -> c1 to c2 }\n}\n\n/**\n * Returns a list of values built from the characters of `this` and the [other] char sequences with the same index\n * using the provided [transform] function applied to each pair of characters.\n * The returned list has length of the shortest char sequence.\n * \n * @sample samples.text.Strings.zipWithTransform\n */\npublic inline fun CharSequence.zip(other: CharSequence, transform: (a: Char, b: Char) -> V): List {\n val length = minOf(this.length, other.length)\n val list = ArrayList(length)\n for (i in 0 until length) {\n list.add(transform(this[i], other[i]))\n }\n return list\n}\n\n/**\n * Returns a list of pairs of each two adjacent characters in this char sequence.\n * \n * The returned list is empty if this char sequence contains less than two characters.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNext\n */\n@SinceKotlin(\"1.2\")\npublic fun CharSequence.zipWithNext(): List> {\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 characters in this char sequence.\n * \n * The returned list is empty if this char sequence contains less than two characters.\n * \n * @sample samples.collections.Collections.Transformations.zipWithNextToFindDeltas\n */\n@SinceKotlin(\"1.2\")\npublic inline fun CharSequence.zipWithNext(transform: (a: Char, b: Char) -> R): List {\n val size = length - 1\n if (size < 1) return emptyList()\n val result = ArrayList(size)\n for (index in 0 until size) {\n result.add(transform(this[index], this[index + 1]))\n }\n return result\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original char sequence returning its characters when being iterated.\n */\npublic fun CharSequence.asIterable(): Iterable {\n if (this is String && isEmpty()) return emptyList()\n return Iterable { this.iterator() }\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original char sequence returning its characters when being iterated.\n */\npublic fun CharSequence.asSequence(): Sequence {\n if (this is String && isEmpty()) return emptySequence()\n return Sequence { this.iterator() }\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\npackage kotlin.text\n\nimport kotlin.js.RegExp\n\n/**\n * Converts the characters in the specified array to a string.\n */\n@SinceKotlin(\"1.2\")\n@Deprecated(\"Use CharArray.concatToString() instead\", ReplaceWith(\"chars.concatToString()\"))\npublic actual fun String(chars: CharArray): String {\n var result = \"\"\n for (char in chars) {\n result += char\n }\n return result\n}\n\n/**\n * Converts the characters from a portion of the specified array to a string.\n *\n * @throws IndexOutOfBoundsException if either [offset] or [length] are less than zero\n * or `offset + length` is out of [chars] array bounds.\n */\n@SinceKotlin(\"1.2\")\n@Deprecated(\"Use CharArray.concatToString(startIndex, endIndex) instead\", ReplaceWith(\"chars.concatToString(offset, offset + length)\"))\npublic actual fun String(chars: CharArray, offset: Int, length: Int): String {\n if (offset < 0 || length < 0 || chars.size - offset < length)\n throw IndexOutOfBoundsException(\"size: ${chars.size}; offset: $offset; length: $length\")\n var result = \"\"\n for (index in offset until offset + length) {\n result += chars[index]\n }\n return result\n}\n\n/**\n * Concatenates characters in this [CharArray] into a String.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun CharArray.concatToString(): String {\n var result = \"\"\n for (char in this) {\n result += char\n }\n return result\n}\n\n/**\n * Concatenates characters in this [CharArray] or its subrange into a String.\n *\n * @param startIndex the beginning (inclusive) of the subrange of characters, 0 by default.\n * @param endIndex the end (exclusive) of the subrange of characters, size of this array by default.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun CharArray.concatToString(startIndex: Int = 0, endIndex: Int = this.size): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, this.size)\n var result = \"\"\n for (index in startIndex until endIndex) {\n result += this[index]\n }\n return result\n}\n\n/**\n * Returns a [CharArray] containing characters of this string.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun String.toCharArray(): CharArray {\n return CharArray(length) { get(it) }\n}\n\n/**\n * Returns a [CharArray] containing characters of this string or its substring.\n *\n * @param startIndex the beginning (inclusive) of the substring, 0 by default.\n * @param endIndex the end (exclusive) of the substring, length of this string by default.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the length of this string.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.toCharArray(startIndex: Int = 0, endIndex: Int = this.length): CharArray {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n return CharArray(endIndex - startIndex) { get(startIndex + it) }\n}\n\n/**\n * Decodes a string from the bytes in UTF-8 encoding in this array.\n *\n * Malformed byte sequences are replaced by the replacement char `\\uFFFD`.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun ByteArray.decodeToString(): String {\n return decodeUtf8(this, 0, size, false)\n}\n\n/**\n * Decodes a string from the bytes in UTF-8 encoding in this array or its subrange.\n *\n * @param startIndex the beginning (inclusive) of the subrange to decode, 0 by default.\n * @param endIndex the end (exclusive) of the subrange to decode, size of this array by default.\n * @param throwOnInvalidSequence specifies whether to throw an exception on malformed byte sequence or replace it by the replacement char `\\uFFFD`.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the size of this array.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n * @throws CharacterCodingException if the byte array contains malformed UTF-8 byte sequence and [throwOnInvalidSequence] is true.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun ByteArray.decodeToString(\n startIndex: Int = 0,\n endIndex: Int = this.size,\n throwOnInvalidSequence: Boolean = false\n): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, this.size)\n return decodeUtf8(this, startIndex, endIndex, throwOnInvalidSequence)\n}\n\n/**\n * Encodes this string to an array of bytes in UTF-8 encoding.\n *\n * Any malformed char sequence is replaced by the replacement byte sequence.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun String.encodeToByteArray(): ByteArray {\n return encodeUtf8(this, 0, length, false)\n}\n\n/**\n * Encodes this string or its substring to an array of bytes in UTF-8 encoding.\n *\n * @param startIndex the beginning (inclusive) of the substring to encode, 0 by default.\n * @param endIndex the end (exclusive) of the substring to encode, length of this string by default.\n * @param throwOnInvalidSequence specifies whether to throw an exception on malformed char sequence or replace.\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or [endIndex] is greater than the length of this string.\n * @throws IllegalArgumentException if [startIndex] is greater than [endIndex].\n * @throws CharacterCodingException if this string contains malformed char sequence and [throwOnInvalidSequence] is true.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.encodeToByteArray(\n startIndex: Int = 0,\n endIndex: Int = this.length,\n throwOnInvalidSequence: Boolean = false\n): ByteArray {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n return encodeUtf8(this, startIndex, endIndex, throwOnInvalidSequence)\n}\n\n/**\n * Returns a copy of this string converted to upper case using the rules of the default locale.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toUpperCase(): String = asDynamic().toUpperCase()\n\n/**\n * Returns a copy of this string converted to upper case using Unicode mapping rules of the invariant locale.\n *\n * This function supports one-to-many and many-to-one character mapping,\n * thus the length of the returned string can be different from the length of the original string.\n *\n * @sample samples.text.Strings.uppercase\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic actual inline fun String.uppercase(): String = asDynamic().toUpperCase()\n\n/**\n * Returns a copy of this string converted to lower case using the rules of the default locale.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toLowerCase(): String = asDynamic().toLowerCase()\n\n/**\n * Returns a copy of this string converted to lower case using Unicode mapping rules of the invariant locale.\n *\n * This function supports one-to-many and many-to-one character mapping,\n * thus the length of the returned string can be different from the length of the original string.\n *\n * @sample samples.text.Strings.lowercase\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic actual inline fun String.lowercase(): String = asDynamic().toLowerCase()\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeIndexOf(str: String, fromIndex: Int): Int = asDynamic().indexOf(str, fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeLastIndexOf(str: String, fromIndex: Int): Int = asDynamic().lastIndexOf(str, fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeStartsWith(s: String, position: Int): Boolean = asDynamic().startsWith(s, position)\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeEndsWith(s: String): Boolean = asDynamic().endsWith(s)\n\n@kotlin.internal.InlineOnly\npublic actual inline fun String.substring(startIndex: Int): String = asDynamic().substring(startIndex)\n\n@kotlin.internal.InlineOnly\npublic actual inline fun String.substring(startIndex: Int, endIndex: Int): String = asDynamic().substring(startIndex, endIndex)\n\n@kotlin.internal.InlineOnly\npublic inline fun String.concat(str: String): String = asDynamic().concat(str)\n\n@kotlin.internal.InlineOnly\npublic inline fun String.match(regex: String): Array? = asDynamic().match(regex)\n\n//native public fun String.trim(): String\n//TODO: String.replace to implement effective trimLeading and trimTrailing\n\n@kotlin.internal.InlineOnly\ninternal inline fun String.nativeReplace(pattern: RegExp, replacement: String): String = asDynamic().replace(pattern, replacement)\n\n@OptIn(ExperimentalStdlibApi::class)\n@SinceKotlin(\"1.2\")\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.compareTo(other: String, ignoreCase: Boolean = false): Int {\n if (ignoreCase) {\n val n1 = this.length\n val n2 = other.length\n val min = minOf(n1, n2)\n if (min == 0) return n1 - n2\n var start = 0\n while (true) {\n val end = minOf(start + 16, min)\n var s1 = this.substring(start, end)\n var s2 = other.substring(start, end)\n if (s1 != s2) {\n s1 = s1.uppercase()\n s2 = s2.uppercase()\n if (s1 != s2) {\n s1 = s1.lowercase()\n s2 = s2.lowercase()\n if (s1 != s2) {\n return s1.compareTo(s2)\n }\n }\n }\n if (end == min) break\n start = end\n }\n return n1 - n2\n } else {\n return compareTo(other)\n }\n}\n\n\nprivate val STRING_CASE_INSENSITIVE_ORDER = Comparator { a, b -> a.compareTo(b, ignoreCase = true) }\n\n@SinceKotlin(\"1.2\")\npublic actual val String.Companion.CASE_INSENSITIVE_ORDER: Comparator\n get() = STRING_CASE_INSENSITIVE_ORDER\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// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.collections\n\n/** An iterator over a sequence of values of type `Byte`. */\npublic abstract class ByteIterator : Iterator {\n override final fun next() = nextByte()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextByte(): Byte\n}\n\n/** An iterator over a sequence of values of type `Char`. */\npublic abstract class CharIterator : Iterator {\n override final fun next() = nextChar()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextChar(): Char\n}\n\n/** An iterator over a sequence of values of type `Short`. */\npublic abstract class ShortIterator : Iterator {\n override final fun next() = nextShort()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextShort(): Short\n}\n\n/** An iterator over a sequence of values of type `Int`. */\npublic abstract class IntIterator : Iterator {\n override final fun next() = nextInt()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextInt(): Int\n}\n\n/** An iterator over a sequence of values of type `Long`. */\npublic abstract class LongIterator : Iterator {\n override final fun next() = nextLong()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextLong(): Long\n}\n\n/** An iterator over a sequence of values of type `Float`. */\npublic abstract class FloatIterator : Iterator {\n override final fun next() = nextFloat()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextFloat(): Float\n}\n\n/** An iterator over a sequence of values of type `Double`. */\npublic abstract class DoubleIterator : Iterator {\n override final fun next() = nextDouble()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextDouble(): Double\n}\n\n/** An iterator over a sequence of values of type `Boolean`. */\npublic abstract class BooleanIterator : Iterator {\n override final fun next() = nextBoolean()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextBoolean(): Boolean\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\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\n/**\n * An iterator over a progression of values of type `Char`.\n * @property step the number by which the value is incremented on each step.\n */\ninternal class CharProgressionIterator(first: Char, last: Char, val step: Int) : CharIterator() {\n private val finalElement = last.toInt()\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private var next = if (hasNext) first.toInt() else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextChar(): Char {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n }\n else {\n next += step\n }\n return value.toChar()\n }\n}\n\n/**\n * An iterator over a progression of values of type `Int`.\n * @property step the number by which the value is incremented on each step.\n */\ninternal class IntProgressionIterator(first: Int, last: Int, val step: Int) : IntIterator() {\n private val finalElement = last\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private var next = if (hasNext) first else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextInt(): Int {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n }\n else {\n next += step\n }\n return value\n }\n}\n\n/**\n * An iterator over a progression of values of type `Long`.\n * @property step the number by which the value is incremented on each step.\n */\ninternal class LongProgressionIterator(first: Long, last: Long, val step: Long) : LongIterator() {\n private val finalElement = last\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private var next = if (hasNext) first else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextLong(): Long {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n }\n else {\n next += step\n }\n return value\n }\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\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\nimport kotlin.internal.getProgressionLastElement\n\n/**\n * A progression of values of type `Char`.\n */\npublic open class CharProgression\n internal constructor\n (\n start: Char,\n endInclusive: Char,\n step: Int\n ) : Iterable {\n init {\n if (step == 0) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Int.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Int.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: Char = start\n\n /**\n * The last element in the progression.\n */\n public val last: Char = getProgressionLastElement(start.toInt(), endInclusive.toInt(), step).toChar()\n\n /**\n * The step of the progression.\n */\n public val step: Int = step\n\n override fun iterator(): CharIterator = CharProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is CharProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * first.toInt() + last.toInt()) + step)\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates CharProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Int.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: Char, rangeEnd: Char, step: Int): CharProgression = CharProgression(rangeStart, rangeEnd, step)\n }\n}\n\n/**\n * A progression of values of type `Int`.\n */\npublic open class IntProgression\n internal constructor\n (\n start: Int,\n endInclusive: Int,\n step: Int\n ) : Iterable {\n init {\n if (step == 0) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Int.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Int.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: Int = start\n\n /**\n * The last element in the progression.\n */\n public val last: Int = getProgressionLastElement(start.toInt(), endInclusive.toInt(), step).toInt()\n\n /**\n * The step of the progression.\n */\n public val step: Int = step\n\n override fun iterator(): IntIterator = IntProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is IntProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * first + last) + step)\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates IntProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Int.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: Int, rangeEnd: Int, step: Int): IntProgression = IntProgression(rangeStart, rangeEnd, step)\n }\n}\n\n/**\n * A progression of values of type `Long`.\n */\npublic open class LongProgression\n internal constructor\n (\n start: Long,\n endInclusive: Long,\n step: Long\n ) : Iterable {\n init {\n if (step == 0L) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Long.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Long.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: Long = start\n\n /**\n * The last element in the progression.\n */\n public val last: Long = getProgressionLastElement(start.toLong(), endInclusive.toLong(), step).toLong()\n\n /**\n * The step of the progression.\n */\n public val step: Long = step\n\n override fun iterator(): LongIterator = LongProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is LongProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * (first xor (first ushr 32)) + (last xor (last ushr 32))) + (step xor (step ushr 32))).toInt()\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates LongProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Long.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: Long, rangeEnd: Long, step: Long): LongProgression = LongProgression(rangeStart, rangeEnd, step)\n }\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.collections\n\nimport kotlin.internal.PlatformDependent\n\n/**\n * Classes that inherit from this interface can be represented as a sequence of elements that can\n * be iterated over.\n * @param T the type of element being iterated over. The iterator is covariant in its element type.\n */\npublic interface Iterable {\n /**\n * Returns an iterator over the elements of this object.\n */\n public operator fun iterator(): Iterator\n}\n\n/**\n * Classes that inherit from this interface can be represented as a sequence of elements that can\n * be iterated over and that supports removing elements during iteration.\n * @param T the type of element being iterated over. The mutable iterator is invariant in its element type.\n */\npublic interface MutableIterable : Iterable {\n /**\n * Returns an iterator over the elements of this sequence that supports removing elements during iteration.\n */\n override fun iterator(): MutableIterator\n}\n\n/**\n * A generic collection of elements. Methods in this interface support only read-only access to the collection;\n * read/write access is supported through the [MutableCollection] interface.\n * @param E the type of elements contained in the collection. The collection is covariant in its element type.\n */\npublic interface Collection : Iterable {\n // Query Operations\n /**\n * Returns the size of the collection.\n */\n public val size: Int\n\n /**\n * Returns `true` if the collection is empty (contains no elements), `false` otherwise.\n */\n public fun isEmpty(): Boolean\n\n /**\n * Checks if the specified element is contained in this collection.\n */\n public operator fun contains(element: @UnsafeVariance E): Boolean\n\n override fun iterator(): Iterator\n\n // Bulk Operations\n /**\n * Checks if all elements in the specified collection are contained in this collection.\n */\n public fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean\n}\n\n/**\n * A generic collection of elements that supports adding and removing elements.\n *\n * @param E the type of elements contained in the collection. The mutable collection is invariant in its element type.\n */\npublic interface MutableCollection : Collection, MutableIterable {\n // Query Operations\n override fun iterator(): MutableIterator\n\n // Modification Operations\n /**\n * Adds the specified element to the collection.\n *\n * @return `true` if the element has been added, `false` if the collection does not support duplicates\n * and the element is already contained in the collection.\n */\n public fun add(element: E): Boolean\n\n /**\n * Removes a single instance of the specified element from this\n * collection, if it is present.\n *\n * @return `true` if the element has been successfully removed; `false` if it was not present in the collection.\n */\n public fun remove(element: E): Boolean\n\n // Bulk Modification Operations\n /**\n * Adds all of the elements of the specified collection to this collection.\n *\n * @return `true` if any of the specified elements was added to the collection, `false` if the collection was not modified.\n */\n public fun addAll(elements: Collection): Boolean\n\n /**\n * Removes all of this collection's elements that are also contained in the specified collection.\n *\n * @return `true` if any of the specified elements was removed from the collection, `false` if the collection was not modified.\n */\n public fun removeAll(elements: Collection): Boolean\n\n /**\n * Retains only the elements in this collection that are contained in the specified collection.\n *\n * @return `true` if any element was removed from the collection, `false` if the collection was not modified.\n */\n public fun retainAll(elements: Collection): Boolean\n\n /**\n * Removes all elements from this collection.\n */\n public fun clear(): Unit\n}\n\n/**\n * A generic ordered collection of elements. Methods in this interface support only read-only access to the list;\n * read/write access is supported through the [MutableList] interface.\n * @param E the type of elements contained in the list. The list is covariant in its element type.\n */\npublic interface List : Collection {\n // Query Operations\n\n override val size: Int\n override fun isEmpty(): Boolean\n override fun contains(element: @UnsafeVariance E): Boolean\n override fun iterator(): Iterator\n\n // Bulk Operations\n override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean\n\n // Positional Access Operations\n /**\n * Returns the element at the specified index in the list.\n */\n public operator fun get(index: Int): E\n\n // Search Operations\n /**\n * Returns the index of the first occurrence of the specified element in the list, or -1 if the specified\n * element is not contained in the list.\n */\n public fun indexOf(element: @UnsafeVariance E): Int\n\n /**\n * Returns the index of the last occurrence of the specified element in the list, or -1 if the specified\n * element is not contained in the list.\n */\n public fun lastIndexOf(element: @UnsafeVariance E): Int\n\n // List Iterators\n /**\n * Returns a list iterator over the elements in this list (in proper sequence).\n */\n public fun listIterator(): ListIterator\n\n /**\n * Returns a list iterator over the elements in this list (in proper sequence), starting at the specified [index].\n */\n public fun listIterator(index: Int): ListIterator\n\n // View\n /**\n * Returns a view of the portion of this list between the specified [fromIndex] (inclusive) and [toIndex] (exclusive).\n * The returned list is backed by this list, so non-structural changes in the returned list are reflected in this list, and vice-versa.\n *\n * Structural changes in the base list make the behavior of the view undefined.\n */\n public fun subList(fromIndex: Int, toIndex: Int): List\n}\n\n/**\n * A generic ordered collection of elements that supports adding and removing elements.\n * @param E the type of elements contained in the list. The mutable list is invariant in its element type.\n */\npublic interface MutableList : List, MutableCollection {\n // Modification Operations\n /**\n * Adds the specified element to the end of this list.\n *\n * @return `true` because the list is always modified as the result of this operation.\n */\n override fun add(element: E): Boolean\n\n override fun remove(element: E): Boolean\n\n // Bulk Modification Operations\n /**\n * Adds all of the elements of the specified collection to the end of this list.\n *\n * The elements are appended in the order they appear in the [elements] collection.\n *\n * @return `true` if the list was changed as the result of the operation.\n */\n override fun addAll(elements: Collection): Boolean\n\n /**\n * Inserts all of the elements of the specified collection [elements] into this list at the specified [index].\n *\n * @return `true` if the list was changed as the result of the operation.\n */\n public fun addAll(index: Int, elements: Collection): Boolean\n\n override fun removeAll(elements: Collection): Boolean\n override fun retainAll(elements: Collection): Boolean\n override fun clear(): Unit\n\n // Positional Access Operations\n /**\n * Replaces the element at the specified position in this list with the specified element.\n *\n * @return the element previously at the specified position.\n */\n public operator fun set(index: Int, element: E): E\n\n /**\n * Inserts an element into the list at the specified [index].\n */\n public fun add(index: Int, element: E): Unit\n\n /**\n * Removes an element at the specified [index] from the list.\n *\n * @return the element that has been removed.\n */\n public fun removeAt(index: Int): E\n\n // List Iterators\n override fun listIterator(): MutableListIterator\n\n override fun listIterator(index: Int): MutableListIterator\n\n // View\n override fun subList(fromIndex: Int, toIndex: Int): MutableList\n}\n\n/**\n * A generic unordered collection of elements that does not support duplicate elements.\n * Methods in this interface support only read-only access to the set;\n * read/write access is supported through the [MutableSet] interface.\n * @param E the type of elements contained in the set. The set is covariant in its element type.\n */\npublic interface Set : Collection {\n // Query Operations\n\n override val size: Int\n override fun isEmpty(): Boolean\n override fun contains(element: @UnsafeVariance E): Boolean\n override fun iterator(): Iterator\n\n // Bulk Operations\n override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean\n}\n\n/**\n * A generic unordered collection of elements that does not support duplicate elements, and supports\n * adding and removing elements.\n * @param E the type of elements contained in the set. The mutable set is invariant in its element type.\n */\npublic interface MutableSet : Set, MutableCollection {\n // Query Operations\n override fun iterator(): MutableIterator\n\n // Modification Operations\n\n /**\n * Adds the specified element to the set.\n *\n * @return `true` if the element has been added, `false` if the element is already contained in the set.\n */\n override fun add(element: E): Boolean\n\n override fun remove(element: E): Boolean\n\n // Bulk Modification Operations\n\n override fun addAll(elements: Collection): Boolean\n override fun removeAll(elements: Collection): Boolean\n override fun retainAll(elements: Collection): Boolean\n override fun clear(): Unit\n}\n\n/**\n * A collection that holds pairs of objects (keys and values) and supports efficiently retrieving\n * the value corresponding to each key. Map keys are unique; the map holds only one value for each key.\n * Methods in this interface support only read-only access to the map; read-write access is supported through\n * the [MutableMap] interface.\n * @param K the type of map keys. The map is invariant in its key type, as it\n * can accept key as a parameter (of [containsKey] for example) and return it in [keys] set.\n * @param V the type of map values. The map is covariant in its value type.\n */\npublic interface Map {\n // Query Operations\n /**\n * Returns the number of key/value pairs in the map.\n */\n public val size: Int\n\n /**\n * Returns `true` if the map is empty (contains no elements), `false` otherwise.\n */\n public fun isEmpty(): Boolean\n\n /**\n * Returns `true` if the map contains the specified [key].\n */\n public fun containsKey(key: K): Boolean\n\n /**\n * Returns `true` if the map maps one or more keys to the specified [value].\n */\n public fun containsValue(value: @UnsafeVariance V): Boolean\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 public operator fun get(key: K): V?\n\n /**\n * Returns the value corresponding to the given [key], or [defaultValue] if such a key is not present in the map.\n *\n * @since JDK 1.8\n */\n @SinceKotlin(\"1.1\")\n @PlatformDependent\n public fun getOrDefault(key: K, defaultValue: @UnsafeVariance V): V {\n // See default implementation in JDK sources\n throw NotImplementedError()\n }\n\n // Views\n /**\n * Returns a read-only [Set] of all keys in this map.\n */\n public val keys: Set\n\n /**\n * Returns a read-only [Collection] of all values in this map. Note that this collection may contain duplicate values.\n */\n public val values: Collection\n\n /**\n * Returns a read-only [Set] of all key/value pairs in this map.\n */\n public val entries: Set>\n\n /**\n * Represents a key/value pair held by a [Map].\n */\n public interface Entry {\n /**\n * Returns the key of this key/value pair.\n */\n public val key: K\n\n /**\n * Returns the value of this key/value pair.\n */\n public val value: V\n }\n}\n\n/**\n * A modifiable collection that holds pairs of objects (keys and values) and supports efficiently retrieving\n * the value corresponding to each key. Map keys are unique; the map holds only one value for each key.\n * @param K the type of map keys. The map is invariant in its key type.\n * @param V the type of map values. The mutable map is invariant in its value type.\n */\npublic interface MutableMap : Map {\n // Modification Operations\n /**\n * Associates the specified [value] with the specified [key] in the map.\n *\n * @return the previous value associated with the key, or `null` if the key was not present in the map.\n */\n public fun put(key: K, value: V): V?\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 public fun remove(key: K): V?\n\n /**\n * Removes the entry for the specified key only if it is mapped to the specified value.\n *\n * @return true if entry was removed\n */\n @SinceKotlin(\"1.1\")\n @PlatformDependent\n public fun remove(key: K, value: V): Boolean {\n // See default implementation in JDK sources\n return true\n }\n\n // Bulk Modification Operations\n /**\n * Updates this map with key/value pairs from the specified map [from].\n */\n public fun putAll(from: Map): Unit\n\n /**\n * Removes all elements from this map.\n */\n public fun clear(): Unit\n\n // Views\n /**\n * Returns a [MutableSet] of all keys in this map.\n */\n override val keys: MutableSet\n\n /**\n * Returns a [MutableCollection] of all values in this map. Note that this collection may contain duplicate values.\n */\n override val values: MutableCollection\n\n /**\n * Returns a [MutableSet] of all key/value pairs in this map.\n */\n override val entries: MutableSet>\n\n /**\n * Represents a key/value pair held by a [MutableMap].\n */\n public interface MutableEntry : Map.Entry {\n /**\n * Changes the value associated with the key of this entry.\n *\n * @return the previous value corresponding to the key.\n */\n public fun setValue(newValue: V): V\n }\n}\n","/*\n * Copyright 2010-2019 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.ranges\n\n/**\n * Represents a range of values (for example, numbers or characters).\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/ranges.html) for more information.\n */\npublic interface ClosedRange> {\n /**\n * The minimum value in the range.\n */\n public val start: T\n\n /**\n * The maximum value in the range (inclusive).\n */\n public val endInclusive: T\n\n /**\n * Checks whether the specified [value] belongs to the range.\n */\n public operator fun contains(value: T): Boolean = value >= start && value <= endInclusive\n\n /**\n * Checks whether the range is empty.\n */\n public fun isEmpty(): Boolean = start > endInclusive\n}\n","/*\n * Copyright 2010-2015 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage kotlin\n\n/**\n * The type with only one value: the `Unit` object. This type corresponds to the `void` type in Java.\n */\npublic object Unit {\n override fun toString() = \"kotlin.Unit\"\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\npackage kotlin.internal\n\n// a mod b (in arithmetical sense)\nprivate fun mod(a: Int, b: Int): Int {\n val mod = a % b\n return if (mod >= 0) mod else mod + b\n}\n\nprivate fun mod(a: Long, b: Long): Long {\n val mod = a % b\n return if (mod >= 0) mod else mod + b\n}\n\n// (a - b) mod c\nprivate fun differenceModulo(a: Int, b: Int, c: Int): Int {\n return mod(mod(a, c) - mod(b, c), c)\n}\n\nprivate fun differenceModulo(a: Long, b: Long, c: Long): Long {\n return mod(mod(a, c) - mod(b, c), c)\n}\n\n/**\n * Calculates the final element of a bounded arithmetic progression, i.e. the last element of the progression which is in the range\n * from [start] to [end] in case of a positive [step], or from [end] to [start] in case of a negative\n * [step].\n *\n * No validation on passed parameters is performed. The given parameters should satisfy the condition:\n *\n * - either `step > 0` and `start <= end`,\n * - or `step < 0` and `start >= end`.\n *\n * @param start first element of the progression\n * @param end ending bound for the progression\n * @param step increment, or difference of successive elements in the progression\n * @return the final element of the progression\n * @suppress\n */\n@PublishedApi\ninternal fun getProgressionLastElement(start: Int, end: Int, step: Int): Int = when {\n step > 0 -> if (start >= end) end else end - differenceModulo(end, start, step)\n step < 0 -> if (start <= end) end else end + differenceModulo(start, end, -step)\n else -> throw kotlin.IllegalArgumentException(\"Step is zero.\")\n}\n\n/**\n * Calculates the final element of a bounded arithmetic progression, i.e. the last element of the progression which is in the range\n * from [start] to [end] in case of a positive [step], or from [end] to [start] in case of a negative\n * [step].\n *\n * No validation on passed parameters is performed. The given parameters should satisfy the condition:\n *\n * - either `step > 0` and `start <= end`,\n * - or `step < 0` and `start >= end`.\n *\n * @param start first element of the progression\n * @param end ending bound for the progression\n * @param step increment, or difference of successive elements in the progression\n * @return the final element of the progression\n * @suppress\n */\n@PublishedApi\ninternal fun getProgressionLastElement(start: Long, end: Long, step: Long): Long = when {\n step > 0 -> if (start >= end) end else end - differenceModulo(end, start, step)\n step < 0 -> if (start <= end) end else end + differenceModulo(start, end, -step)\n else -> throw kotlin.IllegalArgumentException(\"Step is zero.\")\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@JsName(\"arrayIterator\")\ninternal fun arrayIterator(array: dynamic, type: String?) = when (type) {\n null -> {\n val arr: Array = array\n object : Iterator {\n var index = 0\n override fun hasNext() = index < arr.size\n override fun next() = if (index < arr.size) arr[index++] else throw NoSuchElementException(\"$index\")\n }\n }\n \"BooleanArray\" -> booleanArrayIterator(array)\n \"ByteArray\" -> byteArrayIterator(array)\n \"ShortArray\" -> shortArrayIterator(array)\n \"CharArray\" -> charArrayIterator(array)\n \"IntArray\" -> intArrayIterator(array)\n \"LongArray\" -> longArrayIterator(array)\n \"FloatArray\" -> floatArrayIterator(array)\n \"DoubleArray\" -> doubleArrayIterator(array)\n else -> throw IllegalStateException(\"Unsupported type argument for arrayIterator: $type\")\n}\n\n@JsName(\"booleanArrayIterator\")\ninternal fun booleanArrayIterator(array: BooleanArray) = object : BooleanIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextBoolean() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"byteArrayIterator\")\ninternal fun byteArrayIterator(array: ByteArray) = object : ByteIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextByte() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"shortArrayIterator\")\ninternal fun shortArrayIterator(array: ShortArray) = object : ShortIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextShort() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"charArrayIterator\")\ninternal fun charArrayIterator(array: CharArray) = object : CharIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextChar() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"intArrayIterator\")\ninternal fun intArrayIterator(array: IntArray) = object : IntIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextInt() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"floatArrayIterator\")\ninternal fun floatArrayIterator(array: FloatArray) = object : FloatIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextFloat() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"doubleArrayIterator\")\ninternal fun doubleArrayIterator(array: DoubleArray) = object : DoubleIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextDouble() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"longArrayIterator\")\ninternal fun longArrayIterator(array: LongArray) = object : LongIterator() {\n var index = 0\n override fun hasNext() = index < array.size\n override fun nextLong() = if (index < array.size) array[index++] else throw NoSuchElementException(\"$index\")\n}\n\n@JsName(\"PropertyMetadata\")\ninternal class PropertyMetadata(@JsName(\"callableName\") val name: String)\n\n@JsName(\"noWhenBranchMatched\")\ninternal fun noWhenBranchMatched(): Nothing = throw NoWhenBranchMatchedException()\n\n@JsName(\"subSequence\")\ninternal fun subSequence(c: CharSequence, startIndex: Int, endIndex: Int): CharSequence {\n if (c is String) {\n return c.substring(startIndex, endIndex)\n } else {\n return c.asDynamic().`subSequence_vux9f0$`(startIndex, endIndex)\n }\n}\n\n@JsName(\"captureStack\")\ninternal fun captureStack(@Suppress(\"UNUSED_PARAMETER\") baseClass: JsClass, instance: Throwable) {\n if (js(\"Error\").captureStackTrace) {\n // Using uncropped stack traces due to KT-37563.\n // Precise stack traces are implemented in JS IR compiler and stdlib\n js(\"Error\").captureStackTrace(instance);\n } else {\n instance.asDynamic().stack = js(\"new Error()\").stack;\n }\n}\n\n@JsName(\"newThrowable\")\ninternal fun newThrowable(message: String?, cause: Throwable?): Throwable {\n val throwable = js(\"new Error()\")\n throwable.message = if (jsTypeOf(message) == \"undefined\") {\n if (cause != null) cause.toString() else null\n } else {\n message\n }\n throwable.cause = cause\n throwable.name = \"Throwable\"\n return throwable\n}\n\n@JsName(\"BoxedChar\")\ninternal class BoxedChar(val c: Int) : Comparable {\n override fun equals(other: Any?): Boolean {\n return other is BoxedChar && c == other.c\n }\n\n override fun hashCode(): Int {\n return c\n }\n\n override fun toString(): String {\n return js(\"this.c\").unsafeCast().toString()\n }\n\n override fun compareTo(other: Int): Int {\n return js(\"this.c - other\").unsafeCast()\n }\n\n @JsName(\"valueOf\")\n public fun valueOf(): Int {\n return c\n }\n}\n\n@kotlin.internal.InlineOnly\ninternal inline fun concat(args: Array): T {\n val typed = js(\"Array\")(args.size)\n for (i in args.indices) {\n val arr = args[i]\n if (arr !is Array<*>) {\n typed[i] = js(\"[]\").slice.call(arr)\n } else {\n typed[i] = arr\n }\n }\n return js(\"[]\").concat.apply(js(\"[]\"), typed);\n}\n\n/** Concat regular Array's and TypedArray's into an Array.\n */\n@PublishedApi\n@JsName(\"arrayConcat\")\n@Suppress(\"UNUSED_PARAMETER\")\ninternal fun arrayConcat(a: T, b: T): T {\n return concat(js(\"arguments\"))\n}\n\n/** Concat primitive arrays. Main use: prepare vararg arguments.\n * For compatibility with 1.1.0 the arguments may be a mixture of Array's and TypedArray's.\n *\n * If the first argument is TypedArray (Byte-, Short-, Char-, Int-, Float-, and DoubleArray) returns a TypedArray, otherwise an Array.\n * If the first argument has the $type$ property (Boolean-, Char-, and LongArray) copy its value to result.$type$.\n * If the first argument is a regular Array without the $type$ property default to arrayConcat.\n */\n@PublishedApi\n@JsName(\"primitiveArrayConcat\")\n@Suppress(\"UNUSED_PARAMETER\")\ninternal fun primitiveArrayConcat(a: T, b: T): T {\n val args: Array = js(\"arguments\")\n if (a is Array<*> && a.asDynamic().`$type$` === undefined) {\n return concat(args)\n } else {\n var size = 0\n for (i in args.indices) {\n size += args[i].asDynamic().length as Int\n }\n val result = js(\"new a.constructor(size)\")\n kotlin.copyArrayType(a, result)\n size = 0\n for (i in args.indices) {\n val arr = args[i].asDynamic()\n for (j in 0 until arr.length) {\n result[size++] = arr[j]\n }\n }\n return result\n }\n}\n\n@JsName(\"booleanArrayOf\")\ninternal fun booleanArrayOf() = withType(\"BooleanArray\", js(\"[].slice.call(arguments)\"))\n\n@JsName(\"charArrayOf\") // The arguments have to be slice'd here because of Rhino (see KT-16974)\ninternal fun charArrayOf() = withType(\"CharArray\", js(\"new Uint16Array([].slice.call(arguments))\"))\n\n@JsName(\"longArrayOf\")\ninternal fun longArrayOf() = withType(\"LongArray\", js(\"[].slice.call(arguments)\"))\n\n@JsName(\"withType\")\n@kotlin.internal.InlineOnly\ninternal inline fun withType(type: String, array: dynamic): dynamic {\n array.`$type$` = type\n return array\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.coroutines\n\nimport kotlin.coroutines.intrinsics.COROUTINE_SUSPENDED\n\n@SinceKotlin(\"1.3\")\n@JsName(\"CoroutineImpl\")\ninternal abstract class CoroutineImpl(private val resultContinuation: Continuation) : Continuation {\n protected var state = 0\n protected var exceptionState = 0\n protected var result: Any? = null\n protected var exception: Throwable? = null\n protected var finallyPath: Array? = null\n\n public override val context: CoroutineContext = resultContinuation.context\n\n private var intercepted_: Continuation? = null\n\n public fun intercepted(): Continuation =\n intercepted_\n ?: (context[ContinuationInterceptor]?.interceptContinuation(this) ?: this)\n .also { intercepted_ = it }\n\n override fun resumeWith(result: Result) {\n var current = this\n var currentResult: Any? = result.getOrNull()\n var currentException: Throwable? = result.exceptionOrNull()\n\n // This loop unrolls recursion in current.resumeWith(param) to make saner and shorter stack traces on resume\n while (true) {\n with(current) {\n val completion = resultContinuation\n\n // Set result and exception fields in the current continuation\n if (currentException == null) {\n this.result = currentResult\n } else {\n state = exceptionState\n exception = currentException\n }\n\n try {\n val outcome = doResume()\n if (outcome === COROUTINE_SUSPENDED) return\n currentResult = outcome\n currentException = null\n } catch (exception: dynamic) { // Catch all exceptions\n currentResult = null\n currentException = exception.unsafeCast()\n }\n\n releaseIntercepted() // this state machine instance is terminating\n\n if (completion is CoroutineImpl) {\n // unrolling recursion via loop\n current = completion\n } else {\n // top-level completion reached -- invoke and return\n currentException?.let {\n completion.resumeWithException(it)\n } ?: completion.resume(currentResult)\n return\n }\n }\n }\n }\n\n private fun releaseIntercepted() {\n val intercepted = intercepted_\n if (intercepted != null && intercepted !== this) {\n context[ContinuationInterceptor]!!.releaseInterceptedContinuation(intercepted)\n }\n this.intercepted_ = CompletedContinuation // just in case\n }\n\n protected abstract fun doResume(): Any?\n}\n\ninternal object CompletedContinuation : Continuation {\n override val context: CoroutineContext\n get() = error(\"This continuation is already complete\")\n\n override fun resumeWith(result: Result) {\n error(\"This continuation is already complete\")\n }\n\n override fun toString(): String = \"This continuation is already complete\"\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: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 @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 success(value: T): Result =\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 failure(exception: Throwable): Result =\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 runCatching(block: () -> R): Result {\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.runCatching(block: T.() -> R): Result {\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 Result.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 Result.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 Result.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 Result.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 Result.map(transform: (value: T) -> R): Result {\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 Result.mapCatching(transform: (value: T) -> R): Result {\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 Result.recover(transform: (exception: Throwable) -> R): Result {\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 Result.recoverCatching(transform: (exception: Throwable) -> R): Result {\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 Result.onFailure(action: (exception: Throwable) -> Unit): Result {\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 Result.onSuccess(action: (value: T) -> Unit): Result {\n contract {\n callsInPlace(action, InvocationKind.AT_MOST_ONCE)\n }\n if (isSuccess) action(value as T)\n return this\n}\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 {\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)\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 Continuation.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 Continuation.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 Continuation(\n context: CoroutineContext,\n crossinline resumeWith: (Result) -> Unit\n): Continuation =\n object : Continuation {\n override val context: CoroutineContext\n get() = context\n\n override fun resumeWith(result: Result) =\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 (suspend () -> T).createCoroutine(\n completion: Continuation\n): Continuation =\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 (suspend R.() -> T).createCoroutine(\n receiver: R,\n completion: Continuation\n): Continuation =\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 (suspend () -> T).startCoroutine(\n completion: Continuation\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 (suspend R.() -> T).startCoroutine(\n receiver: R,\n completion: Continuation\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 suspendCoroutine(crossinline block: (Continuation) -> Unit): T {\n contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }\n return suspendCoroutineUninterceptedOrReturn { c: Continuation ->\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\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 (suspend () -> T).startCoroutineUninterceptedOrReturn(\n completion: Continuation\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 (suspend R.() -> T).startCoroutineUninterceptedOrReturn(\n receiver: R,\n completion: Continuation\n): Any? = this.asDynamic()(receiver, completion, false)\n\n@InlineOnly\ninternal actual inline fun (suspend R.(P) -> T).startCoroutineUninterceptedOrReturn(\n receiver: R,\n param: P,\n completion: Continuation\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 (suspend () -> T).createCoroutineUnintercepted(\n completion: Continuation\n): Continuation =\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 (suspend R.() -> T).createCoroutineUnintercepted(\n receiver: R,\n completion: Continuation\n): Continuation =\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 Continuation.intercepted(): Continuation =\n (this as? CoroutineImpl)?.intercepted() ?: this\n\n\nprivate inline fun createCoroutineFromSuspendFunction(\n completion: Continuation,\n crossinline block: () -> Any?\n): Continuation {\n @Suppress(\"UNCHECKED_CAST\")\n return object : CoroutineImpl(completion as Continuation) {\n override fun doResume(): Any? {\n exception?.let { throw it }\n return block()\n }\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\npackage kotlin\n\n// NOTE: Do not author your exceptions as they are written in this file, instead use this template:\n/*\npublic open class MyException : Exception {\n constructor() : super()\n constructor(message: String?) : super(message)\n constructor(message: String?, cause: Throwable?) : super(message, cause)\n constructor(cause: Throwable?) : super(cause)\n}\n*/\n\n\n// TODO: remove primary constructors, make all secondary KT-22055\n\n@Suppress(\"USELESS_ELVIS_RIGHT_IS_NULL\")\npublic actual open class Error actual constructor(message: String?, cause: Throwable?) : Throwable(message, cause ?: null) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\n@Suppress(\"USELESS_ELVIS_RIGHT_IS_NULL\")\npublic actual open class Exception actual constructor(message: String?, cause: Throwable?) : Throwable(message, cause ?: null) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class RuntimeException actual constructor(message: String?, cause: Throwable?) : Exception(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class IllegalArgumentException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class IllegalStateException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class IndexOutOfBoundsException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\npublic actual open class ConcurrentModificationException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class UnsupportedOperationException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\n\npublic actual open class NumberFormatException actual constructor(message: String?) : IllegalArgumentException(message) {\n actual constructor() : this(null)\n}\n\n\npublic actual open class NullPointerException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\npublic actual open class ClassCastException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\npublic actual open class AssertionError\n@SinceKotlin(\"1.4\")\nconstructor(message: String?, cause: Throwable?) : Error(message, cause) {\n actual constructor() : this(null)\n constructor(message: String?) : this(message, null)\n actual constructor(message: Any?) : this(message.toString(), message as? Throwable)\n}\n\npublic actual open class NoSuchElementException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\n@SinceKotlin(\"1.3\")\npublic actual open class ArithmeticException actual constructor(message: String?) : RuntimeException(message) {\n actual constructor() : this(null)\n}\n\npublic actual open class NoWhenBranchMatchedException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\n}\n\npublic actual open class UninitializedPropertyAccessException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) {\n actual constructor() : this(null, null)\n actual constructor(message: String?) : this(message, null)\n actual constructor(cause: Throwable?) : this(undefined, cause)\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: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 emptyArray(): Array = js(\"[]\")\n\n@library\npublic fun arrayOf(vararg elements: T): Array = 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 lazy(initializer: () -> T): Lazy = 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 lazy(mode: LazyThreadSafetyMode, initializer: () -> T): Lazy = 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 lazy(lock: Any?, initializer: () -> T): Lazy = 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 arrayPlusCollection(array: dynamic, collection: Collection): 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 fillFromCollection(dst: dynamic, startIndex: Int, collection: Collection): 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)","/*\n * Copyright 2010-2019 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.text\n\n/**\n * Returns a string representation of this [Long] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Long.toString(radix: Int): String = asDynamic().toString(checkRadix(radix))","/*\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 Array.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 Array.asList(): List {\n return ArrayList(this.unsafeCast>())\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun ByteArray.asList(): List {\n return this.unsafeCast>().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 {\n return this.unsafeCast>().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 {\n return this.unsafeCast>().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 {\n return this.unsafeCast>().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 {\n return this.unsafeCast>().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 {\n return this.unsafeCast>().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 {\n return this.unsafeCast>().asList()\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\npublic actual fun CharArray.asList(): List {\n return object : AbstractList(), 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 @Suppress(\"USELESS_CAST\")\n if ((element as Any?) !is Char) return -1\n return this@asList.indexOf(element)\n }\n override fun lastIndexOf(element: Char): Int {\n @Suppress(\"USELESS_CAST\")\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 Array.contentDeepEquals(other: Array): 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 Array?.contentDeepEquals(other: Array?): 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 Array.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 Array?.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 Array.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 Array?.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 Array.contentEquals(other: Array): 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 Array?.contentEquals(other: Array?): 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 Array.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 Array?.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 Array.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 Array?.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 Array.copyInto(destination: Array, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array {\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>(), destination.unsafeCast>(), 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>(), destination.unsafeCast>(), 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>(), destination.unsafeCast>(), 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>(), destination.unsafeCast>(), 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>(), destination.unsafeCast>(), 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>(), destination.unsafeCast>(), 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>(), destination.unsafeCast>(), 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>(), destination.unsafeCast>(), 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 Array.copyOf(): Array {\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 Array.copyOf(newSize: Int): Array {\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 Array.copyOfRange(fromIndex: Int, toIndex: Int): Array {\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 Array.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 Array.plus(element: T): Array {\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 Array.plus(elements: Collection): Array {\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): 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): 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): 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): 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): 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): 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): 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): 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 Array.plus(elements: Array): Array {\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 Array.plusElement(element: T): Array {\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 > Array.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 Array.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 > Array.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()\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()\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()\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>(), 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()\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()\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()\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 Array.sortWith(comparator: Comparator): 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 Array.sortWith(comparator: Comparator, 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 {\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 {\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 {\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 {\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 {\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 {\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 {\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 {\n return Array(size) { index -> this[index] }\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.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 kotlin.ranges.contains\nimport kotlin.ranges.reversed\n\n/**\n * Reverses elements in the list in-place.\n */\npublic actual fun MutableList.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 * 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 * Provides a skeletal implementation of the [MutableCollection] interface.\n *\n * @param E the type of elements contained in the collection. The collection is invariant in its element type.\n */\npublic actual abstract class AbstractMutableCollection protected actual constructor() : AbstractCollection(), MutableCollection {\n\n actual abstract override fun add(element: E): Boolean\n\n actual override fun remove(element: E): Boolean {\n checkIsMutable()\n val iterator = iterator()\n while (iterator.hasNext()) {\n if (iterator.next() == element) {\n iterator.remove()\n return true\n }\n }\n return false\n }\n\n actual override fun addAll(elements: Collection): Boolean {\n checkIsMutable()\n var modified = false\n for (element in elements) {\n if (add(element)) modified = true\n }\n return modified\n }\n\n actual override fun removeAll(elements: Collection): Boolean {\n checkIsMutable()\n return (this as MutableIterable).removeAll { it in elements }\n }\n\n actual override fun retainAll(elements: Collection): Boolean {\n checkIsMutable()\n return (this as MutableIterable).removeAll { it !in elements }\n }\n\n actual override fun clear(): Unit {\n checkIsMutable()\n val iterator = this.iterator()\n while (iterator.hasNext()) {\n iterator.next()\n iterator.remove()\n }\n }\n\n @JsName(\"toJSON\")\n open fun toJSON(): Any = this.toArray()\n\n\n /**\n * This method is called every time when a mutating method is called on this mutable collection.\n * Mutable collections that are built (frozen) must throw `UnsupportedOperationException`.\n */\n internal open fun checkIsMutable(): Unit { }\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\n/*\n * Based on GWT AbstractList\n * Copyright 2007 Google Inc.\n*/\n\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the [MutableList] interface.\n *\n * @param E the type of elements contained in the list. The list is invariant in its element type.\n */\npublic actual abstract class AbstractMutableList protected actual constructor() : AbstractMutableCollection(), MutableList {\n protected var modCount: Int = 0\n\n abstract override fun add(index: Int, element: E): Unit\n abstract override fun removeAt(index: Int): E\n abstract override fun set(index: Int, element: E): E\n\n /**\n * Adds the specified element to the end of this list.\n *\n * @return `true` because the list is always modified as the result of this operation.\n */\n actual override fun add(element: E): Boolean {\n checkIsMutable()\n add(size, element)\n return true\n }\n\n actual override fun addAll(index: Int, elements: Collection): Boolean {\n checkIsMutable()\n var _index = index\n var changed = false\n for (e in elements) {\n add(_index++, e)\n changed = true\n }\n return changed\n }\n\n actual override fun clear() {\n checkIsMutable()\n removeRange(0, size)\n }\n\n actual override fun removeAll(elements: Collection): Boolean {\n checkIsMutable()\n return removeAll { it in elements }\n }\n\n actual override fun retainAll(elements: Collection): Boolean {\n checkIsMutable()\n return removeAll { it !in elements }\n }\n\n\n actual override fun iterator(): MutableIterator = IteratorImpl()\n\n actual override fun contains(element: E): Boolean = indexOf(element) >= 0\n\n actual override fun indexOf(element: E): Int {\n for (index in 0..lastIndex) {\n if (get(index) == element) {\n return index\n }\n }\n return -1\n }\n\n actual override fun lastIndexOf(element: E): Int {\n for (index in lastIndex downTo 0) {\n if (get(index) == element) {\n return index\n }\n }\n return -1\n }\n\n actual override fun listIterator(): MutableListIterator = listIterator(0)\n actual override fun listIterator(index: Int): MutableListIterator = ListIteratorImpl(index)\n\n\n actual override fun subList(fromIndex: Int, toIndex: Int): MutableList = SubList(this, fromIndex, toIndex)\n\n /**\n * Removes the range of elements from this list starting from [fromIndex] and ending with but not including [toIndex].\n */\n protected open fun removeRange(fromIndex: Int, toIndex: Int) {\n val iterator = listIterator(fromIndex)\n repeat(toIndex - fromIndex) {\n iterator.next()\n iterator.remove()\n }\n }\n\n /**\n * Compares this list with another list instance with the ordered structural equality.\n *\n * @return true, if [other] instance is a [List] of the same size, which contains the same elements in the same order.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is List<*>) return false\n\n return AbstractList.orderedEquals(this, other)\n }\n\n /**\n * Returns the hash code value for this list.\n */\n override fun hashCode(): Int = AbstractList.orderedHashCode(this)\n\n\n private open inner class IteratorImpl : MutableIterator {\n /** the index of the item that will be returned on the next call to [next]`()` */\n protected var index = 0\n /** the index of the item that was returned on the previous call to [next]`()`\n * or [ListIterator.previous]`()` (for `ListIterator`),\n * -1 if no such item exists\n */\n protected var last = -1\n\n override fun hasNext(): Boolean = index < size\n\n override fun next(): E {\n if (!hasNext()) throw NoSuchElementException()\n last = index++\n return get(last)\n }\n\n override fun remove() {\n check(last != -1) { \"Call next() or previous() before removing element from the iterator.\" }\n\n removeAt(last)\n index = last\n last = -1\n }\n }\n\n /**\n * Implementation of `MutableListIterator` for abstract lists.\n */\n private inner class ListIteratorImpl(index: Int) : IteratorImpl(), MutableListIterator {\n\n init {\n AbstractList.checkPositionIndex(index, this@AbstractMutableList.size)\n this.index = index\n }\n\n override fun hasPrevious(): Boolean = index > 0\n\n override fun nextIndex(): Int = index\n\n override fun previous(): E {\n if (!hasPrevious()) throw NoSuchElementException()\n\n last = --index\n return get(last)\n }\n\n override fun previousIndex(): Int = index - 1\n\n override fun add(element: E) {\n add(index, element)\n index++\n last = -1\n }\n\n override fun set(element: E) {\n check(last != -1) { \"Call next() or previous() before updating element value with the iterator.\" }\n set(last, element)\n }\n }\n\n private class SubList(private val list: AbstractMutableList, private val fromIndex: Int, toIndex: Int) : AbstractMutableList(), RandomAccess {\n private var _size: Int = 0\n\n init {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, list.size)\n this._size = toIndex - fromIndex\n }\n\n override fun add(index: Int, element: E) {\n AbstractList.checkPositionIndex(index, _size)\n\n list.add(fromIndex + index, element)\n _size++\n }\n\n override fun get(index: Int): E {\n AbstractList.checkElementIndex(index, _size)\n\n return list[fromIndex + index]\n }\n\n override fun removeAt(index: Int): E {\n AbstractList.checkElementIndex(index, _size)\n\n val result = list.removeAt(fromIndex + index)\n _size--\n return result\n }\n\n override fun set(index: Int, element: E): E {\n AbstractList.checkElementIndex(index, _size)\n\n return list.set(fromIndex + index, element)\n }\n\n override val size: Int get() = _size\n\n internal override fun checkIsMutable(): Unit = list.checkIsMutable()\n }\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\n/*\n * Based on GWT AbstractMap\n * Copyright 2007 Google Inc.\n */\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the [MutableMap] interface.\n *\n * The implementor is required to implement [entries] property, which should return mutable set of map entries, and [put] function.\n *\n * @param K the type of map keys. The map is invariant in its key type.\n * @param V the type of map values. The map is invariant in its value type.\n */\npublic actual abstract class AbstractMutableMap protected actual constructor() : AbstractMap(), MutableMap {\n\n /**\n * A mutable [Map.Entry] shared by several [Map] implementations.\n */\n internal open class SimpleEntry(override val key: K, value: V) : MutableMap.MutableEntry {\n constructor(entry: Map.Entry) : this(entry.key, entry.value)\n\n private var _value = value\n\n override val value: V get() = _value\n\n override fun setValue(newValue: V): V {\n // Should check if the map containing this entry is mutable.\n // However, to not increase entry memory footprint it might be worthwhile not to check it here and\n // force subclasses that implement `build()` (freezing) operation to implement their own `MutableEntry`.\n// this@AbstractMutableMap.checkIsMutable()\n val oldValue = this._value\n this._value = newValue\n return oldValue\n }\n\n override fun hashCode(): Int = entryHashCode(this)\n override fun toString(): String = entryToString(this)\n override fun equals(other: Any?): Boolean = entryEquals(this, other)\n\n }\n\n // intermediate abstract class to workaround KT-43321\n internal abstract class AbstractEntrySet, K, V> : AbstractMutableSet() {\n final override fun contains(element: E): Boolean = containsEntry(element)\n abstract fun containsEntry(element: Map.Entry): Boolean\n }\n\n actual override fun clear() {\n entries.clear()\n }\n\n private var _keys: MutableSet? = null\n actual override val keys: MutableSet\n get() {\n if (_keys == null) {\n _keys = object : AbstractMutableSet() {\n override fun add(element: K): Boolean = throw UnsupportedOperationException(\"Add is not supported on keys\")\n override fun clear() {\n this@AbstractMutableMap.clear()\n }\n\n override operator fun contains(element: K): Boolean = containsKey(element)\n\n override operator fun iterator(): MutableIterator {\n val entryIterator = entries.iterator()\n return object : MutableIterator {\n override fun hasNext(): Boolean = entryIterator.hasNext()\n override fun next(): K = entryIterator.next().key\n override fun remove() = entryIterator.remove()\n }\n }\n\n override fun remove(element: K): Boolean {\n checkIsMutable()\n if (containsKey(element)) {\n this@AbstractMutableMap.remove(element)\n return true\n }\n return false\n }\n\n override val size: Int get() = this@AbstractMutableMap.size\n\n override fun checkIsMutable(): Unit = this@AbstractMutableMap.checkIsMutable()\n }\n }\n return _keys!!\n }\n\n actual abstract override fun put(key: K, value: V): V?\n\n actual override fun putAll(from: Map) {\n checkIsMutable()\n for ((key, value) in from) {\n put(key, value)\n }\n }\n\n private var _values: MutableCollection? = null\n actual override val values: MutableCollection\n get() {\n if (_values == null) {\n _values = object : AbstractMutableCollection() {\n override fun add(element: V): Boolean = throw UnsupportedOperationException(\"Add is not supported on values\")\n override fun clear() = this@AbstractMutableMap.clear()\n\n override operator fun contains(element: V): Boolean = containsValue(element)\n\n override operator fun iterator(): MutableIterator {\n val entryIterator = entries.iterator()\n return object : MutableIterator {\n override fun hasNext(): Boolean = entryIterator.hasNext()\n override fun next(): V = entryIterator.next().value\n override fun remove() = entryIterator.remove()\n }\n }\n\n override val size: Int get() = this@AbstractMutableMap.size\n\n // TODO: should we implement them this way? Currently it's unspecified in JVM\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Collection<*>) return false\n return AbstractList.orderedEquals(this, other)\n }\n\n override fun hashCode(): Int = AbstractList.orderedHashCode(this)\n\n override fun checkIsMutable(): Unit = this@AbstractMutableMap.checkIsMutable()\n }\n }\n return _values!!\n }\n\n actual override fun remove(key: K): V? {\n checkIsMutable()\n val iter = entries.iterator()\n while (iter.hasNext()) {\n val entry = iter.next()\n val k = entry.key\n if (key == k) {\n val value = entry.value\n iter.remove()\n return value\n }\n }\n return null\n }\n\n\n /**\n * This method is called every time when a mutating method is called on this mutable map.\n * Mutable maps that are built (frozen) must throw `UnsupportedOperationException`.\n */\n internal open fun checkIsMutable(): Unit {}\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 */\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the [MutableSet] interface.\n *\n * @param E the type of elements contained in the set. The set is invariant in its element type.\n */\npublic actual abstract class AbstractMutableSet protected actual constructor() : AbstractMutableCollection(), MutableSet {\n\n /**\n * Compares this set with another set instance with the unordered structural equality.\n *\n * @return `true`, if [other] instance is a [Set] of the same size, all elements of which are contained in this set.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is Set<*>) return false\n return AbstractSet.setEquals(this, other)\n }\n\n /**\n * Returns the hash code value for this set.\n */\n override fun hashCode(): Int = AbstractSet.unorderedHashCode(this)\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\npackage kotlin.collections\n\n/**\n * Provides a [MutableList] implementation, which uses a resizable array as its backing storage.\n *\n * This implementation doesn't provide a way to manage capacity, as backing JS array is resizeable itself.\n * There is no speed advantage to pre-allocating array sizes in JavaScript, so this implementation does not include any of the\n * capacity and \"growth increment\" concepts.\n */\npublic actual open class ArrayList internal constructor(private var array: Array) : AbstractMutableList(), MutableList, RandomAccess {\n private var isReadOnly: Boolean = false\n\n /**\n * Creates an empty [ArrayList].\n */\n public actual constructor() : this(emptyArray()) {}\n\n /**\n * Creates an empty [ArrayList].\n * @param initialCapacity initial capacity (ignored)\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n public actual constructor(initialCapacity: Int = 0) : this(emptyArray()) {}\n\n /**\n * Creates an [ArrayList] filled from the [elements] collection.\n */\n public actual constructor(elements: Collection) : this(elements.toTypedArray()) {}\n\n @PublishedApi\n internal fun build(): List {\n checkIsMutable()\n isReadOnly = true\n return this\n }\n\n /** Does nothing in this ArrayList implementation. */\n public actual fun trimToSize() {}\n\n /** Does nothing in this ArrayList implementation. */\n public actual fun ensureCapacity(minCapacity: Int) {}\n\n actual override val size: Int get() = array.size\n @Suppress(\"UNCHECKED_CAST\")\n actual override fun get(index: Int): E = array[rangeCheck(index)] as E\n actual override fun set(index: Int, element: E): E {\n checkIsMutable()\n rangeCheck(index)\n @Suppress(\"UNCHECKED_CAST\")\n return array[index].apply { array[index] = element } as E\n }\n\n actual override fun add(element: E): Boolean {\n checkIsMutable()\n array.asDynamic().push(element)\n modCount++\n return true\n }\n\n actual override fun add(index: Int, element: E): Unit {\n checkIsMutable()\n array.asDynamic().splice(insertionRangeCheck(index), 0, element)\n modCount++\n }\n\n actual override fun addAll(elements: Collection): Boolean {\n checkIsMutable()\n if (elements.isEmpty()) return false\n\n array += elements.toTypedArray()\n modCount++\n return true\n }\n\n actual override fun addAll(index: Int, elements: Collection): Boolean {\n checkIsMutable()\n insertionRangeCheck(index)\n\n if (index == size) return addAll(elements)\n if (elements.isEmpty()) return false\n when (index) {\n size -> return addAll(elements)\n 0 -> array = elements.toTypedArray() + array\n else -> array = array.copyOfRange(0, index).asDynamic().concat(elements.toTypedArray(), array.copyOfRange(index, size))\n }\n\n modCount++\n return true\n }\n\n actual override fun removeAt(index: Int): E {\n checkIsMutable()\n rangeCheck(index)\n modCount++\n return if (index == lastIndex)\n array.asDynamic().pop()\n else\n array.asDynamic().splice(index, 1)[0]\n }\n\n actual override fun remove(element: E): Boolean {\n checkIsMutable()\n for (index in array.indices) {\n if (array[index] == element) {\n array.asDynamic().splice(index, 1)\n modCount++\n return true\n }\n }\n return false\n }\n\n override fun removeRange(fromIndex: Int, toIndex: Int) {\n checkIsMutable()\n modCount++\n array.asDynamic().splice(fromIndex, toIndex - fromIndex)\n }\n\n actual override fun clear() {\n checkIsMutable()\n array = emptyArray()\n modCount++\n }\n\n\n actual override fun indexOf(element: E): Int = array.indexOf(element)\n\n actual override fun lastIndexOf(element: E): Int = array.lastIndexOf(element)\n\n override fun toString() = arrayToString(array)\n override fun toArray(): Array = js(\"[]\").slice.call(array)\n\n\n internal override fun checkIsMutable() {\n if (isReadOnly) throw UnsupportedOperationException()\n }\n\n private fun rangeCheck(index: Int) = index.apply {\n AbstractList.checkElementIndex(index, size)\n }\n\n private fun insertionRangeCheck(index: Int) = index.apply {\n AbstractList.checkPositionIndex(index, size)\n }\n}","/*\n * Copyright 2010-2019 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\ninternal fun sortArrayWith(array: Array, comparison: (T, T) -> Int) {\n if (getStableSortingIsSupported()) {\n array.asDynamic().sort(comparison)\n } else {\n mergeSort(array.unsafeCast>(), 0, array.lastIndex, Comparator(comparison))\n }\n}\n\ninternal fun sortArrayWith(array: Array, comparator: Comparator) {\n if (getStableSortingIsSupported()) {\n val comparison = { a: T, b: T -> comparator.compare(a, b) }\n array.asDynamic().sort(comparison)\n } else {\n mergeSort(array.unsafeCast>(), 0, array.lastIndex, comparator)\n }\n}\n\ninternal fun sortArrayWith(array: Array, fromIndex: Int, toIndex: Int, comparator: Comparator) {\n if (fromIndex < toIndex - 1) {\n mergeSort(array.unsafeCast>(), fromIndex, toIndex - 1, comparator)\n }\n}\n\ninternal fun > sortArray(array: Array) {\n if (getStableSortingIsSupported()) {\n val comparison = { a: T, b: T -> a.compareTo(b) }\n array.asDynamic().sort(comparison)\n } else {\n mergeSort(array.unsafeCast>(), 0, array.lastIndex, naturalOrder())\n }\n}\n\nprivate var _stableSortingIsSupported: Boolean? = null\nprivate fun getStableSortingIsSupported(): Boolean {\n _stableSortingIsSupported?.let { return it }\n _stableSortingIsSupported = false\n\n val array = js(\"[]\").unsafeCast>()\n // known implementations may use stable sort for arrays of up to 512 elements\n // so we create slightly more elements to test stability\n for (index in 0 until 600) array.asDynamic().push(index)\n val comparison = { a: Int, b: Int -> (a and 3) - (b and 3) }\n array.asDynamic().sort(comparison)\n for (index in 1 until array.size) {\n val a = array[index - 1]\n val b = array[index]\n if ((a and 3) == (b and 3) && a >= b) return false\n }\n _stableSortingIsSupported = true\n return true\n}\n\n\nprivate fun mergeSort(array: Array, start: Int, endInclusive: Int, comparator: Comparator) {\n val buffer = arrayOfNulls(array.size).unsafeCast>()\n val result = mergeSort(array, buffer, start, endInclusive, comparator)\n if (result !== array) {\n for (i in start..endInclusive) array[i] = result[i]\n }\n}\n\n// Both start and end are inclusive indices.\nprivate fun mergeSort(array: Array, buffer: Array, start: Int, end: Int, comparator: Comparator): Array {\n if (start == end) {\n return array\n }\n\n val median = (start + end) / 2\n val left = mergeSort(array, buffer, start, median, comparator)\n val right = mergeSort(array, buffer, median + 1, end, comparator)\n\n val target = if (left === buffer) array else buffer\n\n // Merge.\n var leftIndex = start\n var rightIndex = median + 1\n for (i in start..end) {\n when {\n leftIndex <= median && rightIndex <= end -> {\n val leftValue = left[leftIndex]\n val rightValue = right[rightIndex]\n\n if (comparator.compare(leftValue, rightValue) <= 0) {\n target[i] = leftValue\n leftIndex++\n } else {\n target[i] = rightValue\n rightIndex++\n }\n }\n leftIndex <= median -> {\n target[i] = left[leftIndex]\n leftIndex++\n }\n else /* rightIndex <= end */ -> {\n target[i] = right[rightIndex]\n rightIndex++\n Unit // TODO: Fix KT-31506\n }\n }\n }\n\n return target\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.collections\n\ninternal interface EqualityComparator {\n /**\n * Subclasses must override to return a value indicating\n * whether or not two keys or values are equal.\n */\n abstract fun equals(value1: Any?, value2: Any?): Boolean\n\n /**\n * Subclasses must override to return the hash code of a given key.\n */\n abstract fun getHashCode(value: Any?): Int\n\n\n object HashCode : EqualityComparator {\n override fun equals(value1: Any?, value2: Any?): Boolean = value1 == value2\n\n override fun getHashCode(value: Any?): Int = value?.hashCode() ?: 0\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\n\n\npublic actual fun interface Comparator {\n @JsName(\"compare\")\n public actual fun compare(a: T, b: T): Int\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/*\n * Based on GWT AbstractHashMap\n * Copyright 2008 Google Inc.\n */\n\npackage kotlin.collections\n\nimport kotlin.collections.MutableMap.MutableEntry\n\n/**\n * Hash table based implementation of the [MutableMap] interface.\n *\n * This implementation makes no guarantees regarding the order of enumeration of [keys], [values] and [entries] collections.\n */\n// Classes that extend HashMap and implement `build()` (freezing) operation\n// have to make sure mutating methods check `checkIsMutable`.\npublic actual open class HashMap : AbstractMutableMap, MutableMap {\n\n private inner class EntrySet : AbstractEntrySet, K, V>() {\n\n override fun add(element: MutableEntry): Boolean = throw UnsupportedOperationException(\"Add is not supported on entries\")\n override fun clear() {\n this@HashMap.clear()\n }\n\n override fun containsEntry(element: Map.Entry): Boolean = this@HashMap.containsEntry(element)\n\n override operator fun iterator(): MutableIterator> = internalMap.iterator()\n\n override fun remove(element: MutableEntry): Boolean {\n if (contains(element)) {\n this@HashMap.remove(element.key)\n return true\n }\n return false\n }\n\n override val size: Int get() = this@HashMap.size\n }\n\n\n /**\n * Internal implementation of the map: either string-based or hashcode-based.\n */\n private val internalMap: InternalMap\n\n private val equality: EqualityComparator\n\n internal constructor(internalMap: InternalMap) : super() {\n this.internalMap = internalMap\n this.equality = internalMap.equality\n }\n\n /**\n * Constructs an empty [HashMap] instance.\n */\n actual constructor() : this(InternalHashCodeMap(EqualityComparator.HashCode))\n\n /**\n * Constructs an empty [HashMap] instance.\n *\n * @param initialCapacity the initial capacity (ignored)\n * @param loadFactor the load factor (ignored)\n *\n * @throws IllegalArgumentException if the initial capacity or load factor are negative\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) : this() {\n // This implementation of HashMap has no need of load factors or capacities.\n require(initialCapacity >= 0) { \"Negative initial capacity: $initialCapacity\" }\n require(loadFactor >= 0) { \"Non-positive load factor: $loadFactor\" }\n }\n\n actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f)\n\n\n /**\n * Constructs an instance of [HashMap] filled with the contents of the specified [original] map.\n */\n actual constructor(original: Map) : this() {\n this.putAll(original)\n }\n\n actual override fun clear() {\n internalMap.clear()\n// structureChanged(this)\n }\n\n actual override fun containsKey(key: K): Boolean = internalMap.contains(key)\n\n actual override fun containsValue(value: V): Boolean = internalMap.any { equality.equals(it.value, value) }\n\n private var _entries: MutableSet>? = null\n actual override val entries: MutableSet>\n get() {\n if (_entries == null) {\n _entries = createEntrySet()\n }\n return _entries!!\n }\n\n protected open fun createEntrySet(): MutableSet> = EntrySet()\n\n actual override operator fun get(key: K): V? = internalMap.get(key)\n\n actual override fun put(key: K, value: V): V? = internalMap.put(key, value)\n\n actual override fun remove(key: K): V? = internalMap.remove(key)\n\n actual override val size: Int get() = internalMap.size\n\n}\n\n/**\n * Constructs the specialized implementation of [HashMap] with [String] keys, which stores the keys as properties of\n * JS object without hashing them.\n */\npublic fun stringMapOf(vararg pairs: Pair): HashMap {\n return HashMap(InternalStringMap(EqualityComparator.HashCode)).apply { putAll(pairs) }\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 * Based on GWT HashSet\n * Copyright 2008 Google Inc.\n */\n\npackage kotlin.collections\n\n/**\n * The implementation of the [MutableSet] interface, backed by a [HashMap] instance.\n */\n// Classes that extend HashSet and implement `build()` (freezing) operation\n// have to make sure mutating methods check `checkIsMutable`.\npublic actual open class HashSet : AbstractMutableSet, MutableSet {\n\n internal val map: HashMap\n\n /**\n * Constructs a new empty [HashSet].\n */\n actual constructor() {\n map = HashMap()\n }\n\n /**\n * Constructs a new [HashSet] filled with the elements of the specified collection.\n */\n actual constructor(elements: Collection) {\n map = HashMap(elements.size)\n addAll(elements)\n }\n\n /**\n * Constructs a new empty [HashSet].\n *\n * @param initialCapacity the initial capacity (ignored)\n * @param loadFactor the load factor (ignored)\n *\n * @throws IllegalArgumentException if the initial capacity or load factor are negative\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) {\n map = HashMap(initialCapacity, loadFactor)\n }\n\n actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f)\n\n /**\n * Protected constructor to specify the underlying map. This is used by\n * LinkedHashSet.\n\n * @param map underlying map to use.\n */\n internal constructor(map: HashMap) {\n this.map = map\n }\n\n actual override fun add(element: E): Boolean {\n val old = map.put(element, this)\n return old == null\n }\n\n actual override fun clear() {\n map.clear()\n }\n\n// public override fun clone(): Any {\n// return HashSet(this)\n// }\n\n actual override operator fun contains(element: E): Boolean = map.containsKey(element)\n\n actual override fun isEmpty(): Boolean = map.isEmpty()\n\n actual override fun iterator(): MutableIterator = map.keys.iterator()\n\n actual override fun remove(element: E): Boolean = map.remove(element) != null\n\n actual override val size: Int get() = map.size\n\n}\n\n/**\n * Creates a new instance of the specialized implementation of [HashSet] with the specified [String] elements,\n * which elements the keys as properties of JS object without hashing them.\n */\npublic fun stringSetOf(vararg elements: String): HashSet {\n return HashSet(stringMapOf()).apply { addAll(elements) }\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 * Based on GWT InternalHashCodeMap\n * Copyright 2008 Google Inc.\n */\n\npackage kotlin.collections\n\nimport kotlin.collections.MutableMap.MutableEntry\nimport kotlin.collections.AbstractMutableMap.SimpleEntry\n\n/**\n * A simple wrapper around JavaScriptObject to provide [java.util.Map]-like semantics for any\n * key type.\n *\n *\n * Implementation notes:\n *\n *\n * A key's hashCode is the index in backingMap which should contain that key. Since several keys may\n * have the same hash, each value in hashCodeMap is actually an array containing all entries whose\n * keys share the same hash.\n */\ninternal class InternalHashCodeMap(override val equality: EqualityComparator) : InternalMap {\n\n private var backingMap: dynamic = createJsMap()\n override var size: Int = 0\n private set\n\n override fun put(key: K, value: V): V? {\n val hashCode = equality.getHashCode(key)\n val chainOrEntry = getChainOrEntryOrNull(hashCode)\n if (chainOrEntry == null) {\n // This is a new chain, put it to the map.\n backingMap[hashCode] = SimpleEntry(key, value)\n } else {\n if (chainOrEntry !is Array<*>) {\n // It is an entry\n val entry: SimpleEntry = chainOrEntry\n if (equality.equals(entry.key, key)) {\n return entry.setValue(value)\n } else {\n backingMap[hashCode] = arrayOf(entry, SimpleEntry(key, value))\n size++\n return null\n }\n } else {\n // Chain already exists, perhaps key also exists.\n val chain: Array> = chainOrEntry\n val entry = chain.findEntryInChain(key)\n if (entry != null) {\n return entry.setValue(value)\n }\n chain.asDynamic().push(SimpleEntry(key, value))\n }\n }\n size++\n// structureChanged(host)\n return null\n }\n\n override fun remove(key: K): V? {\n val hashCode = equality.getHashCode(key)\n val chainOrEntry = getChainOrEntryOrNull(hashCode) ?: return null\n if (chainOrEntry !is Array<*>) {\n val entry: MutableEntry = chainOrEntry\n if (equality.equals(entry.key, key)) {\n jsDeleteProperty(backingMap, hashCode)\n size--\n return entry.value\n } else {\n return null\n }\n } else {\n val chain: Array> = chainOrEntry\n for (index in chain.indices) {\n val entry = chain[index]\n if (equality.equals(key, entry.key)) {\n if (chain.size == 1) {\n chain.asDynamic().length = 0\n // remove the whole array\n jsDeleteProperty(backingMap, hashCode)\n } else {\n // splice out the entry we're removing\n chain.asDynamic().splice(index, 1)\n }\n size--\n// structureChanged(host)\n return entry.value\n }\n }\n }\n return null\n }\n\n override fun clear() {\n backingMap = createJsMap()\n size = 0\n }\n\n override fun contains(key: K): Boolean = getEntry(key) != null\n\n override fun get(key: K): V? = getEntry(key)?.value\n\n private fun getEntry(key: K): MutableEntry? {\n val chainOrEntry = getChainOrEntryOrNull(equality.getHashCode(key)) ?: return null\n if (chainOrEntry !is Array<*>) {\n val entry: MutableEntry = chainOrEntry\n if (equality.equals(entry.key, key)) {\n return entry\n } else {\n return null\n }\n } else {\n val chain: Array> = chainOrEntry\n return chain.findEntryInChain(key)\n }\n }\n\n private fun Array>.findEntryInChain(key: K): MutableEntry? =\n firstOrNull { entry -> equality.equals(entry.key, key) }\n\n override fun iterator(): MutableIterator> {\n\n return object : MutableIterator> {\n var state = -1 // -1 not ready, 0 - ready, 1 - done\n\n val keys: Array = js(\"Object\").keys(backingMap)\n var keyIndex = -1\n\n var chainOrEntry: dynamic = null\n var isChain = false\n var itemIndex = -1\n var lastEntry: MutableEntry? = null\n\n private fun computeNext(): Int {\n if (chainOrEntry != null && isChain) {\n val chainSize: Int = chainOrEntry.unsafeCast>>().size\n if (++itemIndex < chainSize)\n return 0\n }\n\n if (++keyIndex < keys.size) {\n chainOrEntry = backingMap[keys[keyIndex]]\n isChain = chainOrEntry is Array<*>\n itemIndex = 0\n return 0\n } else {\n chainOrEntry = null\n return 1\n }\n }\n\n override fun hasNext(): Boolean {\n if (state == -1)\n state = computeNext()\n return state == 0\n }\n\n override fun next(): MutableEntry {\n if (!hasNext()) throw NoSuchElementException()\n val lastEntry = if (isChain) {\n chainOrEntry.unsafeCast>>()[itemIndex]\n } else {\n chainOrEntry.unsafeCast>()\n }\n this.lastEntry = lastEntry\n state = -1\n return lastEntry\n }\n\n override fun remove() {\n checkNotNull(lastEntry)\n this@InternalHashCodeMap.remove(lastEntry!!.key)\n lastEntry = null\n // the chain being iterated just got modified by InternalHashCodeMap.remove\n itemIndex--\n }\n }\n }\n\n private fun getChainOrEntryOrNull(hashCode: Int): dynamic {\n val chainOrEntry = backingMap[hashCode]\n return if (chainOrEntry === undefined) null else chainOrEntry\n }\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 * Based on GWT InternalStringMap\n * Copyright 2008 Google Inc.\n */\npackage kotlin.collections\n\nimport kotlin.collections.MutableMap.MutableEntry\n\n/**\n * A simple wrapper around JavaScript Map for key type is string.\n *\n * Though this map is instantiated only with K=String, the K type is not fixed to String statically,\n * because we want to have it erased to Any? in order not to generate type-safe override bridges for\n * [get], [contains], [remove] etc, if they ever are generated.\n */\ninternal class InternalStringMap(override val equality: EqualityComparator) : InternalMap {\n\n private var backingMap: dynamic = createJsMap()\n override var size: Int = 0\n private set\n\n// /**\n// * A mod count to track 'value' replacements in map to ensure that the 'value' that we have in the\n// * iterator entry is guaranteed to be still correct.\n// * This is to optimize for the common scenario where the values are not modified during\n// * iterations where the entries are never stale.\n// */\n// private var valueMod: Int = 0\n\n override operator fun contains(key: K): Boolean {\n if (key !is String) return false\n return backingMap[key] !== undefined\n }\n\n override operator fun get(key: K): V? {\n if (key !is String) return null\n val value = backingMap[key]\n return if (value !== undefined) value.unsafeCast() else null\n }\n\n\n override fun put(key: K, value: V): V? {\n require(key is String)\n val oldValue = backingMap[key]\n backingMap[key] = value\n\n if (oldValue === undefined) {\n size++\n// structureChanged(host)\n return null\n } else {\n// valueMod++\n return oldValue.unsafeCast()\n }\n }\n\n override fun remove(key: K): V? {\n if (key !is String) return null\n val value = backingMap[key]\n if (value !== undefined) {\n jsDeleteProperty(backingMap, key)\n size--\n// structureChanged(host)\n return value.unsafeCast()\n } else {\n// valueMod++\n return null\n }\n }\n\n\n override fun clear() {\n backingMap = createJsMap()\n size = 0\n }\n\n\n override fun iterator(): MutableIterator> {\n return object : MutableIterator> {\n private val keys: Array = js(\"Object\").keys(backingMap)\n private val iterator = keys.iterator()\n private var lastKey: String? = null\n\n override fun hasNext(): Boolean = iterator.hasNext()\n\n override fun next(): MutableEntry {\n val key = iterator.next()\n lastKey = key\n @Suppress(\"UNCHECKED_CAST\")\n return newMapEntry(key as K)\n }\n\n override fun remove() {\n @Suppress(\"UNCHECKED_CAST\")\n this@InternalStringMap.remove(checkNotNull(lastKey) as K)\n }\n }\n }\n\n private fun newMapEntry(key: K): MutableEntry = object : MutableEntry {\n override val key: K get() = key\n override val value: V get() = this@InternalStringMap[key].unsafeCast()\n\n override fun setValue(newValue: V): V = this@InternalStringMap.put(key, newValue).unsafeCast()\n\n override fun hashCode(): Int = AbstractMap.entryHashCode(this)\n override fun toString(): String = AbstractMap.entryToString(this)\n override fun equals(other: Any?): Boolean = AbstractMap.entryEquals(this, other)\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\n/*\n * Based on GWT LinkedHashMap\n * Copyright 2008 Google Inc.\n */\npackage kotlin.collections\n\nimport kotlin.collections.MutableMap.MutableEntry\n\n/**\n * Hash table based implementation of the [MutableMap] interface, which additionally preserves the insertion order\n * of entries during the iteration.\n *\n * The insertion order is preserved by maintaining a doubly-linked list of all of its entries.\n */\npublic actual open class LinkedHashMap : HashMap, MutableMap {\n\n /**\n * The entry we use includes next/prev pointers for a doubly-linked circular\n * list with a head node. This reduces the special cases we have to deal with\n * in the list operations.\n\n * Note that we duplicate the key from the underlying hash map so we can find\n * the eldest entry. The alternative would have been to modify HashMap so more\n * of the code was directly usable here, but this would have added some\n * overhead to HashMap, or to reimplement most of the HashMap code here with\n * small modifications. Paying a small storage cost only if you use\n * LinkedHashMap and minimizing code size seemed like a better tradeoff\n */\n private inner class ChainEntry(key: K, value: V) : AbstractMutableMap.SimpleEntry(key, value) {\n internal var next: ChainEntry? = null\n internal var prev: ChainEntry? = null\n\n override fun setValue(newValue: V): V {\n this@LinkedHashMap.checkIsMutable()\n return super.setValue(newValue)\n }\n }\n\n private inner class EntrySet : AbstractEntrySet, K, V>() {\n\n private inner class EntryIterator : MutableIterator> {\n // The last entry that was returned from this iterator.\n private var last: ChainEntry? = null\n\n // The next entry to return from this iterator.\n private var next: ChainEntry? = null\n\n init {\n next = head\n// recordLastKnownStructure(map, this)\n }\n\n override fun hasNext(): Boolean {\n return next !== null\n }\n\n override fun next(): MutableEntry {\n// checkStructuralChange(map, this)\n if (!hasNext()) throw NoSuchElementException()\n\n val current = next!!\n last = current\n next = current.next.takeIf { it !== head }\n return current\n }\n\n override fun remove() {\n check(last != null)\n this@EntrySet.checkIsMutable()\n// checkStructuralChange(map, this)\n\n last!!.remove()\n map.remove(last!!.key)\n// recordLastKnownStructure(map, this)\n last = null\n }\n }\n\n override fun add(element: MutableEntry): Boolean = throw UnsupportedOperationException(\"Add is not supported on entries\")\n override fun clear() {\n this@LinkedHashMap.clear()\n }\n\n override fun containsEntry(element: Map.Entry): Boolean = this@LinkedHashMap.containsEntry(element)\n\n override operator fun iterator(): MutableIterator> = EntryIterator()\n\n override fun remove(element: MutableEntry): Boolean {\n checkIsMutable()\n if (contains(element)) {\n this@LinkedHashMap.remove(element.key)\n return true\n }\n return false\n }\n\n override val size: Int get() = this@LinkedHashMap.size\n\n override fun checkIsMutable(): Unit = this@LinkedHashMap.checkIsMutable()\n }\n\n\n /*\n * The head of the insert order chain, which is a doubly-linked circular\n * list.\n *\n * The most recently inserted node is at the end of the chain, ie.\n * chain.prev.\n */\n private var head: ChainEntry? = null\n\n /**\n * Add this node to the end of the chain.\n */\n private fun ChainEntry.addToEnd() {\n // This entry is not in the list.\n check(next == null && prev == null)\n\n val _head = head\n if (_head == null) {\n head = this\n next = this\n prev = this\n } else {\n // Chain is valid.\n val _tail = checkNotNull(_head.prev)\n // Update me.\n prev = _tail\n next = _head\n // Update my new siblings: current head and old tail\n _head.prev = this\n _tail.next = this\n }\n }\n\n /**\n * Remove this node from the chain it is a part of.\n */\n private fun ChainEntry.remove() {\n if (this.next === this) {\n // if this is single element, remove head\n head = null\n } else {\n if (head === this) {\n // if this is first element, move head to next\n head = next\n }\n next!!.prev = prev\n prev!!.next = next\n }\n next = null\n prev = null\n }\n\n /*\n * The hashmap that keeps track of our entries and the chain. Note that we\n * duplicate the key here to eliminate changes to HashMap and minimize the\n * code here, at the expense of additional space.\n */\n private val map: HashMap>\n\n private var isReadOnly: Boolean = false\n\n /**\n * Constructs an empty [LinkedHashMap] instance.\n */\n actual constructor() : super() {\n map = HashMap>()\n }\n\n internal constructor(backingMap: HashMap) : super() {\n @Suppress(\"UNCHECKED_CAST\") // expected to work due to erasure\n map = backingMap as HashMap>\n }\n\n /**\n * Constructs an empty [LinkedHashMap] instance.\n *\n * @param initialCapacity the initial capacity (ignored)\n * @param loadFactor the load factor (ignored)\n *\n * @throws IllegalArgumentException if the initial capacity or load factor are negative\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) : super(initialCapacity, loadFactor) {\n map = HashMap>()\n }\n\n actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f)\n\n /**\n * Constructs an instance of [LinkedHashMap] filled with the contents of the specified [original] map.\n */\n actual constructor(original: Map) {\n map = HashMap>()\n this.putAll(original)\n }\n\n @PublishedApi\n internal fun build(): Map {\n checkIsMutable()\n isReadOnly = true\n return this\n }\n\n actual override fun clear() {\n checkIsMutable()\n map.clear()\n head = null\n }\n\n\n// override fun clone(): Any {\n// return LinkedHashMap(this)\n// }\n\n\n actual override fun containsKey(key: K): Boolean = map.containsKey(key)\n\n actual override fun containsValue(value: V): Boolean {\n var node: ChainEntry = head ?: return false\n do {\n if (node.value == value) {\n return true\n }\n node = node.next!!\n } while (node !== head)\n return false\n }\n\n\n override fun createEntrySet(): MutableSet> = EntrySet()\n\n actual override operator fun get(key: K): V? = map.get(key)?.value\n\n actual override fun put(key: K, value: V): V? {\n checkIsMutable()\n\n val old = map.get(key)\n if (old == null) {\n val newEntry = ChainEntry(key, value)\n map.put(key, newEntry)\n newEntry.addToEnd()\n return null\n } else {\n return old.setValue(value)\n }\n }\n\n actual override fun remove(key: K): V? {\n checkIsMutable()\n\n val entry = map.remove(key)\n if (entry != null) {\n entry.remove()\n return entry.value\n }\n return null\n }\n\n actual override val size: Int get() = map.size\n\n internal override fun checkIsMutable() {\n if (isReadOnly) throw UnsupportedOperationException()\n }\n}\n\n/**\n * Constructs the specialized implementation of [LinkedHashMap] with [String] keys, which stores the keys as properties of\n * JS object without hashing them.\n */\npublic fun linkedStringMapOf(vararg pairs: Pair): LinkedHashMap {\n return LinkedHashMap(stringMapOf()).apply { putAll(pairs) }\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 * Based on GWT LinkedHashSet\n * Copyright 2008 Google Inc.\n */\n\npackage kotlin.collections\n\n/**\n * The implementation of the [MutableSet] interface, backed by a [LinkedHashMap] instance.\n *\n * This implementation preserves the insertion order of elements during the iteration.\n */\npublic actual open class LinkedHashSet : HashSet, MutableSet {\n\n internal constructor(map: LinkedHashMap) : super(map)\n\n /**\n * Constructs a new empty [LinkedHashSet].\n */\n actual constructor() : super(LinkedHashMap())\n\n /**\n * Constructs a new [LinkedHashSet] filled with the elements of the specified collection.\n */\n actual constructor(elements: Collection) : super(LinkedHashMap()) {\n addAll(elements)\n }\n\n /**\n * Constructs a new empty [LinkedHashSet].\n *\n * @param initialCapacity the initial capacity (ignored)\n * @param loadFactor the load factor (ignored)\n *\n * @throws IllegalArgumentException if the initial capacity or load factor are negative\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) : super(LinkedHashMap(initialCapacity, loadFactor))\n\n actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f)\n\n @PublishedApi\n internal fun build(): Set {\n (map as LinkedHashMap).build()\n return this\n }\n\n internal override fun checkIsMutable(): Unit = map.checkIsMutable()\n\n// public override fun clone(): Any {\n// return LinkedHashSet(this)\n// }\n\n}\n\n/**\n * Creates a new instance of the specialized implementation of [LinkedHashSet] with the specified [String] elements,\n * which elements the keys as properties of JS object without hashing them.\n */\npublic fun linkedStringSetOf(vararg elements: String): LinkedHashSet {\n return LinkedHashSet(linkedStringMapOf()).apply { addAll(elements) }\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\npackage kotlin.io\n\ninternal abstract class BaseOutput {\n open fun println() {\n print(\"\\n\")\n }\n\n open fun println(message: Any?) {\n print(message)\n println()\n }\n\n abstract fun print(message: Any?)\n\n open fun flush() {}\n}\n\n/** JsName used to make the declaration available outside of module to test it */\n@JsName(\"NodeJsOutput\")\ninternal class NodeJsOutput(val outputStream: dynamic) : BaseOutput() {\n override fun print(message: Any?) {\n // TODO: Using local variable because of bug in block decomposition lowering in IR backend\n val messageString = String(message)\n outputStream.write(messageString)\n }\n}\n\n/** JsName used to make the declaration available outside of module to test it */\n@JsName(\"OutputToConsoleLog\")\ninternal class OutputToConsoleLog : BaseOutput() {\n override fun print(message: Any?) {\n console.log(message)\n }\n\n override fun println(message: Any?) {\n console.log(message)\n }\n\n override fun println() {\n console.log(\"\")\n }\n}\n\n/** JsName used to make the declaration available outside of module to test it and use at try.kotl.in */\n@JsName(\"BufferedOutput\")\ninternal open class BufferedOutput : BaseOutput() {\n var buffer = \"\"\n\n override fun print(message: Any?) {\n buffer += String(message)\n }\n\n override fun flush() {\n buffer = \"\"\n }\n}\n\n/** JsName used to make the declaration available outside of module to test it */\n@JsName(\"BufferedOutputToConsoleLog\")\ninternal class BufferedOutputToConsoleLog : BufferedOutput() {\n override fun print(message: Any?) {\n var s = String(message)\n val i = s.nativeLastIndexOf(\"\\n\", 0)\n if (i >= 0) {\n buffer += s.substring(0, i)\n flush()\n s = s.substring(i + 1)\n }\n buffer += s\n }\n\n override fun flush() {\n console.log(buffer)\n buffer = \"\"\n }\n}\n\n/** JsName used to make the declaration available outside of module to test it and use at try.kotl.in */\n@JsName(\"output\")\ninternal var output = run {\n val isNode: Boolean = js(\"typeof process !== 'undefined' && process.versions && !!process.versions.node\")\n if (isNode) NodeJsOutput(js(\"process.stdout\")) else BufferedOutputToConsoleLog()\n}\n\n@kotlin.internal.InlineOnly\nprivate inline fun String(value: Any?): String = js(\"String\")(value)\n\n/** Prints the line separator to the standard output stream. */\npublic actual fun println() {\n output.println()\n}\n\n/** Prints the given [message] and the line separator to the standard output stream. */\npublic actual fun println(message: Any?) {\n output.println(message)\n}\n\n/** Prints the given [message] to the standard output stream. */\npublic actual fun print(message: Any?) {\n output.print(message)\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\npackage kotlin.coroutines\n\nimport kotlin.coroutines.intrinsics.CoroutineSingletons.*\nimport kotlin.coroutines.intrinsics.COROUTINE_SUSPENDED\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal actual class SafeContinuation\ninternal actual constructor(\n private val delegate: Continuation,\n initialResult: Any?\n) : Continuation {\n @PublishedApi\n internal actual constructor(delegate: Continuation) : this(delegate, UNDECIDED)\n\n public actual override val context: CoroutineContext\n get() = delegate.context\n\n private var result: Any? = initialResult\n\n public actual override fun resumeWith(result: Result) {\n val cur = this.result\n when {\n cur === UNDECIDED -> {\n this.result = result.value\n }\n cur === COROUTINE_SUSPENDED -> {\n this.result = RESUMED\n delegate.resumeWith(result)\n }\n else -> throw IllegalStateException(\"Already resumed\")\n }\n }\n\n @PublishedApi\n internal actual fun getOrThrow(): Any? {\n if (result === UNDECIDED) {\n result = COROUTINE_SUSPENDED\n return COROUTINE_SUSPENDED\n }\n val result = this.result\n return when {\n result === RESUMED -> COROUTINE_SUSPENDED // already called continuation, indicate COROUTINE_SUSPENDED upstream\n result is Result.Failure -> throw result.exception\n else -> result // either COROUTINE_SUSPENDED or data\n }\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// a package is omitted to get declarations directly under the module\n\n@JsName(\"throwNPE\")\ninternal fun throwNPE(message: String) {\n throw NullPointerException(message)\n}\n\n@JsName(\"throwCCE\")\ninternal fun throwCCE() {\n throw ClassCastException(\"Illegal cast\")\n}\n\n@JsName(\"throwISE\")\ninternal fun throwISE(message: String) {\n throw IllegalStateException(message)\n}\n\n@JsName(\"throwUPAE\")\ninternal fun throwUPAE(propertyName: String) {\n throw UninitializedPropertyAccessException(\"lateinit property ${propertyName} has not been initialized\")\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\npackage kotlin.js\n\n/**\n * An interface for indexing access to a collection of key-value pairs, where type of key is [String] and type of value is [Any?][Any].\n */\npublic external interface Json {\n /**\n * Calls to the function will be translated to indexing operation (square brackets) on the receiver with [propertyName] as the argument.\n *\n * E.g. for next code:\n * ```kotlin\n * fun test(j: Json, p: String) = j[\"prop\"] + j.get(p)\n * ```\n *\n * will be generated:\n * ```js\n * function test(j, p) {\n * return j[\"prop\"] + j[p];\n * }\n * ```\n */\n operator fun get(propertyName: String): Any?\n\n /**\n * Calls of the function will be translated to an assignment of [value] to the receiver indexed (with square brackets/index operation) with [propertyName].\n *\n * E.g. for the following code:\n * ```kotlin\n * fun test(j: Json, p: String, newValue: Any) {\n * j[\"prop\"] = 1\n * j.set(p, newValue)\n * }\n * ```\n *\n * will be generated:\n * ```js\n * function test(j, p, newValue) {\n * j[\"prop\"] = 1;\n * j[p] = newValue;\n * }\n * }\n * ```\n */\n operator fun set(propertyName: String, value: Any?): Unit\n}\n\n/**\n * Returns a simple JavaScript object (as [Json]) using provided key-value pairs as names and values of its properties.\n */\npublic fun json(vararg pairs: Pair): Json {\n val res: dynamic = js(\"({})\")\n for ((name, value) in pairs) {\n res[name] = value\n }\n return res\n}\n\n/**\n * Adds key-value pairs from [other] to [this].\n * Returns the original receiver.\n */\npublic fun Json.add(other: Json): Json {\n val keys: Array = js(\"Object\").keys(other)\n for (key in keys) {\n if (other.asDynamic().hasOwnProperty(key)) {\n this[key] = other[key];\n }\n }\n return this\n}\n\n/**\n * Exposes the JavaScript [JSON object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) to Kotlin.\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic external object JSON {\n public fun stringify(o: Any?): String\n public fun stringify(o: Any?, replacer: ((key: String, value: Any?) -> Any?)): String\n public fun stringify(o: Any?, replacer: ((key: String, value: Any?) -> Any?)? = definedExternally, space: Int): String\n public fun stringify(o: Any?, replacer: ((key: String, value: Any?) -> Any?)? = definedExternally, space: String): String\n public fun stringify(o: Any?, replacer: Array): String\n public fun stringify(o: Any?, replacer: Array, space: Int): String\n public fun stringify(o: Any?, replacer: Array, space: String): String\n\n public fun parse(text: String): T\n public fun parse(text: String, reviver: ((key: String, value: Any?) -> Any?)): T\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@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() // 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()\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()\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().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().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\n\n/**\n * Returns a bit representation of the specified floating-point value as [Long]\n * according to the IEEE 754 floating-point \"double format\" bit layout.\n */\n@SinceKotlin(\"1.2\")\n@library(\"doubleToBits\")\npublic actual fun Double.toBits(): Long = definedExternally\n\n/**\n * Returns a bit representation of the specified floating-point value as [Long]\n * according to the IEEE 754 floating-point \"double format\" bit layout,\n * preserving `NaN` values exact layout.\n */\n@SinceKotlin(\"1.2\")\n@library(\"doubleToRawBits\")\npublic actual fun Double.toRawBits(): Long = definedExternally\n\n/**\n * Returns the [Double] value corresponding to a given bit representation.\n */\n@SinceKotlin(\"1.2\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Double.Companion.fromBits(bits: Long): Double = js(\"Kotlin\").doubleFromBits(bits).unsafeCast()\n\n/**\n * Returns a bit representation of the specified floating-point value as [Int]\n * according to the IEEE 754 floating-point \"single format\" bit layout.\n *\n * Note that in Kotlin/JS [Float] range is wider than \"single format\" bit layout can represent,\n * so some [Float] values may overflow, underflow or loose their accuracy after conversion to bits and back.\n */\n@SinceKotlin(\"1.2\")\n@library(\"floatToBits\")\npublic actual fun Float.toBits(): Int = definedExternally\n\n/**\n * Returns a bit representation of the specified floating-point value as [Int]\n * according to the IEEE 754 floating-point \"single format\" bit layout,\n * preserving `NaN` values exact layout.\n *\n * Note that in Kotlin/JS [Float] range is wider than \"single format\" bit layout can represent,\n * so some [Float] values may overflow, underflow or loose their accuracy after conversion to bits and back.\n */\n@SinceKotlin(\"1.2\")\n@library(\"floatToRawBits\")\npublic actual fun Float.toRawBits(): Int = definedExternally\n\n/**\n * Returns the [Float] value corresponding to a given bit representation.\n */\n@SinceKotlin(\"1.2\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Float.Companion.fromBits(bits: Int): Float = js(\"Kotlin\").floatFromBits(bits).unsafeCast()\n\n\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal inline fun Long(low: Int, high: Int) = js(\"Kotlin\").Long.fromBits(low, high).unsafeCast()\ninternal inline val Long.low: Int get() = this.asDynamic().getLowBits().unsafeCast()\ninternal inline val Long.high: Int get() = this.asDynamic().getHighBits().unsafeCast()\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\n\n/**\n * Returns `true` if the specified number is a\n * Not-a-Number (NaN) value, `false` otherwise.\n */\npublic actual fun Double.isNaN(): Boolean = this != this\n\n/**\n * Returns `true` if the specified number is a\n * Not-a-Number (NaN) value, `false` otherwise.\n */\npublic actual fun Float.isNaN(): Boolean = this != this\n\n/**\n * Returns `true` if this value is infinitely large in magnitude.\n */\npublic actual fun Double.isInfinite(): Boolean = this == Double.POSITIVE_INFINITY || this == Double.NEGATIVE_INFINITY\n\n/**\n * Returns `true` if this value is infinitely large in magnitude.\n */\npublic actual fun Float.isInfinite(): Boolean = this == Float.POSITIVE_INFINITY || this == Float.NEGATIVE_INFINITY\n\n/**\n * Returns `true` if the argument is a finite floating-point value; returns `false` otherwise (for `NaN` and infinity arguments).\n */\npublic actual fun Double.isFinite(): Boolean = !isInfinite() && !isNaN()\n\n/**\n * Returns `true` if the argument is a finite floating-point value; returns `false` otherwise (for `NaN` and infinity arguments).\n */\npublic actual fun Float.isFinite(): Boolean = !isInfinite() && !isNaN()\n\n\n/**\n * Counts the number of set bits in the binary representation of this [Int] number.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun Int.countOneBits(): Int {\n // Hacker's Delight 5-1 algorithm\n var v = this\n v = (v and 0x55555555) + (v.ushr(1) and 0x55555555)\n v = (v and 0x33333333) + (v.ushr(2) and 0x33333333)\n v = (v and 0x0F0F0F0F) + (v.ushr(4) and 0x0F0F0F0F)\n v = (v and 0x00FF00FF) + (v.ushr(8) and 0x00FF00FF)\n v = (v and 0x0000FFFF) + (v.ushr(16))\n return v\n}\n\n/**\n * Counts the number of consecutive most significant bits that are zero in the binary representation of this [Int] number.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\n@Suppress(\"DEPRECATION_ERROR\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Int.countLeadingZeroBits(): Int = kotlin.js.Math.clz32(this)\n\n/**\n * Counts the number of consecutive least significant bits that are zero in the binary representation of this [Int] number.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun Int.countTrailingZeroBits(): Int =\n // Hacker's Delight 5-4 algorithm for expressing countTrailingZeroBits with countLeadingZeroBits\n Int.SIZE_BITS - (this or -this).inv().countLeadingZeroBits()\n\n/**\n * Returns a number having a single bit set in the position of the most significant set bit of this [Int] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun Int.takeHighestOneBit(): Int =\n if (this == 0) 0 else 1.shl(Int.SIZE_BITS - 1 - countLeadingZeroBits())\n\n/**\n * Returns a number having a single bit set in the position of the least significant set bit of this [Int] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun Int.takeLowestOneBit(): Int =\n // Hacker's Delight 2-1 algorithm for isolating rightmost 1-bit\n this and -this\n\n/**\n * Rotates the binary representation of this [Int] number left by the specified [bitCount] number of bits.\n * The most significant bits pushed out from the left side reenter the number as the least significant bits on the right side.\n *\n * Rotating the number left by a negative bit count is the same as rotating it right by the negated bit count:\n * `number.rotateLeft(-n) == number.rotateRight(n)`\n *\n * Rotating by a multiple of [Int.SIZE_BITS] (32) returns the same number, or more generally\n * `number.rotateLeft(n) == number.rotateLeft(n % 32)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Int.rotateLeft(bitCount: Int): Int =\n shl(bitCount) or ushr(Int.SIZE_BITS - bitCount)\n\n\n/**\n * Rotates the binary representation of this [Int] number right by the specified [bitCount] number of bits.\n * The least significant bits pushed out from the right side reenter the number as the most significant bits on the left side.\n *\n * Rotating the number right by a negative bit count is the same as rotating it left by the negated bit count:\n * `number.rotateRight(-n) == number.rotateLeft(n)`\n *\n * Rotating by a multiple of [Int.SIZE_BITS] (32) returns the same number, or more generally\n * `number.rotateRight(n) == number.rotateRight(n % 32)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Int.rotateRight(bitCount: Int): Int =\n shl(Int.SIZE_BITS - bitCount) or ushr(bitCount)\n\n\n/**\n * Counts the number of set bits in the binary representation of this [Long] number.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun Long.countOneBits(): Int =\n high.countOneBits() + low.countOneBits()\n\n/**\n * Counts the number of consecutive most significant bits that are zero in the binary representation of this [Long] number.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun Long.countLeadingZeroBits(): Int =\n when (val high = this.high) {\n 0 -> Int.SIZE_BITS + low.countLeadingZeroBits()\n else -> high.countLeadingZeroBits()\n }\n\n/**\n * Counts the number of consecutive least significant bits that are zero in the binary representation of this [Long] number.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun Long.countTrailingZeroBits(): Int =\n when (val low = this.low) {\n 0 -> Int.SIZE_BITS + high.countTrailingZeroBits()\n else -> low.countTrailingZeroBits()\n }\n\n/**\n * Returns a number having a single bit set in the position of the most significant set bit of this [Long] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun Long.takeHighestOneBit(): Long =\n when (val high = this.high) {\n 0 -> Long(low.takeHighestOneBit(), 0)\n else -> Long(0, high.takeHighestOneBit())\n }\n\n/**\n * Returns a number having a single bit set in the position of the least significant set bit of this [Long] number,\n * or zero, if this number is zero.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual fun Long.takeLowestOneBit(): Long =\n when (val low = this.low) {\n 0 -> Long(0, high.takeLowestOneBit())\n else -> Long(low.takeLowestOneBit(), 0)\n }\n\n/**\n * Rotates the binary representation of this [Long] number left by the specified [bitCount] number of bits.\n * The most significant bits pushed out from the left side reenter the number as the least significant bits on the right side.\n *\n * Rotating the number left by a negative bit count is the same as rotating it right by the negated bit count:\n * `number.rotateLeft(-n) == number.rotateRight(n)`\n *\n * Rotating by a multiple of [Long.SIZE_BITS] (64) returns the same number, or more generally\n * `number.rotateLeft(n) == number.rotateLeft(n % 64)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic actual fun Long.rotateLeft(bitCount: Int): Long {\n if ((bitCount and 31) != 0) {\n val low = this.low\n val high = this.high\n val newLow = low.shl(bitCount) or high.ushr(-bitCount)\n val newHigh = high.shl(bitCount) or low.ushr(-bitCount)\n return if ((bitCount and 32) == 0) Long(newLow, newHigh) else Long(newHigh, newLow)\n } else {\n return if ((bitCount and 32) == 0) this else Long(high, low)\n }\n}\n\n\n/**\n * Rotates the binary representation of this [Long] number right by the specified [bitCount] number of bits.\n * The least significant bits pushed out from the right side reenter the number as the most significant bits on the left side.\n *\n * Rotating the number right by a negative bit count is the same as rotating it left by the negated bit count:\n * `number.rotateRight(-n) == number.rotateLeft(n)`\n *\n * Rotating by a multiple of [Long.SIZE_BITS] (64) returns the same number, or more generally\n * `number.rotateRight(n) == number.rotateRight(n % 64)`\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic actual inline fun Long.rotateRight(bitCount: Int): Long = rotateLeft(-bitCount)\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.random\n\nimport kotlin.math.pow\n\ninternal actual fun defaultPlatformRandom(): Random =\n Random(js(\"(Math.random() * Math.pow(2, 32)) | 0\").unsafeCast())\n\n\nprivate val INV_2_26: Double = 2.0.pow(-26)\nprivate val INV_2_53: Double = 2.0.pow(-53)\ninternal actual fun doubleFromParts(hi26: Int, low27: Int): Double =\n hi26 * INV_2_26 + low27 * INV_2_53","/*\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.reflect.js.internal\n\nimport kotlin.reflect.*\n\ninternal abstract class KClassImpl(\n internal open val jClass: JsClass\n) : KClass {\n\n override val qualifiedName: String?\n get() = TODO()\n\n override fun equals(other: Any?): Boolean {\n return other is KClassImpl<*> && jClass == other.jClass\n }\n\n // TODO: use FQN\n override fun hashCode(): Int = simpleName?.hashCode() ?: 0\n\n override fun toString(): String {\n // TODO: use FQN\n return \"class $simpleName\"\n }\n}\n\ninternal class SimpleKClassImpl(jClass: JsClass) : KClassImpl(jClass) {\n override val simpleName: String? = jClass.asDynamic().`$metadata$`?.simpleName.unsafeCast()\n\n override fun isInstance(value: Any?): Boolean {\n return jsIsType(value, jClass)\n }\n}\n\ninternal class PrimitiveKClassImpl(\n jClass: JsClass,\n private val givenSimpleName: String,\n private val isInstanceFunction: (Any?) -> Boolean\n) : KClassImpl(jClass) {\n override fun equals(other: Any?): Boolean {\n if (other !is PrimitiveKClassImpl<*>) return false\n return super.equals(other) && givenSimpleName == other.givenSimpleName\n }\n\n override val simpleName: String? get() = givenSimpleName\n\n override fun isInstance(value: Any?): Boolean {\n return isInstanceFunction(value)\n }\n}\n\ninternal object NothingKClassImpl : KClassImpl(js(\"Object\")) {\n override val simpleName: String = \"Nothing\"\n\n override fun isInstance(value: Any?): Boolean = false\n\n override val jClass: JsClass\n get() = throw UnsupportedOperationException(\"There's no native JS class for Nothing type\")\n\n override fun equals(other: Any?): Boolean = other === this\n\n override fun hashCode(): Int = 0\n}\n\ninternal class ErrorKClass : KClass {\n override val simpleName: String? get() = error(\"Unknown simpleName for ErrorKClass\")\n override val qualifiedName: String? get() = error(\"Unknown qualifiedName for ErrorKClass\")\n\n override fun isInstance(value: Any?): Boolean = error(\"Can's check isInstance on ErrorKClass\")\n\n override fun equals(other: Any?): Boolean = other === this\n\n override fun hashCode(): Int = 0\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.collections\n\n/**\n * The common interface of [InternalStringMap] and [InternalHashCodeMap].\n */\ninternal interface InternalMap : MutableIterable> {\n val equality: EqualityComparator\n val size: Int\n operator fun contains(key: K): Boolean\n operator fun get(key: K): V?\n\n fun put(key: K, value: V): V?\n fun remove(key: K): V?\n fun clear(): Unit\n\n fun createJsMap(): dynamic {\n val result = js(\"Object.create(null)\")\n // force to switch object representation to dictionary mode\n result[\"foo\"] = 1\n jsDeleteProperty(result, \"foo\")\n return result\n }\n}\n","/*\n * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license\n * that can be found in the license/LICENSE.txt file.\n */\n\n\n@file:Suppress(\"UNUSED_PARAMETER\")\n\npackage kotlin.js\n\n@kotlin.internal.InlineOnly\ninternal inline fun jsDeleteProperty(obj: Any, property: Any) {\n js(\"delete obj[property]\")\n}\n\n@kotlin.internal.InlineOnly\ninternal inline fun jsBitwiseOr(lhs: Any?, rhs: Any?): Int =\n js(\"lhs | rhs\").unsafeCast()","/*\n * Copyright 2010-2019 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.reflect.js.internal\n\nimport kotlin.reflect.*\n\ninternal class KTypeImpl(\n override val classifier: KClassifier,\n override val arguments: List,\n override val isMarkedNullable: Boolean\n) : KType {\n override fun equals(other: Any?): Boolean =\n other is KTypeImpl &&\n classifier == other.classifier && arguments == other.arguments && isMarkedNullable == other.isMarkedNullable\n\n override fun hashCode(): Int =\n (classifier.hashCode() * 31 + arguments.hashCode()) * 31 + isMarkedNullable.hashCode()\n\n override fun toString(): String {\n val kClass = (classifier as? KClass<*>)\n val classifierName = when {\n kClass == null -> classifier.toString()\n kClass.simpleName != null -> kClass.simpleName\n else -> \"(non-denotable type)\"\n }\n\n val args =\n if (arguments.isEmpty()) \"\"\n else arguments.joinToString(\", \", \"<\", \">\") { it.asString() }\n val nullable = if (isMarkedNullable) \"?\" else \"\"\n\n return classifierName + args + nullable\n }\n\n // TODO: this should be the implementation of KTypeProjection.toString, see KT-30071\n private fun KTypeProjection.asString(): String {\n if (variance == null) return \"*\"\n return variance.prefixString() + type.toString()\n }\n}\n\ninternal object DynamicKType : KType {\n override val classifier: KClassifier? = null\n override val arguments: List = emptyList()\n override val isMarkedNullable: Boolean = false\n override fun toString(): String = \"dynamic\"\n}\n\ninternal fun KVariance.prefixString() =\n when (this) {\n KVariance.INVARIANT -> \"\"\n KVariance.IN -> \"in \"\n KVariance.OUT -> \"out \"\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\npackage kotlin.reflect.js.internal\n\nimport kotlin.js.JsClass\n\n@JsName(\"PrimitiveClasses\")\ninternal object PrimitiveClasses {\n @JsName(\"anyClass\")\n val anyClass = PrimitiveKClassImpl(js(\"Object\").unsafeCast>(), \"Any\", { it is Any })\n\n @JsName(\"numberClass\")\n val numberClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Number\", { it is Number })\n\n @JsName(\"nothingClass\")\n val nothingClass = NothingKClassImpl\n\n @JsName(\"booleanClass\")\n val booleanClass = PrimitiveKClassImpl(js(\"Boolean\").unsafeCast>(), \"Boolean\", { it is Boolean })\n\n @JsName(\"byteClass\")\n val byteClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Byte\", { it is Byte })\n\n @JsName(\"shortClass\")\n val shortClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Short\", { it is Short })\n\n @JsName(\"intClass\")\n val intClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Int\", { it is Int })\n\n @JsName(\"floatClass\")\n val floatClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Float\", { it is Float })\n\n @JsName(\"doubleClass\")\n val doubleClass = PrimitiveKClassImpl(js(\"Number\").unsafeCast>(), \"Double\", { it is Double })\n\n @JsName(\"arrayClass\")\n val arrayClass = PrimitiveKClassImpl(js(\"Array\").unsafeCast>>(), \"Array\", { it is Array<*> })\n\n @JsName(\"stringClass\")\n val stringClass = PrimitiveKClassImpl(js(\"String\").unsafeCast>(), \"String\", { it is String })\n\n @JsName(\"throwableClass\")\n val throwableClass = PrimitiveKClassImpl(js(\"Error\").unsafeCast>(), \"Throwable\", { it is Throwable })\n\n @JsName(\"booleanArrayClass\")\n val booleanArrayClass = PrimitiveKClassImpl(js(\"Array\").unsafeCast>(), \"BooleanArray\", { it is BooleanArray })\n\n @JsName(\"charArrayClass\")\n val charArrayClass = PrimitiveKClassImpl(js(\"Uint16Array\").unsafeCast>(), \"CharArray\", { it is CharArray })\n\n @JsName(\"byteArrayClass\")\n val byteArrayClass = PrimitiveKClassImpl(js(\"Int8Array\").unsafeCast>(), \"ByteArray\", { it is ByteArray })\n\n @JsName(\"shortArrayClass\")\n val shortArrayClass = PrimitiveKClassImpl(js(\"Int16Array\").unsafeCast>(), \"ShortArray\", { it is ShortArray })\n\n @JsName(\"intArrayClass\")\n val intArrayClass = PrimitiveKClassImpl(js(\"Int32Array\").unsafeCast>(), \"IntArray\", { it is IntArray })\n\n @JsName(\"longArrayClass\")\n val longArrayClass = PrimitiveKClassImpl(js(\"Array\").unsafeCast>(), \"LongArray\", { it is LongArray })\n\n @JsName(\"floatArrayClass\")\n val floatArrayClass = PrimitiveKClassImpl(js(\"Float32Array\").unsafeCast>(), \"FloatArray\", { it is FloatArray })\n\n @JsName(\"doubleArrayClass\")\n val doubleArrayClass = PrimitiveKClassImpl(js(\"Float64Array\").unsafeCast>(), \"DoubleArray\", { it is DoubleArray })\n\n @JsName(\"functionClass\")\n fun functionClass(arity: Int): KClassImpl {\n return functionClasses.get(arity) ?: run {\n val result = PrimitiveKClassImpl(js(\"Function\").unsafeCast>(), \"Function$arity\",\n { jsTypeOf(it) === \"function\" && it.asDynamic().length === arity })\n functionClasses.asDynamic()[arity] = result\n result\n }\n }\n}\n\nprivate val functionClasses = arrayOfNulls>(0)","/*\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\nimport kotlin.reflect.*\nimport kotlin.reflect.js.internal.*\n\n@JsName(\"getKClass\")\ninternal fun getKClass(jClass: Any /* JsClass | Array> */): KClass {\n return if (js(\"Array\").isArray(jClass)) {\n getKClassM(jClass.unsafeCast>>())\n } else {\n getKClass1(jClass.unsafeCast>())\n }\n}\n\n@JsName(\"getKClassM\")\ninternal fun getKClassM(jClasses: Array>): KClass = when (jClasses.size) {\n 1 -> getKClass1(jClasses[0])\n 0 -> NothingKClassImpl.unsafeCast>()\n else -> ErrorKClass().unsafeCast>()\n}\n\n@JsName(\"getKClassFromExpression\")\ninternal fun getKClassFromExpression(e: T): KClass =\n when (jsTypeOf(e)) {\n \"string\" -> PrimitiveClasses.stringClass\n \"number\" -> if (jsBitwiseOr(e, 0).asDynamic() === e) PrimitiveClasses.intClass else PrimitiveClasses.doubleClass\n \"boolean\" -> PrimitiveClasses.booleanClass\n \"function\" -> PrimitiveClasses.functionClass(e.asDynamic().length)\n else -> {\n when {\n e is BooleanArray -> PrimitiveClasses.booleanArrayClass\n e is CharArray -> PrimitiveClasses.charArrayClass\n e is ByteArray -> PrimitiveClasses.byteArrayClass\n e is ShortArray -> PrimitiveClasses.shortArrayClass\n e is IntArray -> PrimitiveClasses.intArrayClass\n e is LongArray -> PrimitiveClasses.longArrayClass\n e is FloatArray -> PrimitiveClasses.floatArrayClass\n e is DoubleArray -> PrimitiveClasses.doubleArrayClass\n e is KClass<*> -> KClass::class\n e is Array<*> -> PrimitiveClasses.arrayClass\n else -> {\n val constructor = js(\"Object\").getPrototypeOf(e).constructor\n when {\n constructor === js(\"Object\") -> PrimitiveClasses.anyClass\n constructor === js(\"Error\") -> PrimitiveClasses.throwableClass\n else -> {\n val jsClass: JsClass = constructor\n getKClass1(jsClass)\n }\n }\n }\n }\n }\n }.unsafeCast>()\n\n@JsName(\"getKClass1\")\ninternal fun getKClass1(jClass: JsClass): KClass {\n if (jClass === js(\"String\")) return PrimitiveClasses.stringClass.unsafeCast>()\n\n val metadata = jClass.asDynamic().`$metadata$`\n\n return if (metadata != null) {\n if (metadata.`$kClass$` == null) {\n val kClass = SimpleKClassImpl(jClass)\n metadata.`$kClass$` = kClass\n kClass\n } else {\n metadata.`$kClass$`\n }\n } else {\n SimpleKClassImpl(jClass)\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\npackage kotlin.js\n\n/**\n * Exposes the JavaScript [RegExp object](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp) to Kotlin.\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic external class RegExp(pattern: String, flags: String? = definedExternally) {\n\n public fun test(str: String): Boolean\n\n public fun exec(str: String): RegExpMatch?\n\n public override fun toString(): String\n\n /**\n * The lastIndex is a read/write integer property of regular expressions that specifies the index at which to start the next match.\n */\n public var lastIndex: Int\n\n public val global: Boolean\n public val ignoreCase: Boolean\n public val multiline: Boolean\n}\n\n/**\n * Resets the regular expression so that subsequent [RegExp.test] and [RegExp.exec] calls will match starting with the beginning of the input string.\n */\npublic fun RegExp.reset() {\n lastIndex = 0\n}\n\n// TODO: Inherit from array or introduce asArray() extension\n/**\n * Represents the return value of [RegExp.exec].\n */\n@Suppress(\"NOT_DOCUMENTED\")\npublic external interface RegExpMatch {\n public val index: Int\n public val input: String\n public val length: Int\n}\n\n/**\n * Returns the entire text matched by [RegExp.exec] if the [index] parameter is 0, or the text matched by the capturing parenthesis\n * at the given index.\n */\npublic inline operator fun RegExpMatch.get(index: Int): String? = asDynamic()[index]\n\n/**\n * Converts the result of [RegExp.exec] to an array where the first element contains the entire matched text and each subsequent\n * element is the text matched by each capturing parenthesis.\n */\npublic inline fun RegExpMatch.asArray(): Array = unsafeCast>()\n","/*\n * Copyright 2010-2019 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.text\n\n/**\n * The exception thrown when a character encoding or decoding error occurs.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic actual open class CharacterCodingException(message: String?) : Exception(message) {\n actual constructor() : this(null)\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.text\n\n/**\n * A mutable sequence of characters.\n *\n * String builder can be used to efficiently perform multiple string manipulation operations.\n */\npublic actual class StringBuilder actual constructor(content: String) : Appendable, CharSequence {\n /**\n * Constructs an empty string builder with the specified initial [capacity].\n *\n * In Kotlin/JS implementation of StringBuilder the initial capacity has no effect on the further performance of operations.\n */\n actual constructor(capacity: Int) : this() {\n }\n\n /** Constructs a string builder that contains the same characters as the specified [content] char sequence. */\n actual constructor(content: CharSequence) : this(content.toString()) {}\n\n /** Constructs an empty string builder. */\n actual constructor() : this(\"\")\n\n private var string: String = if (content !== undefined) content else \"\"\n\n actual override val length: Int\n get() = string.asDynamic().length\n\n actual override fun get(index: Int): Char =\n string.getOrElse(index) { throw IndexOutOfBoundsException(\"index: $index, length: $length}\") }\n\n actual override fun subSequence(startIndex: Int, endIndex: Int): CharSequence = string.substring(startIndex, endIndex)\n\n actual override fun append(value: Char): StringBuilder {\n string += value\n return this\n }\n\n actual override fun append(value: CharSequence?): StringBuilder {\n string += value.toString()\n return this\n }\n\n actual override fun append(value: CharSequence?, startIndex: Int, endIndex: Int): StringBuilder =\n this.appendRange(value ?: \"null\", startIndex, endIndex)\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 actual fun reverse(): StringBuilder {\n var reversed = \"\"\n var index = string.length - 1\n while (index >= 0) {\n val low = string[index--]\n if (low.isLowSurrogate() && index >= 0) {\n val high = string[index--]\n if (high.isHighSurrogate()) {\n reversed = reversed + high + low\n } else {\n reversed = reversed + low + high\n }\n } else {\n reversed += low\n }\n }\n string = reversed\n return this\n }\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 actual fun append(value: Any?): StringBuilder {\n string += value.toString()\n return this\n }\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 actual fun append(value: Boolean): StringBuilder {\n string += value\n return this\n }\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 actual fun append(value: CharArray): StringBuilder {\n @OptIn(ExperimentalStdlibApi::class)\n string += value.concatToString()\n return this\n }\n\n @Deprecated(\"Provided for binary compatibility.\", level = DeprecationLevel.HIDDEN)\n fun append(value: String): StringBuilder = append(value)\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 actual fun append(value: String?): StringBuilder {\n this.string += value ?: \"null\"\n return this\n }\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 * In Kotlin/JS implementation of StringBuilder the value returned from this method may not indicate the actual size of the backing storage.\n */\n @SinceKotlin(\"1.3\")\n// @ExperimentalStdlibApi\n @Deprecated(\"Obtaining StringBuilder capacity is not supported in JS and common code.\", level = DeprecationLevel.ERROR)\n actual fun capacity(): Int = length\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 * In Kotlin/JS implementation of StringBuilder the size of the backing storage is not extended to comply the given [minimumCapacity],\n * thus calling this method has no effect on the further performance of operations.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n actual fun ensureCapacity(minimumCapacity: Int) {\n }\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 actual fun indexOf(string: String): Int = this.string.asDynamic().indexOf(string)\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 actual fun indexOf(string: String, startIndex: Int): Int = this.string.asDynamic().indexOf(string, startIndex)\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 actual fun lastIndexOf(string: String): Int = this.string.asDynamic().lastIndexOf(string)\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 actual fun lastIndexOf(string: String, startIndex: Int): Int {\n if (string.isEmpty() && startIndex < 0) return -1\n return this.string.asDynamic().lastIndexOf(string, startIndex)\n }\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 actual fun insert(index: Int, value: Boolean): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n string = string.substring(0, index) + value + string.substring(index)\n return this\n }\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 actual fun insert(index: Int, value: Char): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n string = string.substring(0, index) + value + string.substring(index)\n return this\n }\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 actual fun insert(index: Int, value: CharArray): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n @OptIn(ExperimentalStdlibApi::class)\n string = string.substring(0, index) + value.concatToString() + string.substring(index)\n return this\n }\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 actual fun insert(index: Int, value: CharSequence?): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n string = string.substring(0, index) + value.toString() + string.substring(index)\n return this\n }\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 actual fun insert(index: Int, value: Any?): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n string = string.substring(0, index) + value.toString() + string.substring(index)\n return this\n }\n\n @Deprecated(\"Provided for binary compatibility.\", level = DeprecationLevel.HIDDEN)\n fun insert(index: Int, value: String): StringBuilder = insert(index, value)\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 actual fun insert(index: Int, value: String?): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n val toInsert = value ?: \"null\"\n this.string = this.string.substring(0, index) + toInsert + this.string.substring(index)\n return this\n }\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 actual fun setLength(newLength: Int) {\n if (newLength < 0) {\n throw IllegalArgumentException(\"Negative new length: $newLength.\")\n }\n\n if (newLength <= length) {\n string = string.substring(0, newLength)\n } else {\n for (i in length until newLength) {\n string += '\\u0000'\n }\n }\n }\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 actual fun substring(startIndex: Int): String {\n AbstractList.checkPositionIndex(startIndex, length)\n\n return string.substring(startIndex)\n }\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 actual fun substring(startIndex: Int, endIndex: Int): String {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n\n return string.substring(startIndex, endIndex)\n }\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 * In Kotlin/JS implementation of StringBuilder the size of the backing storage is always equal to the length of the string builder.\n */\n @SinceKotlin(\"1.4\")\n @WasExperimental(ExperimentalStdlibApi::class)\n actual fun trimToSize() {\n }\n\n override fun toString(): String = string\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\")\n public fun clear(): StringBuilder {\n string = \"\"\n return this\n }\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)\n public operator fun set(index: Int, value: Char) {\n AbstractList.checkElementIndex(index, length)\n\n string = string.substring(0, index) + value + string.substring(index + 1)\n }\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)\n public fun setRange(startIndex: Int, endIndex: Int, value: String): StringBuilder {\n checkReplaceRange(startIndex, endIndex, length)\n\n this.string = this.string.substring(0, startIndex) + value + this.string.substring(endIndex)\n return this\n }\n\n private fun checkReplaceRange(startIndex: Int, endIndex: Int, length: Int) {\n if (startIndex < 0 || startIndex > length) {\n throw IndexOutOfBoundsException(\"startIndex: $startIndex, length: $length\")\n }\n if (startIndex > endIndex) {\n throw IllegalArgumentException(\"startIndex($startIndex) > endIndex($endIndex)\")\n }\n }\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)\n public fun deleteAt(index: Int): StringBuilder {\n AbstractList.checkElementIndex(index, length)\n\n string = string.substring(0, index) + string.substring(index + 1)\n return this\n }\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)\n public fun deleteRange(startIndex: Int, endIndex: Int): StringBuilder {\n checkReplaceRange(startIndex, endIndex, length)\n\n string = string.substring(0, startIndex) + string.substring(endIndex)\n return this\n }\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)\n public fun toCharArray(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = this.length) {\n AbstractList.checkBoundsIndexes(startIndex, endIndex, length)\n AbstractList.checkBoundsIndexes(destinationOffset, destinationOffset + endIndex - startIndex, destination.size)\n\n var dstIndex = destinationOffset\n for (index in startIndex until endIndex) {\n destination[dstIndex++] = string[index]\n }\n }\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)\n public fun appendRange(value: CharArray, startIndex: Int, endIndex: Int): StringBuilder {\n @OptIn(ExperimentalStdlibApi::class)\n string += value.concatToString(startIndex, endIndex)\n return this\n }\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)\n public fun appendRange(value: CharSequence, startIndex: Int, endIndex: Int): StringBuilder {\n val stringCsq = value.toString()\n AbstractList.checkBoundsIndexes(startIndex, endIndex, stringCsq.length)\n\n string += stringCsq.substring(startIndex, endIndex)\n return this\n }\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)\n public fun insertRange(index: Int, value: CharArray, startIndex: Int, endIndex: Int): StringBuilder {\n AbstractList.checkPositionIndex(index, this.length)\n\n @OptIn(ExperimentalStdlibApi::class)\n string = string.substring(0, index) + value.concatToString(startIndex, endIndex) + string.substring(index)\n return this\n }\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)\n public fun insertRange(index: Int, value: CharSequence, startIndex: Int, endIndex: Int): StringBuilder {\n AbstractList.checkPositionIndex(index, length)\n\n val stringCsq = value.toString()\n AbstractList.checkBoundsIndexes(startIndex, endIndex, stringCsq.length)\n\n string = string.substring(0, index) + stringCsq.substring(startIndex, endIndex) + string.substring(index)\n return this\n }\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\")\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.clear(): StringBuilder = this.clear()\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)\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline operator fun StringBuilder.set(index: Int, value: Char) = this.set(index, value)\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)\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.setRange(startIndex: Int, endIndex: Int, value: String): StringBuilder =\n this.setRange(startIndex, endIndex, value)\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)\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.deleteAt(index: Int): StringBuilder = this.deleteAt(index)\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)\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.deleteRange(startIndex: Int, endIndex: Int): StringBuilder = this.deleteRange(startIndex, endIndex)\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)\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\", \"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual inline fun StringBuilder.toCharArray(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = this.length) =\n this.toCharArray(destination, destinationOffset, startIndex, endIndex)\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)\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.appendRange(value: CharArray, startIndex: Int, endIndex: Int): StringBuilder =\n this.appendRange(value, startIndex, endIndex)\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)\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.appendRange(value: CharSequence, startIndex: Int, endIndex: Int): StringBuilder =\n this.appendRange(value, startIndex, endIndex)\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)\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.insertRange(index: Int, value: CharArray, startIndex: Int, endIndex: Int): StringBuilder =\n this.insertRange(index, value, startIndex, endIndex)\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)\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"NOTHING_TO_INLINE\")\npublic actual inline fun StringBuilder.insertRange(index: Int, value: CharSequence, startIndex: Int, endIndex: Int): StringBuilder =\n this.insertRange(index, value, startIndex, endIndex)\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.text\n\n// actually \\s is enough to match all whitespace, but \\xA0 added because of different regexp behavior of Rhino used in Selenium tests\npublic actual fun Char.isWhitespace(): Boolean = toString().matches(\"[\\\\s\\\\xA0]\")\n\n/**\n * Converts this character to lower case using Unicode mapping rules of the invariant locale.\n */\n@OptIn(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic actual inline fun Char.toLowerCase(): Char = lowercaseChar()\n\n/**\n * Converts this character to lower case using Unicode mapping rules of the invariant locale.\n *\n * This function performs one-to-one character mapping.\n * To support one-to-many character mapping use the [lowercase] function.\n * If this character has no mapping equivalent, the character itself is returned.\n *\n * @sample samples.text.Chars.lowercase\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic actual inline fun Char.lowercaseChar(): Char = toString().asDynamic().toLowerCase().charCodeAt(0).unsafeCast().toChar()\n\n/**\n * Converts this character to lower case using Unicode mapping rules of the invariant locale.\n *\n * This function supports one-to-many character mapping, thus the length of the returned string can be greater than one.\n * For example, `'\\u0130'.lowercase()` returns `\"\\u0069\\u0307\"`,\n * where `'\\u0130'` is the LATIN CAPITAL LETTER I WITH DOT ABOVE character (`İ`).\n * If this character has no lower case mapping, the result of `toString()` of this char is returned.\n *\n * @sample samples.text.Chars.lowercase\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic actual inline fun Char.lowercase(): String = toString().asDynamic().toLowerCase() as String\n\n/**\n * Converts this character to upper case using Unicode mapping rules of the invariant locale.\n */\n@OptIn(ExperimentalStdlibApi::class)\n@kotlin.internal.InlineOnly\npublic actual inline fun Char.toUpperCase(): Char = uppercaseChar()\n\n/**\n * Converts this character to upper case using Unicode mapping rules of the invariant locale.\n *\n * This function performs one-to-one character mapping.\n * To support one-to-many character mapping use the [uppercase] function.\n * If this character has no mapping equivalent, the character itself is returned.\n *\n * @sample samples.text.Chars.uppercase\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\npublic actual fun Char.uppercaseChar(): Char {\n val uppercase = uppercase()\n return if (uppercase.length > 1) this else uppercase[0]\n}\n\n/**\n * Converts this character to upper case using Unicode mapping rules of the invariant locale.\n *\n * This function supports one-to-many character mapping, thus the length of the returned string can be greater than one.\n * For example, `'\\uFB00'.uppercase()` returns `\"\\u0046\\u0046\"`,\n * where `'\\uFB00'` is the LATIN SMALL LIGATURE FF character (`ff`).\n * If this character has no upper case mapping, the result of `toString()` of this char is returned.\n *\n * @sample samples.text.Chars.uppercase\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\n@kotlin.internal.InlineOnly\npublic actual inline fun Char.uppercase(): String = toString().asDynamic().toUpperCase() as String\n\n/**\n * Returns `true` if this character is a Unicode high-surrogate code unit (also known as leading-surrogate code unit).\n */\npublic actual fun Char.isHighSurrogate(): Boolean = this in Char.MIN_HIGH_SURROGATE..Char.MAX_HIGH_SURROGATE\n\n/**\n * Returns `true` if this character is a Unicode low-surrogate code unit (also known as trailing-surrogate code unit).\n */\npublic actual fun Char.isLowSurrogate(): Boolean = this in Char.MIN_LOW_SURROGATE..Char.MAX_LOW_SURROGATE\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.text\n\n\n/**\n * Returns `true` if the content of this string is equal to the word \"true\", ignoring case, and `false` otherwise.\n */\n@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toBoolean(): Boolean = this.toBoolean()\n\n/**\n * Returns `true` if this string is not `null` and its content is equal to the word \"true\", ignoring case, and `false` otherwise.\n */\n@OptIn(ExperimentalStdlibApi::class)\n@SinceKotlin(\"1.4\")\npublic actual fun String?.toBoolean(): Boolean = this != null && this.lowercase() == \"true\"\n\n/**\n * Parses the string as a signed [Byte] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toByte(): Byte = toByteOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a signed [Byte] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\npublic actual fun String.toByte(radix: Int): Byte = toByteOrNull(radix) ?: numberFormatError(this)\n\n\n/**\n * Parses the string as a [Short] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toShort(): Short = toShortOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a [Short] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\npublic actual fun String.toShort(radix: Int): Short = toShortOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as an [Int] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toInt(): Int = toIntOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as an [Int] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\npublic actual fun String.toInt(radix: Int): Int = toIntOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as a [Long] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toLong(): Long = toLongOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a [Long] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\npublic actual fun String.toLong(radix: Int): Long = toLongOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as a [Double] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\npublic actual fun String.toDouble(): Double = (+(this.asDynamic())).unsafeCast().also {\n if (it.isNaN() && !this.isNaN() || it == 0.0 && this.isBlank())\n numberFormatError(this)\n}\n\n/**\n * Parses the string as a [Float] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toFloat(): Float = toDouble().unsafeCast()\n\n/**\n * Parses the string as a [Double] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\npublic actual fun String.toDoubleOrNull(): Double? = (+(this.asDynamic())).unsafeCast().takeIf {\n !(it.isNaN() && !this.isNaN() || it == 0.0 && this.isBlank())\n}\n\n/**\n * Parses the string as a [Float] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@kotlin.internal.InlineOnly\npublic actual inline fun String.toFloatOrNull(): Float? = toDoubleOrNull().unsafeCast()\n\n/**\n * Returns a string representation of this [Byte] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.2\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Byte.toString(radix: Int): String = this.toInt().toString(radix)\n\n/**\n * Returns a string representation of this [Short] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.2\")\n@kotlin.internal.InlineOnly\npublic actual inline fun Short.toString(radix: Int): String = this.toInt().toString(radix)\n\n/**\n * Returns a string representation of this [Int] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.2\")\npublic actual fun Int.toString(radix: Int): String = asDynamic().toString(checkRadix(radix))\n\n@OptIn(ExperimentalStdlibApi::class)\nprivate fun String.isNaN(): Boolean = when (this.lowercase()) {\n \"nan\", \"+nan\", \"-nan\" -> true\n else -> false\n}\n\n/**\n * Checks whether the given [radix] is valid radix for string to number and number to string conversion.\n */\n@PublishedApi\ninternal actual fun checkRadix(radix: Int): Int {\n if (radix !in 2..36) {\n throw IllegalArgumentException(\"radix $radix was not in valid range 2..36\")\n }\n return radix\n}\n\ninternal actual fun digitOf(char: Char, radix: Int): Int = when {\n char >= '0' && char <= '9' -> char - '0'\n char >= 'A' && char <= 'Z' -> char - 'A' + 10\n char >= 'a' && char <= 'z' -> char - 'a' + 10\n else -> -1\n}.let { if (it >= radix) -1 else it }\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.text\n\nimport kotlin.js.RegExp\n\n/**\n * Provides enumeration values to use to set regular expression options.\n */\npublic actual enum class RegexOption(val value: String) {\n /** Enables case-insensitive matching. */\n IGNORE_CASE(\"i\"),\n /** Enables multiline mode.\n *\n * In multiline mode the expressions `^` and `$` match just after or just before,\n * respectively, a line terminator or the end of the input sequence. */\n MULTILINE(\"m\")\n}\n\n\n/**\n * Represents the results from a single capturing group within a [MatchResult] of [Regex].\n *\n * @param value The value of captured group.\n */\npublic actual data class MatchGroup(actual val value: String)\n\n\n/**\n * Represents a compiled regular expression.\n * Provides functions to match strings in text with a pattern, replace the found occurrences and split text around matches.\n *\n * For pattern syntax reference see [MDN RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Special_characters_meaning_in_regular_expressions)\n * and [http://www.w3schools.com/jsref/jsref_obj_regexp.asp](https://www.w3schools.com/jsref/jsref_obj_regexp.asp).\n *\n * @constructor Creates a regular expression from the specified [pattern] string and the specified set of [options].\n */\npublic actual class Regex actual constructor(pattern: String, options: Set) {\n\n /** Creates a regular expression from the specified [pattern] string and the specified single [option]. */\n public actual constructor(pattern: String, option: RegexOption) : this(pattern, setOf(option))\n\n /** Creates a regular expression from the specified [pattern] string and the default options. */\n public actual constructor(pattern: String) : this(pattern, emptySet())\n\n\n /** The pattern string of this regular expression. */\n public actual val pattern: String = pattern\n /** The set of options that were used to create this regular expression. */\n public actual val options: Set = options.toSet()\n private val nativePattern: RegExp = RegExp(pattern, options.map { it.value }.joinToString(separator = \"\") + \"g\")\n\n /** Indicates whether the regular expression matches the entire [input]. */\n public actual infix fun matches(input: CharSequence): Boolean {\n nativePattern.reset()\n val match = nativePattern.exec(input.toString())\n return match != null && match.index == 0 && nativePattern.lastIndex == input.length\n }\n\n /** Indicates whether the regular expression can find at least one match in the specified [input]. */\n public actual fun containsMatchIn(input: CharSequence): Boolean {\n nativePattern.reset()\n return nativePattern.test(input.toString())\n }\n\n /** Returns the first match of a regular expression in the [input], beginning at the specified [startIndex].\n *\n * @param startIndex An index to start search with, by default 0. Must be not less than zero and not greater than `input.length()`\n * @return An instance of [MatchResult] if match was found or `null` otherwise.\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or greater than the length of the [input] char sequence.\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n public actual fun find(input: CharSequence, startIndex: Int = 0): MatchResult? {\n if (startIndex < 0 || startIndex > input.length) {\n throw IndexOutOfBoundsException(\"Start index out of bounds: $startIndex, input length: ${input.length}\")\n }\n return nativePattern.findNext(input.toString(), startIndex)\n }\n\n /**\n * Returns a sequence of all occurrences of a regular expression within the [input] string, beginning at the specified [startIndex].\n *\n * @throws IndexOutOfBoundsException if [startIndex] is less than zero or greater than the length of the [input] char sequence.\n *\n * @sample samples.text.Regexps.findAll\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n public actual fun findAll(input: CharSequence, startIndex: Int = 0): Sequence {\n if (startIndex < 0 || startIndex > input.length) {\n throw IndexOutOfBoundsException(\"Start index out of bounds: $startIndex, input length: ${input.length}\")\n }\n return generateSequence({ find(input, startIndex) }, { match -> match.next() })\n }\n\n /**\n * Attempts to match the entire [input] CharSequence against the pattern.\n *\n * @return An instance of [MatchResult] if the entire input matches or `null` otherwise.\n */\n public actual fun matchEntire(input: CharSequence): MatchResult? {\n if (pattern.startsWith('^') && pattern.endsWith('$'))\n return find(input)\n else\n return Regex(\"^${pattern.trimStart('^').trimEnd('$')}$\", options).find(input)\n }\n\n /**\n * Replaces all occurrences of this regular expression in the specified [input] string with specified [replacement] expression.\n *\n * @param replacement A replacement expression that can include substitutions. See [String.prototype.replace](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) function docs for details.\n */\n public actual fun replace(input: CharSequence, replacement: String): String = input.toString().nativeReplace(nativePattern, replacement)\n\n /**\n * Replaces all occurrences of this regular expression in the specified [input] string with the result of\n * the given function [transform] that takes [MatchResult] and returns a string to be used as a\n * replacement for that match.\n */\n public actual inline fun replace(input: CharSequence, transform: (MatchResult) -> CharSequence): String {\n var match = find(input)\n if (match == null) return input.toString()\n\n var lastStart = 0\n val length = input.length\n val sb = StringBuilder(length)\n do {\n val foundMatch = match!!\n sb.append(input, lastStart, foundMatch.range.start)\n sb.append(transform(foundMatch))\n lastStart = foundMatch.range.endInclusive + 1\n match = foundMatch.next()\n } while (lastStart < length && match != null)\n\n if (lastStart < length) {\n sb.append(input, lastStart, length)\n }\n\n return sb.toString()\n }\n\n /**\n * Replaces the first occurrence of this regular expression in the specified [input] string with specified [replacement] expression.\n *\n * @param replacement A replacement expression that can include substitutions. See [String.prototype.replace](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) function docs for details.\n */\n public actual fun replaceFirst(input: CharSequence, replacement: String): String {\n val nonGlobalOptions = options.map { it.value }.joinToString(separator = \"\")\n return input.toString().nativeReplace(RegExp(pattern, nonGlobalOptions), replacement)\n }\n\n /**\n * Splits the [input] CharSequence around matches of this regular expression.\n *\n * @param limit Non-negative value specifying the maximum number of substrings the string can be split to.\n * Zero by default means no limit is set.\n */\n @Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\n public actual fun split(input: CharSequence, limit: Int = 0): List {\n require(limit >= 0) { \"Limit must be non-negative, but was $limit\" }\n val matches = findAll(input).let { if (limit == 0) it else it.take(limit - 1) }\n val result = mutableListOf()\n var lastStart = 0\n\n for (match in matches) {\n result.add(input.subSequence(lastStart, match.range.start).toString())\n lastStart = match.range.endInclusive + 1\n }\n result.add(input.subSequence(lastStart, input.length).toString())\n return result\n }\n\n\n /**\n * Returns the string representation of this regular expression, namely the [pattern] of this regular expression.\n *\n * Note that another regular expression constructed from the same pattern string may have different [options]\n * and may match strings differently.\n */\n public override fun toString(): String = nativePattern.toString()\n\n actual companion object {\n /**\n * Returns a regular expression that matches the specified [literal] string literally.\n * No characters of that string will have special meaning when searching for an occurrence of the regular expression.\n */\n public actual fun fromLiteral(literal: String): Regex = Regex(escape(literal))\n\n /**\n * Returns a regular expression pattern string that matches the specified [literal] string literally.\n * No characters of that string will have special meaning when searching for an occurrence of the regular expression.\n */\n public actual fun escape(literal: String): String = literal.nativeReplace(patternEscape, \"\\\\$&\")\n\n /**\n * Returns a literal replacement expression for the specified [literal] string.\n * No characters of that string will have special meaning when it is used as a replacement string in [Regex.replace] function.\n */\n public actual fun escapeReplacement(literal: String): String = literal.nativeReplace(replacementEscape, \"$$$$\")\n\n private val patternEscape = RegExp(\"\"\"[-\\\\^$*+?.()|[\\]{}]\"\"\", \"g\")\n private val replacementEscape = RegExp(\"\"\"\\$\"\"\", \"g\")\n }\n}\n\n/** Creates a regular expression from the specified [pattern] string and the specified single [option]. */\n@Deprecated(\"Provided for binary compatibility\", level = DeprecationLevel.HIDDEN)\n@JsName(\"Regex_sb3q2\\$\")\npublic fun Regex_0(pattern: String, option: RegexOption): Regex = Regex(pattern, setOf(option))\n\n/** Creates a regular expression from the specified [pattern] string and the default options. */\n@Deprecated(\"Provided for binary compatibility\", level = DeprecationLevel.HIDDEN)\n@JsName(\"Regex_61zpoe\\$\")\npublic fun Regex_1(pattern: String): Regex = Regex(pattern, emptySet())\n\n\n\n\nprivate fun RegExp.findNext(input: String, from: Int): MatchResult? {\n this.lastIndex = from\n val match = exec(input)\n if (match == null) return null\n val range = match.index..lastIndex - 1\n\n return object : MatchResult {\n override val range: IntRange = range\n override val value: String\n get() = match[0]!!\n\n override val groups: MatchGroupCollection = object : MatchGroupCollection, AbstractCollection() {\n override val size: Int get() = match.length\n override fun iterator(): Iterator = indices.asSequence().map { this[it] }.iterator()\n override fun get(index: Int): MatchGroup? = match[index]?.let { MatchGroup(it) }\n }\n\n\n private var groupValues_: List? = null\n\n override val groupValues: List\n get() {\n if (groupValues_ == null) {\n groupValues_ = object : AbstractList() {\n override val size: Int get() = match.length\n override fun get(index: Int): String = match[index] ?: \"\"\n }\n }\n return groupValues_!!\n }\n\n override fun next(): MatchResult? = this@findNext.findNext(input, if (range.isEmpty()) range.start + 1 else range.endInclusive + 1)\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(\"StringsKt\")\n\npackage kotlin.text\n\nimport kotlin.contracts.contract\nimport kotlin.jvm.JvmName\n\n/**\n * Returns a copy of this string converted to upper case using the rules of the default locale.\n */\npublic expect fun String.toUpperCase(): String\n\n/**\n * Returns a copy of this string converted to upper case using Unicode mapping rules of the invariant locale.\n *\n * This function supports one-to-many and many-to-one character mapping,\n * thus the length of the returned string can be different from the length of the original string.\n *\n * @sample samples.text.Strings.uppercase\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\npublic expect fun String.uppercase(): String\n\n/**\n * Returns a copy of this string converted to lower case using the rules of the default locale.\n */\npublic expect fun String.toLowerCase(): String\n\n/**\n * Returns a copy of this string converted to lower case using Unicode mapping rules of the invariant locale.\n *\n * This function supports one-to-many and many-to-one character mapping,\n * thus the length of the returned string can be different from the length of the original string.\n *\n * @sample samples.text.Strings.lowercase\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\npublic expect fun String.lowercase(): String\n\n/**\n * Returns a copy of this string having its first letter titlecased using the rules of the default locale,\n * or the original string if it's empty or already starts with a title case letter.\n *\n * The title case of a character is usually the same as its upper case with several exceptions.\n * The particular list of characters with the special title case form depends on the underlying platform.\n *\n * @sample samples.text.Strings.capitalize\n */\npublic expect fun String.capitalize(): String\n\n/**\n * Returns a copy of this string having its first letter lowercased using the rules of the default locale,\n * or the original string if it's empty or already starts with a lower case letter.\n *\n * @sample samples.text.Strings.decapitalize\n */\npublic expect fun String.decapitalize(): String\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trim(predicate: (Char) -> Boolean): CharSequence {\n var startIndex = 0\n var endIndex = length - 1\n var startFound = false\n\n while (startIndex <= endIndex) {\n val index = if (!startFound) startIndex else endIndex\n val match = predicate(this[index])\n\n if (!startFound) {\n if (!match)\n startFound = true\n else\n startIndex += 1\n } else {\n if (!match)\n break\n else\n endIndex -= 1\n }\n }\n\n return subSequence(startIndex, endIndex + 1)\n}\n\n/**\n * Returns a string having leading and trailing characters matching the [predicate] removed.\n */\npublic inline fun String.trim(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trim(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trimStart(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices)\n if (!predicate(this[index]))\n return subSequence(index, length)\n\n return \"\"\n}\n\n/**\n * Returns a string having leading characters matching the [predicate] removed.\n */\npublic inline fun String.trimStart(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trimStart(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having trailing characters matching the [predicate] removed.\n */\npublic inline fun CharSequence.trimEnd(predicate: (Char) -> Boolean): CharSequence {\n for (index in this.indices.reversed())\n if (!predicate(this[index]))\n return subSequence(0, index + 1)\n\n return \"\"\n}\n\n/**\n * Returns a string having trailing characters matching the [predicate] removed.\n */\npublic inline fun String.trimEnd(predicate: (Char) -> Boolean): String =\n (this as CharSequence).trimEnd(predicate).toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing characters from the [chars] array removed.\n */\npublic fun CharSequence.trim(vararg chars: Char): CharSequence = trim { it in chars }\n\n/**\n * Returns a string having leading and trailing characters from the [chars] array removed.\n */\npublic fun String.trim(vararg chars: Char): String = trim { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having leading characters from the [chars] array removed.\n */\npublic fun CharSequence.trimStart(vararg chars: Char): CharSequence = trimStart { it in chars }\n\n/**\n * Returns a string having leading characters from the [chars] array removed.\n */\npublic fun String.trimStart(vararg chars: Char): String = trimStart { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having trailing characters from the [chars] array removed.\n */\npublic fun CharSequence.trimEnd(vararg chars: Char): CharSequence = trimEnd { it in chars }\n\n/**\n * Returns a string having trailing characters from the [chars] array removed.\n */\npublic fun String.trimEnd(vararg chars: Char): String = trimEnd { it in chars }\n\n/**\n * Returns a sub sequence of this char sequence having leading and trailing whitespace removed.\n */\npublic fun CharSequence.trim(): CharSequence = trim(Char::isWhitespace)\n\n/**\n * Returns a string having leading and trailing whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trim(): String = (this as CharSequence).trim().toString()\n\n/**\n * Returns a sub sequence of this char sequence having leading whitespace removed.\n */\npublic fun CharSequence.trimStart(): CharSequence = trimStart(Char::isWhitespace)\n\n/**\n * Returns a string having leading whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trimStart(): String = (this as CharSequence).trimStart().toString()\n\n/**\n * Returns a sub sequence of this char sequence having trailing whitespace removed.\n */\npublic fun CharSequence.trimEnd(): CharSequence = trimEnd(Char::isWhitespace)\n\n/**\n * Returns a string having trailing whitespace removed.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.trimEnd(): String = (this as CharSequence).trimEnd().toString()\n\n/**\n * Returns a char sequence with content of this char sequence padded at the beginning\n * to the specified [length] with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a char sequence of length at least [length] consisting of `this` char sequence prepended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padStart\n */\npublic fun CharSequence.padStart(length: Int, padChar: Char = ' '): CharSequence {\n if (length < 0)\n throw IllegalArgumentException(\"Desired length $length is less than zero.\")\n if (length <= this.length)\n return this.subSequence(0, this.length)\n\n val sb = StringBuilder(length)\n for (i in 1..(length - this.length))\n sb.append(padChar)\n sb.append(this)\n return sb\n}\n\n/**\n * Pads the string to the specified [length] at the beginning with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a string of length at least [length] consisting of `this` string prepended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padStart\n */\npublic fun String.padStart(length: Int, padChar: Char = ' '): String =\n (this as CharSequence).padStart(length, padChar).toString()\n\n/**\n * Returns a char sequence with content of this char sequence padded at the end\n * to the specified [length] with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a char sequence of length at least [length] consisting of `this` char sequence appended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padEnd\n */\npublic fun CharSequence.padEnd(length: Int, padChar: Char = ' '): CharSequence {\n if (length < 0)\n throw IllegalArgumentException(\"Desired length $length is less than zero.\")\n if (length <= this.length)\n return this.subSequence(0, this.length)\n\n val sb = StringBuilder(length)\n sb.append(this)\n for (i in 1..(length - this.length))\n sb.append(padChar)\n return sb\n}\n\n/**\n * Pads the string to the specified [length] at the end with the specified character or space.\n *\n * @param length the desired string length.\n * @param padChar the character to pad string with, if it has length less than the [length] specified. Space is used by default.\n * @return Returns a string of length at least [length] consisting of `this` string appended with [padChar] as many times\n * as are necessary to reach that length.\n * @sample samples.text.Strings.padEnd\n */\npublic fun String.padEnd(length: Int, padChar: Char = ' '): String =\n (this as CharSequence).padEnd(length, padChar).toString()\n\n/**\n * Returns `true` if this nullable char sequence is either `null` or empty.\n *\n * @sample samples.text.Strings.stringIsNullOrEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence?.isNullOrEmpty(): Boolean {\n contract {\n returns(false) implies (this@isNullOrEmpty != null)\n }\n\n return this == null || this.length == 0\n}\n\n/**\n * Returns `true` if this char sequence is empty (contains no characters).\n *\n * @sample samples.text.Strings.stringIsEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isEmpty(): Boolean = length == 0\n\n/**\n * Returns `true` if this char sequence is not empty.\n *\n * @sample samples.text.Strings.stringIsNotEmpty\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isNotEmpty(): Boolean = length > 0\n\n// implemented differently in JVM and JS\n//public fun String.isBlank(): Boolean = length() == 0 || all { it.isWhitespace() }\n\n\n/**\n * Returns `true` if this char sequence is not empty and contains some characters except of whitespace characters.\n *\n * @sample samples.text.Strings.stringIsNotBlank\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.isNotBlank(): Boolean = !isBlank()\n\n/**\n * Returns `true` if this nullable char sequence is either `null` or empty or consists solely of whitespace characters.\n *\n * @sample samples.text.Strings.stringIsNullOrBlank\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence?.isNullOrBlank(): Boolean {\n contract {\n returns(false) implies (this@isNullOrBlank != null)\n }\n\n return this == null || this.isBlank()\n}\n\n/**\n * Iterator for characters of the given char sequence.\n */\npublic operator fun CharSequence.iterator(): CharIterator = object : CharIterator() {\n private var index = 0\n\n public override fun nextChar(): Char = get(index++)\n\n public override fun hasNext(): Boolean = index < length\n}\n\n/** Returns the string if it is not `null`, or the empty string otherwise. */\n@kotlin.internal.InlineOnly\npublic inline fun String?.orEmpty(): String = this ?: \"\"\n\n/**\n * Returns this char sequence if it's not empty\n * or the result of calling [defaultValue] function if the char sequence is empty.\n *\n * @sample samples.text.Strings.stringIfEmpty\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifEmpty(defaultValue: () -> R): R where C : CharSequence, C : R =\n if (isEmpty()) defaultValue() else this\n\n/**\n * Returns this char sequence if it is not empty and doesn't consist solely of whitespace characters,\n * or the result of calling [defaultValue] function otherwise.\n *\n * @sample samples.text.Strings.stringIfBlank\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline fun C.ifBlank(defaultValue: () -> R): R where C : CharSequence, C : R =\n if (isBlank()) defaultValue() else this\n\n/**\n * Returns the range of valid character indices for this char sequence.\n */\npublic val CharSequence.indices: IntRange\n get() = 0..length - 1\n\n/**\n * Returns the index of the last character in the char sequence or -1 if it is empty.\n */\npublic val CharSequence.lastIndex: Int\n get() = this.length - 1\n\n/**\n * Returns `true` if this CharSequence has Unicode surrogate pair at the specified [index].\n */\npublic fun CharSequence.hasSurrogatePairAt(index: Int): Boolean {\n return index in 0..length - 2\n && this[index].isHighSurrogate()\n && this[index + 1].isLowSurrogate()\n}\n\n/**\n * Returns a substring specified by the given [range] of indices.\n */\npublic fun String.substring(range: IntRange): String = substring(range.start, range.endInclusive + 1)\n\n/**\n * Returns a subsequence of this char sequence specified by the given [range] of indices.\n */\npublic fun CharSequence.subSequence(range: IntRange): CharSequence = subSequence(range.start, range.endInclusive + 1)\n\n/**\n * Returns a subsequence of this char sequence.\n *\n * This extension is chosen only for invocation with old-named parameters.\n * Replace parameter names with the same as those of [CharSequence.subSequence].\n */\n@kotlin.internal.InlineOnly\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\") // false warning\n@Deprecated(\"Use parameters named startIndex and endIndex.\", ReplaceWith(\"subSequence(startIndex = start, endIndex = end)\"))\npublic inline fun String.subSequence(start: Int, end: Int): CharSequence = subSequence(start, end)\n\n/**\n * Returns a substring of chars from a range of this char sequence starting at the [startIndex] and ending right before the [endIndex].\n *\n * @param startIndex the start index (inclusive).\n * @param endIndex the end index (exclusive). If not specified, the length of the char sequence is used.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.substring(startIndex: Int, endIndex: Int = length): String = subSequence(startIndex, endIndex).toString()\n\n/**\n * Returns a substring of chars at indices from the specified [range] of this char sequence.\n */\npublic fun CharSequence.substring(range: IntRange): String = subSequence(range.start, range.endInclusive + 1).toString()\n\n/**\n * Returns a substring before the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBefore(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring before the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBefore(delimiter: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring after the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfter(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + 1, length)\n}\n\n/**\n * Returns a substring after the first occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfter(delimiter: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + delimiter.length, length)\n}\n\n/**\n * Returns a substring before the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBeforeLast(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring before the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringBeforeLast(delimiter: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(0, index)\n}\n\n/**\n * Returns a substring after the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfterLast(delimiter: Char, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + 1, length)\n}\n\n/**\n * Returns a substring after the last occurrence of [delimiter].\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.substringAfterLast(delimiter: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else substring(index + delimiter.length, length)\n}\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given range\n * is replaced with the [replacement] char sequence.\n * @param startIndex the index of the first character to be replaced.\n * @param endIndex the index of the first character after the replacement to keep in the string.\n */\n@OptIn(ExperimentalStdlibApi::class)\npublic fun CharSequence.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): CharSequence {\n if (endIndex < startIndex)\n throw IndexOutOfBoundsException(\"End index ($endIndex) is less than start index ($startIndex).\")\n val sb = StringBuilder()\n sb.appendRange(this, 0, startIndex)\n sb.append(replacement)\n sb.appendRange(this, endIndex, length)\n return sb\n}\n\n/**\n * Replaces the part of the string at the given range with the [replacement] char sequence.\n * @param startIndex the index of the first character to be replaced.\n * @param endIndex the index of the first character after the replacement to keep in the string.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceRange(startIndex: Int, endIndex: Int, replacement: CharSequence): String =\n (this as CharSequence).replaceRange(startIndex, endIndex, replacement).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given [range]\n * is replaced with the [replacement] char sequence.\n *\n * The end index of the [range] is included in the part to be replaced.\n */\npublic fun CharSequence.replaceRange(range: IntRange, replacement: CharSequence): CharSequence =\n replaceRange(range.start, range.endInclusive + 1, replacement)\n\n/**\n * Replace the part of string at the given [range] with the [replacement] string.\n *\n * The end index of the [range] is included in the part to be replaced.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceRange(range: IntRange, replacement: CharSequence): String =\n (this as CharSequence).replaceRange(range, replacement).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given range is removed.\n *\n * @param startIndex the index of the first character to be removed.\n * @param endIndex the index of the first character after the removed part to keep in the string.\n *\n * [endIndex] is not included in the removed part.\n */\n@OptIn(ExperimentalStdlibApi::class)\npublic fun CharSequence.removeRange(startIndex: Int, endIndex: Int): CharSequence {\n if (endIndex < startIndex)\n throw IndexOutOfBoundsException(\"End index ($endIndex) is less than start index ($startIndex).\")\n\n if (endIndex == startIndex)\n return this.subSequence(0, length)\n\n val sb = StringBuilder(length - (endIndex - startIndex))\n sb.appendRange(this, 0, startIndex)\n sb.appendRange(this, endIndex, length)\n return sb\n}\n\n/**\n * Removes the part of a string at a given range.\n * @param startIndex the index of the first character to be removed.\n * @param endIndex the index of the first character after the removed part to keep in the string.\n *\n * [endIndex] is not included in the removed part.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.removeRange(startIndex: Int, endIndex: Int): String =\n (this as CharSequence).removeRange(startIndex, endIndex).toString()\n\n/**\n * Returns a char sequence with content of this char sequence where its part at the given [range] is removed.\n *\n * The end index of the [range] is included in the removed part.\n */\npublic fun CharSequence.removeRange(range: IntRange): CharSequence = removeRange(range.start, range.endInclusive + 1)\n\n/**\n * Removes the part of a string at the given [range].\n *\n * The end index of the [range] is included in the removed part.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.removeRange(range: IntRange): String =\n (this as CharSequence).removeRange(range).toString()\n\n/**\n * If this char sequence starts with the given [prefix], returns a new char sequence\n * with the prefix removed. Otherwise, returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removePrefix(prefix: CharSequence): CharSequence {\n if (startsWith(prefix)) {\n return subSequence(prefix.length, length)\n }\n return subSequence(0, length)\n}\n\n/**\n * If this string starts with the given [prefix], returns a copy of this string\n * with the prefix removed. Otherwise, returns this string.\n */\npublic fun String.removePrefix(prefix: CharSequence): String {\n if (startsWith(prefix)) {\n return substring(prefix.length)\n }\n return this\n}\n\n/**\n * If this char sequence ends with the given [suffix], returns a new char sequence\n * with the suffix removed. Otherwise, returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSuffix(suffix: CharSequence): CharSequence {\n if (endsWith(suffix)) {\n return subSequence(0, length - suffix.length)\n }\n return subSequence(0, length)\n}\n\n/**\n * If this string ends with the given [suffix], returns a copy of this string\n * with the suffix removed. Otherwise, returns this string.\n */\npublic fun String.removeSuffix(suffix: CharSequence): String {\n if (endsWith(suffix)) {\n return substring(0, length - suffix.length)\n }\n return this\n}\n\n/**\n * When this char sequence starts with the given [prefix] and ends with the given [suffix],\n * returns a new char sequence having both the given [prefix] and [suffix] removed.\n * Otherwise returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSurrounding(prefix: CharSequence, suffix: CharSequence): CharSequence {\n if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {\n return subSequence(prefix.length, length - suffix.length)\n }\n return subSequence(0, length)\n}\n\n/**\n * Removes from a string both the given [prefix] and [suffix] if and only if\n * it starts with the [prefix] and ends with the [suffix].\n * Otherwise returns this string unchanged.\n */\npublic fun String.removeSurrounding(prefix: CharSequence, suffix: CharSequence): String {\n if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {\n return substring(prefix.length, length - suffix.length)\n }\n return this\n}\n\n/**\n * When this char sequence starts with and ends with the given [delimiter],\n * returns a new char sequence having this [delimiter] removed both from the start and end.\n * Otherwise returns a new char sequence with the same characters.\n */\npublic fun CharSequence.removeSurrounding(delimiter: CharSequence): CharSequence = removeSurrounding(delimiter, delimiter)\n\n/**\n * Removes the given [delimiter] string from both the start and the end of this string\n * if and only if it starts with and ends with the [delimiter].\n * Otherwise returns this string unchanged.\n */\npublic fun String.removeSurrounding(delimiter: CharSequence): String = removeSurrounding(delimiter, delimiter)\n\n/**\n * Replace part of string before the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBefore(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string before the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBefore(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string after the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfter(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + 1, length, replacement)\n}\n\n/**\n * Replace part of string after the first occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfter(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = indexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + delimiter.length, length, replacement)\n}\n\n/**\n * Replace part of string after the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfterLast(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + delimiter.length, length, replacement)\n}\n\n/**\n * Replace part of string after the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceAfterLast(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(index + 1, length, replacement)\n}\n\n/**\n * Replace part of string before the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBeforeLast(delimiter: Char, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n/**\n * Replace part of string before the last occurrence of given delimiter with the [replacement] string.\n * If the string does not contain the delimiter, returns [missingDelimiterValue] which defaults to the original string.\n */\npublic fun String.replaceBeforeLast(delimiter: String, replacement: String, missingDelimiterValue: String = this): String {\n val index = lastIndexOf(delimiter)\n return if (index == -1) missingDelimiterValue else replaceRange(0, index, replacement)\n}\n\n\n// public fun String.replace(oldChar: Char, newChar: Char, ignoreCase: Boolean): String // JVM- and JS-specific\n// public fun String.replace(oldValue: String, newValue: String, ignoreCase: Boolean): String // JVM- and JS-specific\n\n/**\n * Returns a new string obtained by replacing each substring of this char sequence that matches the given regular expression\n * with the given [replacement].\n *\n * The [replacement] can consist of any combination of literal text and $-substitutions. To treat the replacement string\n * literally escape it with the [kotlin.text.Regex.Companion.escapeReplacement] method.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replace(regex: Regex, replacement: String): String = regex.replace(this, replacement)\n\n/**\n * Returns a new string obtained by replacing each substring of this char sequence that matches the given regular expression\n * with the result of the given function [transform] that takes [MatchResult] and returns a string to be used as a\n * replacement for that match.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replace(regex: Regex, noinline transform: (MatchResult) -> CharSequence): String =\n regex.replace(this, transform)\n\n/**\n * Replaces the first occurrence of the given regular expression [regex] in this char sequence with specified [replacement] expression.\n *\n * @param replacement A replacement expression that can include substitutions. See [Regex.replaceFirst] for details.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.replaceFirst(regex: Regex, replacement: String): String = regex.replaceFirst(this, replacement)\n\n/**\n * Returns a copy of this string having its first character replaced with the result of the specified [transform],\n * or the original string if it's empty.\n *\n * @param transform function that takes the first character and returns the result of the transform applied to the character.\n *\n * @sample samples.text.Strings.replaceFirstChar\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@JvmName(\"replaceFirstCharWithChar\")\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceFirstChar(transform: (Char) -> Char): String {\n return if (isNotEmpty()) transform(this[0]) + substring(1) else this\n}\n\n/**\n * Returns a copy of this string having its first character replaced with the result of the specified [transform],\n * or the original string if it's empty.\n *\n * @param transform function that takes the first character and returns the result of the transform applied to the character.\n *\n * @sample samples.text.Strings.replaceFirstChar\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@JvmName(\"replaceFirstCharWithCharSequence\")\n@kotlin.internal.InlineOnly\npublic inline fun String.replaceFirstChar(transform: (Char) -> CharSequence): String {\n return if (isNotEmpty()) transform(this[0]).toString() + substring(1) else this\n}\n\n\n/**\n * Returns `true` if this char sequence matches the given regular expression.\n */\n@kotlin.internal.InlineOnly\npublic inline infix fun CharSequence.matches(regex: Regex): Boolean = regex.matches(this)\n\n/**\n * Implementation of [regionMatches] for CharSequences.\n * Invoked when it's already known that arguments are not Strings, so that no additional type checks are performed.\n */\ninternal fun CharSequence.regionMatchesImpl(thisOffset: Int, other: CharSequence, otherOffset: Int, length: Int, ignoreCase: Boolean): Boolean {\n if ((otherOffset < 0) || (thisOffset < 0) || (thisOffset > this.length - length) || (otherOffset > other.length - length)) {\n return false\n }\n\n for (index in 0 until length) {\n if (!this[thisOffset + index].equals(other[otherOffset + index], ignoreCase))\n return false\n }\n return true\n}\n\n/**\n * Returns `true` if this char sequence starts with the specified character.\n */\npublic fun CharSequence.startsWith(char: Char, ignoreCase: Boolean = false): Boolean =\n this.length > 0 && this[0].equals(char, ignoreCase)\n\n/**\n * Returns `true` if this char sequence ends with the specified character.\n */\npublic fun CharSequence.endsWith(char: Char, ignoreCase: Boolean = false): Boolean =\n this.length > 0 && this[lastIndex].equals(char, ignoreCase)\n\n/**\n * Returns `true` if this char sequence starts with the specified prefix.\n */\npublic fun CharSequence.startsWith(prefix: CharSequence, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && prefix is String)\n return this.startsWith(prefix)\n else\n return regionMatchesImpl(0, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if a substring of this char sequence starting at the specified offset [startIndex] starts with the specified prefix.\n */\npublic fun CharSequence.startsWith(prefix: CharSequence, startIndex: Int, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && prefix is String)\n return this.startsWith(prefix, startIndex)\n else\n return regionMatchesImpl(startIndex, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if this char sequence ends with the specified suffix.\n */\npublic fun CharSequence.endsWith(suffix: CharSequence, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase && this is String && suffix is String)\n return this.endsWith(suffix)\n else\n return regionMatchesImpl(length - suffix.length, suffix, 0, suffix.length, ignoreCase)\n}\n\n\n// common prefix and suffix\n\n/**\n * Returns the longest string `prefix` such that this char sequence and [other] char sequence both start with this prefix,\n * taking care not to split surrogate pairs.\n * If this and [other] have no common prefix, returns the empty string.\n\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @sample samples.text.Strings.commonPrefixWith\n */\npublic fun CharSequence.commonPrefixWith(other: CharSequence, ignoreCase: Boolean = false): String {\n val shortestLength = minOf(this.length, other.length)\n\n var i = 0\n while (i < shortestLength && this[i].equals(other[i], ignoreCase = ignoreCase)) {\n i++\n }\n if (this.hasSurrogatePairAt(i - 1) || other.hasSurrogatePairAt(i - 1)) {\n i--\n }\n return subSequence(0, i).toString()\n}\n\n/**\n * Returns the longest string `suffix` such that this char sequence and [other] char sequence both end with this suffix,\n * taking care not to split surrogate pairs.\n * If this and [other] have no common suffix, returns the empty string.\n\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @sample samples.text.Strings.commonSuffixWith\n */\npublic fun CharSequence.commonSuffixWith(other: CharSequence, ignoreCase: Boolean = false): String {\n val thisLength = this.length\n val otherLength = other.length\n val shortestLength = minOf(thisLength, otherLength)\n\n var i = 0\n while (i < shortestLength && this[thisLength - i - 1].equals(other[otherLength - i - 1], ignoreCase = ignoreCase)) {\n i++\n }\n if (this.hasSurrogatePairAt(thisLength - i - 1) || other.hasSurrogatePairAt(otherLength - i - 1)) {\n i--\n }\n return subSequence(thisLength - i, thisLength).toString()\n}\n\n\n// indexOfAny()\n\n/**\n * Finds the index of the first occurrence of any of the specified [chars] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of matched character from [chars] or -1 if none of [chars] are found.\n *\n */\npublic fun CharSequence.indexOfAny(chars: CharArray, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n if (!ignoreCase && chars.size == 1 && this is String) {\n val char = chars.single()\n return nativeIndexOf(char, startIndex)\n }\n\n for (index in startIndex.coerceAtLeast(0)..lastIndex) {\n val charAtIndex = get(index)\n if (chars.any { it.equals(charAtIndex, ignoreCase) })\n return index\n }\n return -1\n}\n\n/**\n * Finds the index of the last occurrence of any of the specified [chars] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the last occurrence of matched character from [chars] or -1 if none of [chars] are found.\n *\n */\npublic fun CharSequence.lastIndexOfAny(chars: CharArray, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n if (!ignoreCase && chars.size == 1 && this is String) {\n val char = chars.single()\n return nativeLastIndexOf(char, startIndex)\n }\n\n\n for (index in startIndex.coerceAtMost(lastIndex) downTo 0) {\n val charAtIndex = get(index)\n if (chars.any { it.equals(charAtIndex, ignoreCase) })\n return index\n }\n\n return -1\n}\n\n\nprivate fun CharSequence.indexOf(other: CharSequence, startIndex: Int, endIndex: Int, ignoreCase: Boolean, last: Boolean = false): Int {\n val indices = if (!last)\n startIndex.coerceAtLeast(0)..endIndex.coerceAtMost(length)\n else\n startIndex.coerceAtMost(lastIndex) downTo endIndex.coerceAtLeast(0)\n\n if (this is String && other is String) { // smart cast\n for (index in indices) {\n if (other.regionMatches(0, this, index, other.length, ignoreCase))\n return index\n }\n } else {\n for (index in indices) {\n if (other.regionMatchesImpl(0, this, index, other.length, ignoreCase))\n return index\n }\n }\n return -1\n}\n\nprivate fun CharSequence.findAnyOf(strings: Collection, startIndex: Int, ignoreCase: Boolean, last: Boolean): Pair? {\n if (!ignoreCase && strings.size == 1) {\n val string = strings.single()\n val index = if (!last) indexOf(string, startIndex) else lastIndexOf(string, startIndex)\n return if (index < 0) null else index to string\n }\n\n val indices = if (!last) startIndex.coerceAtLeast(0)..length else startIndex.coerceAtMost(lastIndex) downTo 0\n\n if (this is String) {\n for (index in indices) {\n val matchingString = strings.firstOrNull { it.regionMatches(0, this, index, it.length, ignoreCase) }\n if (matchingString != null)\n return index to matchingString\n }\n } else {\n for (index in indices) {\n val matchingString = strings.firstOrNull { it.regionMatchesImpl(0, this, index, it.length, ignoreCase) }\n if (matchingString != null)\n return index to matchingString\n }\n }\n\n return null\n}\n\n/**\n * Finds the first occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return A pair of an index of the first occurrence of matched string from [strings] and the string matched\n * or `null` if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.findAnyOf(strings: Collection, startIndex: Int = 0, ignoreCase: Boolean = false): Pair? =\n findAnyOf(strings, startIndex, ignoreCase, last = false)\n\n/**\n * Finds the last occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return A pair of an index of the last occurrence of matched string from [strings] and the string matched or `null` if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the end toward the beginning of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.findLastAnyOf(strings: Collection, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Pair? =\n findAnyOf(strings, startIndex, ignoreCase, last = true)\n\n/**\n * Finds the index of the first occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of matched string from [strings] or -1 if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.indexOfAny(strings: Collection, startIndex: Int = 0, ignoreCase: Boolean = false): Int =\n findAnyOf(strings, startIndex, ignoreCase, last = false)?.first ?: -1\n\n/**\n * Finds the index of the last occurrence of any of the specified [strings] in this char sequence,\n * starting from the specified [startIndex] and optionally ignoring the case.\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the last occurrence of matched string from [strings] or -1 if none of [strings] are found.\n *\n * To avoid ambiguous results when strings in [strings] have characters in common, this method proceeds from\n * the end toward the beginning of this string, and finds at each position the first element in [strings]\n * that matches this string at that position.\n */\npublic fun CharSequence.lastIndexOfAny(strings: Collection, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int =\n findAnyOf(strings, startIndex, ignoreCase, last = true)?.first ?: -1\n\n\n// indexOf\n\n/**\n * Returns the index within this string of the first occurrence of the specified character, starting from the specified [startIndex].\n *\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the first occurrence of [char] or -1 if none is found.\n */\npublic fun CharSequence.indexOf(char: Char, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOfAny(charArrayOf(char), startIndex, ignoreCase)\n else\n nativeIndexOf(char, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the first occurrence of the specified [string],\n * starting from the specified [startIndex].\n *\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the first occurrence of [string] or `-1` if none is found.\n * @sample samples.text.Strings.indexOf\n */\npublic fun CharSequence.indexOf(string: String, startIndex: Int = 0, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOf(string, startIndex, length, ignoreCase)\n else\n nativeIndexOf(string, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the last occurrence of the specified character,\n * starting from the specified [startIndex].\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a character. By default `false`.\n * @return An index of the last occurrence of [char] or -1 if none is found.\n */\npublic fun CharSequence.lastIndexOf(char: Char, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n lastIndexOfAny(charArrayOf(char), startIndex, ignoreCase)\n else\n nativeLastIndexOf(char, startIndex)\n}\n\n/**\n * Returns the index within this char sequence of the last occurrence of the specified [string],\n * starting from the specified [startIndex].\n *\n * @param startIndex The index of character to start searching at. The search proceeds backward toward the beginning of the string.\n * @param ignoreCase `true` to ignore character case when matching a string. By default `false`.\n * @return An index of the last occurrence of [string] or -1 if none is found.\n */\npublic fun CharSequence.lastIndexOf(string: String, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int {\n return if (ignoreCase || this !is String)\n indexOf(string, startIndex, 0, ignoreCase, last = true)\n else\n nativeLastIndexOf(string, startIndex)\n}\n\n/**\n * Returns `true` if this char sequence contains the specified [other] sequence of characters as a substring.\n *\n * @param ignoreCase `true` to ignore character case when comparing strings. By default `false`.\n */\n@Suppress(\"INAPPLICABLE_OPERATOR_MODIFIER\")\npublic operator fun CharSequence.contains(other: CharSequence, ignoreCase: Boolean = false): Boolean =\n if (other is String)\n indexOf(other, ignoreCase = ignoreCase) >= 0\n else\n indexOf(other, 0, length, ignoreCase) >= 0\n\n\n\n/**\n * Returns `true` if this char sequence contains the specified character [char].\n *\n * @param ignoreCase `true` to ignore character case when comparing characters. By default `false`.\n */\n@Suppress(\"INAPPLICABLE_OPERATOR_MODIFIER\")\npublic operator fun CharSequence.contains(char: Char, ignoreCase: Boolean = false): Boolean =\n indexOf(char, ignoreCase = ignoreCase) >= 0\n\n/**\n * Returns `true` if this char sequence contains at least one match of the specified regular expression [regex].\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun CharSequence.contains(regex: Regex): Boolean = regex.containsMatchIn(this)\n\n\n// rangesDelimitedBy\n\n\nprivate class DelimitedRangesSequence(\n private val input: CharSequence,\n private val startIndex: Int,\n private val limit: Int,\n private val getNextMatch: CharSequence.(currentIndex: Int) -> Pair?\n) : Sequence {\n\n override fun iterator(): Iterator = object : Iterator {\n var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue\n var currentStartIndex: Int = startIndex.coerceIn(0, input.length)\n var nextSearchIndex: Int = currentStartIndex\n var nextItem: IntRange? = null\n var counter: Int = 0\n\n private fun calcNext() {\n if (nextSearchIndex < 0) {\n nextState = 0\n nextItem = null\n } else {\n if (limit > 0 && ++counter >= limit || nextSearchIndex > input.length) {\n nextItem = currentStartIndex..input.lastIndex\n nextSearchIndex = -1\n } else {\n val match = input.getNextMatch(nextSearchIndex)\n if (match == null) {\n nextItem = currentStartIndex..input.lastIndex\n nextSearchIndex = -1\n } else {\n val (index, length) = match\n nextItem = currentStartIndex until index\n currentStartIndex = index + length\n nextSearchIndex = currentStartIndex + if (length == 0) 1 else 0\n }\n }\n nextState = 1\n }\n }\n\n override fun next(): IntRange {\n if (nextState == -1)\n calcNext()\n if (nextState == 0)\n throw NoSuchElementException()\n val result = nextItem as IntRange\n // Clean next to avoid keeping reference on yielded instance\n nextItem = null\n nextState = -1\n return result\n }\n\n override fun hasNext(): Boolean {\n if (nextState == -1)\n calcNext()\n return nextState == 1\n }\n }\n}\n\n/**\n * Returns a sequence of index ranges of substrings in this char sequence around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param startIndex The index to start searching delimiters from.\n * No range having its start value less than [startIndex] is returned.\n * [startIndex] is coerced to be non-negative and not greater than length of this string.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n */\nprivate fun CharSequence.rangesDelimitedBy(delimiters: CharArray, startIndex: Int = 0, ignoreCase: Boolean = false, limit: Int = 0): Sequence {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" })\n\n return DelimitedRangesSequence(this, startIndex, limit, { currentIndex ->\n indexOfAny(delimiters, currentIndex, ignoreCase = ignoreCase).let { if (it < 0) null else it to 1 }\n })\n}\n\n\n/**\n * Returns a sequence of index ranges of substrings in this char sequence around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param startIndex The index to start searching delimiters from.\n * No range having its start value less than [startIndex] is returned.\n * [startIndex] is coerced to be non-negative and not greater than length of this string.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [delimiters]\n * that matches this string at that position.\n */\nprivate fun CharSequence.rangesDelimitedBy(delimiters: Array, startIndex: Int = 0, ignoreCase: Boolean = false, limit: Int = 0): Sequence {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" } )\n val delimitersList = delimiters.asList()\n\n return DelimitedRangesSequence(this, startIndex, limit, { currentIndex -> findAnyOf(delimitersList, currentIndex, ignoreCase = ignoreCase, last = false)?.let { it.first to it.second.length } })\n\n}\n\n\n// split\n\n/**\n * Splits this char sequence to a sequence of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and finds at each position the first element in [delimiters]\n * that matches this string at that position.\n */\npublic fun CharSequence.splitToSequence(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): Sequence =\n rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).map { substring(it) }\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more strings to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return. Zero by default means no limit is set.\n *\n * To avoid ambiguous results when strings in [delimiters] have characters in common, this method proceeds from\n * the beginning to the end of this string, and matches at each position the first element in [delimiters]\n * that is equal to a delimiter in this instance at that position.\n */\npublic fun CharSequence.split(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): List {\n if (delimiters.size == 1) {\n val delimiter = delimiters[0]\n if (!delimiter.isEmpty()) {\n return split(delimiter, ignoreCase, limit)\n }\n }\n\n return rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }\n}\n\n/**\n * Splits this char sequence to a sequence of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\npublic fun CharSequence.splitToSequence(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): Sequence =\n rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).map { substring(it) }\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiters].\n *\n * @param delimiters One or more characters to be used as delimiters.\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\npublic fun CharSequence.split(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): List {\n if (delimiters.size == 1) {\n return split(delimiters[0].toString(), ignoreCase, limit)\n }\n\n return rangesDelimitedBy(delimiters, ignoreCase = ignoreCase, limit = limit).asIterable().map { substring(it) }\n}\n\n/**\n * Splits this char sequence to a list of strings around occurrences of the specified [delimiter].\n * This is specialized version of split which receives single non-empty delimiter and offers better performance\n *\n * @param delimiter String used as delimiter\n * @param ignoreCase `true` to ignore character case when matching a delimiter. By default `false`.\n * @param limit The maximum number of substrings to return.\n */\nprivate fun CharSequence.split(delimiter: String, ignoreCase: Boolean, limit: Int): List {\n require(limit >= 0, { \"Limit must be non-negative, but was $limit.\" })\n\n var currentOffset = 0\n var nextIndex = indexOf(delimiter, currentOffset, ignoreCase)\n if (nextIndex == -1 || limit == 1) {\n return listOf(this.toString())\n }\n\n val isLimited = limit > 0\n val result = ArrayList(if (isLimited) limit.coerceAtMost(10) else 10)\n do {\n result.add(substring(currentOffset, nextIndex))\n currentOffset = nextIndex + delimiter.length\n // Do not search for next occurrence if we're reaching limit\n if (isLimited && result.size == limit - 1) break\n nextIndex = indexOf(delimiter, currentOffset, ignoreCase)\n } while (nextIndex != -1)\n\n result.add(substring(currentOffset, length))\n return result\n}\n\n/**\n * Splits this char sequence around matches of the given regular expression.\n *\n * @param limit Non-negative value specifying the maximum number of substrings to return.\n * Zero by default means no limit is set.\n */\n@kotlin.internal.InlineOnly\npublic inline fun CharSequence.split(regex: Regex, limit: Int = 0): List = regex.split(this, limit)\n\n/**\n * Splits this char sequence to a sequence of lines delimited by any of the following character sequences: CRLF, LF or CR.\n *\n * The lines returned do not include terminating line separators.\n */\npublic fun CharSequence.lineSequence(): Sequence = splitToSequence(\"\\r\\n\", \"\\n\", \"\\r\")\n\n/**\n * Splits this char sequence to a list of lines delimited by any of the following character sequences: CRLF, LF or CR.\n *\n * The lines returned do not include terminating line separators.\n */\npublic fun CharSequence.lines(): List = lineSequence().toList()\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.comparisons\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.*\n\n/**\n * Returns the greater of two values.\n * \n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun > maxOf(a: T, b: T): T {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Byte, b: Byte): Byte {\n return Math.max(a.toInt(), b.toInt()).unsafeCast()\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Short, b: Short): Short {\n return Math.max(a.toInt(), b.toInt()).unsafeCast()\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Int, b: Int): Int {\n return Math.max(a, b)\n}\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.1\")\n@Suppress(\"DEPRECATION_ERROR\", \"NOTHING_TO_INLINE\")\npublic actual inline fun maxOf(a: Long, b: Long): Long {\n return if (a >= b) a else b\n}\n\n/**\n * Returns the greater of two values.\n * \n * If either value is `NaN`, returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Float, b: Float): Float {\n return Math.max(a, b)\n}\n\n/**\n * Returns the greater of two values.\n * \n * If either value is `NaN`, returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Double, b: Double): Double {\n return Math.max(a, b)\n}\n\n/**\n * Returns the greater of three values.\n * \n * If there are multiple equal maximal values, returns the first of them.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun > maxOf(a: T, b: T, c: T): T {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Byte, b: Byte, c: Byte): Byte {\n return Math.max(a.toInt(), b.toInt(), c.toInt()).unsafeCast()\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Short, b: Short, c: Short): Short {\n return Math.max(a.toInt(), b.toInt(), c.toInt()).unsafeCast()\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Int, b: Int, c: Int): Int {\n return Math.max(a, b, c)\n}\n\n/**\n * Returns the greater of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic actual inline fun maxOf(a: Long, b: Long, c: Long): Long {\n return maxOf(a, maxOf(b, c))\n}\n\n/**\n * Returns the greater of three values.\n * \n * If any value is `NaN`, returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Float, b: Float, c: Float): Float {\n return Math.max(a, b, c)\n}\n\n/**\n * Returns the greater of three values.\n * \n * If any value is `NaN`, returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun maxOf(a: Double, b: Double, c: Double): Double {\n return Math.max(a, b, c)\n}\n\n/**\n * Returns the greater of the given values.\n * \n * If there are multiple equal maximal values, returns the first of them.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun > maxOf(a: T, vararg other: T): T {\n var max = a\n for (e in other) max = maxOf(max, e)\n return max\n}\n\n/**\n * Returns the greater of the given values.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun maxOf(a: Byte, vararg other: Byte): Byte {\n var max = a\n for (e in other) max = maxOf(max, e)\n return max\n}\n\n/**\n * Returns the greater of the given values.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun maxOf(a: Short, vararg other: Short): Short {\n var max = a\n for (e in other) max = maxOf(max, e)\n return max\n}\n\n/**\n * Returns the greater of the given values.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun maxOf(a: Int, vararg other: Int): Int {\n var max = a\n for (e in other) max = maxOf(max, e)\n return max\n}\n\n/**\n * Returns the greater of the given values.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun maxOf(a: Long, vararg other: Long): Long {\n var max = a\n for (e in other) max = maxOf(max, e)\n return max\n}\n\n/**\n * Returns the greater of the given values.\n * \n * If any value is `NaN`, returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun maxOf(a: Float, vararg other: Float): Float {\n var max = a\n for (e in other) max = maxOf(max, e)\n return max\n}\n\n/**\n * Returns the greater of the given values.\n * \n * If any value is `NaN`, returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun maxOf(a: Double, vararg other: Double): Double {\n var max = a\n for (e in other) max = maxOf(max, e)\n return max\n}\n\n/**\n * Returns the smaller of two values.\n * \n * If values are equal, returns the first one.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun > minOf(a: T, b: T): T {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Byte, b: Byte): Byte {\n return Math.min(a.toInt(), b.toInt()).unsafeCast()\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Short, b: Short): Short {\n return Math.min(a.toInt(), b.toInt()).unsafeCast()\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Int, b: Int): Int {\n return Math.min(a, b)\n}\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.1\")\n@Suppress(\"DEPRECATION_ERROR\", \"NOTHING_TO_INLINE\")\npublic actual inline fun minOf(a: Long, b: Long): Long {\n return if (a <= b) a else b\n}\n\n/**\n * Returns the smaller of two values.\n * \n * If either value is `NaN`, returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Float, b: Float): Float {\n return Math.min(a, b)\n}\n\n/**\n * Returns the smaller of two values.\n * \n * If either value is `NaN`, returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Double, b: Double): Double {\n return Math.min(a, b)\n}\n\n/**\n * Returns the smaller of three values.\n * \n * If there are multiple equal minimal values, returns the first of them.\n */\n@SinceKotlin(\"1.1\")\npublic actual fun > minOf(a: T, b: T, c: T): T {\n return minOf(a, minOf(b, c))\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Byte, b: Byte, c: Byte): Byte {\n return Math.min(a.toInt(), b.toInt(), c.toInt()).unsafeCast()\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Short, b: Short, c: Short): Short {\n return Math.min(a.toInt(), b.toInt(), c.toInt()).unsafeCast()\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Int, b: Int, c: Int): Int {\n return Math.min(a, b, c)\n}\n\n/**\n * Returns the smaller of three values.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic actual inline fun minOf(a: Long, b: Long, c: Long): Long {\n return minOf(a, minOf(b, c))\n}\n\n/**\n * Returns the smaller of three values.\n * \n * If any value is `NaN`, returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Float, b: Float, c: Float): Float {\n return Math.min(a, b, c)\n}\n\n/**\n * Returns the smaller of three values.\n * \n * If any value is `NaN`, returns `NaN`.\n */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\n@Suppress(\"DEPRECATION_ERROR\")\npublic actual inline fun minOf(a: Double, b: Double, c: Double): Double {\n return Math.min(a, b, c)\n}\n\n/**\n * Returns the smaller of the given values.\n * \n * If there are multiple equal minimal values, returns the first of them.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun > minOf(a: T, vararg other: T): T {\n var min = a\n for (e in other) min = minOf(min, e)\n return min\n}\n\n/**\n * Returns the smaller of the given values.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun minOf(a: Byte, vararg other: Byte): Byte {\n var min = a\n for (e in other) min = minOf(min, e)\n return min\n}\n\n/**\n * Returns the smaller of the given values.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun minOf(a: Short, vararg other: Short): Short {\n var min = a\n for (e in other) min = minOf(min, e)\n return min\n}\n\n/**\n * Returns the smaller of the given values.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun minOf(a: Int, vararg other: Int): Int {\n var min = a\n for (e in other) min = minOf(min, e)\n return min\n}\n\n/**\n * Returns the smaller of the given values.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun minOf(a: Long, vararg other: Long): Long {\n var min = a\n for (e in other) min = minOf(min, e)\n return min\n}\n\n/**\n * Returns the smaller of the given values.\n * \n * If any value is `NaN`, returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun minOf(a: Float, vararg other: Float): Float {\n var min = a\n for (e in other) min = minOf(min, e)\n return min\n}\n\n/**\n * Returns the smaller of the given values.\n * \n * If any value is `NaN`, returns `NaN`.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun minOf(a: Double, vararg other: Double): Double {\n var min = a\n for (e in other) min = minOf(min, e)\n return min\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.text\n\nimport kotlin.js.RegExp\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeIndexOf(ch: Char, fromIndex: Int): Int = nativeIndexOf(ch.toString(), fromIndex)\n\n@kotlin.internal.InlineOnly\ninternal actual inline fun String.nativeLastIndexOf(ch: Char, fromIndex: Int): Int = nativeLastIndexOf(ch.toString(), fromIndex)\n\n/**\n * Returns `true` if this string starts with the specified prefix.\n */\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.startsWith(prefix: String, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase)\n return nativeStartsWith(prefix, 0)\n else\n return regionMatches(0, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if a substring of this string starting at the specified offset [startIndex] starts with the specified prefix.\n */\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.startsWith(prefix: String, startIndex: Int, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase)\n return nativeStartsWith(prefix, startIndex)\n else\n return regionMatches(startIndex, prefix, 0, prefix.length, ignoreCase)\n}\n\n/**\n * Returns `true` if this string ends with the specified suffix.\n */\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.endsWith(suffix: String, ignoreCase: Boolean = false): Boolean {\n if (!ignoreCase)\n return nativeEndsWith(suffix)\n else\n return regionMatches(length - suffix.length, suffix, 0, suffix.length, ignoreCase)\n}\n\n\npublic fun String.matches(regex: String): Boolean {\n val result = this.match(regex)\n return result != null && result.size != 0\n}\n\npublic actual fun CharSequence.isBlank(): Boolean = length == 0 || (if (this is String) this else this.toString()).matches(\"^[\\\\s\\\\xA0]+$\")\n\n@OptIn(ExperimentalStdlibApi::class)\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String?.equals(other: String?, ignoreCase: Boolean = false): Boolean =\n if (this == null)\n other == null\n else if (!ignoreCase)\n this == other\n else\n other != null && this.lowercase() == other.lowercase()\n\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun CharSequence.regionMatches(thisOffset: Int, other: CharSequence, otherOffset: Int, length: Int, ignoreCase: Boolean = false): Boolean =\n regionMatchesImpl(thisOffset, other, otherOffset, length, ignoreCase)\n\n\n/**\n * Returns a copy of this string having its first letter titlecased using the rules of the default locale,\n * or the original string if it's empty or already starts with a title case letter.\n *\n * The title case of a character is usually the same as its upper case with several exceptions.\n * The particular list of characters with the special title case form depends on the underlying platform.\n *\n * @sample samples.text.Strings.capitalize\n */\npublic actual fun String.capitalize(): String {\n return if (isNotEmpty()) substring(0, 1).toUpperCase() + substring(1) else this\n}\n\n/**\n * Returns a copy of this string having its first letter lowercased using the rules of the default locale,\n * or the original string if it's empty or already starts with a lower case letter.\n *\n * @sample samples.text.Strings.decapitalize\n */\npublic actual fun String.decapitalize(): String {\n return if (isNotEmpty()) substring(0, 1).toLowerCase() + substring(1) else this\n}\n\n/**\n * Returns a string containing this char sequence repeated [n] times.\n * @throws [IllegalArgumentException] when n < 0.\n */\npublic actual fun CharSequence.repeat(n: Int): String {\n require(n >= 0) { \"Count 'n' must be non-negative, but was $n.\" }\n return when (n) {\n 0 -> \"\"\n 1 -> this.toString()\n else -> {\n var result = \"\"\n if (!isEmpty()) {\n var s = this.toString()\n var count = n\n while (true) {\n if ((count and 1) == 1) {\n result += s\n }\n count = count ushr 1\n if (count == 0) {\n break\n }\n s += s\n }\n }\n return result\n }\n }\n}\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.replace(oldValue: String, newValue: String, ignoreCase: Boolean = false): String =\n nativeReplace(RegExp(Regex.escape(oldValue), if (ignoreCase) \"gi\" else \"g\"), Regex.escapeReplacement(newValue))\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.replace(oldChar: Char, newChar: Char, ignoreCase: Boolean = false): String =\n nativeReplace(RegExp(Regex.escape(oldChar.toString()), if (ignoreCase) \"gi\" else \"g\"), newChar.toString())\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.replaceFirst(oldValue: String, newValue: String, ignoreCase: Boolean = false): String =\n nativeReplace(RegExp(Regex.escape(oldValue), if (ignoreCase) \"i\" else \"\"), Regex.escapeReplacement(newValue))\n\n@Suppress(\"ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS\")\npublic actual fun String.replaceFirst(oldChar: Char, newChar: Char, ignoreCase: Boolean = false): String =\n nativeReplace(RegExp(Regex.escape(oldChar.toString()), if (ignoreCase) \"i\" else \"\"), newChar.toString())\n","/*\n * Copyright 2010-2019 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.text\n\n/** Returns the negative [size] if [throwOnMalformed] is false, throws [CharacterCodingException] otherwise. */\n@OptIn(ExperimentalStdlibApi::class)\nprivate fun malformed(size: Int, index: Int, throwOnMalformed: Boolean): Int {\n if (throwOnMalformed) throw CharacterCodingException(\"Malformed sequence starting at ${index - 1}\")\n return -size\n}\n\n/**\n * Returns code point corresponding to UTF-16 surrogate pair,\n * where the first of the pair is the [high] and the second is in the [string] at the [index].\n * Returns zero if the pair is malformed and [throwOnMalformed] is false.\n *\n * @throws CharacterCodingException if the pair is malformed and [throwOnMalformed] is true.\n */\nprivate fun codePointFromSurrogate(string: String, high: Int, index: Int, endIndex: Int, throwOnMalformed: Boolean): Int {\n if (high !in 0xD800..0xDBFF || index >= endIndex) {\n return malformed(0, index, throwOnMalformed)\n }\n val low = string[index].toInt()\n if (low !in 0xDC00..0xDFFF) {\n return malformed(0, index, throwOnMalformed)\n }\n return 0x10000 + ((high and 0x3FF) shl 10) or (low and 0x3FF)\n}\n\n/**\n * Returns code point corresponding to UTF-8 sequence of two bytes,\n * where the first byte of the sequence is the [byte1] and the second byte is in the [bytes] array at the [index].\n * Returns zero if the sequence is malformed and [throwOnMalformed] is false.\n *\n * @throws CharacterCodingException if the sequence of two bytes is malformed and [throwOnMalformed] is true.\n */\nprivate fun codePointFrom2(bytes: ByteArray, byte1: Int, index: Int, endIndex: Int, throwOnMalformed: Boolean): Int {\n if (byte1 and 0x1E == 0 || index >= endIndex) {\n return malformed(0, index, throwOnMalformed)\n }\n val byte2 = bytes[index].toInt()\n if (byte2 and 0xC0 != 0x80) {\n return malformed(0, index, throwOnMalformed)\n }\n return (byte1 shl 6) xor byte2 xor 0xF80\n}\n\n/**\n * Returns code point corresponding to UTF-8 sequence of three bytes,\n * where the first byte of the sequence is the [byte1] and the others are in the [bytes] array starting from the [index].\n * Returns a non-positive value indicating number of bytes from [bytes] included in malformed sequence\n * if the sequence is malformed and [throwOnMalformed] is false.\n *\n * @throws CharacterCodingException if the sequence of three bytes is malformed and [throwOnMalformed] is true.\n */\nprivate fun codePointFrom3(bytes: ByteArray, byte1: Int, index: Int, endIndex: Int, throwOnMalformed: Boolean): Int {\n if (index >= endIndex) {\n return malformed(0, index, throwOnMalformed)\n }\n\n val byte2 = bytes[index].toInt()\n if (byte1 and 0xF == 0) {\n if (byte2 and 0xE0 != 0xA0) {\n // Non-shortest form\n return malformed(0, index, throwOnMalformed)\n }\n } else if (byte1 and 0xF == 0xD) {\n if (byte2 and 0xE0 != 0x80) {\n // Surrogate code point\n return malformed(0, index, throwOnMalformed)\n }\n } else if (byte2 and 0xC0 != 0x80) {\n return malformed(0, index, throwOnMalformed)\n }\n\n if (index + 1 == endIndex) {\n return malformed(1, index, throwOnMalformed)\n }\n val byte3 = bytes[index + 1].toInt()\n if (byte3 and 0xC0 != 0x80) {\n return malformed(1, index, throwOnMalformed)\n }\n\n return (byte1 shl 12) xor (byte2 shl 6) xor byte3 xor -0x1E080\n}\n\n/**\n * Returns code point corresponding to UTF-8 sequence of four bytes,\n * where the first byte of the sequence is the [byte1] and the others are in the [bytes] array starting from the [index].\n * Returns a non-positive value indicating number of bytes from [bytes] included in malformed sequence\n * if the sequence is malformed and [throwOnMalformed] is false.\n *\n * @throws CharacterCodingException if the sequence of four bytes is malformed and [throwOnMalformed] is true.\n */\nprivate fun codePointFrom4(bytes: ByteArray, byte1: Int, index: Int, endIndex: Int, throwOnMalformed: Boolean): Int {\n if (index >= endIndex) {\n malformed(0, index, throwOnMalformed)\n }\n\n val byte2 = bytes[index].toInt()\n if (byte1 and 0xF == 0x0) {\n if (byte2 and 0xF0 <= 0x80) {\n // Non-shortest form\n return malformed(0, index, throwOnMalformed)\n }\n } else if (byte1 and 0xF == 0x4) {\n if (byte2 and 0xF0 != 0x80) {\n // Out of Unicode code points domain (larger than U+10FFFF)\n return malformed(0, index, throwOnMalformed)\n }\n } else if (byte1 and 0xF > 0x4) {\n return malformed(0, index, throwOnMalformed)\n } else if (byte2 and 0xC0 != 0x80) {\n return malformed(0, index, throwOnMalformed)\n }\n\n if (index + 1 == endIndex) {\n return malformed(1, index, throwOnMalformed)\n }\n val byte3 = bytes[index + 1].toInt()\n if (byte3 and 0xC0 != 0x80) {\n return malformed(1, index, throwOnMalformed)\n }\n\n if (index + 2 == endIndex) {\n return malformed(2, index, throwOnMalformed)\n }\n val byte4 = bytes[index + 2].toInt()\n if (byte4 and 0xC0 != 0x80) {\n return malformed(2, index, throwOnMalformed)\n }\n return (byte1 shl 18) xor (byte2 shl 12) xor (byte3 shl 6) xor byte4 xor 0x381F80\n}\n\n/**\n * Maximum number of bytes needed to encode a single char.\n *\n * Code points in `0..0x7F` are encoded in a single byte.\n * Code points in `0x80..0x7FF` are encoded in two bytes.\n * Code points in `0x800..0xD7FF` or in `0xE000..0xFFFF` are encoded in three bytes.\n * Surrogate code points in `0xD800..0xDFFF` are not Unicode scalar values, therefore aren't encoded.\n * Code points in `0x10000..0x10FFFF` are represented by a pair of surrogate `Char`s and are encoded in four bytes.\n */\nprivate const val MAX_BYTES_PER_CHAR = 3\n\n/**\n * The byte sequence a malformed UTF-16 char sequence is replaced by.\n */\nprivate val REPLACEMENT_BYTE_SEQUENCE: ByteArray = byteArrayOf(0xEF.toByte(), 0xBF.toByte(), 0xBD.toByte())\n\n/**\n * Encodes the [string] using UTF-8 and returns the resulting [ByteArray].\n *\n * @param string the string to encode.\n * @param startIndex the start offset (inclusive) of the substring to encode.\n * @param endIndex the end offset (exclusive) of the substring to encode.\n * @param throwOnMalformed whether to throw on malformed char sequence or replace by the [REPLACEMENT_BYTE_SEQUENCE].\n *\n * @throws CharacterCodingException if the char sequence is malformed and [throwOnMalformed] is true.\n */\ninternal fun encodeUtf8(string: String, startIndex: Int, endIndex: Int, throwOnMalformed: Boolean): ByteArray {\n require(startIndex >= 0 && endIndex <= string.length && startIndex <= endIndex)\n\n val bytes = ByteArray((endIndex - startIndex) * MAX_BYTES_PER_CHAR)\n var byteIndex = 0\n var charIndex = startIndex\n\n while (charIndex < endIndex) {\n val code = string[charIndex++].toInt()\n when {\n code < 0x80 ->\n bytes[byteIndex++] = code.toByte()\n code < 0x800 -> {\n bytes[byteIndex++] = ((code shr 6) or 0xC0).toByte()\n bytes[byteIndex++] = ((code and 0x3F) or 0x80).toByte()\n }\n code < 0xD800 || code >= 0xE000 -> {\n bytes[byteIndex++] = ((code shr 12) or 0xE0).toByte()\n bytes[byteIndex++] = (((code shr 6) and 0x3F) or 0x80).toByte()\n bytes[byteIndex++] = ((code and 0x3F) or 0x80).toByte()\n }\n else -> { // Surrogate char value\n val codePoint = codePointFromSurrogate(string, code, charIndex, endIndex, throwOnMalformed)\n if (codePoint <= 0) {\n bytes[byteIndex++] = REPLACEMENT_BYTE_SEQUENCE[0]\n bytes[byteIndex++] = REPLACEMENT_BYTE_SEQUENCE[1]\n bytes[byteIndex++] = REPLACEMENT_BYTE_SEQUENCE[2]\n } else {\n bytes[byteIndex++] = ((codePoint shr 18) or 0xF0).toByte()\n bytes[byteIndex++] = (((codePoint shr 12) and 0x3F) or 0x80).toByte()\n bytes[byteIndex++] = (((codePoint shr 6) and 0x3F) or 0x80).toByte()\n bytes[byteIndex++] = ((codePoint and 0x3F) or 0x80).toByte()\n charIndex++\n }\n }\n }\n }\n\n return if (bytes.size == byteIndex) bytes else bytes.copyOf(byteIndex)\n}\n\n/**\n * The character a malformed UTF-8 byte sequence is replaced by.\n */\nprivate const val REPLACEMENT_CHAR = '\\uFFFD'\n\n/**\n * Decodes the UTF-8 [bytes] array and returns the resulting [String].\n *\n * @param bytes the byte array to decode.\n * @param startIndex the start offset (inclusive) of the array to be decoded.\n * @param endIndex the end offset (exclusive) of the array to be encoded.\n * @param throwOnMalformed whether to throw on malformed byte sequence or replace by the [REPLACEMENT_CHAR].\n *\n * @throws CharacterCodingException if the array is malformed UTF-8 byte sequence and [throwOnMalformed] is true.\n */\ninternal fun decodeUtf8(bytes: ByteArray, startIndex: Int, endIndex: Int, throwOnMalformed: Boolean): String {\n require(startIndex >= 0 && endIndex <= bytes.size && startIndex <= endIndex)\n\n var byteIndex = startIndex\n val stringBuilder = StringBuilder()\n\n while (byteIndex < endIndex) {\n val byte = bytes[byteIndex++].toInt()\n when {\n byte >= 0 ->\n stringBuilder.append(byte.toChar())\n byte shr 5 == -2 -> {\n val code = codePointFrom2(bytes, byte, byteIndex, endIndex, throwOnMalformed)\n if (code <= 0) {\n stringBuilder.append(REPLACEMENT_CHAR)\n byteIndex += -code\n } else {\n stringBuilder.append(code.toChar())\n byteIndex += 1\n }\n }\n byte shr 4 == -2 -> {\n val code = codePointFrom3(bytes, byte, byteIndex, endIndex, throwOnMalformed)\n if (code <= 0) {\n stringBuilder.append(REPLACEMENT_CHAR)\n byteIndex += -code\n } else {\n stringBuilder.append(code.toChar())\n byteIndex += 2\n }\n }\n byte shr 3 == -2 -> {\n val code = codePointFrom4(bytes, byte, byteIndex, endIndex, throwOnMalformed)\n if (code <= 0) {\n stringBuilder.append(REPLACEMENT_CHAR)\n byteIndex += -code\n } else {\n val high = (code - 0x10000) shr 10 or 0xD800\n val low = (code and 0x3FF) or 0xDC00\n stringBuilder.append(high.toChar())\n stringBuilder.append(low.toChar())\n byteIndex += 3\n }\n }\n else -> {\n malformed(0, byteIndex, throwOnMalformed)\n stringBuilder.append(REPLACEMENT_CHAR)\n }\n }\n }\n\n return stringBuilder.toString()\n}","/*\n * Copyright 2010-2019 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.time\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic actual enum class DurationUnit(internal val scale: Double) {\n /**\n * Time unit representing one nanosecond, which is 1/1000 of a microsecond.\n */\n NANOSECONDS(1e0),\n /**\n * Time unit representing one microsecond, which is 1/1000 of a millisecond.\n */\n MICROSECONDS(1e3),\n /**\n * Time unit representing one millisecond, which is 1/1000 of a second.\n */\n MILLISECONDS(1e6),\n /**\n * Time unit representing one second.\n */\n SECONDS(1e9),\n /**\n * Time unit representing one minute.\n */\n MINUTES(60e9),\n /**\n * Time unit representing one hour.\n */\n HOURS(3600e9),\n /**\n * Time unit representing one day, which is always equal to 24 hours.\n */\n DAYS(86400e9);\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal actual fun convertDurationUnit(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double {\n val sourceCompareTarget = sourceUnit.scale.compareTo(targetUnit.scale)\n return when {\n sourceCompareTarget > 0 -> value * (sourceUnit.scale / targetUnit.scale)\n sourceCompareTarget < 0 -> value / (targetUnit.scale / sourceUnit.scale)\n else -> value\n }\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.time\n\nimport org.w3c.performance.GlobalPerformance\nimport org.w3c.performance.Performance\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal actual object MonotonicTimeSource : TimeSource {\n\n private val actualSource: TimeSource = run {\n val isNode: Boolean = js(\"typeof process !== 'undefined' && process.versions && !!process.versions.node\")\n\n if (isNode)\n HrTimeSource(js(\"process\").unsafeCast())\n else\n js(\"self\").unsafeCast()?.performance?.let(::PerformanceTimeSource)\n ?: DateNowTimeSource\n\n }\n\n override fun markNow(): TimeMark = actualSource.markNow()\n}\n\ninternal external interface Process {\n fun hrtime(time: Array = definedExternally): Array\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal class HrTimeSource(val process: Process) : TimeSource {\n\n override fun markNow(): TimeMark = object : TimeMark() {\n val startedAt = process.hrtime()\n override fun elapsedNow(): Duration =\n process.hrtime(startedAt).let { (seconds, nanos) -> seconds.seconds + nanos.nanoseconds }\n }\n\n override fun toString(): String = \"TimeSource(process.hrtime())\"\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal class PerformanceTimeSource(val performance: Performance) : AbstractDoubleTimeSource(unit = DurationUnit.MILLISECONDS) {\n override fun read(): Double = performance.now()\n override fun toString(): String = \"TimeSource(self.performance.now())\"\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal object DateNowTimeSource : AbstractDoubleTimeSource(unit = DurationUnit.MILLISECONDS) {\n override fun read(): Double = kotlin.js.Date.now()\n override fun toString(): String = \"TimeSource(Date.now())\"\n}","/*\n * Copyright 2010-2019 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.time\n\nimport kotlin.js.json\nimport kotlin.math.*\n\ninternal actual fun formatToExactDecimals(value: Double, decimals: Int): String {\n val rounded = if (decimals == 0) {\n value\n } else {\n val pow = 10.0.pow(decimals)\n @Suppress(\"DEPRECATION\", \"DEPRECATION_ERROR\")\n kotlin.js.Math.round(abs(value) * pow) / pow * sign(value)\n }\n return rounded.asDynamic().toFixed(decimals).unsafeCast()\n}\n\ninternal actual fun formatUpToDecimals(value: Double, decimals: Int): String {\n return value.asDynamic().toLocaleString(\"en-us\", json(\"maximumFractionDigits\" to decimals)).unsafeCast()\n}\n\ninternal actual fun formatScientific(value: Double): String {\n return value.asDynamic().toExponential(2).unsafeCast()\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 kotlinx.dom\n\nimport org.w3c.dom.*\nimport kotlin.contracts.*\n\n/**\n * Creates a new element with the specified [name].\n *\n * The element is initialized with the specified [init] function.\n */\n@SinceKotlin(\"1.4\")\npublic fun Document.createElement(name: String, init: Element.() -> Unit): Element {\n contract { callsInPlace(init, InvocationKind.EXACTLY_ONCE) }\n return createElement(name).apply(init)\n}\n\n/**\n * Appends a newly created element with the specified [name] to this element.\n *\n * The element is initialized with the specified [init] function.\n */\n@SinceKotlin(\"1.4\")\npublic fun Element.appendElement(name: String, init: Element.() -> Unit): Element {\n contract { callsInPlace(init, InvocationKind.EXACTLY_ONCE) }\n return ownerDocument!!.createElement(name, init).also { appendChild(it) }\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 */\npackage kotlin.collections\n\nimport kotlin.js.JsName\n\n/**\n * Provides a skeletal implementation of the read-only [Collection] interface.\n *\n * @param E the type of elements contained in the collection. The collection is covariant in its element type.\n */\n@SinceKotlin(\"1.1\")\npublic abstract class AbstractCollection protected constructor() : Collection {\n abstract override val size: Int\n abstract override fun iterator(): Iterator\n\n override fun contains(element: @UnsafeVariance E): Boolean = any { it == element }\n\n override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean =\n elements.all { contains(it) } // use when js will support bound refs: elements.all(this::contains)\n\n override fun isEmpty(): Boolean = size == 0\n\n override fun toString(): String = joinToString(\", \", \"[\", \"]\") {\n if (it === this) \"(this Collection)\" else it.toString()\n }\n\n /**\n * Returns new array of type `Array` with the elements of this collection.\n */\n @JsName(\"toArray\")\n protected open fun toArray(): Array = copyToArrayImpl(this)\n\n /**\n * Fills the provided [array] or creates new array of the same type\n * and fills it with the elements of this collection.\n */\n protected open fun toArray(array: Array): Array = copyToArrayImpl(this, array)\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/*\n * Based on GWT AbstractList\n * Copyright 2007 Google Inc.\n*/\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the read-only [List] interface.\n *\n * This class is intended to help implementing read-only lists so it doesn't support concurrent modification tracking.\n *\n * @param E the type of elements contained in the list. The list is covariant in its element type.\n */\n@SinceKotlin(\"1.1\")\npublic abstract class AbstractList protected constructor() : AbstractCollection(), List {\n abstract override val size: Int\n abstract override fun get(index: Int): E\n\n override fun iterator(): Iterator = IteratorImpl()\n\n override fun indexOf(element: @UnsafeVariance E): Int = indexOfFirst { it == element }\n\n override fun lastIndexOf(element: @UnsafeVariance E): Int = indexOfLast { it == element }\n\n override fun listIterator(): ListIterator = ListIteratorImpl(0)\n\n override fun listIterator(index: Int): ListIterator = ListIteratorImpl(index)\n\n override fun subList(fromIndex: Int, toIndex: Int): List = SubList(this, fromIndex, toIndex)\n\n private class SubList(private val list: AbstractList, private val fromIndex: Int, toIndex: Int) : AbstractList(), RandomAccess {\n private var _size: Int = 0\n\n init {\n checkRangeIndexes(fromIndex, toIndex, list.size)\n this._size = toIndex - fromIndex\n }\n\n override fun get(index: Int): E {\n checkElementIndex(index, _size)\n\n return list[fromIndex + index]\n }\n\n override val size: Int get() = _size\n }\n\n /**\n * Compares this list with other list instance with the ordered structural equality.\n *\n * @return true, if [other] instance is a [List] of the same size, which contains the same elements in the same order.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is List<*>) return false\n\n return orderedEquals(this, other)\n }\n\n /**\n * Returns the hash code value for this list.\n */\n override fun hashCode(): Int = orderedHashCode(this)\n\n private open inner class IteratorImpl : Iterator {\n /** the index of the item that will be returned on the next call to [next]`()` */\n protected var index = 0\n\n override fun hasNext(): Boolean = index < size\n\n override fun next(): E {\n if (!hasNext()) throw NoSuchElementException()\n return get(index++)\n }\n }\n\n /**\n * Implementation of [ListIterator] for abstract lists.\n */\n private open inner class ListIteratorImpl(index: Int) : IteratorImpl(), ListIterator {\n\n init {\n checkPositionIndex(index, this@AbstractList.size)\n this.index = index\n }\n\n override fun hasPrevious(): Boolean = index > 0\n\n override fun nextIndex(): Int = index\n\n override fun previous(): E {\n if (!hasPrevious()) throw NoSuchElementException()\n return get(--index)\n }\n\n override fun previousIndex(): Int = index - 1\n }\n\n internal companion object {\n internal fun checkElementIndex(index: Int, size: Int) {\n if (index < 0 || index >= size) {\n throw IndexOutOfBoundsException(\"index: $index, size: $size\")\n }\n }\n\n internal fun checkPositionIndex(index: Int, size: Int) {\n if (index < 0 || index > size) {\n throw IndexOutOfBoundsException(\"index: $index, size: $size\")\n }\n }\n\n internal fun checkRangeIndexes(fromIndex: Int, toIndex: Int, size: Int) {\n if (fromIndex < 0 || toIndex > size) {\n throw IndexOutOfBoundsException(\"fromIndex: $fromIndex, toIndex: $toIndex, size: $size\")\n }\n if (fromIndex > toIndex) {\n throw IllegalArgumentException(\"fromIndex: $fromIndex > toIndex: $toIndex\")\n }\n }\n\n internal fun checkBoundsIndexes(startIndex: Int, endIndex: Int, size: Int) {\n if (startIndex < 0 || endIndex > size) {\n throw IndexOutOfBoundsException(\"startIndex: $startIndex, endIndex: $endIndex, size: $size\")\n }\n if (startIndex > endIndex) {\n throw IllegalArgumentException(\"startIndex: $startIndex > endIndex: $endIndex\")\n }\n }\n\n internal fun orderedHashCode(c: Collection<*>): Int {\n var hashCode = 1\n for (e in c) {\n hashCode = 31 * hashCode + (e?.hashCode() ?: 0)\n }\n return hashCode\n }\n\n internal fun orderedEquals(c: Collection<*>, other: Collection<*>): Boolean {\n if (c.size != other.size) return false\n\n val otherIterator = other.iterator()\n for (elem in c) {\n val elemOther = otherIterator.next()\n if (elem != elemOther) {\n return false\n }\n }\n return true\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\n/*\n * Based on GWT AbstractMap\n * Copyright 2007 Google Inc.\n */\n\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the read-only [Map] interface.\n *\n * The implementor is required to implement [entries] property, which should return read-only set of map entries.\n *\n * @param K the type of map keys. The map is invariant in its key type.\n * @param V the type of map values. The map is covariant in its value type.\n */\n@SinceKotlin(\"1.1\")\npublic abstract class AbstractMap protected constructor() : Map {\n\n override fun containsKey(key: K): Boolean {\n return implFindEntry(key) != null\n }\n\n override fun containsValue(value: @UnsafeVariance V): Boolean = entries.any { it.value == value }\n\n internal fun containsEntry(entry: Map.Entry<*, *>?): Boolean {\n // since entry comes from @UnsafeVariance parameters it can be virtually anything\n if (entry !is Map.Entry<*, *>) return false\n val key = entry.key\n val value = entry.value\n val ourValue = get(key)\n\n if (value != ourValue) {\n return false\n }\n\n // Perhaps it was null and we don't contain the key?\n if (ourValue == null && !containsKey(key)) {\n return false\n }\n\n return true\n }\n\n\n /**\n * Compares this map with other instance with the ordered structural equality.\n *\n * @return true, if [other] instance is a [Map] of the same size, all entries of which are contained in the [entries] set of this map.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is Map<*, *>) return false\n if (size != other.size) return false\n\n return other.entries.all { containsEntry(it) }\n }\n\n override operator fun get(key: K): V? = implFindEntry(key)?.value\n\n\n /**\n * Returns the hash code value for this map.\n *\n * It is the same as the hashCode of [entries] set.\n */\n override fun hashCode(): Int = entries.hashCode()\n\n override fun isEmpty(): Boolean = size == 0\n override val size: Int get() = entries.size\n\n /**\n * Returns a read-only [Set] of all keys in this map.\n *\n * Accessing this property first time creates a keys view from [entries].\n * All subsequent accesses just return the created instance.\n */\n override val keys: Set\n get() {\n if (_keys == null) {\n _keys = object : AbstractSet() {\n override operator fun contains(element: K): Boolean = containsKey(element)\n\n override operator fun iterator(): Iterator {\n val entryIterator = entries.iterator()\n return object : Iterator {\n override fun hasNext(): Boolean = entryIterator.hasNext()\n override fun next(): K = entryIterator.next().key\n }\n }\n\n override val size: Int get() = this@AbstractMap.size\n }\n }\n return _keys!!\n }\n\n @kotlin.jvm.Volatile\n private var _keys: Set? = null\n\n\n override fun toString(): String = entries.joinToString(\", \", \"{\", \"}\") { toString(it) }\n\n private fun toString(entry: Map.Entry): String = toString(entry.key) + \"=\" + toString(entry.value)\n\n private fun toString(o: Any?): String = if (o === this) \"(this Map)\" else o.toString()\n\n /**\n * Returns a read-only [Collection] of all values in this map.\n *\n * Accessing this property first time creates a values view from [entries].\n * All subsequent accesses just return the created instance.\n */\n override val values: Collection\n get() {\n if (_values == null) {\n _values = object : AbstractCollection() {\n override operator fun contains(element: @UnsafeVariance V): Boolean = containsValue(element)\n\n override operator fun iterator(): Iterator {\n val entryIterator = entries.iterator()\n return object : Iterator {\n override fun hasNext(): Boolean = entryIterator.hasNext()\n override fun next(): V = entryIterator.next().value\n }\n }\n\n override val size: Int get() = this@AbstractMap.size\n }\n }\n return _values!!\n }\n\n @kotlin.jvm.Volatile\n private var _values: Collection? = null\n\n private fun implFindEntry(key: K): Map.Entry? = entries.firstOrNull { it.key == key }\n\n internal companion object {\n\n internal fun entryHashCode(e: Map.Entry<*, *>): Int = with(e) { (key?.hashCode() ?: 0) xor (value?.hashCode() ?: 0) }\n internal fun entryToString(e: Map.Entry<*, *>): String = with(e) { \"$key=$value\" }\n internal fun entryEquals(e: Map.Entry<*, *>, other: Any?): Boolean {\n if (other !is Map.Entry<*, *>) return false\n return e.key == other.key && e.value == other.value\n }\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 */\npackage kotlin.collections\n\n/**\n * Provides a skeletal implementation of the read-only [Set] interface.\n *\n * This class is intended to help implementing read-only sets so it doesn't support concurrent modification tracking.\n *\n * @param E the type of elements contained in the set. The set is covariant in its element type.\n */\n@SinceKotlin(\"1.1\")\npublic abstract class AbstractSet protected constructor() : AbstractCollection(), Set {\n\n /**\n * Compares this set with other set instance with the unordered structural equality.\n *\n * @return true, if [other] instance is a [Set] of the same size, all elements of which are contained in this set.\n */\n override fun equals(other: Any?): Boolean {\n if (other === this) return true\n if (other !is Set<*>) return false\n return setEquals(this, other)\n }\n\n /**\n * Returns the hash code value for this set.\n */\n override fun hashCode(): Int = unorderedHashCode(this)\n\n internal companion object {\n internal fun unorderedHashCode(c: Collection<*>): Int {\n var hashCode = 0\n for (element in c) {\n hashCode += (element?.hashCode() ?: 0)\n }\n return hashCode\n }\n\n internal fun setEquals(c: Set<*>, other: Set<*>): Boolean {\n if (c.size != other.size) return false\n return c.containsAll(other)\n }\n }\n\n}","/*\n * Copyright 2010-2019 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 * Resizable-array implementation of the deque data structure.\n *\n * The name deque is short for \"double ended queue\" and is usually pronounced \"deck\".\n *\n * The collection provide methods for convenient access to the both ends.\n * It also implements [MutableList] interface and supports efficient get/set operations by index.\n */\n@SinceKotlin(\"1.4\")\n@WasExperimental(ExperimentalStdlibApi::class)\npublic class ArrayDeque : AbstractMutableList {\n private var head: Int = 0\n private var elementData: Array\n\n override var size: Int = 0\n private set\n\n /**\n * Constructs an empty deque with specified [initialCapacity], or throws [IllegalArgumentException] if [initialCapacity] is negative.\n */\n public constructor(initialCapacity: Int) {\n elementData = when {\n initialCapacity == 0 -> emptyElementData\n initialCapacity > 0 -> arrayOfNulls(initialCapacity)\n else -> throw IllegalArgumentException(\"Illegal Capacity: $initialCapacity\")\n }\n }\n\n /**\n * Constructs an empty deque.\n */\n public constructor() {\n elementData = emptyElementData\n }\n\n /**\n * Constructs a deque that contains the same elements as the specified [elements] collection in the same order.\n */\n public constructor(elements: Collection) {\n elementData = elements.toTypedArray()\n size = elementData.size\n if (elementData.isEmpty()) elementData = emptyElementData\n }\n\n /**\n * Ensures that the capacity of this deque is at least equal to the specified [minCapacity].\n *\n * If the current capacity is less than the [minCapacity], a new backing storage is allocated with greater capacity.\n * Otherwise, this method takes no action and simply returns.\n */\n private fun ensureCapacity(minCapacity: Int) {\n if (minCapacity < 0) throw IllegalStateException(\"Deque is too big.\") // overflow\n if (minCapacity <= elementData.size) return\n if (elementData === emptyElementData) {\n elementData = arrayOfNulls(minCapacity.coerceAtLeast(defaultMinCapacity))\n return\n }\n\n val newCapacity = newCapacity(elementData.size, minCapacity)\n copyElements(newCapacity)\n }\n\n /**\n * Creates a new array with the specified [newCapacity] size and copies elements in the [elementData] array to it.\n */\n private fun copyElements(newCapacity: Int) {\n val newElements = arrayOfNulls(newCapacity)\n elementData.copyInto(newElements, 0, head, elementData.size)\n elementData.copyInto(newElements, elementData.size - head, 0, head)\n head = 0\n elementData = newElements\n }\n\n @kotlin.internal.InlineOnly\n private inline fun internalGet(internalIndex: Int): E {\n @Suppress(\"UNCHECKED_CAST\")\n return elementData[internalIndex] as E\n }\n\n private fun positiveMod(index: Int): Int = if (index >= elementData.size) index - elementData.size else index\n\n private fun negativeMod(index: Int): Int = if (index < 0) index + elementData.size else index\n\n @kotlin.internal.InlineOnly\n private inline fun internalIndex(index: Int): Int = positiveMod(head + index)\n\n private fun incremented(index: Int): Int = if (index == elementData.lastIndex) 0 else index + 1\n\n private fun decremented(index: Int): Int = if (index == 0) elementData.lastIndex else index - 1\n\n override fun isEmpty(): Boolean = size == 0\n\n /**\n * Returns the first element, or throws [NoSuchElementException] if this deque is empty.\n */\n public fun first(): E = if (isEmpty()) throw NoSuchElementException(\"ArrayDeque is empty.\") else internalGet(head)\n\n /**\n * Returns the first element, or `null` if this deque is empty.\n */\n public fun firstOrNull(): E? = if (isEmpty()) null else internalGet(head)\n\n /**\n * Returns the last element, or throws [NoSuchElementException] if this deque is empty.\n */\n public fun last(): E = if (isEmpty()) throw NoSuchElementException(\"ArrayDeque is empty.\") else internalGet(internalIndex(lastIndex))\n\n /**\n * Returns the last element, or `null` if this deque is empty.\n */\n public fun lastOrNull(): E? = if (isEmpty()) null else internalGet(internalIndex(lastIndex))\n\n /**\n * Prepends the specified [element] to this deque.\n */\n public fun addFirst(element: E) {\n ensureCapacity(size + 1)\n\n head = decremented(head)\n elementData[head] = element\n size += 1\n }\n\n /**\n * Appends the specified [element] to this deque.\n */\n public fun addLast(element: E) {\n ensureCapacity(size + 1)\n\n elementData[internalIndex(size)] = element\n size += 1\n }\n\n /**\n * Removes the first element from this deque and returns that removed element, or throws [NoSuchElementException] if this deque is empty.\n */\n public fun removeFirst(): E {\n if (isEmpty()) throw NoSuchElementException(\"ArrayDeque is empty.\")\n\n val element = internalGet(head)\n elementData[head] = null\n head = incremented(head)\n size -= 1\n return element\n }\n\n /**\n * Removes the first element from this deque and returns that removed element, or returns `null` if this deque is empty.\n */\n public fun removeFirstOrNull(): E? = if (isEmpty()) null else removeFirst()\n\n /**\n * Removes the last element from this deque and returns that removed element, or throws [NoSuchElementException] if this deque is empty.\n */\n public fun removeLast(): E {\n if (isEmpty()) throw NoSuchElementException(\"ArrayDeque is empty.\")\n\n val internalLastIndex = internalIndex(lastIndex)\n val element = internalGet(internalLastIndex)\n elementData[internalLastIndex] = null\n size -= 1\n return element\n }\n\n /**\n * Removes the last element from this deque and returns that removed element, or returns `null` if this deque is empty.\n */\n public fun removeLastOrNull(): E? = if (isEmpty()) null else removeLast()\n\n // MutableList, MutableCollection\n public override fun add(element: E): Boolean {\n addLast(element)\n return true\n }\n\n public override fun add(index: Int, element: E) {\n AbstractList.checkPositionIndex(index, size)\n\n if (index == size) {\n addLast(element)\n return\n } else if (index == 0) {\n addFirst(element)\n return\n }\n\n ensureCapacity(size + 1)\n\n // Elements in circular array lay in 2 ways:\n // 1. `head` is less than `tail`: [#, #, e1, e2, e3, #]\n // 2. `head` is greater than `tail`: [e3, #, #, #, e1, e2]\n // where head is the index of the first element in the circular array,\n // and tail is the index following the last element.\n //\n // At this point the insertion index is not equal to head or tail.\n // Also the circular array can store at least one more element.\n //\n // Depending on where the given element must be inserted the preceding or the succeeding\n // elements will be shifted to make room for the element to be inserted.\n //\n // In case the preceding elements are shifted:\n // * if the insertion index is greater than the head (regardless of circular array form)\n // -> shift the preceding elements\n // * otherwise, the circular array has (2) form and the insertion index is less than tail\n // -> shift all elements in the back of the array\n // -> shift preceding elements in the front of the array\n // In case the succeeding elements are shifted:\n // * if the insertion index is less than the tail (regardless of circular array form)\n // -> shift the succeeding elements\n // * otherwise, the circular array has (2) form and the insertion index is greater than head\n // -> shift all elements in the front of the array\n // -> shift succeeding elements in the back of the array\n\n val internalIndex = internalIndex(index)\n\n if (index < (size + 1) shr 1) {\n // closer to the first element -> shift preceding elements\n val decrementedInternalIndex = decremented(internalIndex)\n val decrementedHead = decremented(head)\n\n if (decrementedInternalIndex >= head) {\n elementData[decrementedHead] = elementData[head] // head can be zero\n elementData.copyInto(elementData, head, head + 1, decrementedInternalIndex + 1)\n } else { // head > tail\n elementData.copyInto(elementData, head - 1, head, elementData.size) // head can't be zero\n elementData[elementData.size - 1] = elementData[0]\n elementData.copyInto(elementData, 0, 1, decrementedInternalIndex + 1)\n }\n\n elementData[decrementedInternalIndex] = element\n head = decrementedHead\n } else {\n // closer to the last element -> shift succeeding elements\n val tail = internalIndex(size)\n\n if (internalIndex < tail) {\n elementData.copyInto(elementData, internalIndex + 1, internalIndex, tail)\n } else { // head > tail\n elementData.copyInto(elementData, 1, 0, tail)\n elementData[0] = elementData[elementData.size - 1]\n elementData.copyInto(elementData, internalIndex + 1, internalIndex, elementData.size - 1)\n }\n\n elementData[internalIndex] = element\n }\n size += 1\n }\n\n private fun copyCollectionElements(internalIndex: Int, elements: Collection) {\n val iterator = elements.iterator()\n\n for (index in internalIndex until elementData.size) {\n if (!iterator.hasNext()) break\n elementData[index] = iterator.next()\n }\n for (index in 0 until head) {\n if (!iterator.hasNext()) break\n elementData[index] = iterator.next()\n }\n\n size += elements.size\n }\n\n public override fun addAll(elements: Collection): Boolean {\n if (elements.isEmpty()) return false\n ensureCapacity(this.size + elements.size)\n copyCollectionElements(internalIndex(size), elements)\n return true\n }\n\n public override fun addAll(index: Int, elements: Collection): Boolean {\n AbstractList.checkPositionIndex(index, size)\n\n if (elements.isEmpty()) {\n return false\n } else if (index == size) {\n return addAll(elements)\n }\n\n ensureCapacity(this.size + elements.size)\n\n val tail = internalIndex(size)\n val internalIndex = internalIndex(index)\n val elementsSize = elements.size\n\n if (index < (size + 1) shr 1) {\n // closer to the first element -> shift preceding elements\n\n var shiftedHead = head - elementsSize\n\n if (internalIndex >= head) {\n if (shiftedHead >= 0) {\n elementData.copyInto(elementData, shiftedHead, head, internalIndex)\n } else { // head < tail, insertion leads to head >= tail\n shiftedHead += elementData.size\n val elementsToShift = internalIndex - head\n val shiftToBack = elementData.size - shiftedHead\n\n if (shiftToBack >= elementsToShift) {\n elementData.copyInto(elementData, shiftedHead, head, internalIndex)\n } else {\n elementData.copyInto(elementData, shiftedHead, head, head + shiftToBack)\n elementData.copyInto(elementData, 0, head + shiftToBack, internalIndex)\n }\n }\n } else { // head > tail, internalIndex < tail\n elementData.copyInto(elementData, shiftedHead, head, elementData.size)\n if (elementsSize >= internalIndex) {\n elementData.copyInto(elementData, elementData.size - elementsSize, 0, internalIndex)\n } else {\n elementData.copyInto(elementData, elementData.size - elementsSize, 0, elementsSize)\n elementData.copyInto(elementData, 0, elementsSize, internalIndex)\n }\n }\n head = shiftedHead\n copyCollectionElements(negativeMod(internalIndex - elementsSize), elements)\n } else {\n // closer to the last element -> shift succeeding elements\n\n val shiftedInternalIndex = internalIndex + elementsSize\n\n if (internalIndex < tail) {\n if (tail + elementsSize <= elementData.size) {\n elementData.copyInto(elementData, shiftedInternalIndex, internalIndex, tail)\n } else { // head < tail, insertion leads to head >= tail\n if (shiftedInternalIndex >= elementData.size) {\n elementData.copyInto(elementData, shiftedInternalIndex - elementData.size, internalIndex, tail)\n } else {\n val shiftToFront = tail + elementsSize - elementData.size\n elementData.copyInto(elementData, 0, tail - shiftToFront, tail)\n elementData.copyInto(elementData, shiftedInternalIndex, internalIndex, tail - shiftToFront)\n }\n }\n } else { // head > tail, internalIndex > head\n elementData.copyInto(elementData, elementsSize, 0, tail)\n if (shiftedInternalIndex >= elementData.size) {\n elementData.copyInto(elementData, shiftedInternalIndex - elementData.size, internalIndex, elementData.size)\n } else {\n elementData.copyInto(elementData, 0, elementData.size - elementsSize, elementData.size)\n elementData.copyInto(elementData, shiftedInternalIndex, internalIndex, elementData.size - elementsSize)\n }\n }\n copyCollectionElements(internalIndex, elements)\n }\n\n return true\n }\n\n public override fun get(index: Int): E {\n AbstractList.checkElementIndex(index, size)\n\n return internalGet(internalIndex(index))\n }\n\n public override fun set(index: Int, element: E): E {\n AbstractList.checkElementIndex(index, size)\n\n val internalIndex = internalIndex(index)\n val oldElement = internalGet(internalIndex)\n elementData[internalIndex] = element\n\n return oldElement\n }\n\n public override fun contains(element: E): Boolean = indexOf(element) != -1\n\n public override fun indexOf(element: E): Int {\n val tail = internalIndex(size)\n\n if (head < tail) {\n for (index in head until tail) {\n if (element == elementData[index]) return index - head\n }\n } else if (head >= tail) {\n for (index in head until elementData.size) {\n if (element == elementData[index]) return index - head\n }\n for (index in 0 until tail) {\n if (element == elementData[index]) return index + elementData.size - head\n }\n }\n\n return -1\n }\n\n public override fun lastIndexOf(element: E): Int {\n val tail = internalIndex(size)\n\n if (head < tail) {\n for (index in tail - 1 downTo head) {\n if (element == elementData[index]) return index - head\n }\n } else if (head > tail) {\n for (index in tail - 1 downTo 0) {\n if (element == elementData[index]) return index + elementData.size - head\n }\n for (index in elementData.lastIndex downTo head) {\n if (element == elementData[index]) return index - head\n }\n }\n\n return -1\n }\n\n public override fun remove(element: E): Boolean {\n val index = indexOf(element)\n if (index == -1) return false\n removeAt(index)\n return true\n }\n\n public override fun removeAt(index: Int): E {\n AbstractList.checkElementIndex(index, size)\n\n if (index == lastIndex) {\n return removeLast()\n } else if (index == 0) {\n return removeFirst()\n }\n\n val internalIndex = internalIndex(index)\n val element = internalGet(internalIndex)\n\n if (index < size shr 1) {\n // closer to the first element -> shift preceding elements\n if (internalIndex >= head) {\n elementData.copyInto(elementData, head + 1, head, internalIndex)\n } else { // head > tail, internalIndex < head\n elementData.copyInto(elementData, 1, 0, internalIndex)\n elementData[0] = elementData[elementData.size - 1]\n elementData.copyInto(elementData, head + 1, head, elementData.size - 1)\n }\n\n elementData[head] = null\n head = incremented(head)\n } else {\n // closer to the last element -> shift succeeding elements\n val internalLastIndex = internalIndex(lastIndex)\n\n if (internalIndex <= internalLastIndex) {\n elementData.copyInto(elementData, internalIndex, internalIndex + 1, internalLastIndex + 1)\n } else { // head > tail, internalIndex > head\n elementData.copyInto(elementData, internalIndex, internalIndex + 1, elementData.size)\n elementData[elementData.size - 1] = elementData[0]\n elementData.copyInto(elementData, 0, 1, internalLastIndex + 1)\n }\n\n elementData[internalLastIndex] = null\n }\n size -= 1\n\n return element\n }\n\n public override fun removeAll(elements: Collection): Boolean = filterInPlace { !elements.contains(it) }\n\n public override fun retainAll(elements: Collection): Boolean = filterInPlace { elements.contains(it) }\n\n private inline fun filterInPlace(predicate: (E) -> Boolean): Boolean {\n if (this.isEmpty() || elementData.isEmpty())\n return false\n\n val tail = internalIndex(size)\n var newTail = head\n var modified = false\n\n if (head < tail) {\n for (index in head until tail) {\n val element = elementData[index]\n\n @Suppress(\"UNCHECKED_CAST\")\n if (predicate(element as E))\n elementData[newTail++] = element\n else\n modified = true\n }\n\n elementData.fill(null, newTail, tail)\n\n } else {\n for (index in head until elementData.size) {\n val element = elementData[index]\n elementData[index] = null\n\n @Suppress(\"UNCHECKED_CAST\")\n if (predicate(element as E))\n elementData[newTail++] = element\n else\n modified = true\n }\n\n newTail = positiveMod(newTail)\n\n for (index in 0 until tail) {\n val element = elementData[index]\n elementData[index] = null\n\n @Suppress(\"UNCHECKED_CAST\")\n if (predicate(element as E)) {\n elementData[newTail] = element\n newTail = incremented(newTail)\n } else {\n modified = true\n }\n }\n }\n if (modified)\n size = negativeMod(newTail - head)\n\n return modified\n }\n\n public override fun clear() {\n val tail = internalIndex(size)\n if (head < tail) {\n elementData.fill(null, head, tail)\n } else if (isNotEmpty()) {\n elementData.fill(null, head, elementData.size)\n elementData.fill(null, 0, tail)\n }\n head = 0\n size = 0\n }\n\n internal companion object {\n private val emptyElementData = emptyArray()\n private const val maxArraySize = Int.MAX_VALUE - 8\n private const val defaultMinCapacity = 10\n\n internal fun newCapacity(oldCapacity: Int, minCapacity: Int): Int {\n // overflow-conscious\n var newCapacity = oldCapacity + (oldCapacity shr 1)\n if (newCapacity - minCapacity < 0)\n newCapacity = minCapacity\n if (newCapacity - maxArraySize > 0)\n newCapacity = if (minCapacity > maxArraySize) Int.MAX_VALUE else maxArraySize\n return newCapacity\n }\n }\n\n // For testing only\n internal fun internalStructure(structure: (head: Int, elements: Array) -> Unit) {\n val tail = internalIndex(size)\n\n if (isEmpty()) {\n structure(head, emptyArray())\n return\n }\n\n val elements = arrayOfNulls(size)\n if (head < tail) {\n elementData.copyInto(elements, startIndex = head, endIndex = tail)\n structure(head, elements)\n } else {\n elementData.copyInto(elements, startIndex = head)\n elementData.copyInto(elements, elementData.size - head, startIndex = 0, endIndex = tail)\n structure(head - elementData.size, elements)\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\npackage kotlin.collections\n\n/**\n * Data class representing a value from a collection or sequence, along with its index in that collection or sequence.\n *\n * @property value the underlying value.\n * @property index the index of the value in the collection or sequence.\n */\npublic data class IndexedValue(public val index: Int, public val value: T)\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(\"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 Iterator.iterator(): Iterator = 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 Iterator.withIndex(): Iterator> = 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 Iterator.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(private val iterator: Iterator) : Iterator> {\n private var index = 0\n final override fun hasNext(): Boolean = iterator.hasNext()\n final override fun next(): IndexedValue = IndexedValue(checkIndexOverflow(index++), iterator.next())\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(\"MapsKt\")\n\npackage kotlin.collections\n\n/**\n * Returns the value for the given key, or the implicit default value for this map.\n * By default no implicit value is provided for maps and a [NoSuchElementException] is thrown.\n * To create a map with implicit default value use [withDefault] method.\n *\n * @throws NoSuchElementException when the map doesn't contain a value for the specified key and no implicit default was provided for that map.\n */\n@kotlin.jvm.JvmName(\"getOrImplicitDefaultNullable\")\n@PublishedApi\ninternal fun Map.getOrImplicitDefault(key: K): V {\n if (this is MapWithDefault)\n return this.getOrImplicitDefault(key)\n\n return getOrElseNullable(key, { throw NoSuchElementException(\"Key $key is missing in the map.\") })\n}\n\n/**\n * Returns a wrapper of this read-only map, having the implicit default value provided with the specified function [defaultValue].\n *\n * This implicit default value is used when the original map doesn't contain a value for the key specified\n * and a value is obtained with [Map.getValue] function, for example when properties are delegated to the map.\n *\n * When this map already has an implicit default value provided with a former call to [withDefault], it is being replaced by this call.\n */\npublic fun Map.withDefault(defaultValue: (key: K) -> V): Map =\n when (this) {\n is MapWithDefault -> this.map.withDefault(defaultValue)\n else -> MapWithDefaultImpl(this, defaultValue)\n }\n\n/**\n * Returns a wrapper of this mutable map, having the implicit default value provided with the specified function [defaultValue].\n *\n * This implicit default value is used when the original map doesn't contain a value for the key specified\n * and a value is obtained with [Map.getValue] function, for example when properties are delegated to the map.\n *\n * When this map already has an implicit default value provided with a former call to [withDefault], it is being replaced by this call.\n */\n@kotlin.jvm.JvmName(\"withDefaultMutable\")\npublic fun MutableMap.withDefault(defaultValue: (key: K) -> V): MutableMap =\n when (this) {\n is MutableMapWithDefault -> this.map.withDefault(defaultValue)\n else -> MutableMapWithDefaultImpl(this, defaultValue)\n }\n\n\nprivate interface MapWithDefault : Map {\n public val map: Map\n public fun getOrImplicitDefault(key: K): V\n}\n\nprivate interface MutableMapWithDefault : MutableMap, MapWithDefault {\n public override val map: MutableMap\n}\n\n\nprivate class MapWithDefaultImpl(public override val map: Map, private val default: (key: K) -> V) : MapWithDefault {\n override fun equals(other: Any?): Boolean = map.equals(other)\n override fun hashCode(): Int = map.hashCode()\n override fun toString(): String = map.toString()\n override val size: Int get() = map.size\n override fun isEmpty(): Boolean = map.isEmpty()\n override fun containsKey(key: K): Boolean = map.containsKey(key)\n override fun containsValue(value: @UnsafeVariance V): Boolean = map.containsValue(value)\n override fun get(key: K): V? = map.get(key)\n override val keys: Set get() = map.keys\n override val values: Collection get() = map.values\n override val entries: Set> get() = map.entries\n\n override fun getOrImplicitDefault(key: K): V = map.getOrElseNullable(key, { default(key) })\n}\n\nprivate class MutableMapWithDefaultImpl(public override val map: MutableMap, private val default: (key: K) -> V) : MutableMapWithDefault {\n override fun equals(other: Any?): Boolean = map.equals(other)\n override fun hashCode(): Int = map.hashCode()\n override fun toString(): String = map.toString()\n override val size: Int get() = map.size\n override fun isEmpty(): Boolean = map.isEmpty()\n override fun containsKey(key: K): Boolean = map.containsKey(key)\n override fun containsValue(value: @UnsafeVariance V): Boolean = map.containsValue(value)\n override fun get(key: K): V? = map.get(key)\n override val keys: MutableSet get() = map.keys\n override val values: MutableCollection get() = map.values\n override val entries: MutableSet> get() = map.entries\n\n override fun put(key: K, value: V): V? = map.put(key, value)\n override fun remove(key: K): V? = map.remove(key)\n override fun putAll(from: Map) = map.putAll(from)\n override fun clear() = map.clear()\n\n override fun getOrImplicitDefault(key: K): V = map.getOrElseNullable(key, { default(key) })\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\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.remove(element: T): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection).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`.\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.removeAll(elements: Collection): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection).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`.\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.retainAll(elements: Collection): Boolean =\n @Suppress(\"UNCHECKED_CAST\") (this as MutableCollection).retainAll(elements)\n\n/**\n * Adds the specified [element] to this mutable collection.\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun MutableCollection.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 MutableCollection.plusAssign(elements: Iterable) {\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 MutableCollection.plusAssign(elements: Array) {\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 MutableCollection.plusAssign(elements: Sequence) {\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 MutableCollection.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 MutableCollection.minusAssign(elements: Iterable) {\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 MutableCollection.minusAssign(elements: Array) {\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 MutableCollection.minusAssign(elements: Sequence) {\n this.removeAll(elements)\n}\n\n/**\n * Adds all elements of the given [elements] collection to this [MutableCollection].\n */\npublic fun MutableCollection.addAll(elements: Iterable): 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 MutableCollection.addAll(elements: Sequence): 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 MutableCollection.addAll(elements: Array): 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 MutableCollection.removeAll(elements: Iterable): 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 MutableCollection.removeAll(elements: Sequence): 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 MutableCollection.removeAll(elements: Array): 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 MutableCollection.retainAll(elements: Iterable): 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 MutableCollection.retainAll(elements: Array): 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 MutableCollection.retainAll(elements: Sequence): 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 MutableIterable.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 MutableIterable.retainAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, false)\n\nprivate fun MutableIterable.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 MutableList.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 MutableList.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 MutableList.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 MutableList.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 MutableList.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 MutableList.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 MutableList.retainAll(predicate: (T) -> Boolean): Boolean = filterInPlace(predicate, false)\n\nprivate fun MutableList.filterInPlace(predicate: (T) -> Boolean, predicateResultToRemove: Boolean): Boolean {\n if (this !is RandomAccess)\n return (this as MutableIterable).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","/*\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\nprivate open class ReversedListReadOnly(private val delegate: List) : AbstractList() {\n override val size: Int get() = delegate.size\n override fun get(index: Int): T = delegate[reverseElementIndex(index)]\n}\n\nprivate class ReversedList(private val delegate: MutableList) : AbstractMutableList() {\n override val size: Int get() = delegate.size\n override fun get(index: Int): T = delegate[reverseElementIndex(index)]\n\n override fun clear() = delegate.clear()\n override fun removeAt(index: Int): T = delegate.removeAt(reverseElementIndex(index))\n\n override fun set(index: Int, element: T): T = delegate.set(reverseElementIndex(index), element)\n override fun add(index: Int, element: T) {\n delegate.add(reversePositionIndex(index), element)\n }\n}\n\nprivate fun List<*>.reverseElementIndex(index: Int) =\n if (index in 0..lastIndex) lastIndex - index else throw IndexOutOfBoundsException(\"Element index $index must be in range [${0..lastIndex}].\")\n\nprivate fun List<*>.reversePositionIndex(index: Int) =\n if (index in 0..size) size - index else throw IndexOutOfBoundsException(\"Position index $index must be in range [${0..size}].\")\n\n\n/**\n * Returns a reversed read-only view of the original List.\n * All changes made in the original list will be reflected in the reversed one.\n * @sample samples.collections.ReversedViews.asReversedList\n */\npublic fun List.asReversed(): List = ReversedListReadOnly(this)\n\n/**\n * Returns a reversed mutable view of the original mutable List.\n * All changes made in the original list will be reflected in the reversed one and vice versa.\n * @sample samples.collections.ReversedViews.asReversedMutableList\n */\n@kotlin.jvm.JvmName(\"asReversedMutable\")\npublic fun MutableList.asReversed(): MutableList = ReversedList(this)\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(\"SequencesKt\")\n@file:OptIn(ExperimentalTypeInference::class)\n\npackage kotlin.sequences\n\nimport kotlin.coroutines.*\nimport kotlin.coroutines.intrinsics.*\nimport kotlin.experimental.ExperimentalTypeInference\n\n/**\n * Builds a [Sequence] lazily yielding values one by one.\n *\n * @see kotlin.sequences.generateSequence\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n * @sample samples.collections.Sequences.Building.buildFibonacciSequence\n */\n@SinceKotlin(\"1.3\")\npublic fun sequence(@BuilderInference block: suspend SequenceScope.() -> Unit): Sequence = Sequence { iterator(block) }\n\n@SinceKotlin(\"1.3\")\n@Deprecated(\"Use 'sequence { }' function instead.\", ReplaceWith(\"sequence(builderAction)\"), level = DeprecationLevel.ERROR)\n@kotlin.internal.InlineOnly\npublic inline fun buildSequence(@BuilderInference noinline builderAction: suspend SequenceScope.() -> Unit): Sequence = Sequence { iterator(builderAction) }\n\n/**\n * Builds an [Iterator] lazily yielding values one by one.\n *\n * @sample samples.collections.Sequences.Building.buildIterator\n * @sample samples.collections.Iterables.Building.iterable\n */\n@SinceKotlin(\"1.3\")\npublic fun iterator(@BuilderInference block: suspend SequenceScope.() -> Unit): Iterator {\n val iterator = SequenceBuilderIterator()\n iterator.nextStep = block.createCoroutineUnintercepted(receiver = iterator, completion = iterator)\n return iterator\n}\n\n@SinceKotlin(\"1.3\")\n@Deprecated(\"Use 'iterator { }' function instead.\", ReplaceWith(\"iterator(builderAction)\"), level = DeprecationLevel.ERROR)\n@kotlin.internal.InlineOnly\npublic inline fun buildIterator(@BuilderInference noinline builderAction: suspend SequenceScope.() -> Unit): Iterator = iterator(builderAction)\n\n/**\n * The scope for yielding values of a [Sequence] or an [Iterator], provides [yield] and [yieldAll] suspension functions.\n *\n * @see sequence\n * @see iterator\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n * @sample samples.collections.Sequences.Building.buildFibonacciSequence\n */\n@RestrictsSuspension\n@SinceKotlin(\"1.3\")\npublic abstract class SequenceScope internal constructor() {\n /**\n * Yields a value to the [Iterator] being built and suspends\n * until the next value is requested.\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n * @sample samples.collections.Sequences.Building.buildFibonacciSequence\n */\n public abstract suspend fun yield(value: T)\n\n /**\n * Yields all values from the `iterator` to the [Iterator] being built\n * and suspends until all these values are iterated and the next one is requested.\n *\n * The sequence of values returned by the given iterator can be potentially infinite.\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n */\n public abstract suspend fun yieldAll(iterator: Iterator)\n\n /**\n * Yields a collections of values to the [Iterator] being built\n * and suspends until all these values are iterated and the next one is requested.\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n */\n public suspend fun yieldAll(elements: Iterable) {\n if (elements is Collection && elements.isEmpty()) return\n return yieldAll(elements.iterator())\n }\n\n /**\n * Yields potentially infinite sequence of values to the [Iterator] being built\n * and suspends until all these values are iterated and the next one is requested.\n *\n * The sequence can be potentially infinite.\n *\n * @sample samples.collections.Sequences.Building.buildSequenceYieldAll\n */\n public suspend fun yieldAll(sequence: Sequence) = yieldAll(sequence.iterator())\n}\n\n@Deprecated(\"Use SequenceScope class instead.\", ReplaceWith(\"SequenceScope\"), level = DeprecationLevel.ERROR)\npublic typealias SequenceBuilder = SequenceScope\n\nprivate typealias State = Int\n\nprivate const val State_NotReady: State = 0\nprivate const val State_ManyNotReady: State = 1\nprivate const val State_ManyReady: State = 2\nprivate const val State_Ready: State = 3\nprivate const val State_Done: State = 4\nprivate const val State_Failed: State = 5\n\nprivate class SequenceBuilderIterator : SequenceScope(), Iterator, Continuation {\n private var state = State_NotReady\n private var nextValue: T? = null\n private var nextIterator: Iterator? = null\n var nextStep: Continuation? = null\n\n override fun hasNext(): Boolean {\n while (true) {\n when (state) {\n State_NotReady -> {}\n State_ManyNotReady ->\n if (nextIterator!!.hasNext()) {\n state = State_ManyReady\n return true\n } else {\n nextIterator = null\n }\n State_Done -> return false\n State_Ready, State_ManyReady -> return true\n else -> throw exceptionalState()\n }\n\n state = State_Failed\n val step = nextStep!!\n nextStep = null\n step.resume(Unit)\n }\n }\n\n override fun next(): T {\n when (state) {\n State_NotReady, State_ManyNotReady -> return nextNotReady()\n State_ManyReady -> {\n state = State_ManyNotReady\n return nextIterator!!.next()\n }\n State_Ready -> {\n state = State_NotReady\n @Suppress(\"UNCHECKED_CAST\")\n val result = nextValue as T\n nextValue = null\n return result\n }\n else -> throw exceptionalState()\n }\n }\n\n private fun nextNotReady(): T {\n if (!hasNext()) throw NoSuchElementException() else return next()\n }\n\n private fun exceptionalState(): Throwable = when (state) {\n State_Done -> NoSuchElementException()\n State_Failed -> IllegalStateException(\"Iterator has failed.\")\n else -> IllegalStateException(\"Unexpected state of the iterator: $state\")\n }\n\n\n override suspend fun yield(value: T) {\n nextValue = value\n state = State_Ready\n return suspendCoroutineUninterceptedOrReturn { c ->\n nextStep = c\n COROUTINE_SUSPENDED\n }\n }\n\n override suspend fun yieldAll(iterator: Iterator) {\n if (!iterator.hasNext()) return\n nextIterator = iterator\n state = State_ManyReady\n return suspendCoroutineUninterceptedOrReturn { c ->\n nextStep = c\n COROUTINE_SUSPENDED\n }\n }\n\n // Completion continuation implementation\n override fun resumeWith(result: Result) {\n result.getOrThrow() // just rethrow exception if it is there\n state = State_Done\n }\n\n override val context: CoroutineContext\n get() = EmptyCoroutineContext\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@file:kotlin.jvm.JvmName(\"ComparisonsKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin.comparisons\n\n/**\n * Compares two values using the specified functions [selectors] to calculate the result of the comparison.\n * The functions are called sequentially, receive the given values [a] and [b] and return [Comparable]\n * objects. As soon as the [Comparable] instances returned by a function for [a] and [b] values do not\n * compare as equal, the result of that comparison is returned.\n *\n * @sample samples.comparisons.Comparisons.compareValuesByWithSelectors\n */\npublic fun compareValuesBy(a: T, b: T, vararg selectors: (T) -> Comparable<*>?): Int {\n require(selectors.size > 0)\n return compareValuesByImpl(a, b, selectors)\n}\n\nprivate fun compareValuesByImpl(a: T, b: T, selectors: Array Comparable<*>?>): Int {\n for (fn in selectors) {\n val v1 = fn(a)\n val v2 = fn(b)\n val diff = compareValues(v1, v2)\n if (diff != 0) return diff\n }\n return 0\n}\n\n/**\n * Compares two values using the specified [selector] function to calculate the result of the comparison.\n * The function is applied to the given values [a] and [b] and return [Comparable] objects.\n * The result of comparison of these [Comparable] instances is returned.\n *\n * @sample samples.comparisons.Comparisons.compareValuesByWithSingleSelector\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareValuesBy(a: T, b: T, selector: (T) -> Comparable<*>?): Int {\n return compareValues(selector(a), selector(b))\n}\n\n/**\n * Compares two values using the specified [selector] function to calculate the result of the comparison.\n * The function is applied to the given values [a] and [b] and return objects of type K which are then being\n * compared with the given [comparator].\n *\n * @sample samples.comparisons.Comparisons.compareValuesByWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareValuesBy(a: T, b: T, comparator: Comparator, selector: (T) -> K): Int {\n return comparator.compare(selector(a), selector(b))\n}\n\n//// Not so useful without type inference for receiver of expression\n//// compareValuesWith(v1, v2, compareBy { it.prop1 } thenByDescending { it.prop2 })\n///**\n// * Compares two values using the specified [comparator].\n// */\n//@Suppress(\"NOTHING_TO_INLINE\")\n//public inline fun compareValuesWith(a: T, b: T, comparator: Comparator): Int = comparator.compare(a, b)\n//\n\n\n/**\n * Compares two nullable [Comparable] values. Null is considered less than any value.\n *\n * @sample samples.comparisons.Comparisons.compareValues\n */\npublic fun > compareValues(a: T?, b: T?): Int {\n if (a === b) return 0\n if (a == null) return -1\n if (b == null) return 1\n\n @Suppress(\"UNCHECKED_CAST\")\n return (a as Comparable).compareTo(b)\n}\n\n/**\n * Creates a comparator using the sequence of functions to calculate a result of comparison.\n * The functions are called sequentially, receive the given values `a` and `b` and return [Comparable]\n * objects. As soon as the [Comparable] instances returned by a function for `a` and `b` values do not\n * compare as equal, the result of that comparison is returned from the [Comparator].\n *\n * @sample samples.comparisons.Comparisons.compareByWithSelectors\n */\npublic fun compareBy(vararg selectors: (T) -> Comparable<*>?): Comparator {\n require(selectors.size > 0)\n return Comparator { a, b -> compareValuesByImpl(a, b, selectors) }\n}\n\n\n/**\n * Creates a comparator using the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.compareByWithSingleSelector\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareBy(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b -> compareValuesBy(a, b, selector) }\n\n/**\n * Creates a comparator using the [selector] function to transform values being compared and then applying\n * the specified [comparator] to compare transformed values.\n *\n * @sample samples.comparisons.Comparisons.compareByWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareBy(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b -> compareValuesBy(a, b, comparator, selector) }\n\n/**\n * Creates a descending comparator using the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.compareByDescendingWithSingleSelector\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareByDescending(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b -> compareValuesBy(b, a, selector) }\n\n/**\n * Creates a descending comparator using the [selector] function to transform values being compared and then applying\n * the specified [comparator] to compare transformed values.\n *\n * Note that an order of [comparator] is reversed by this wrapper.\n *\n * @sample samples.comparisons.Comparisons.compareByDescendingWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun compareByDescending(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b -> compareValuesBy(b, a, comparator, selector) }\n\n/**\n * Creates a comparator comparing values after the primary comparator defined them equal. It uses\n * the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.thenBy\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenBy(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenBy.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(a, b, selector)\n }\n\n/**\n * Creates a comparator comparing values after the primary comparator defined them equal. It uses\n * the [selector] function to transform values and then compares them with the given [comparator].\n *\n * @sample samples.comparisons.Comparisons.thenByWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenBy(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenBy.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(a, b, comparator, selector)\n }\n\n/**\n * Creates a descending comparator using the primary comparator and\n * the function to transform value to a [Comparable] instance for comparison.\n *\n * @sample samples.comparisons.Comparisons.thenByDescending\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenByDescending(crossinline selector: (T) -> Comparable<*>?): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenByDescending.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(b, a, selector)\n }\n\n/**\n * Creates a descending comparator comparing values after the primary comparator defined them equal. It uses\n * the [selector] function to transform values and then compares them with the given [comparator].\n *\n * @sample samples.comparisons.Comparisons.thenByDescendingWithComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenByDescending(comparator: Comparator, crossinline selector: (T) -> K): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenByDescending.compare(a, b)\n if (previousCompare != 0) previousCompare else compareValuesBy(b, a, comparator, selector)\n }\n\n\n/**\n * Creates a comparator using the primary comparator and function to calculate a result of comparison.\n *\n * @sample samples.comparisons.Comparisons.thenComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun Comparator.thenComparator(crossinline comparison: (a: T, b: T) -> Int): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenComparator.compare(a, b)\n if (previousCompare != 0) previousCompare else comparison(a, b)\n }\n\n/**\n * Combines this comparator and the given [comparator] such that the latter is applied only\n * when the former considered values equal.\n *\n * @sample samples.comparisons.Comparisons.then\n */\npublic infix fun Comparator.then(comparator: Comparator): Comparator =\n Comparator { a, b ->\n val previousCompare = this@then.compare(a, b)\n if (previousCompare != 0) previousCompare else comparator.compare(a, b)\n }\n\n/**\n * Combines this comparator and the given [comparator] such that the latter is applied only\n * when the former considered values equal.\n *\n * @sample samples.comparisons.Comparisons.thenDescending\n */\npublic infix fun Comparator.thenDescending(comparator: Comparator): Comparator =\n Comparator { a, b ->\n val previousCompare = this@thenDescending.compare(a, b)\n if (previousCompare != 0) previousCompare else comparator.compare(b, a)\n }\n\n// Not so useful without type inference for receiver of expression\n/**\n * Extends the given [comparator] of non-nullable values to a comparator of nullable values\n * considering `null` value less than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastWithComparator\n */\npublic fun nullsFirst(comparator: Comparator): Comparator =\n Comparator { a, b ->\n when {\n a === b -> 0\n a == null -> -1\n b == null -> 1\n else -> comparator.compare(a, b)\n }\n }\n\n/**\n * Provides a comparator of nullable [Comparable] values\n * considering `null` value less than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun > nullsFirst(): Comparator = nullsFirst(naturalOrder())\n\n/**\n * Extends the given [comparator] of non-nullable values to a comparator of nullable values\n * considering `null` value greater than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastWithComparator\n */\npublic fun nullsLast(comparator: Comparator): Comparator =\n Comparator { a, b ->\n when {\n a === b -> 0\n a == null -> 1\n b == null -> -1\n else -> comparator.compare(a, b)\n }\n }\n\n/**\n * Provides a comparator of nullable [Comparable] values\n * considering `null` value greater than any other value.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastComparator\n */\n@kotlin.internal.InlineOnly\npublic inline fun > nullsLast(): Comparator = nullsLast(naturalOrder())\n\n/**\n * Returns a comparator that compares [Comparable] objects in natural order.\n *\n * @sample samples.comparisons.Comparisons.naturalOrderComparator\n */\npublic fun > naturalOrder(): Comparator = @Suppress(\"UNCHECKED_CAST\") (NaturalOrderComparator as Comparator)\n\n/**\n * Returns a comparator that compares [Comparable] objects in reversed natural order.\n *\n * @sample samples.comparisons.Comparisons.nullsFirstLastWithComparator\n */\npublic fun > reverseOrder(): Comparator = @Suppress(\"UNCHECKED_CAST\") (ReverseOrderComparator as Comparator)\n\n/**\n * Returns a comparator that imposes the reverse ordering of this comparator.\n *\n * @sample samples.comparisons.Comparisons.reversed\n */\npublic fun Comparator.reversed(): Comparator = when (this) {\n is ReversedComparator -> this.comparator\n NaturalOrderComparator -> @Suppress(\"UNCHECKED_CAST\") (ReverseOrderComparator as Comparator)\n ReverseOrderComparator -> @Suppress(\"UNCHECKED_CAST\") (NaturalOrderComparator as Comparator)\n else -> ReversedComparator(this)\n}\n\n\nprivate class ReversedComparator(public val comparator: Comparator) : Comparator {\n override fun compare(a: T, b: T): Int = comparator.compare(b, a)\n @Suppress(\"VIRTUAL_MEMBER_HIDDEN\")\n fun reversed(): Comparator = comparator\n}\n\nprivate object NaturalOrderComparator : Comparator> {\n override fun compare(a: Comparable, b: Comparable): Int = a.compareTo(b)\n @Suppress(\"VIRTUAL_MEMBER_HIDDEN\")\n fun reversed(): Comparator> = ReverseOrderComparator\n}\n\nprivate object ReverseOrderComparator : Comparator> {\n override fun compare(a: Comparable, b: Comparable): Int = b.compareTo(a)\n @Suppress(\"VIRTUAL_MEMBER_HIDDEN\")\n fun reversed(): Comparator> = NaturalOrderComparator\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\npackage kotlin.coroutines\n\n/**\n * Marks coroutine context element that intercepts coroutine continuations.\n * The coroutines framework uses [ContinuationInterceptor.Key] to retrieve the interceptor and\n * intercepts all coroutine continuations with [interceptContinuation] invocations.\n *\n * [ContinuationInterceptor] behaves like a [polymorphic element][AbstractCoroutineContextKey], meaning that\n * its implementation delegates [get][CoroutineContext.Element.get] and [minusKey][CoroutineContext.Element.minusKey]\n * to [getPolymorphicElement] and [minusPolymorphicKey] respectively.\n * [ContinuationInterceptor] subtypes can be extracted from the coroutine context using either [ContinuationInterceptor.Key]\n * or subtype key if it extends [AbstractCoroutineContextKey].\n */\n@SinceKotlin(\"1.3\")\npublic interface ContinuationInterceptor : CoroutineContext.Element {\n /**\n * The key that defines *the* context interceptor.\n */\n companion object Key : CoroutineContext.Key\n\n /**\n * Returns continuation that wraps the original [continuation], thus intercepting all resumptions.\n * This function is invoked by coroutines framework when needed and the resulting continuations are\n * cached internally per each instance of the original [continuation].\n *\n * This function may simply return original [continuation] if it does not want to intercept this particular continuation.\n *\n * When the original [continuation] completes, coroutine framework invokes [releaseInterceptedContinuation]\n * with the resulting continuation if it was intercepted, that is if `interceptContinuation` had previously\n * returned a different continuation instance.\n */\n public fun interceptContinuation(continuation: Continuation): Continuation\n\n /**\n * Invoked for the continuation instance returned by [interceptContinuation] when the original\n * continuation completes and will not be used anymore. This function is invoked only if [interceptContinuation]\n * had returned a different continuation instance from the one it was invoked with.\n *\n * Default implementation does nothing.\n *\n * @param continuation Continuation instance returned by this interceptor's [interceptContinuation] invocation.\n */\n public fun releaseInterceptedContinuation(continuation: Continuation<*>) {\n /* do nothing by default */\n }\n\n public override operator fun get(key: CoroutineContext.Key): E? {\n // getPolymorphicKey specialized for ContinuationInterceptor key\n @OptIn(ExperimentalStdlibApi::class)\n if (key is AbstractCoroutineContextKey<*, *>) {\n @Suppress(\"UNCHECKED_CAST\")\n return if (key.isSubKey(this.key)) key.tryCast(this) as? E else null\n }\n @Suppress(\"UNCHECKED_CAST\")\n return if (ContinuationInterceptor === key) this as E else null\n }\n\n\n public override fun minusKey(key: CoroutineContext.Key<*>): CoroutineContext {\n // minusPolymorphicKey specialized for ContinuationInterceptor key\n @OptIn(ExperimentalStdlibApi::class)\n if (key is AbstractCoroutineContextKey<*, *>) {\n return if (key.isSubKey(this.key) && key.tryCast(this) != null) EmptyCoroutineContext else this\n }\n return if (ContinuationInterceptor === key) EmptyCoroutineContext else this\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\npackage kotlin.coroutines\n\n/**\n * Persistent context for the coroutine. It is an indexed set of [Element] instances.\n * An indexed set is a mix between a set and a map.\n * Every element in this set has a unique [Key].\n */\n@SinceKotlin(\"1.3\")\npublic interface CoroutineContext {\n /**\n * Returns the element with the given [key] from this context or `null`.\n */\n public operator fun get(key: Key): E?\n\n /**\n * Accumulates entries of this context starting with [initial] value and applying [operation]\n * from left to right to current accumulator value and each element of this context.\n */\n public fun fold(initial: R, operation: (R, Element) -> R): R\n\n /**\n * Returns a context containing elements from this context and elements from other [context].\n * The elements from this context with the same key as in the other one are dropped.\n */\n public operator fun plus(context: CoroutineContext): CoroutineContext =\n if (context === EmptyCoroutineContext) this else // fast path -- avoid lambda creation\n context.fold(this) { acc, element ->\n val removed = acc.minusKey(element.key)\n if (removed === EmptyCoroutineContext) element else {\n // make sure interceptor is always last in the context (and thus is fast to get when present)\n val interceptor = removed[ContinuationInterceptor]\n if (interceptor == null) CombinedContext(removed, element) else {\n val left = removed.minusKey(ContinuationInterceptor)\n if (left === EmptyCoroutineContext) CombinedContext(element, interceptor) else\n CombinedContext(CombinedContext(left, element), interceptor)\n }\n }\n }\n\n /**\n * Returns a context containing elements from this context, but without an element with\n * the specified [key].\n */\n public fun minusKey(key: Key<*>): CoroutineContext\n\n /**\n * Key for the elements of [CoroutineContext]. [E] is a type of element with this key.\n */\n public interface Key\n\n /**\n * An element of the [CoroutineContext]. An element of the coroutine context is a singleton context by itself.\n */\n public interface Element : CoroutineContext {\n /**\n * A key of this coroutine context element.\n */\n public val key: Key<*>\n\n public override operator fun get(key: Key): E? =\n @Suppress(\"UNCHECKED_CAST\")\n if (this.key == key) this as E else null\n\n public override fun fold(initial: R, operation: (R, Element) -> R): R =\n operation(initial, this)\n\n public override fun minusKey(key: Key<*>): CoroutineContext =\n if (this.key == key) EmptyCoroutineContext else this\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.coroutines.CoroutineContext.Element\nimport kotlin.coroutines.CoroutineContext.Key\n\n/**\n * Base class for [CoroutineContext.Element] implementations.\n */\n@SinceKotlin(\"1.3\")\npublic abstract class AbstractCoroutineContextElement(public override val key: Key<*>) : Element\n\n/**\n * Base class for [CoroutineContext.Key] associated with polymorphic [CoroutineContext.Element] implementation.\n * Polymorphic element implementation implies delegating its [get][Element.get] and [minusKey][Element.minusKey]\n * to [getPolymorphicElement] and [minusPolymorphicKey] respectively.\n *\n * Polymorphic elements can be extracted from the coroutine context using both element key and its supertype key.\n * Example of polymorphic elements:\n * ```\n * open class BaseElement : CoroutineContext.Element {\n * companion object Key : CoroutineContext.Key\n * override val key: CoroutineContext.Key<*> get() = Key\n * // It is important to use getPolymorphicKey and minusPolymorphicKey\n * override fun get(key: CoroutineContext.Key): E? = getPolymorphicElement(key)\n * override fun minusKey(key: CoroutineContext.Key<*>): CoroutineContext = minusPolymorphicKey(key)\n * }\n *\n * class DerivedElement : BaseElement() {\n * companion object Key : AbstractCoroutineContextKey(BaseElement, { it as? DerivedElement })\n * }\n * // Now it is possible to query both `BaseElement` and `DerivedElement`\n * someContext[BaseElement] // Returns BaseElement?, non-null both for BaseElement and DerivedElement instances\n * someContext[DerivedElement] // Returns DerivedElement?, non-null only for DerivedElement instance\n * ```\n * @param B base class of a polymorphic element\n * @param baseKey an instance of base key\n * @param E element type associated with the current key\n * @param safeCast a function that can safely cast abstract [CoroutineContext.Element] to the concrete [E] type\n * and return the element if it is a subtype of [E] or `null` otherwise.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic abstract class AbstractCoroutineContextKey(\n baseKey: Key,\n private val safeCast: (element: Element) -> E?\n) : Key {\n private val topmostKey: Key<*> = if (baseKey is AbstractCoroutineContextKey<*, *>) baseKey.topmostKey else baseKey\n\n internal fun tryCast(element: Element): E? = safeCast(element)\n internal fun isSubKey(key: Key<*>): Boolean = key === this || topmostKey === key\n}\n\n/**\n * Returns the current element if it is associated with the given [key] in a polymorphic manner or `null` otherwise.\n * This method returns non-null value if either [Element.key] is equal to the given [key] or if the [key] is associated\n * with [Element.key] via [AbstractCoroutineContextKey].\n * See [AbstractCoroutineContextKey] for the example of usage.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Element.getPolymorphicElement(key: Key): E? {\n if (key is AbstractCoroutineContextKey<*, *>) {\n @Suppress(\"UNCHECKED_CAST\")\n return if (key.isSubKey(this.key)) key.tryCast(this) as? E else null\n }\n @Suppress(\"UNCHECKED_CAST\")\n return if (this.key === key) this as E else null\n}\n\n/**\n * Returns empty coroutine context if the element is associated with the given [key] in a polymorphic manner\n * or `null` otherwise.\n * This method returns empty context if either [Element.key] is equal to the given [key] or if the [key] is associated\n * with [Element.key] via [AbstractCoroutineContextKey].\n * See [AbstractCoroutineContextKey] for the example of usage.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\npublic fun Element.minusPolymorphicKey(key: Key<*>): CoroutineContext {\n if (key is AbstractCoroutineContextKey<*, *>) {\n return if (key.isSubKey(this.key) && key.tryCast(this) != null) EmptyCoroutineContext else this\n }\n return if (this.key === key) EmptyCoroutineContext else this\n}\n\n/**\n * An empty coroutine context.\n */\n@SinceKotlin(\"1.3\")\npublic object EmptyCoroutineContext : CoroutineContext, Serializable {\n private const val serialVersionUID: Long = 0\n private fun readResolve(): Any = EmptyCoroutineContext\n\n public override fun get(key: Key): E? = null\n public override fun fold(initial: R, operation: (R, Element) -> R): R = initial\n public override fun plus(context: CoroutineContext): CoroutineContext = context\n public override fun minusKey(key: Key<*>): CoroutineContext = this\n public override fun hashCode(): Int = 0\n public override fun toString(): String = \"EmptyCoroutineContext\"\n}\n\n//--------------------- internal impl ---------------------\n\n// this class is not exposed, but is hidden inside implementations\n// this is a left-biased list, so that `plus` works naturally\n@SinceKotlin(\"1.3\")\ninternal class CombinedContext(\n private val left: CoroutineContext,\n private val element: Element\n) : CoroutineContext, Serializable {\n\n override fun get(key: Key): E? {\n var cur = this\n while (true) {\n cur.element[key]?.let { return it }\n val next = cur.left\n if (next is CombinedContext) {\n cur = next\n } else {\n return next[key]\n }\n }\n }\n\n public override fun fold(initial: R, operation: (R, Element) -> R): R =\n operation(left.fold(initial, operation), element)\n\n public override fun minusKey(key: Key<*>): CoroutineContext {\n element[key]?.let { return left }\n val newLeft = left.minusKey(key)\n return when {\n newLeft === left -> this\n newLeft === EmptyCoroutineContext -> element\n else -> CombinedContext(newLeft, element)\n }\n }\n\n private fun size(): Int {\n var cur = this\n var size = 2\n while (true) {\n cur = cur.left as? CombinedContext ?: return size\n size++\n }\n }\n\n private fun contains(element: Element): Boolean =\n get(element.key) == element\n\n private fun containsAll(context: CombinedContext): Boolean {\n var cur = context\n while (true) {\n if (!contains(cur.element)) return false\n val next = cur.left\n if (next is CombinedContext) {\n cur = next\n } else {\n return contains(next as Element)\n }\n }\n }\n\n override fun equals(other: Any?): Boolean =\n this === other || other is CombinedContext && other.size() == size() && other.containsAll(this)\n\n override fun hashCode(): Int = left.hashCode() + element.hashCode()\n\n override fun toString(): String =\n \"[\" + fold(\"\") { acc, element ->\n if (acc.isEmpty()) element.toString() else \"$acc, $element\"\n } + \"]\"\n\n private fun writeReplace(): Any {\n val n = size()\n val elements = arrayOfNulls(n)\n var index = 0\n fold(Unit) { _, element -> elements[index++] = element }\n check(index == n)\n @Suppress(\"UNCHECKED_CAST\")\n return Serialized(elements as Array)\n }\n\n private class Serialized(val elements: Array) : Serializable {\n companion object {\n private const val serialVersionUID: Long = 0L\n }\n\n private fun readResolve(): Any = elements.fold(EmptyCoroutineContext, CoroutineContext::plus)\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\n@file:kotlin.jvm.JvmName(\"IntrinsicsKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin.coroutines.intrinsics\n\nimport kotlin.contracts.*\nimport kotlin.coroutines.*\nimport kotlin.internal.InlineOnly\n\n/**\n * Obtains the current continuation instance inside suspend functions and either suspends\n * currently running coroutine or returns result immediately without suspension.\n *\n * If the [block] returns the special [COROUTINE_SUSPENDED] value, it means that suspend function did suspend the execution and will\n * not return any result immediately. In this case, the [Continuation] provided to the [block] shall be\n * resumed by invoking [Continuation.resumeWith] at some moment in the\n * future when the result becomes available to resume the computation.\n *\n * Otherwise, the return value of the [block] must have a type assignable to [T] and represents the result of this suspend function.\n * It means that the execution was not suspended and the [Continuation] provided to the [block] shall not be invoked.\n * As the result type of the [block] is declared as `Any?` and cannot be correctly type-checked,\n * its proper return type remains on the conscience of the suspend function's author.\n *\n * Invocation of [Continuation.resumeWith] resumes coroutine directly in the invoker's thread without going through the\n * [ContinuationInterceptor] that might be present in the coroutine's [CoroutineContext].\n * It is the invoker's responsibility to ensure that a proper invocation context is established.\n * [Continuation.intercepted] can be used to acquire the intercepted continuation.\n *\n * Note that it is not recommended to call either [Continuation.resume] nor [Continuation.resumeWithException] functions synchronously\n * in the same stackframe where suspension function is run. Use [suspendCoroutine] as a safer way to obtain current\n * continuation instance.\n */\n@SinceKotlin(\"1.3\")\n@InlineOnly\n@Suppress(\"UNUSED_PARAMETER\", \"RedundantSuspendModifier\")\npublic suspend inline fun suspendCoroutineUninterceptedOrReturn(crossinline block: (Continuation) -> Any?): T {\n contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }\n throw NotImplementedError(\"Implementation of suspendCoroutineUninterceptedOrReturn is intrinsic\")\n}\n\n/**\n * This value is used as a return value of [suspendCoroutineUninterceptedOrReturn] `block` argument to state that\n * the execution was suspended and will not return any result immediately.\n *\n * **Note: this value should not be used in general code.** Using it outside of the context of\n * `suspendCoroutineUninterceptedOrReturn` function return value (including, but not limited to,\n * storing this value in other properties, returning it from other functions, etc)\n * can lead to unspecified behavior of the code.\n */\n// It is implemented as property with getter to avoid ProGuard problem with multifile IntrinsicsKt class\n@SinceKotlin(\"1.3\")\npublic val COROUTINE_SUSPENDED: Any get() = CoroutineSingletons.COROUTINE_SUSPENDED\n\n// Using enum here ensures two important properties:\n// 1. It makes SafeContinuation serializable with all kinds of serialization frameworks (since all of them natively support enums)\n// 2. It improves debugging experience, since you clearly see toString() value of those objects and what package they come from\n@SinceKotlin(\"1.3\")\n@PublishedApi // This class is Published API via serialized representation of SafeContinuation, don't rename/move\ninternal enum class CoroutineSingletons { COROUTINE_SUSPENDED, UNDECIDED, RESUMED }\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.properties\n\nimport kotlin.reflect.KProperty\n\n/**\n * Implements the core logic of a property delegate for a read/write property that calls callback functions when changed.\n * @param initialValue the initial value of the property.\n */\npublic abstract class ObservableProperty(initialValue: V) : ReadWriteProperty {\n private var value = initialValue\n\n /**\n * The callback which is called before a change to the property value is attempted.\n * The value of the property hasn't been changed yet, when this callback is invoked.\n * If the callback returns `true` the value of the property is being set to the new value,\n * and if the callback returns `false` the new value is discarded and the property remains its old value.\n */\n protected open fun beforeChange(property: KProperty<*>, oldValue: V, newValue: V): Boolean = true\n\n /**\n * The callback which is called after the change of the property is made. The value of the property\n * has already been changed when this callback is invoked.\n */\n protected open fun afterChange(property: KProperty<*>, oldValue: V, newValue: V): Unit {}\n\n public override fun getValue(thisRef: Any?, property: KProperty<*>): V {\n return value\n }\n\n public override fun setValue(thisRef: Any?, property: KProperty<*>, value: V) {\n val oldValue = this.value\n if (!beforeChange(property, oldValue, value)) {\n return\n }\n this.value = value\n afterChange(property, oldValue, value)\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.random\n\nimport kotlin.math.nextDown\n\n/**\n * An abstract class that is implemented by random number generator algorithms.\n *\n * The companion object [Random.Default] is the default instance of [Random].\n *\n * To get a seeded instance of random generator use [Random] function.\n *\n * @sample samples.random.Randoms.defaultRandom\n */\n@SinceKotlin(\"1.3\")\npublic abstract class Random {\n\n /**\n * Gets the next random [bitCount] number of bits.\n *\n * Generates an `Int` whose lower [bitCount] bits are filled with random values and the remaining upper bits are zero.\n *\n * @param bitCount number of bits to generate, must be in range 0..32, otherwise the behavior is unspecified.\n *\n * @sample samples.random.Randoms.nextBits\n */\n public abstract fun nextBits(bitCount: Int): Int\n\n /**\n * Gets the next random `Int` from the random number generator.\n *\n * Generates an `Int` random value uniformly distributed between `Int.MIN_VALUE` and `Int.MAX_VALUE` (inclusive).\n *\n * @sample samples.random.Randoms.nextInt\n */\n public open fun nextInt(): Int = nextBits(32)\n\n /**\n * Gets the next random non-negative `Int` from the random number generator less than the specified [until] bound.\n *\n * Generates an `Int` random value uniformly distributed between `0` (inclusive) and the specified [until] bound (exclusive).\n *\n * @param until must be positive.\n *\n * @throws IllegalArgumentException if [until] is negative or zero.\n *\n * @sample samples.random.Randoms.nextIntFromUntil\n */\n public open fun nextInt(until: Int): Int = nextInt(0, until)\n\n /**\n * Gets the next random `Int` from the random number generator in the specified range.\n *\n * Generates an `Int` random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n *\n * @sample samples.random.Randoms.nextIntFromUntil\n */\n public open fun nextInt(from: Int, until: Int): Int {\n checkRangeBounds(from, until)\n val n = until - from\n if (n > 0 || n == Int.MIN_VALUE) {\n val rnd = if (n and -n == n) {\n val bitCount = fastLog2(n)\n nextBits(bitCount)\n } else {\n var v: Int\n do {\n val bits = nextInt().ushr(1)\n v = bits % n\n } while (bits - v + (n - 1) < 0)\n v\n }\n return from + rnd\n } else {\n while (true) {\n val rnd = nextInt()\n if (rnd in from until until) return rnd\n }\n }\n }\n\n /**\n * Gets the next random `Long` from the random number generator.\n *\n * Generates a `Long` random value uniformly distributed between `Long.MIN_VALUE` and `Long.MAX_VALUE` (inclusive).\n *\n * @sample samples.random.Randoms.nextLong\n */\n public open fun nextLong(): Long = nextInt().toLong().shl(32) + nextInt()\n\n /**\n * Gets the next random non-negative `Long` from the random number generator less than the specified [until] bound.\n *\n * Generates a `Long` random value uniformly distributed between `0` (inclusive) and the specified [until] bound (exclusive).\n *\n * @param until must be positive.\n *\n * @throws IllegalArgumentException if [until] is negative or zero.\n *\n * @sample samples.random.Randoms.nextLongFromUntil\n */\n public open fun nextLong(until: Long): Long = nextLong(0, until)\n\n /**\n * Gets the next random `Long` from the random number generator in the specified range.\n *\n * Generates a `Long` random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n *\n * @sample samples.random.Randoms.nextLongFromUntil\n */\n public open fun nextLong(from: Long, until: Long): Long {\n checkRangeBounds(from, until)\n val n = until - from\n if (n > 0) {\n val rnd: Long\n if (n and -n == n) {\n val nLow = n.toInt()\n val nHigh = (n ushr 32).toInt()\n rnd = when {\n nLow != 0 -> {\n val bitCount = fastLog2(nLow)\n // toUInt().toLong()\n nextBits(bitCount).toLong() and 0xFFFF_FFFF\n }\n nHigh == 1 ->\n // toUInt().toLong()\n nextInt().toLong() and 0xFFFF_FFFF\n else -> {\n val bitCount = fastLog2(nHigh)\n nextBits(bitCount).toLong().shl(32) + nextInt()\n }\n }\n } else {\n var v: Long\n do {\n val bits = nextLong().ushr(1)\n v = bits % n\n } while (bits - v + (n - 1) < 0)\n rnd = v\n }\n return from + rnd\n } else {\n while (true) {\n val rnd = nextLong()\n if (rnd in from until until) return rnd\n }\n }\n }\n\n /**\n * Gets the next random [Boolean] value.\n *\n * @sample samples.random.Randoms.nextBoolean\n */\n public open fun nextBoolean(): Boolean = nextBits(1) != 0\n\n /**\n * Gets the next random [Double] value uniformly distributed between 0 (inclusive) and 1 (exclusive).\n *\n * @sample samples.random.Randoms.nextDouble\n */\n public open fun nextDouble(): Double = doubleFromParts(nextBits(26), nextBits(27))\n\n /**\n * Gets the next random non-negative `Double` from the random number generator less than the specified [until] bound.\n *\n * Generates a `Double` random value uniformly distributed between 0 (inclusive) and [until] (exclusive).\n *\n * @throws IllegalArgumentException if [until] is negative or zero.\n *\n * @sample samples.random.Randoms.nextDoubleFromUntil\n */\n public open fun nextDouble(until: Double): Double = nextDouble(0.0, until)\n\n /**\n * Gets the next random `Double` from the random number generator in the specified range.\n *\n * Generates a `Double` random value uniformly distributed between the specified [from] (inclusive) and [until] (exclusive) bounds.\n *\n * [from] and [until] must be finite otherwise the behavior is unspecified.\n *\n * @throws IllegalArgumentException if [from] is greater than or equal to [until].\n *\n * @sample samples.random.Randoms.nextDoubleFromUntil\n */\n public open fun nextDouble(from: Double, until: Double): Double {\n checkRangeBounds(from, until)\n val size = until - from\n val r = if (size.isInfinite() && from.isFinite() && until.isFinite()) {\n val r1 = nextDouble() * (until / 2 - from / 2)\n from + r1 + r1\n } else {\n from + nextDouble() * size\n }\n return if (r >= until) until.nextDown() else r\n }\n\n /**\n * Gets the next random [Float] value uniformly distributed between 0 (inclusive) and 1 (exclusive).\n *\n * @sample samples.random.Randoms.nextFloat\n */\n public open fun nextFloat(): Float = nextBits(24) / (1 shl 24).toFloat()\n\n /**\n * Fills a subrange of the specified byte [array] starting from [fromIndex] inclusive and ending [toIndex] exclusive\n * with random bytes.\n *\n * @return [array] with the subrange filled with random bytes.\n *\n * @sample samples.random.Randoms.nextBytes\n */\n public open fun nextBytes(array: ByteArray, fromIndex: Int = 0, toIndex: Int = array.size): ByteArray {\n require(fromIndex in 0..array.size && toIndex in 0..array.size) { \"fromIndex ($fromIndex) or toIndex ($toIndex) are out of range: 0..${array.size}.\" }\n require(fromIndex <= toIndex) { \"fromIndex ($fromIndex) must be not greater than toIndex ($toIndex).\" }\n\n val steps = (toIndex - fromIndex) / 4\n\n var position = fromIndex\n repeat(steps) {\n val v = nextInt()\n array[position] = v.toByte()\n array[position + 1] = v.ushr(8).toByte()\n array[position + 2] = v.ushr(16).toByte()\n array[position + 3] = v.ushr(24).toByte()\n position += 4\n }\n\n val remainder = toIndex - position\n val vr = nextBits(remainder * 8)\n for (i in 0 until remainder) {\n array[position + i] = vr.ushr(i * 8).toByte()\n }\n\n return array\n }\n\n /**\n * Fills the specified byte [array] with random bytes and returns it.\n *\n * @return [array] filled with random bytes.\n *\n * @sample samples.random.Randoms.nextBytes\n */\n public open fun nextBytes(array: ByteArray): ByteArray = nextBytes(array, 0, array.size)\n\n /**\n * Creates a byte array of the specified [size], filled with random bytes.\n *\n * @sample samples.random.Randoms.nextBytes\n */\n public open fun nextBytes(size: Int): ByteArray = nextBytes(ByteArray(size))\n\n\n /**\n * The default random number generator.\n *\n * On JVM this generator is thread-safe, its methods can be invoked from multiple threads.\n *\n * @sample samples.random.Randoms.defaultRandom\n */\n companion object Default : Random() {\n\n private val defaultRandom: Random = defaultPlatformRandom()\n\n override fun nextBits(bitCount: Int): Int = defaultRandom.nextBits(bitCount)\n override fun nextInt(): Int = defaultRandom.nextInt()\n override fun nextInt(until: Int): Int = defaultRandom.nextInt(until)\n override fun nextInt(from: Int, until: Int): Int = defaultRandom.nextInt(from, until)\n\n override fun nextLong(): Long = defaultRandom.nextLong()\n override fun nextLong(until: Long): Long = defaultRandom.nextLong(until)\n override fun nextLong(from: Long, until: Long): Long = defaultRandom.nextLong(from, until)\n\n override fun nextBoolean(): Boolean = defaultRandom.nextBoolean()\n\n override fun nextDouble(): Double = defaultRandom.nextDouble()\n override fun nextDouble(until: Double): Double = defaultRandom.nextDouble(until)\n override fun nextDouble(from: Double, until: Double): Double = defaultRandom.nextDouble(from, until)\n\n override fun nextFloat(): Float = defaultRandom.nextFloat()\n\n override fun nextBytes(array: ByteArray): ByteArray = defaultRandom.nextBytes(array)\n override fun nextBytes(size: Int): ByteArray = defaultRandom.nextBytes(size)\n override fun nextBytes(array: ByteArray, fromIndex: Int, toIndex: Int): ByteArray = defaultRandom.nextBytes(array, fromIndex, toIndex)\n }\n}\n\n/**\n * Returns a repeatable random number generator seeded with the given [seed] `Int` value.\n *\n * Two generators with the same seed produce the same sequence of values within the same version of Kotlin runtime.\n *\n * *Note:* Future versions of Kotlin may change the algorithm of this seeded number generator so that it will return\n * a sequence of values different from the current one for a given seed.\n *\n * On JVM the returned generator is NOT thread-safe. Do not invoke it from multiple threads without proper synchronization.\n *\n * @sample samples.random.Randoms.seededRandom\n */\n@SinceKotlin(\"1.3\")\npublic fun Random(seed: Int): Random = XorWowRandom(seed, seed.shr(31))\n\n/**\n * Returns a repeatable random number generator seeded with the given [seed] `Long` value.\n *\n * Two generators with the same seed produce the same sequence of values within the same version of Kotlin runtime.\n *\n * *Note:* Future versions of Kotlin may change the algorithm of this seeded number generator so that it will return\n * a sequence of values different from the current one for a given seed.\n *\n * On JVM the returned generator is NOT thread-safe. Do not invoke it from multiple threads without proper synchronization.\n *\n * @sample samples.random.Randoms.seededRandom\n */\n@SinceKotlin(\"1.3\")\npublic fun Random(seed: Long): Random = XorWowRandom(seed.toInt(), seed.shr(32).toInt())\n\n\n\n/**\n * Gets the next random `Int` from the random number generator in the specified [range].\n *\n * Generates an `Int` random value uniformly distributed in the specified [range]:\n * from `range.start` inclusive to `range.endInclusive` inclusive.\n *\n * @throws IllegalArgumentException if [range] is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Random.nextInt(range: IntRange): Int = when {\n range.isEmpty() -> throw IllegalArgumentException(\"Cannot get random in empty range: $range\")\n range.last < Int.MAX_VALUE -> nextInt(range.first, range.last + 1)\n range.first > Int.MIN_VALUE -> nextInt(range.first - 1, range.last) + 1\n else -> nextInt()\n}\n\n/**\n * Gets the next random `Long` from the random number generator in the specified [range].\n *\n * Generates a `Long` random value uniformly distributed in the specified [range]:\n * from `range.start` inclusive to `range.endInclusive` inclusive.\n *\n * @throws IllegalArgumentException if [range] is empty.\n */\n@SinceKotlin(\"1.3\")\npublic fun Random.nextLong(range: LongRange): Long = when {\n range.isEmpty() -> throw IllegalArgumentException(\"Cannot get random in empty range: $range\")\n range.last < Long.MAX_VALUE -> nextLong(range.first, range.last + 1)\n range.first > Long.MIN_VALUE -> nextLong(range.first - 1, range.last) + 1\n else -> nextLong()\n}\n\n\ninternal expect fun defaultPlatformRandom(): Random\ninternal expect fun doubleFromParts(hi26: Int, low27: Int): Double\n\n@OptIn(ExperimentalStdlibApi::class)\ninternal fun fastLog2(value: Int): Int = 31 - value.countLeadingZeroBits()\n\n/** Takes upper [bitCount] bits (0..32) from this number. */\ninternal fun Int.takeUpperBits(bitCount: Int): Int =\n this.ushr(32 - bitCount) and (-bitCount).shr(31)\n\ninternal fun checkRangeBounds(from: Int, until: Int) = require(until > from) { boundsErrorMessage(from, until) }\ninternal fun checkRangeBounds(from: Long, until: Long) = require(until > from) { boundsErrorMessage(from, until) }\ninternal fun checkRangeBounds(from: Double, until: Double) = require(until > from) { boundsErrorMessage(from, until) }\n\ninternal fun boundsErrorMessage(from: Any, until: Any) = \"Random range is empty: [$from, $until).\"\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.properties\n\nimport kotlin.reflect.KProperty\n\n/**\n * Base interface that can be used for implementing property delegates of read-only properties.\n *\n * This is provided only for convenience; you don't have to extend this interface\n * as long as your property delegate has methods with the same signatures.\n *\n * @param T the type of object which owns the delegated property.\n * @param V the type of the property value.\n */\npublic fun interface ReadOnlyProperty {\n /**\n * Returns the value of the property for the given object.\n * @param thisRef the object for which the value is requested.\n * @param property the metadata for the property.\n * @return the property value.\n */\n public operator fun getValue(thisRef: T, property: KProperty<*>): V\n}\n\n/**\n * Base interface that can be used for implementing property delegates of read-write properties.\n *\n * This is provided only for convenience; you don't have to extend this interface\n * as long as your property delegate has methods with the same signatures.\n *\n * @param T the type of object which owns the delegated property.\n * @param V the type of the property value.\n */\npublic interface ReadWriteProperty : ReadOnlyProperty {\n /**\n * Returns the value of the property for the given object.\n * @param thisRef the object for which the value is requested.\n * @param property the metadata for the property.\n * @return the property value.\n */\n public override operator fun getValue(thisRef: T, property: KProperty<*>): V\n\n /**\n * Sets the value of the property for the given object.\n * @param thisRef the object for which the value is requested.\n * @param property the metadata for the property.\n * @param value the value to set.\n */\n public operator fun setValue(thisRef: T, property: KProperty<*>, value: V)\n}\n\n/**\n * Base interface that can be used for implementing property delegate providers.\n *\n * This is provided only for convenience; you don't have to extend this interface\n * as long as your delegate provider has a method with the same signature.\n *\n * @param T the type of object which owns the delegated property.\n * @param D the type of property delegates this provider provides.\n */\n@SinceKotlin(\"1.4\")\npublic fun interface PropertyDelegateProvider {\n /**\n * Returns the delegate of the property for the given object.\n *\n * This function can be used to extend the logic of creating the object (e.g. perform validation checks)\n * to which the property implementation is delegated.\n *\n * @param thisRef the object for which property delegate is requested.\n * @param property the metadata for the property.\n * @return the property delegate.\n */\n public operator fun provideDelegate(thisRef: T, property: KProperty<*>): D\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\npackage kotlin.random\n\n/**\n * Random number generator, using Marsaglia's \"xorwow\" algorithm\n *\n * Cycles after 2^192 - 2^32 repetitions.\n *\n * For more details, see Marsaglia, George (July 2003). \"Xorshift RNGs\". Journal of Statistical Software. 8 (14). doi:10.18637/jss.v008.i14\n *\n * Available at https://www.jstatsoft.org/v08/i14/paper\n *\n */\ninternal class XorWowRandom\ninternal constructor(\n private var x: Int,\n private var y: Int,\n private var z: Int,\n private var w: Int,\n private var v: Int,\n private var addend: Int\n) : Random() {\n\n internal constructor(seed1: Int, seed2: Int) :\n this(seed1, seed2, 0, 0, seed1.inv(), (seed1 shl 10) xor (seed2 ushr 4))\n\n init {\n require((x or y or z or w or v) != 0) { \"Initial state must have at least one non-zero element.\" }\n\n // some trivial seeds can produce several values with zeroes in upper bits, so we discard first 64\n repeat(64) { nextInt() }\n }\n\n override fun nextInt(): Int {\n // Equivalent to the xorxow algorithm\n // From Marsaglia, G. 2003. Xorshift RNGs. J. Statis. Soft. 8, 14, p. 5\n var t = x\n t = t xor (t ushr 2)\n x = y\n y = z\n z = w\n val v0 = v\n w = v0\n t = (t xor (t shl 1)) xor v0 xor (v0 shl 4)\n v = t\n addend += 362437\n return t + addend\n }\n\n override fun nextBits(bitCount: Int): Int =\n nextInt().takeUpperBits(bitCount)\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(\"RangesKt\")\n\npackage kotlin.ranges\n\n/**\n * Represents a range of [Comparable] values.\n */\nprivate open class ComparableRange>(\n override val start: T,\n override val endInclusive: T\n) : ClosedRange {\n\n override fun equals(other: Any?): Boolean {\n return other is ComparableRange<*> && (isEmpty() && other.isEmpty() ||\n start == other.start && endInclusive == other.endInclusive)\n }\n\n override fun hashCode(): Int {\n return if (isEmpty()) -1 else 31 * start.hashCode() + endInclusive.hashCode()\n }\n\n override fun toString(): String = \"$start..$endInclusive\"\n}\n\n/**\n * Creates a range from this [Comparable] value to the specified [that] value.\n *\n * This value needs to be smaller than or equal to [that] value, otherwise the returned range will be empty.\n * @sample samples.ranges.Ranges.rangeFromComparable\n */\npublic operator fun > T.rangeTo(that: T): ClosedRange = ComparableRange(this, that)\n\n\n/**\n * Represents a range of floating point numbers.\n * Extends [ClosedRange] interface providing custom operation [lessThanOrEquals] for comparing values of range domain type.\n *\n * This interface is implemented by floating point ranges returned by [Float.rangeTo] and [Double.rangeTo] operators to\n * achieve IEEE-754 comparison order instead of total order of floating point numbers.\n */\n@SinceKotlin(\"1.1\")\npublic interface ClosedFloatingPointRange> : ClosedRange {\n override fun contains(value: T): Boolean = lessThanOrEquals(start, value) && lessThanOrEquals(value, endInclusive)\n override fun isEmpty(): Boolean = !lessThanOrEquals(start, endInclusive)\n\n /**\n * Compares two values of range domain type and returns true if first is less than or equal to second.\n */\n fun lessThanOrEquals(a: T, b: T): Boolean\n}\n\n\n/**\n * A closed range of values of type `Double`.\n *\n * Numbers are compared with the ends of this range according to IEEE-754.\n */\nprivate class ClosedDoubleRange(\n start: Double,\n endInclusive: Double\n) : ClosedFloatingPointRange {\n private val _start = start\n private val _endInclusive = endInclusive\n override val start: Double get() = _start\n override val endInclusive: Double get() = _endInclusive\n\n override fun lessThanOrEquals(a: Double, b: Double): Boolean = a <= b\n\n override fun contains(value: Double): Boolean = value >= _start && value <= _endInclusive\n override fun isEmpty(): Boolean = !(_start <= _endInclusive)\n\n override fun equals(other: Any?): Boolean {\n return other is ClosedDoubleRange && (isEmpty() && other.isEmpty() ||\n _start == other._start && _endInclusive == other._endInclusive)\n }\n\n override fun hashCode(): Int {\n return if (isEmpty()) -1 else 31 * _start.hashCode() + _endInclusive.hashCode()\n }\n\n override fun toString(): String = \"$_start..$_endInclusive\"\n}\n\n/**\n * Creates a range from this [Double] value to the specified [that] value.\n *\n * Numbers are compared with the ends of this range according to IEEE-754.\n * @sample samples.ranges.Ranges.rangeFromDouble\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Double.rangeTo(that: Double): ClosedFloatingPointRange = ClosedDoubleRange(this, that)\n\n\n/**\n * A closed range of values of type `Float`.\n *\n * Numbers are compared with the ends of this range according to IEEE-754.\n */\nprivate class ClosedFloatRange(\n start: Float,\n endInclusive: Float\n) : ClosedFloatingPointRange {\n private val _start = start\n private val _endInclusive = endInclusive\n override val start: Float get() = _start\n override val endInclusive: Float get() = _endInclusive\n\n override fun lessThanOrEquals(a: Float, b: Float): Boolean = a <= b\n\n override fun contains(value: Float): Boolean = value >= _start && value <= _endInclusive\n override fun isEmpty(): Boolean = !(_start <= _endInclusive)\n\n override fun equals(other: Any?): Boolean {\n return other is ClosedFloatRange && (isEmpty() && other.isEmpty() ||\n _start == other._start && _endInclusive == other._endInclusive)\n }\n\n override fun hashCode(): Int {\n return if (isEmpty()) -1 else 31 * _start.hashCode() + _endInclusive.hashCode()\n }\n\n override fun toString(): String = \"$_start..$_endInclusive\"\n}\n\n/**\n * Creates a range from this [Float] value to the specified [that] value.\n *\n * Numbers are compared with the ends of this range according to IEEE-754.\n * @sample samples.ranges.Ranges.rangeFromFloat\n */\n@SinceKotlin(\"1.1\")\npublic operator fun Float.rangeTo(that: Float): ClosedFloatingPointRange = ClosedFloatRange(this, that)\n\n\n/**\n * Returns `true` if this iterable range contains the specified [element].\n *\n * Always returns `false` if the [element] is `null`.\n */\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\npublic inline operator fun R.contains(element: T?): Boolean where T : Any, R : Iterable, R : ClosedRange =\n element != null && contains(element)\n\n\ninternal fun checkStepIsPositive(isPositive: Boolean, step: Number) {\n if (!isPositive) throw IllegalArgumentException(\"Step must be positive, was: $step.\")\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.reflect\n\nimport kotlin.jvm.JvmField\nimport kotlin.jvm.JvmStatic\n\n\n\n/**\n * Represents a type projection. Type projection is usually the argument to another type in a type usage.\n * For example, in the type `Array`, `out Number` is the covariant projection of the type represented by the class `Number`.\n *\n * Type projection is either the star projection, or an entity consisting of a specific type plus optional variance.\n *\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/generics.html#type-projections)\n * for more information.\n */\n@SinceKotlin(\"1.1\")\npublic data class KTypeProjection constructor(\n /**\n * The use-site variance specified in the projection, or `null` if this is a star projection.\n */\n public val variance: KVariance?,\n /**\n * The type specified in the projection, or `null` if this is a star projection.\n */\n public val type: KType?\n) {\n\n init {\n require((variance == null) == (type == null)) {\n if (variance == null)\n \"Star projection must have no type specified.\"\n else\n \"The projection variance $variance requires type to be specified.\"\n }\n }\n\n override fun toString(): String = when (variance) {\n null -> \"*\"\n KVariance.INVARIANT -> type.toString()\n KVariance.IN -> \"in $type\"\n KVariance.OUT -> \"out $type\"\n }\n\n public companion object {\n // provided for compiler access\n @JvmField\n @PublishedApi\n internal val star: KTypeProjection = KTypeProjection(null, null)\n\n /**\n * Star projection, denoted by the `*` character.\n * For example, in the type `KClass<*>`, `*` is the star projection.\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/generics.html#star-projections)\n * for more information.\n */\n public val STAR: KTypeProjection get() = star\n\n /**\n * Creates an invariant projection of a given type. Invariant projection is just the type itself,\n * without any use-site variance modifiers applied to it.\n * For example, in the type `Set`, `String` is an invariant projection of the type represented by the class `String`.\n */\n @JvmStatic\n public fun invariant(type: KType): KTypeProjection =\n KTypeProjection(KVariance.INVARIANT, type)\n\n /**\n * Creates a contravariant projection of a given type, denoted by the `in` modifier applied to a type.\n * For example, in the type `MutableList`, `in Number` is a contravariant projection of the type of class `Number`.\n */\n @JvmStatic\n public fun contravariant(type: KType): KTypeProjection =\n KTypeProjection(KVariance.IN, type)\n\n /**\n * Creates a covariant projection of a given type, denoted by the `out` modifier applied to a type.\n * For example, in the type `Array`, `out Number` is a covariant projection of the type of class `Number`.\n */\n @JvmStatic\n public fun covariant(type: KType): KTypeProjection =\n KTypeProjection(KVariance.OUT, type)\n }\n}","/*\n * Copyright 2010-2019 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.reflect\n\n/**\n * Represents variance applied to a type parameter on the declaration site (*declaration-site variance*),\n * or to a type in a projection (*use-site variance*).\n *\n * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/generics.html#variance)\n * for more information.\n *\n * @see [KTypeParameter.variance]\n * @see [KTypeProjection]\n */\n@SinceKotlin(\"1.1\")\nenum class KVariance {\n /**\n * The affected type parameter or type is *invariant*, which means it has no variance applied to it.\n */\n INVARIANT,\n\n /**\n * The affected type parameter or type is *contravariant*. Denoted by the `in` modifier in the source code.\n */\n IN,\n\n /**\n * The affected type parameter or type is *covariant*. Denoted by the `out` modifier in the source code.\n */\n OUT,\n}","/*\n * Copyright 2010-2019 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\n/**\n * An object to which char sequences and values can be appended.\n */\nexpect interface Appendable {\n /**\n * Appends the specified character [value] to this Appendable and returns this instance.\n *\n * @param value the character to append.\n */\n fun append(value: Char): Appendable\n\n /**\n * Appends the specified character sequence [value] to this Appendable and returns this instance.\n *\n * @param value the character sequence to append. If [value] is `null`, then the four characters `\"null\"` are appended to this Appendable.\n */\n fun append(value: CharSequence?): Appendable\n\n /**\n * Appends a subsequence of the specified character sequence [value] to this Appendable and returns this instance.\n *\n * @param value the character sequence from which a subsequence is appended. If [value] is `null`,\n * then characters are appended as if [value] contained the four characters `\"null\"`.\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 fun append(value: CharSequence?, startIndex: Int, endIndex: Int): Appendable\n}\n\n/**\n * Appends a subsequence of the specified character sequence [value] to this Appendable 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 fun T.appendRange(value: CharSequence, startIndex: Int, endIndex: Int): T {\n @Suppress(\"UNCHECKED_CAST\")\n return append(value, startIndex, endIndex) as T\n}\n\n/**\n * Appends all arguments to the given [Appendable].\n */\npublic fun T.append(vararg value: CharSequence?): T {\n for (item in value)\n append(item)\n return this\n}\n\n/** Appends a line feed character (`\\n`) to this Appendable. */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun Appendable.appendLine(): Appendable = append('\\n')\n\n/** Appends value to the given Appendable and a line feed character (`\\n`) after it. */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun Appendable.appendLine(value: CharSequence?): Appendable = append(value).appendLine()\n\n/** Appends value to the given Appendable and a line feed character (`\\n`) after it. */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun Appendable.appendLine(value: Char): Appendable = append(value).appendLine()\n\n\ninternal fun Appendable.appendElement(element: T, transform: ((T) -> CharSequence)?) {\n when {\n transform != null -> append(transform(element))\n element is CharSequence? -> append(element)\n element is Char -> append(element)\n else -> append(element.toString())\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(\"CharsKt\")\n\npackage kotlin.text\n\n/**\n * Returns the numeric value of the decimal digit that this Char represents.\n * Throws an exception if this Char is not a valid decimal digit.\n *\n * A Char is considered to represent a decimal digit if the Char is one of the ASCII decimal digits '0' through '9'.\n * In this case, `this.code - '0'.code` is returned.\n *\n * @sample samples.text.Chars.digitToInt\n */\n@ExperimentalStdlibApi\n@SinceKotlin(\"1.4\")\npublic fun Char.digitToInt(): Int {\n if (this in '0'..'9') {\n return this - '0'\n }\n throw IllegalArgumentException(\"Char $this is not a decimal digit\")\n}\n\n/**\n * Returns the numeric value of the digit that this Char represents in the specified [radix].\n * Throws an exception if the [radix] is not in the range `2..36` or if this Char is not a valid digit in the specified [radix].\n *\n * A Char is considered to represent a digit in the specified [radix] if at least one of the following is true:\n * - The Char is one of the ASCII decimal digits '0' through '9' and its [code] is less than `radix + '0'.code`. In this case, `this.code - '0'.code` is returned.\n * - The Char is one of the uppercase Latin letters 'A' through 'Z' and its [code] is less than `radix + 'A'.code - 10`. In this case, `this.code - 'A'.code + 10` is returned.\n * - The Char is one of the lowercase Latin letters 'a' through 'z' and its [code] is less than `radix + 'a'.code - 10`. In this case, `this.code - 'a'.code + 10` is returned.\n *\n * @sample samples.text.Chars.digitToInt\n */\n@ExperimentalStdlibApi\n@SinceKotlin(\"1.4\")\npublic fun Char.digitToInt(radix: Int): Int {\n return digitToIntOrNull(radix) ?: throw IllegalArgumentException(\"Char $this is not a digit in the given radix=$radix\")\n}\n\n/**\n *\n * Returns the numeric value of the decimal digit that this Char represents, or `null` if this Char is not a valid decimal digit.\n *\n * A Char is considered to represent a decimal digit if the Char is one of the ASCII decimal digits '0' through '9'.\n * In this case, `this.code - '0'.code` is returned.\n *\n * @sample samples.text.Chars.digitToIntOrNull\n */\n@ExperimentalStdlibApi\n@SinceKotlin(\"1.4\")\npublic fun Char.digitToIntOrNull(): Int? {\n if (this in '0'..'9') {\n return this - '0'\n }\n return null\n}\n\n/**\n * Returns the numeric value of the digit that this Char represents in the specified [radix], or `null` if this Char is not a valid digit in the specified [radix].\n * Throws an exception if the [radix] is not in the range `2..36`.\n *\n * A Char is considered to represent a digit in the specified [radix] if at least one of the following is true:\n * - The Char is one of the ASCII decimal digits '0' through '9' and its [code] is less than `radix + '0'.code`. In this case, `this.code - '0'.code` is returned.\n * - The Char is one of the uppercase Latin letters 'A' through 'Z' and its [code] is less than `radix + 'A'.code - 10`. In this case, `this.code - 'A'.code + 10` is returned.\n * - The Char is one of the lowercase Latin letters 'a' through 'z' and its [code] is less than `radix + 'a'.code - 10`. In this case, `this.code - 'a'.code + 10` is returned.\n *\n * @sample samples.text.Chars.digitToIntOrNull\n */\n@ExperimentalStdlibApi\n@SinceKotlin(\"1.4\")\npublic fun Char.digitToIntOrNull(radix: Int): Int? {\n if (radix !in 2..36) {\n throw IllegalArgumentException(\"Invalid radix: $radix. Valid radix values are in range 2..36\")\n }\n if (this in '0'..'9') {\n val digit = this - '0'\n return if (digit < radix) digit else null\n }\n val a = if (this <= 'Z') 'A' else 'a'\n val digit = 10 + (this - a)\n return if (digit in 10 until radix) digit else null\n}\n\n/**\n * Returns the Char that represents this decimal digit.\n * Throws an exception if this value is not in the range `0..9`.\n *\n * If this value is in `0..9`, the decimal digit Char with code `'0'.code + this` is returned.\n *\n * @sample samples.text.Chars.digitToChar\n */\n@ExperimentalStdlibApi\n@SinceKotlin(\"1.4\")\npublic fun Int.digitToChar(): Char {\n if (this in 0..9) {\n return '0' + this\n }\n throw IllegalArgumentException(\"Int $this is not a decimal digit\")\n}\n\n/**\n * Returns the Char that represents this numeric digit value in the specified [radix].\n * Throws an exception if the [radix] is not in the range `2..36` or if this value is not in the range `0 until radix`.\n *\n * If this value is less than `10`, the decimal digit Char with code `'0'.code + this` is returned.\n * Otherwise, the uppercase Latin letter with code `'A'.code + this - 10` is returned.\n *\n * @sample samples.text.Chars.digitToChar\n */\n@ExperimentalStdlibApi\n@SinceKotlin(\"1.4\")\npublic fun Int.digitToChar(radix: Int): Char {\n if (radix !in 2..36) {\n throw IllegalArgumentException(\"Invalid radix: $radix. Valid radix values are in range 2..36\")\n }\n if (this < 0 || this >= radix) {\n throw IllegalArgumentException(\"Digit $this does not represent a valid digit in radix $radix\")\n }\n return if (this < 10) {\n '0' + this\n } else {\n 'A' + this - 10\n }\n}\n\n/**\n * Converts this character to lower case using Unicode mapping rules of the invariant locale.\n */\npublic expect fun Char.toLowerCase(): Char\n\n/**\n * Converts this character to lower case using Unicode mapping rules of the invariant locale.\n *\n * This function performs one-to-one character mapping.\n * To support one-to-many character mapping use the [lowercase] function.\n * If this character has no mapping equivalent, the character itself is returned.\n *\n * @sample samples.text.Chars.lowercase\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\npublic expect fun Char.lowercaseChar(): Char\n\n/**\n * Converts this character to lower case using Unicode mapping rules of the invariant locale.\n *\n * This function supports one-to-many character mapping, thus the length of the returned string can be greater than one.\n * For example, `'\\u0130'.lowercase()` returns `\"\\u0069\\u0307\"`,\n * where `'\\u0130'` is the LATIN CAPITAL LETTER I WITH DOT ABOVE character (`İ`).\n * If this character has no lower case mapping, the result of `toString()` of this char is returned.\n *\n * @sample samples.text.Chars.lowercase\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\npublic expect fun Char.lowercase(): String\n\n/**\n * Converts this character to upper case using Unicode mapping rules of the invariant locale.\n */\npublic expect fun Char.toUpperCase(): Char\n\n/**\n * Converts this character to upper case using Unicode mapping rules of the invariant locale.\n *\n * This function performs one-to-one character mapping.\n * To support one-to-many character mapping use the [uppercase] function.\n * If this character has no mapping equivalent, the character itself is returned.\n *\n * @sample samples.text.Chars.uppercase\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\npublic expect fun Char.uppercaseChar(): Char\n\n/**\n * Converts this character to upper case using Unicode mapping rules of the invariant locale.\n *\n * This function supports one-to-many character mapping, thus the length of the returned string can be greater than one.\n * For example, `'\\uFB00'.uppercase()` returns `\"\\u0046\\u0046\"`,\n * where `'\\uFB00'` is the LATIN SMALL LIGATURE FF character (`ff`).\n * If this character has no upper case mapping, the result of `toString()` of this char is returned.\n *\n * @sample samples.text.Chars.uppercase\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\npublic expect fun Char.uppercase(): String\n\n/**\n * Concatenates this Char and a String.\n *\n * @sample samples.text.Chars.plus\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Char.plus(other: String): String = this.toString() + other\n\n/**\n * Returns `true` if this character is equal to the [other] character, optionally ignoring character case.\n *\n * @param ignoreCase `true` to ignore character case when comparing characters. By default `false`.\n *\n * Two characters are considered the same ignoring case if at least one of the following is `true`:\n * - The two characters are the same (as compared by the == operator)\n * - Applying the method [uppercaseChar] to each character produces the same result\n * - Applying the method [lowercaseChar] to each character produces the same result\n *\n * @sample samples.text.Chars.equals\n */\n@OptIn(ExperimentalStdlibApi::class)\npublic fun Char.equals(other: Char, ignoreCase: Boolean = false): Boolean {\n if (this == other) return true\n if (!ignoreCase) return false\n\n if (this.uppercaseChar() == other.uppercaseChar()) return true\n if (this.lowercaseChar() == other.lowercaseChar()) return true\n return false\n}\n\n/**\n * Returns `true` if this character is a Unicode surrogate code unit.\n */\npublic fun Char.isSurrogate(): Boolean = this in Char.MIN_SURROGATE..Char.MAX_SURROGATE\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(\"StringsKt\")\n\npackage kotlin.text\n\n/**\n * Trims leading whitespace characters followed by [marginPrefix] from every line of a source string and removes\n * the first and the last lines if they are blank (notice difference blank vs empty).\n *\n * Doesn't affect a line if it doesn't contain [marginPrefix] except the first and the last blank lines.\n *\n * Doesn't preserve the original line endings.\n *\n * @param marginPrefix non-blank string, which is used as a margin delimiter. Default is `|` (pipe character).\n *\n * @sample samples.text.Strings.trimMargin\n * @see trimIndent\n * @see kotlin.text.isWhitespace\n */\npublic fun String.trimMargin(marginPrefix: String = \"|\"): String =\n replaceIndentByMargin(\"\", marginPrefix)\n\n/**\n * Detects indent by [marginPrefix] as it does [trimMargin] and replace it with [newIndent].\n *\n * @param marginPrefix non-blank string, which is used as a margin delimiter. Default is `|` (pipe character).\n */\npublic fun String.replaceIndentByMargin(newIndent: String = \"\", marginPrefix: String = \"|\"): String {\n require(marginPrefix.isNotBlank()) { \"marginPrefix must be non-blank string.\" }\n val lines = lines()\n\n return lines.reindent(length + newIndent.length * lines.size, getIndentFunction(newIndent), { line ->\n val firstNonWhitespaceIndex = line.indexOfFirst { !it.isWhitespace() }\n\n when {\n firstNonWhitespaceIndex == -1 -> null\n line.startsWith(marginPrefix, firstNonWhitespaceIndex) -> line.substring(firstNonWhitespaceIndex + marginPrefix.length)\n else -> null\n }\n })\n}\n\n/**\n * Detects a common minimal indent of all the input lines, removes it from every line and also removes the first and the last\n * lines if they are blank (notice difference blank vs empty).\n *\n * Note that blank lines do not affect the detected indent level.\n *\n * In case if there are non-blank lines with no leading whitespace characters (no indent at all) then the\n * common indent is 0, and therefore this function doesn't change the indentation.\n *\n * Doesn't preserve the original line endings.\n *\n * @sample samples.text.Strings.trimIndent\n * @see trimMargin\n * @see kotlin.text.isBlank\n */\npublic fun String.trimIndent(): String = replaceIndent(\"\")\n\n/**\n * Detects a common minimal indent like it does [trimIndent] and replaces it with the specified [newIndent].\n */\npublic fun String.replaceIndent(newIndent: String = \"\"): String {\n val lines = lines()\n\n val minCommonIndent = lines\n .filter(String::isNotBlank)\n .map(String::indentWidth)\n .minOrNull() ?: 0\n\n return lines.reindent(length + newIndent.length * lines.size, getIndentFunction(newIndent), { line -> line.drop(minCommonIndent) })\n}\n\n/**\n * Prepends [indent] to every line of the original string.\n *\n * Doesn't preserve the original line endings.\n */\npublic fun String.prependIndent(indent: String = \" \"): String =\n lineSequence()\n .map {\n when {\n it.isBlank() -> {\n when {\n it.length < indent.length -> indent\n else -> it\n }\n }\n else -> indent + it\n }\n }\n .joinToString(\"\\n\")\n\nprivate fun String.indentWidth(): Int = indexOfFirst { !it.isWhitespace() }.let { if (it == -1) length else it }\n\nprivate fun getIndentFunction(indent: String) = when {\n indent.isEmpty() -> { line: String -> line }\n else -> { line: String -> indent + line }\n}\n\nprivate inline fun List.reindent(\n resultSizeEstimate: Int,\n indentAddFunction: (String) -> String,\n indentCutFunction: (String) -> String?\n): String {\n val lastIndex = lastIndex\n return mapIndexedNotNull { index, value ->\n if ((index == 0 || index == lastIndex) && value.isBlank())\n null\n else\n indentCutFunction(value)?.let(indentAddFunction) ?: value\n }\n .joinTo(StringBuilder(resultSizeEstimate), \"\\n\")\n .toString()\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\npackage kotlin.text\n\n/**\n * Represents a collection of captured groups in a single match of a regular expression.\n *\n * This collection has size of `groupCount + 1` where `groupCount` is the count of groups in the regular expression.\n * Groups are indexed from 1 to `groupCount` and group with the index 0 corresponds to the entire match.\n *\n * An element of the collection at the particular index can be `null`,\n * if the corresponding group in the regular expression is optional and\n * there was no match captured by that group.\n */\npublic interface MatchGroupCollection : Collection {\n\n /** Returns a group with the specified [index].\n *\n * @return An instance of [MatchGroup] if the group with the specified [index] was matched or `null` otherwise.\n *\n * Groups are indexed from 1 to the count of groups in the regular expression. A group with the index 0\n * corresponds to the entire match.\n */\n public operator fun get(index: Int): MatchGroup?\n}\n\n/**\n * Extends [MatchGroupCollection] by introducing a way to get matched groups by name, when regex supports it.\n */\n@SinceKotlin(\"1.1\")\npublic interface MatchNamedGroupCollection : MatchGroupCollection {\n /**\n * Returns a named group with the specified [name].\n * @return An instance of [MatchGroup] if the group with the specified [name] was matched or `null` otherwise.\n * @throws IllegalArgumentException if there is no group with the specified [name] defined in the regex pattern.\n * @throws UnsupportedOperationException if getting named groups isn't supported on the current platform.\n */\n public operator fun get(name: String): MatchGroup?\n}\n\n/**\n * Represents the results from a single regular expression match.\n */\npublic interface MatchResult {\n /** The range of indices in the original string where match was captured. */\n public val range: IntRange\n /** The substring from the input string captured by this match. */\n public val value: String\n /**\n * A collection of groups matched by the regular expression.\n *\n * This collection has size of `groupCount + 1` where `groupCount` is the count of groups in the regular expression.\n * Groups are indexed from 1 to `groupCount` and group with the index 0 corresponds to the entire match.\n */\n public val groups: MatchGroupCollection\n /**\n * A list of matched indexed group values.\n *\n * This list has size of `groupCount + 1` where `groupCount` is the count of groups in the regular expression.\n * Groups are indexed from 1 to `groupCount` and group with the index 0 corresponds to the entire match.\n *\n * If the group in the regular expression is optional and there were no match captured by that group,\n * corresponding item in [groupValues] is an empty string.\n *\n * @sample samples.text.Regexps.matchDestructuringToGroupValues\n */\n public val groupValues: List\n\n /**\n * An instance of [MatchResult.Destructured] wrapper providing components for destructuring assignment of group values.\n *\n * component1 corresponds to the value of the first group, component2 — of the second, and so on.\n *\n * @sample samples.text.Regexps.matchDestructuringToGroupValues\n */\n public val destructured: Destructured get() = Destructured(this)\n\n /** Returns a new [MatchResult] with the results for the next match, starting at the position\n * at which the last match ended (at the character after the last matched character).\n */\n public fun next(): MatchResult?\n\n /**\n * Provides components for destructuring assignment of group values.\n *\n * [component1] corresponds to the value of the first group, [component2] — of the second, and so on.\n *\n * If the group in the regular expression is optional and there were no match captured by that group,\n * corresponding component value is an empty string.\n *\n * @sample samples.text.Regexps.matchDestructuringToGroupValues\n */\n public class Destructured internal constructor(public val match: MatchResult) {\n @kotlin.internal.InlineOnly\n public operator inline fun component1(): String = match.groupValues[1]\n @kotlin.internal.InlineOnly\n public operator inline fun component2(): String = match.groupValues[2]\n @kotlin.internal.InlineOnly\n public operator inline fun component3(): String = match.groupValues[3]\n @kotlin.internal.InlineOnly\n public operator inline fun component4(): String = match.groupValues[4]\n @kotlin.internal.InlineOnly\n public operator inline fun component5(): String = match.groupValues[5]\n @kotlin.internal.InlineOnly\n public operator inline fun component6(): String = match.groupValues[6]\n @kotlin.internal.InlineOnly\n public operator inline fun component7(): String = match.groupValues[7]\n @kotlin.internal.InlineOnly\n public operator inline fun component8(): String = match.groupValues[8]\n @kotlin.internal.InlineOnly\n public operator inline fun component9(): String = match.groupValues[9]\n @kotlin.internal.InlineOnly\n public operator inline fun component10(): String = match.groupValues[10]\n\n /**\n * Returns destructured group values as a list of strings.\n * First value in the returned list corresponds to the value of the first group, and so on.\n *\n * @sample samples.text.Regexps.matchDestructuringToGroupValues\n */\n public fun toList(): List = match.groupValues.subList(1, match.groupValues.size)\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.time\n\nimport kotlin.contracts.*\nimport kotlin.math.abs\n\n@OptIn(ExperimentalTime::class)\nprivate inline val storageUnit get() = DurationUnit.NANOSECONDS\n\n/**\n * Represents the amount of time one instant of time is away from another instant.\n *\n * A negative duration is possible in a situation when the second instant is earlier than the first one.\n * An infinite duration value [Duration.INFINITE] can be used to represent infinite timeouts.\n *\n * To construct a duration use either the extension function [toDuration],\n * or the extension properties [hours], [minutes], [seconds], and so on,\n * available on [Int], [Long], and [Double] numeric types.\n *\n * To get the value of this duration expressed in a particular [duration units][DurationUnit]\n * use the functions [toInt], [toLong], and [toDouble]\n * or the properties [inHours], [inMinutes], [inSeconds], [inNanoseconds], and so on.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\npublic inline class Duration internal constructor(internal val value: Double) : Comparable {\n// TODO: backend fails on init block, wait for KT-28055\n\n// init {\n// require(_value.isNaN().not())\n// }\n\n companion object {\n /** The duration equal to exactly 0 seconds. */\n public val ZERO: Duration = Duration(0.0)\n\n /** The duration whose value is positive infinity. It is useful for representing timeouts that should never expire. */\n public val INFINITE: Duration = Duration(Double.POSITIVE_INFINITY)\n\n /** Converts the given time duration [value] expressed in the specified [sourceUnit] into the specified [targetUnit]. */\n public fun convert(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double =\n convertDurationUnit(value, sourceUnit, targetUnit)\n }\n\n // arithmetic operators\n\n /** Returns the negative of this value. */\n public operator fun unaryMinus(): Duration = Duration(-value)\n\n /** Returns a duration whose value is the sum of this and [other] duration values. */\n public operator fun plus(other: Duration): Duration = Duration(value + other.value)\n\n /** Returns a duration whose value is the difference between this and [other] duration values. */\n public operator fun minus(other: Duration): Duration = Duration(value - other.value)\n\n /** Returns a duration whose value is this duration value multiplied by the given [scale] number. */\n public operator fun times(scale: Int): Duration = Duration(value * scale)\n\n /** Returns a duration whose value is this duration value multiplied by the given [scale] number. */\n public operator fun times(scale: Double): Duration = Duration(value * scale)\n\n /** Returns a duration whose value is this duration value divided by the given [scale] number. */\n public operator fun div(scale: Int): Duration = Duration(value / scale)\n\n /** Returns a duration whose value is this duration value divided by the given [scale] number. */\n public operator fun div(scale: Double): Duration = Duration(value / scale)\n\n /** Returns a number that is the ratio of this and [other] duration values. */\n public operator fun div(other: Duration): Double = this.value / other.value\n\n /** Returns true, if the duration value is less than zero. */\n public fun isNegative(): Boolean = value < 0\n\n /** Returns true, if the duration value is greater than zero. */\n public fun isPositive(): Boolean = value > 0\n\n /** Returns true, if the duration value is infinite. */\n public fun isInfinite(): Boolean = value.isInfinite()\n\n /** Returns true, if the duration value is finite. */\n public fun isFinite(): Boolean = value.isFinite()\n\n /** Returns the absolute value of this value. The returned value is always non-negative. */\n public val absoluteValue: Duration get() = if (isNegative()) -this else this\n\n override fun compareTo(other: Duration): Int = this.value.compareTo(other.value)\n\n\n // splitting to components\n\n /**\n * Splits this duration into days, hours, minutes, seconds, and nanoseconds and executes the given [action] with these components.\n * The result of [action] is returned as the result of this function.\n *\n * - `nanoseconds` represents the whole number of nanoseconds in this duration, and its absolute value is less than 1_000_000_000;\n * - `seconds` represents the whole number of seconds in this duration, and its absolute value is less than 60;\n * - `minutes` represents the whole number of minutes in this duration, and its absolute value is less than 60;\n * - `hours` represents the whole number of hours in this duration, and its absolute value is less than 24;\n * - `days` represents the whole number of days in this duration.\n * If the value doesn't fit in [Int] range, i.e. it's greater than [Int.MAX_VALUE] or less than [Int.MIN_VALUE],\n * it is coerced into that range.\n */\n public inline fun toComponents(action: (days: Int, hours: Int, minutes: Int, seconds: Int, nanoseconds: Int) -> T): T {\n contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }\n return action(inDays.toInt(), hoursComponent, minutesComponent, secondsComponent, nanosecondsComponent)\n }\n\n /**\n * Splits this duration into hours, minutes, seconds, and nanoseconds and executes the given [action] with these components.\n * The result of [action] is returned as the result of this function.\n *\n * - `nanoseconds` represents the whole number of nanoseconds in this duration, and its absolute value is less than 1_000_000_000;\n * - `seconds` represents the whole number of seconds in this duration, and its absolute value is less than 60;\n * - `minutes` represents the whole number of minutes in this duration, and its absolute value is less than 60;\n * - `hours` represents the whole number of hours in this duration.\n * If the value doesn't fit in [Int] range, i.e. it's greater than [Int.MAX_VALUE] or less than [Int.MIN_VALUE],\n * it is coerced into that range.\n */\n public inline fun toComponents(action: (hours: Int, minutes: Int, seconds: Int, nanoseconds: Int) -> T): T {\n contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }\n return action(inHours.toInt(), minutesComponent, secondsComponent, nanosecondsComponent)\n }\n\n /**\n * Splits this duration into minutes, seconds, and nanoseconds and executes the given [action] with these components.\n * The result of [action] is returned as the result of this function.\n *\n * - `nanoseconds` represents the whole number of nanoseconds in this duration, and its absolute value is less than 1_000_000_000;\n * - `seconds` represents the whole number of seconds in this duration, and its absolute value is less than 60;\n * - `minutes` represents the whole number of minutes in this duration.\n * If the value doesn't fit in [Int] range, i.e. it's greater than [Int.MAX_VALUE] or less than [Int.MIN_VALUE],\n * it is coerced into that range.\n */\n public inline fun toComponents(action: (minutes: Int, seconds: Int, nanoseconds: Int) -> T): T {\n contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }\n return action(inMinutes.toInt(), secondsComponent, nanosecondsComponent)\n }\n\n /**\n * Splits this duration into seconds, and nanoseconds and executes the given [action] with these components.\n * The result of [action] is returned as the result of this function.\n *\n * - `nanoseconds` represents the whole number of nanoseconds in this duration, and its absolute value is less than 1_000_000_000;\n * - `seconds` represents the whole number of seconds in this duration.\n * If the value doesn't fit in [Long] range, i.e. it's greater than [Long.MAX_VALUE] or less than [Long.MIN_VALUE],\n * it is coerced into that range.\n */\n public inline fun toComponents(action: (seconds: Long, nanoseconds: Int) -> T): T {\n contract { callsInPlace(action, InvocationKind.EXACTLY_ONCE) }\n return action(inSeconds.toLong(), nanosecondsComponent)\n }\n\n @PublishedApi\n internal val hoursComponent: Int get() = (inHours % 24).toInt()\n @PublishedApi\n internal val minutesComponent: Int get() = (inMinutes % 60).toInt()\n @PublishedApi\n internal val secondsComponent: Int get() = (inSeconds % 60).toInt()\n @PublishedApi\n internal val nanosecondsComponent: Int get() = (inNanoseconds % 1e9).toInt()\n\n\n // conversion to units\n\n /** Returns the value of this duration expressed as a [Double] number of the specified [unit]. */\n public fun toDouble(unit: DurationUnit): Double = convertDurationUnit(value, storageUnit, unit)\n\n /**\n * Returns the value of this duration expressed as a [Long] number of the specified [unit].\n *\n * If the value doesn't fit in the range of [Long] type, it is coerced into that range, see the conversion [Double.toLong] for details.\n */\n public fun toLong(unit: DurationUnit): Long = toDouble(unit).toLong()\n\n /**\n * Returns the value of this duration expressed as an [Int] number of the specified [unit].\n *\n * If the value doesn't fit in the range of [Int] type, it is coerced into that range, see the conversion [Double.toInt] for details.\n */\n public fun toInt(unit: DurationUnit): Int = toDouble(unit).toInt()\n\n /** The value of this duration expressed as a [Double] number of days. */\n public val inDays: Double get() = toDouble(DurationUnit.DAYS)\n\n /** The value of this duration expressed as a [Double] number of hours. */\n public val inHours: Double get() = toDouble(DurationUnit.HOURS)\n\n /** The value of this duration expressed as a [Double] number of minutes. */\n public val inMinutes: Double get() = toDouble(DurationUnit.MINUTES)\n\n /** The value of this duration expressed as a [Double] number of seconds. */\n public val inSeconds: Double get() = toDouble(DurationUnit.SECONDS)\n\n /** The value of this duration expressed as a [Double] number of milliseconds. */\n public val inMilliseconds: Double get() = toDouble(DurationUnit.MILLISECONDS)\n\n /** The value of this duration expressed as a [Double] number of microseconds. */\n public val inMicroseconds: Double get() = toDouble(DurationUnit.MICROSECONDS)\n\n /** The value of this duration expressed as a [Double] number of nanoseconds. */\n public val inNanoseconds: Double get() = toDouble(DurationUnit.NANOSECONDS)\n\n // shortcuts\n\n /**\n * Returns the value of this duration expressed as a [Long] number of nanoseconds.\n *\n * If the value doesn't fit in the range of [Long] type, it is coerced into that range, see the conversion [Double.toLong] for details.\n *\n * The range of durations that can be expressed as a `Long` number of nanoseconds is approximately ±292 years.\n */\n public fun toLongNanoseconds(): Long = toLong(DurationUnit.NANOSECONDS)\n\n /**\n * Returns the value of this duration expressed as a [Long] number of milliseconds.\n *\n * The value is coerced to the range of [Long] type, if it doesn't fit in that range, see the conversion [Double.toLong] for details.\n *\n * The range of durations that can be expressed as a `Long` number of milliseconds is approximately ±292 million years.\n */\n public fun toLongMilliseconds(): Long = toLong(DurationUnit.MILLISECONDS)\n\n /**\n * Returns a string representation of this duration value expressed in the unit which yields the most compact and readable number value.\n *\n * Special cases:\n * - zero duration is formatted as `\"0s\"`\n * - the infinite duration is formatted as `\"Infinity\"` without unit\n * - very small durations (less than 1e-15 s) are expressed in seconds and formatted in scientific notation\n * - very big durations (more than 1e+7 days) are expressed in days and formatted in scientific notation\n *\n * @return the value of duration in the automatically determined unit followed by that unit abbreviated name: `d`, `h`, `m`, `s`, `ms`, `us`, or `ns`.\n *\n * @sample samples.time.Durations.toStringDefault\n */\n override fun toString(): String = when {\n isInfinite() -> value.toString()\n value == 0.0 -> \"0s\"\n else -> {\n val absNs = absoluteValue.inNanoseconds\n var scientific = false\n var maxDecimals = 0\n val unit = when {\n absNs < 1e-6 -> DurationUnit.SECONDS.also { scientific = true }\n absNs < 1 -> DurationUnit.NANOSECONDS.also { maxDecimals = 7 }\n absNs < 1e3 -> DurationUnit.NANOSECONDS\n absNs < 1e6 -> DurationUnit.MICROSECONDS\n absNs < 1e9 -> DurationUnit.MILLISECONDS\n absNs < 1000e9 -> DurationUnit.SECONDS\n absNs < 60_000e9 -> DurationUnit.MINUTES\n absNs < 3600_000e9 -> DurationUnit.HOURS\n absNs < 86400e9 * 1e7 -> DurationUnit.DAYS\n else -> DurationUnit.DAYS.also { scientific = true }\n }\n val value = toDouble(unit)\n when {\n scientific -> formatScientific(value)\n maxDecimals > 0 -> formatUpToDecimals(value, maxDecimals)\n else -> formatToExactDecimals(value, precision(abs(value)))\n } + unit.shortName()\n }\n }\n\n private fun precision(value: Double): Int = when {\n value < 1 -> 3\n value < 10 -> 2\n value < 100 -> 1\n else -> 0\n }\n\n /**\n * Returns a string representation of this duration value expressed in the given [unit]\n * and formatted with the specified [decimals] number of digits after decimal point.\n *\n * Special cases:\n * - the infinite duration is formatted as `\"Infinity\"` without unit\n *\n * @return the value of duration in the specified [unit] followed by that unit abbreviated name: `d`, `h`, `m`, `s`, `ms`, `us`, or `ns`.\n *\n * @throws IllegalArgumentException if [decimals] is less than zero.\n *\n * @sample samples.time.Durations.toStringDecimals\n */\n public fun toString(unit: DurationUnit, decimals: Int = 0): String {\n require(decimals >= 0) { \"decimals must be not negative, but was $decimals\" }\n if (isInfinite()) return value.toString()\n val number = toDouble(unit)\n return when {\n abs(number) < 1e14 -> formatToExactDecimals(number, decimals.coerceAtMost(12))\n else -> formatScientific(number)\n } + unit.shortName()\n }\n\n\n /**\n * Returns an ISO-8601 based string representation of this duration.\n *\n * The returned value is presented in the format `PThHmMs.fS`, where `h`, `m`, `s` are the integer components of this duration (see [toComponents])\n * and `f` is a fractional part of second. Depending on the roundness of the value the fractional part can be formatted with either\n * 0, 3, 6, or 9 decimal digits.\n *\n * If the hours component absolute value of this duration is greater than [Int.MAX_VALUE], it is replaced with [Int.MAX_VALUE],\n * so the infinite duration is formatted as `\"PT2147483647H\".\n *\n * Negative durations are indicated with the sign `-` in the beginning of the returned string, for example, `\"-PT5M30S\"`.\n *\n * @sample samples.time.Durations.toIsoString\n */\n @OptIn(ExperimentalStdlibApi::class)\n public fun toIsoString(): String = buildString {\n if (isNegative()) append('-')\n append(\"PT\")\n absoluteValue.toComponents { hours, minutes, seconds, nanoseconds ->\n val hasHours = hours != 0\n val hasSeconds = seconds != 0 || nanoseconds != 0\n val hasMinutes = minutes != 0 || (hasSeconds && hasHours)\n if (hasHours) {\n append(hours).append('H')\n }\n if (hasMinutes) {\n append(minutes).append('M')\n }\n if (hasSeconds || (!hasHours && !hasMinutes)) {\n append(seconds)\n if (nanoseconds != 0) {\n append('.')\n val nss = nanoseconds.toString().padStart(9, '0')\n when {\n nanoseconds % 1_000_000 == 0 -> appendRange(nss, 0, 3)\n nanoseconds % 1_000 == 0 -> appendRange(nss, 0, 6)\n else -> append(nss)\n }\n }\n append('S')\n }\n }\n }\n\n}\n\n// constructing from number of units\n// extension functions\n\n/** Returns a [Duration] equal to this [Int] number of the specified [unit]. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic fun Int.toDuration(unit: DurationUnit): Duration = toDouble().toDuration(unit)\n\n/** Returns a [Duration] equal to this [Long] number of the specified [unit]. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic fun Long.toDuration(unit: DurationUnit): Duration = toDouble().toDuration(unit)\n\n/** Returns a [Duration] equal to this [Double] number of the specified [unit]. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic fun Double.toDuration(unit: DurationUnit): Duration = Duration(convertDurationUnit(this, unit, storageUnit))\n\n// constructing from number of units\n// extension properties\n\n/** Returns a [Duration] equal to this [Int] number of nanoseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)\n\n/** Returns a [Duration] equal to this [Long] number of nanoseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)\n\n/** Returns a [Duration] equal to this [Double] number of nanoseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.nanoseconds get() = toDuration(DurationUnit.NANOSECONDS)\n\n/** Returns a [Duration] equal to this [Int] number of microseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.microseconds get() = toDuration(DurationUnit.MICROSECONDS)\n\n/** Returns a [Duration] equal to this [Long] number of microseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.microseconds get() = toDuration(DurationUnit.MICROSECONDS)\n\n/** Returns a [Duration] equal to this [Double] number of microseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.microseconds get() = toDuration(DurationUnit.MICROSECONDS)\n\n/** Returns a [Duration] equal to this [Int] number of milliseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)\n\n/** Returns a [Duration] equal to this [Long] number of milliseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)\n\n/** Returns a [Duration] equal to this [Double] number of milliseconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.milliseconds get() = toDuration(DurationUnit.MILLISECONDS)\n\n/** Returns a [Duration] equal to this [Int] number of seconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.seconds get() = toDuration(DurationUnit.SECONDS)\n\n/** Returns a [Duration] equal to this [Long] number of seconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.seconds get() = toDuration(DurationUnit.SECONDS)\n\n/** Returns a [Duration] equal to this [Double] number of seconds. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.seconds get() = toDuration(DurationUnit.SECONDS)\n\n/** Returns a [Duration] equal to this [Int] number of minutes. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.minutes get() = toDuration(DurationUnit.MINUTES)\n\n/** Returns a [Duration] equal to this [Long] number of minutes. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.minutes get() = toDuration(DurationUnit.MINUTES)\n\n/** Returns a [Duration] equal to this [Double] number of minutes. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.minutes get() = toDuration(DurationUnit.MINUTES)\n\n/** Returns a [Duration] equal to this [Int] number of hours. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.hours get() = toDuration(DurationUnit.HOURS)\n\n/** Returns a [Duration] equal to this [Long] number of hours. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.hours get() = toDuration(DurationUnit.HOURS)\n\n/** Returns a [Duration] equal to this [Double] number of hours. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.hours get() = toDuration(DurationUnit.HOURS)\n\n/** Returns a [Duration] equal to this [Int] number of days. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Int.days get() = toDuration(DurationUnit.DAYS)\n\n/** Returns a [Duration] equal to this [Long] number of days. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Long.days get() = toDuration(DurationUnit.DAYS)\n\n/** Returns a [Duration] equal to this [Double] number of days. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic val Double.days get() = toDuration(DurationUnit.DAYS)\n\n\n/** Returns a duration whose value is the specified [duration] value multiplied by this number. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@kotlin.internal.InlineOnly\npublic inline operator fun Int.times(duration: Duration): Duration = duration * this\n\n/** Returns a duration whose value is the specified [duration] value multiplied by this number. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@kotlin.internal.InlineOnly\npublic inline operator fun Double.times(duration: Duration): Duration = duration * this\n\n\ninternal expect fun formatToExactDecimals(value: Double, decimals: Int): String\ninternal expect fun formatUpToDecimals(value: Double, decimals: Int): String\ninternal expect fun formatScientific(value: Double): String","/*\n * Copyright 2010-2019 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(\"DurationUnitKt\")\n\npackage kotlin.time\n\n\n/**\n * The list of possible time measurement units, in which a duration can be expressed.\n *\n * The smallest time unit is [NANOSECONDS] and the largest is [DAYS], which corresponds to exactly 24 [HOURS].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic expect enum class DurationUnit {\n /**\n * Time unit representing one nanosecond, which is 1/1000 of a microsecond.\n */\n NANOSECONDS,\n /**\n * Time unit representing one microsecond, which is 1/1000 of a millisecond.\n */\n MICROSECONDS,\n /**\n * Time unit representing one millisecond, which is 1/1000 of a second.\n */\n MILLISECONDS,\n /**\n * Time unit representing one second.\n */\n SECONDS,\n /**\n * Time unit representing one minute.\n */\n MINUTES,\n /**\n * Time unit representing one hour.\n */\n HOURS,\n /**\n * Time unit representing one day, which is always equal to 24 hours.\n */\n DAYS;\n}\n\n/** Converts the given time duration [value] expressed in the specified [sourceUnit] into the specified [targetUnit]. */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal expect fun convertDurationUnit(value: Double, sourceUnit: DurationUnit, targetUnit: DurationUnit): Double\n\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal fun DurationUnit.shortName(): String = when (this) {\n DurationUnit.NANOSECONDS -> \"ns\"\n DurationUnit.MICROSECONDS -> \"us\"\n DurationUnit.MILLISECONDS -> \"ms\"\n DurationUnit.SECONDS -> \"s\"\n DurationUnit.MINUTES -> \"m\"\n DurationUnit.HOURS -> \"h\"\n DurationUnit.DAYS -> \"d\"\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.time\n\n/**\n * A source of time for measuring time intervals.\n *\n * The only operation provided by the time source is [markNow]. It returns a [TimeMark], which can be used to query the elapsed time later.\n *\n * @see [measureTime]\n * @see [measureTimedValue]\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic interface TimeSource {\n /**\n * Marks a point in time on this time source.\n *\n * The returned [TimeMark] instance encapsulates the captured time point and allows querying\n * the duration of time interval [elapsed][TimeMark.elapsedNow] from that point.\n */\n public fun markNow(): TimeMark\n\n /**\n * The most precise time source available in the platform.\n *\n * This time source returns its readings from a source of monotonic time when it is available in a target platform,\n * and resorts to a non-monotonic time source otherwise.\n */\n public object Monotonic : TimeSource by MonotonicTimeSource {\n override fun toString(): String = MonotonicTimeSource.toString()\n }\n\n\n public companion object {\n\n }\n}\n\n/**\n * Represents a time point notched on a particular [TimeSource]. Remains bound to the time source it was taken from\n * and allows querying for the duration of time elapsed from that point (see the function [elapsedNow]).\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic abstract class TimeMark {\n /**\n * Returns the amount of time passed from this mark measured with the time source from which this mark was taken.\n *\n * Note that the value returned by this function can change on subsequent invocations.\n */\n public abstract fun elapsedNow(): Duration\n\n /**\n * Returns a time mark on the same time source that is ahead of this time mark by the specified [duration].\n *\n * The returned time mark is more _late_ when the [duration] is positive, and more _early_ when the [duration] is negative.\n */\n public open operator fun plus(duration: Duration): TimeMark = AdjustedTimeMark(this, duration)\n\n /**\n * Returns a time mark on the same time source that is behind this time mark by the specified [duration].\n *\n * The returned time mark is more _early_ when the [duration] is positive, and more _late_ when the [duration] is negative.\n */\n public open operator fun minus(duration: Duration): TimeMark = plus(-duration)\n\n\n /**\n * Returns true if this time mark has passed according to the time source from which this mark was taken.\n *\n * Note that the value returned by this function can change on subsequent invocations.\n * If the time source is monotonic, it can change only from `false` to `true`, namely, when the time mark becomes behind the current point of the time source.\n */\n public fun hasPassedNow(): Boolean = !elapsedNow().isNegative()\n\n /**\n * Returns false if this time mark has not passed according to the time source from which this mark was taken.\n *\n * Note that the value returned by this function can change on subsequent invocations.\n * If the time source is monotonic, it can change only from `true` to `false`, namely, when the time mark becomes behind the current point of the time source.\n */\n public fun hasNotPassedNow(): Boolean = elapsedNow().isNegative()\n}\n\n\n@ExperimentalTime\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Deprecated(\n \"Subtracting one TimeMark from another is not a well defined operation because these time marks could have been obtained from the different time sources.\",\n level = DeprecationLevel.ERROR\n)\n@Suppress(\"UNUSED_PARAMETER\")\npublic inline operator fun TimeMark.minus(other: TimeMark): Duration = throw Error(\"Operation is disallowed.\")\n\n@ExperimentalTime\n@SinceKotlin(\"1.3\")\n@kotlin.internal.InlineOnly\n@Deprecated(\n \"Comparing one TimeMark to another is not a well defined operation because these time marks could have been obtained from the different time sources.\",\n level = DeprecationLevel.ERROR\n)\n@Suppress(\"UNUSED_PARAMETER\")\npublic inline operator fun TimeMark.compareTo(other: TimeMark): Int = throw Error(\"Operation is disallowed.\")\n\n\n@ExperimentalTime\nprivate class AdjustedTimeMark(val mark: TimeMark, val adjustment: Duration) : TimeMark() {\n override fun elapsedNow(): Duration = mark.elapsedNow() - adjustment\n\n override fun plus(duration: Duration): TimeMark = AdjustedTimeMark(mark, adjustment + duration)\n}\n\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Deprecated(\"Use TimeSource interface instead.\", ReplaceWith(\"TimeSource\", \"kotlin.time.TimeSource\"), DeprecationLevel.ERROR)\npublic typealias Clock = TimeSource\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Deprecated(\"Use TimeMark class instead.\", ReplaceWith(\"TimeMark\", \"kotlin.time.TimeMark\"), DeprecationLevel.ERROR)\npublic typealias ClockMark = TimeMark\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(\"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","/*\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.time\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\ninternal expect object MonotonicTimeSource : TimeSource\n\n/**\n * An abstract class used to implement time sources that return their readings as [Long] values in the specified [unit].\n *\n * @property unit The unit in which this time source's readings are expressed.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic abstract class AbstractLongTimeSource(protected val unit: DurationUnit) : TimeSource {\n /**\n * This protected method should be overridden to return the current reading of the time source expressed as a [Long] number\n * in the unit specified by the [unit] property.\n */\n protected abstract fun read(): Long\n\n private class LongTimeMark(private val startedAt: Long, private val timeSource: AbstractLongTimeSource, private val offset: Duration) : TimeMark() {\n override fun elapsedNow(): Duration = (timeSource.read() - startedAt).toDuration(timeSource.unit) - offset\n override fun plus(duration: Duration): TimeMark = LongTimeMark(startedAt, timeSource, offset + duration)\n }\n\n override fun markNow(): TimeMark = LongTimeMark(read(), this, Duration.ZERO)\n}\n\n/**\n * An abstract class used to implement time sources that return their readings as [Double] values in the specified [unit].\n *\n * @property unit The unit in which this time source's readings are expressed.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic abstract class AbstractDoubleTimeSource(protected val unit: DurationUnit) : TimeSource {\n /**\n * This protected method should be overridden to return the current reading of the time source expressed as a [Double] number\n * in the unit specified by the [unit] property.\n */\n protected abstract fun read(): Double\n\n private class DoubleTimeMark(private val startedAt: Double, private val timeSource: AbstractDoubleTimeSource, private val offset: Duration) : TimeMark() {\n override fun elapsedNow(): Duration = (timeSource.read() - startedAt).toDuration(timeSource.unit) - offset\n override fun plus(duration: Duration): TimeMark = DoubleTimeMark(startedAt, timeSource, offset + duration)\n }\n\n override fun markNow(): TimeMark = DoubleTimeMark(read(), this, Duration.ZERO)\n}\n\n/**\n * A time source that has programmatically updatable readings. It is useful as a predictable source of time in tests.\n *\n * The current reading value can be advanced by the specified duration amount with the operator [plusAssign]:\n *\n * ```\n * val timeSource = TestTimeSource()\n * timeSource += 10.seconds\n * ```\n *\n * Implementation note: the current reading value is stored as a [Long] number of nanoseconds,\n * thus it's capable to represent a time range of approximately ±292 years.\n * Should the reading value overflow as the result of [plusAssign] operation, an [IllegalStateException] is thrown.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic class TestTimeSource : AbstractLongTimeSource(unit = DurationUnit.NANOSECONDS) {\n private var reading: Long = 0L\n\n override fun read(): Long = reading\n\n /**\n * Advances the current reading value of this time source by the specified [duration].\n *\n * [duration] value is rounded down towards zero when converting it to a [Long] number of nanoseconds.\n * For example, if the duration being added is `0.6.nanoseconds`, the reading doesn't advance because\n * the duration value is rounded to zero nanoseconds.\n *\n * @throws IllegalStateException when the reading value overflows as the result of this operation.\n */\n public operator fun plusAssign(duration: Duration) {\n val delta = duration.toDouble(unit)\n val longDelta = delta.toLong()\n reading = if (longDelta != Long.MIN_VALUE && longDelta != Long.MAX_VALUE) {\n // when delta fits in long, add it as long\n val newReading = reading + longDelta\n if (reading xor longDelta >= 0 && reading xor newReading < 0) overflow(duration)\n newReading\n } else {\n // when delta is greater than long, add it as double\n val newReading = reading + delta\n if (newReading > Long.MAX_VALUE || newReading < Long.MIN_VALUE) overflow(duration)\n newReading.toLong()\n }\n }\n\n private fun overflow(duration: Duration) {\n throw IllegalStateException(\"TestTimeSource will overflow if its reading ${reading}ns is advanced by $duration.\")\n }\n}\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Deprecated(\"Use TimeSource.Monotonic instead.\", ReplaceWith(\"TimeSource.Monotonic\", \"kotlin.time.TimeSource\"), DeprecationLevel.ERROR)\npublic typealias MonoClock = TimeSource.Monotonic\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Deprecated(\"Use AbstractLongTimeSource instead.\", ReplaceWith(\"AbstractLongTimeSource\", \"kotlin.time.AbstractLongTimeSource\"), DeprecationLevel.ERROR)\npublic typealias AbstractLongClock = AbstractLongTimeSource\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Deprecated(\"Use AbstractDoubleTimeSource instead.\", ReplaceWith(\"AbstractDoubleTimeSource\", \"kotlin.time.AbstractDoubleTimeSource\"), DeprecationLevel.ERROR)\npublic typealias AbstractDoubleClock = AbstractDoubleTimeSource\n\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\n@Deprecated(\"Use TestTimeSource instead.\", ReplaceWith(\"TestTimeSource\", \"kotlin.time.TestTimeSource\"), DeprecationLevel.ERROR)\npublic typealias TestClock = TestTimeSource\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.time\n\nimport kotlin.contracts.*\n\n/**\n * Executes the given function [block] and returns the duration of elapsed time interval.\n *\n * The elapsed time is measured with [TimeSource.Monotonic].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic inline fun measureTime(block: () -> Unit): Duration {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return TimeSource.Monotonic.measureTime(block)\n}\n\n\n/**\n * Executes the given function [block] and returns the duration of elapsed time interval.\n *\n * The elapsed time is measured with the specified `this` [TimeSource] instance.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic inline fun TimeSource.measureTime(block: () -> Unit): Duration {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n val mark = markNow()\n block()\n return mark.elapsedNow()\n}\n\n\n/**\n * Data class representing a result of executing an action, along with the duration of elapsed time interval.\n *\n * @property value the result of the action.\n * @property duration the time elapsed to execute the action.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic data class TimedValue(val value: T, val duration: Duration)\n\n/**\n * Executes the given function [block] and returns an instance of [TimedValue] class, containing both\n * the result of the function execution and the duration of elapsed time interval.\n *\n * The elapsed time is measured with [TimeSource.Monotonic].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic inline fun measureTimedValue(block: () -> T): TimedValue {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n return TimeSource.Monotonic.measureTimedValue(block)\n}\n\n/**\n * Executes the given [block] and returns an instance of [TimedValue] class, containing both\n * the result of function execution and the duration of elapsed time interval.\n *\n * The elapsed time is measured with the specified `this` [TimeSource] instance.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalTime\npublic inline fun TimeSource.measureTimedValue(block: () -> T): TimedValue {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n val mark = markNow()\n val result = block()\n return TimedValue(result, mark.elapsedNow())\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.JvmName(\"LazyKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin\n\nimport kotlin.reflect.KProperty\n\n/**\n * Represents a value with lazy initialization.\n *\n * To create an instance of [Lazy] use the [lazy] function.\n */\npublic interface Lazy {\n /**\n * Gets the lazily initialized value of the current Lazy instance.\n * Once the value was initialized it must not change during the rest of lifetime of this Lazy instance.\n */\n public val value: T\n\n /**\n * Returns `true` if a value for this Lazy instance has been already initialized, and `false` otherwise.\n * Once this function has returned `true` it stays `true` for the rest of lifetime of this Lazy instance.\n */\n public fun isInitialized(): Boolean\n}\n\n/**\n * Creates a new instance of the [Lazy] that is already initialized with the specified [value].\n */\npublic fun lazyOf(value: T): Lazy = InitializedLazyImpl(value)\n\n/**\n * An extension to delegate a read-only property of type [T] to an instance of [Lazy].\n *\n * This extension allows to use instances of Lazy for property delegation:\n * `val property: String by lazy { initializer }`\n */\n@kotlin.internal.InlineOnly\npublic inline operator fun Lazy.getValue(thisRef: Any?, property: KProperty<*>): T = value\n\n/**\n * Specifies how a [Lazy] instance synchronizes initialization among multiple threads.\n */\npublic enum class LazyThreadSafetyMode {\n\n /**\n * Locks are used to ensure that only a single thread can initialize the [Lazy] instance.\n */\n SYNCHRONIZED,\n\n /**\n * Initializer function can be called several times on concurrent access to uninitialized [Lazy] instance value,\n * but only the first returned value will be used as the value of [Lazy] instance.\n */\n PUBLICATION,\n\n /**\n * No locks are used to synchronize an access to the [Lazy] instance value; if the instance is accessed from multiple threads, its behavior is undefined.\n *\n * This mode should not be used unless the [Lazy] instance is guaranteed never to be initialized from more than one thread.\n */\n NONE,\n}\n\n\ninternal object UNINITIALIZED_VALUE\n\n// internal to be called from lazy in JS\ninternal class UnsafeLazyImpl(initializer: () -> T) : Lazy, Serializable {\n private var initializer: (() -> T)? = initializer\n private var _value: Any? = UNINITIALIZED_VALUE\n\n override val value: T\n get() {\n if (_value === UNINITIALIZED_VALUE) {\n _value = initializer!!()\n initializer = null\n }\n @Suppress(\"UNCHECKED_CAST\")\n return _value as T\n }\n\n override fun isInitialized(): Boolean = _value !== UNINITIALIZED_VALUE\n\n override fun toString(): String = if (isInitialized()) value.toString() else \"Lazy value not initialized yet.\"\n\n private fun writeReplace(): Any = InitializedLazyImpl(value)\n}\n\ninternal class InitializedLazyImpl(override val value: T) : Lazy, Serializable {\n\n override fun isInitialized(): Boolean = true\n\n override fun toString(): String = value.toString()\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.JvmName(\"TuplesKt\")\n\npackage kotlin\n\n\n/**\n * Represents a generic pair of two values.\n *\n * There is no meaning attached to values in this class, it can be used for any purpose.\n * Pair exhibits value semantics, i.e. two pairs are equal if both components are equal.\n *\n * An example of decomposing it into values:\n * @sample samples.misc.Tuples.pairDestructuring\n *\n * @param A type of the first value.\n * @param B type of the second value.\n * @property first First value.\n * @property second Second value.\n * @constructor Creates a new instance of Pair.\n */\npublic data class Pair(\n public val first: A,\n public val second: B\n) : Serializable {\n\n /**\n * Returns string representation of the [Pair] including its [first] and [second] values.\n */\n public override fun toString(): String = \"($first, $second)\"\n}\n\n/**\n * Creates a tuple of type [Pair] from this and [that].\n *\n * This can be useful for creating [Map] literals with less noise, for example:\n * @sample samples.collections.Maps.Instantiation.mapFromPairs\n */\npublic infix fun A.to(that: B): Pair = Pair(this, that)\n\n/**\n * Converts this pair into a list.\n * @sample samples.misc.Tuples.pairToList\n */\npublic fun Pair.toList(): List = listOf(first, second)\n\n/**\n * Represents a triad of values\n *\n * There is no meaning attached to values in this class, it can be used for any purpose.\n * Triple exhibits value semantics, i.e. two triples are equal if all three components are equal.\n * An example of decomposing it into values:\n * @sample samples.misc.Tuples.tripleDestructuring\n *\n * @param A type of the first value.\n * @param B type of the second value.\n * @param C type of the third value.\n * @property first First value.\n * @property second Second value.\n * @property third Third value.\n */\npublic data class Triple(\n public val first: A,\n public val second: B,\n public val third: C\n) : Serializable {\n\n /**\n * Returns string representation of the [Triple] including its [first], [second] and [third] values.\n */\n public override fun toString(): String = \"($first, $second, $third)\"\n}\n\n/**\n * Converts this triple into a list.\n * @sample samples.misc.Tuples.tripleToList\n */\npublic fun Triple.toList(): List = listOf(first, second, third)\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// Auto-generated file. DO NOT EDIT!\n\npackage kotlin\n\nimport kotlin.experimental.*\n\n@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline class ULong @PublishedApi internal constructor(@PublishedApi internal val data: Long) : Comparable {\n\n companion object {\n /**\n * A constant holding the minimum value an instance of ULong can have.\n */\n public const val MIN_VALUE: ULong = ULong(0)\n\n /**\n * A constant holding the maximum value an instance of ULong can have.\n */\n public const val MAX_VALUE: ULong = ULong(-1)\n\n /**\n * The number of bytes used to represent an instance of ULong in a binary form.\n */\n public const val SIZE_BYTES: Int = 8\n\n /**\n * The number of bits used to represent an instance of ULong in a binary form.\n */\n public const val SIZE_BITS: Int = 64\n }\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UByte): Int = this.compareTo(other.toULong())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UShort): Int = this.compareTo(other.toULong())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n public inline operator fun compareTo(other: UInt): Int = this.compareTo(other.toULong())\n\n /**\n * Compares this value with the specified value for order.\n * Returns zero if this value is equal to the specified other value, a negative number if it's less than other,\n * or a positive number if it's greater than other.\n */\n @kotlin.internal.InlineOnly\n @Suppress(\"OVERRIDE_BY_INLINE\")\n public override inline operator fun compareTo(other: ULong): Int = ulongCompare(this.data, other.data)\n\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UByte): ULong = this.plus(other.toULong())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UShort): ULong = this.plus(other.toULong())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: UInt): ULong = this.plus(other.toULong())\n /** Adds the other value to this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun plus(other: ULong): ULong = ULong(this.data.plus(other.data))\n\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UByte): ULong = this.minus(other.toULong())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UShort): ULong = this.minus(other.toULong())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: UInt): ULong = this.minus(other.toULong())\n /** Subtracts the other value from this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun minus(other: ULong): ULong = ULong(this.data.minus(other.data))\n\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UByte): ULong = this.times(other.toULong())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UShort): ULong = this.times(other.toULong())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: UInt): ULong = this.times(other.toULong())\n /** Multiplies this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun times(other: ULong): ULong = ULong(this.data.times(other.data))\n\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UByte): ULong = this.div(other.toULong())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UShort): ULong = this.div(other.toULong())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: UInt): ULong = this.div(other.toULong())\n /** Divides this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun div(other: ULong): ULong = ulongDivide(this, other)\n\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UByte): ULong = this.rem(other.toULong())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UShort): ULong = this.rem(other.toULong())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: UInt): ULong = this.rem(other.toULong())\n /** Calculates the remainder of dividing this value by the other value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rem(other: ULong): ULong = ulongRemainder(this, other)\n\n /** Increments this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun inc(): ULong = ULong(data.inc())\n /** Decrements this value. */\n @kotlin.internal.InlineOnly\n public inline operator fun dec(): ULong = ULong(data.dec())\n\n /** Creates a range from this value to the specified [other] value. */\n @kotlin.internal.InlineOnly\n public inline operator fun rangeTo(other: ULong): ULongRange = ULongRange(this, other)\n\n /**\n * Shifts this value left by the [bitCount] number of bits.\n *\n * Note that only the six lowest-order bits of the [bitCount] are used as the shift distance.\n * The shift distance actually used is therefore always in the range `0..63`.\n */\n @kotlin.internal.InlineOnly\n public inline infix fun shl(bitCount: Int): ULong = ULong(data shl bitCount)\n\n /**\n * Shifts this value right by the [bitCount] number of bits, filling the leftmost bits with zeros.\n *\n * Note that only the six lowest-order bits of the [bitCount] are used as the shift distance.\n * The shift distance actually used is therefore always in the range `0..63`.\n */\n @kotlin.internal.InlineOnly\n public inline infix fun shr(bitCount: Int): ULong = ULong(data ushr bitCount)\n\n /** Performs a bitwise AND operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun and(other: ULong): ULong = ULong(this.data and other.data)\n /** Performs a bitwise OR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun or(other: ULong): ULong = ULong(this.data or other.data)\n /** Performs a bitwise XOR operation between the two values. */\n @kotlin.internal.InlineOnly\n public inline infix fun xor(other: ULong): ULong = ULong(this.data xor other.data)\n /** Inverts the bits in this value. */\n @kotlin.internal.InlineOnly\n public inline fun inv(): ULong = ULong(data.inv())\n\n /**\n * Converts this [ULong] value to [Byte].\n *\n * If this value is less than or equals to [Byte.MAX_VALUE], the resulting `Byte` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `Byte` value is represented by the least significant 8 bits of this `ULong` value.\n * Note that the resulting `Byte` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toByte(): Byte = data.toByte()\n /**\n * Converts this [ULong] value to [Short].\n *\n * If this value is less than or equals to [Short.MAX_VALUE], the resulting `Short` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `Short` value is represented by the least significant 16 bits of this `ULong` value.\n * Note that the resulting `Short` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toShort(): Short = data.toShort()\n /**\n * Converts this [ULong] value to [Int].\n *\n * If this value is less than or equals to [Int.MAX_VALUE], the resulting `Int` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `Int` value is represented by the least significant 32 bits of this `ULong` value.\n * Note that the resulting `Int` value may be negative.\n */\n @kotlin.internal.InlineOnly\n public inline fun toInt(): Int = data.toInt()\n /**\n * Converts this [ULong] value to [Long].\n *\n * If this value is less than or equals to [Long.MAX_VALUE], the resulting `Long` value represents\n * the same numerical value as this `ULong`. Otherwise the result is negative.\n *\n * The resulting `Long` value has the same binary representation as this `ULong` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toLong(): Long = data\n\n /**\n * Converts this [ULong] value to [UByte].\n *\n * If this value is less than or equals to [UByte.MAX_VALUE], the resulting `UByte` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `UByte` value is represented by the least significant 8 bits of this `ULong` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUByte(): UByte = data.toUByte()\n /**\n * Converts this [ULong] value to [UShort].\n *\n * If this value is less than or equals to [UShort.MAX_VALUE], the resulting `UShort` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `UShort` value is represented by the least significant 16 bits of this `ULong` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUShort(): UShort = data.toUShort()\n /**\n * Converts this [ULong] value to [UInt].\n *\n * If this value is less than or equals to [UInt.MAX_VALUE], the resulting `UInt` value represents\n * the same numerical value as this `ULong`.\n *\n * The resulting `UInt` value is represented by the least significant 32 bits of this `ULong` value.\n */\n @kotlin.internal.InlineOnly\n public inline fun toUInt(): UInt = data.toUInt()\n /** Returns this value. */\n @kotlin.internal.InlineOnly\n public inline fun toULong(): ULong = this\n\n /**\n * Converts this [ULong] value to [Float].\n *\n * The resulting value is the closest `Float` to this `ULong` value.\n * In case when this `ULong` value is exactly between two `Float`s,\n * the one with zero at least significant bit of mantissa is selected.\n */\n @kotlin.internal.InlineOnly\n public inline fun toFloat(): Float = this.toDouble().toFloat()\n /**\n * Converts this [ULong] value to [Double].\n *\n * The resulting value is the closest `Double` to this `ULong` value.\n * In case when this `ULong` value is exactly between two `Double`s,\n * the one with zero at least significant bit of mantissa is selected.\n */\n @kotlin.internal.InlineOnly\n public inline fun toDouble(): Double = ulongToDouble(data)\n\n public override fun toString(): String = ulongToString(data)\n\n}\n\n/**\n * Converts this [Byte] value to [ULong].\n *\n * If this value is positive, the resulting `ULong` value represents the same numerical value as this `Byte`.\n *\n * The least significant 8 bits of the resulting `ULong` value are the same as the bits of this `Byte` value,\n * whereas the most significant 56 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Byte.toULong(): ULong = ULong(this.toLong())\n/**\n * Converts this [Short] value to [ULong].\n *\n * If this value is positive, the resulting `ULong` value represents the same numerical value as this `Short`.\n *\n * The least significant 16 bits of the resulting `ULong` value are the same as the bits of this `Short` value,\n * whereas the most significant 48 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Short.toULong(): ULong = ULong(this.toLong())\n/**\n * Converts this [Int] value to [ULong].\n *\n * If this value is positive, the resulting `ULong` value represents the same numerical value as this `Int`.\n *\n * The least significant 32 bits of the resulting `ULong` value are the same as the bits of this `Int` value,\n * whereas the most significant 32 bits are filled with the sign bit of this value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Int.toULong(): ULong = ULong(this.toLong())\n/**\n * Converts this [Long] value to [ULong].\n *\n * If this value is positive, the resulting `ULong` value represents the same numerical value as this `Long`.\n *\n * The resulting `ULong` value has the same binary representation as this `Long` value.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Long.toULong(): ULong = ULong(this)\n\n/**\n * Converts this [Float] value to [ULong].\n *\n * The fractional part, if any, is rounded down towards zero.\n * Returns zero if this `Float` value is negative or `NaN`, [ULong.MAX_VALUE] if it's bigger than `ULong.MAX_VALUE`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Float.toULong(): ULong = doubleToULong(this.toDouble())\n/**\n * Converts this [Double] value to [ULong].\n *\n * The fractional part, if any, is rounded down towards zero.\n * Returns zero if this `Double` value is negative or `NaN`, [ULong.MAX_VALUE] if it's bigger than `ULong.MAX_VALUE`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun Double.toULong(): ULong = doubleToULong(this)\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.experimental\n\n/** Performs a bitwise AND operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Byte.and(other: Byte): Byte = (this.toInt() and other.toInt()).toByte()\n\n/** Performs a bitwise OR operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Byte.or(other: Byte): Byte = (this.toInt() or other.toInt()).toByte()\n\n/** Performs a bitwise XOR operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Byte.xor(other: Byte): Byte = (this.toInt() xor other.toInt()).toByte()\n\n/** Inverts the bits in this value. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun Byte.inv(): Byte = (this.toInt().inv()).toByte()\n\n\n/** Performs a bitwise AND operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Short.and(other: Short): Short = (this.toInt() and other.toInt()).toShort()\n\n/** Performs a bitwise OR operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Short.or(other: Short): Short = (this.toInt() or other.toInt()).toShort()\n\n/** Performs a bitwise XOR operation between the two values. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline infix fun Short.xor(other: Short): Short = (this.toInt() xor other.toInt()).toShort()\n\n/** Inverts the bits in this value. */\n@SinceKotlin(\"1.1\")\n@kotlin.internal.InlineOnly\npublic inline fun Short.inv(): Short = (this.toInt().inv()).toShort()\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\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\n\n\nimport kotlin.internal.*\n\n/**\n * A range of values of type `UInt`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic class UIntRange(start: UInt, endInclusive: UInt) : UIntProgression(start, endInclusive, 1), ClosedRange {\n override val start: UInt get() = first\n override val endInclusive: UInt get() = last\n\n override fun contains(value: UInt): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is UIntRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * first.toInt() + last.toInt())\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type UInt. */\n public val EMPTY: UIntRange = UIntRange(UInt.MAX_VALUE, UInt.MIN_VALUE)\n }\n}\n\n/**\n * A progression of values of type `UInt`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic open class UIntProgression\ninternal constructor(\n start: UInt,\n endInclusive: UInt,\n step: Int\n) : Iterable {\n init {\n if (step == 0.toInt()) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Int.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Int.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: UInt = start\n\n /**\n * The last element in the progression.\n */\n public val last: UInt = getProgressionLastElement(start, endInclusive, step)\n\n /**\n * The step of the progression.\n */\n public val step: Int = step\n\n override fun iterator(): UIntIterator = UIntProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is UIntProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * first.toInt() + last.toInt()) + step.toInt())\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates UIntProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Int.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: UInt, rangeEnd: UInt, step: Int): UIntProgression = UIntProgression(rangeStart, rangeEnd, step)\n }\n}\n\n\n/**\n * An iterator over a progression of values of type `UInt`.\n * @property step the number by which the value is incremented on each step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\nprivate class UIntProgressionIterator(first: UInt, last: UInt, step: Int) : UIntIterator() {\n private val finalElement = last\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private val step = step.toUInt() // use 2-complement math for negative steps\n private var next = if (hasNext) first else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextUInt(): UInt {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n } else {\n next += step\n }\n return value\n }\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\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.collections\n\n/** An iterator over a sequence of values of type `UByte`. */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic abstract class UByteIterator : Iterator {\n override final fun next() = nextUByte()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextUByte(): UByte\n}\n\n/** An iterator over a sequence of values of type `UShort`. */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic abstract class UShortIterator : Iterator {\n override final fun next() = nextUShort()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextUShort(): UShort\n}\n\n/** An iterator over a sequence of values of type `UInt`. */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic abstract class UIntIterator : Iterator {\n override final fun next() = nextUInt()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextUInt(): UInt\n}\n\n/** An iterator over a sequence of values of type `ULong`. */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic abstract class ULongIterator : Iterator {\n override final fun next() = nextULong()\n\n /** Returns the next value in the sequence without boxing. */\n public abstract fun nextULong(): ULong\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\n// Auto-generated file. DO NOT EDIT!\n\npackage kotlin.ranges\n\n\n\nimport kotlin.internal.*\n\n/**\n * A range of values of type `ULong`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic class ULongRange(start: ULong, endInclusive: ULong) : ULongProgression(start, endInclusive, 1), ClosedRange {\n override val start: ULong get() = first\n override val endInclusive: ULong get() = last\n\n override fun contains(value: ULong): Boolean = first <= value && value <= last\n\n override fun isEmpty(): Boolean = first > last\n\n override fun equals(other: Any?): Boolean =\n other is ULongRange && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (first xor (first shr 32)).toInt() + (last xor (last shr 32)).toInt())\n\n override fun toString(): String = \"$first..$last\"\n\n companion object {\n /** An empty range of values of type ULong. */\n public val EMPTY: ULongRange = ULongRange(ULong.MAX_VALUE, ULong.MIN_VALUE)\n }\n}\n\n/**\n * A progression of values of type `ULong`.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic open class ULongProgression\ninternal constructor(\n start: ULong,\n endInclusive: ULong,\n step: Long\n) : Iterable {\n init {\n if (step == 0.toLong()) throw kotlin.IllegalArgumentException(\"Step must be non-zero.\")\n if (step == Long.MIN_VALUE) throw kotlin.IllegalArgumentException(\"Step must be greater than Long.MIN_VALUE to avoid overflow on negation.\")\n }\n\n /**\n * The first element in the progression.\n */\n public val first: ULong = start\n\n /**\n * The last element in the progression.\n */\n public val last: ULong = getProgressionLastElement(start, endInclusive, step)\n\n /**\n * The step of the progression.\n */\n public val step: Long = step\n\n override fun iterator(): ULongIterator = ULongProgressionIterator(first, last, step)\n\n /** Checks if the progression is empty. */\n public open fun isEmpty(): Boolean = if (step > 0) first > last else first < last\n\n override fun equals(other: Any?): Boolean =\n other is ULongProgression && (isEmpty() && other.isEmpty() ||\n first == other.first && last == other.last && step == other.step)\n\n override fun hashCode(): Int =\n if (isEmpty()) -1 else (31 * (31 * (first xor (first shr 32)).toInt() + (last xor (last shr 32)).toInt()) + (step xor (step ushr 32)).toInt())\n\n override fun toString(): String = if (step > 0) \"$first..$last step $step\" else \"$first downTo $last step ${-step}\"\n\n companion object {\n /**\n * Creates ULongProgression within the specified bounds of a closed range.\n\n * The progression starts with the [rangeStart] value and goes toward the [rangeEnd] value not excluding it, with the specified [step].\n * In order to go backwards the [step] must be negative.\n *\n * [step] must be greater than `Long.MIN_VALUE` and not equal to zero.\n */\n public fun fromClosedRange(rangeStart: ULong, rangeEnd: ULong, step: Long): ULongProgression = ULongProgression(rangeStart, rangeEnd, step)\n }\n}\n\n\n/**\n * An iterator over a progression of values of type `ULong`.\n * @property step the number by which the value is incremented on each step.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\nprivate class ULongProgressionIterator(first: ULong, last: ULong, step: Long) : ULongIterator() {\n private val finalElement = last\n private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n private val step = step.toULong() // use 2-complement math for negative steps\n private var next = if (hasNext) first else finalElement\n\n override fun hasNext(): Boolean = hasNext\n\n override fun nextULong(): ULong {\n val value = next\n if (value == finalElement) {\n if (!hasNext) throw kotlin.NoSuchElementException()\n hasNext = false\n } else {\n next += step\n }\n return value\n }\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:OptIn(ExperimentalUnsignedTypes::class)\npackage kotlin.internal\n\n// (a - b) mod c\nprivate fun differenceModulo(a: UInt, b: UInt, c: UInt): UInt {\n val ac = a % c\n val bc = b % c\n return if (ac >= bc) ac - bc else ac - bc + c\n}\n\nprivate fun differenceModulo(a: ULong, b: ULong, c: ULong): ULong {\n val ac = a % c\n val bc = b % c\n return if (ac >= bc) ac - bc else ac - bc + c\n}\n\n/**\n * Calculates the final element of a bounded arithmetic progression, i.e. the last element of the progression which is in the range\n * from [start] to [end] in case of a positive [step], or from [end] to [start] in case of a negative\n * [step].\n *\n * No validation on passed parameters is performed. The given parameters should satisfy the condition:\n *\n * - either `step > 0` and `start <= end`,\n * - or `step < 0` and `start >= end`.\n *\n * @param start first element of the progression\n * @param end ending bound for the progression\n * @param step increment, or difference of successive elements in the progression\n * @return the final element of the progression\n * @suppress\n */\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun getProgressionLastElement(start: UInt, end: UInt, step: Int): UInt = when {\n step > 0 -> if (start >= end) end else end - differenceModulo(end, start, step.toUInt())\n step < 0 -> if (start <= end) end else end + differenceModulo(start, end, (-step).toUInt())\n else -> throw kotlin.IllegalArgumentException(\"Step is zero.\")\n}\n\n/**\n * Calculates the final element of a bounded arithmetic progression, i.e. the last element of the progression which is in the range\n * from [start] to [end] in case of a positive [step], or from [end] to [start] in case of a negative\n * [step].\n *\n * No validation on passed parameters is performed. The given parameters should satisfy the condition:\n *\n * - either `step > 0` and `start <= end`,\n * - or `step < 0` and `start >= end`.\n *\n * @param start first element of the progression\n * @param end ending bound for the progression\n * @param step increment, or difference of successive elements in the progression\n * @return the final element of the progression\n * @suppress\n */\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal fun getProgressionLastElement(start: ULong, end: ULong, step: Long): ULong = when {\n step > 0 -> if (start >= end) end else end - differenceModulo(end, start, step.toULong())\n step < 0 -> if (start <= end) end else end + differenceModulo(start, end, (-step).toULong())\n else -> throw kotlin.IllegalArgumentException(\"Step is zero.\")\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.JvmName(\"UStringsKt\") // string representation of unsigned numbers\n\npackage kotlin.text\n\n/**\n * Returns a string representation of this [Byte] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n//@kotlin.internal.InlineOnly\npublic /*inline*/ fun UByte.toString(radix: Int): String = this.toInt().toString(radix)\n\n/**\n * Returns a string representation of this [Short] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n//@kotlin.internal.InlineOnly\npublic /*inline*/ fun UShort.toString(radix: Int): String = this.toInt().toString(radix)\n\n\n/**\n * Returns a string representation of this [Int] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n//@kotlin.internal.InlineOnly\npublic /*inline*/ fun UInt.toString(radix: Int): String = this.toLong().toString(radix)\n\n/**\n * Returns a string representation of this [Long] value in the specified [radix].\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULong.toString(radix: Int): String = ulongToString(this.toLong(), checkRadix(radix))\n\n\n/**\n * Parses the string as a signed [UByte] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUByte(): UByte = toUByteOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a signed [UByte] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUByte(radix: Int): UByte = toUByteOrNull(radix) ?: numberFormatError(this)\n\n\n/**\n * Parses the string as a [UShort] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUShort(): UShort = toUShortOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a [UShort] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUShort(radix: Int): UShort = toUShortOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as an [UInt] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUInt(): UInt = toUIntOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as an [UInt] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUInt(radix: Int): UInt = toUIntOrNull(radix) ?: numberFormatError(this)\n\n/**\n * Parses the string as a [ULong] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toULong(): ULong = toULongOrNull() ?: numberFormatError(this)\n\n/**\n * Parses the string as a [ULong] number and returns the result.\n * @throws NumberFormatException if the string is not a valid representation of a number.\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toULong(radix: Int): ULong = toULongOrNull(radix) ?: numberFormatError(this)\n\n\n\n\n\n/**\n * Parses the string as an [UByte] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUByteOrNull(): UByte? = toUByteOrNull(radix = 10)\n\n/**\n * Parses the string as an [UByte] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUByteOrNull(radix: Int): UByte? {\n val int = this.toUIntOrNull(radix) ?: return null\n if (int > UByte.MAX_VALUE) return null\n return int.toUByte()\n}\n\n/**\n * Parses the string as an [UShort] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUShortOrNull(): UShort? = toUShortOrNull(radix = 10)\n\n/**\n * Parses the string as an [UShort] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUShortOrNull(radix: Int): UShort? {\n val int = this.toUIntOrNull(radix) ?: return null\n if (int > UShort.MAX_VALUE) return null\n return int.toUShort()\n}\n\n/**\n * Parses the string as an [UInt] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUIntOrNull(): UInt? = toUIntOrNull(radix = 10)\n\n/**\n * Parses the string as an [UInt] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toUIntOrNull(radix: Int): UInt? {\n checkRadix(radix)\n\n val length = this.length\n if (length == 0) return null\n\n val limit: UInt = UInt.MAX_VALUE\n val start: Int\n\n val firstChar = this[0]\n if (firstChar < '0') {\n if (length == 1 || firstChar != '+') return null\n start = 1\n } else {\n start = 0\n }\n\n val limitForMaxRadix = 119304647u // limit / 36\n\n var limitBeforeMul = limitForMaxRadix\n val uradix = radix.toUInt()\n var result = 0u\n for (i in start until length) {\n val digit = digitOf(this[i], radix)\n\n if (digit < 0) return null\n if (result > limitBeforeMul) {\n if (limitBeforeMul == limitForMaxRadix) {\n limitBeforeMul = limit / uradix\n\n if (result > limitBeforeMul) {\n return null\n }\n } else {\n return null\n }\n }\n\n result *= uradix\n\n val beforeAdding = result\n result += digit.toUInt()\n if (result < beforeAdding) return null // overflow has happened\n }\n\n return result\n}\n\n/**\n * Parses the string as an [ULong] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toULongOrNull(): ULong? = toULongOrNull(radix = 10)\n\n/**\n * Parses the string as an [ULong] number and returns the result\n * or `null` if the string is not a valid representation of a number.\n *\n * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun String.toULongOrNull(radix: Int): ULong? {\n checkRadix(radix)\n\n val length = this.length\n if (length == 0) return null\n\n val limit: ULong = ULong.MAX_VALUE\n val start: Int\n\n val firstChar = this[0]\n if (firstChar < '0') {\n if (length == 1 || firstChar != '+') return null\n start = 1\n } else {\n start = 0\n }\n\n\n val limitForMaxRadix = 512409557603043100uL // limit / 36\n\n var limitBeforeMul = limitForMaxRadix\n val uradix = radix.toULong()\n var result = 0uL\n for (i in start until length) {\n val digit = digitOf(this[i], radix)\n\n if (digit < 0) return null\n if (result > limitBeforeMul) {\n if (limitBeforeMul == limitForMaxRadix) {\n limitBeforeMul = limit / uradix\n\n if (result > limitBeforeMul) {\n return null\n }\n } else {\n return null\n }\n }\n\n result *= uradix\n\n val beforeAdding = result\n result += digit.toUInt()\n if (result < beforeAdding) return null // overflow has happened\n }\n\n return result\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(\"MapsKt\")\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 a [List] containing all key-value pairs.\n */\npublic fun Map.toList(): List> {\n if (size == 0)\n return emptyList()\n val iterator = entries.iterator()\n if (!iterator.hasNext())\n return emptyList()\n val first = iterator.next()\n if (!iterator.hasNext())\n return listOf(first.toPair())\n val result = ArrayList>(size)\n result.add(first.toPair())\n do {\n result.add(iterator.next().toPair())\n } while (iterator.hasNext())\n return result\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each entry of original map.\n * \n * @sample samples.collections.Maps.Transformations.flatMap\n */\npublic inline fun Map.flatMap(transform: (Map.Entry) -> Iterable): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Returns a single list of all elements yielded from results of [transform] function being invoked on each entry of original map.\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 Map.flatMap(transform: (Map.Entry) -> Sequence): List {\n return flatMapTo(ArrayList(), transform)\n}\n\n/**\n * Appends all elements yielded from results of [transform] function being invoked on each entry of original map, to the given [destination].\n */\npublic inline fun > Map.flatMapTo(destination: C, transform: (Map.Entry) -> Iterable): 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 entry of original map, 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 > Map.flatMapTo(destination: C, transform: (Map.Entry) -> Sequence): C {\n for (element in this) {\n val list = transform(element)\n destination.addAll(list)\n }\n return destination\n}\n\n/**\n * Returns a list containing the results of applying the given [transform] function\n * to each entry in the original map.\n * \n * @sample samples.collections.Maps.Transformations.mapToList\n */\npublic inline fun Map.map(transform: (Map.Entry) -> R): List {\n return mapTo(ArrayList(size), transform)\n}\n\n/**\n * Returns a list containing only the non-null results of applying the given [transform] function\n * to each entry in the original map.\n * \n * @sample samples.collections.Maps.Transformations.mapNotNull\n */\npublic inline fun Map.mapNotNull(transform: (Map.Entry) -> R?): List {\n return mapNotNullTo(ArrayList(), transform)\n}\n\n/**\n * Applies the given [transform] function to each entry in the original map\n * and appends only the non-null results to the given [destination].\n */\npublic inline fun > Map.mapNotNullTo(destination: C, transform: (Map.Entry) -> 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 entry of the original map\n * and appends the results to the given [destination].\n */\npublic inline fun > Map.mapTo(destination: C, transform: (Map.Entry) -> R): C {\n for (item in this)\n destination.add(transform(item))\n return destination\n}\n\n/**\n * Returns `true` if all entries match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\npublic inline fun Map.all(predicate: (Map.Entry) -> Boolean): Boolean {\n if (isEmpty()) return true\n for (element in this) if (!predicate(element)) return false\n return true\n}\n\n/**\n * Returns `true` if map has at least one entry.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\npublic fun Map.any(): Boolean {\n return !isEmpty()\n}\n\n/**\n * Returns `true` if at least one entry matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\npublic inline fun Map.any(predicate: (Map.Entry) -> Boolean): Boolean {\n if (isEmpty()) return false\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of entries in this map.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.count(): Int {\n return size\n}\n\n/**\n * Returns the number of entries matching the given [predicate].\n */\npublic inline fun Map.count(predicate: (Map.Entry) -> Boolean): Int {\n if (isEmpty()) return 0\n var count = 0\n for (element in this) if (predicate(element)) ++count\n return count\n}\n\n/**\n * Performs the given [action] on each entry.\n */\n@kotlin.internal.HidesMembers\npublic inline fun Map.forEach(action: (Map.Entry) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun > Map.maxBy(selector: (Map.Entry) -> R): Map.Entry? {\n return maxByOrNull(selector)\n}\n\n/**\n * Returns the first entry yielding the largest value of the given function or `null` if there are no entries.\n * \n * @sample samples.collections.Collections.Aggregates.maxByOrNull\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun > Map.maxByOrNull(selector: (Map.Entry) -> R): Map.Entry? {\n return entries.maxByOrNull(selector)\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each entry in the map.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the map is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Map.maxOf(selector: (Map.Entry) -> Double): Double {\n return entries.maxOf(selector)\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each entry in the map.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the map is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Map.maxOf(selector: (Map.Entry) -> Float): Float {\n return entries.maxOf(selector)\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each entry in the map.\n * \n * @throws NoSuchElementException if the map is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun > Map.maxOf(selector: (Map.Entry) -> R): R {\n return entries.maxOf(selector)\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each entry in the map or `null` if there are no entries.\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 Map.maxOfOrNull(selector: (Map.Entry) -> Double): Double? {\n return entries.maxOfOrNull(selector)\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each entry in the map or `null` if there are no entries.\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 Map.maxOfOrNull(selector: (Map.Entry) -> Float): Float? {\n return entries.maxOfOrNull(selector)\n}\n\n/**\n * Returns the largest value among all values produced by [selector] function\n * applied to each entry in the map or `null` if there are no entries.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun > Map.maxOfOrNull(selector: (Map.Entry) -> R): R? {\n return entries.maxOfOrNull(selector)\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each entry in the map.\n * \n * @throws NoSuchElementException if the map is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Map.maxOfWith(comparator: Comparator, selector: (Map.Entry) -> R): R {\n return entries.maxOfWith(comparator, selector)\n}\n\n/**\n * Returns the largest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each entry in the map or `null` if there are no entries.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Map.maxOfWithOrNull(comparator: Comparator, selector: (Map.Entry) -> R): R? {\n return entries.maxOfWithOrNull(comparator, selector)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun Map.maxWith(comparator: Comparator>): Map.Entry? {\n return maxWithOrNull(comparator)\n}\n\n/**\n * Returns the first entry having the largest value according to the provided [comparator] or `null` if there are no entries.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun Map.maxWithOrNull(comparator: Comparator>): Map.Entry? {\n return entries.maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic inline fun > Map.minBy(selector: (Map.Entry) -> R): Map.Entry? {\n return minByOrNull(selector)\n}\n\n/**\n * Returns the first entry yielding the smallest value of the given function or `null` if there are no entries.\n * \n * @sample samples.collections.Collections.Aggregates.minByOrNull\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun > Map.minByOrNull(selector: (Map.Entry) -> R): Map.Entry? {\n return entries.minByOrNull(selector)\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each entry in the map.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the map is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Map.minOf(selector: (Map.Entry) -> Double): Double {\n return entries.minOf(selector)\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each entry in the map.\n * \n * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`.\n * \n * @throws NoSuchElementException if the map is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Map.minOf(selector: (Map.Entry) -> Float): Float {\n return entries.minOf(selector)\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each entry in the map.\n * \n * @throws NoSuchElementException if the map is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun > Map.minOf(selector: (Map.Entry) -> R): R {\n return entries.minOf(selector)\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each entry in the map or `null` if there are no entries.\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 Map.minOfOrNull(selector: (Map.Entry) -> Double): Double? {\n return entries.minOfOrNull(selector)\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each entry in the map or `null` if there are no entries.\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 Map.minOfOrNull(selector: (Map.Entry) -> Float): Float? {\n return entries.minOfOrNull(selector)\n}\n\n/**\n * Returns the smallest value among all values produced by [selector] function\n * applied to each entry in the map or `null` if there are no entries.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun > Map.minOfOrNull(selector: (Map.Entry) -> R): R? {\n return entries.minOfOrNull(selector)\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each entry in the map.\n * \n * @throws NoSuchElementException if the map is empty.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Map.minOfWith(comparator: Comparator, selector: (Map.Entry) -> R): R {\n return entries.minOfWith(comparator, selector)\n}\n\n/**\n * Returns the smallest value according to the provided [comparator]\n * among all values produced by [selector] function applied to each entry in the map or `null` if there are no entries.\n */\n@SinceKotlin(\"1.4\")\n@OptIn(kotlin.experimental.ExperimentalTypeInference::class)\n@OverloadResolutionByLambdaReturnType\n@kotlin.internal.InlineOnly\npublic inline fun Map.minOfWithOrNull(comparator: Comparator, selector: (Map.Entry) -> R): R? {\n return entries.minOfWithOrNull(comparator, selector)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\npublic fun Map.minWith(comparator: Comparator>): Map.Entry? {\n return minWithOrNull(comparator)\n}\n\n/**\n * Returns the first entry having the smallest value according to the provided [comparator] or `null` if there are no entries.\n */\n@SinceKotlin(\"1.4\")\n@kotlin.internal.InlineOnly\npublic inline fun Map.minWithOrNull(comparator: Comparator>): Map.Entry? {\n return entries.minWithOrNull(comparator)\n}\n\n/**\n * Returns `true` if the map has no entries.\n * \n * @sample samples.collections.Collections.Aggregates.none\n */\npublic fun Map.none(): Boolean {\n return isEmpty()\n}\n\n/**\n * Returns `true` if no entries match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.noneWithPredicate\n */\npublic inline fun Map.none(predicate: (Map.Entry) -> Boolean): Boolean {\n if (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 entry and returns the map itself afterwards.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > M.onEach(action: (Map.Entry) -> Unit): M {\n return apply { for (element in this) action(element) }\n}\n\n/**\n * Performs the given [action] on each entry, providing sequential index with the entry,\n * and returns the map itself afterwards.\n * @param [action] function that takes the index of an entry and the entry itself\n * and performs the action on the entry.\n */\n@SinceKotlin(\"1.4\")\npublic inline fun > M.onEachIndexed(action: (index: Int, Map.Entry) -> Unit): M {\n return apply { entries.forEachIndexed(action) }\n}\n\n/**\n * Creates an [Iterable] instance that wraps the original map returning its entries when being iterated.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Map.asIterable(): Iterable> {\n return entries\n}\n\n/**\n * Creates a [Sequence] instance that wraps the original map returning its entries when being iterated.\n */\npublic fun Map.asSequence(): Sequence> {\n return entries.asSequence()\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\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"SetsKt\")\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 a set containing all elements of the original set except the given [element].\n * \n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.minus(element: T): Set {\n val result = LinkedHashSet(mapCapacity(size))\n var removed = false\n return this.filterTo(result) { if (!removed && it == element) { removed = true; false } else true }\n}\n\n/**\n * Returns a set containing all elements of the original set except the elements contained in the given [elements] array.\n * \n * The returned set preserves the element iteration order of the original set.\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 Set.minus(elements: Array): Set {\n val result = LinkedHashSet(this)\n result.removeAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set except the elements contained in the given [elements] collection.\n * \n * The returned set preserves the element iteration order of the original set.\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 Set.minus(elements: Iterable): Set {\n val other = elements.convertToSetForSetOperationWith(this)\n if (other.isEmpty())\n return this.toSet()\n if (other is Set)\n return this.filterNotTo(LinkedHashSet()) { it in other }\n val result = LinkedHashSet(this)\n result.removeAll(other)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set except the elements contained in the given [elements] sequence.\n * \n * The returned set preserves the element iteration order of the original set.\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 Set.minus(elements: Sequence): Set {\n val result = LinkedHashSet(this)\n result.removeAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set except the given [element].\n * \n * The returned set preserves the element iteration order of the original set.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Set.minusElement(element: T): Set {\n return minus(element)\n}\n\n/**\n * Returns a set containing all elements of the original set and then the given [element] if it isn't already in this set.\n * \n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.plus(element: T): Set {\n val result = LinkedHashSet(mapCapacity(size + 1))\n result.addAll(this)\n result.add(element)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set and the given [elements] array,\n * which aren't already in this set.\n * \n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.plus(elements: Array): Set {\n val result = LinkedHashSet(mapCapacity(this.size + elements.size))\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set and the given [elements] collection,\n * which aren't already in this set.\n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.plus(elements: Iterable): Set {\n val result = LinkedHashSet(mapCapacity(elements.collectionSizeOrNull()?.let { this.size + it } ?: this.size * 2))\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set and the given [elements] sequence,\n * which aren't already in this set.\n * \n * The returned set preserves the element iteration order of the original set.\n */\npublic operator fun Set.plus(elements: Sequence): Set {\n val result = LinkedHashSet(mapCapacity(this.size * 2))\n result.addAll(this)\n result.addAll(elements)\n return result\n}\n\n/**\n * Returns a set containing all elements of the original set and then the given [element] if it isn't already in this set.\n * \n * The returned set preserves the element iteration order of the original set.\n */\n@kotlin.internal.InlineOnly\npublic inline fun Set.plusElement(element: T): Set {\n return plus(element)\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\nimport kotlin.reflect.KClass\n\n@PublishedApi\ninternal fun KClass<*>.findAssociatedObject(@Suppress(\"UNUSED_PARAMETER\") annotationClass: KClass): Any? {\n // This API is not supported in js-v1. Return `null` to be source-compatible with js-ir.\n return null\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.js\n\nimport getKClass\nimport kotlin.reflect.KClass\nimport kotlin.reflect.js.internal.KClassImpl\n\n/**\n * Represents the constructor of a class. Instances of `JsClass` can be passed to JavaScript APIs that expect a constructor reference.\n */\nexternal interface JsClass {\n /**\n * Returns the unqualified name of the class represented by this instance.\n */\n val name: String\n}\n\n/**\n * Obtains a constructor reference for the given `KClass`.\n */\nval KClass.js: JsClass\n get() = (this as KClassImpl).jClass\n\n/**\n * Obtains a `KClass` instance for the given constructor reference.\n */\nval JsClass.kotlin: KClass\n get() = getKClass(this)\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// a package is omitted to get declarations directly under the module\n\n// TODO: Remove once JsReflectionAPICallChecker supports more reflection types\n@file:Suppress(\"Unsupported\")\n\nimport kotlin.reflect.*\nimport kotlin.reflect.js.internal.*\n\n@JsName(\"createKType\")\ninternal fun createKType(\n classifier: KClassifier,\n arguments: Array,\n isMarkedNullable: Boolean\n) =\n KTypeImpl(classifier, arguments.asList(), isMarkedNullable)\n\n@JsName(\"createDynamicKType\")\ninternal fun createDynamicKType(): KType = DynamicKType\n\n@JsName(\"markKTypeNullable\")\ninternal fun markKTypeNullable(kType: KType) = KTypeImpl(kType.classifier!!, kType.arguments, true)\n\n@JsName(\"createKTypeParameter\")\ninternal fun createKTypeParameter(\n name: String,\n upperBounds: Array,\n variance: String\n): KTypeParameter {\n val kVariance = when (variance) {\n \"in\" -> KVariance.IN\n \"out\" -> KVariance.OUT\n else -> KVariance.INVARIANT\n }\n\n return KTypeParameterImpl(name, upperBounds.asList(), kVariance, false)\n}\n\n@JsName(\"getStarKTypeProjection\")\ninternal fun getStarKTypeProjection(): KTypeProjection =\n KTypeProjection.STAR\n\n@JsName(\"createCovariantKTypeProjection\")\ninternal fun createCovariantKTypeProjection(type: KType): KTypeProjection =\n KTypeProjection.covariant(type)\n\n@JsName(\"createInvariantKTypeProjection\")\ninternal fun createInvariantKTypeProjection(type: KType): KTypeProjection =\n KTypeProjection.invariant(type)\n\n@JsName(\"createContravariantKTypeProjection\")\ninternal fun createContravariantKTypeProjection(type: KType): KTypeProjection =\n KTypeProjection.contravariant(type)\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\n\n/**\n * Returns the detailed description of this throwable with its stack trace.\n *\n * The detailed description includes:\n * - the short description (see [Throwable.toString]) of this throwable;\n * - the complete stack trace;\n * - detailed descriptions of the exceptions that were [suppressed][suppressedExceptions] in order to deliver this exception;\n * - the detailed description of each throwable in the [Throwable.cause] chain.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun Throwable.stackTraceToString(): String = ExceptionTraceBuilder().buildFor(this)\n\n/**\n * Prints the [detailed description][Throwable.stackTraceToString] of this throwable to console error output.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun Throwable.printStackTrace() {\n console.error(this.stackTraceToString())\n}\n\n/**\n * Adds the specified exception to the list of exceptions that were\n * suppressed in order to deliver this exception.\n */\n@SinceKotlin(\"1.4\")\npublic actual fun Throwable.addSuppressed(exception: Throwable) {\n if (this !== exception) {\n val suppressed = this.asDynamic()._suppressed.unsafeCast?>()\n if (suppressed == null) {\n this.asDynamic()._suppressed = mutableListOf(exception)\n } else {\n suppressed.add(exception)\n }\n }\n}\n\n/**\n * Returns a list of all exceptions that were suppressed in order to deliver this exception.\n */\n@SinceKotlin(\"1.4\")\npublic actual val Throwable.suppressedExceptions: List\n get() {\n return this.asDynamic()._suppressed?.unsafeCast>() ?: emptyList()\n }\n\n\nprivate class ExceptionTraceBuilder {\n private val target = StringBuilder()\n private val visited = arrayOf()\n private var topStack: String = \"\"\n private var topStackStart: Int = 0\n\n fun buildFor(exception: Throwable): String {\n exception.dumpFullTrace(\"\", \"\")\n return target.toString()\n }\n\n private fun hasSeen(exception: Throwable): Boolean = visited.any { it === exception }\n\n private fun Throwable.dumpFullTrace(indent: String, qualifier: String) {\n this.dumpSelfTrace(indent, qualifier) || return\n\n var cause = this.cause\n while (cause != null) {\n cause.dumpSelfTrace(indent, \"Caused by: \") || return\n cause = cause.cause\n }\n }\n\n private fun Throwable.dumpSelfTrace(indent: String, qualifier: String): Boolean {\n target.append(indent).append(qualifier)\n val shortInfo = this.toString()\n if (hasSeen(this)) {\n target.append(\"[CIRCULAR REFERENCE, SEE ABOVE: \").append(shortInfo).append(\"]\\n\")\n return false\n }\n visited.asDynamic().push(this)\n\n var stack = this.asDynamic().stack as String?\n if (stack != null) {\n val stackStart = stack.indexOf(shortInfo).let { if (it < 0) 0 else it + shortInfo.length }\n if (stackStart == 0) target.append(shortInfo).append(\"\\n\")\n if (topStack.isEmpty()) {\n topStack = stack\n topStackStart = stackStart\n } else {\n stack = dropCommonFrames(stack, stackStart)\n }\n if (indent.isNotEmpty()) {\n // indent stack, but avoid indenting exception message lines\n val messageLines = if (stackStart == 0) 0 else 1 + shortInfo.count { c -> c == '\\n' }\n stack.lineSequence().forEachIndexed { index: Int, line: String ->\n if (index >= messageLines) target.append(indent)\n target.append(line).append(\"\\n\")\n }\n } else {\n target.append(stack).append(\"\\n\")\n }\n } else {\n target.append(shortInfo).append(\"\\n\")\n }\n\n val suppressed = suppressedExceptions\n if (suppressed.isNotEmpty()) {\n val suppressedIndent = indent + \" \"\n for (s in suppressed) {\n s.dumpFullTrace(suppressedIndent, \"Suppressed: \")\n }\n }\n return true\n }\n\n private fun dropCommonFrames(stack: String, stackStart: Int): String {\n var commonFrames: Int = 0\n var lastBreak: Int = 0\n var preLastBreak: Int = 0\n for (pos in 0 until minOf(topStack.length - topStackStart, stack.length - stackStart)) {\n val c = stack[stack.lastIndex - pos]\n if (c != topStack[topStack.lastIndex - pos]) break\n if (c == '\\n') {\n commonFrames += 1\n preLastBreak = lastBreak\n lastBreak = pos\n }\n }\n if (commonFrames <= 1) return stack\n while (preLastBreak > 0 && stack[stack.lastIndex - (preLastBreak - 1)] == ' ')\n preLastBreak -= 1\n\n // leave 1 common frame to ease matching with the top exception stack\n return stack.dropLast(preLastBreak) + \"... and ${commonFrames - 1} more common stack frames skipped\"\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(\"MathKt\")\n\n\npackage kotlin.math\n\n\n\n// constants, can't use them from nativeMath as they are not constants there\n\n/** Ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n@SinceKotlin(\"1.2\")\npublic const val PI: Double = 3.141592653589793\n/** Base of the natural logarithms, approximately 2.71828. */\n@SinceKotlin(\"1.2\")\npublic const val E: Double = 2.718281828459045\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\")\npublic expect fun sin(x: Double): Double\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\")\npublic expect fun cos(x: Double): Double\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\")\npublic expect fun tan(x: Double): Double\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\")\npublic expect fun asin(x: Double): Double\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\")\npublic expect fun acos(x: Double): Double\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\")\npublic expect fun atan(x: Double): Double\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\")\npublic expect fun atan2(y: Double, x: Double): Double\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\")\npublic expect fun sinh(x: Double): Double\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\")\npublic expect fun cosh(x: Double): Double\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\")\npublic expect fun tanh(x: Double): Double\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\")\npublic expect fun asinh(x: Double): Double\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\")\npublic expect fun acosh(x: Double): Double\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\")\npublic expect fun atanh(x: Double): Double\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\")\npublic expect fun hypot(x: Double, y: Double): Double\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\")\npublic expect fun sqrt(x: Double): Double\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\")\npublic expect fun exp(x: Double): Double\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\")\npublic expect fun expm1(x: Double): Double\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 expect fun log(x: Double, base: Double): Double\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\")\npublic expect fun ln(x: Double): Double\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\")\npublic expect fun log10(x: Double): Double\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\")\npublic expect fun log2(x: Double): Double\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\")\npublic expect fun ln1p(x: Double): Double\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\")\npublic expect fun ceil(x: Double): Double\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\")\npublic expect fun floor(x: Double): 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\")\npublic expect fun truncate(x: Double): Double\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 expect fun round(x: Double): Double\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\")\npublic expect fun abs(x: Double): Double\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\")\npublic expect fun sign(x: Double): Double\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\")\npublic expect fun min(a: Double, b: Double): Double\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\")\npublic expect fun max(a: Double, b: Double): Double\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\")\npublic expect fun Double.pow(x: Double): Double\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\")\npublic expect fun Double.pow(n: Int): Double\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\")\npublic expect val Double.absoluteValue: Double\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\")\npublic expect val Double.sign: Double\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\")\npublic expect fun Double.withSign(sign: Double): Double\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.withSign(sign: Int): Double\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 expect val Double.ulp: Double\n\n/**\n * Returns the [Double] value nearest to this value in direction of positive infinity.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.nextUp(): Double\n\n/**\n * Returns the [Double] value nearest to this value in direction of negative infinity.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Double.nextDown(): Double\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 expect fun Double.nextTowards(to: Double): Double\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 expect fun Double.roundToInt(): Int\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 expect fun Double.roundToLong(): Long\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\")\npublic expect fun sin(x: Float): Float\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\")\npublic expect fun cos(x: Float): Float\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\")\npublic expect fun tan(x: Float): Float\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\")\npublic expect fun asin(x: Float): Float\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\")\npublic expect fun acos(x: Float): Float\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\")\npublic expect fun atan(x: Float): Float\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\")\npublic expect fun atan2(y: Float, x: Float): Float\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\")\npublic expect fun sinh(x: Float): Float\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\")\npublic expect fun cosh(x: Float): Float\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\")\npublic expect fun tanh(x: Float): Float\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\")\npublic expect fun asinh(x: Float): Float\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\")\npublic expect fun acosh(x: Float): Float\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\")\npublic expect fun atanh(x: Float): Float\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\")\npublic expect fun hypot(x: Float, y: Float): Float\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\")\npublic expect fun sqrt(x: Float): Float\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\")\npublic expect fun exp(x: Float): Float\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\")\npublic expect fun expm1(x: Float): Float\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 expect fun log(x: Float, base: Float): Float\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\")\npublic expect fun ln(x: Float): Float\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\")\npublic expect fun log10(x: Float): Float\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\")\npublic expect fun log2(x: Float): Float\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\")\npublic expect fun ln1p(x: Float): Float\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\")\npublic expect fun ceil(x: Float): Float\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\")\npublic expect fun floor(x: Float): Float\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\")\npublic expect fun truncate(x: Float): Float\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 expect fun round(x: Float): Float\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\")\npublic expect fun abs(x: Float): Float\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\")\npublic expect fun sign(x: Float): Float\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\")\npublic expect fun min(a: Float, b: Float): Float\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\")\npublic expect fun max(a: Float, b: Float): Float\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\")\npublic expect fun Float.pow(x: Float): Float\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\")\npublic expect fun Float.pow(n: Int): Float\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\")\npublic expect val Float.absoluteValue: Float\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\")\npublic expect val Float.sign: Float\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\")\npublic expect fun Float.withSign(sign: Float): Float\n\n/**\n * Returns this value with the sign bit same as of the [sign] value.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun Float.withSign(sign: Int): Float\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\")\npublic expect fun Float.roundToInt(): Int\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\")\npublic expect fun Float.roundToLong(): Long\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@SinceKotlin(\"1.2\")\npublic expect fun abs(n: Int): Int\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun min(a: Int, b: Int): Int\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun max(a: Int, b: Int): Int\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\")\npublic expect val Int.absoluteValue: Int\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 expect val Int.sign: Int\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 expect fun abs(n: Long): Long\n\n/**\n * Returns the smaller of two values.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun min(a: Long, b: Long): Long\n\n/**\n * Returns the greater of two values.\n */\n@SinceKotlin(\"1.2\")\npublic expect fun max(a: Long, b: Long): Long\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\")\npublic expect val Long.absoluteValue: Long\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 expect val Long.sign: Int\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.coroutines.js.internal\n\nimport kotlin.coroutines.Continuation\nimport kotlin.coroutines.EmptyCoroutineContext\n\n@PublishedApi\n@SinceKotlin(\"1.3\")\ninternal val EmptyContinuation = Continuation(EmptyCoroutineContext) { result ->\n result.getOrThrow()\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\n\nimport kotlin.coroutines.*\nimport kotlin.coroutines.intrinsics.*\n\n/**\n * Defines deep recursive function that keeps its stack on the heap,\n * which allows very deep recursive computations that do not use the actual call stack.\n * To initiate a call to this deep recursive function use its [invoke] function.\n * As a rule of thumb, it should be used if recursion goes deeper than a thousand calls.\n *\n * The [DeepRecursiveFunction] takes one parameter of type [T] and returns a result of type [R].\n * The [block] of code defines the body of a recursive function. In this block\n * [callRecursive][DeepRecursiveScope.callRecursive] function can be used to make a recursive call\n * to the declared function. Other instances of [DeepRecursiveFunction] can be called\n * in this scope with `callRecursive` extension, too.\n *\n * For example, take a look at the following recursive tree class and a deeply\n * recursive instance of this tree with 100K nodes:\n *\n * ```\n * class Tree(val left: Tree? = null, val right: Tree? = null)\n * val deepTree = generateSequence(Tree()) { Tree(it) }.take(100_000).last()\n * ```\n *\n * A regular recursive function can be defined to compute a depth of a tree:\n *\n * ```\n * fun depth(t: Tree?): Int =\n * if (t == null) 0 else max(depth(t.left), depth(t.right)) + 1\n * println(depth(deepTree)) // StackOverflowError\n * ```\n *\n * If this `depth` function is called for a `deepTree` it produces [StackOverflowError] because of deep recursion.\n * However, the `depth` function can be rewritten using `DeepRecursiveFunction` in the following way, and then\n * it successfully computes [`depth(deepTree)`][DeepRecursiveFunction.invoke] expression:\n *\n * ```\n * val depth = DeepRecursiveFunction { t ->\n * if (t == null) 0 else max(callRecursive(t.left), callRecursive(t.right)) + 1\n * }\n * println(depth(deepTree)) // Ok\n * ```\n *\n * Deep recursive functions can also mutually call each other using a heap for the stack via\n * [callRecursive][DeepRecursiveScope.callRecursive] extension. For example, the\n * following pair of mutually recursive functions computes the number of tree nodes at even depth in the tree.\n *\n * ```\n * val mutualRecursion = object {\n * val even: DeepRecursiveFunction = DeepRecursiveFunction { t ->\n * if (t == null) 0 else odd.callRecursive(t.left) + odd.callRecursive(t.right) + 1\n * }\n * val odd: DeepRecursiveFunction = DeepRecursiveFunction { t ->\n * if (t == null) 0 else even.callRecursive(t.left) + even.callRecursive(t.right)\n * }\n * }\n * ```\n *\n * @param [T] the function parameter type.\n * @param [R] the function result type.\n * @param block the function body.\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\npublic class DeepRecursiveFunction(\n internal val block: suspend DeepRecursiveScope.(T) -> R\n)\n\n/**\n * Initiates a call to this deep recursive function, forming a root of the call tree.\n *\n * This operator should not be used from inside of [DeepRecursiveScope] as it uses the call stack slot for\n * initial recursive invocation. From inside of [DeepRecursiveScope] use\n * [callRecursive][DeepRecursiveScope.callRecursive].\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\npublic operator fun DeepRecursiveFunction.invoke(value: T): R =\n DeepRecursiveScopeImpl(block, value).runCallLoop()\n\n/**\n * A scope class for [DeepRecursiveFunction] function declaration that defines [callRecursive] methods to\n * recursively call this function or another [DeepRecursiveFunction] putting the call activation frame on the heap.\n *\n * @param [T] function parameter type.\n * @param [R] function result type.\n */\n@RestrictsSuspension\n@SinceKotlin(\"1.4\")\n@ExperimentalStdlibApi\npublic sealed class DeepRecursiveScope {\n /**\n * Makes recursive call to this [DeepRecursiveFunction] function putting the call activation frame on the heap,\n * as opposed to the actual call stack that is used by a regular recursive call.\n */\n public abstract suspend fun callRecursive(value: T): R\n\n /**\n * Makes call to the specified [DeepRecursiveFunction] function putting the call activation frame on the heap,\n * as opposed to the actual call stack that is used by a regular call.\n */\n public abstract suspend fun DeepRecursiveFunction.callRecursive(value: U): S\n\n @Deprecated(\n level = DeprecationLevel.ERROR,\n message =\n \"'invoke' should not be called from DeepRecursiveScope. \" +\n \"Use 'callRecursive' to do recursion in the heap instead of the call stack.\",\n replaceWith = ReplaceWith(\"this.callRecursive(value)\")\n )\n @Suppress(\"UNUSED_PARAMETER\")\n public operator fun DeepRecursiveFunction<*, *>.invoke(value: Any?): Nothing =\n throw UnsupportedOperationException(\"Should not be called from DeepRecursiveScope\")\n}\n\n// ================== Implementation ==================\n\n@ExperimentalStdlibApi\nprivate typealias DeepRecursiveFunctionBlock = suspend DeepRecursiveScope<*, *>.(Any?) -> Any?\n\nprivate val UNDEFINED_RESULT = Result.success(COROUTINE_SUSPENDED)\n\n@Suppress(\"UNCHECKED_CAST\")\n@ExperimentalStdlibApi\nprivate class DeepRecursiveScopeImpl(\n block: suspend DeepRecursiveScope.(T) -> R,\n value: T\n) : DeepRecursiveScope(), Continuation {\n // Active function block\n private var function: DeepRecursiveFunctionBlock = block as DeepRecursiveFunctionBlock\n\n // Value to call function with\n private var value: Any? = value\n\n // Continuation of the current call\n private var cont: Continuation? = this as Continuation\n\n // Completion result (completion of the whole call stack)\n private var result: Result = UNDEFINED_RESULT\n\n override val context: CoroutineContext\n get() = EmptyCoroutineContext\n\n override fun resumeWith(result: Result) {\n this.cont = null\n this.result = result\n }\n\n override suspend fun callRecursive(value: T): R = suspendCoroutineUninterceptedOrReturn { cont ->\n // calling the same function that is currently active\n this.cont = cont as Continuation\n this.value = value\n COROUTINE_SUSPENDED\n }\n\n override suspend fun DeepRecursiveFunction.callRecursive(value: U): S = suspendCoroutineUninterceptedOrReturn { cont ->\n // calling another recursive function\n val function = block as DeepRecursiveFunctionBlock\n with(this@DeepRecursiveScopeImpl) {\n val currentFunction = this.function\n if (function !== currentFunction) {\n // calling a different function -- create a trampoline to restore function ref\n this.function = function\n this.cont = crossFunctionCompletion(currentFunction, cont as Continuation)\n } else {\n // calling the same function -- direct\n this.cont = cont as Continuation\n }\n this.value = value\n }\n COROUTINE_SUSPENDED\n }\n\n private fun crossFunctionCompletion(\n currentFunction: DeepRecursiveFunctionBlock,\n cont: Continuation\n ): Continuation = Continuation(EmptyCoroutineContext) {\n this.function = currentFunction\n // When going back from a trampoline we cannot just call cont.resume (stack usage!)\n // We delegate the cont.resumeWith(it) call to runCallLoop\n this.cont = cont\n this.result = it\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n fun runCallLoop(): R {\n while (true) {\n // Note: cont is set to null in DeepRecursiveScopeImpl.resumeWith when the whole computation completes\n val result = this.result\n val cont = this.cont\n ?: return (result as Result).getOrThrow() // done -- final result\n // The order of comparison is important here for that case of rogue class with broken equals\n if (UNDEFINED_RESULT == result) {\n // call \"function\" with \"value\" using \"cont\" as completion\n val r = try {\n // This is block.startCoroutine(this, value, cont)\n function.startCoroutineUninterceptedOrReturn(this, value, cont)\n } catch (e: Throwable) {\n cont.resumeWithException(e)\n continue\n }\n // If the function returns without suspension -- calls its continuation immediately\n if (r !== COROUTINE_SUSPENDED)\n cont.resume(r as R)\n } else {\n // we returned from a crossFunctionCompletion trampoline -- call resume here\n this.result = UNDEFINED_RESULT // reset result back\n cont.resumeWith(result)\n }\n }\n }\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\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,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\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",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,null,null,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\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,"module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPrefixedValue;\nvar regex = /-webkit-|-moz-|-ms-/;\n\nfunction isPrefixedValue(value) {\n return typeof value === 'string' && regex.test(value);\n}\nmodule.exports = exports['default'];","package io.ktor.utils.io\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.concurrent.*\nimport io.ktor.utils.io.core.*\nimport io.ktor.utils.io.core.internal.*\nimport io.ktor.utils.io.internal.*\nimport io.ktor.utils.io.pool.*\nimport kotlinx.atomicfu.locks.*\nimport kotlin.math.*\n\n@Deprecated(\"This is going to become internal. Use ByteReadChannel receiver instead.\", level = DeprecationLevel.ERROR)\npublic suspend fun ByteChannelSequentialBase.joinTo(dst: ByteChannelSequentialBase, closeOnEnd: Boolean) {\n return joinToImpl(dst, closeOnEnd)\n}\n\n@Deprecated(\"This is going to become internal. Use ByteReadChannel receiver instead.\", level = DeprecationLevel.ERROR)\npublic suspend fun ByteChannelSequentialBase.copyTo(\n dst: ByteChannelSequentialBase,\n limit: Long = Long.MAX_VALUE\n): Long {\n return copyToSequentialImpl(dst, limit)\n}\n\nprivate const val EXPECTED_CAPACITY: Long = 4088L\n\n/**\n * Sequential (non-concurrent) byte channel implementation\n */\n@Suppress(\"OverridingDeprecatedMember\")\n@DangerousInternalIoApi\npublic abstract class ByteChannelSequentialBase(\n initial: IoBuffer,\n override val autoFlush: Boolean,\n pool: ObjectPool = ChunkBuffer.Pool\n) : ByteChannel, ByteReadChannel, ByteWriteChannel, SuspendableReadSession, HasReadSession, HasWriteSession {\n\n @Suppress(\"unused\", \"DEPRECATION\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public constructor(initial: IoBuffer, autoFlush: Boolean) : this(initial, autoFlush, ChunkBuffer.Pool)\n\n private val state = ByteChannelSequentialBaseSharedState()\n\n protected var closed: Boolean\n get() = state.closed\n set(value) {\n state.closed = value\n }\n\n protected val writable: BytePacketBuilder = BytePacketBuilder(0, pool)\n protected val readable: ByteReadPacket = ByteReadPacket(initial, pool)\n\n private val slot = AwaitingSlot()\n\n @Suppress(\"NOTHING_TO_INLINE\")\n private inline fun totalPending(): Int = availableForRead + writable.size\n\n private val flushSize: Int get() = flushBuffer.size\n\n override val availableForRead: Int\n get() = flushSize + readable.remaining.toInt()\n\n override val availableForWrite: Int\n get() = maxOf(0, EXPECTED_CAPACITY.toInt() - totalPending())\n\n override var readByteOrder: ByteOrder\n get() = state.readByteOrder\n set(value) {\n state.readByteOrder = value\n }\n\n override var writeByteOrder: ByteOrder\n get() = state.writeByteOrder\n set(value) {\n state.writeByteOrder = value\n }\n\n override val isClosedForRead: Boolean\n get() = closed && readable.isEmpty && flushSize == 0 && writable.isEmpty\n\n override val isClosedForWrite: Boolean\n get() = closed\n\n private var _totalBytesRead: Long\n get() = state.totalBytesRead\n set(value) {\n state.totalBytesRead = value\n }\n\n override val totalBytesRead: Long get() = state.totalBytesRead\n\n private var _totalBytesWritten: Long\n get() = state.totalBytesWritten\n set(value) {\n state.totalBytesWritten = value\n }\n\n override val totalBytesWritten: Long get() = state.totalBytesWritten\n\n final override var closedCause: Throwable?\n get() = state.closedCause\n private set(value) {\n state.closedCause = value\n }\n\n private val flushMutex = SynchronizedObject()\n private val flushBuffer: BytePacketBuilder = BytePacketBuilder()\n\n internal suspend fun awaitAtLeastNBytesAvailableForWrite(count: Int) {\n while (availableForWrite < count && !closed) {\n if (!flushImpl()) {\n slot.sleep()\n }\n }\n }\n\n internal suspend fun awaitAtLeastNBytesAvailableForRead(count: Int) {\n while (availableForRead < count && !closed) {\n slot.sleep()\n }\n }\n\n override fun flush() {\n flushImpl()\n }\n\n private fun flushImpl(): Boolean {\n if (writable.isEmpty) {\n return false\n }\n\n flushWrittenBytes()\n slot.resume()\n return true\n }\n\n /**\n * Send bytes to thread-safe storage.\n *\n * This method is writer-only safe.\n */\n private fun flushWrittenBytes() {\n synchronized(flushMutex) {\n val buffer = writable.stealAll()!!\n flushBuffer.writeChunkBuffer(buffer)\n }\n }\n\n /**\n * Take flushed bytes before read.\n *\n * This method is reader-only safe.\n */\n protected fun prepareFlushedBytes() {\n synchronized(flushMutex) {\n readable.unsafeAppend(flushBuffer)\n }\n }\n\n private fun ensureNotClosed() {\n if (closed) {\n throw closedCause ?: ClosedWriteChannelException(\"Channel is already closed\")\n }\n }\n\n private fun ensureNotFailed() {\n closedCause?.let { throw it }\n }\n\n private fun ensureNotFailed(closeable: BytePacketBuilder) {\n closedCause?.let { cause ->\n closeable.release()\n throw cause\n }\n }\n\n override suspend fun writeByte(b: Byte) {\n awaitAtLeastNBytesAvailableForWrite(1)\n writable.writeByte(b)\n afterWrite(1)\n }\n\n private inline fun reverseWrite(value: () -> T, reversed: () -> T): T {\n @Suppress(\"DEPRECATION_ERROR\")\n return if (writeByteOrder == ByteOrder.BIG_ENDIAN) {\n value()\n } else {\n reversed()\n }\n }\n\n override suspend fun writeShort(s: Short) {\n awaitAtLeastNBytesAvailableForWrite(2)\n writable.writeShort(reverseWrite({ s }, { s.reverseByteOrder() }))\n afterWrite(2)\n }\n\n override suspend fun writeInt(i: Int) {\n awaitAtLeastNBytesAvailableForWrite(4)\n writable.writeInt(reverseWrite({ i }, { i.reverseByteOrder() }))\n afterWrite(4)\n }\n\n override suspend fun writeLong(l: Long) {\n awaitAtLeastNBytesAvailableForWrite(8)\n writable.writeLong(reverseWrite({ l }, { l.reverseByteOrder() }))\n afterWrite(8)\n }\n\n override suspend fun writeFloat(f: Float) {\n awaitAtLeastNBytesAvailableForWrite(4)\n writable.writeFloat(reverseWrite({ f }, { f.reverseByteOrder() }))\n afterWrite(4)\n }\n\n override suspend fun writeDouble(d: Double) {\n awaitAtLeastNBytesAvailableForWrite(8)\n writable.writeDouble(reverseWrite({ d }, { d.reverseByteOrder() }))\n afterWrite(8)\n }\n\n override suspend fun writePacket(packet: ByteReadPacket) {\n awaitAtLeastNBytesAvailableForWrite(1)\n val size = packet.remaining.toInt()\n writable.writePacket(packet)\n afterWrite(size)\n }\n\n override suspend fun writeFully(src: IoBuffer) {\n writeFully(src as Buffer)\n }\n\n override suspend fun writeFully(src: Buffer) {\n awaitAtLeastNBytesAvailableForWrite(1)\n val count = src.readRemaining\n writable.writeFully(src)\n afterWrite(count)\n }\n\n override suspend fun writeFully(src: ByteArray, offset: Int, length: Int) {\n var currentIndex = offset\n val endIndex = offset + length\n\n while (currentIndex < endIndex) {\n awaitAtLeastNBytesAvailableForWrite(1)\n\n val bytesCount = min(availableForWrite, endIndex - currentIndex)\n writable.writeFully(src, currentIndex, bytesCount)\n\n currentIndex += bytesCount\n afterWrite(bytesCount)\n }\n }\n\n override suspend fun writeFully(memory: Memory, startIndex: Int, endIndex: Int) {\n var currentIndex = startIndex\n\n while (currentIndex < endIndex) {\n awaitAtLeastNBytesAvailableForWrite(1)\n\n val bytesCount = min(availableForWrite, endIndex - currentIndex)\n writable.writeFully(memory, currentIndex, bytesCount)\n\n currentIndex += bytesCount\n afterWrite(bytesCount)\n }\n }\n\n override suspend fun writeAvailable(src: IoBuffer): Int {\n val srcRemaining = src.readRemaining\n if (srcRemaining == 0) return 0\n val size = minOf(srcRemaining, availableForWrite)\n\n return if (size == 0) writeAvailableSuspend(src)\n else {\n writable.writeFully(src, size)\n afterWrite(size)\n size\n }\n }\n\n override suspend fun writeAvailable(src: ByteArray, offset: Int, length: Int): Int {\n if (length == 0) return 0\n val size = minOf(length, availableForWrite)\n\n return if (size == 0) writeAvailableSuspend(src, offset, length)\n else {\n writable.writeFully(src, offset, size)\n afterWrite(size)\n size\n }\n }\n\n @ExperimentalIoApi\n @Suppress(\"DEPRECATION\")\n override suspend fun writeSuspendSession(visitor: suspend WriterSuspendSession.() -> Unit) {\n val session = beginWriteSession()\n visitor(session)\n }\n\n @Suppress(\"DEPRECATION\")\n override fun beginWriteSession(): WriterSuspendSession {\n return object : WriterSuspendSession {\n override fun request(min: Int): IoBuffer? {\n if (availableForWrite == 0) return null\n return writable.prepareWriteHead(min) as IoBuffer\n }\n\n override fun written(n: Int) {\n writable.afterHeadWrite()\n afterWrite(n)\n }\n\n override fun flush() {\n this@ByteChannelSequentialBase.flush()\n }\n\n override suspend fun tryAwait(n: Int) {\n if (availableForWrite < n) {\n awaitAtLeastNBytesAvailableForWrite(n)\n }\n }\n }\n }\n\n override fun endWriteSession(written: Int) {\n writable.afterHeadWrite()\n afterWrite(written)\n }\n\n override suspend fun readByte(): Byte {\n return if (readable.isNotEmpty) {\n readable.readByte().also { afterRead(1) }\n } else {\n readByteSlow()\n }\n }\n\n private fun checkClosed(n: Int) {\n if (closed) {\n throw closedCause ?: prematureClose(n)\n }\n }\n\n private fun prematureClose(n: Int): Exception {\n return EOFException(\"$n bytes required but EOF reached\")\n }\n\n private suspend fun readByteSlow(): Byte {\n do {\n awaitSuspend(1)\n\n if (readable.isNotEmpty) return readable.readByte().also { afterRead(1) }\n checkClosed(1)\n } while (true)\n }\n\n override suspend fun readShort(): Short {\n return if (readable.hasBytes(2)) {\n readable.readShort().reverseRead().also { afterRead(2) }\n } else {\n readShortSlow()\n }\n }\n\n private suspend fun readShortSlow(): Short {\n readNSlow(2) { return readable.readShort().reverseRead().also { afterRead(2) } }\n }\n\n @Deprecated(\"Consider providing consumed count of bytes\", level = DeprecationLevel.ERROR)\n protected fun afterRead() {\n afterRead(0)\n }\n\n protected fun afterRead(count: Int) {\n _totalBytesRead += count\n slot.resume()\n }\n\n @Suppress(\"NOTHING_TO_INLINE\", \"DEPRECATION_ERROR\")\n private inline fun Short.reverseRead(): Short = when {\n readByteOrder == ByteOrder.BIG_ENDIAN -> this\n else -> this.reverseByteOrder()\n }\n\n @Suppress(\"NOTHING_TO_INLINE\", \"DEPRECATION_ERROR\")\n private inline fun Int.reverseRead(): Int = when {\n readByteOrder == ByteOrder.BIG_ENDIAN -> this\n else -> this.reverseByteOrder()\n }\n\n @Suppress(\"NOTHING_TO_INLINE\", \"DEPRECATION_ERROR\")\n private inline fun Long.reverseRead(): Long = when {\n readByteOrder == ByteOrder.BIG_ENDIAN -> this\n else -> this.reverseByteOrder()\n }\n\n @Suppress(\"NOTHING_TO_INLINE\", \"DEPRECATION_ERROR\")\n private inline fun Float.reverseRead(): Float = when {\n readByteOrder == ByteOrder.BIG_ENDIAN -> this\n else -> this.reverseByteOrder()\n }\n\n @Suppress(\"NOTHING_TO_INLINE\", \"DEPRECATION_ERROR\")\n private inline fun Double.reverseRead(): Double = when {\n readByteOrder == ByteOrder.BIG_ENDIAN -> this\n else -> this.reverseByteOrder()\n }\n\n override suspend fun readInt(): Int {\n return if (readable.hasBytes(4)) {\n readable.readInt().reverseRead().also { afterRead(4) }\n } else {\n readIntSlow()\n }\n }\n\n private suspend fun readIntSlow(): Int {\n readNSlow(4) {\n return readable.readInt().reverseRead().also { afterRead(4) }\n }\n }\n\n override suspend fun readLong(): Long {\n return if (readable.hasBytes(8)) {\n readable.readLong().reverseRead().also { afterRead(8) }\n } else {\n readLongSlow()\n }\n }\n\n private suspend fun readLongSlow(): Long {\n readNSlow(8) {\n return readable.readLong().reverseRead().also { afterRead(8) }\n }\n }\n\n override suspend fun readFloat(): Float = if (readable.hasBytes(4)) {\n readable.readFloat().reverseRead().also { afterRead(4) }\n } else {\n readFloatSlow()\n }\n\n private suspend fun readFloatSlow(): Float {\n readNSlow(4) {\n return readable.readFloat().reverseRead().also { afterRead(4) }\n }\n }\n\n override suspend fun readDouble(): Double = if (readable.hasBytes(8)) {\n readable.readDouble().reverseRead().also { afterRead(8) }\n } else {\n readDoubleSlow()\n }\n\n private suspend fun readDoubleSlow(): Double {\n readNSlow(8) {\n return readable.readDouble().reverseRead().also { afterRead(8) }\n }\n }\n\n override suspend fun readRemaining(limit: Long, headerSizeHint: Int): ByteReadPacket {\n ensureNotFailed()\n\n val builder = BytePacketBuilder(headerSizeHint)\n\n val size = minOf(limit, readable.remaining)\n builder.writePacket(readable, size)\n val remaining = limit - builder.size\n\n return if (remaining == 0L || isClosedForRead) {\n afterRead(remaining.toInt())\n ensureNotFailed(builder)\n builder.build()\n } else {\n readRemainingSuspend(builder, limit)\n }\n }\n\n private suspend fun readRemainingSuspend(builder: BytePacketBuilder, limit: Long): ByteReadPacket {\n while (builder.size < limit) {\n val partLimit = minOf(limit - builder.size, readable.remaining)\n builder.writePacket(readable, partLimit)\n afterRead(partLimit.toInt())\n ensureNotFailed(builder)\n\n if (isClosedForRead || builder.size == limit.toInt()) {\n break\n }\n\n awaitSuspend(1)\n }\n\n ensureNotFailed(builder)\n return builder.build()\n }\n\n override suspend fun readPacket(size: Int, headerSizeHint: Int): ByteReadPacket {\n val builder = BytePacketBuilder(headerSizeHint)\n\n var remaining = size\n val partSize = minOf(remaining.toLong(), readable.remaining).toInt()\n remaining -= partSize\n builder.writePacket(readable, partSize)\n afterRead(partSize)\n\n return if (remaining > 0) readPacketSuspend(builder, remaining)\n else builder.build()\n }\n\n private suspend fun readPacketSuspend(builder: BytePacketBuilder, size: Int): ByteReadPacket {\n var remaining = size\n while (remaining > 0) {\n val partSize = minOf(remaining.toLong(), readable.remaining).toInt()\n remaining -= partSize\n builder.writePacket(readable, partSize)\n afterRead(partSize)\n\n if (remaining > 0) {\n awaitSuspend(1)\n }\n }\n\n return builder.build()\n }\n\n protected fun readAvailableClosed(): Int {\n closedCause?.let { throw it }\n return -1\n }\n\n override suspend fun readAvailable(dst: IoBuffer): Int = readAvailable(dst as Buffer)\n\n internal suspend fun readAvailable(dst: Buffer): Int = when {\n closedCause != null -> throw closedCause!!\n readable.canRead() -> {\n val size = minOf(dst.writeRemaining.toLong(), readable.remaining).toInt()\n readable.readFully(dst, size)\n afterRead(size)\n size\n }\n closed -> readAvailableClosed()\n !dst.canWrite() -> 0\n else -> readAvailableSuspend(dst)\n }\n\n private suspend fun readAvailableSuspend(dst: Buffer): Int {\n awaitSuspend(1)\n return readAvailable(dst)\n }\n\n override suspend fun readFully(dst: IoBuffer, n: Int) {\n readFully(dst as Buffer, n)\n }\n\n private suspend fun readFully(dst: Buffer, n: Int) {\n require(n <= dst.writeRemaining) { \"Not enough space in the destination buffer to write $n bytes\" }\n require(n >= 0) { \"n shouldn't be negative\" }\n\n return when {\n closedCause != null -> throw closedCause!!\n readable.remaining >= n -> readable.readFully(dst, n).also { afterRead(n) }\n closed -> throw EOFException(\n \"Channel is closed and not enough bytes available: required $n but $availableForRead available\"\n )\n else -> readFullySuspend(dst, n)\n }\n }\n\n private suspend fun readFullySuspend(dst: Buffer, n: Int) {\n awaitSuspend(n)\n return readFully(dst, n)\n }\n\n override suspend fun readAvailable(dst: ByteArray, offset: Int, length: Int): Int = when {\n readable.canRead() -> {\n val size = minOf(length.toLong(), readable.remaining).toInt()\n readable.readFully(dst, offset, size)\n afterRead(size)\n size\n }\n closed -> readAvailableClosed()\n else -> readAvailableSuspend(dst, offset, length)\n }\n\n private suspend fun readAvailableSuspend(dst: ByteArray, offset: Int, length: Int): Int {\n awaitSuspend(1)\n return readAvailable(dst, offset, length)\n }\n\n override suspend fun readFully(dst: ByteArray, offset: Int, length: Int) {\n val rc = readAvailable(dst, offset, length)\n if (rc == length) return\n if (rc == -1) throw EOFException(\"Unexpected end of stream\")\n\n return readFullySuspend(dst, offset + rc, length - rc)\n }\n\n private suspend fun readFullySuspend(dst: ByteArray, offset: Int, length: Int) {\n var written = 0\n\n while (written < length) {\n val rc = readAvailable(dst, offset + written, length - written)\n if (rc == -1) throw EOFException(\"Unexpected end of stream\")\n written += rc\n }\n }\n\n override suspend fun readBoolean(): Boolean {\n return if (readable.canRead()) (readable.readByte() == 1.toByte()).also { afterRead(1) }\n else readBooleanSlow()\n }\n\n private suspend fun readBooleanSlow(): Boolean {\n awaitSuspend(1)\n checkClosed(1)\n return readBoolean()\n }\n\n private var lastReadAvailable: Int\n get() = state.lastReadAvailable\n set(value) {\n state.lastReadAvailable = value\n }\n\n private var lastReadView: ChunkBuffer\n get() = state.lastReadView\n set(value) {\n state.lastReadView = value\n }\n\n private fun completeReading() {\n val remaining = lastReadView.readRemaining\n val delta = lastReadAvailable - remaining\n if (lastReadView !== Buffer.Empty) {\n readable.completeReadHead(lastReadView)\n }\n if (delta > 0) {\n afterRead(delta)\n }\n lastReadAvailable = 0\n lastReadView = ChunkBuffer.Empty\n }\n\n override suspend fun await(atLeast: Int): Boolean {\n require(atLeast >= 0) { \"atLeast parameter shouldn't be negative: $atLeast\" }\n require(atLeast <= EXPECTED_CAPACITY) {\n \"atLeast parameter shouldn't be larger than max buffer size of $EXPECTED_CAPACITY: $atLeast\"\n }\n\n completeReading()\n\n if (atLeast == 0) return !isClosedForRead\n if (readable.remaining >= atLeast) return true\n\n return awaitSuspend(atLeast)\n }\n\n internal suspend fun awaitInternalAtLeast1(): Boolean = if (readable.isNotEmpty) {\n true\n } else {\n awaitSuspend(1)\n }\n\n protected suspend fun awaitSuspend(atLeast: Int): Boolean {\n require(atLeast >= 0)\n\n awaitAtLeastNBytesAvailableForRead(atLeast)\n prepareFlushedBytes()\n\n closedCause?.let { throw it }\n return !isClosedForRead && availableForRead >= atLeast\n }\n\n override fun discard(n: Int): Int {\n closedCause?.let { throw it }\n\n if (n == 0) {\n return 0\n }\n\n return readable.discard(n).also {\n afterRead(n)\n requestNextView(1)\n }\n }\n\n override fun request(atLeast: Int): IoBuffer? {\n closedCause?.let { throw it }\n\n completeReading()\n\n return requestNextView(atLeast)\n }\n\n private fun requestNextView(atLeast: Int): IoBuffer? {\n if (readable.isEmpty) {\n prepareFlushedBytes()\n }\n\n val view = readable.prepareReadHead(atLeast) as IoBuffer?\n\n if (view == null) {\n lastReadView = ChunkBuffer.Empty\n lastReadAvailable = 0\n } else {\n lastReadView = view\n lastReadAvailable = view.readRemaining\n }\n\n return view\n }\n\n override suspend fun discard(max: Long): Long {\n val discarded = readable.discard(max)\n\n return if (discarded == max || isClosedForRead) {\n ensureNotFailed()\n return discarded\n } else {\n discardSuspend(max, discarded)\n }\n }\n\n private suspend fun discardSuspend(max: Long, discarded0: Long): Long {\n var discarded = discarded0\n\n do {\n if (!await(1)) break\n discarded += readable.discard(max - discarded)\n } while (discarded < max && !isClosedForRead)\n\n ensureNotFailed()\n\n return discarded\n }\n\n @Suppress(\"DEPRECATION\")\n @Deprecated(\"Use read instead.\")\n override fun readSession(consumer: ReadSession.() -> Unit) {\n try {\n consumer(this)\n } finally {\n completeReading()\n }\n }\n\n override fun startReadSession(): SuspendableReadSession = this\n\n override fun endReadSession() {\n completeReading()\n }\n\n @Suppress(\"DEPRECATION\")\n @Deprecated(\"Use read instead.\")\n override suspend fun readSuspendableSession(consumer: suspend SuspendableReadSession.() -> Unit) {\n try {\n consumer(this)\n } finally {\n completeReading()\n }\n }\n\n override suspend fun readUTF8LineTo(out: A, limit: Int): Boolean {\n if (isClosedForRead) {\n val cause = closedCause\n if (cause != null) {\n throw cause\n }\n\n return false\n }\n @OptIn(DangerousInternalIoApi::class)\n return decodeUTF8LineLoopSuspend(out, limit) { size ->\n afterRead(size)\n if (await(size)) readable\n else null\n }\n }\n\n override suspend fun readUTF8Line(limit: Int): String? {\n val sb = StringBuilder()\n if (!readUTF8LineTo(sb, limit)) {\n return null\n }\n\n return sb.toString()\n }\n\n override fun cancel(cause: Throwable?): Boolean {\n if (closedCause != null || closed) {\n return false\n }\n\n return close(cause ?: io.ktor.utils.io.CancellationException(\"Channel cancelled\"))\n }\n\n override fun close(cause: Throwable?): Boolean {\n if (closed || closedCause != null) return false\n closedCause = cause\n closed = true\n if (cause != null) {\n readable.release()\n writable.release()\n flushBuffer.release()\n } else {\n flush()\n }\n\n slot.cancel(cause)\n return true\n }\n\n internal fun transferTo(dst: ByteChannelSequentialBase, limit: Long): Long {\n val size = readable.remaining\n return if (size <= limit) {\n dst.writable.writePacket(readable)\n dst.afterWrite(size.toInt())\n afterRead(size.toInt())\n size\n } else {\n 0\n }\n }\n\n private suspend inline fun readNSlow(n: Int, block: () -> Nothing): Nothing {\n do {\n awaitSuspend(n)\n\n if (readable.hasBytes(n)) block()\n checkClosed(n)\n } while (true)\n }\n\n @Suppress(\"DEPRECATION\")\n private suspend fun writeAvailableSuspend(src: IoBuffer): Int {\n awaitAtLeastNBytesAvailableForWrite(1)\n return writeAvailable(src)\n }\n\n private suspend fun writeAvailableSuspend(src: ByteArray, offset: Int, length: Int): Int {\n awaitAtLeastNBytesAvailableForWrite(1)\n return writeAvailable(src, offset, length)\n }\n\n @Deprecated(\"Consider providing written count of bytes\", level = DeprecationLevel.ERROR)\n protected fun afterWrite() {\n afterWrite(0)\n }\n\n protected fun afterWrite(count: Int) {\n _totalBytesWritten += count\n\n if (closed) {\n writable.release()\n ensureNotClosed()\n }\n if (autoFlush || availableForWrite == 0) {\n flush()\n }\n }\n\n override suspend fun awaitFreeSpace() {\n flush()\n awaitAtLeastNBytesAvailableForWrite(1)\n ensureNotClosed()\n }\n\n final override suspend fun peekTo(\n destination: Memory,\n destinationOffset: Long,\n offset: Long,\n min: Long,\n max: Long\n ): Long {\n var bytesCopied = 0L\n\n @Suppress(\"DEPRECATION\")\n readSuspendableSession {\n val desiredSize = (min + offset).coerceAtMost(EXPECTED_CAPACITY).toInt()\n\n await(desiredSize)\n\n val buffer = request(1) ?: IoBuffer.Empty\n if (buffer.readRemaining > offset) {\n bytesCopied = minOf(buffer.readRemaining.toLong() - offset, max, destination.size - destinationOffset)\n buffer.memory.copyTo(destination, offset, bytesCopied, destinationOffset)\n }\n }\n\n return bytesCopied\n }\n}\n","package io.ktor.utils.io.charsets\n\nimport io.ktor.utils.io.core.*\nimport io.ktor.utils.io.core.internal.*\n\npublic expect abstract class Charset {\n @ExperimentalIoApi\n public abstract fun newEncoder(): CharsetEncoder\n\n @ExperimentalIoApi\n public abstract fun newDecoder(): CharsetDecoder\n\n public companion object {\n public fun forName(name: String): Charset\n }\n}\n\npublic expect val Charset.name: String\n\n// ----------------------------- ENCODER -------------------------------------------------------------------------------\n@ExperimentalIoApi\npublic expect abstract class CharsetEncoder\n\npublic expect val CharsetEncoder.charset: Charset\n\n@Deprecated(\n \"Use writeText on Output instead.\",\n ReplaceWith(\"dst.writeText(input, fromIndex, toIndex, charset)\", \"io.ktor.utils.io.core.writeText\")\n)\npublic fun CharsetEncoder.encode(input: CharSequence, fromIndex: Int, toIndex: Int, dst: Output) {\n encodeToImpl(dst, input, fromIndex, toIndex)\n}\n\n@ExperimentalIoApi\npublic expect fun CharsetEncoder.encodeToByteArray(\n input: CharSequence,\n fromIndex: Int = 0,\n toIndex: Int = input.length\n): ByteArray\n\n@Deprecated(\n \"Internal API. Will be hidden in future releases. Use encodeToByteArray instead.\",\n replaceWith = ReplaceWith(\"encodeToByteArray(input, fromIndex, toIndex)\")\n)\npublic fun CharsetEncoder.encodeToByteArrayImpl(\n input: CharSequence,\n fromIndex: Int = 0,\n toIndex: Int = input.length\n): ByteArray {\n return encodeToByteArray(input, fromIndex, toIndex)\n}\n\n@ExperimentalIoApi\npublic expect fun CharsetEncoder.encodeUTF8(input: ByteReadPacket, dst: Output)\n\n@ExperimentalIoApi\npublic fun CharsetEncoder.encode(\n input: CharSequence,\n fromIndex: Int = 0,\n toIndex: Int = input.length\n): ByteReadPacket = buildPacket {\n encodeToImpl(this, input, fromIndex, toIndex)\n}\n\n@ExperimentalIoApi\npublic fun CharsetEncoder.encodeUTF8(input: ByteReadPacket): ByteReadPacket = buildPacket {\n encodeUTF8(input, this)\n}\n\n@ExperimentalIoApi\npublic fun CharsetEncoder.encode(input: CharArray, fromIndex: Int, toIndex: Int, dst: Output) {\n var start = fromIndex\n\n if (start >= toIndex) return\n dst.writeWhileSize(1) { view: Buffer ->\n val rc = encodeArrayImpl(input, start, toIndex, view)\n check(rc >= 0)\n start += rc\n\n when {\n start >= toIndex -> 0\n rc == 0 -> 8\n else -> 1\n }\n }\n\n encodeCompleteImpl(dst)\n}\n\n// ----------------------------- DECODER -------------------------------------------------------------------------------\n\n@ExperimentalIoApi\npublic expect abstract class CharsetDecoder\n\n/**\n * Decoder's charset it is created for.\n */\npublic expect val CharsetDecoder.charset: Charset\n\n@ExperimentalIoApi\npublic fun CharsetDecoder.decode(input: Input, max: Int = Int.MAX_VALUE): String =\n buildString(minOf(max.toLong(), input.sizeEstimate()).toInt()) {\n decode(input, this, max)\n }\n\n@ExperimentalIoApi\npublic expect fun CharsetDecoder.decode(input: Input, dst: Appendable, max: Int): Int\n\n@ExperimentalIoApi\npublic expect fun CharsetDecoder.decodeExactBytes(input: Input, inputLength: Int): String\n\n// ----------------------------- REGISTRY ------------------------------------------------------------------------------\npublic expect object Charsets {\n public val UTF_8: Charset\n public val ISO_8859_1: Charset\n}\n\npublic expect open class MalformedInputException(message: String) : Throwable\n\npublic class TooLongLineException(message: String) : MalformedInputException(message)\n\n// ----------------------------- INTERNALS -----------------------------------------------------------------------------\n\ninternal fun CharsetEncoder.encodeArrayImpl(input: CharArray, fromIndex: Int, toIndex: Int, dst: Buffer): Int {\n val length = toIndex - fromIndex\n return encodeImpl(CharArraySequence(input, fromIndex, length), 0, length, dst)\n}\n\ninternal expect fun CharsetEncoder.encodeImpl(input: CharSequence, fromIndex: Int, toIndex: Int, dst: Buffer): Int\n\ninternal expect fun CharsetEncoder.encodeComplete(dst: Buffer): Boolean\n\ninternal expect fun CharsetDecoder.decodeBuffer(\n input: Buffer,\n out: Appendable,\n lastBuffer: Boolean,\n max: Int = Int.MAX_VALUE\n): Int\n\ninternal fun CharsetEncoder.encodeToByteArrayImpl1(\n input: CharSequence,\n fromIndex: Int = 0,\n toIndex: Int = input.length\n): ByteArray {\n var start = fromIndex\n if (start >= toIndex) return EmptyByteArray\n val single = ChunkBuffer.Pool.borrow()\n\n try {\n val rc = encodeImpl(input, start, toIndex, single)\n start += rc\n if (start == toIndex) {\n val result = ByteArray(single.readRemaining)\n single.readFully(result)\n return result\n }\n\n return buildPacket {\n appendSingleChunk(single.duplicate())\n encodeToImpl(this, input, start, toIndex)\n }.readBytes()\n } finally {\n single.release(ChunkBuffer.Pool)\n }\n}\n\ninternal fun Input.sizeEstimate(): Long = when (this) {\n is ByteReadPacket -> remaining\n is AbstractInput -> maxOf(remaining, 16)\n else -> 16\n}\n\nprivate fun CharsetEncoder.encodeCompleteImpl(dst: Output): Int {\n var size = 1\n var bytesWritten = 0\n\n dst.writeWhile { view ->\n val before = view.writeRemaining\n if (encodeComplete(view)) {\n size = 0\n } else {\n size++\n }\n bytesWritten += before - view.writeRemaining\n size > 0\n }\n\n return bytesWritten\n}\n\ninternal fun CharsetEncoder.encodeToImpl(\n destination: Output,\n input: CharSequence,\n fromIndex: Int,\n toIndex: Int\n): Int {\n var start = fromIndex\n if (start >= toIndex) return 0\n\n var bytesWritten = 0\n\n destination.writeWhileSize(1) { view: Buffer ->\n val before = view.writeRemaining\n val rc = encodeImpl(input, start, toIndex, view)\n check(rc >= 0)\n start += rc\n bytesWritten += before - view.writeRemaining\n\n when {\n start >= toIndex -> 0\n rc == 0 -> 8\n else -> 1\n }\n }\n\n bytesWritten += encodeCompleteImpl(destination)\n return bytesWritten\n}\n","@file:Suppress(\"NOTHING_TO_INLINE\")\n\npackage io.ktor.utils.io.bits\n\nimport io.ktor.utils.io.core.internal.*\n\npublic actual inline fun Memory.loadShortAt(offset: Int): Short = view.getInt16(offset, false)\n\npublic actual inline fun Memory.loadShortAt(offset: Long): Short = loadShortAt(offset.toIntOrFail(\"offset\"))\n\npublic actual inline fun Memory.loadIntAt(offset: Int): Int = view.getInt32(offset, false)\n\npublic actual inline fun Memory.loadIntAt(offset: Long): Int = loadIntAt(offset.toIntOrFail(\"offset\"))\n\npublic actual inline fun Memory.loadLongAt(offset: Int): Long =\n (view.getUint32(offset, false).toLong() shl 32) or\n view.getUint32(offset + 4, false).toLong()\n\npublic actual inline fun Memory.loadLongAt(offset: Long): Long = loadLongAt(offset.toIntOrFail(\"offset\"))\n\npublic actual inline fun Memory.loadFloatAt(offset: Int): Float = view.getFloat32(offset, false)\n\npublic actual inline fun Memory.loadFloatAt(offset: Long): Float = loadFloatAt(offset.toIntOrFail(\"offset\"))\n\npublic actual inline fun Memory.loadDoubleAt(offset: Int): Double = view.getFloat64(offset, false)\n\npublic actual inline fun Memory.loadDoubleAt(offset: Long): Double = loadDoubleAt(offset.toIntOrFail(\"offset\"))\n\n/**\n * Write regular signed 32bit integer in the network byte order (Big Endian)\n */\npublic actual inline fun Memory.storeIntAt(offset: Int, value: Int) {\n view.setInt32(offset, value, littleEndian = false)\n}\n\n/**\n * Write regular signed 32bit integer in the network byte order (Big Endian)\n */\npublic actual inline fun Memory.storeIntAt(offset: Long, value: Int) {\n view.setInt32(offset.toIntOrFail(\"offset\"), value, littleEndian = false)\n}\n\n/**\n * Write short signed 16bit integer in the network byte order (Big Endian)\n */\npublic actual inline fun Memory.storeShortAt(offset: Int, value: Short) {\n view.setInt16(offset, value, littleEndian = false)\n}\n\n/**\n * Write short signed 16bit integer in the network byte order (Big Endian)\n */\npublic actual inline fun Memory.storeShortAt(offset: Long, value: Short) {\n view.setInt16(offset.toIntOrFail(\"offset\"), value, littleEndian = false)\n}\n\n/**\n * Write short signed 64bit integer in the network byte order (Big Endian)\n */\npublic actual inline fun Memory.storeLongAt(offset: Int, value: Long) {\n view.setInt32(offset, (value shr 32).toInt(), littleEndian = false)\n view.setInt32(offset + 4, (value and 0xffffffffL).toInt(), littleEndian = false)\n}\n\n/**\n * Write short signed 64bit integer in the network byte order (Big Endian)\n */\npublic actual inline fun Memory.storeLongAt(offset: Long, value: Long) {\n storeLongAt(offset.toIntOrFail(\"offset\"), value)\n}\n\n/**\n * Write short signed 32bit floating point number in the network byte order (Big Endian)\n */\npublic actual inline fun Memory.storeFloatAt(offset: Int, value: Float) {\n view.setFloat32(offset, value, littleEndian = false)\n}\n\n/**\n * Write short signed 32bit floating point number in the network byte order (Big Endian)\n */\npublic actual inline fun Memory.storeFloatAt(offset: Long, value: Float) {\n view.setFloat32(offset.toIntOrFail(\"offset\"), value, littleEndian = false)\n}\n\n/**\n * Write short signed 64bit floating point number in the network byte order (Big Endian)\n */\npublic actual inline fun Memory.storeDoubleAt(offset: Int, value: Double) {\n view.setFloat64(offset, value, littleEndian = false)\n}\n\n/**\n * Write short signed 64bit floating point number in the network byte order (Big Endian)\n */\npublic actual inline fun Memory.storeDoubleAt(offset: Long, value: Double) {\n view.setFloat64(offset.toIntOrFail(\"offset\"), value, littleEndian = false)\n}\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.Memory\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readFully(dst: ByteArray, offset: Int = 0, length: Int = dst.size - offset) {\n readFullyBytesTemplate(offset, length) { src, dstOffset, count ->\n src.readFully(dst, dstOffset, count)\n }.requireNoRemaining()\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readFully(dst: ShortArray, offset: Int = 0, length: Int = dst.size - offset) {\n readFullyTemplate(offset, length, 2) { src, dstOffset, count ->\n src.readFully(dst, dstOffset, count)\n }.requireNoRemaining()\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readFully(dst: IntArray, offset: Int = 0, length: Int = dst.size - offset) {\n readFullyTemplate(offset, length, 4) { src, dstOffset, count ->\n src.readFully(dst, dstOffset, count)\n }.requireNoRemaining()\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readFully(dst: LongArray, offset: Int = 0, length: Int = dst.size - offset) {\n readFullyTemplate(offset, length, 8) { src, dstOffset, count ->\n src.readFully(dst, dstOffset, count)\n }.requireNoRemaining()\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readFully(dst: FloatArray, offset: Int = 0, length: Int = dst.size - offset) {\n readFullyTemplate(offset, length, 4) { src, dstOffset, count ->\n src.readFully(dst, dstOffset, count)\n }.requireNoRemaining()\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readFully(dst: DoubleArray, offset: Int = 0, length: Int = dst.size - offset) {\n readFullyTemplate(offset, length, 8) { src, dstOffset, count ->\n src.readFully(dst, dstOffset, count)\n }.requireNoRemaining()\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readFully(dst: Buffer, length: Int = dst.writeRemaining) {\n readFullyBytesTemplate(0, length) { src, _, count ->\n src.readFully(dst, count)\n }.requireNoRemaining()\n}\n\npublic fun Input.readFully(destination: Memory, destinationOffset: Int, length: Int) {\n readFully(destination, destinationOffset.toLong(), length.toLong())\n}\n\npublic fun Input.readFully(destination: Memory, destinationOffset: Long, length: Long) {\n if (readAvailable(destination, destinationOffset, length) != length) {\n prematureEndOfStream(length)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readAvailable(dst: ByteArray, offset: Int = 0, length: Int = dst.size - offset): Int {\n return length - readFullyBytesTemplate(offset, length) { src, dstOffset, count ->\n src.readFully(dst, dstOffset, count)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readAvailable(dst: ShortArray, offset: Int = 0, length: Int = dst.size - offset): Int {\n return length - readFullyTemplate(offset, length, 2) { src, dstOffset, count ->\n src.readFully(dst, dstOffset, count)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readAvailable(dst: IntArray, offset: Int = 0, length: Int = dst.size - offset): Int {\n return length - readFullyTemplate(offset, length, 4) { src, dstOffset, count ->\n src.readFully(dst, dstOffset, count)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readAvailable(dst: LongArray, offset: Int = 0, length: Int = dst.size - offset): Int {\n return length - readFullyTemplate(offset, length, 8) { src, dstOffset, count ->\n src.readFully(dst, dstOffset, count)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readAvailable(dst: FloatArray, offset: Int = 0, length: Int = dst.size - offset): Int {\n return length - readFullyTemplate(offset, length, 4) { src, dstOffset, count ->\n src.readFully(dst, dstOffset, count)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readAvailable(dst: DoubleArray, offset: Int = 0, length: Int = dst.size - offset): Int {\n return length - readFullyTemplate(offset, length, 8) { src, dstOffset, count ->\n src.readFully(dst, dstOffset, count)\n }\n}\n\npublic fun Input.readAvailable(dst: Buffer, length: Int = dst.writeRemaining): Int {\n return length - readFullyBytesTemplate(0, length) { src, _, count ->\n src.readFully(dst, count)\n }\n}\n\npublic fun Input.readAvailable(destination: Memory, destinationOffset: Int, length: Int): Int {\n return readAvailable(destination, destinationOffset.toLong(), length.toLong()).toInt()\n}\n\npublic fun Input.readAvailable(destination: Memory, destinationOffset: Long, length: Long): Long {\n val remaining = readFullyBytesTemplate(destinationOffset, length) { src, srcOffset, dstOffset, count ->\n src.copyTo(destination, srcOffset, count.toLong(), dstOffset)\n }\n val result = length - remaining\n return when {\n result == 0L && endOfInput -> -1\n else -> result\n }\n}\n\n/**\n * @return number of bytes remaining or 0 if all [length] bytes were copied\n */\nprivate inline fun Input.readFullyBytesTemplate(\n initialDstOffset: Int,\n length: Int,\n readBlock: (src: Buffer, dstOffset: Int, count: Int) -> Unit\n): Int {\n var remaining = length\n var dstOffset = initialDstOffset\n\n takeWhile { buffer ->\n val count = minOf(remaining, buffer.readRemaining)\n readBlock(buffer, dstOffset, count)\n remaining -= count\n dstOffset += count\n\n remaining > 0\n }\n\n return remaining\n}\n\n/**\n * @return number of bytes remaining or 0 if all [length] bytes were copied\n */\nprivate inline fun Input.readFullyBytesTemplate(\n initialDstOffset: Long,\n length: Long,\n readBlock: (src: Memory, srcOffset: Long, dstOffset: Long, count: Int) -> Unit\n): Long {\n var remaining = length\n var dstOffset = initialDstOffset\n\n takeWhile { buffer ->\n val count = minOf(remaining, buffer.readRemaining.toLong()).toInt()\n readBlock(buffer.memory, buffer.readPosition.toLong(), dstOffset, count)\n buffer.discardExact(count)\n remaining -= count\n dstOffset += count\n\n remaining > 0\n }\n\n return remaining\n}\n\n/**\n * @return number of elements remaining or 0 if all [length] elements were copied\n */\nprivate inline fun Input.readFullyTemplate(\n offset: Int,\n length: Int,\n componentSize: Int,\n readBlock: (src: Buffer, dstOffset: Int, count: Int) -> Unit\n): Int {\n var remaining = length\n var dstOffset = offset\n\n takeWhileSize { buffer ->\n val count = minOf(remaining, buffer.readRemaining / componentSize)\n readBlock(buffer, dstOffset, count)\n remaining -= count\n dstOffset += count\n\n when {\n remaining > 0 -> componentSize\n else -> 0\n }\n }\n\n return remaining\n}\n\n@Suppress(\"NOTHING_TO_INLINE\")\nprivate inline fun Int.requireNoRemaining() {\n if (this > 0) {\n prematureEndOfStream(this)\n }\n}\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.Memory\nimport io.ktor.utils.io.core.internal.*\nimport io.ktor.utils.io.pool.*\nimport kotlin.contracts.*\n\n/**\n * A read-write facade to actual buffer of fixed size. Multiple views could share the same actual buffer.\n * Concurrent unsafe. The only concurrent-safe operation is [release].\n * In most cases [ByteReadPacket] and [BytePacketBuilder] should be used instead.\n */\n@Suppress(\"DIFFERENT_NAMES_FOR_THE_SAME_PARAMETER_IN_SUPERTYPES\", \"DEPRECATION\")\n@Deprecated(\"Use Memory, Input or Output instead.\")\npublic expect class IoBuffer : Input, Output, ChunkBuffer {\n\n @Suppress(\"ConvertSecondaryConstructorToPrimary\")\n public constructor(memory: Memory, origin: ChunkBuffer?)\n\n @Deprecated(\n \"Not supported anymore. All operations are big endian by default. \" +\n \"Read/write with readXXXLittleEndian/writeXXXLittleEndian or \" +\n \"do readXXX/writeXXX with X.reverseByteOrder() instead.\",\n level = DeprecationLevel.ERROR\n )\n final override var byteOrder: ByteOrder\n\n override fun close()\n\n final override fun flush()\n\n public fun release(pool: ObjectPool)\n\n @Suppress(\"DEPRECATION\")\n public companion object {\n /**\n * Number of bytes usually reserved in the end of chunk\n * when several instances of [ChunkBuffer] are connected into a chain (usually inside of [ByteReadPacket]\n * or [BytePacketBuilder])\n */\n @DangerousInternalIoApi\n public val ReservedSize: Int\n\n /**\n * The empty buffer singleton: it has zero capacity for read and write.\n */\n public val Empty: IoBuffer\n\n /**\n * The default buffer pool\n */\n public val Pool: ObjectPool\n\n /**\n * Pool that always instantiates new buffers instead of reusing it\n */\n public val NoPool: ObjectPool\n\n /**\n * A pool that always returns [IoBuffer.Empty]\n */\n public val EmptyPool: ObjectPool\n }\n}\n\n/**\n * Read the specified number of bytes specified (optional, read all remaining by default)\n */\npublic fun Buffer.readBytes(count: Int = readRemaining): ByteArray {\n if (count == 0) {\n return EmptyByteArray\n }\n\n val result = ByteArray(count)\n readFully(result)\n return result\n}\n\n@Suppress(\"DEPRECATION\")\ninternal fun IoBuffer.releaseImpl(pool: ObjectPool) {\n if (release()) {\n val origin = origin\n if (origin is IoBuffer) {\n unlink()\n origin.release(pool)\n } else {\n pool.recycle(this)\n }\n }\n}\n\n@Suppress(\"DEPRECATION\", \"DEPRECATION_ERROR\")\ninternal object EmptyBufferPoolImpl : NoPoolImpl() {\n override fun borrow() = IoBuffer.Empty\n}\n\ninternal tailrec fun ChunkBuffer?.releaseAll(pool: ObjectPool) {\n if (this == null) return\n val next = cleanNext()\n release(pool)\n next.releaseAll(pool)\n}\n\ninternal inline fun ChunkBuffer.forEachChunk(block: (ChunkBuffer) -> Unit) {\n contract {\n callsInPlace(block, InvocationKind.AT_LEAST_ONCE)\n }\n var current = this\n do {\n block(current)\n current = current.next ?: break\n } while (true)\n}\n\n/**\n * Copy every element of the chain starting from this and setup next links.\n */\ninternal fun ChunkBuffer.copyAll(): ChunkBuffer {\n val copied = duplicate()\n val next = this.next ?: return copied\n\n return next.copyAll(copied, copied)\n}\n\nprivate tailrec fun ChunkBuffer.copyAll(head: ChunkBuffer, prev: ChunkBuffer): ChunkBuffer {\n val copied = duplicate()\n prev.next = copied\n\n val next = this.next ?: return head\n\n return next.copyAll(head, copied)\n}\n\ninternal tailrec fun ChunkBuffer.findTail(): ChunkBuffer {\n val next = this.next ?: return this\n return next.findTail()\n}\n\n/**\n * Summarize remainings of all elements of the chain\n */\n@DangerousInternalIoApi\npublic fun ChunkBuffer.remainingAll(): Long = remainingAll(0L)\n\n@Suppress(\"DEPRECATION\", \"UNUSED\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\npublic fun remainingAll(buffer: IoBuffer): Long = buffer.remainingAll()\n\nprivate tailrec fun ChunkBuffer.remainingAll(n: Long): Long {\n val rem = readRemaining.toLong() + n\n val next = this.next ?: return rem\n\n return next.remainingAll(rem)\n}\n\ninternal tailrec fun ChunkBuffer.isEmpty(): Boolean {\n if (readRemaining > 0) return false\n val next = this.next ?: return true\n return next.isEmpty()\n}\n\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal inline fun Long.coerceAtMostMaxInt(): Int = minOf(this, Int.MAX_VALUE.toLong()).toInt()\n\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal inline fun Long.coerceAtMostMaxIntOrFail(message: String): Int {\n if (this > Int.MAX_VALUE.toLong()) throw IllegalArgumentException(message)\n return this.toInt()\n}\n\ninternal fun Buffer.peekTo(destination: Memory, destinationOffset: Long, offset: Long, min: Long, max: Long): Long {\n val size = minOf(\n destination.size - destinationOffset,\n max,\n readRemaining.toLong()\n )\n\n memory.copyTo(\n destination,\n readPosition + offset,\n size,\n destinationOffset\n )\n\n return size\n}\n\npublic class BufferLimitExceededException(message: String) : Exception(message)\n","package io.ktor.utils.io.core.internal\n\nimport kotlin.contracts.*\n\n@PublishedApi\ninternal inline fun require(condition: Boolean, crossinline message: () -> String) {\n contract {\n returns() implies condition\n }\n\n if (!condition) {\n val m = object : RequireFailureCapture() {\n override fun doFail(): Nothing {\n throw IllegalArgumentException(message())\n }\n }\n m.doFail()\n }\n}\n\n@PublishedApi\ninternal abstract class RequireFailureCapture {\n abstract fun doFail(): Nothing\n}\n","package io.ktor.utils.io\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.*\n\n/**\n * Channel for asynchronous writing of sequences of bytes.\n * This is a **single-writer channel**.\n *\n * Operations on this channel cannot be invoked concurrently, unless explicitly specified otherwise\n * in description. Exceptions are [close] and [flush].\n */\npublic expect interface ByteWriteChannel {\n /**\n * Returns number of bytes that can be written without suspension. Write operations do no suspend and return\n * immediately when this number is at least the number of bytes requested for write.\n */\n public val availableForWrite: Int\n\n /**\n * Returns `true` is channel has been closed and attempting to write to the channel will cause an exception.\n */\n public val isClosedForWrite: Boolean\n\n /**\n * Returns `true` if channel flushes automatically all pending bytes after every write function call.\n * If `false` then flush only happens at manual [flush] invocation or when the buffer is full.\n */\n public val autoFlush: Boolean\n\n /**\n * Byte order that is used for multi-byte write operations\n * (such as [writeShort], [writeInt], [writeLong], [writeFloat], and [writeDouble]).\n */\n @Deprecated(\n \"Setting byte order is no longer supported. Read/write in big endian and use reverseByteOrder() extensions.\",\n level = DeprecationLevel.ERROR\n )\n public var writeByteOrder: ByteOrder\n\n /**\n * Number of bytes written to the channel.\n * It is not guaranteed to be atomic so could be updated in the middle of write operation.\n */\n public val totalBytesWritten: Long\n\n /**\n * An closure cause exception or `null` if closed successfully or not yet closed\n */\n public val closedCause: Throwable?\n\n /**\n * Writes as much as possible and only suspends if buffer is full\n */\n public suspend fun writeAvailable(src: ByteArray, offset: Int, length: Int): Int\n\n public suspend fun writeAvailable(src: IoBuffer): Int\n\n /**\n * Writes all [src] bytes and suspends until all bytes written. Causes flush if buffer filled up or when [autoFlush]\n * Crashes if channel get closed while writing.\n */\n public suspend fun writeFully(src: ByteArray, offset: Int, length: Int)\n\n public suspend fun writeFully(src: IoBuffer)\n\n public suspend fun writeFully(src: Buffer)\n\n public suspend fun writeFully(memory: Memory, startIndex: Int, endIndex: Int)\n\n @Suppress(\"DEPRECATION\")\n @Deprecated(\"Use write { } instead.\")\n public suspend fun writeSuspendSession(visitor: suspend WriterSuspendSession.() -> Unit)\n\n /**\n * Writes a [packet] fully or fails if channel get closed before the whole packet has been written\n */\n public suspend fun writePacket(packet: ByteReadPacket)\n\n /**\n * Writes long number and suspends until written.\n * Crashes if channel get closed while writing.\n */\n public suspend fun writeLong(l: Long)\n\n /**\n * Writes int number and suspends until written.\n * Crashes if channel get closed while writing.\n */\n public suspend fun writeInt(i: Int)\n\n /**\n * Writes short number and suspends until written.\n * Crashes if channel get closed while writing.\n */\n public suspend fun writeShort(s: Short)\n\n /**\n * Writes byte and suspends until written.\n * Crashes if channel get closed while writing.\n */\n public suspend fun writeByte(b: Byte)\n\n /**\n * Writes double number and suspends until written.\n * Crashes if channel get closed while writing.\n */\n public suspend fun writeDouble(d: Double)\n\n /**\n * Writes float number and suspends until written.\n * Crashes if channel get closed while writing.\n */\n public suspend fun writeFloat(f: Float)\n\n /**\n * Invokes [block] when at least 1 byte is available for write.\n */\n @ExperimentalIoApi\n public suspend fun awaitFreeSpace()\n\n /**\n * Closes this channel with an optional exceptional [cause].\n * It flushes all pending write bytes (via [flush]).\n * This is an idempotent operation -- repeated invocations of this function have no effect and return `false`.\n *\n * A channel that was closed without a [cause], is considered to be _closed normally_.\n * A channel that was closed with non-null [cause] is called a _failed channel_. Attempts to read or\n * write on a failed channel throw this cause exception.\n *\n * After invocation of this operation [isClosedForWrite] starts returning `true` and\n * all subsequent write operations throw [ClosedWriteChannelException] or the specified [cause].\n * However, [isClosedForRead][ByteReadChannel.isClosedForRead] on the side of [ByteReadChannel]\n * starts returning `true` only after all written bytes have been read.\n *\n * Please note that if the channel has been closed with cause and it has been provided by [reader] or [writer]\n * coroutine then the corresponding coroutine will be cancelled with [cause]. If no [cause] provided then no\n * cancellation will be propagated.\n */\n public fun close(cause: Throwable?): Boolean\n\n /**\n * Flushes all pending write bytes making them available for read.\n *\n * This function is thread-safe and can be invoked in any thread at any time.\n * It does nothing when invoked on a closed channel.\n */\n public fun flush()\n}\n\npublic suspend fun ByteWriteChannel.writeAvailable(src: ByteArray): Int = writeAvailable(src, 0, src.size)\npublic suspend fun ByteWriteChannel.writeFully(src: ByteArray): Unit = writeFully(src, 0, src.size)\n\npublic suspend fun ByteWriteChannel.writeShort(s: Int) {\n return writeShort((s and 0xffff).toShort())\n}\n\npublic suspend fun ByteWriteChannel.writeShort(s: Int, byteOrder: ByteOrder) {\n return writeShort((s and 0xffff).toShort(), byteOrder)\n}\n\npublic suspend fun ByteWriteChannel.writeByte(b: Int) {\n return writeByte((b and 0xff).toByte())\n}\n\npublic suspend fun ByteWriteChannel.writeInt(i: Long) {\n return writeInt(i.toInt())\n}\n\npublic suspend fun ByteWriteChannel.writeInt(i: Long, byteOrder: ByteOrder) {\n return writeInt(i.toInt(), byteOrder)\n}\n\n/**\n * Closes this channel with no failure (successfully)\n */\npublic fun ByteWriteChannel.close(): Boolean = close(null)\n\npublic suspend fun ByteWriteChannel.writeStringUtf8(s: CharSequence) {\n val packet = buildPacket {\n writeStringUtf8(s)\n }\n\n return writePacket(packet)\n}\n\n/*\nTODO\npublic suspend fun ByteWriteChannel.writeStringUtf8(s: CharBuffer) {\n val packet = buildPacket {\n writeStringUtf8(s)\n }\n\n return writePacket(packet)\n}*/\n\npublic suspend fun ByteWriteChannel.writeStringUtf8(s: String) {\n val packet = buildPacket {\n writeText(s)\n }\n\n return writePacket(packet)\n}\n\npublic suspend fun ByteWriteChannel.writeBoolean(b: Boolean) {\n return writeByte(if (b) 1 else 0)\n}\n\n/**\n * Writes UTF16 character\n */\npublic suspend fun ByteWriteChannel.writeChar(ch: Char) {\n return writeShort(ch.toInt())\n}\n\npublic suspend inline fun ByteWriteChannel.writePacket(headerSizeHint: Int = 0, builder: BytePacketBuilder.() -> Unit) {\n return writePacket(buildPacket(headerSizeHint, builder))\n}\n\npublic suspend fun ByteWriteChannel.writePacketSuspend(builder: suspend BytePacketBuilder.() -> Unit) {\n return writePacket(buildPacket { builder() })\n}\n\n/**\n * Indicates attempt to write on [isClosedForWrite][ByteWriteChannel.isClosedForWrite] channel\n * that was closed without a cause. A _failed_ channel rethrows the original [close][ByteWriteChannel.close] cause\n * exception on send attempts.\n */\npublic class ClosedWriteChannelException(message: String?) : CancellationException(message)\n","package io.ktor.utils.io\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.*\n\npublic suspend inline fun ByteReadChannel.readShort(byteOrder: ByteOrder): Short {\n return readShort().reverseIfNeeded(byteOrder) { reverseByteOrder() }\n}\n\npublic suspend inline fun ByteReadChannel.readInt(byteOrder: ByteOrder): Int {\n return readInt().reverseIfNeeded(byteOrder) { reverseByteOrder() }\n}\n\npublic suspend inline fun ByteReadChannel.readLong(byteOrder: ByteOrder): Long {\n return readLong().reverseIfNeeded(byteOrder) { reverseByteOrder() }\n}\n\npublic suspend inline fun ByteReadChannel.readFloat(byteOrder: ByteOrder): Float {\n return readFloat().reverseIfNeeded(byteOrder) { reverseByteOrder() }\n}\n\npublic suspend inline fun ByteReadChannel.readDouble(byteOrder: ByteOrder): Double {\n return readDouble().reverseIfNeeded(byteOrder) { reverseByteOrder() }\n}\n\npublic suspend inline fun ByteReadChannel.readShortLittleEndian(): Short {\n return toLittleEndian(readShort()) { reverseByteOrder() }\n}\n\npublic suspend inline fun ByteReadChannel.readIntLittleEndian(): Int {\n return toLittleEndian(readInt()) { reverseByteOrder() }\n}\n\npublic suspend inline fun ByteReadChannel.readLongLittleEndian(): Long {\n return toLittleEndian(readLong()) { reverseByteOrder() }\n}\n\npublic suspend inline fun ByteReadChannel.readFloatLittleEndian(): Float {\n return toLittleEndian(readFloat()) { reverseByteOrder() }\n}\n\npublic suspend inline fun ByteReadChannel.readDoubleLittleEndian(): Double {\n return toLittleEndian(readDouble()) { reverseByteOrder() }\n}\n\npublic suspend fun ByteWriteChannel.writeShort(value: Short, byteOrder: ByteOrder) {\n writeShort(value.reverseIfNeeded(byteOrder) { reverseByteOrder() })\n}\n\npublic suspend fun ByteWriteChannel.writeInt(value: Int, byteOrder: ByteOrder) {\n writeInt(value.reverseIfNeeded(byteOrder) { reverseByteOrder() })\n}\n\npublic suspend fun ByteWriteChannel.writeLong(value: Long, byteOrder: ByteOrder) {\n writeLong(value.reverseIfNeeded(byteOrder) { reverseByteOrder() })\n}\n\npublic suspend fun ByteWriteChannel.writeFloat(value: Float, byteOrder: ByteOrder) {\n writeFloat(value.reverseIfNeeded(byteOrder) { reverseByteOrder() })\n}\n\npublic suspend fun ByteWriteChannel.writeDouble(value: Double, byteOrder: ByteOrder) {\n writeDouble(value.reverseIfNeeded(byteOrder) { reverseByteOrder() })\n}\n\npublic suspend fun ByteWriteChannel.writeShortLittleEndian(value: Short) {\n writeShort(toLittleEndian(value) { reverseByteOrder() })\n}\n\npublic suspend fun ByteWriteChannel.writeIntLittleEndian(value: Int) {\n writeInt(toLittleEndian(value) { reverseByteOrder() })\n}\n\npublic suspend fun ByteWriteChannel.writeLongLittleEndian(value: Long) {\n writeLong(toLittleEndian(value) { reverseByteOrder() })\n}\n\npublic suspend fun ByteWriteChannel.writeFloatLittleEndian(value: Float) {\n writeFloat(toLittleEndian(value) { reverseByteOrder() })\n}\n\npublic suspend fun ByteWriteChannel.writeDoubleLittleEndian(value: Double) {\n writeDouble(toLittleEndian(value) { reverseByteOrder() })\n}\n\n@PublishedApi\n@Suppress(\"DEPRECATION_ERROR\")\ninternal inline fun ByteReadChannel.toLittleEndian(value: T, reverseBlock: T.() -> T): T {\n return when (readByteOrder) {\n ByteOrder.LITTLE_ENDIAN -> value\n else -> value.reverseBlock()\n }\n}\n\n@Suppress(\"DEPRECATION_ERROR\")\nprivate inline fun ByteWriteChannel.toLittleEndian(value: T, reverseBlock: T.() -> T): T {\n return when (writeByteOrder) {\n ByteOrder.LITTLE_ENDIAN -> value\n else -> value.reverseBlock()\n }\n}\n\n@PublishedApi\ninternal inline fun T.reverseIfNeeded(byteOrder: ByteOrder, reverseBlock: T.() -> T): T {\n return when (byteOrder) {\n ByteOrder.BIG_ENDIAN -> this\n else -> reverseBlock()\n }\n}\n","package io.ktor.utils.io\n\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\n\n/**\n * A coroutine job that is reading from a byte channel\n */\npublic interface ReaderJob : Job {\n /**\n * A reference to the channel that this coroutine is reading from\n */\n public val channel: ByteWriteChannel\n}\n\n/**\n * A coroutine job that is writing to a byte channel\n */\npublic interface WriterJob : Job {\n /**\n * A reference to the channel that this coroutine is writing to\n */\n public val channel: ByteReadChannel\n}\n\npublic interface ReaderScope : CoroutineScope {\n public val channel: ByteReadChannel\n}\n\npublic interface WriterScope : CoroutineScope {\n public val channel: ByteWriteChannel\n}\n\npublic fun CoroutineScope.reader(\n coroutineContext: CoroutineContext = EmptyCoroutineContext,\n channel: ByteChannel,\n block: suspend ReaderScope.() -> Unit\n): ReaderJob = launchChannel(coroutineContext, channel, attachJob = false, block = block)\n\npublic fun CoroutineScope.reader(\n coroutineContext: CoroutineContext = EmptyCoroutineContext,\n autoFlush: Boolean = false,\n block: suspend ReaderScope.() -> Unit\n): ReaderJob = launchChannel(coroutineContext, ByteChannel(autoFlush), attachJob = true, block = block)\n\n@Deprecated(\"Use scope.reader instead\")\npublic fun reader(\n coroutineContext: CoroutineContext,\n channel: ByteChannel,\n parent: Job? = null,\n block: suspend ReaderScope.() -> Unit\n): ReaderJob {\n val newContext = if (parent != null) GlobalScope.newCoroutineContext(coroutineContext + parent)\n else GlobalScope.newCoroutineContext(coroutineContext)\n\n return CoroutineScope(newContext).reader(EmptyCoroutineContext, channel, block)\n}\n\n@Suppress(\"DEPRECATION\")\n@Deprecated(\"Use scope.reader instead\")\npublic fun reader(\n coroutineContext: CoroutineContext,\n autoFlush: Boolean = false,\n parent: Job? = null,\n block: suspend ReaderScope.() -> Unit\n): ReaderJob {\n val channel = ByteChannel(autoFlush)\n return reader(coroutineContext, channel, parent, block).also {\n channel.attachJob(it)\n }\n}\n\npublic fun CoroutineScope.writer(\n coroutineContext: CoroutineContext = EmptyCoroutineContext,\n channel: ByteChannel,\n block: suspend WriterScope.() -> Unit\n): WriterJob = launchChannel(coroutineContext, channel, attachJob = false, block = block)\n\npublic fun CoroutineScope.writer(\n coroutineContext: CoroutineContext = EmptyCoroutineContext,\n autoFlush: Boolean = false,\n block: suspend WriterScope.() -> Unit\n): WriterJob = launchChannel(coroutineContext, ByteChannel(autoFlush), attachJob = true, block = block)\n\n@Deprecated(\"Use scope.writer instead\")\npublic fun writer(\n coroutineContext: CoroutineContext,\n channel: ByteChannel,\n parent: Job? = null,\n block: suspend WriterScope.() -> Unit\n): WriterJob {\n val newContext = if (parent != null) GlobalScope.newCoroutineContext(coroutineContext + parent)\n else GlobalScope.newCoroutineContext(coroutineContext)\n\n return CoroutineScope(newContext).writer(EmptyCoroutineContext, channel, block)\n}\n\n@Suppress(\"DEPRECATION\")\n@Deprecated(\"Use scope.writer instead\")\npublic fun writer(\n coroutineContext: CoroutineContext,\n autoFlush: Boolean = false,\n parent: Job? = null,\n block: suspend WriterScope.() -> Unit\n): WriterJob {\n val channel = ByteChannel(autoFlush)\n return writer(coroutineContext, channel, parent, block).also {\n channel.attachJob(it)\n }\n}\n\n/**\n * @param S not exactly safe (unchecked cast is used) so should be [ReaderScope] or [WriterScope]\n */\n@OptIn(ExperimentalStdlibApi::class)\nprivate fun CoroutineScope.launchChannel(\n context: CoroutineContext,\n channel: ByteChannel,\n attachJob: Boolean,\n block: suspend S.() -> Unit\n): ChannelJob {\n val dispatcher = coroutineContext[CoroutineDispatcher]\n val job = launch(context) {\n if (attachJob) {\n channel.attachJob(coroutineContext[Job]!!)\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n val scope = ChannelScope(this, channel) as S\n\n try {\n block(scope)\n } catch (cause: Throwable) {\n if (dispatcher != Dispatchers.Unconfined && dispatcher != null) {\n throw cause\n }\n\n channel.cancel(cause)\n }\n }\n\n job.invokeOnCompletion { cause ->\n channel.close(cause)\n }\n\n return ChannelJob(job, channel)\n}\n\nprivate class ChannelScope(\n delegate: CoroutineScope,\n override val channel: ByteChannel\n) : ReaderScope, WriterScope, CoroutineScope by delegate\n\nprivate class ChannelJob(\n private val delegate: Job,\n override val channel: ByteChannel\n) : ReaderJob, WriterJob, Job by delegate {\n override fun toString(): String = \"ChannelJob[$delegate]\"\n}\n","package io.ktor.utils.io\n\nimport io.ktor.utils.io.bits.Memory\nimport io.ktor.utils.io.core.*\nimport io.ktor.utils.io.core.internal.*\n\n/**\n * Await until at least [desiredSize] is available for read or EOF and invoke [block] function. The block function\n * should never capture a provided [Memory] instance outside otherwise an undefined behaviour may occur including\n * accidental crash or data corruption. Block function should return number of bytes consumed or 0.\n *\n * Specifying [desiredSize] larger than the channel's capacity leads to block function invocation earlier\n * when the channel is full. So specifying too big [desiredSize] is identical to specifying [desiredSize] equal to\n * the channel's capacity. The other case when a provided memory range could be less than [desiredSize] is that\n * all the requested bytes couldn't be represented as a single memory range due to internal implementation reasons.\n *\n * @return number of bytes consumed, possibly 0\n */\n@ExperimentalIoApi\npublic suspend inline fun ByteReadChannel.read(\n desiredSize: Int = 1,\n block: (source: Memory, start: Long, endExclusive: Long) -> Int\n): Int {\n val buffer = requestBuffer(desiredSize) ?: Buffer.Empty\n\n try {\n val bytesRead = block(buffer.memory, buffer.readPosition.toLong(), buffer.writePosition.toLong())\n completeReadingFromBuffer(buffer, bytesRead)\n return bytesRead\n } catch (cause: Throwable) {\n completeReadingFromBuffer(buffer, 0)\n throw cause\n }\n\n // we don't use finally here because of KT-37279\n}\n\n@Deprecated(\"Use read { } instead.\")\npublic interface ReadSession {\n /**\n * Number of bytes available for read. However it doesn't necessarily means that all available bytes could be\n * requested at once\n */\n public val availableForRead: Int\n\n /**\n * Discard at most [n] available bytes or 0 if no bytes available yet\n * @return number of bytes actually discarded, could be 0\n */\n public fun discard(n: Int): Int\n\n /**\n * Request buffer range [atLeast] bytes length\n *\n * There are the following reasons for this function to return `null`:\n * - not enough bytes available yet (should be at least `atLeast` bytes available)\n * - due to buffer fragmentation it is impossible to represent the requested range as a single buffer range\n * - end of stream encountered and all bytes were consumed\n *\n * @return buffer for the requested range or `null` if it is impossible to provide such a buffer view\n * @throws Throwable if the channel has been closed with an exception or cancelled\n */\n @Suppress(\"DEPRECATION\")\n public fun request(atLeast: Int = 1): IoBuffer?\n}\n\n@Suppress(\"DEPRECATION\")\n@Deprecated(\"Use read { } instead.\")\npublic interface SuspendableReadSession : ReadSession {\n /**\n * Suspend until [atLeast] bytes become available or end of stream encountered (possibly due to exceptional close)\n *\n * @return true if there are [atLeast] bytes available or false if end of stream encountered (there still could be\n * bytes available but less than [atLeast])\n * @throws Throwable if the channel has been closed with an exception or cancelled\n * @throws IllegalArgumentException if [atLeast] is negative to too big (usually bigger that 4088)\n */\n public suspend fun await(atLeast: Int = 1): Boolean\n}\n\n@PublishedApi\ninternal suspend fun ByteReadChannel.requestBuffer(desiredSize: Int): Buffer? {\n @Suppress(\"DEPRECATION\")\n val readSession: SuspendableReadSession? = when {\n this is SuspendableReadSession -> this\n this is HasReadSession -> startReadSession()\n else -> null\n }\n\n if (readSession != null) {\n val buffer = readSession.request(desiredSize.coerceAtMost(Buffer.ReservedSize))\n if (buffer != null) {\n return buffer\n }\n\n return readSession.requestBufferSuspend(desiredSize)\n }\n\n return requestBufferFallback(desiredSize)\n}\n\n@PublishedApi\ninternal suspend fun ByteReadChannel.completeReadingFromBuffer(buffer: Buffer?, bytesRead: Int) {\n check(bytesRead >= 0) { \"bytesRead shouldn't be negative: $bytesRead\" }\n @Suppress(\"DEPRECATION\")\n val readSession: SuspendableReadSession? = readSessionFor()\n\n if (readSession != null) {\n readSession.discard(bytesRead)\n if (this is HasReadSession) {\n endReadSession()\n }\n return\n }\n\n if (buffer is ChunkBuffer && buffer !== ChunkBuffer.Empty) {\n buffer.release(ChunkBuffer.Pool)\n discard(bytesRead.toLong())\n }\n}\n\n@Suppress(\"DEPRECATION\")\nprivate suspend fun SuspendableReadSession.requestBufferSuspend(desiredSize: Int): Buffer? {\n await(desiredSize)\n return request(1)\n}\n\nprivate suspend fun ByteReadChannel.requestBufferFallback(desiredSize: Int): ChunkBuffer {\n val chunk = ChunkBuffer.Pool.borrow()\n val copied =\n peekTo(chunk.memory, chunk.writePosition.toLong(), 0L, desiredSize.toLong(), chunk.writeRemaining.toLong())\n chunk.commitWritten(copied.toInt())\n\n return chunk\n}\n\ninternal interface HasReadSession {\n @Suppress(\"DEPRECATION\")\n public fun startReadSession(): SuspendableReadSession\n\n public fun endReadSession()\n}\n\n@Suppress(\"DEPRECATION\", \"NOTHING_TO_INLINE\")\nprivate inline fun ByteReadChannel.readSessionFor(): SuspendableReadSession? = when {\n this is HasReadSession -> startReadSession()\n else -> null\n}\n","package io.ktor.utils.io\n\nimport io.ktor.utils.io.bits.Memory\nimport io.ktor.utils.io.core.*\nimport io.ktor.utils.io.core.internal.ChunkBuffer\n\n/**\n * Await for [desiredSpace] will be available for write and invoke [block] function providing [Memory] instance and\n * the corresponding range suitable for wiring in the memory. The block function should return number of bytes were\n * written, possibly 0.\n *\n * Similar to [ByteReadChannel.read], this function may invoke block function with lesser memory range when the\n * specified [desiredSpace] is bigger that the buffer's capacity\n * or when it is impossible to represent all [desiredSpace] bytes as a single memory range\n * due to internal implementation reasons.\n */\n@ExperimentalIoApi\npublic suspend inline fun ByteWriteChannel.write(\n desiredSpace: Int = 1,\n block: (freeSpace: Memory, startOffset: Long, endExclusive: Long) -> Int\n): Int {\n val buffer = requestWriteBuffer(desiredSpace) ?: Buffer.Empty\n var bytesWritten = 0\n try {\n bytesWritten = block(buffer.memory, buffer.writePosition.toLong(), buffer.limit.toLong())\n buffer.commitWritten(bytesWritten)\n return bytesWritten\n } finally {\n completeWriting(buffer, bytesWritten)\n }\n}\n\n@Suppress(\"DEPRECATION\")\n@Deprecated(\"Use writeMemory instead.\")\npublic interface WriterSession {\n public fun request(min: Int): IoBuffer?\n public fun written(n: Int)\n public fun flush()\n}\n\n@Suppress(\"DEPRECATION\")\n@Deprecated(\"Use writeMemory instead.\")\npublic interface WriterSuspendSession : WriterSession {\n public suspend fun tryAwait(n: Int)\n}\n\n@Suppress(\"DEPRECATION\")\ninternal interface HasWriteSession {\n public fun beginWriteSession(): WriterSuspendSession?\n public fun endWriteSession(written: Int)\n}\n\n@PublishedApi\ninternal suspend fun ByteWriteChannel.requestWriteBuffer(desiredSpace: Int): Buffer? {\n val session = writeSessionFor()\n if (session != null) {\n val buffer = session.request(desiredSpace)\n if (buffer != null) {\n return buffer\n }\n\n return writeBufferSuspend(session, desiredSpace)\n }\n\n return writeBufferFallback()\n}\n\n@PublishedApi\ninternal suspend fun ByteWriteChannel.completeWriting(buffer: Buffer, written: Int) {\n if (this is HasWriteSession) {\n endWriteSession(written)\n return\n }\n\n return completeWritingFallback(buffer)\n}\n\n@Suppress(\"DEPRECATION\")\nprivate suspend fun ByteWriteChannel.completeWritingFallback(buffer: Buffer) {\n if (buffer is IoBuffer) {\n writeFully(buffer)\n buffer.release(IoBuffer.Pool)\n return\n }\n\n throw UnsupportedOperationException(\"Only IoBuffer instance is supported.\")\n}\n\n@Suppress(\"DEPRECATION\")\nprivate suspend fun writeBufferSuspend(session: WriterSuspendSession, desiredSpace: Int): Buffer? {\n session.tryAwait(desiredSpace)\n return session.request(desiredSpace) ?: session.request(1)\n}\n\nprivate fun writeBufferFallback(): Buffer? {\n return ChunkBuffer.Pool.borrow().also { it.resetForWrite(); it.reserveEndGap(Buffer.ReservedSize) }\n}\n\n@Suppress(\"DEPRECATION\", \"NOTHING_TO_INLINE\")\nprivate inline fun ByteWriteChannel.writeSessionFor(): WriterSuspendSession? = when {\n this is HasWriteSession -> beginWriteSession()\n else -> null\n}\n","package io.ktor.utils.io.core.internal\n\n@PublishedApi\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal inline fun Long.toIntOrFail(name: String): Int {\n if (this >= Int.MAX_VALUE) failLongToIntConversion(this, name)\n return toInt()\n}\n\n@PublishedApi\ninternal fun failLongToIntConversion(value: Long, name: String): Nothing =\n throw IllegalArgumentException(\"Long value $value of $name doesn't fit into 32-bit integer\")\n","@file:Suppress(\"NOTHING_TO_INLINE\")\n\npackage io.ktor.utils.io.bits\n\n/**\n * Read short signed 16bit integer in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.loadShortAt(offset: Int): Short\n\n/**\n * Read short signed 16bit integer in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.loadShortAt(offset: Long): Short\n\n/**\n * Write short signed 16bit integer in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.storeShortAt(offset: Int, value: Short)\n\n/**\n * Write short signed 16bit integer in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.storeShortAt(offset: Long, value: Short)\n\n/**\n * Read short unsigned 16bit integer in the network byte order (Big Endian)\n */\npublic inline fun Memory.loadUShortAt(offset: Int): UShort = loadShortAt(offset).toUShort()\n\n/**\n * Read short unsigned 16bit integer in the network byte order (Big Endian)\n */\npublic inline fun Memory.loadUShortAt(offset: Long): UShort = loadShortAt(offset).toUShort()\n\n/**\n * Write short unsigned 16bit integer in the network byte order (Big Endian)\n */\npublic inline fun Memory.storeUShortAt(offset: Int, value: UShort): Unit = storeShortAt(offset, value.toShort())\n\n/**\n * Write short unsigned 16bit integer in the network byte order (Big Endian)\n */\npublic inline fun Memory.storeUShortAt(offset: Long, value: UShort): Unit = storeShortAt(offset, value.toShort())\n\n/**\n * Read regular signed 32bit integer in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.loadIntAt(offset: Int): Int\n\n/**\n * Read regular signed 32bit integer in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.loadIntAt(offset: Long): Int\n\n/**\n * Write regular signed 32bit integer in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.storeIntAt(offset: Int, value: Int)\n\n/**\n * Write regular signed 32bit integer in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.storeIntAt(offset: Long, value: Int)\n\n/**\n * Read regular unsigned 32bit integer in the network byte order (Big Endian)\n */\npublic inline fun Memory.loadUIntAt(offset: Int): UInt = loadIntAt(offset).toUInt()\n\n/**\n * Read regular unsigned 32bit integer in the network byte order (Big Endian)\n */\npublic inline fun Memory.loadUIntAt(offset: Long): UInt = loadIntAt(offset).toUInt()\n\n/**\n * Write regular unsigned 32bit integer in the network byte order (Big Endian)\n */\npublic inline fun Memory.storeUIntAt(offset: Int, value: UInt): Unit = storeIntAt(offset, value.toInt())\n\n/**\n * Write regular unsigned 32bit integer in the network byte order (Big Endian)\n */\npublic inline fun Memory.storeUIntAt(offset: Long, value: UInt): Unit = storeIntAt(offset, value.toInt())\n\n/**\n * Read short signed 64bit integer in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.loadLongAt(offset: Int): Long\n\n/**\n * Read short signed 64bit integer in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.loadLongAt(offset: Long): Long\n\n/**\n * Write short signed 64bit integer in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.storeLongAt(offset: Int, value: Long)\n\n/**\n * write short signed 64bit integer in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.storeLongAt(offset: Long, value: Long)\n\n/**\n * Read short signed 64bit integer in the network byte order (Big Endian)\n */\npublic inline fun Memory.loadULongAt(offset: Int): ULong = loadLongAt(offset).toULong()\n\n/**\n * Read short signed 64bit integer in the network byte order (Big Endian)\n */\npublic inline fun Memory.loadULongAt(offset: Long): ULong = loadLongAt(offset).toULong()\n\n/**\n * Write short signed 64bit integer in the network byte order (Big Endian)\n */\npublic inline fun Memory.storeULongAt(offset: Int, value: ULong): Unit = storeLongAt(offset, value.toLong())\n\n/**\n * Write short signed 64bit integer in the network byte order (Big Endian)\n */\npublic inline fun Memory.storeULongAt(offset: Long, value: ULong): Unit = storeLongAt(offset, value.toLong())\n\n/**\n * Read short signed 32bit floating point number in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.loadFloatAt(offset: Int): Float\n\n/**\n * Read short signed 32bit floating point number in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.loadFloatAt(offset: Long): Float\n\n/**\n * Write short signed 32bit floating point number in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.storeFloatAt(offset: Int, value: Float)\n\n/**\n * Write short signed 32bit floating point number in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.storeFloatAt(offset: Long, value: Float)\n\n/**\n * Read short signed 64bit floating point number in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.loadDoubleAt(offset: Int): Double\n\n/**\n * Read short signed 64bit floating point number in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.loadDoubleAt(offset: Long): Double\n\n/**\n * Write short signed 64bit floating point number in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.storeDoubleAt(offset: Int, value: Double)\n\n/**\n * Write short signed 64bit floating point number in the network byte order (Big Endian)\n */\npublic expect inline fun Memory.storeDoubleAt(offset: Long, value: Double)\n","@file:Suppress(\"NOTHING_TO_INLINE\")\n\npackage io.ktor.utils.io.bits\n\n/**\n * Copies bytes from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset].\n */\npublic inline fun Memory.loadByteArray(\n offset: Int,\n destination: ByteArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n) {\n copyTo(destination, offset, count, destinationOffset)\n}\n\n/**\n * Copies unsigned shorts integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic inline fun Memory.loadByteArray(\n offset: Long,\n destination: ByteArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n) {\n copyTo(destination, offset, count, destinationOffset)\n}\n\n/**\n * Copies unsigned shorts integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic inline fun Memory.loadUByteArray(\n offset: Int,\n destination: UByteArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n) {\n copyTo(destination.asByteArray(), offset, count, destinationOffset)\n}\n\n/**\n * Copies unsigned shorts integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic inline fun Memory.loadUByteArray(\n offset: Long,\n destination: UByteArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n) {\n copyTo(destination.asByteArray(), offset, count, destinationOffset)\n}\n\n/**\n * Copies shorts integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic expect fun Memory.loadShortArray(\n offset: Int,\n destination: ShortArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n)\n\n/**\n * Copies shorts integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic expect fun Memory.loadShortArray(\n offset: Long,\n destination: ShortArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n)\n\n/**\n * Copies unsigned shorts integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic inline fun Memory.loadUShortArray(\n offset: Int,\n destination: UShortArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n) {\n loadShortArray(offset, destination.asShortArray(), destinationOffset, count)\n}\n\n/**\n * Copies unsigned shorts integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic inline fun Memory.loadUShortArray(\n offset: Long,\n destination: UShortArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n) {\n loadShortArray(offset, destination.asShortArray(), destinationOffset, count)\n}\n\n/**\n * Copies regular integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic expect fun Memory.loadIntArray(\n offset: Int,\n destination: IntArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n)\n\n/**\n * Copies regular integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic expect fun Memory.loadIntArray(\n offset: Long,\n destination: IntArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n)\n\n/**\n * Copies unsigned integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic inline fun Memory.loadUIntArray(\n offset: Int,\n destination: UIntArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n) {\n loadIntArray(offset, destination.asIntArray(), destinationOffset, count)\n}\n\n/**\n * Copies unsigned integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic inline fun Memory.loadUIntArray(\n offset: Long,\n destination: UIntArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n) {\n loadIntArray(offset, destination.asIntArray(), destinationOffset, count)\n}\n\n/**\n * Copies long integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic expect fun Memory.loadLongArray(\n offset: Int,\n destination: LongArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n)\n\n/**\n * Copies long integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic expect fun Memory.loadLongArray(\n offset: Long,\n destination: LongArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n)\n\n/**\n * Copies unsigned long integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic inline fun Memory.loadULongArray(\n offset: Int,\n destination: ULongArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n) {\n loadLongArray(offset, destination.asLongArray(), destinationOffset, count)\n}\n\n/**\n * Copies unsigned long integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic inline fun Memory.loadULongArray(\n offset: Long,\n destination: ULongArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n) {\n loadLongArray(offset, destination.asLongArray(), destinationOffset, count)\n}\n\n/**\n * Copies floating point numbers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic expect fun Memory.loadFloatArray(\n offset: Int,\n destination: FloatArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n)\n\n/**\n * Copies floating point numbers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic expect fun Memory.loadFloatArray(\n offset: Long,\n destination: FloatArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n)\n\n/**\n * Copies floating point numbers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic expect fun Memory.loadDoubleArray(\n offset: Int,\n destination: DoubleArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n)\n\n/**\n * Copies floating point numbers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic expect fun Memory.loadDoubleArray(\n offset: Long,\n destination: DoubleArray,\n destinationOffset: Int = 0,\n count: Int = destination.size - destinationOffset\n)\n\n/**\n * Copies unsigned shorts integers from the [source] array at [sourceOffset] to this memory at the specified [offset].\n * @param sourceOffset items\n */\npublic inline fun Memory.storeByteArray(\n offset: Int,\n source: ByteArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n) {\n source.useMemory(sourceOffset, count) { sourceMemory ->\n sourceMemory.copyTo(this, 0, count, offset)\n }\n}\n\n/**\n * Copies unsigned shorts integers from the [source] array at [sourceOffset] to this memory at the specified [offset].\n * @param sourceOffset items\n */\npublic inline fun Memory.storeByteArray(\n offset: Long,\n source: ByteArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n) {\n source.useMemory(sourceOffset, count) { sourceMemory ->\n sourceMemory.copyTo(this, 0L, count.toLong(), offset)\n }\n}\n\n/**\n * Copies unsigned shorts integers from the [source] array at [sourceOffset] to this memory at the specified [offset].\n * @param sourceOffset items\n */\npublic inline fun Memory.storeUByteArray(\n offset: Int,\n source: UByteArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n) {\n storeByteArray(offset, source.asByteArray(), sourceOffset, count)\n}\n\n/**\n * Copies unsigned shorts integers from the [source] array at [sourceOffset] to this memory at the specified [offset].\n * @param sourceOffset items\n */\npublic inline fun Memory.storeUByteArray(\n offset: Long,\n source: UByteArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n) {\n storeByteArray(offset, source.asByteArray(), sourceOffset, count)\n}\n\n/**\n * Copies shorts integers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic expect fun Memory.storeShortArray(\n offset: Int,\n source: ShortArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n)\n\n/**\n * Copies shorts integers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic expect fun Memory.storeShortArray(\n offset: Long,\n source: ShortArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n)\n\n/**\n * Copies unsigned shorts integers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic inline fun Memory.storeUShortArray(\n offset: Int,\n source: UShortArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n) {\n storeShortArray(offset, source.asShortArray(), sourceOffset, count)\n}\n\n/**\n * Copies unsigned shorts integers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic inline fun Memory.storeUShortArray(\n offset: Long,\n source: UShortArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n) {\n storeShortArray(offset, source.asShortArray(), sourceOffset, count)\n}\n\n/**\n * Copies regular integers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic expect fun Memory.storeIntArray(\n offset: Int,\n source: IntArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n)\n\n/**\n * Copies regular integers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic expect fun Memory.storeIntArray(\n offset: Long,\n source: IntArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n)\n\n/**\n * Copies unsigned integers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic inline fun Memory.storeUIntArray(\n offset: Int,\n source: UIntArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n) {\n storeIntArray(offset, source.asIntArray(), sourceOffset, count)\n}\n\n/**\n * Copies unsigned integers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic inline fun Memory.storeUIntArray(\n offset: Long,\n source: UIntArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n) {\n storeIntArray(offset, source.asIntArray(), sourceOffset, count)\n}\n\n/**\n * Copies long integers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic expect fun Memory.storeLongArray(\n offset: Int,\n source: LongArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n)\n\n/**\n * Copies long integers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic expect fun Memory.storeLongArray(\n offset: Long,\n source: LongArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n)\n\n/**\n * Copies unsigned long integers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic inline fun Memory.storeULongArray(\n offset: Int,\n source: ULongArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n) {\n storeLongArray(offset, source.asLongArray(), sourceOffset, count)\n}\n\n/**\n * Copies unsigned long integers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic inline fun Memory.storeULongArray(\n offset: Long,\n source: ULongArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n) {\n storeLongArray(offset, source.asLongArray(), sourceOffset, count)\n}\n\n/**\n * Copies floating point numbers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic expect fun Memory.storeFloatArray(\n offset: Int,\n source: FloatArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n)\n\n/**\n * Copies floating point numbers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic expect fun Memory.storeFloatArray(\n offset: Long,\n source: FloatArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n)\n\n/**\n * Copies floating point numbers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic expect fun Memory.storeDoubleArray(\n offset: Int,\n source: DoubleArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\n)\n\n/**\n * Copies floating point numbers from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic expect fun Memory.storeDoubleArray(\n offset: Long,\n source: DoubleArray,\n sourceOffset: Int = 0,\n count: Int = source.size - sourceOffset\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(\"UArraysKt\")\n@file:kotlin.jvm.JvmPackageName(\"kotlin.collections.unsigned\")\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component1(): UInt {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component1(): ULong {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component1(): UByte {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component1(): UShort {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component2(): UInt {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component2(): ULong {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component2(): UByte {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component2(): UShort {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component3(): UInt {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component3(): ULong {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component3(): UByte {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component3(): UShort {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component4(): UInt {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component4(): ULong {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component4(): UByte {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component4(): UShort {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.component5(): UInt {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.component5(): ULong {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.component5(): UByte {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.component5(): UShort {\n return get(4)\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UIntArray.elementAt(index: Int): UInt\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun ULongArray.elementAt(index: Int): ULong\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UByteArray.elementAt(index: Int): UByte\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UShortArray.elementAt(index: Int): UShort\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.elementAtOrElse(index: Int, defaultValue: (Int) -> UInt): UInt {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.elementAtOrElse(index: Int, defaultValue: (Int) -> ULong): ULong {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.elementAtOrElse(index: Int, defaultValue: (Int) -> UByte): UByte {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.elementAtOrElse(index: Int, defaultValue: (Int) -> UShort): UShort {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.elementAtOrNull(index: Int): UInt? {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.elementAtOrNull(index: Int): ULong? {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.elementAtOrNull(index: Int): UByte? {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.elementAtOrNull(index: Int): UShort? {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.find(predicate: (UInt) -> Boolean): UInt? {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.find(predicate: (ULong) -> Boolean): ULong? {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.find(predicate: (UByte) -> Boolean): UByte? {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.find(predicate: (UShort) -> Boolean): UShort? {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.findLast(predicate: (UInt) -> Boolean): UInt? {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.findLast(predicate: (ULong) -> Boolean): ULong? {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.findLast(predicate: (UByte) -> Boolean): UByte? {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.findLast(predicate: (UShort) -> Boolean): UShort? {\n return lastOrNull(predicate)\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.first(): UInt {\n return storage.first().toUInt()\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.first(): ULong {\n return storage.first().toULong()\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.first(): UByte {\n return storage.first().toUByte()\n}\n\n/**\n * Returns first element.\n * @throws [NoSuchElementException] if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.first(): UShort {\n return storage.first().toUShort()\n}\n\n/**\n * Returns the first element matching the given [predicate].\n * @throws [NoSuchElementException] if no such element is found.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.first(predicate: (UInt) -> Boolean): UInt {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.first(predicate: (ULong) -> Boolean): ULong {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.first(predicate: (UByte) -> Boolean): UByte {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.first(predicate: (UShort) -> Boolean): UShort {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.firstOrNull(): UInt? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.firstOrNull(): ULong? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.firstOrNull(): UByte? {\n return if (isEmpty()) null else this[0]\n}\n\n/**\n * Returns the first element, or `null` if the array is empty.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.firstOrNull(): UShort? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.firstOrNull(predicate: (UInt) -> Boolean): UInt? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.firstOrNull(predicate: (ULong) -> Boolean): ULong? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.firstOrNull(predicate: (UByte) -> Boolean): UByte? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.firstOrNull(predicate: (UShort) -> Boolean): UShort? {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.getOrElse(index: Int, defaultValue: (Int) -> UInt): UInt {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.getOrElse(index: Int, defaultValue: (Int) -> ULong): ULong {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.getOrElse(index: Int, defaultValue: (Int) -> UByte): UByte {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.getOrElse(index: Int, defaultValue: (Int) -> UShort): UShort {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.getOrNull(index: Int): UInt? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.getOrNull(index: Int): ULong? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.getOrNull(index: Int): UByte? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.getOrNull(index: Int): UShort? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.indexOf(element: UInt): Int {\n return storage.indexOf(element.toInt())\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.indexOf(element: ULong): Int {\n return storage.indexOf(element.toLong())\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.indexOf(element: UByte): Int {\n return storage.indexOf(element.toByte())\n}\n\n/**\n * Returns first index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.indexOf(element: UShort): Int {\n return storage.indexOf(element.toShort())\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.indexOfFirst(predicate: (UInt) -> Boolean): Int {\n return storage.indexOfFirst { predicate(it.toUInt()) }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.indexOfFirst(predicate: (ULong) -> Boolean): Int {\n return storage.indexOfFirst { predicate(it.toULong()) }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.indexOfFirst(predicate: (UByte) -> Boolean): Int {\n return storage.indexOfFirst { predicate(it.toUByte()) }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.indexOfFirst(predicate: (UShort) -> Boolean): Int {\n return storage.indexOfFirst { predicate(it.toUShort()) }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.indexOfLast(predicate: (UInt) -> Boolean): Int {\n return storage.indexOfLast { predicate(it.toUInt()) }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.indexOfLast(predicate: (ULong) -> Boolean): Int {\n return storage.indexOfLast { predicate(it.toULong()) }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.indexOfLast(predicate: (UByte) -> Boolean): Int {\n return storage.indexOfLast { predicate(it.toUByte()) }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.indexOfLast(predicate: (UShort) -> Boolean): Int {\n return storage.indexOfLast { predicate(it.toUShort()) }\n}\n\n/**\n * Returns the last element.\n * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.last(): UInt {\n return storage.last().toUInt()\n}\n\n/**\n * Returns the last element.\n * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.last(): ULong {\n return storage.last().toULong()\n}\n\n/**\n * Returns the last element.\n * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.last(): UByte {\n return storage.last().toUByte()\n}\n\n/**\n * Returns the last element.\n * \n * @throws NoSuchElementException if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.last(): UShort {\n return storage.last().toUShort()\n}\n\n/**\n * Returns the last element matching the given [predicate].\n * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.last(predicate: (UInt) -> Boolean): UInt {\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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.last(predicate: (ULong) -> Boolean): ULong {\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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.last(predicate: (UByte) -> Boolean): UByte {\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 * \n * @throws NoSuchElementException if no such element is found.\n * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.last(predicate: (UShort) -> Boolean): UShort {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.lastIndexOf(element: UInt): Int {\n return storage.lastIndexOf(element.toInt())\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.lastIndexOf(element: ULong): Int {\n return storage.lastIndexOf(element.toLong())\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.lastIndexOf(element: UByte): Int {\n return storage.lastIndexOf(element.toByte())\n}\n\n/**\n * Returns last index of [element], or -1 if the array does not contain element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.lastIndexOf(element: UShort): Int {\n return storage.lastIndexOf(element.toShort())\n}\n\n/**\n * Returns the last element, or `null` if the array is empty.\n * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.lastOrNull(): UInt? {\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 * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.lastOrNull(): ULong? {\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 * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.lastOrNull(): UByte? {\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 * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.lastOrNull(): UShort? {\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 * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.lastOrNull(predicate: (UInt) -> Boolean): UInt? {\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 * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.lastOrNull(predicate: (ULong) -> Boolean): ULong? {\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 * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.lastOrNull(predicate: (UByte) -> Boolean): UByte? {\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 * \n * @sample samples.collections.Collections.Elements.last\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.lastOrNull(predicate: (UShort) -> Boolean): UShort? {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.random(): UInt {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.random(): ULong {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.random(): UByte {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.random(): UShort {\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\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.random(random: Random): UInt {\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\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.random(random: Random): ULong {\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\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.random(random: Random): UByte {\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\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.random(random: Random): UShort {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.randomOrNull(): UInt? {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.randomOrNull(): ULong? {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.randomOrNull(): UByte? {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.randomOrNull(): UShort? {\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)\n@ExperimentalUnsignedTypes\npublic fun UIntArray.randomOrNull(random: Random): UInt? {\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)\n@ExperimentalUnsignedTypes\npublic fun ULongArray.randomOrNull(random: Random): ULong? {\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)\n@ExperimentalUnsignedTypes\npublic fun UByteArray.randomOrNull(random: Random): UByte? {\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)\n@ExperimentalUnsignedTypes\npublic fun UShortArray.randomOrNull(random: Random): UShort? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.single(): UInt {\n return storage.single().toUInt()\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.single(): ULong {\n return storage.single().toULong()\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.single(): UByte {\n return storage.single().toUByte()\n}\n\n/**\n * Returns the single element, or throws an exception if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.single(): UShort {\n return storage.single().toUShort()\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.single(predicate: (UInt) -> Boolean): UInt {\n var single: UInt? = 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 UInt\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.single(predicate: (ULong) -> Boolean): ULong {\n var single: ULong? = 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 ULong\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.single(predicate: (UByte) -> Boolean): UByte {\n var single: UByte? = 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 UByte\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.single(predicate: (UShort) -> Boolean): UShort {\n var single: UShort? = 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 UShort\n}\n\n/**\n * Returns single element, or `null` if the array is empty or has more than one element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.singleOrNull(): UInt? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.singleOrNull(): ULong? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.singleOrNull(): UByte? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.singleOrNull(): UShort? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.singleOrNull(predicate: (UInt) -> Boolean): UInt? {\n var single: UInt? = 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.singleOrNull(predicate: (ULong) -> Boolean): ULong? {\n var single: ULong? = 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.singleOrNull(predicate: (UByte) -> Boolean): UByte? {\n var single: UByte? = 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.singleOrNull(predicate: (UShort) -> Boolean): UShort? {\n var single: UShort? = 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.drop(n: Int): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.drop(n: Int): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.drop(n: Int): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.drop(n: Int): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.dropLast(n: Int): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.dropLast(n: Int): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.dropLast(n: Int): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.dropLast(n: Int): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.dropLastWhile(predicate: (UInt) -> Boolean): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.dropLastWhile(predicate: (ULong) -> Boolean): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.dropLastWhile(predicate: (UByte) -> Boolean): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.dropLastWhile(predicate: (UShort) -> Boolean): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.dropWhile(predicate: (UInt) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.dropWhile(predicate: (ULong) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.dropWhile(predicate: (UByte) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.dropWhile(predicate: (UShort) -> Boolean): List {\n var yielding = false\n val list = ArrayList()\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.filter(predicate: (UInt) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.filter(predicate: (ULong) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.filter(predicate: (UByte) -> Boolean): List {\n return filterTo(ArrayList(), predicate)\n}\n\n/**\n * Returns a list containing only elements matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.filter(predicate: (UShort) -> Boolean): List {\n return filterTo(ArrayList(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.filterIndexed(predicate: (index: Int, UInt) -> Boolean): List {\n return filterIndexedTo(ArrayList(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.filterIndexed(predicate: (index: Int, ULong) -> Boolean): List {\n return filterIndexedTo(ArrayList(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.filterIndexed(predicate: (index: Int, UByte) -> Boolean): List {\n return filterIndexedTo(ArrayList(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.filterIndexed(predicate: (index: Int, UShort) -> Boolean): List {\n return filterIndexedTo(ArrayList(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.filterIndexedTo(destination: C, predicate: (index: Int, UInt) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.filterIndexedTo(destination: C, predicate: (index: Int, ULong) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.filterIndexedTo(destination: C, predicate: (index: Int, UByte) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.filterIndexedTo(destination: C, predicate: (index: Int, UShort) -> 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 not matching the given [predicate].\n * \n * @sample samples.collections.Collections.Filtering.filter\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.filterNot(predicate: (UInt) -> Boolean): List {\n return filterNotTo(ArrayList(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.filterNot(predicate: (ULong) -> Boolean): List {\n return filterNotTo(ArrayList(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.filterNot(predicate: (UByte) -> Boolean): List {\n return filterNotTo(ArrayList(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.filterNot(predicate: (UShort) -> Boolean): List {\n return filterNotTo(ArrayList(), predicate)\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.filterNotTo(destination: C, predicate: (UInt) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.filterNotTo(destination: C, predicate: (ULong) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.filterNotTo(destination: C, predicate: (UByte) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.filterNotTo(destination: C, predicate: (UShort) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.filterTo(destination: C, predicate: (UInt) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.filterTo(destination: C, predicate: (ULong) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.filterTo(destination: C, predicate: (UByte) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.filterTo(destination: C, predicate: (UShort) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.slice(indices: IntRange): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.slice(indices: IntRange): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.slice(indices: IntRange): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.slice(indices: IntRange): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.slice(indices: Iterable): List {\n val size = indices.collectionSizeOrDefault(10)\n if (size == 0) return emptyList()\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sliceArray(indices: Collection): UIntArray {\n return UIntArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sliceArray(indices: Collection): ULongArray {\n return ULongArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sliceArray(indices: Collection): UByteArray {\n return UByteArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements of this array at specified [indices].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sliceArray(indices: Collection): UShortArray {\n return UShortArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sliceArray(indices: IntRange): UIntArray {\n return UIntArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sliceArray(indices: IntRange): ULongArray {\n return ULongArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sliceArray(indices: IntRange): UByteArray {\n return UByteArray(storage.sliceArray(indices))\n}\n\n/**\n * Returns an array containing elements at indices in the specified [indices] range.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sliceArray(indices: IntRange): UShortArray {\n return UShortArray(storage.sliceArray(indices))\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.take(n: Int): List {\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(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.take(n: Int): List {\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(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.take(n: Int): List {\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(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.take(n: Int): List {\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(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.takeLast(n: Int): List {\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(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.takeLast(n: Int): List {\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(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.takeLast(n: Int): List {\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(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.takeLast(n: Int): List {\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(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.takeLastWhile(predicate: (UInt) -> Boolean): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.takeLastWhile(predicate: (ULong) -> Boolean): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.takeLastWhile(predicate: (UByte) -> Boolean): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.takeLastWhile(predicate: (UShort) -> Boolean): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.takeWhile(predicate: (UInt) -> Boolean): List {\n val list = ArrayList()\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.takeWhile(predicate: (ULong) -> Boolean): List {\n val list = ArrayList()\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.takeWhile(predicate: (UByte) -> Boolean): List {\n val list = ArrayList()\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.takeWhile(predicate: (UShort) -> Boolean): List {\n val list = ArrayList()\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reverse(): Unit {\n storage.reverse()\n}\n\n/**\n * Reverses elements in the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reverse(): Unit {\n storage.reverse()\n}\n\n/**\n * Reverses elements in the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reverse(): Unit {\n storage.reverse()\n}\n\n/**\n * Reverses elements in the array in-place.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reverse(): Unit {\n storage.reverse()\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reverse(fromIndex: Int, toIndex: Int): Unit {\n storage.reverse(fromIndex, toIndex)\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reverse(fromIndex: Int, toIndex: Int): Unit {\n storage.reverse(fromIndex, toIndex)\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reverse(fromIndex: Int, toIndex: Int): Unit {\n storage.reverse(fromIndex, toIndex)\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reverse(fromIndex: Int, toIndex: Int): Unit {\n storage.reverse(fromIndex, toIndex)\n}\n\n/**\n * Returns a list with elements in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.reversed(): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.reversed(): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.reversed(): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.reversed(): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reversedArray(): UIntArray {\n return UIntArray(storage.reversedArray())\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reversedArray(): ULongArray {\n return ULongArray(storage.reversedArray())\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reversedArray(): UByteArray {\n return UByteArray(storage.reversedArray())\n}\n\n/**\n * Returns an array with elements of this array in reversed order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reversedArray(): UShortArray {\n return UShortArray(storage.reversedArray())\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.shuffle(): Unit {\n shuffle(Random)\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.shuffle(): Unit {\n shuffle(Random)\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.shuffle(): Unit {\n shuffle(Random)\n}\n\n/**\n * Randomly shuffles elements in this array in-place.\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.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\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.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\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.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\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.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\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.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 descending according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sorted(): List {\n return copyOf().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sorted(): List {\n return copyOf().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sorted(): List {\n return copyOf().apply { sort() }.asList()\n}\n\n/**\n * Returns a list of all elements sorted according to their natural sort order.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sorted(): List {\n return copyOf().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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sortedArray(): UIntArray {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sortedArray(): ULongArray {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sortedArray(): UByteArray {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sortedArray(): UShortArray {\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sortedArrayDescending(): UIntArray {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sortedArrayDescending(): ULongArray {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sortedArrayDescending(): UByteArray {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sortedArrayDescending(): UShortArray {\n if (isEmpty()) return this\n return this.copyOf().apply { sortDescending() }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sortedDescending(): List {\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 * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sortedDescending(): List {\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 * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sortedDescending(): List {\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 * \n * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sortedDescending(): List {\n return copyOf().apply { sort() }.reversed()\n}\n\n/**\n * Returns an array of type [ByteArray], which is a view of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.asByteArray(): ByteArray {\n return storage\n}\n\n/**\n * Returns an array of type [IntArray], which is a view of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.asIntArray(): IntArray {\n return storage\n}\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UIntArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun ULongArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UByteArray.asList(): List\n\n/**\n * Returns a [List] that wraps the original array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic expect fun UShortArray.asList(): List\n\n/**\n * Returns an array of type [LongArray], which is a view of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.asLongArray(): LongArray {\n return storage\n}\n\n/**\n * Returns an array of type [ShortArray], which is a view of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.asShortArray(): ShortArray {\n return storage\n}\n\n/**\n * Returns an array of type [UByteArray], which is a view of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.asUByteArray(): UByteArray {\n return UByteArray(this)\n}\n\n/**\n * Returns an array of type [UIntArray], which is a view of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.asUIntArray(): UIntArray {\n return UIntArray(this)\n}\n\n/**\n * Returns an array of type [ULongArray], which is a view of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.asULongArray(): ULongArray {\n return ULongArray(this)\n}\n\n/**\n * Returns an array of type [UShortArray], which is a view of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.asUShortArray(): UShortArray {\n return UShortArray(this)\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@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.3\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray.contentEquals(other: UIntArray): 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@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.3\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray.contentEquals(other: ULongArray): 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@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.3\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray.contentEquals(other: UByteArray): 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@Deprecated(\"Use Kotlin compiler 1.4 to avoid deprecation warning.\")\n@SinceKotlin(\"1.3\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray.contentEquals(other: UShortArray): 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@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray?.contentEquals(other: UIntArray?): Boolean {\n return this?.storage.contentEquals(other?.storage)\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@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray?.contentEquals(other: ULongArray?): Boolean {\n return this?.storage.contentEquals(other?.storage)\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@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray?.contentEquals(other: UByteArray?): Boolean {\n return this?.storage.contentEquals(other?.storage)\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@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray?.contentEquals(other: UShortArray?): Boolean {\n return this?.storage.contentEquals(other?.storage)\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.3\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.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.3\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.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.3\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.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.3\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.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@ExperimentalUnsignedTypes\npublic fun UIntArray?.contentHashCode(): Int {\n return this?.storage.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@ExperimentalUnsignedTypes\npublic fun ULongArray?.contentHashCode(): Int {\n return this?.storage.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@ExperimentalUnsignedTypes\npublic fun UByteArray?.contentHashCode(): Int {\n return this?.storage.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@ExperimentalUnsignedTypes\npublic fun UShortArray?.contentHashCode(): Int {\n return this?.storage.contentHashCode()\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.3\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.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.3\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.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.3\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.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.3\")\n@DeprecatedSinceKotlin(hiddenSince = \"1.4\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.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@ExperimentalUnsignedTypes\npublic fun UIntArray?.contentToString(): String {\n return this?.joinToString(\", \", \"[\", \"]\") ?: \"null\"\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@ExperimentalUnsignedTypes\npublic fun ULongArray?.contentToString(): String {\n return this?.joinToString(\", \", \"[\", \"]\") ?: \"null\"\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@ExperimentalUnsignedTypes\npublic fun UByteArray?.contentToString(): String {\n return this?.joinToString(\", \", \"[\", \"]\") ?: \"null\"\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@ExperimentalUnsignedTypes\npublic fun UShortArray?.contentToString(): String {\n return this?.joinToString(\", \", \"[\", \"]\") ?: \"null\"\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.copyInto(destination: UIntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): UIntArray {\n storage.copyInto(destination.storage, 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.copyInto(destination: ULongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ULongArray {\n storage.copyInto(destination.storage, 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.copyInto(destination: UByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): UByteArray {\n storage.copyInto(destination.storage, 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.copyInto(destination: UShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): UShortArray {\n storage.copyInto(destination.storage, 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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.copyOf(): UIntArray {\n return UIntArray(storage.copyOf())\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.copyOf(): ULongArray {\n return ULongArray(storage.copyOf())\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.copyOf(): UByteArray {\n return UByteArray(storage.copyOf())\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.copyOf(): UShortArray {\n return UShortArray(storage.copyOf())\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.copyOf(newSize: Int): UIntArray {\n return UIntArray(storage.copyOf(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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.copyOf(newSize: Int): ULongArray {\n return ULongArray(storage.copyOf(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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.copyOf(newSize: Int): UByteArray {\n return UByteArray(storage.copyOf(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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.copyOf(newSize: Int): UShortArray {\n return UShortArray(storage.copyOf(newSize))\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.copyOfRange(fromIndex: Int, toIndex: Int): UIntArray {\n return UIntArray(storage.copyOfRange(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.copyOfRange(fromIndex: Int, toIndex: Int): ULongArray {\n return ULongArray(storage.copyOfRange(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.copyOfRange(fromIndex: Int, toIndex: Int): UByteArray {\n return UByteArray(storage.copyOfRange(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.copyOfRange(fromIndex: Int, toIndex: Int): UShortArray {\n return UShortArray(storage.copyOfRange(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@ExperimentalUnsignedTypes\npublic fun UIntArray.fill(element: UInt, fromIndex: Int = 0, toIndex: Int = size): Unit {\n storage.fill(element.toInt(), 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@ExperimentalUnsignedTypes\npublic fun ULongArray.fill(element: ULong, fromIndex: Int = 0, toIndex: Int = size): Unit {\n storage.fill(element.toLong(), 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@ExperimentalUnsignedTypes\npublic fun UByteArray.fill(element: UByte, fromIndex: Int = 0, toIndex: Int = size): Unit {\n storage.fill(element.toByte(), 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@ExperimentalUnsignedTypes\npublic fun UShortArray.fill(element: UShort, fromIndex: Int = 0, toIndex: Int = size): Unit {\n storage.fill(element.toShort(), fromIndex, toIndex)\n}\n\n/**\n * Returns the range of valid indices for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UIntArray.indices: IntRange\n get() = storage.indices\n\n/**\n * Returns the range of valid indices for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val ULongArray.indices: IntRange\n get() = storage.indices\n\n/**\n * Returns the range of valid indices for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UByteArray.indices: IntRange\n get() = storage.indices\n\n/**\n * Returns the range of valid indices for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UShortArray.indices: IntRange\n get() = storage.indices\n\n/**\n * Returns the last valid index for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UIntArray.lastIndex: Int\n get() = storage.lastIndex\n\n/**\n * Returns the last valid index for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val ULongArray.lastIndex: Int\n get() = storage.lastIndex\n\n/**\n * Returns the last valid index for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UByteArray.lastIndex: Int\n get() = storage.lastIndex\n\n/**\n * Returns the last valid index for the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic inline val UShortArray.lastIndex: Int\n get() = storage.lastIndex\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.plus(element: UInt): UIntArray {\n return UIntArray(storage + element.toInt())\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.plus(element: ULong): ULongArray {\n return ULongArray(storage + element.toLong())\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.plus(element: UByte): UByteArray {\n return UByteArray(storage + element.toByte())\n}\n\n/**\n * Returns an array containing all elements of the original array and then the given [element].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.plus(element: UShort): UShortArray {\n return UShortArray(storage + element.toShort())\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UIntArray.plus(elements: Collection): UIntArray {\n var index = size\n val result = storage.copyOf(size + elements.size)\n for (element in elements) result[index++] = element.toInt()\n return UIntArray(result)\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun ULongArray.plus(elements: Collection): ULongArray {\n var index = size\n val result = storage.copyOf(size + elements.size)\n for (element in elements) result[index++] = element.toLong()\n return ULongArray(result)\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UByteArray.plus(elements: Collection): UByteArray {\n var index = size\n val result = storage.copyOf(size + elements.size)\n for (element in elements) result[index++] = element.toByte()\n return UByteArray(result)\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic operator fun UShortArray.plus(elements: Collection): UShortArray {\n var index = size\n val result = storage.copyOf(size + elements.size)\n for (element in elements) result[index++] = element.toShort()\n return UShortArray(result)\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UIntArray.plus(elements: UIntArray): UIntArray {\n return UIntArray(storage + elements.storage)\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun ULongArray.plus(elements: ULongArray): ULongArray {\n return ULongArray(storage + elements.storage)\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UByteArray.plus(elements: UByteArray): UByteArray {\n return UByteArray(storage + elements.storage)\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline operator fun UShortArray.plus(elements: UShortArray): UShortArray {\n return UShortArray(storage + elements.storage)\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.sort(): Unit {\n if (size > 1) sortArray(this, 0, size)\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.sort(): Unit {\n if (size > 1) sortArray(this, 0, size)\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.sort(): Unit {\n if (size > 1) sortArray(this, 0, size)\n}\n\n/**\n * Sorts the array in-place.\n * \n * @sample samples.collections.Arrays.Sorting.sortArray\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sort(): Unit {\n if (size > 1) sortArray(this, 0, size)\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@ExperimentalUnsignedTypes\npublic fun UIntArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n sortArray(this, fromIndex, toIndex)\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@ExperimentalUnsignedTypes\npublic fun ULongArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n sortArray(this, fromIndex, toIndex)\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@ExperimentalUnsignedTypes\npublic fun UByteArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n sortArray(this, fromIndex, toIndex)\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@ExperimentalUnsignedTypes\npublic fun UShortArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit {\n AbstractList.checkRangeIndexes(fromIndex, toIndex, size)\n sortArray(this, 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\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.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\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.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\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.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\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.sortDescending(fromIndex: Int, toIndex: Int): Unit {\n sort(fromIndex, toIndex)\n reverse(fromIndex, toIndex)\n}\n\n/**\n * Returns an array of type [ByteArray], which is a copy of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.toByteArray(): ByteArray {\n return storage.copyOf()\n}\n\n/**\n * Returns an array of type [IntArray], which is a copy of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.toIntArray(): IntArray {\n return storage.copyOf()\n}\n\n/**\n * Returns an array of type [LongArray], which is a copy of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.toLongArray(): LongArray {\n return storage.copyOf()\n}\n\n/**\n * Returns an array of type [ShortArray], which is a copy of this array where each element is a signed reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.toShortArray(): ShortArray {\n return storage.copyOf()\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n/**\n * Returns a *typed* object array containing all of the elements of this primitive array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.toTypedArray(): Array {\n return Array(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of UByte containing all of the elements of this generic array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.toUByteArray(): UByteArray {\n return UByteArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of type [UByteArray], which is a copy of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ByteArray.toUByteArray(): UByteArray {\n return UByteArray(this.copyOf())\n}\n\n/**\n * Returns an array of UInt containing all of the elements of this generic array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.toUIntArray(): UIntArray {\n return UIntArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of type [UIntArray], which is a copy of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun IntArray.toUIntArray(): UIntArray {\n return UIntArray(this.copyOf())\n}\n\n/**\n * Returns an array of ULong containing all of the elements of this generic array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.toULongArray(): ULongArray {\n return ULongArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of type [ULongArray], which is a copy of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun LongArray.toULongArray(): ULongArray {\n return ULongArray(this.copyOf())\n}\n\n/**\n * Returns an array of UShort containing all of the elements of this generic array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.toUShortArray(): UShortArray {\n return UShortArray(size) { index -> this[index] }\n}\n\n/**\n * Returns an array of type [UShortArray], which is a copy of this array where each element is an unsigned reinterpretation\n * of the corresponding element of this array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ShortArray.toUShortArray(): UShortArray {\n return UShortArray(this.copyOf())\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.associateWith(valueSelector: (UInt) -> V): Map {\n val result = LinkedHashMap(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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.associateWith(valueSelector: (ULong) -> V): Map {\n val result = LinkedHashMap(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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.associateWith(valueSelector: (UByte) -> V): Map {\n val result = LinkedHashMap(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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.associateWith(valueSelector: (UShort) -> V): Map {\n val result = LinkedHashMap(mapCapacity(size).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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.associateWithTo(destination: M, valueSelector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.associateWithTo(destination: M, valueSelector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.associateWithTo(destination: M, valueSelector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.associateWithTo(destination: M, valueSelector: (UShort) -> V): M {\n for (element in this) {\n destination.put(element, valueSelector(element))\n }\n return destination\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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.flatMap(transform: (UInt) -> Iterable): List {\n return flatMapTo(ArrayList(), 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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.flatMap(transform: (ULong) -> Iterable): List {\n return flatMapTo(ArrayList(), 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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.flatMap(transform: (UByte) -> Iterable): List {\n return flatMapTo(ArrayList(), 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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.flatMap(transform: (UShort) -> Iterable): List {\n return flatMapTo(ArrayList(), 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.flatMapIndexed(transform: (index: Int, UInt) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.flatMapIndexed(transform: (index: Int, ULong) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.flatMapIndexed(transform: (index: Int, UByte) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.flatMapIndexed(transform: (index: Int, UShort) -> Iterable): List {\n return flatMapIndexedTo(ArrayList(), 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.flatMapIndexedTo(destination: C, transform: (index: Int, UInt) -> Iterable): 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.flatMapIndexedTo(destination: C, transform: (index: Int, ULong) -> Iterable): 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.flatMapIndexedTo(destination: C, transform: (index: Int, UByte) -> Iterable): 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.flatMapIndexedTo(destination: C, transform: (index: Int, UShort) -> Iterable): 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.flatMapTo(destination: C, transform: (UInt) -> Iterable): 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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.flatMapTo(destination: C, transform: (ULong) -> Iterable): 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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.flatMapTo(destination: C, transform: (UByte) -> Iterable): 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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.flatMapTo(destination: C, transform: (UShort) -> Iterable): 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.groupBy(keySelector: (UInt) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.groupBy(keySelector: (ULong) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.groupBy(keySelector: (UByte) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.groupBy(keySelector: (UShort) -> K): Map> {\n return groupByTo(LinkedHashMap>(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.groupBy(keySelector: (UInt) -> K, valueTransform: (UInt) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.groupBy(keySelector: (ULong) -> K, valueTransform: (ULong) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.groupBy(keySelector: (UByte) -> K, valueTransform: (UByte) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.groupBy(keySelector: (UShort) -> K, valueTransform: (UShort) -> V): Map> {\n return groupByTo(LinkedHashMap>(), 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UIntArray.groupByTo(destination: M, keySelector: (UInt) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> ULongArray.groupByTo(destination: M, keySelector: (ULong) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UByteArray.groupByTo(destination: M, keySelector: (UByte) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UShortArray.groupByTo(destination: M, keySelector: (UShort) -> K): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UIntArray.groupByTo(destination: M, keySelector: (UInt) -> K, valueTransform: (UInt) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> ULongArray.groupByTo(destination: M, keySelector: (ULong) -> K, valueTransform: (ULong) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UByteArray.groupByTo(destination: M, keySelector: (UByte) -> K, valueTransform: (UByte) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun >> UShortArray.groupByTo(destination: M, keySelector: (UShort) -> K, valueTransform: (UShort) -> V): M {\n for (element in this) {\n val key = keySelector(element)\n val list = destination.getOrPut(key) { ArrayList() }\n list.add(valueTransform(element))\n }\n return destination\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.map(transform: (UInt) -> R): List {\n return mapTo(ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.map(transform: (ULong) -> R): List {\n return mapTo(ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.map(transform: (UByte) -> R): List {\n return mapTo(ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.map(transform: (UShort) -> R): List {\n return mapTo(ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.mapIndexed(transform: (index: Int, UInt) -> R): List {\n return mapIndexedTo(ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.mapIndexed(transform: (index: Int, ULong) -> R): List {\n return mapIndexedTo(ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.mapIndexed(transform: (index: Int, UByte) -> R): List {\n return mapIndexedTo(ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.mapIndexed(transform: (index: Int, UShort) -> R): List {\n return mapIndexedTo(ArrayList(size), transform)\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.mapIndexedTo(destination: C, transform: (index: Int, UInt) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.mapIndexedTo(destination: C, transform: (index: Int, ULong) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.mapIndexedTo(destination: C, transform: (index: Int, UByte) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.mapIndexedTo(destination: C, transform: (index: Int, UShort) -> 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 of the original array\n * and appends the results to the given [destination].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.mapTo(destination: C, transform: (UInt) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.mapTo(destination: C, transform: (ULong) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.mapTo(destination: C, transform: (UByte) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.mapTo(destination: C, transform: (UShort) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.withIndex(): Iterable> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.withIndex(): Iterable> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.withIndex(): Iterable> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.withIndex(): Iterable> {\n return IndexingIterable { iterator() }\n}\n\n/**\n * Returns `true` if all elements match the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.all\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.all(predicate: (UInt) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.all(predicate: (ULong) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.all(predicate: (UByte) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.all(predicate: (UShort) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.any(): Boolean {\n return storage.any()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.any(): Boolean {\n return storage.any()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.any(): Boolean {\n return storage.any()\n}\n\n/**\n * Returns `true` if array has at least one element.\n * \n * @sample samples.collections.Collections.Aggregates.any\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.any(): Boolean {\n return storage.any()\n}\n\n/**\n * Returns `true` if at least one element matches the given [predicate].\n * \n * @sample samples.collections.Collections.Aggregates.anyWithPredicate\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.any(predicate: (UInt) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.any(predicate: (ULong) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.any(predicate: (UByte) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.any(predicate: (UShort) -> Boolean): Boolean {\n for (element in this) if (predicate(element)) return true\n return false\n}\n\n/**\n * Returns the number of elements matching the given [predicate].\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.count(predicate: (UInt) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.count(predicate: (ULong) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.count(predicate: (UByte) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.count(predicate: (UShort) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.fold(initial: R, operation: (acc: R, UInt) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.fold(initial: R, operation: (acc: R, ULong) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.fold(initial: R, operation: (acc: R, UByte) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.fold(initial: R, operation: (acc: R, UShort) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.foldIndexed(initial: R, operation: (index: Int, acc: R, UInt) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.foldIndexed(initial: R, operation: (index: Int, acc: R, ULong) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.foldIndexed(initial: R, operation: (index: Int, acc: R, UByte) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.foldIndexed(initial: R, operation: (index: Int, acc: R, UShort) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.foldRight(initial: R, operation: (UInt, 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.foldRight(initial: R, operation: (ULong, 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.foldRight(initial: R, operation: (UByte, 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.foldRight(initial: R, operation: (UShort, 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.foldRightIndexed(initial: R, operation: (index: Int, UInt, 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.foldRightIndexed(initial: R, operation: (index: Int, ULong, 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.foldRightIndexed(initial: R, operation: (index: Int, UByte, 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.foldRightIndexed(initial: R, operation: (index: Int, UShort, 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.forEach(action: (UInt) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.forEach(action: (ULong) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.forEach(action: (UByte) -> Unit): Unit {\n for (element in this) action(element)\n}\n\n/**\n * Performs the given [action] on each element.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.forEach(action: (UShort) -> 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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.forEachIndexed(action: (index: Int, UInt) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.forEachIndexed(action: (index: Int, ULong) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.forEachIndexed(action: (index: Int, UByte) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.forEachIndexed(action: (index: Int, UShort) -> Unit): Unit {\n var index = 0\n for (item in this) action(index++, item)\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.max(): UInt? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.max(): ULong? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.max(): UByte? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxOrNull instead.\", ReplaceWith(\"this.maxOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.max(): UShort? {\n return maxOrNull()\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.maxBy(selector: (UInt) -> R): UInt? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.maxBy(selector: (ULong) -> R): ULong? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.maxBy(selector: (UByte) -> R): UByte? {\n return maxByOrNull(selector)\n}\n\n@Deprecated(\"Use maxByOrNull instead.\", ReplaceWith(\"this.maxByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.maxBy(selector: (UShort) -> R): UShort? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.maxByOrNull(selector: (UInt) -> R): UInt? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.maxByOrNull(selector: (ULong) -> R): ULong? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.maxByOrNull(selector: (UByte) -> R): UByte? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.maxByOrNull(selector: (UShort) -> R): UShort? {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.maxOf(selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.maxOf(selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.maxOf(selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.maxOf(selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.maxOf(selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.maxOf(selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.maxOf(selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.maxOf(selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.maxOf(selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.maxOf(selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.maxOf(selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.maxOf(selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.maxOfOrNull(selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.maxOfOrNull(selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.maxOfOrNull(selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.maxOfOrNull(selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.maxOfOrNull(selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.maxOfOrNull(selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.maxOfOrNull(selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.maxOfOrNull(selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.maxOfOrNull(selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.maxOfOrNull(selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.maxOfOrNull(selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.maxOfOrNull(selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.maxOfWith(comparator: Comparator, selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.maxOfWith(comparator: Comparator, selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.maxOfWith(comparator: Comparator, selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.maxOfWith(comparator: Comparator, selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.maxOfWithOrNull(comparator: Comparator, selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.maxOfWithOrNull(comparator: Comparator, selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.maxOfWithOrNull(comparator: Comparator, selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.maxOfWithOrNull(comparator: Comparator, selector: (UShort) -> 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@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.maxOrNull(): UInt? {\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\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.maxOrNull(): ULong? {\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\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.maxOrNull(): UByte? {\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\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.maxOrNull(): UShort? {\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(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.maxWith(comparator: Comparator): UInt? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.maxWith(comparator: Comparator): ULong? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.maxWith(comparator: Comparator): UByte? {\n return maxWithOrNull(comparator)\n}\n\n@Deprecated(\"Use maxWithOrNull instead.\", ReplaceWith(\"this.maxWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.maxWith(comparator: Comparator): UShort? {\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\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.maxWithOrNull(comparator: Comparator): UInt? {\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\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.maxWithOrNull(comparator: Comparator): ULong? {\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\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.maxWithOrNull(comparator: Comparator): UByte? {\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\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.maxWithOrNull(comparator: Comparator): UShort? {\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(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.min(): UInt? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.min(): ULong? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.min(): UByte? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minOrNull instead.\", ReplaceWith(\"this.minOrNull()\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.min(): UShort? {\n return minOrNull()\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.minBy(selector: (UInt) -> R): UInt? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.minBy(selector: (ULong) -> R): ULong? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.minBy(selector: (UByte) -> R): UByte? {\n return minByOrNull(selector)\n}\n\n@Deprecated(\"Use minByOrNull instead.\", ReplaceWith(\"this.minByOrNull(selector)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.minBy(selector: (UShort) -> R): UShort? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.minByOrNull(selector: (UInt) -> R): UInt? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.minByOrNull(selector: (ULong) -> R): ULong? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.minByOrNull(selector: (UByte) -> R): UByte? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.minByOrNull(selector: (UShort) -> R): UShort? {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.minOf(selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.minOf(selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.minOf(selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.minOf(selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.minOf(selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.minOf(selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.minOf(selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.minOf(selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.minOf(selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.minOf(selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.minOf(selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.minOf(selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.minOfOrNull(selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.minOfOrNull(selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.minOfOrNull(selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.minOfOrNull(selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.minOfOrNull(selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.minOfOrNull(selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.minOfOrNull(selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.minOfOrNull(selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UIntArray.minOfOrNull(selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > ULongArray.minOfOrNull(selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UByteArray.minOfOrNull(selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun > UShortArray.minOfOrNull(selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.minOfWith(comparator: Comparator, selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.minOfWith(comparator: Comparator, selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.minOfWith(comparator: Comparator, selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.minOfWith(comparator: Comparator, selector: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.minOfWithOrNull(comparator: Comparator, selector: (UInt) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.minOfWithOrNull(comparator: Comparator, selector: (ULong) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.minOfWithOrNull(comparator: Comparator, selector: (UByte) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.minOfWithOrNull(comparator: Comparator, selector: (UShort) -> 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@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.minOrNull(): UInt? {\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\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.minOrNull(): ULong? {\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\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.minOrNull(): UByte? {\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\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.minOrNull(): UShort? {\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(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.minWith(comparator: Comparator): UInt? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.minWith(comparator: Comparator): ULong? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.minWith(comparator: Comparator): UByte? {\n return minWithOrNull(comparator)\n}\n\n@Deprecated(\"Use minWithOrNull instead.\", ReplaceWith(\"this.minWithOrNull(comparator)\"))\n@DeprecatedSinceKotlin(warningSince = \"1.4\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.minWith(comparator: Comparator): UShort? {\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\")\n@ExperimentalUnsignedTypes\npublic fun UIntArray.minWithOrNull(comparator: Comparator): UInt? {\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\")\n@ExperimentalUnsignedTypes\npublic fun ULongArray.minWithOrNull(comparator: Comparator): ULong? {\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\")\n@ExperimentalUnsignedTypes\npublic fun UByteArray.minWithOrNull(comparator: Comparator): UByte? {\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\")\n@ExperimentalUnsignedTypes\npublic fun UShortArray.minWithOrNull(comparator: Comparator): UShort? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.none(predicate: (UInt) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.none(predicate: (ULong) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.none(predicate: (UByte) -> 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.none(predicate: (UShort) -> 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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.onEach(action: (UInt) -> Unit): UIntArray {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.onEach(action: (ULong) -> Unit): ULongArray {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.onEach(action: (UByte) -> Unit): UByteArray {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.onEach(action: (UShort) -> Unit): UShortArray {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.onEachIndexed(action: (index: Int, UInt) -> Unit): UIntArray {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.onEachIndexed(action: (index: Int, ULong) -> Unit): ULongArray {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.onEachIndexed(action: (index: Int, UByte) -> Unit): UByteArray {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.onEachIndexed(action: (index: Int, UShort) -> Unit): UShortArray {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduce(operation: (acc: UInt, UInt) -> UInt): UInt {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduce(operation: (acc: ULong, ULong) -> ULong): ULong {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduce(operation: (acc: UByte, UByte) -> UByte): UByte {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduce(operation: (acc: UShort, UShort) -> UShort): UShort {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceIndexed(operation: (index: Int, acc: UInt, UInt) -> UInt): UInt {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceIndexed(operation: (index: Int, acc: ULong, ULong) -> ULong): ULong {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceIndexed(operation: (index: Int, acc: UByte, UByte) -> UByte): UByte {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceIndexed(operation: (index: Int, acc: UShort, UShort) -> UShort): UShort {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceIndexedOrNull(operation: (index: Int, acc: UInt, UInt) -> UInt): UInt? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceIndexedOrNull(operation: (index: Int, acc: ULong, ULong) -> ULong): ULong? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceIndexedOrNull(operation: (index: Int, acc: UByte, UByte) -> UByte): UByte? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceIndexedOrNull(operation: (index: Int, acc: UShort, UShort) -> UShort): UShort? {\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)\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceOrNull(operation: (acc: UInt, UInt) -> UInt): UInt? {\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)\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceOrNull(operation: (acc: ULong, ULong) -> ULong): ULong? {\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)\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceOrNull(operation: (acc: UByte, UByte) -> UByte): UByte? {\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)\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceOrNull(operation: (acc: UShort, UShort) -> UShort): UShort? {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceRight(operation: (UInt, acc: UInt) -> UInt): UInt {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceRight(operation: (ULong, acc: ULong) -> ULong): ULong {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceRight(operation: (UByte, acc: UByte) -> UByte): UByte {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceRight(operation: (UShort, acc: UShort) -> UShort): UShort {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceRightIndexed(operation: (index: Int, UInt, acc: UInt) -> UInt): UInt {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceRightIndexed(operation: (index: Int, ULong, acc: ULong) -> ULong): ULong {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceRightIndexed(operation: (index: Int, UByte, acc: UByte) -> UByte): UByte {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceRightIndexed(operation: (index: Int, UShort, acc: UShort) -> UShort): UShort {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceRightIndexedOrNull(operation: (index: Int, UInt, acc: UInt) -> UInt): UInt? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceRightIndexedOrNull(operation: (index: Int, ULong, acc: ULong) -> ULong): ULong? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceRightIndexedOrNull(operation: (index: Int, UByte, acc: UByte) -> UByte): UByte? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceRightIndexedOrNull(operation: (index: Int, UShort, acc: UShort) -> UShort): UShort? {\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)\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.reduceRightOrNull(operation: (UInt, acc: UInt) -> UInt): UInt? {\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)\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.reduceRightOrNull(operation: (ULong, acc: ULong) -> ULong): ULong? {\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)\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.reduceRightOrNull(operation: (UByte, acc: UByte) -> UByte): UByte? {\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)\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.reduceRightOrNull(operation: (UShort, acc: UShort) -> UShort): UShort? {\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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.runningFold(initial: R, operation: (acc: R, UInt) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.runningFold(initial: R, operation: (acc: R, ULong) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.runningFold(initial: R, operation: (acc: R, UByte) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.runningFold(initial: R, operation: (acc: R, UShort) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, UInt) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, ULong) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, UByte) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, UShort) -> R): List {\n if (isEmpty()) return listOf(initial)\n val result = ArrayList(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 an element, and calculates the next accumulator value.\n * \n * @sample samples.collections.Collections.Aggregates.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.runningReduce(operation: (acc: UInt, UInt) -> UInt): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 * 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.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.runningReduce(operation: (acc: ULong, ULong) -> ULong): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 * 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.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.runningReduce(operation: (acc: UByte, UByte) -> UByte): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 * 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.runningReduce\n */\n@SinceKotlin(\"1.4\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.runningReduce(operation: (acc: UShort, UShort) -> UShort): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.runningReduceIndexed(operation: (index: Int, acc: UInt, UInt) -> UInt): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 * 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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.runningReduceIndexed(operation: (index: Int, acc: ULong, ULong) -> ULong): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 * 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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.runningReduceIndexed(operation: (index: Int, acc: UByte, UByte) -> UByte): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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 * 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\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.runningReduceIndexed(operation: (index: Int, acc: UShort, UShort) -> UShort): List {\n if (isEmpty()) return emptyList()\n var accumulator = this[0]\n val result = ArrayList(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)\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.scan(initial: R, operation: (acc: R, UInt) -> R): List {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.scan(initial: R, operation: (acc: R, ULong) -> R): List {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.scan(initial: R, operation: (acc: R, UByte) -> R): List {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.scan(initial: R, operation: (acc: R, UShort) -> R): List {\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)\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.scanIndexed(initial: R, operation: (index: Int, acc: R, UInt) -> R): List {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.scanIndexed(initial: R, operation: (index: Int, acc: R, ULong) -> R): List {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.scanIndexed(initial: R, operation: (index: Int, acc: R, UByte) -> R): List {\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@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.scanIndexed(initial: R, operation: (index: Int, acc: R, UShort) -> R): List {\n return runningFoldIndexed(initial, operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.scanReduce(operation: (acc: UInt, UInt) -> UInt): List {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.scanReduce(operation: (acc: ULong, ULong) -> ULong): List {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.scanReduce(operation: (acc: UByte, UByte) -> UByte): List {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduce instead.\", ReplaceWith(\"runningReduce(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.scanReduce(operation: (acc: UShort, UShort) -> UShort): List {\n return runningReduce(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.scanReduceIndexed(operation: (index: Int, acc: UInt, UInt) -> UInt): List {\n return runningReduceIndexed(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.scanReduceIndexed(operation: (index: Int, acc: ULong, ULong) -> ULong): List {\n return runningReduceIndexed(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.scanReduceIndexed(operation: (index: Int, acc: UByte, UByte) -> UByte): List {\n return runningReduceIndexed(operation)\n}\n\n@Deprecated(\"Use runningReduceIndexed instead.\", ReplaceWith(\"runningReduceIndexed(operation)\"), level = DeprecationLevel.ERROR)\n@SinceKotlin(\"1.3\")\n@ExperimentalStdlibApi\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.scanReduceIndexed(operation: (index: Int, acc: UShort, UShort) -> UShort): List {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sumBy(selector: (UInt) -> UInt): UInt {\n var sum: UInt = 0u\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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sumBy(selector: (ULong) -> UInt): UInt {\n var sum: UInt = 0u\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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sumBy(selector: (UByte) -> UInt): UInt {\n var sum: UInt = 0u\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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sumBy(selector: (UShort) -> UInt): UInt {\n var sum: UInt = 0u\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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sumByDouble(selector: (UInt) -> 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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sumByDouble(selector: (ULong) -> 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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sumByDouble(selector: (UByte) -> 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.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sumByDouble(selector: (UShort) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sumOf(selector: (UInt) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sumOf(selector: (ULong) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sumOf(selector: (UByte) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfDouble\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sumOf(selector: (UShort) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sumOf(selector: (UInt) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sumOf(selector: (ULong) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sumOf(selector: (UByte) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sumOf(selector: (UShort) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sumOf(selector: (UInt) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sumOf(selector: (ULong) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sumOf(selector: (UByte) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfLong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sumOf(selector: (UShort) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sumOf(selector: (UInt) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sumOf(selector: (ULong) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sumOf(selector: (UByte) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sumOf(selector: (UShort) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sumOf(selector: (UInt) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sumOf(selector: (ULong) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sumOf(selector: (UByte) -> 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@Suppress(\"INAPPLICABLE_JVM_NAME\")\n@kotlin.jvm.JvmName(\"sumOfULong\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sumOf(selector: (UShort) -> 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 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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray.zip(other: Array): List> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray.zip(other: Array): List> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray.zip(other: Array): List> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray.zip(other: Array): List> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.zip(other: Array, transform: (a: UInt, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.zip(other: Array, transform: (a: ULong, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.zip(other: Array, transform: (a: UByte, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.zip(other: Array, transform: (a: UShort, b: R) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray.zip(other: Iterable): List> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray.zip(other: Iterable): List> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray.zip(other: Iterable): List> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray.zip(other: Iterable): List> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.zip(other: Iterable, transform: (a: UInt, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.zip(other: Iterable, transform: (a: ULong, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.zip(other: Iterable, transform: (a: UByte, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.zip(other: Iterable, transform: (a: UShort, b: R) -> V): List {\n val arraySize = size\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UIntArray.zip(other: UIntArray): List> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun ULongArray.zip(other: ULongArray): List> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UByteArray.zip(other: UByteArray): List> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic infix fun UShortArray.zip(other: UShortArray): List> {\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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.zip(other: UIntArray, transform: (a: UInt, b: UInt) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.zip(other: ULongArray, transform: (a: ULong, b: ULong) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.zip(other: UByteArray, transform: (a: UByte, b: UByte) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.zip(other: UShortArray, transform: (a: UShort, b: UShort) -> V): List {\n val size = minOf(size, other.size)\n val list = ArrayList(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 the sum of all elements in the array.\n */\n@kotlin.jvm.JvmName(\"sumOfUInt\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.sum(): UInt {\n var sum: UInt = 0u\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(\"sumOfULong\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.sum(): ULong {\n var sum: ULong = 0uL\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(\"sumOfUByte\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.sum(): UInt {\n var sum: UInt = 0u\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(\"sumOfUShort\")\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\npublic fun Array.sum(): UInt {\n var sum: UInt = 0u\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@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UIntArray.sum(): UInt {\n return storage.sum().toUInt()\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun ULongArray.sum(): ULong {\n return storage.sum().toULong()\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UByteArray.sum(): UInt {\n return sumBy { it.toUInt() }\n}\n\n/**\n * Returns the sum of all elements in the array.\n */\n@SinceKotlin(\"1.3\")\n@ExperimentalUnsignedTypes\n@kotlin.internal.InlineOnly\npublic inline fun UShortArray.sum(): UInt {\n return sumBy { it.toUInt() }\n}\n\n","package io.ktor.utils.io.bits\n\nimport io.ktor.utils.io.core.internal.*\nimport org.khronos.webgl.*\nimport kotlin.contracts.*\n\n/**\n * Execute [block] of code providing a temporary instance of [Memory] view of this byte array range\n * starting at the specified [offset] and having the specified bytes [length].\n * By default, if neither [offset] nor [length] specified, the whole array is used.\n * An instance of [Memory] provided into the [block] should be never captured and used outside of lambda.\n */\npublic actual inline fun ByteArray.useMemory(offset: Int, length: Int, block: (Memory) -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n return Memory.of(this, offset, length).let(block)\n}\n\n/**\n * Create [Memory] view for the specified [array] range starting at [offset] and the specified bytes [length].\n */\npublic fun Memory.Companion.of(array: ByteArray, offset: Int = 0, length: Int = array.size - offset): Memory {\n @Suppress(\"UnsafeCastFromDynamic\")\n val typedArray: Int8Array = array.asDynamic()\n return Memory.of(typedArray, offset, length)\n}\n\n/**\n * Create [Memory] view for the specified [buffer] range starting at [offset] and the specified bytes [length].\n */\npublic fun Memory.Companion.of(buffer: ArrayBuffer, offset: Int = 0, length: Int = buffer.byteLength - offset): Memory {\n return Memory(DataView(buffer, offset, length))\n}\n\n/**\n * Create [Memory] view for the specified [view].\n */\npublic fun Memory.Companion.of(view: DataView): Memory {\n return Memory(view)\n}\n\n/**\n * Create [Memory] view for the specified [view] range starting at [offset] and the specified bytes [length].\n */\npublic fun Memory.Companion.of(view: ArrayBufferView, offset: Int = 0, length: Int = view.byteLength): Memory {\n return Memory.of(view.buffer, view.byteOffset + offset, length)\n}\n\n@PublishedApi\ninternal actual object DefaultAllocator : Allocator {\n override fun alloc(size: Int): Memory = Memory(DataView(ArrayBuffer(size)))\n override fun alloc(size: Long): Memory = Memory(DataView(ArrayBuffer(size.toIntOrFail(\"size\"))))\n override fun free(instance: Memory) {\n }\n}\n","@file:Suppress(\"RedundantModalityModifier\")\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.internal.*\nimport io.ktor.utils.io.core.internal.require\nimport io.ktor.utils.io.pool.*\n\n/**\n * The default abstract base class implementing [Input] interface.\n * @see [AbstractInput.fill] and [AbstractInput.closeSource].\n */\npublic abstract class AbstractInput(\n head: ChunkBuffer = ChunkBuffer.Empty,\n remaining: Long = head.remainingAll(),\n public val pool: ObjectPool = ChunkBuffer.Pool\n) : Input {\n private val state = AbstractInputSharedState(head, remaining)\n\n @Suppress(\"DEPRECATION\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public constructor(\n head: IoBuffer = IoBuffer.Empty,\n remaining: Long = head.remainingAll(),\n pool: ObjectPool = ChunkBuffer.Pool\n ) : this(head as ChunkBuffer, remaining, pool)\n\n /**\n * Read the next bytes into the [destination] starting at [offset] at most [length] bytes.\n * May block until at least one byte is available.\n * Usually bypass all exceptions from the underlying source.\n *\n * @param offset in bytes where result should be written\n * @param length should be at least one byte\n *\n * @return number of bytes were copied or `0` if EOF encountered\n */\n protected abstract fun fill(destination: Memory, offset: Int, length: Int): Int\n\n /**\n * Should close the underlying bytes source. Could do nothing or throw exceptions.\n */\n protected abstract fun closeSource()\n\n /**\n * Current head chunk reference\n */\n private final var _head: ChunkBuffer\n get() = state.head\n set(newHead) {\n state.head = newHead\n state.headMemory = newHead.memory\n state.headPosition = newHead.readPosition\n state.headEndExclusive = newHead.writePosition\n }\n\n @PublishedApi\n @Suppress(\"CanBePrimaryConstructorProperty\")\n internal var head: ChunkBuffer\n get() = _head.also { it.discardUntilIndex(headPosition) }\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.ERROR)\n set(newHead) {\n _head = newHead\n }\n\n @PublishedApi\n internal final var headMemory: Memory\n get() = state.headMemory\n set(value) {\n state.headMemory = value\n }\n\n @PublishedApi\n internal final var headPosition: Int\n get() = state.headPosition\n set(value) {\n state.headPosition = value\n }\n\n @PublishedApi\n internal final var headEndExclusive: Int\n get() = state.headEndExclusive\n set(value) {\n state.headEndExclusive = value\n }\n\n @PublishedApi\n @Suppress(\"DEPRECATION_ERROR\")\n internal final var headRemaining: Int\n inline get() = headEndExclusive - headPosition\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n set(newRemaining) {\n updateHeadRemaining(newRemaining)\n }\n\n private var tailRemaining: Long\n get() = state.tailRemaining\n set(newValue) {\n require(newValue >= 0) { \"tailRemaining shouldn't be negative: $newValue\" }\n state.tailRemaining = newValue\n }\n\n @Deprecated(\n \"Not supported anymore. All operations are big endian by default.\",\n level = DeprecationLevel.ERROR\n )\n final override var byteOrder: ByteOrder\n get() = ByteOrder.BIG_ENDIAN\n set(newOrder) {\n if (newOrder != ByteOrder.BIG_ENDIAN) {\n throw IllegalArgumentException(\"Only BIG_ENDIAN is supported.\")\n }\n }\n\n internal final fun prefetch(min: Long): Boolean {\n if (min <= 0) return true\n val headRemaining = headRemaining\n if (headRemaining >= min || headRemaining + tailRemaining >= min) return true\n\n return doPrefetch(min)\n }\n\n final override fun peekTo(destination: Memory, destinationOffset: Long, offset: Long, min: Long, max: Long): Long {\n prefetch(min + offset)\n\n var current: ChunkBuffer = head\n var copied = 0L\n var skip = offset\n var writePosition = destinationOffset\n val maxCopySize = minOf(max, destination.size - destinationOffset)\n\n while (copied < min && copied < maxCopySize) {\n val chunkSize = current.readRemaining\n if (chunkSize > skip) {\n val size = minOf(chunkSize - skip, maxCopySize - copied)\n current.memory.copyTo(\n destination,\n current.readPosition + skip,\n size,\n writePosition\n )\n skip = 0\n copied += size\n writePosition += size\n } else {\n skip -= chunkSize\n }\n\n current = current.next ?: break\n }\n\n return copied\n }\n\n /**\n * @see doFill for similar logic\n * @see appendView for similar logic\n */\n private fun doPrefetch(min: Long): Boolean {\n var tail = _head.findTail()\n var available = headRemaining + tailRemaining\n\n do {\n val next = fill()\n if (next == null) {\n noMoreChunksAvailable = true\n return false\n }\n\n val chunkSize = next.readRemaining\n if (tail === ChunkBuffer.Empty) {\n _head = next\n tail = next\n } else {\n tail.next = next\n tailRemaining += chunkSize\n }\n\n available += chunkSize\n } while (available < min)\n\n return true\n }\n\n /**\n * Number of bytes available for read\n */\n public final val remaining: Long get() = headRemaining.toLong() + tailRemaining\n\n /**\n * @return `true` if there is at least one byte to read\n */\n public final fun canRead(): Boolean = headPosition != headEndExclusive || tailRemaining != 0L\n\n /**\n * @return `true` if there are at least [n] bytes to read\n */\n public final fun hasBytes(n: Int): Boolean = headRemaining + tailRemaining >= n\n\n /**\n * `true` if no bytes available for read\n */\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public final val isEmpty: Boolean\n get() = endOfInput\n\n @Suppress(\"DEPRECATION\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public final val isNotEmpty: Boolean\n get() = isNotEmpty\n\n private var noMoreChunksAvailable = false\n\n final override val endOfInput: Boolean\n get() = headRemaining == 0 && tailRemaining == 0L && (noMoreChunksAvailable || doFill() == null)\n\n /**\n * Release packet. After this function invocation the packet becomes empty.\n * If it has been copied via [ByteReadPacket.copy]\n * then the copy should be released as well.\n */\n public final fun release() {\n val head = head\n val empty = ChunkBuffer.Empty\n\n if (head !== empty) {\n this._head = empty\n tailRemaining = 0\n head.releaseAll(pool)\n }\n }\n\n final override fun close() {\n release()\n if (!noMoreChunksAvailable) {\n noMoreChunksAvailable = true\n }\n closeSource()\n }\n\n internal final fun stealAll(): ChunkBuffer? {\n val head = head\n val empty = ChunkBuffer.Empty\n\n if (head === empty) return null\n this._head = empty\n tailRemaining = 0\n return head\n }\n\n internal final fun steal(): ChunkBuffer? {\n val head = head\n val next = head.next\n val empty = ChunkBuffer.Empty\n if (head === empty) return null\n\n if (next == null) {\n this._head = empty\n this.tailRemaining = 0\n } else {\n this._head = next\n this.tailRemaining -= next.readRemaining\n }\n\n head.next = null\n return head\n }\n\n internal final fun append(chain: ChunkBuffer) {\n if (chain === ChunkBuffer.Empty) return\n\n val size = chain.remainingAll()\n if (_head === ChunkBuffer.Empty) {\n _head = chain\n tailRemaining = size - headRemaining\n } else {\n _head.findTail().next = chain\n tailRemaining += size\n }\n }\n\n internal final fun tryWriteAppend(chain: ChunkBuffer): Boolean {\n val tail = head.findTail()\n val size = chain.readRemaining\n\n if (size == 0 || tail.writeRemaining < size) return false\n tail.writeBufferAppend(chain, size)\n\n if (head === tail) {\n headEndExclusive = tail.writePosition\n } else {\n tailRemaining += size\n }\n\n return true\n }\n\n final override fun readByte(): Byte {\n val index = headPosition\n val nextIndex = index + 1\n if (nextIndex < headEndExclusive) {\n // fast-path when we are not reading the last byte\n headPosition = nextIndex\n return headMemory[index]\n }\n\n return readByteSlow()\n }\n\n private fun readByteSlow(): Byte {\n val index = headPosition\n if (index < headEndExclusive) {\n val value = headMemory[index]\n headPosition = index\n val head = _head\n head.discardUntilIndex(index)\n ensureNext(head)\n return value\n }\n\n val head = prepareRead(1) ?: prematureEndOfStream(1)\n val byte = head.readByte()\n completeReadHead(head)\n return byte\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun readShort(): Short = readShort()\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun readFloat(): Float = readFloat()\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun readDouble(): Double = readDouble()\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun readInt(): Int {\n return readInt()\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun readLong(): Long {\n return readLong()\n }\n\n /**\n * Read exactly [length] bytes to [dst] array at specified [offset]\n */\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun readFully(dst: ByteArray, offset: Int, length: Int) {\n val rc = readAvailable(dst, offset, length)\n if (rc != length) {\n throw EOFException(\"Not enough data in packet to fill buffer: ${length - rc} more bytes required\")\n }\n }\n\n /**\n * Discards at most [n] bytes\n * @return number of bytes has been discarded\n */\n public final fun discard(n: Int): Int {\n require(n >= 0) { \"Negative discard is not allowed: $n\" }\n return discardAsMuchAsPossible(n, 0)\n }\n\n /**\n * Discards exactly [n] bytes or fails with [EOFException]\n */\n public final fun discardExact(n: Int) {\n if (discard(n) != n) throw EOFException(\"Unable to discard $n bytes due to end of packet\")\n }\n\n @PublishedApi\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n internal inline fun read(block: (Buffer) -> Unit) {\n read(block = block)\n }\n\n @PublishedApi\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n internal inline fun read(n: Int, block: (Buffer) -> Unit) {\n read(n, block)\n }\n\n /**\n * Returns next byte (unsigned) or `-1` if no more bytes available\n */\n final override fun tryPeek(): Int {\n val head = head\n if (headRemaining > 0) {\n return head.tryPeekByte()\n }\n\n if (tailRemaining == 0L && noMoreChunksAvailable) return -1\n\n return prepareReadLoop(1, head)?.tryPeekByte() ?: -1\n }\n\n @Suppress(\"DEPRECATION\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun peekTo(buffer: IoBuffer): Int {\n val head = prepareReadHead(1) ?: return -1\n\n val size = minOf(buffer.writeRemaining, head.readRemaining)\n (buffer as Buffer).writeFully(head, size)\n\n return size\n }\n\n final override fun discard(n: Long): Long {\n if (n <= 0) return 0L\n return discardAsMuchAsPossible(n, 0)\n }\n\n internal fun readAvailableCharacters(destination: CharArray, off: Int, len: Int): Int {\n if (endOfInput) return -1\n\n val out = object : Appendable {\n private var idx = off\n\n override fun append(c: Char): Appendable {\n destination[idx++] = c\n return this\n }\n\n override fun append(csq: CharSequence?): Appendable {\n if (csq is String) {\n csq.getCharsInternal(destination, idx)\n idx += csq.length\n } else if (csq != null) {\n for (i in 0 until csq.length) {\n destination[idx++] = csq[i]\n }\n }\n\n return this\n }\n\n override fun append(csq: CharSequence?, start: Int, end: Int): Appendable {\n throw UnsupportedOperationException()\n }\n }\n\n return readText(out, 0, len)\n }\n\n /**\n * Read at least [min] and at most [max] characters and append them to [out]\n * @return number of characters appended\n */\n public fun readText(out: Appendable, min: Int = 0, max: Int = Int.MAX_VALUE): Int {\n if (max.toLong() >= remaining) {\n val s = readTextExactBytes(bytesCount = remaining.toInt())\n out.append(s)\n return s.length\n }\n return readASCII(out, min, max)\n }\n\n /**\n * Read exactly [exactCharacters] characters and append them to [out]\n */\n public fun readTextExact(out: Appendable, exactCharacters: Int) {\n readText(out, exactCharacters, exactCharacters)\n }\n\n /**\n * Read a string at last [min] and at most [max] characters length\n */\n public fun readText(min: Int = 0, max: Int = Int.MAX_VALUE): String {\n if (min == 0 && (max == 0 || endOfInput)) return \"\"\n val remaining = remaining\n if (remaining > 0 && max.toLong() >= remaining) return readTextExactBytes(bytesCount = remaining.toInt())\n\n return buildString(min.coerceAtLeast(16).coerceAtMost(max)) {\n readASCII(this, min, max)\n }\n }\n\n /**\n * Read a string exactly [exactCharacters] length\n */\n public fun readTextExact(exactCharacters: Int): String {\n return readText(exactCharacters, exactCharacters)\n }\n\n private fun readASCII(out: Appendable, min: Int, max: Int): Int {\n when {\n max == 0 && min == 0 -> return 0\n endOfInput -> if (min == 0) return 0 else atLeastMinCharactersRequire(min)\n max < min -> minShouldBeLess(min, max)\n }\n\n var copied = 0\n var utf8 = false\n\n takeWhile { buffer ->\n val rc = buffer.decodeASCII {\n if (copied == max) false\n else {\n out.append(it)\n copied++\n true\n }\n }\n\n when {\n rc -> true\n copied == max -> false\n else -> {\n utf8 = true\n false\n }\n }\n }\n\n if (utf8) {\n return copied + readUtf8(out, min - copied, max - copied)\n }\n if (copied < min) prematureEndOfStreamChars(min, copied)\n return copied\n }\n\n private fun atLeastMinCharactersRequire(min: Int): Nothing =\n throw EOFException(\"at least $min characters required but no bytes available\")\n\n private fun minShouldBeLess(min: Int, max: Int): Nothing =\n throw IllegalArgumentException(\"min should be less or equal to max but min = $min, max = $max\")\n\n private fun prematureEndOfStreamChars(min: Int, copied: Int): Nothing = throw MalformedUTF8InputException(\n \"Premature end of stream: expected at least $min chars but had only $copied\"\n )\n\n private fun readUtf8(out: Appendable, min: Int, max: Int): Int {\n var copied = 0\n\n takeWhileSize { buffer ->\n val size = buffer.decodeUTF8 {\n if (copied == max) false\n else {\n out.append(it)\n copied++\n true\n }\n }\n\n when {\n size == 0 -> 1\n size > 0 -> size\n else -> 0\n }\n }\n\n if (copied < min) prematureEndOfStreamChars(min, copied)\n\n return copied\n }\n\n private tailrec fun discardAsMuchAsPossible(n: Long, skipped: Long): Long {\n if (n == 0L) return skipped\n val current = prepareRead(1) ?: return skipped\n val size = minOf(current.readRemaining.toLong(), n).toInt()\n current.discardExact(size)\n headPosition += size\n afterRead(current)\n\n return discardAsMuchAsPossible(n - size, skipped + size)\n }\n\n private tailrec fun discardAsMuchAsPossible(n: Int, skipped: Int): Int {\n if (n == 0) return skipped\n val current = prepareRead(1) ?: return skipped\n val size = minOf(current.readRemaining, n)\n current.discardExact(size)\n headPosition += size\n afterRead(current)\n\n return discardAsMuchAsPossible(n - size, skipped + size)\n }\n\n private tailrec fun readAsMuchAsPossible(array: ByteArray, offset: Int, length: Int, copied: Int): Int {\n if (length == 0) return copied\n val current = prepareRead(1) ?: return copied\n val size = minOf(length, current.readRemaining)\n\n current.readFully(array, offset, size)\n headPosition = current.readPosition\n\n return if (size != length || current.readRemaining == 0) {\n afterRead(current)\n readAsMuchAsPossible(array, offset + size, length - size, copied + size)\n } else {\n copied + size\n }\n }\n\n private fun notEnoughBytesAvailable(n: Int): Nothing {\n throw EOFException(\"Not enough data in packet ($remaining) to read $n byte(s)\")\n }\n\n @Deprecated(\"Not supported anymore.\", level = DeprecationLevel.ERROR)\n public fun updateHeadRemaining(remaining: Int) {\n // the only external usages are from readDirect\n // so after using head chunk directly we should fix positions instead\n val newPosition = headEndExclusive - remaining\n\n if (newPosition < 0) {\n throw IllegalArgumentException(\"Unable to update position to negative. newRemaining is too big.\")\n }\n\n headPosition = newPosition\n }\n\n @DangerousInternalIoApi\n public fun prepareReadHead(minSize: Int): ChunkBuffer? = prepareReadLoop(minSize, head)\n\n @DangerousInternalIoApi\n public fun ensureNextHead(current: ChunkBuffer): ChunkBuffer? = ensureNext(current)\n\n @PublishedApi\n internal fun ensureNext(current: ChunkBuffer): ChunkBuffer? = ensureNext(\n current,\n ChunkBuffer.Empty\n )\n\n @DangerousInternalIoApi\n public fun fixGapAfterRead(current: ChunkBuffer) {\n val next = current.next ?: return fixGapAfterReadFallback(current)\n\n val remaining = current.readRemaining\n val overrunSize = minOf(remaining, Buffer.ReservedSize - current.endGap)\n if (next.startGap < overrunSize) {\n return fixGapAfterReadFallback(current)\n }\n\n next.restoreStartGap(overrunSize)\n\n if (remaining > overrunSize) {\n current.releaseEndGap()\n\n this.headEndExclusive = current.writePosition\n this.tailRemaining += overrunSize\n } else {\n this._head = next\n this.tailRemaining -= next.readRemaining - overrunSize\n current.cleanNext()\n current.release(pool)\n }\n }\n\n private fun fixGapAfterReadFallback(current: ChunkBuffer) {\n if (noMoreChunksAvailable && current.next == null) {\n this.headPosition = current.readPosition\n this.headEndExclusive = current.writePosition\n this.tailRemaining = 0\n return\n }\n\n val size = current.readRemaining\n val overrun = minOf(size, Buffer.ReservedSize - current.endGap)\n\n if (size > overrun) {\n fixGapAfterReadFallbackUnreserved(current, size, overrun)\n } else {\n val new = pool.borrow()\n new.reserveEndGap(Buffer.ReservedSize)\n new.next = current.cleanNext()\n\n new.writeBufferAppend(current, size)\n this._head = new\n }\n\n current.release(pool)\n }\n\n private fun fixGapAfterReadFallbackUnreserved(current: ChunkBuffer, size: Int, overrun: Int) {\n // if we have a chunk with no end reservation\n // we can split it into two to fix it\n\n val chunk1 = pool.borrow()\n val chunk2 = pool.borrow()\n\n chunk1.reserveEndGap(Buffer.ReservedSize)\n chunk2.reserveEndGap(Buffer.ReservedSize)\n chunk1.next = chunk2\n chunk2.next = current.cleanNext()\n\n chunk1.writeBufferAppend(current, size - overrun)\n chunk2.writeBufferAppend(current, overrun)\n\n this._head = chunk1\n this.tailRemaining = chunk2.remainingAll()\n }\n\n private tailrec fun ensureNext(current: ChunkBuffer, empty: ChunkBuffer): ChunkBuffer? {\n if (current === empty) {\n return doFill()\n }\n\n val next = current.cleanNext()\n current.release(pool)\n\n return when {\n next == null -> {\n this._head = empty\n this.tailRemaining = 0L\n ensureNext(empty, empty)\n }\n next.canRead() -> {\n _head = next\n tailRemaining -= next.readRemaining\n next\n }\n else -> ensureNext(next, empty)\n }\n }\n\n /**\n * Reads the next chunk suitable for reading or `null` if no more chunks available. It is also allowed\n * to return a chain of chunks linked through [ChunkBuffer.next]. The last chunk should have `null` next reference.\n * Could rethrow exceptions from the underlying source.\n */\n protected open fun fill(): ChunkBuffer? {\n val buffer = pool.borrow()\n try {\n buffer.reserveEndGap(Buffer.ReservedSize)\n val copied = fill(buffer.memory, buffer.writePosition, buffer.writeRemaining)\n\n if (copied == 0) {\n noMoreChunksAvailable = true\n\n if (!buffer.canRead()) {\n buffer.release(pool)\n return null\n }\n }\n\n buffer.commitWritten(copied)\n\n return buffer\n } catch (t: Throwable) {\n buffer.release(pool)\n throw t\n }\n }\n\n protected final fun markNoMoreChunksAvailable() {\n if (!noMoreChunksAvailable) {\n noMoreChunksAvailable = true\n }\n }\n\n /**\n * see [prefetch] for similar logic\n */\n private final fun doFill(): ChunkBuffer? {\n if (noMoreChunksAvailable) return null\n val chunk = fill()\n if (chunk == null) {\n noMoreChunksAvailable = true\n return null\n }\n appendView(chunk)\n return chunk\n }\n\n private final fun appendView(chunk: ChunkBuffer) {\n val tail = _head.findTail()\n if (tail === ChunkBuffer.Empty) {\n _head = chunk\n require(tailRemaining == 0L) {\n throw IllegalStateException(\"It should be no tail remaining bytes if current tail is EmptyBuffer\")\n }\n tailRemaining = chunk.next?.remainingAll() ?: 0L\n } else {\n tail.next = chunk\n tailRemaining += chunk.remainingAll()\n }\n }\n\n @PublishedApi\n internal fun prepareRead(minSize: Int): ChunkBuffer? {\n val head = head\n if (headEndExclusive - headPosition >= minSize) return head\n return prepareReadLoop(minSize, head)\n }\n\n @PublishedApi\n internal final fun prepareRead(minSize: Int, head: ChunkBuffer): ChunkBuffer? {\n if (headEndExclusive - headPosition >= minSize) return head\n return prepareReadLoop(minSize, head)\n }\n\n private tailrec fun prepareReadLoop(minSize: Int, head: ChunkBuffer): ChunkBuffer? {\n val headSize = headRemaining\n if (headSize >= minSize) return head\n\n val next = head.next ?: doFill() ?: return null\n\n if (headSize == 0) {\n if (head !== ChunkBuffer.Empty) {\n releaseHead(head)\n }\n\n return prepareReadLoop(minSize, next)\n } else {\n val desiredExtraBytes = minSize - headSize\n val copied = head.writeBufferAppend(next, desiredExtraBytes)\n headEndExclusive = head.writePosition\n tailRemaining -= copied\n if (!next.canRead()) {\n head.next = null\n head.next = next.cleanNext()\n next.release(pool)\n } else {\n next.reserveStartGap(copied)\n }\n }\n\n if (head.readRemaining >= minSize) return head\n if (minSize > Buffer.ReservedSize) minSizeIsTooBig(minSize)\n\n return prepareReadLoop(minSize, head)\n }\n\n private fun minSizeIsTooBig(minSize: Int): Nothing {\n throw IllegalStateException(\"minSize of $minSize is too big (should be less than ${Buffer.ReservedSize})\")\n }\n\n private fun afterRead(head: ChunkBuffer) {\n if (head.readRemaining == 0) {\n releaseHead(head)\n }\n }\n\n internal final fun releaseHead(head: ChunkBuffer): ChunkBuffer {\n val next = head.cleanNext() ?: ChunkBuffer.Empty\n this._head = next\n this.tailRemaining -= next.readRemaining\n head.release(pool)\n\n return next\n }\n\n public companion object\n}\n","/*\n * Copyright 2016-2017 JetBrains s.r.o.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage io.ktor.utils.io\n\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.*\n\n/**\n * Channel for asynchronous reading and writing of sequences of bytes.\n * This is a buffered **single-reader single-writer channel**.\n *\n * Read operations can be invoked concurrently with write operations, but multiple reads or multiple writes\n * cannot be invoked concurrently with themselves. Exceptions are [close] and [flush] which can be invoked\n * concurrently with any other operations and between themselves at any time.\n */\npublic interface ByteChannel : ByteReadChannel, ByteWriteChannel {\n public fun attachJob(job: Job)\n}\n\n/**\n * Creates buffered channel for asynchronous reading and writing of sequences of bytes.\n */\npublic expect fun ByteChannel(autoFlush: Boolean = false): ByteChannel\n\n/**\n * Creates channel for reading from the specified byte array. Please note that it could use [content] directly\n * or copy it's bytes depending on the platform.\n */\npublic fun ByteReadChannel(content: ByteArray): ByteReadChannel =\n ByteReadChannel(content, 0, content.size)\n\n/**\n * Creates channel for reading from the specified byte array. Please note that it could use [content] directly\n * or copy it's bytes depending on the platform.\n */\npublic fun ByteReadChannel(content: ByteArray, offset: Int): ByteReadChannel =\n ByteReadChannel(content, offset, content.size)\n\n/**\n * Creates channel for reading from the specified byte array. Please note that it could use [content] directly\n * or copy it's bytes depending on the platform\n */\npublic expect fun ByteReadChannel(content: ByteArray, offset: Int, length: Int): ByteReadChannel\n\npublic fun ByteReadChannel(text: String, charset: Charset = Charsets.UTF_8): ByteReadChannel =\n ByteReadChannel(text.toByteArray(charset)) // TODO optimize to encode parts on demand\n\n/**\n * Byte channel that is always empty.\n */\n@Deprecated(\n \"Use ByteReadChannel.Empty instead\",\n ReplaceWith(\"ByteReadChannel.Empty\"),\n level = DeprecationLevel.ERROR\n)\npublic val EmptyByteReadChannel: ByteReadChannel\n get() = ByteReadChannel.Empty\n","@file:Suppress(\"RedundantModalityModifier\")\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.core.internal.*\nimport io.ktor.utils.io.errors.*\nimport io.ktor.utils.io.pool.*\n\n@DangerousInternalIoApi\n@Deprecated(\n \"Will be removed in the future releases. Use Input or AbstractInput instead.\",\n ReplaceWith(\"AbstractInput\", \"io.ktor.utils.io.core.AbstractInput\")\n)\npublic abstract class ByteReadPacketBase(\n head: ChunkBuffer,\n remaining: Long,\n pool: ObjectPool\n) : AbstractInput(head, remaining, pool) {\n\n @Suppress(\"DEPRECATION\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public constructor(\n head: IoBuffer,\n remaining: Long,\n pool: ObjectPool\n ) : this(head as ChunkBuffer, remaining, pool)\n\n public companion object {\n @Deprecated(\n \"Use ByteReadPacket.Empty instead\",\n ReplaceWith(\"ByteReadPacket.Empty\"),\n level = DeprecationLevel.ERROR\n )\n public val Empty: ByteReadPacket\n get() = ByteReadPacket.Empty\n }\n}\n\npublic expect class EOFException(message: String) : IOException\n\n/**\n * For streaming input it should be [Input.endOfInput] instead.\n */\n@Deprecated(\"Use endOfInput property instead\", ReplaceWith(\"endOfInput\"))\npublic inline val Input.isEmpty: Boolean\n get() = endOfInput\n\n/**\n * For streaming input there is no reliable way to detect it without triggering bytes population from the underlying\n * source. Consider using [Input.endOfInput] or use [ByteReadPacket] instead.\n */\n@Deprecated(\n \"This makes no sense for streaming inputs. Some use-cases are covered by endOfInput property\",\n ReplaceWith(\"!endOfInput\")\n)\npublic val Input.isNotEmpty: Boolean\n get() {\n if (endOfInput) return false\n prepareReadFirstHead(1)?.let { found ->\n completeReadHead(found)\n return true\n }\n return false\n }\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic inline val ByteReadPacket.isEmpty: Boolean\n get() = endOfInput\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic inline val ByteReadPacket.isNotEmpty: Boolean\n get() = !endOfInput\n","package io.ktor.utils.io\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.*\n\n/**\n * Channel for asynchronous reading of sequences of bytes.\n * This is a **single-reader channel**.\n *\n * Operations on this channel cannot be invoked concurrently.\n */\npublic expect interface ByteReadChannel {\n /**\n * Returns number of bytes that can be read without suspension. Read operations do no suspend and return\n * immediately when this number is at least the number of bytes requested for read.\n */\n public val availableForRead: Int\n\n /**\n * Returns `true` if the channel is closed and no remaining bytes are available for read.\n * It implies that [availableForRead] is zero.\n */\n public val isClosedForRead: Boolean\n\n public val isClosedForWrite: Boolean\n\n /**\n * Byte order that is used for multi-byte read operations\n * (such as [readShort], [readInt], [readLong], [readFloat], and [readDouble]).\n */\n @Deprecated(\n \"Setting byte order is no longer supported. Read/write in big endian and use reverseByteOrder() extensions.\",\n level = DeprecationLevel.ERROR\n )\n public var readByteOrder: ByteOrder\n\n /**\n * Number of bytes read from the channel.\n * It is not guaranteed to be atomic so could be updated in the middle of long running read operation.\n */\n public val totalBytesRead: Long\n\n /**\n * Reads all available bytes to [dst] buffer and returns immediately or suspends if no bytes available\n * @return number of bytes were read or `-1` if the channel has been closed\n */\n public suspend fun readAvailable(dst: ByteArray, offset: Int, length: Int): Int\n public suspend fun readAvailable(dst: IoBuffer): Int\n\n /**\n * Reads all [length] bytes to [dst] buffer or fails if channel has been closed.\n * Suspends if not enough bytes available.\n */\n public suspend fun readFully(dst: ByteArray, offset: Int, length: Int)\n public suspend fun readFully(dst: IoBuffer, n: Int)\n\n /**\n * Reads the specified amount of bytes and makes a byte packet from them. Fails if channel has been closed\n * and not enough bytes available. Accepts [headerSizeHint] to be provided, see [BytePacketBuilder].\n */\n public suspend fun readPacket(size: Int, headerSizeHint: Int): ByteReadPacket\n\n /**\n * Reads up to [limit] bytes and makes a byte packet or until end of stream encountered.\n * Accepts [headerSizeHint] to be provided, see [BytePacketBuilder].\n */\n public suspend fun readRemaining(limit: Long, headerSizeHint: Int): ByteReadPacket\n\n /**\n * Reads a long number (suspending if not enough bytes available) or fails if channel has been closed\n * and not enough bytes.\n */\n public suspend fun readLong(): Long\n\n /**\n * Reads an int number (suspending if not enough bytes available) or fails if channel has been closed\n * and not enough bytes.\n */\n public suspend fun readInt(): Int\n\n /**\n * Reads a short number (suspending if not enough bytes available) or fails if channel has been closed\n * and not enough bytes.\n */\n public suspend fun readShort(): Short\n\n /**\n * Reads a byte (suspending if no bytes available yet) or fails if channel has been closed\n * and not enough bytes.\n */\n public suspend fun readByte(): Byte\n\n /**\n * Reads a boolean value (suspending if no bytes available yet) or fails if channel has been closed\n * and not enough bytes.\n */\n public suspend fun readBoolean(): Boolean\n\n /**\n * Reads double number (suspending if not enough bytes available) or fails if channel has been closed\n * and not enough bytes.\n */\n public suspend fun readDouble(): Double\n\n /**\n * Reads float number (suspending if not enough bytes available) or fails if channel has been closed\n * and not enough bytes.\n */\n public suspend fun readFloat(): Float\n\n /**\n * Starts non-suspendable read session. After channel preparation [consumer] lambda will be invoked immediately\n * event if there are no bytes available for read yet.\n */\n @Suppress(\"DEPRECATION\")\n @Deprecated(\"Use read { } instead.\")\n public fun readSession(consumer: ReadSession.() -> Unit)\n\n /**\n * Starts a suspendable read session. After channel preparation [consumer] lambda will be invoked immediately\n * even if there are no bytes available for read yet. [consumer] lambda could suspend as much as needed.\n */\n @Suppress(\"DEPRECATION\")\n @Deprecated(\"Use read { } instead.\")\n public suspend fun readSuspendableSession(consumer: suspend SuspendableReadSession.() -> Unit)\n\n /**\n * Reads a line of UTF-8 characters to the specified [out] buffer up to [limit] characters.\n * Supports both CR-LF and LF line endings. No line ending characters will be appended to [out] buffer.\n * Throws an exception if the specified [limit] has been exceeded.\n *\n * @return `true` if line has been read (possibly empty) or `false` if channel has been closed\n * and no characters were read.\n */\n public suspend fun readUTF8LineTo(out: A, limit: Int): Boolean\n\n /**\n * Reads a line of UTF-8 characters up to [limit] characters.\n * Supports both CR-LF and LF line endings.\n * Throws an exception if the specified [limit] has been exceeded.\n *\n * @return a line string with no line endings or `null` of channel has been closed\n * and no characters were read.\n */\n public suspend fun readUTF8Line(limit: Int): String?\n\n /**\n * Close channel with optional [cause] cancellation. Unlike [ByteWriteChannel.close] that could close channel\n * normally, cancel does always close with error so any operations on this channel will always fail\n * and all suspensions will be resumed with exception.\n *\n * Please note that if the channel has been provided by [reader] or [writer] then the corresponding owning\n * coroutine will be cancelled as well\n *\n * @see ByteWriteChannel.close\n */\n public fun cancel(cause: Throwable?): Boolean\n\n /**\n * Discard up to [max] bytes\n *\n * @return number of bytes were discarded\n */\n public suspend fun discard(max: Long): Long\n\n /**\n * Try to copy at least [min] but up to [max] bytes to the specified [destination] buffer from this input\n * skipping [offset] bytes. If there are not enough bytes available to provide [min] bytes after skipping [offset]\n * bytes then it will trigger the underlying source reading first and after that will\n * simply copy available bytes even if EOF encountered so [min] is not a requirement but a desired number of bytes.\n * It is safe to specify [max] greater than the destination free space.\n * `min` shouldn't be bigger than the [destination] free space.\n * This function could trigger the underlying source suspending reading.\n * It is allowed to specify too big [offset] so in this case this function will always return `0` after prefetching\n * all underlying bytes but note that it may lead to significant memory consumption.\n * This function usually copy more bytes than [min] (unless `max = min`) but it is not guaranteed.\n * When `0` is returned with `offset = 0` then it makes sense to check [isClosedForRead].\n *\n * @param destination to write bytes\n * @param offset to skip input\n * @param min bytes to be copied, shouldn't be greater than the buffer free space. Could be `0`.\n * @param max bytes to be copied even if there are more bytes buffered, could be [Int.MAX_VALUE].\n * @return number of bytes copied to the [destination] possibly `0`\n */\n public suspend fun peekTo(\n destination: Memory,\n destinationOffset: Long,\n offset: Long = 0,\n min: Long = 1,\n max: Long = Long.MAX_VALUE\n ): Long\n\n public companion object {\n public val Empty: ByteReadChannel\n }\n}\n\n/**\n * Reads the specified amount of bytes and makes a byte packet from them. Fails if channel has been closed\n * and not enough bytes available.\n */\npublic suspend fun ByteReadChannel.readPacket(size: Int): ByteReadPacket = readPacket(size, 0)\n\n/**\n * Reads up to [limit] bytes and makes a byte packet or until end of stream encountered.\n */\npublic suspend fun ByteReadChannel.readRemaining(limit: Long): ByteReadPacket = readRemaining(limit, 0)\n\n/**\n * Reads all remaining bytes and makes a byte packet\n */\npublic suspend fun ByteReadChannel.readRemaining(): ByteReadPacket = readRemaining(Long.MAX_VALUE, 0)\n\npublic suspend fun ByteReadChannel.readFully(dst: IoBuffer) {\n readFully(dst, dst.writeRemaining)\n}\n\npublic suspend fun ByteReadChannel.readUTF8LineTo(out: Appendable): Boolean {\n return readUTF8LineTo(out, Int.MAX_VALUE)\n}\n\npublic suspend fun ByteReadChannel.readUTF8Line(): String? {\n return readUTF8Line(Int.MAX_VALUE)\n}\n\npublic fun ByteReadChannel.cancel(): Boolean = cancel(null)\n\n/**\n * Discards all bytes in the channel and suspends until end of stream.\n */\npublic suspend fun ByteReadChannel.discard(): Long = discard(Long.MAX_VALUE)\n\n/**\n * Discards exactly [n] bytes or fails if not enough bytes in the channel\n */\npublic suspend inline fun ByteReadChannel.discardExact(n: Long) {\n if (discard(n) != n) throw EOFException(\"Unable to discard $n bytes\")\n}\n\npublic suspend fun ByteReadChannel.readAvailable(dst: ByteArray): Int = readAvailable(dst, 0, dst.size)\n\npublic suspend fun ByteReadChannel.readFully(dst: ByteArray): Unit = readFully(dst, 0, dst.size)\n\npublic expect suspend fun ByteReadChannel.joinTo(dst: ByteWriteChannel, closeOnEnd: Boolean)\n\n/**\n * Reads bytes from receiver channel and writes them to [dst] channel.\n * Closes [dst] channel if fails to read or write with cause exception.\n * @return a number of copied bytes\n */\npublic suspend fun ByteReadChannel.copyTo(dst: ByteWriteChannel): Long = copyTo(dst, limit = Long.MAX_VALUE)\n\n/**\n * Reads up to [limit] bytes from receiver channel and writes them to [dst] channel.\n * Closes [dst] channel if fails to read or write with cause exception.\n * @return a number of copied bytes\n */\npublic expect suspend fun ByteReadChannel.copyTo(dst: ByteWriteChannel, limit: Long): Long\n\n/**\n * Reads all the bytes from receiver channel and writes them to [dst] channel and then closes it.\n * Closes [dst] channel if fails to read or write with cause exception.\n * @return a number of copied bytes\n */\npublic suspend fun ByteReadChannel.copyAndClose(dst: ByteWriteChannel, limit: Long = Long.MAX_VALUE): Long {\n val count = copyTo(dst, limit)\n dst.close()\n return count\n}\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.core.internal.*\nimport io.ktor.utils.io.pool.*\nimport kotlin.contracts.*\n\npublic expect val PACKET_MAX_COPY_SIZE: Int\n\n/**\n * Build a byte packet in [block] lambda. Creates a temporary builder and releases it in case of failure\n */\npublic inline fun buildPacket(headerSizeHint: Int = 0, block: BytePacketBuilder.() -> Unit): ByteReadPacket {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n val builder = BytePacketBuilder(headerSizeHint)\n try {\n block(builder)\n return builder.build()\n } catch (t: Throwable) {\n builder.release()\n throw t\n }\n}\n\npublic expect fun BytePacketBuilder(headerSizeHint: Int = 0): BytePacketBuilder\n\n/**\n * Discard all written bytes and prepare to build another packet.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun BytePacketBuilder.reset() {\n release()\n}\n\n@DangerousInternalIoApi\n@Deprecated(\"Will be removed in future releases.\", level = DeprecationLevel.ERROR)\n@Suppress(\"DEPRECATION_ERROR\")\npublic abstract class BytePacketBuilderPlatformBase\ninternal constructor(pool: ObjectPool) : BytePacketBuilderBase(pool)\n\n@DangerousInternalIoApi\n@Deprecated(\"Will be removed in future releases\", level = DeprecationLevel.ERROR)\n@Suppress(\"DEPRECATION_ERROR\")\npublic abstract class BytePacketBuilderBase\ninternal constructor(pool: ObjectPool) : AbstractOutput(pool)\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.internal.*\n\n/**\n * This shouldn't be implemented directly. Inherit [AbstractOutput] instead.\n */\npublic expect interface Output : Appendable, Closeable {\n @Deprecated(\n \"This is no longer supported. All operations are big endian by default. Use writeXXXLittleEndian \" +\n \"to write primitives in little endian order\" +\n \" or do X.reverseByteOrder() and then writeXXX instead.\",\n level = DeprecationLevel.ERROR\n )\n public var byteOrder: ByteOrder\n\n public fun writeByte(v: Byte)\n\n public fun flush()\n\n override fun close()\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun writeShort(v: Short) {\n writeShort(v)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun writeInt(v: Int) {\n writeInt(v)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun writeLong(v: Long) {\n writeLong(v)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun writeFloat(v: Float) {\n writeFloat(v)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun writeDouble(v: Double) {\n writeDouble(v)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun writeFully(src: ByteArray, offset: Int, length: Int) {\n writeFully(src, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun writeFully(src: ShortArray, offset: Int, length: Int) {\n writeFully(src, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun writeFully(src: IntArray, offset: Int, length: Int) {\n writeFully(src, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun writeFully(src: LongArray, offset: Int, length: Int) {\n writeFully(src, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun writeFully(src: FloatArray, offset: Int, length: Int) {\n writeFully(src, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun writeFully(src: DoubleArray, offset: Int, length: Int) {\n writeFully(src, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\", \"DEPRECATION\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun writeFully(src: IoBuffer, length: Int) {\n writeFully(src, length)\n }\n\n public fun append(csq: CharArray, start: Int, end: Int): Appendable\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\", \"DEPRECATION\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun fill(n: Long, v: Byte) {\n fill(n, v)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Output.append(csq: CharSequence, start: Int = 0, end: Int = csq.length): Appendable {\n return append(csq, start, end)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Output.append(csq: CharArray, start: Int = 0, end: Int = csq.size): Appendable {\n return append(csq, start, end)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Output.writeFully(src: ByteArray, offset: Int = 0, length: Int = src.size - offset) {\n writeFullyBytesTemplate(offset, length) { buffer, currentOffset, count ->\n buffer.writeFully(src, currentOffset, count)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Output.writeFully(src: ShortArray, offset: Int = 0, length: Int = src.size - offset) {\n writeFullyTemplate(2, offset, length) { buffer, currentOffset, count ->\n buffer.writeFully(src, currentOffset, count)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Output.writeFully(src: IntArray, offset: Int = 0, length: Int = src.size - offset) {\n writeFullyTemplate(4, offset, length) { buffer, currentOffset, count ->\n buffer.writeFully(src, currentOffset, count)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Output.writeFully(src: LongArray, offset: Int = 0, length: Int = src.size - offset) {\n writeFullyTemplate(8, offset, length) { buffer, currentOffset, count ->\n buffer.writeFully(src, currentOffset, count)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Output.writeFully(src: FloatArray, offset: Int = 0, length: Int = src.size - offset) {\n writeFullyTemplate(4, offset, length) { buffer, currentOffset, count ->\n buffer.writeFully(src, currentOffset, count)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Output.writeFully(src: DoubleArray, offset: Int = 0, length: Int = src.size - offset) {\n writeFullyTemplate(8, offset, length) { buffer, currentOffset, count ->\n buffer.writeFully(src, currentOffset, count)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\npublic fun Output.writeFully(src: IoBuffer, length: Int = src.readRemaining) {\n writeFully(src as Buffer, length)\n}\n\npublic fun Output.writeFully(src: Buffer, length: Int = src.readRemaining) {\n writeFullyBytesTemplate(0, length) { buffer, _, count ->\n buffer.writeFully(src, count)\n }\n}\n\npublic fun Output.writeFully(src: Memory, offset: Int, length: Int) {\n writeFully(src, offset.toLong(), length.toLong())\n}\n\npublic fun Output.writeFully(src: Memory, offset: Long, length: Long) {\n writeFullyBytesTemplate(offset, length) { memory, destinationOffset, sourceOffset, count ->\n src.copyTo(memory, sourceOffset, count, destinationOffset)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Output.fill(times: Long, value: Byte = 0) {\n if (this is AbstractOutput) {\n var written = 0L\n writeWhile { buffer ->\n val partTimes = minOf(buffer.writeRemaining.toLong(), times - written).toInt()\n buffer.fill(partTimes, value)\n written += partTimes\n written < times\n }\n } else {\n fillFallback(times, value)\n }\n}\n\nprivate fun Output.fillFallback(times: Long, value: Byte) {\n for (iterate in 0 until times) {\n writeByte(value)\n }\n}\n\n/**\n * Append number of chunks invoking [block] function while the returned value is true.\n * Depending on the output underlying implementation it could invoke [block] function with the same buffer several times\n * however it is guaranteed that it is always non-empty.\n */\n@DangerousInternalIoApi\npublic inline fun Output.writeWhile(block: (Buffer) -> Boolean) {\n var tail: ChunkBuffer = prepareWriteHead(1, null)\n try {\n while (true) {\n if (!block(tail)) break\n tail = prepareWriteHead(1, tail)\n }\n } finally {\n afterHeadWrite(tail)\n }\n}\n\n/**\n * Append number of chunks invoking [block] function while the returned value is positive.\n * If returned value is positive then it will be invoked again with a buffer having at least requested number of\n * bytes space (could be the same buffer as before if it complies to the restriction).\n * @param initialSize for the first buffer passed to [block] function\n */\n@DangerousInternalIoApi\npublic inline fun Output.writeWhileSize(initialSize: Int = 1, block: (Buffer) -> Int) {\n var tail = prepareWriteHead(initialSize, null)\n\n try {\n var size: Int\n while (true) {\n size = block(tail)\n if (size <= 0) break\n tail = prepareWriteHead(size, tail)\n }\n } finally {\n afterHeadWrite(tail)\n }\n}\n\npublic fun Output.writePacket(packet: ByteReadPacket) {\n @Suppress(\"DEPRECATION_ERROR\")\n if (this is BytePacketBuilderBase) {\n writePacket(packet)\n return\n }\n\n packet.takeWhile { from ->\n writeFully(from)\n true\n }\n}\n\nprivate inline fun Output.writeFullyBytesTemplate(\n offset: Int,\n length: Int,\n block: (Buffer, currentOffset: Int, count: Int) -> Unit\n) {\n var currentOffset = offset\n var remaining = length\n\n writeWhile { buffer ->\n val size = minOf(remaining, buffer.writeRemaining)\n block(buffer, currentOffset, size)\n currentOffset += size\n remaining -= size\n remaining > 0\n }\n}\n\nprivate inline fun Output.writeFullyBytesTemplate(\n initialOffset: Long,\n length: Long,\n block: (destination: Memory, destinationOffset: Long, currentOffset: Long, count: Long) -> Unit\n) {\n var currentOffset = initialOffset\n var remaining = length\n\n writeWhile { buffer ->\n val size = minOf(remaining, buffer.writeRemaining.toLong())\n block(buffer.memory, buffer.writePosition.toLong(), currentOffset, size)\n buffer.commitWritten(size.toInt())\n currentOffset += size\n remaining -= size\n remaining > 0\n }\n}\n\nprivate inline fun Output.writeFullyTemplate(\n componentSize: Int,\n offset: Int,\n length: Int,\n block: (Buffer, currentOffset: Int, count: Int) -> Unit\n) {\n var currentOffset = offset\n var remaining = length\n\n writeWhileSize(componentSize) { buffer ->\n val size = minOf(remaining, buffer.writeRemaining)\n block(buffer, currentOffset, size)\n currentOffset += size\n remaining -= size\n remaining * componentSize\n }\n}\n","@file:Suppress(\"NOTHING_TO_INLINE\")\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.concurrent.*\nimport io.ktor.utils.io.core.internal.*\nimport io.ktor.utils.io.errors.EOFException\nimport kotlin.contracts.*\n\n/**\n * Represents a buffer with read and write positions.\n *\n * Concurrent unsafe: the same memory could be shared between different instances of [Buffer] however you can't\n * read/write using the same [Buffer] instance from different threads.\n */\n@DangerousInternalIoApi\npublic open class Buffer(public val memory: Memory) {\n private val bufferState: BufferSharedState = BufferSharedState(memory.size32)\n\n /**\n * Current read position. It is always non-negative and will never run ahead of the [writePosition].\n * It is usually greater or equal to [startGap] reservation.\n * This position is affected by [discard], [rewind], [resetForRead], [resetForWrite], [reserveStartGap]\n * and [reserveEndGap].\n */\n public var readPosition: Int\n get() = bufferState.readPosition\n private set(value) {\n bufferState.readPosition = value\n }\n\n /**\n * Current write position. It is always non-negative and will never run ahead of the [limit].\n * It is always greater or equal to the [readPosition].\n * * This position is affected by [resetForRead], [resetForWrite], [reserveStartGap]\n * and [reserveEndGap].\n */\n public var writePosition: Int\n get() = bufferState.writePosition\n private set(value) {\n bufferState.writePosition = value\n }\n /**\n * Start gap is a reserved space in the beginning. The reserved space is usually used to write a packet length\n * in the case when it's not known before the packet constructed.\n */\n public var startGap: Int\n get() = bufferState.startGap\n private set(value) {\n bufferState.startGap = value\n }\n\n /**\n * Write position limit. No bytes could be written ahead of this limit. When the limit is less than the [capacity]\n * then this means that there are reserved bytes in the end ([endGap]). Such a reserved space in the end could be used\n * to write size, hash and so on. Also it is useful when several buffers are connected into a chain and some\n * primitive value (e.g. `kotlin.Int`) is separated into two chunks so bytes from the second chain could be copied\n * to the reserved space of the first chunk and then the whole value could be read at once.\n */\n public var limit: Int\n get() = bufferState.limit\n private set(value) {\n bufferState.limit = value\n }\n\n /**\n * Number of bytes reserved in the end.\n */\n public inline val endGap: Int get() = capacity - limit\n\n /**\n * Buffer's capacity (including reserved [startGap] and [endGap]. Value for released buffer is unspecified.\n */\n public val capacity: Int = memory.size32\n\n /**\n * Number of bytes available for reading.\n */\n public inline val readRemaining: Int get() = writePosition - readPosition\n\n /**\n * Size of the free space available for writing in bytes.\n */\n public inline val writeRemaining: Int get() = limit - writePosition\n\n /**\n * User data: could be a session, connection or anything useful\n */\n @Deprecated(\"Will be removed. Inherit Buffer and add required fields instead.\")\n @ExperimentalIoApi\n public var attachment: Any?\n get() = bufferState.attachment\n set(value) {\n bufferState.attachment = value\n }\n\n /**\n * Discard [count] readable bytes.\n *\n * @throws EOFException if [count] is bigger than available bytes.\n */\n public fun discardExact(count: Int = readRemaining) {\n if (count == 0) return\n\n val newReadPosition = readPosition + count\n if (count < 0 || newReadPosition > writePosition) {\n discardFailed(count, readRemaining)\n }\n readPosition = newReadPosition\n }\n\n @Deprecated(\"Use discardExact instead.\", level = DeprecationLevel.ERROR)\n public fun discard(count: Int): Int {\n val size = minOf(count, readRemaining)\n discardExact(size)\n return size\n }\n\n @Deprecated(\"Use discardExact instead.\", level = DeprecationLevel.ERROR)\n public final fun discard(count: Long): Long {\n val size = minOf(count, readRemaining.toLong()).toInt()\n discardExact(size)\n return size.toLong()\n }\n\n @DangerousInternalIoApi\n public fun commitWritten(count: Int) {\n val newWritePosition = writePosition + count\n if (count < 0 || newWritePosition > limit) {\n commitWrittenFailed(count, writeRemaining)\n }\n writePosition = newWritePosition\n }\n\n /**\n * @return `true` if there is free space\n */\n @PublishedApi\n internal fun commitWrittenUntilIndex(position: Int): Boolean {\n val limit = limit\n if (position < writePosition) {\n commitWrittenFailed(position - writePosition, writeRemaining)\n }\n if (position >= limit) {\n if (position == limit) {\n writePosition = position\n return false\n }\n commitWrittenFailed(position - writePosition, writeRemaining)\n }\n\n writePosition = position\n return true\n }\n\n internal fun discardUntilIndex(position: Int) {\n if (position < 0 || position > writePosition) {\n discardFailed(position - readPosition, readRemaining)\n }\n\n if (readPosition != position) {\n readPosition = position\n }\n }\n\n /**\n * Rewind [readPosition] backward to make [count] bytes available for reading again.\n * @throws IllegalArgumentException when [count] is too big and not enough bytes available before the [readPosition]\n */\n public fun rewind(count: Int = readPosition - startGap) {\n val newReadPosition = readPosition - count\n if (newReadPosition < startGap) {\n rewindFailed(count, readPosition - startGap)\n }\n readPosition = newReadPosition\n }\n\n /**\n * Reserve [startGap] bytes in the beginning.\n * May move [readPosition] and [writePosition] if no bytes available for reading.\n */\n public fun reserveStartGap(startGap: Int) {\n require(startGap >= 0) { \"startGap shouldn't be negative: $startGap\" }\n\n if (readPosition >= startGap) {\n this.startGap = startGap\n return\n }\n\n if (readPosition == writePosition) {\n if (startGap > limit) {\n startGapReservationFailedDueToLimit(startGap)\n }\n\n this.writePosition = startGap\n this.readPosition = startGap\n this.startGap = startGap\n return\n }\n\n startGapReservationFailed(startGap)\n }\n\n /**\n * Reserve [endGap] bytes in the end.\n * Could move [readPosition] and [writePosition] to reserve space but only when no bytes were written or\n * all written bytes are marked as consumed (were read or discarded).\n */\n public fun reserveEndGap(endGap: Int) {\n require(endGap >= 0) { \"endGap shouldn't be negative: $endGap\" }\n\n val newLimit = capacity - endGap\n if (newLimit >= writePosition) {\n limit = newLimit\n return\n }\n\n if (newLimit < 0) {\n endGapReservationFailedDueToCapacity(endGap)\n }\n if (newLimit < startGap) {\n endGapReservationFailedDueToStartGap(endGap)\n }\n\n if (readPosition == writePosition) {\n limit = newLimit\n readPosition = newLimit\n writePosition = newLimit\n return\n }\n\n endGapReservationFailedDueToContent(endGap)\n }\n\n /**\n * Marks the whole buffer available for read and no for write\n */\n public fun resetForRead() {\n startGap = 0\n readPosition = 0\n\n val capacity = capacity\n writePosition = capacity\n }\n\n /**\n * Marks all capacity writable except the start gap reserved before. The end gap reservation is discarded.\n */\n public fun resetForWrite() {\n resetForWrite(capacity - startGap)\n }\n\n /**\n * Marks up to [limit] bytes of the buffer available for write and no bytes for read.\n * It does respect [startGap] already reserved. All extra bytes after the specified [limit]\n * are considered as [endGap].\n */\n public fun resetForWrite(limit: Int) {\n val startGap = startGap\n readPosition = startGap\n writePosition = startGap\n this.limit = limit\n }\n\n /**\n * Forget start/end gap reservations.\n */\n internal fun releaseGaps() {\n releaseStartGap(0)\n releaseEndGap()\n }\n\n internal fun releaseEndGap() {\n limit = capacity\n }\n\n internal fun releaseStartGap(newReadPosition: Int) {\n require(newReadPosition >= 0) { \"newReadPosition shouldn't be negative: $newReadPosition\" }\n require(newReadPosition <= readPosition) {\n \"newReadPosition shouldn't be ahead of the read position: $newReadPosition > $readPosition\"\n }\n\n readPosition = newReadPosition\n if (startGap > newReadPosition) {\n startGap = newReadPosition\n }\n }\n\n protected open fun duplicateTo(copy: Buffer) {\n copy.limit = limit\n copy.startGap = startGap\n copy.readPosition = readPosition\n copy.writePosition = writePosition\n }\n\n /**\n * Create a new [Buffer] instance pointing to the same memory and having the same positions.\n */\n public open fun duplicate(): Buffer = Buffer(memory).apply {\n duplicateTo(this)\n }\n\n /**\n * Peek the next unsigned byte or return `-1` if no more bytes available for reading. No bytes will be marked\n * as consumed in any case.\n * @return an unsigned byte or `-1` if not even a byte is available for reading.\n * @see tryReadByte\n * @see readByte\n */\n public fun tryPeekByte(): Int {\n val readPosition = readPosition\n if (readPosition == writePosition) return -1\n return memory[readPosition].toInt() and 0xff\n }\n\n /**\n * Read the next unsigned byte or return `-1` if no more bytes available for reading. The returned byte is marked\n * as consumed.\n * @return an unsigned byte or `-1` if not even a byte is available for reading.\n * @see tryPeekByte\n * @see readByte\n */\n public fun tryReadByte(): Int {\n val readPosition = readPosition\n if (readPosition == writePosition) return -1\n this.readPosition = readPosition + 1\n return memory[readPosition].toInt() and 0xff\n }\n\n /**\n * Read the next byte or fail with [EOFException] if it's not available. The returned byte is marked\n * as consumed.\n * @throws EOFException when not even a byte is available for reading.\n * @see tryPeekByte\n * @see tryReadByte\n */\n public fun readByte(): Byte {\n val readPosition = readPosition\n if (readPosition == writePosition) {\n throw EOFException(\"No readable bytes available.\")\n }\n this.readPosition = readPosition + 1\n return memory[readPosition]\n }\n\n /**\n * Write a byte [value] at [writePosition] (incremented when written successfully).\n * @throws InsufficientSpaceException when no free space in the buffer.\n */\n public fun writeByte(value: Byte) {\n val writePosition = writePosition\n if (writePosition == limit) {\n throw InsufficientSpaceException(\"No free space in the buffer to write a byte\")\n }\n memory[writePosition] = value\n this.writePosition = writePosition + 1\n }\n\n /**\n * Clear buffer's state: read/write positions, gaps and so on. Byte content is not cleaned-up.\n */\n public open fun reset() {\n releaseGaps()\n resetForWrite()\n }\n\n override fun toString(): String {\n return \"Buffer($readRemaining used, $writeRemaining free, ${startGap + endGap} reserved of $capacity)\"\n }\n\n public companion object {\n /**\n * Number of bytes usually reserved in the end of chunk\n * when several instances of [io.ktor.utils.io.core.internal.ChunkBuffer] are connected into a chain (usually inside of [ByteReadPacket]\n * or [BytePacketBuilder])\n */\n @DangerousInternalIoApi\n public const val ReservedSize: Int = 8\n\n /**\n * The empty buffer singleton: it has zero capacity for read and write.\n */\n @Suppress(\"DEPRECATION\")\n public val Empty: Buffer get() = IoBuffer.Empty\n }\n}\n\n/**\n * @return `true` if there are available bytes to be read\n */\npublic inline fun Buffer.canRead(): Boolean = writePosition > readPosition\n\n/**\n * @return `true` if there is free room to for write\n */\npublic inline fun Buffer.canWrite(): Boolean = limit > writePosition\n\n/**\n * Apply [block] of code with buffer's memory providing read range indices. The returned value of [block] lambda should\n * return number of bytes to be marked as consumed.\n * No read/write functions on this buffer should be called inside of [block] otherwise an undefined behaviour may occur\n * including data damage.\n */\n@DangerousInternalIoApi\npublic inline fun Buffer.read(block: (memory: Memory, start: Int, endExclusive: Int) -> Int): Int {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n val rc = block(memory, readPosition, writePosition)\n discardExact(rc)\n return rc\n}\n\n/**\n * Apply [block] of code with buffer's memory providing write range indices. The returned value of [block] lambda should\n * return number of bytes were written.\n * o read/write functions on this buffer should be called inside of [block] otherwise an undefined behaviour may occur\n * including data damage.\n */\n@DangerousInternalIoApi\npublic inline fun Buffer.write(block: (memory: Memory, start: Int, endExclusive: Int) -> Int): Int {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n val rc = block(memory, writePosition, limit)\n commitWritten(rc)\n return rc\n}\n\ninternal fun discardFailed(count: Int, readRemaining: Int): Nothing {\n throw EOFException(\"Unable to discard $count bytes: only $readRemaining available for reading\")\n}\n\ninternal fun commitWrittenFailed(count: Int, writeRemaining: Int): Nothing {\n throw EOFException(\"Unable to discard $count bytes: only $writeRemaining available for writing\")\n}\n\ninternal fun rewindFailed(count: Int, rewindRemaining: Int): Nothing {\n throw IllegalArgumentException(\"Unable to rewind $count bytes: only $rewindRemaining could be rewinded\")\n}\n\ninternal fun Buffer.startGapReservationFailedDueToLimit(startGap: Int): Nothing {\n if (startGap > capacity) {\n throw IllegalArgumentException(\"Start gap $startGap is bigger than the capacity $capacity\")\n }\n\n throw IllegalStateException(\n \"Unable to reserve $startGap start gap: there are already $endGap bytes reserved in the end\"\n )\n}\n\ninternal fun Buffer.startGapReservationFailed(startGap: Int): Nothing {\n throw IllegalStateException(\n \"Unable to reserve $startGap start gap: \" +\n \"there are already $readRemaining content bytes starting at offset $readPosition\"\n )\n}\n\ninternal fun Buffer.endGapReservationFailedDueToCapacity(endGap: Int) {\n throw IllegalArgumentException(\"End gap $endGap is too big: capacity is $capacity\")\n}\n\ninternal fun Buffer.endGapReservationFailedDueToStartGap(endGap: Int) {\n throw IllegalArgumentException(\n \"End gap $endGap is too big: there are already $startGap bytes reserved in the beginning\"\n )\n}\n\ninternal fun Buffer.endGapReservationFailedDueToContent(endGap: Int) {\n throw IllegalArgumentException(\n \"Unable to reserve end gap $endGap:\" +\n \" there are already $readRemaining content bytes at offset $readPosition\"\n )\n}\n\ninternal fun Buffer.restoreStartGap(size: Int) {\n releaseStartGap(readPosition - size)\n}\n\n@ExperimentalIoApi\npublic class InsufficientSpaceException(message: String = \"Not enough free space\") : Exception(message) {\n public constructor(\n size: Int,\n availableSpace: Int\n ) : this(\"Not enough free space to write $size bytes, available $availableSpace bytes.\")\n\n public constructor(\n name: String,\n size: Int,\n availableSpace: Int\n ) : this(\"Not enough free space to write $name of $size bytes, available $availableSpace bytes.\")\n\n public constructor(\n size: Long,\n availableSpace: Long\n ) : this(\"Not enough free space to write $size bytes, available $availableSpace bytes.\")\n}\n","@file:Suppress(\"NOTHING_TO_INLINE\")\n\npackage io.ktor.utils.io.bits\n\nimport io.ktor.utils.io.core.internal.*\nimport org.khronos.webgl.*\nimport kotlin.require\n\n/**\n * Represents a linear range of bytes.\n */\npublic actual class Memory @DangerousInternalIoApi constructor(public val view: DataView) {\n /**\n * Size of memory range in bytes.\n */\n public actual inline val size: Long get() = view.byteLength.toLong()\n\n /**\n * Size of memory range in bytes represented as signed 32bit integer\n * @throws IllegalStateException when size doesn't fit into a signed 32bit integer\n */\n public actual inline val size32: Int get() = view.byteLength\n\n /**\n * Returns byte at [index] position.\n */\n public actual inline fun loadAt(index: Int): Byte {\n return view.getInt8(index)\n }\n\n /**\n * Returns byte at [index] position.\n */\n public actual inline fun loadAt(index: Long): Byte {\n return view.getInt8(index.toIntOrFail(\"index\"))\n }\n\n /**\n * Write [value] at the specified [index].\n */\n public actual inline fun storeAt(index: Int, value: Byte) {\n view.setInt8(index, value)\n }\n\n /**\n * Write [value] at the specified [index]\n */\n public actual inline fun storeAt(index: Long, value: Byte) {\n view.setInt8(index.toIntOrFail(\"index\"), value)\n }\n\n /**\n * Returns memory's subrange. On some platforms it could do range checks but it is not guaranteed to be safe.\n * It also could lead to memory allocations on some platforms.\n */\n public actual fun slice(offset: Int, length: Int): Memory {\n require(offset >= 0) { \"offset shouldn't be negative: $offset\" }\n require(length >= 0) { \"length shouldn't be negative: $length\" }\n if (offset + length > size) {\n throw IndexOutOfBoundsException(\"offset + length > size: $offset + $length > $size\")\n }\n\n return Memory(\n DataView(\n view.buffer,\n view.byteOffset + offset,\n length\n )\n )\n }\n\n /**\n * Returns memory's subrange. On some platforms it could do range checks but it is not guaranteed to be safe.\n * It also could lead to memory allocations on some platforms.\n */\n public actual fun slice(offset: Long, length: Long): Memory {\n return slice(offset.toIntOrFail(\"offset\"), length.toIntOrFail(\"length\"))\n }\n\n /**\n * Copies bytes from this memory range from the specified [offset] and [length]\n * to the [destination] at [destinationOffset].\n * Copying bytes from a memory to itself is allowed.\n */\n public actual fun copyTo(\n destination: Memory,\n offset: Int,\n length: Int,\n destinationOffset: Int\n ) {\n val src = Int8Array(view.buffer, view.byteOffset + offset, length)\n val dst = Int8Array(destination.view.buffer, destination.view.byteOffset + destinationOffset, length)\n\n dst.set(src)\n }\n\n /**\n * Copies bytes from this memory range from the specified [offset] and [length]\n * to the [destination] at [destinationOffset].\n * Copying bytes from a memory to itself is allowed.\n */\n public actual fun copyTo(\n destination: Memory,\n offset: Long,\n length: Long,\n destinationOffset: Long\n ) {\n copyTo(\n destination,\n offset.toIntOrFail(\"offset\"),\n length.toIntOrFail(\"length\"),\n destinationOffset.toIntOrFail(\"destinationOffset\")\n )\n }\n\n public actual companion object {\n /**\n * Represents an empty memory region\n */\n public actual val Empty: Memory = Memory(DataView(ArrayBuffer(0)))\n }\n}\n\n/**\n * Copies bytes from this memory range from the specified [offset] and [length]\n * to the [destination] at [destinationOffset].\n */\npublic actual fun Memory.copyTo(\n destination: ByteArray,\n offset: Int,\n length: Int,\n destinationOffset: Int\n) {\n @Suppress(\"UnsafeCastFromDynamic\")\n val to: Int8Array = destination.asDynamic()\n\n val from = Int8Array(view.buffer, view.byteOffset + offset, length)\n\n to.set(from, destinationOffset)\n}\n\n/**\n * Copies bytes from this memory range from the specified [offset] and [length]\n * to the [destination] at [destinationOffset].\n */\npublic actual fun Memory.copyTo(\n destination: ByteArray,\n offset: Long,\n length: Int,\n destinationOffset: Int\n) {\n copyTo(destination, offset.toIntOrFail(\"offset\"), length, destinationOffset)\n}\n\n/**\n * Fill memory range starting at the specified [offset] with [value] repeated [count] times.\n */\npublic actual fun Memory.fill(offset: Int, count: Int, value: Byte) {\n for (index in offset until offset + count) {\n this[index] = value\n }\n}\n\n/**\n * Fill memory range starting at the specified [offset] with [value] repeated [count] times.\n */\npublic actual fun Memory.fill(offset: Long, count: Long, value: Byte) {\n fill(offset.toIntOrFail(\"offset\"), count.toIntOrFail(\"count\"), value)\n}\n\n/**\n * Copies bytes from this memory range from the specified [offset] and [length]\n * to the [destination] at [destinationOffset].\n */\npublic fun Memory.copyTo(destination: ArrayBuffer, offset: Int, length: Int, destinationOffset: Int) {\n @Suppress(\"UnsafeCastFromDynamic\")\n val to = Int8Array(destination, destinationOffset, length)\n val from = Int8Array(view.buffer, view.byteOffset + offset, length)\n\n to.set(from, 0)\n}\n\n/**\n * Copies bytes from this memory range from the specified [offset] and [length]\n * to the [destination] at [destinationOffset].\n */\npublic fun Memory.copyTo(destination: ArrayBufferView, offset: Int, length: Int, destinationOffset: Int) {\n @Suppress(\"UnsafeCastFromDynamic\")\n val to = Int8Array(destination.buffer, destinationOffset + destination.byteOffset, length)\n val from = Int8Array(view.buffer, view.byteOffset + offset, length)\n\n to.set(from, 0)\n}\n\n/**\n * Copies bytes from this memory range from the specified [offset] and [length]\n * to the [destination] at [destinationOffset].\n */\npublic fun ArrayBuffer.copyTo(destination: Memory, offset: Int, length: Int, destinationOffset: Int) {\n val from = Int8Array(this, offset, length)\n val to = Int8Array(destination.view.buffer, destination.view.byteOffset + destinationOffset, length)\n\n to.set(from, 0)\n}\n\n/**\n * Copies bytes from this memory range from the specified [offset] and [length]\n * to the [destination] at [destinationOffset].\n */\npublic fun ArrayBufferView.copyTo(destination: Memory, offset: Int, length: Int, destinationOffset: Int) {\n buffer.copyTo(destination, offset + byteOffset, length, destinationOffset)\n}\n\ninternal val Memory.Int8ArrayView: Int8Array get() = Int8Array(view.buffer, view.byteOffset, view.byteLength)\n","package io.ktor.utils.io.core\n\nimport kotlin.contracts.*\n\n@PublishedApi\ninternal inline fun AbstractInput.read(n: Int = 1, block: (Buffer) -> Unit) {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n val buffer = prepareRead(n) ?: prematureEndOfStream(n)\n val positionBefore = buffer.readPosition\n try {\n block(buffer)\n } finally {\n val positionAfter = buffer.readPosition\n if (positionAfter < positionBefore) {\n throw IllegalStateException(\"Buffer's position shouldn't be rewinded\")\n }\n if (positionAfter == buffer.writePosition) {\n ensureNext(buffer)\n } else {\n headPosition = positionAfter\n }\n }\n}\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.Memory\nimport io.ktor.utils.io.bits.get\nimport io.ktor.utils.io.core.internal.*\nimport kotlin.jvm.JvmName\n\n/**\n * Usually shouldn't be implemented directly. Inherit [AbstractInput] instead.\n */\npublic expect interface Input : Closeable {\n @Deprecated(\n \"Not supported anymore. All operations are big endian by default. \" +\n \"Use readXXXLittleEndian or readXXX then X.reverseByteOrder() instead.\",\n level = DeprecationLevel.ERROR\n )\n public var byteOrder: ByteOrder\n\n /**\n * It is `true` when it is known that no more bytes will be available. When it is `false` then this means that\n * it is not known yet or there are available bytes.\n * Please note that `false` value doesn't guarantee that there are available bytes so `readByte()` may fail.\n */\n public val endOfInput: Boolean\n\n /**\n * Read the next upcoming byte\n * @throws EOFException if no more bytes available.\n */\n public fun readByte(): Byte\n\n /*\n * Returns next byte (unsigned) or `-1` if no more bytes available\n */\n public fun tryPeek(): Int\n\n /**\n * Try to copy at least [min] but up to [max] bytes to the specified [destination] buffer from this input\n * skipping [offset] bytes. If there are not enough bytes available to provide [min] bytes after skipping [offset]\n * bytes then it will trigger the underlying source reading first and after that will\n * simply copy available bytes even if EOF encountered so [min] is not a requirement but a desired number of bytes.\n * It is safe to specify [max] greater than the destination free space.\n * `min` shouldn't be bigger than the [destination] free space.\n * This function could trigger the underlying source reading that may lead to blocking I/O.\n * It is allowed to specify too big [offset] so in this case this function will always return `0` after prefetching\n * all underlying bytes but note that it may lead to significant memory consumption.\n * This function usually copy more bytes than [min] (unless `max = min`) but it is not guaranteed.\n * When `0` is returned with `offset = 0` then it makes sense to check [endOfInput].\n *\n * @param destination to write bytes\n * @param offset to skip input\n * @param min bytes to be copied, shouldn't be greater than the buffer free space. Could be `0`.\n * @param max bytes to be copied even if there are more bytes buffered, could be [Int.MAX_VALUE].\n * @return number of bytes copied to the [destination] possibly `0`\n */\n public fun peekTo(\n destination: Memory,\n destinationOffset: Long,\n offset: Long = 0,\n min: Long = 1,\n max: Long = Long.MAX_VALUE\n ): Long\n\n /**\n * Discard at most [n] bytes\n */\n public fun discard(n: Long): Long\n\n /**\n * Close input including the underlying source. All pending bytes will be discarded.\n * It is not recommended to invoke it with read operations in-progress concurrently.\n */\n override fun close()\n\n /**\n * Copy available bytes to the specified [buffer] but keep them available.\n * The underlying implementation could trigger\n * bytes population from the underlying source and block until any bytes available.\n *\n * Very similar to [readAvailable] but don't discard copied bytes.\n *\n * @return number of bytes were copied\n */\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\", \"DEPRECATION\")\n public fun peekTo(buffer: IoBuffer): Int {\n return peekTo(buffer)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readShort(): Short {\n return readShort()\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readInt(): Int {\n return readInt()\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readLong(): Long {\n return readLong()\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readFloat(): Float {\n return readFloat()\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readDouble(): Double {\n return readDouble()\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readFully(dst: ByteArray, offset: Int, length: Int) {\n readFully(dst, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readFully(dst: ShortArray, offset: Int, length: Int) {\n readFully(dst, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readFully(dst: IntArray, offset: Int, length: Int) {\n readFully(dst, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readFully(dst: LongArray, offset: Int, length: Int) {\n readFully(dst, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readFully(dst: FloatArray, offset: Int, length: Int) {\n readFully(dst, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readFully(dst: DoubleArray, offset: Int, length: Int) {\n readFully(dst, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\", \"DEPRECATION\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readFully(dst: IoBuffer, length: Int) {\n readFully(dst, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readAvailable(dst: ByteArray, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readAvailable(dst: ShortArray, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readAvailable(dst: IntArray, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readAvailable(dst: LongArray, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readAvailable(dst: FloatArray, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readAvailable(dst: DoubleArray, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Suppress(\"EXPECTED_DECLARATION_WITH_BODY\", \"DEPRECATION\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readAvailable(dst: IoBuffer, length: Int): Int {\n return readAvailable(dst, length)\n }\n}\n\n/**\n * Discard all remaining bytes.\n * @return number of bytes were discarded\n */\npublic fun Input.discard(): Long {\n return discard(Long.MAX_VALUE)\n}\n\n/**\n * Discard exactly [n] bytes or fail if not enough bytes in the input to be discarded.\n */\npublic fun Input.discardExact(n: Long) {\n val discarded = discard(n)\n if (discarded != n) {\n throw IllegalStateException(\"Only $discarded bytes were discarded of $n requested\")\n }\n}\n\n/**\n * Discard exactly [n] bytes or fail if not enough bytes in the input to be discarded.\n */\npublic fun Input.discardExact(n: Int) {\n discardExact(n.toLong())\n}\n\n/**\n * Invoke [block] function for every chunk until end of input or [block] function return `false`\n * [block] function returns `true` to request more chunks or `false` to stop loop\n *\n * It is not guaranteed that every chunk will have fixed size but it will be never empty.\n * [block] function should never release provided buffer and should not write to it otherwise an undefined behaviour\n * could be observed\n */\n@DangerousInternalIoApi\npublic inline fun Input.takeWhile(block: (Buffer) -> Boolean) {\n var release = true\n var current = prepareReadFirstHead(1) ?: return\n\n try {\n do {\n if (!block(current)) {\n break\n }\n release = false\n val next = prepareReadNextHead(current) ?: break\n current = next\n release = true\n } while (true)\n } finally {\n if (release) {\n completeReadHead(current)\n }\n }\n}\n\n/**\n * Invoke [block] function for every chunk until end of input or [block] function return zero\n * [block] function returns number of bytes required to read next primitive and shouldn't require too many bytes at once\n * otherwise it could fail with an exception.\n * It is not guaranteed that every chunk will have fixed size but it will be always at least requested bytes length.\n * [block] function should never release provided buffer and should not write to it otherwise an undefined behaviour\n * could be observed\n */\n@DangerousInternalIoApi\npublic inline fun Input.takeWhileSize(initialSize: Int = 1, block: (Buffer) -> Int) {\n var release = true\n var current = prepareReadFirstHead(initialSize) ?: return\n var size = initialSize\n\n try {\n do {\n val before = current.readRemaining\n val after: Int\n\n if (before >= size) {\n try {\n size = block(current)\n } finally {\n after = current.readRemaining\n }\n } else {\n after = before\n }\n\n release = false\n\n val next = when {\n after == 0 -> prepareReadNextHead(current)\n after < size || current.endGap < Buffer.ReservedSize -> {\n completeReadHead(current)\n prepareReadFirstHead(size)\n }\n else -> current\n }\n\n if (next == null) {\n break\n }\n\n current = next\n release = true\n } while (size > 0)\n } finally {\n if (release) {\n completeReadHead(current)\n }\n }\n}\n\n@ExperimentalIoApi\npublic fun Input.peekCharUtf8(): Char {\n val rc = tryPeek()\n if (rc and 0x80 == 0) return rc.toChar()\n if (rc == -1) throw EOFException(\"Failed to peek a char: end of input\")\n\n return peekCharUtf8Impl(rc)\n}\n\n/**\n * For every byte from this input invokes [block] function giving it as parameter.\n */\n@ExperimentalIoApi\npublic inline fun Input.forEach(block: (Byte) -> Unit) {\n takeWhile { buffer ->\n buffer.forEach(block)\n true\n }\n}\n\nprivate fun Input.peekCharUtf8Impl(first: Int): Char {\n var rc = '?'\n var found = false\n\n takeWhileSize(byteCountUtf8(first)) {\n it.decodeUTF8 { ch ->\n found = true\n rc = ch\n false\n }\n }\n\n if (!found) {\n throw MalformedUTF8InputException(\"No UTF-8 character found\")\n }\n\n return rc\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\npublic fun Input.readAvailable(dst: IoBuffer, size: Int = dst.writeRemaining): Int = readAvailable(dst, size)\n\n@JvmName(\"readAvailable\")\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\npublic fun Input.readAvailableOld(dst: ByteArray, offset: Int = 0, length: Int = dst.size - offset): Int {\n return readAvailable(dst, offset, length)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n@JvmName(\"readAvailable\")\npublic fun Input.readAvailableOld(dst: ShortArray, offset: Int = 0, length: Int = dst.size - offset): Int =\n readAvailable(dst, offset, length)\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n@JvmName(\"readAvailable\")\npublic fun Input.readAvailableOld(dst: IntArray, offset: Int = 0, length: Int = dst.size - offset): Int =\n readAvailable(dst, offset, length)\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n@JvmName(\"readAvailable\")\npublic fun Input.readAvailableOld(dst: LongArray, offset: Int = 0, length: Int = dst.size - offset): Int =\n readAvailable(dst, offset, length)\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n@JvmName(\"readAvailable\")\npublic fun Input.readAvailableOld(dst: FloatArray, offset: Int = 0, length: Int = dst.size - offset): Int =\n readAvailable(dst, offset, length)\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n@JvmName(\"readAvailable\")\npublic fun Input.readAvailableOld(dst: DoubleArray, offset: Int = 0, length: Int = dst.size - offset): Int =\n readAvailable(dst, offset, length)\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\npublic fun Input.readFully(dst: IoBuffer, size: Int = dst.writeRemaining): Unit = readFully(dst, size)\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n@JvmName(\"readFully\")\npublic fun Input.readFullyOld(dst: ByteArray, offset: Int = 0, length: Int = dst.size - offset): Unit =\n readFully(dst, offset, length)\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n@JvmName(\"readFully\")\npublic fun Input.readFullyOld(dst: ShortArray, offset: Int = 0, length: Int = dst.size - offset): Unit =\n readFully(dst, offset, length)\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n@JvmName(\"readFully\")\npublic fun Input.readFullyOld(dst: IntArray, offset: Int = 0, length: Int = dst.size - offset): Unit =\n readFully(dst, offset, length)\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n@JvmName(\"readFully\")\npublic fun Input.readFullyOld(dst: LongArray, offset: Int = 0, length: Int = dst.size - offset): Unit =\n readFully(dst, offset, length)\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n@JvmName(\"readFully\")\npublic fun Input.readFullyOld(dst: FloatArray, offset: Int = 0, length: Int = dst.size - offset): Unit =\n readFully(dst, offset, length)\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n@JvmName(\"readFully\")\npublic fun Input.readFullyOld(dst: DoubleArray, offset: Int = 0, length: Int = dst.size - offset): Unit =\n readFully(dst, offset, length)\n","package io.ktor.utils.io.core.internal\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.*\n\ninternal inline fun Buffer.decodeASCII(consumer: (Char) -> Boolean): Boolean {\n read { memory, start, endExclusive ->\n for (index in start until endExclusive) {\n val codepoint = memory[index].toInt() and 0xff\n if (codepoint and 0x80 == 0x80 || !consumer(codepoint.toChar())) {\n discardExact(index - start)\n return false\n }\n }\n\n endExclusive - start\n }\n\n return true\n}\n\n@DangerousInternalIoApi\npublic suspend fun decodeUTF8LineLoopSuspend(\n out: Appendable,\n limit: Int,\n nextChunk: suspend (Int) -> AbstractInput?\n): Boolean {\n var decoded = 0\n var size = 1\n var cr = false\n var end = false\n\n while (!end && size != 0) {\n val chunk = nextChunk(size) ?: break\n chunk.takeWhileSize { buffer ->\n var skip = 0\n size = buffer.decodeUTF8 { ch ->\n when (ch) {\n '\\r' -> {\n if (cr) {\n end = true\n return@decodeUTF8 false\n }\n cr = true\n true\n }\n '\\n' -> {\n end = true\n skip = 1\n false\n }\n else -> {\n if (cr) {\n end = true\n return@decodeUTF8 false\n }\n\n if (decoded == limit) {\n throw BufferLimitExceededException(\"Too many characters in line: limit $limit exceeded\")\n }\n decoded++\n out.append(ch)\n true\n }\n }\n }\n\n if (skip > 0) {\n buffer.discardExact(skip)\n }\n\n size = if (end) 0 else size.coerceAtLeast(1)\n\n size\n }\n }\n\n if (size > 1) prematureEndOfStreamUtf(size)\n if (cr) {\n end = true\n }\n\n return decoded > 0 || end\n}\n\nprivate fun prematureEndOfStreamUtf(size: Int): Nothing =\n throw EOFException(\"Premature end of stream: expected $size bytes to decode UTF-8 char\")\n\n@DangerousInternalIoApi\ninternal fun byteCountUtf8(firstByte: Int): Int {\n var byteCount = 0\n var mask = 0x80\n var value = firstByte\n\n for (i in 1..6) {\n if (value and mask != 0) {\n value = value and mask.inv()\n mask = mask shr 1\n byteCount++\n } else {\n break\n }\n }\n\n return byteCount\n}\n\n@Suppress(\"DEPRECATION\")\n@Deprecated(\"Binary compatibility\", level = DeprecationLevel.HIDDEN)\npublic inline fun IoBuffer.decodeUTF8(consumer: (Char) -> Boolean): Int {\n return (this as Buffer).decodeUTF8(consumer)\n}\n\n/**\n * Decodes all the bytes to utf8 applying every character on [consumer] until or consumer return `false`.\n * If a consumer returned false then a character will be pushed back (including all surrogates will be pushed back as well)\n * and [decodeUTF8] returns -1\n * @return number of bytes required to decode incomplete utf8 character or 0 if all bytes were processed\n * or -1 if consumer rejected loop\n */\n@DangerousInternalIoApi\npublic inline fun Buffer.decodeUTF8(consumer: (Char) -> Boolean): Int {\n var byteCount = 0\n var value = 0\n var lastByteCount = 0\n\n read { memory, start, endExclusive ->\n for (index in start until endExclusive) {\n val v = memory[index].toInt() and 0xff\n when {\n v and 0x80 == 0 -> {\n if (byteCount != 0) malformedByteCount(byteCount)\n if (!consumer(v.toChar())) {\n discardExact(index - start)\n return -1\n }\n }\n byteCount == 0 -> {\n // first unicode byte\n\n var mask = 0x80\n value = v\n\n for (i in 1..6) { // TODO do we support 6 bytes unicode?\n if (value and mask != 0) {\n value = value and mask.inv()\n mask = mask shr 1\n byteCount++\n } else {\n break\n }\n }\n\n lastByteCount = byteCount\n byteCount--\n\n if (lastByteCount > endExclusive - index) {\n discardExact(index - start)\n return lastByteCount\n }\n }\n else -> {\n // trailing unicode byte\n value = (value shl 6) or (v and 0x7f)\n byteCount--\n\n if (byteCount == 0) {\n if (isBmpCodePoint(value)) {\n if (!consumer(value.toChar())) {\n discardExact(index - start - lastByteCount + 1)\n return -1\n }\n } else if (!isValidCodePoint(value)) {\n malformedCodePoint(value)\n } else {\n if (!consumer(highSurrogate(value).toChar()) ||\n !consumer(lowSurrogate(value).toChar())\n ) {\n discardExact(index - start - lastByteCount + 1)\n return -1\n }\n }\n\n value = 0\n }\n }\n }\n }\n\n endExclusive - start\n }\n\n return 0\n}\n\n@Suppress(\"RedundantModalityModifier\")\ninternal class CharArraySequence(\n private val array: CharArray,\n private val offset: Int,\n final override val length: Int\n) : CharSequence {\n final override fun get(index: Int): Char {\n if (index >= length) {\n indexOutOfBounds(index)\n }\n return array[index + offset]\n }\n\n final override fun subSequence(startIndex: Int, endIndex: Int): CharSequence {\n require(startIndex >= 0) { \"startIndex shouldn't be negative: $startIndex\" }\n require(startIndex <= length) { \"startIndex is too large: $startIndex > $length\" }\n require(startIndex + endIndex <= length) { \"endIndex is too large: $endIndex > $length\" }\n require(endIndex >= startIndex) { \"endIndex should be greater or equal to startIndex: $startIndex > $endIndex\" }\n\n return CharArraySequence(array, offset + startIndex, endIndex - startIndex)\n }\n\n private fun indexOutOfBounds(index: Int): Nothing {\n throw IndexOutOfBoundsException(\"String index out of bounds: $index > $length\")\n }\n}\n\n@Suppress(\"NOTHING_TO_INLINE\", \"EXPERIMENTAL_FEATURE_WARNING\")\ninternal inline class EncodeResult(val value: Int) {\n constructor(characters: UShort, bytes: UShort) : this(characters.toInt() shl 16 or bytes.toInt())\n\n inline val characters: UShort get() = value.highShort.toUShort()\n inline val bytes: UShort get() = value.lowShort.toUShort()\n\n inline operator fun component1(): UShort = characters\n inline operator fun component2(): UShort = bytes\n}\n\ninternal fun Memory.encodeUTF8(text: CharSequence, from: Int, to: Int, dstOffset: Int, dstLimit: Int): EncodeResult {\n // encode single-byte characters\n val lastCharIndex = minOf(to, from + UShort.MAX_VALUE.toInt())\n val resultLimit = dstLimit.coerceAtMost(UShort.MAX_VALUE.toInt())\n var resultPosition = dstOffset\n var index = from\n\n do {\n if (resultPosition >= resultLimit || index >= lastCharIndex) {\n return EncodeResult((index - from).toUShort(), (resultPosition - dstOffset).toUShort())\n }\n\n val character = text[index++].toInt() and 0xffff\n if (character and 0xff80 == 0) {\n storeAt(resultPosition++, character.toByte())\n } else {\n break\n }\n } while (true)\n\n index--\n return encodeUTF8Stage1(text, index, lastCharIndex, from, resultPosition, resultLimit, dstOffset)\n}\n\n/**\n * Encode UTF-8 multibytes characters when we for sure have enough free space\n */\nprivate fun Memory.encodeUTF8Stage1(\n text: CharSequence,\n index1: Int,\n lastCharIndex: Int,\n from: Int,\n resultPosition1: Int,\n resultLimit: Int,\n dstOffset: Int\n): EncodeResult {\n var index = index1\n var resultPosition: Int = resultPosition1\n val stage1Limit = resultLimit - 3\n\n do {\n val freeSpace = stage1Limit - resultPosition\n if (freeSpace <= 0 || index >= lastCharIndex) {\n break\n }\n\n val character = text[index++]\n val codepoint = when {\n character.isHighSurrogate() -> {\n if (index == lastCharIndex || !text[index].isLowSurrogate()) {\n 63\n } else {\n codePoint(character, text[index++])\n }\n }\n else -> character.toInt()\n }\n val size = putUtf8Char(resultPosition, codepoint)\n\n resultPosition += size\n } while (true)\n\n if (resultPosition == stage1Limit) {\n return encodeUTF8Stage2(text, index, lastCharIndex, from, resultPosition, resultLimit, dstOffset)\n }\n\n return EncodeResult((index - from).toUShort(), (resultPosition - dstOffset).toUShort())\n}\n\nprivate fun Memory.encodeUTF8Stage2(\n text: CharSequence,\n index1: Int,\n lastCharIndex: Int,\n from: Int,\n resultPosition1: Int,\n resultLimit: Int,\n dstOffset: Int\n): EncodeResult {\n var index = index1\n var resultPosition: Int = resultPosition1\n\n do {\n val freeSpace = resultLimit - resultPosition\n if (freeSpace <= 0 || index >= lastCharIndex) {\n break\n }\n\n val character = text[index++]\n val codepoint = when {\n !character.isHighSurrogate() -> character.toInt()\n else -> {\n if (index == lastCharIndex || !text[index].isLowSurrogate()) {\n 63\n } else {\n codePoint(character, text[index++])\n }\n }\n }\n if (charactersSize(codepoint) > freeSpace) {\n index--\n break\n }\n val size = putUtf8Char(resultPosition, codepoint)\n resultPosition += size\n } while (true)\n\n return EncodeResult((index - from).toUShort(), (resultPosition - dstOffset).toUShort())\n}\n\n@Suppress(\"NOTHING_TO_INLINE\")\nprivate inline fun charactersSize(v: Int) = when {\n v in 1..0x7f -> 1\n v in 0x80..0x7ff -> 2\n v in 0x800..0xffff -> 3\n v in 0x10000..0x10ffff -> 4\n else -> malformedCodePoint(v)\n}\n\n// TODO optimize it, now we are simply do naive encoding here\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal inline fun Memory.putUtf8Char(offset: Int, v: Int): Int = when {\n v in 0..0x7f -> {\n storeAt(offset, v.toByte())\n 1\n }\n v in 0x80..0x7ff -> {\n this[offset] = (0xc0 or ((v shr 6) and 0x1f)).toByte()\n this[offset + 1] = (0x80 or (v and 0x3f)).toByte()\n 2\n }\n v in 0x800..0xffff -> {\n this[offset] = (0xe0 or ((v shr 12) and 0x0f)).toByte()\n this[offset + 1] = (0x80 or ((v shr 6) and 0x3f)).toByte()\n this[offset + 2] = (0x80 or (v and 0x3f)).toByte()\n 3\n }\n v in 0x10000..0x10ffff -> {\n this[offset] = (0xf0 or ((v shr 18) and 0x07)).toByte() // 3 bits\n this[offset + 1] = (0x80 or ((v shr 12) and 0x3f)).toByte() // 6 bits\n this[offset + 2] = (0x80 or ((v shr 6) and 0x3f)).toByte() // 6 bits\n this[offset + 3] = (0x80 or (v and 0x3f)).toByte() // 6 bits\n 4\n }\n else -> malformedCodePoint(v)\n}\n\n@PublishedApi\ninternal fun malformedByteCount(byteCount: Int): Nothing =\n throw MalformedUTF8InputException(\"Expected $byteCount more character bytes\")\n\n@PublishedApi\ninternal fun malformedCodePoint(value: Int): Nothing =\n throw IllegalArgumentException(\"Malformed code-point $value found\")\n\nprivate const val MaxCodePoint = 0x10ffff\nprivate const val MinLowSurrogate = 0xdc00\nprivate const val MinHighSurrogate = 0xd800\nprivate const val MinSupplementary = 0x10000\nprivate const val HighSurrogateMagic = MinHighSurrogate - (MinSupplementary ushr 10)\n\n@PublishedApi\ninternal fun isBmpCodePoint(cp: Int): Boolean = cp ushr 16 == 0\n\n@PublishedApi\ninternal fun isValidCodePoint(codePoint: Int): Boolean = codePoint <= MaxCodePoint\n\n@PublishedApi\ninternal fun lowSurrogate(cp: Int): Int = (cp and 0x3ff) + MinLowSurrogate\n\n@PublishedApi\ninternal fun highSurrogate(cp: Int): Int = (cp ushr 10) + HighSurrogateMagic\n\ninternal fun codePoint(high: Char, low: Char): Int {\n// check(high.isHighSurrogate())\n// check(low.isLowSurrogate())\n\n val highValue = high.toInt() - HighSurrogateMagic\n val lowValue = low.toInt() - MinLowSurrogate\n\n return highValue shl 10 or lowValue\n}\n\npublic class MalformedUTF8InputException(message: String) : Exception(message)\n","@file:Suppress(\"LocalVariableName\", \"RedundantModalityModifier\")\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.internal.*\nimport io.ktor.utils.io.pool.*\n\n/**\n * The default [Output] implementation.\n * @see flush\n * @see closeDestination\n */\n@ExperimentalIoApi\npublic abstract class AbstractOutput\ninternal constructor(\n private val headerSizeHint: Int,\n protected val pool: ObjectPool\n) : Appendable, Output {\n public constructor(pool: ObjectPool) : this(0, pool)\n\n public constructor() : this(ChunkBuffer.Pool)\n\n /**\n * An implementation should write [source] to the destination exactly [length] bytes.\n * It should never capture the [source] instance\n * longer than this method execution since it may be disposed after return.\n */\n protected abstract fun flush(source: Memory, offset: Int, length: Int)\n\n /**\n * An implementation should only close the destination.\n */\n protected abstract fun closeDestination()\n\n private val state = AbstractOutputSharedState()\n\n private var _head: ChunkBuffer?\n get() = state.head\n set(value) {\n state.head = value\n }\n\n private var _tail: ChunkBuffer?\n get() = state.tail\n set(value) {\n state.tail = value\n }\n\n internal val head: ChunkBuffer\n get() = _head ?: ChunkBuffer.Empty\n\n @PublishedApi\n @Deprecated(\"Will be removed in future releases.\", level = DeprecationLevel.HIDDEN)\n internal val tail: ChunkBuffer\n get() {\n return prepareWriteHead(1)\n }\n\n @Deprecated(\"Will be removed. Override flush(buffer) properly.\", level = DeprecationLevel.ERROR)\n protected var currentTail: ChunkBuffer\n get() = prepareWriteHead(1)\n set(newValue) {\n appendChain(newValue)\n }\n\n internal var tailMemory: Memory\n get() = state.tailMemory\n set(value) {\n state.tailMemory = value\n }\n\n internal var tailPosition\n get() = state.tailPosition\n set(value) {\n state.tailPosition = value\n }\n\n internal var tailEndExclusive\n get() = state.tailEndExclusive\n private set(value) {\n state.tailEndExclusive = value\n }\n\n private var tailInitialPosition\n get() = state.tailInitialPosition\n set(value) {\n state.tailInitialPosition = value\n }\n\n /**\n * Number of bytes buffered in the chain except the tail chunk\n */\n private var chainedSize: Int\n get() = state.chainedSize\n set(value) {\n state.chainedSize = value\n }\n\n internal inline val tailRemaining: Int get() = tailEndExclusive - tailPosition\n\n /**\n * Number of bytes currently buffered (pending).\n */\n protected final var _size: Int\n get() = chainedSize + (tailPosition - tailInitialPosition)\n @Deprecated(\"There is no need to update/reset this value anymore.\")\n set(_) {\n }\n\n /**\n * Byte order (Endianness) to be used by future write functions calls on this builder instance. Doesn't affect any\n * previously written values.\n * @default [ByteOrder.BIG_ENDIAN]\n */\n @Deprecated(\n \"This is no longer supported. All operations are big endian by default. Use readXXXLittleEndian \" +\n \"to read primitives in little endian\",\n level = DeprecationLevel.ERROR\n )\n final override var byteOrder: ByteOrder = ByteOrder.BIG_ENDIAN\n set(value) {\n field = value\n if (value != ByteOrder.BIG_ENDIAN) {\n throw IllegalArgumentException(\n \"Only BIG_ENDIAN is supported. Use corresponding functions to read/write\" +\n \"in the little endian\"\n )\n }\n }\n\n final override fun flush() {\n flushChain()\n }\n\n private fun flushChain() {\n val oldTail = stealAll() ?: return\n\n try {\n oldTail.forEachChunk { chunk ->\n flush(chunk.memory, chunk.readPosition, chunk.readRemaining)\n }\n } finally {\n oldTail.releaseAll(pool)\n }\n }\n\n /**\n * Detach all chunks and cleanup all internal state so builder could be reusable again\n * @return a chain of buffer views or `null` of it is empty\n */\n internal fun stealAll(): ChunkBuffer? {\n val head = this._head ?: return null\n\n _tail?.commitWrittenUntilIndex(tailPosition)\n\n this._head = null\n this._tail = null\n tailPosition = 0\n tailEndExclusive = 0\n tailInitialPosition = 0\n chainedSize = 0\n tailMemory = Memory.Empty\n\n return head\n }\n\n internal fun afterBytesStolen() {\n val head = head\n if (head !== ChunkBuffer.Empty) {\n check(head.next == null)\n head.resetForWrite()\n head.reserveStartGap(headerSizeHint)\n head.reserveEndGap(Buffer.ReservedSize)\n tailPosition = head.writePosition\n tailInitialPosition = tailPosition\n tailEndExclusive = head.limit\n }\n }\n\n internal final fun appendSingleChunk(buffer: ChunkBuffer) {\n check(buffer.next == null) { \"It should be a single buffer chunk.\" }\n appendChainImpl(buffer, buffer, 0)\n }\n\n internal final fun appendChain(head: ChunkBuffer) {\n val tail = head.findTail()\n val chainedSizeDelta = (head.remainingAll() - tail.readRemaining).toIntOrFail(\"total size increase\")\n appendChainImpl(head, tail, chainedSizeDelta)\n }\n\n private fun appendNewChunk(): ChunkBuffer {\n val new = pool.borrow()\n new.reserveEndGap(Buffer.ReservedSize)\n\n appendSingleChunk(new)\n\n return new\n }\n\n private final fun appendChainImpl(head: ChunkBuffer, newTail: ChunkBuffer, chainedSizeDelta: Int) {\n val _tail = _tail\n if (_tail == null) {\n _head = head\n chainedSize = 0\n } else {\n _tail.next = head\n val tailPosition = tailPosition\n _tail.commitWrittenUntilIndex(tailPosition)\n chainedSize += tailPosition - tailInitialPosition\n }\n\n this._tail = newTail\n chainedSize += chainedSizeDelta\n tailMemory = newTail.memory\n tailPosition = newTail.writePosition\n tailInitialPosition = newTail.readPosition\n tailEndExclusive = newTail.limit\n }\n\n final override fun writeByte(v: Byte) {\n val index = tailPosition\n if (index < tailEndExclusive) {\n tailPosition = index + 1\n tailMemory[index] = v\n return\n }\n\n return writeByteFallback(v)\n }\n\n private fun writeByteFallback(v: Byte) {\n appendNewChunk().writeByte(v)\n tailPosition++\n }\n\n /**\n * Should flush and close the destination\n */\n final override fun close() {\n try {\n flush()\n } finally {\n closeDestination() // TODO check what should be done here\n }\n }\n\n /**\n * Append single UTF-8 character\n */\n override fun append(c: Char): AbstractOutput {\n val tailPosition = tailPosition\n if (tailEndExclusive - tailPosition >= 3) {\n val size = tailMemory.putUtf8Char(tailPosition, c.toInt())\n this.tailPosition = tailPosition + size\n return this\n }\n\n appendCharFallback(c)\n return this\n }\n\n private fun appendCharFallback(c: Char) {\n write(3) { buffer ->\n val size = buffer.memory.putUtf8Char(buffer.writePosition, c.toInt())\n buffer.commitWritten(size)\n size\n }\n }\n\n override fun append(csq: CharSequence?): AbstractOutput {\n if (csq == null) {\n append(\"null\", 0, 4)\n } else {\n append(csq, 0, csq.length)\n }\n return this\n }\n\n override fun append(csq: CharSequence?, start: Int, end: Int): AbstractOutput {\n if (csq == null) {\n return append(\"null\", start, end)\n }\n\n writeText(csq, start, end, Charsets.UTF_8)\n\n return this\n }\n\n /**\n * Writes another packet to the end. Please note that the instance [p] gets consumed so you don't need to release it\n */\n public fun writePacket(p: ByteReadPacket) {\n val foreignStolen = p.stealAll()\n if (foreignStolen == null) {\n p.release()\n return\n }\n\n val _tail = _tail\n if (_tail == null) {\n appendChain(foreignStolen)\n return\n }\n\n writePacketMerging(_tail, foreignStolen, p.pool)\n }\n\n /**\n * Write chunk buffer to current [Output]. Assuming that chunk buffer is from current pool.\n */\n internal fun writeChunkBuffer(chunkBuffer: ChunkBuffer) {\n val _tail = _tail\n if (_tail == null) {\n appendChain(chunkBuffer)\n return\n }\n\n writePacketMerging(_tail, chunkBuffer, pool)\n }\n\n private fun writePacketMerging(tail: ChunkBuffer, foreignStolen: ChunkBuffer, pool: ObjectPool) {\n tail.commitWrittenUntilIndex(tailPosition)\n\n val lastSize = tail.readRemaining\n val nextSize = foreignStolen.readRemaining\n\n // at first we evaluate if it is reasonable to merge chunks\n val maxCopySize = PACKET_MAX_COPY_SIZE\n val appendSize = if (nextSize < maxCopySize && nextSize <= (tail.endGap + tail.writeRemaining)) {\n nextSize\n } else -1\n\n val prependSize =\n if (lastSize < maxCopySize && lastSize <= foreignStolen.startGap && foreignStolen.isExclusivelyOwned()) {\n lastSize\n } else -1\n\n if (appendSize == -1 && prependSize == -1) {\n // simply enqueue if there is no reason to merge\n appendChain(foreignStolen)\n } else if (prependSize == -1 || appendSize <= prependSize) {\n // do append\n tail.writeBufferAppend(foreignStolen, tail.writeRemaining + tail.endGap)\n afterHeadWrite()\n foreignStolen.cleanNext()?.let { next ->\n appendChain(next)\n }\n\n foreignStolen.release(pool)\n } else if (appendSize == -1 || prependSize < appendSize) {\n writePacketSlowPrepend(foreignStolen, tail)\n } else {\n throw IllegalStateException(\"prep = $prependSize, app = $appendSize\")\n }\n }\n\n /**\n * Do prepend current [tail] to the beginning of [foreignStolen].\n */\n private fun writePacketSlowPrepend(foreignStolen: ChunkBuffer, tail: ChunkBuffer) {\n foreignStolen.writeBufferPrepend(tail)\n\n val _head = _head ?: error(\"head should't be null since it is already handled in the fast-path\")\n if (_head === tail) {\n this._head = foreignStolen\n } else {\n // we need to fix next reference of the previous chunk before the tail\n // we have to traverse from the beginning to find it\n var pre = _head\n while (true) {\n val next = pre.next!!\n if (next === tail) break\n pre = next\n }\n\n pre.next = foreignStolen\n }\n\n tail.release(pool)\n\n this._tail = foreignStolen.findTail()\n }\n\n /**\n * Write exact [n] bytes from packet to the builder\n */\n public fun writePacket(p: ByteReadPacket, n: Int) {\n var remaining = n\n\n while (remaining > 0) {\n val headRemaining = p.headRemaining\n if (headRemaining <= remaining) {\n remaining -= headRemaining\n appendSingleChunk(p.steal() ?: throw EOFException(\"Unexpected end of packet\"))\n } else {\n p.read { view ->\n writeFully(view, remaining)\n }\n break\n }\n }\n }\n\n /**\n * Write exact [n] bytes from packet to the builder\n */\n public fun writePacket(p: ByteReadPacket, n: Long) {\n var remaining = n\n\n while (remaining > 0L) {\n val headRemaining = p.headRemaining.toLong()\n if (headRemaining <= remaining) {\n remaining -= headRemaining\n appendSingleChunk(p.steal() ?: throw EOFException(\"Unexpected end of packet\"))\n } else {\n p.read { view ->\n writeFully(view, remaining.toInt())\n }\n break\n }\n }\n }\n\n override fun append(csq: CharArray, start: Int, end: Int): Appendable {\n writeText(csq, start, end, Charsets.UTF_8)\n return this\n }\n\n private inline fun appendCharsTemplate(\n start: Int,\n end: Int,\n block: Buffer.(index: Int) -> Int\n ): Int {\n var idx = start\n if (idx >= end) return idx\n idx = prepareWriteHead(1).block(idx)\n afterHeadWrite()\n\n while (idx < end) {\n idx = appendNewChunk().block(idx)\n afterHeadWrite()\n }\n\n return idx\n }\n\n @Deprecated(\"Use writeText instead\", ReplaceWith(\"writeText(s)\"))\n public fun writeStringUtf8(s: String) {\n writeText(s)\n }\n\n @Deprecated(\"Use writeText instead\", ReplaceWith(\"this.writeText(cs)\"))\n public fun writeStringUtf8(cs: CharSequence) {\n writeText(cs)\n }\n\n @Suppress(\"NOTHING_TO_INLINE\")\n private inline fun Buffer.putUtf8Char(v: Int) = when {\n v in 1..0x7f -> {\n writeByte(v.toByte())\n 1\n }\n v > 0x7ff -> {\n writeExact(3, \"3 bytes character\") { memory, offset ->\n memory[offset] = (0xe0 or ((v shr 12) and 0x0f)).toByte()\n memory[offset + 1] = (0x80 or ((v shr 6) and 0x3f)).toByte()\n memory[offset + 2] = (0x80 or (v and 0x3f)).toByte()\n }\n 3\n }\n else -> {\n writeExact(2, \"2 bytes character\") { memory, offset ->\n memory[offset] = (0xc0 or ((v shr 6) and 0x1f)).toByte()\n memory[offset + 1] = (0x80 or (v and 0x3f)).toByte()\n }\n 2\n }\n }\n\n /**\n * Release any resources that the builder holds. Builder shouldn't be used after release\n */\n public final fun release() {\n close()\n }\n\n @DangerousInternalIoApi\n public fun prepareWriteHead(n: Int): ChunkBuffer {\n if (tailRemaining >= n) {\n _tail?.let {\n it.commitWrittenUntilIndex(tailPosition)\n return it\n }\n }\n return appendNewChunk()\n }\n\n @DangerousInternalIoApi\n public fun afterHeadWrite() {\n _tail?.let { tailPosition = it.writePosition }\n }\n\n @PublishedApi\n internal inline fun write(size: Int, block: (Buffer) -> Int): Int {\n val buffer = prepareWriteHead(size)\n try {\n val result = block(buffer)\n check(result >= 0) { \"The returned value shouldn't be negative\" }\n\n return result\n } finally {\n afterHeadWrite()\n }\n }\n\n @PublishedApi\n @Deprecated(\"There is no need to do that anymore.\", level = DeprecationLevel.HIDDEN)\n internal fun addSize(n: Int) {\n check(n >= 0) { \"It should be non-negative size increment: $n\" }\n check(n <= tailRemaining) { \"Unable to mark more bytes than available: $n > $tailRemaining\" }\n\n // For binary compatibility we need to update pointers\n tailPosition += n\n }\n\n @Suppress(\"DEPRECATION\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n internal open fun last(buffer: IoBuffer) {\n appendSingleChunk(buffer as ChunkBuffer)\n }\n\n @Suppress(\"DEPRECATION\")\n @Deprecated(\n \"Use appendNewChunk instead\",\n replaceWith = ReplaceWith(\"appendNewChunk()\"),\n level = DeprecationLevel.HIDDEN\n )\n public fun appendNewBuffer(): IoBuffer = appendNewChunk() as IoBuffer\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public open fun reset() {\n }\n}\n","@file:Suppress(\"NOTHING_TO_INLINE\")\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.internal.*\nimport kotlin.contracts.*\n\n/**\n * For every byte from this buffer invokes [block] function giving it as parameter.\n */\n@ExperimentalIoApi\npublic inline fun Buffer.forEach(block: (Byte) -> Unit) {\n read { memory, start, endExclusive ->\n for (index in start until endExclusive) {\n block(memory[index])\n }\n endExclusive - start\n }\n}\n\n/**\n * Read an unsigned byte or fail if no bytes available for reading.\n */\npublic fun Buffer.readUByte(): UByte = readByte().toUByte()\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Input instead.\")\npublic inline fun IoBuffer.readUByte(): UByte = (this as Buffer).readUByte()\n\n/**\n * Write an unsigned byte or fail if not enough space available for writing.\n */\npublic fun Buffer.writeUByte(value: UByte) {\n writeByte(value.toByte())\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Output instead.\")\npublic fun IoBuffer.writeUByte(value: UByte) {\n (this as Buffer).writeUByte(value)\n}\n\n/**\n * Read a short integer or fail if no bytes available for reading.\n * The numeric value is decoded in the network order (Big Endian).\n */\npublic fun Buffer.readShort(): Short = readExact(2, \"short integer\") { memory, offset ->\n memory.loadShortAt(offset)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Input instead.\")\npublic inline fun IoBuffer.readShort(): Short = (this as Buffer).readShort()\n\n/**\n * Read an unsigned short integer or fail if not enough bytes available for reading.\n * The numeric value is decoded in the network order (Big Endian).\n */\npublic fun Buffer.readUShort(): UShort = readExact(2, \"short unsigned integer\") { memory, offset ->\n memory.loadUShortAt(offset)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Input instead.\")\npublic inline fun IoBuffer.readUShort(): UShort = (this as Buffer).readUShort()\n\n/**\n * Read an integer or fail if not enough bytes available for reading.\n * The numeric value is decoded in the network order (Big Endian).\n */\npublic fun Buffer.readInt(): Int = readExact(4, \"regular integer\") { memory, offset ->\n memory.loadIntAt(offset)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Input instead.\")\npublic inline fun IoBuffer.readInt(): Int = (this as Buffer).readInt()\n\n/**\n * Read an unsigned integer or fail if not enough bytes available for reading.\n * The numeric value is decoded in the network order (Big Endian).\n */\npublic fun Buffer.readUInt(): UInt = readExact(4, \"regular unsigned integer\") { memory, offset ->\n memory.loadUIntAt(offset)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Input instead.\")\npublic inline fun IoBuffer.readUInt(): UInt = (this as Buffer).readUInt()\n\n/**\n * Read a long integer or fail if not enough bytes available for reading.\n * The numeric value is decoded in the network order (Big Endian).\n */\npublic fun Buffer.readLong(): Long = readExact(8, \"long integer\") { memory, offset ->\n memory.loadLongAt(offset)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Input instead.\")\npublic inline fun IoBuffer.readLong(): Long = (this as Buffer).readLong()\n\n/**\n * Read an unsigned long integer or fail if not enough bytes available for reading.\n * The numeric value is decoded in the network order (Big Endian).\n */\npublic fun Buffer.readULong(): ULong = readExact(8, \"long unsigned integer\") { memory, offset ->\n memory.loadULongAt(offset)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Input instead.\")\npublic inline fun IoBuffer.readULong(): ULong = (this as Buffer).readULong()\n\n/**\n * Read a floating point number or fail if not enough bytes available for reading.\n * The numeric value is decoded in the network order (Big Endian).\n */\npublic fun Buffer.readFloat(): Float = readExact(4, \"floating point number\") { memory, offset ->\n memory.loadFloatAt(offset)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Input instead.\")\npublic inline fun IoBuffer.readFloat(): Float = (this as Buffer).readFloat()\n\n/**\n * Read a floating point number or fail if not enough bytes available for reading.\n * The numeric value is decoded in the network order (Big Endian).\n */\npublic fun Buffer.readDouble(): Double = readExact(8, \"long floating point number\") { memory, offset ->\n memory.loadDoubleAt(offset)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Input instead.\")\npublic inline fun IoBuffer.readDouble(): Double = (this as Buffer).readDouble()\n\n/**\n * Write a short integer or fail if not enough space available for writing.\n * The numeric value is encoded in the network order (Big Endian).\n */\npublic fun Buffer.writeShort(value: Short): Unit = writeExact(2, \"short integer\") { memory, offset ->\n memory.storeShortAt(offset, value)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Output instead.\")\npublic inline fun IoBuffer.writeShort(value: Short): Unit = (this as Buffer).writeShort(value)\n\n/**\n * Write an unsigned short integer or fail if not enough space available for writing.\n * The numeric value is encoded in the network order (Big Endian).\n */\npublic fun Buffer.writeUShort(value: UShort): Unit =\n writeExact(2, \"short unsigned integer\") { memory, offset ->\n memory.storeUShortAt(offset, value)\n }\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Output instead.\")\npublic inline fun IoBuffer.writeUShort(value: UShort): Unit = (this as Buffer).writeUShort(value)\n\n/**\n * Write an integer or fail if not enough space available for writing.\n * The numeric value is encoded in the network order (Big Endian).\n */\npublic fun Buffer.writeInt(value: Int): Unit = writeExact(4, \"regular integer\") { memory, offset ->\n memory.storeIntAt(offset, value)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Output instead.\")\npublic inline fun IoBuffer.writeInt(value: Int): Unit = (this as Buffer).writeInt(value)\n\n/**\n * Write an unsigned integer or fail if not enough space available for writing.\n * The numeric value is encoded in the network order (Big Endian).\n */\npublic fun Buffer.writeUInt(value: UInt): Unit = writeExact(4, \"regular unsigned integer\") { memory, offset ->\n memory.storeUIntAt(offset, value)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Output instead.\")\npublic inline fun IoBuffer.writeUInt(value: UInt): Unit = (this as Buffer).writeUInt(value)\n\n/**\n * Write a long integer or fail if not enough space available for writing.\n * The numeric value is encoded in the network order (Big Endian).\n */\npublic fun Buffer.writeLong(value: Long): Unit = writeExact(8, \"long integer\") { memory, offset ->\n memory.storeLongAt(offset, value)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Output instead.\")\npublic inline fun IoBuffer.writeLong(value: Long): Unit = (this as Buffer).writeLong(value)\n\n/**\n * Write an unsigned long integer or fail if not enough space available for writing.\n * The numeric value is encoded in the network order (Big Endian).\n */\npublic fun Buffer.writeULong(value: ULong): Unit = writeExact(8, \"long unsigned integer\") { memory, offset ->\n memory.storeULongAt(offset, value)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Output instead.\")\npublic inline fun IoBuffer.writeULong(value: ULong): Unit = (this as Buffer).writeULong(value)\n\n/**\n * Write a floating point number or fail if not enough space available for writing.\n * The numeric value is encoded in the network order (Big Endian).\n */\npublic fun Buffer.writeFloat(value: Float): Unit = writeExact(4, \"floating point number\") { memory, offset ->\n memory.storeFloatAt(offset, value)\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Output instead.\")\npublic inline fun IoBuffer.writeFloat(value: Float): Unit = (this as Buffer).writeFloat(value)\n\n/**\n * Write a floating point number or fail if not enough space available for writing.\n * The numeric value is encoded in the network order (Big Endian).\n */\npublic fun Buffer.writeDouble(value: Double): Unit =\n writeExact(8, \"long floating point number\") { memory, offset ->\n memory.storeDoubleAt(offset, value)\n }\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Output instead.\")\npublic inline fun IoBuffer.writeDouble(value: Double): Unit = (this as Buffer).writeDouble(value)\n\n/**\n * Read from this buffer to the [destination] array to [offset] and [length] bytes.\n */\npublic fun Buffer.readFully(destination: ByteArray, offset: Int = 0, length: Int = destination.size - offset) {\n readExact(length, \"byte array\") { memory, srcOffset ->\n memory.loadByteArray(srcOffset, destination, offset, length)\n }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Input instead.\")\npublic inline fun IoBuffer.readFully(destination: ByteArray, offset: Int = 0, length: Int = destination.size - offset) {\n (this as Buffer).readFully(destination, offset, length)\n}\n\n/**\n * Read from this buffer to the [destination] array to [offset] and [length] bytes.\n */\npublic fun Buffer.readFully(destination: UByteArray, offset: Int = 0, length: Int = destination.size - offset) {\n readFully(destination.asByteArray(), offset, length)\n}\n\n/**\n * Read available for read bytes to the [destination] array range starting at array [offset] and [length] bytes.\n * If less than [length] bytes available then less bytes will be copied and the corresponding number\n * will be returned as result.\n * @return number of bytes copied to the [destination] or `-1` if the buffer is empty\n */\npublic fun Buffer.readAvailable(destination: ByteArray, offset: Int = 0, length: Int = destination.size - offset): Int {\n require(offset >= 0) { \"offset shouldn't be negative: $offset\" }\n require(length >= 0) { \"length shouldn't be negative: $length\" }\n require(offset + length <= destination.size) {\n \"offset + length should be less than the destination size: $offset\" +\n \" + $length > ${destination.size}\"\n }\n\n if (!canRead()) return -1\n val toBeRead = minOf(length, readRemaining)\n readFully(destination, offset, toBeRead)\n return toBeRead\n}\n\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Input instead.\")\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\npublic inline fun IoBuffer.readAvailable(\n destination: ByteArray,\n offset: Int = 0,\n length: Int = destination.size - offset\n): Int {\n return (this as Buffer).readAvailable(destination, offset, length)\n}\n\n/**\n * Read available for read bytes to the [destination] array range starting at array [offset] and [length] bytes.\n * If less than [length] bytes available then less bytes will be copied and the corresponding number\n * will be returned as result.\n * @return number of bytes copied to the [destination] or `-1` if the buffer is empty\n */\npublic fun Buffer.readAvailable(\n destination: UByteArray,\n offset: Int = 0,\n length: Int = destination.size - offset\n): Int {\n return readAvailable(destination.asByteArray(), offset, length)\n}\n\n/**\n * Write the whole [source] array range staring at [offset] and having the specified bytes [length].\n */\npublic fun Buffer.writeFully(source: ByteArray, offset: Int = 0, length: Int = source.size - offset) {\n writeExact(length, \"byte array\") { memory, dstOffset ->\n memory.storeByteArray(dstOffset, source, offset, length)\n }\n}\n\n@Deprecated(\"IoBuffer is deprecated. Use Memory or Output instead.\")\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\", \"DEPRECATION\")\npublic inline fun IoBuffer.writeFully(source: ByteArray, offset: Int = 0, length: Int = source.size - offset) {\n (this as Buffer).writeFully(source, offset, length)\n}\n\n/**\n * Write the whole [source] array range staring at [offset] and having the specified bytes [length].\n */\npublic fun Buffer.writeFully(source: UByteArray, offset: Int = 0, length: Int = source.size - offset) {\n writeFully(source.asByteArray(), offset, length)\n}\n\n/**\n * Read from this buffer to the [destination] array to [offset] and [length] bytes.\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.readFully(destination: ShortArray, offset: Int = 0, length: Int = destination.size - offset) {\n readExact(length * 2, \"short integers array\") { memory, srcOffset ->\n memory.loadShortArray(srcOffset, destination, offset, length)\n }\n}\n\n/**\n * Read from this buffer to the [destination] array to [offset] and [length] bytes.\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.readFully(destination: UShortArray, offset: Int = 0, length: Int = destination.size - offset) {\n readFully(destination.asShortArray(), offset, length)\n}\n\n/**\n * Read available for read bytes to the [destination] array range starting at array [offset] and [length] elements.\n * If less than [length] elements available then less elements will be copied and the corresponding number\n * will be returned as result (possibly zero).\n *\n * @return number of elements copied to the [destination] or `-1` if the buffer is empty,\n * `0` - not enough bytes for at least an element\n */\npublic fun Buffer.readAvailable(\n destination: ShortArray,\n offset: Int = 0,\n length: Int = destination.size - offset\n): Int {\n require(offset >= 0) { \"offset shouldn't be negative: $offset\" }\n require(length >= 0) { \"length shouldn't be negative: $length\" }\n require(offset + length <= destination.size) {\n \"offset + length should be less than the destination size: $offset\" +\n \" + $length > ${destination.size}\"\n }\n\n if (!canRead()) return -1\n val toBeRead = minOf(length / 2, readRemaining)\n readFully(destination, offset, toBeRead)\n return toBeRead\n}\n\n/**\n * Read available for read bytes to the [destination] array range starting at array [offset] and [length] elements.\n * If less than [length] elements available then less elements will be copied and the corresponding number\n * will be returned as result (possibly zero).\n *\n * @return number of elements copied to the [destination] or `-1` if the buffer is empty,\n * `0` - not enough bytes for at least an element\n */\npublic fun Buffer.readAvailable(\n destination: UShortArray,\n offset: Int = 0,\n length: Int = destination.size - offset\n): Int {\n return readAvailable(destination.asShortArray(), offset, length)\n}\n\n/**\n * Write the whole [source] array range staring at [offset] and having the specified items [length].\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.writeFully(source: ShortArray, offset: Int = 0, length: Int = source.size - offset) {\n writeExact(length * 2, \"short integers array\") { memory, dstOffset ->\n memory.storeShortArray(dstOffset, source, offset, length)\n }\n}\n\n/**\n * Write the whole [source] array range staring at [offset] and having the specified items [length].\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.writeFully(source: UShortArray, offset: Int = 0, length: Int = source.size - offset) {\n writeFully(source.asShortArray(), offset, length)\n}\n\n/**\n * Read from this buffer to the [destination] array to [offset] and [length] bytes.\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.readFully(destination: IntArray, offset: Int = 0, length: Int = destination.size - offset) {\n readExact(length * 4, \"integers array\") { memory, srcOffset ->\n memory.loadIntArray(srcOffset, destination, offset, length)\n }\n}\n\n/**\n * Read from this buffer to the [destination] array to [offset] and [length] bytes.\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.readFully(destination: UIntArray, offset: Int = 0, length: Int = destination.size - offset) {\n readFully(destination.asIntArray(), offset, length)\n}\n\n/**\n * Read available for read bytes to the [destination] array range starting at array [offset] and [length] elements.\n * If less than [length] elements available then less elements will be copied and the corresponding number\n * will be returned as result (possibly zero).\n *\n * @return number of elements copied to the [destination] or `-1` if the buffer is empty,\n * `0` - not enough bytes for at least an element\n */\npublic fun Buffer.readAvailable(destination: IntArray, offset: Int = 0, length: Int = destination.size - offset): Int {\n require(offset >= 0) { \"offset shouldn't be negative: $offset\" }\n require(length >= 0) { \"length shouldn't be negative: $length\" }\n require(offset + length <= destination.size) {\n \"offset + length should be less than the destination size: $offset\" +\n \" + $length > ${destination.size}\"\n }\n\n if (!canRead()) return -1\n val toBeRead = minOf(length / 4, readRemaining)\n readFully(destination, offset, toBeRead)\n return toBeRead\n}\n\n/**\n * Read available for read bytes to the [destination] array range starting at array [offset] and [length] elements.\n * If less than [length] elements available then less elements will be copied and the corresponding number\n * will be returned as result (possibly zero).\n *\n * @return number of elements copied to the [destination] or `-1` if the buffer is empty,\n * `0` - not enough bytes for at least an element\n */\npublic fun Buffer.readAvailable(destination: UIntArray, offset: Int = 0, length: Int = destination.size - offset): Int {\n return readAvailable(destination.asIntArray(), offset, length)\n}\n\n/**\n * Write the whole [source] array range staring at [offset] and having the specified items [length].\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.writeFully(source: IntArray, offset: Int = 0, length: Int = source.size - offset) {\n writeExact(length * 4, \"integers array\") { memory, dstOffset ->\n memory.storeIntArray(dstOffset, source, offset, length)\n }\n}\n\n/**\n * Write the whole [source] array range staring at [offset] and having the specified items [length].\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.writeFully(source: UIntArray, offset: Int = 0, length: Int = source.size - offset) {\n writeFully(source.asIntArray(), offset, length)\n}\n\n/**\n * Read from this buffer to the [destination] array to [offset] and [length] bytes.\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.readFully(destination: LongArray, offset: Int = 0, length: Int = destination.size - offset) {\n readExact(length * 8, \"long integers array\") { memory, srcOffset ->\n memory.loadLongArray(srcOffset, destination, offset, length)\n }\n}\n\n/**\n * Read from this buffer to the [destination] array to [offset] and [length] bytes.\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.readFully(destination: ULongArray, offset: Int = 0, length: Int = destination.size - offset) {\n readFully(destination.asLongArray(), offset, length)\n}\n\n/**\n * Read available for read bytes to the [destination] array range starting at array [offset] and [length] elements.\n * If less than [length] elements available then less elements will be copied and the corresponding number\n * will be returned as result (possibly zero).\n *\n * @return number of elements copied to the [destination] or `-1` if the buffer is empty,\n * `0` - not enough bytes for at least an element\n */\npublic fun Buffer.readAvailable(destination: LongArray, offset: Int = 0, length: Int = destination.size - offset): Int {\n require(offset >= 0) { \"offset shouldn't be negative: $offset\" }\n require(length >= 0) { \"length shouldn't be negative: $length\" }\n require(offset + length <= destination.size) {\n \"offset + length should be less than the destination size: $offset\" +\n \" + $length > ${destination.size}\"\n }\n\n if (!canRead()) return -1\n val toBeRead = minOf(length / 8, readRemaining)\n readFully(destination, offset, toBeRead)\n return toBeRead\n}\n\n/**\n * Read available for read bytes to the [destination] array range starting at array [offset] and [length] elements.\n * If less than [length] elements available then less elements will be copied and the corresponding number\n * will be returned as result (possibly zero).\n *\n * @return number of elements copied to the [destination] or `-1` if the buffer is empty,\n * `0` - not enough bytes for at least an element\n */\npublic fun Buffer.readAvailable(\n destination: ULongArray,\n offset: Int = 0,\n length: Int = destination.size - offset\n): Int {\n return readAvailable(destination.asLongArray(), offset, length)\n}\n\n/**\n * Write the whole [source] array range staring at [offset] and having the specified items [length].\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.writeFully(source: LongArray, offset: Int = 0, length: Int = source.size - offset) {\n writeExact(length * 8, \"long integers array\") { memory, dstOffset ->\n memory.storeLongArray(dstOffset, source, offset, length)\n }\n}\n\n/**\n * Write the whole [source] array range staring at [offset] and having the specified items [length].\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.writeFully(source: ULongArray, offset: Int = 0, length: Int = source.size - offset) {\n writeFully(source.asLongArray(), offset, length)\n}\n\n/**\n * Read from this buffer to the [destination] array to [offset] and [length] bytes.\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.readFully(destination: FloatArray, offset: Int = 0, length: Int = destination.size - offset) {\n readExact(length * 4, \"floating point numbers array\") { memory, srcOffset ->\n memory.loadFloatArray(srcOffset, destination, offset, length)\n }\n}\n\n/**\n * Read available for read bytes to the [destination] array range starting at array [offset] and [length] elements.\n * If less than [length] elements available then less elements will be copied and the corresponding number\n * will be returned as result (possibly zero).\n *\n * @return number of elements copied to the [destination] or `-1` if the buffer is empty,\n * `0` - not enough bytes for at least an element\n */\npublic fun Buffer.readAvailable(\n destination: FloatArray,\n offset: Int = 0,\n length: Int = destination.size - offset\n): Int {\n require(offset >= 0) { \"offset shouldn't be negative: $offset\" }\n require(length >= 0) { \"length shouldn't be negative: $length\" }\n require(offset + length <= destination.size) {\n \"offset + length should be less than the destination size: $offset\" +\n \" + $length > ${destination.size}\"\n }\n\n if (!canRead()) return -1\n val toBeRead = minOf(length / 4, readRemaining)\n readFully(destination, offset, toBeRead)\n return toBeRead\n}\n\n/**\n * Write the whole [source] array range staring at [offset] and having the specified items [length].\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.writeFully(source: FloatArray, offset: Int = 0, length: Int = source.size - offset) {\n writeExact(length * 4, \"floating point numbers array\") { memory, dstOffset ->\n memory.storeFloatArray(dstOffset, source, offset, length)\n }\n}\n\n/**\n * Read from this buffer to the [destination] array to [offset] and [length] bytes.\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.readFully(destination: DoubleArray, offset: Int = 0, length: Int = destination.size - offset) {\n readExact(length * 8, \"floating point numbers array\") { memory, srcOffset ->\n memory.loadDoubleArray(srcOffset, destination, offset, length)\n }\n}\n\n/**\n * Read available for read bytes to the [destination] array range starting at array [offset] and [length] elements.\n * If less than [length] elements available then less elements will be copied and the corresponding number\n * will be returned as result (possibly zero).\n *\n * @return number of elements copied to the [destination] or `-1` if the buffer is empty,\n * `0` - not enough bytes for at least an element\n */\npublic fun Buffer.readAvailable(\n destination: DoubleArray,\n offset: Int = 0,\n length: Int = destination.size - offset\n): Int {\n require(offset >= 0) { \"offset shouldn't be negative: $offset\" }\n require(length >= 0) { \"length shouldn't be negative: $length\" }\n require(offset + length <= destination.size) {\n \"offset + length should be less than the destination size: $offset\" +\n \" + $length > ${destination.size}\"\n }\n\n if (!canRead()) return -1\n val toBeRead = minOf(length / 8, readRemaining)\n readFully(destination, offset, toBeRead)\n return toBeRead\n}\n\n/**\n * Write the whole [source] array range staring at [offset] and having the specified items [length].\n * Numeric values are interpreted in the network byte order (Big Endian).\n */\npublic fun Buffer.writeFully(source: DoubleArray, offset: Int = 0, length: Int = source.size - offset) {\n writeExact(length * 8, \"floating point numbers array\") { memory, dstOffset ->\n memory.storeDoubleArray(dstOffset, source, offset, length)\n }\n}\n\n/**\n * Read at most [length] bytes from this buffer to the [dst] buffer.\n * @return number of bytes copied\n */\npublic fun Buffer.readFully(dst: Buffer, length: Int = dst.writeRemaining): Int {\n require(length >= 0)\n require(length <= dst.writeRemaining)\n\n readExact(length, \"buffer content\") { memory, offset ->\n memory.copyTo(dst.memory, offset, length, dst.writePosition)\n dst.commitWritten(length)\n }\n\n return length\n}\n\n/**\n * Read at most [length] available bytes to the [dst] buffer or `-1` if no bytes available for read.\n * @return number of bytes copied or `-1` if empty\n */\npublic fun Buffer.readAvailable(dst: Buffer, length: Int = dst.writeRemaining): Int {\n if (!canRead()) return -1\n\n val readSize = minOf(dst.writeRemaining, readRemaining, length)\n\n readExact(readSize, \"buffer content\") { memory, offset ->\n memory.copyTo(dst.memory, offset, readSize, dst.writePosition)\n dst.commitWritten(readSize)\n }\n\n return readSize\n}\n\n/**\n * Write all readable bytes from [src] to this buffer. Fails if not enough space available to write all bytes.\n */\npublic fun Buffer.writeFully(src: Buffer) {\n val length = src.readRemaining\n\n writeExact(length, \"buffer readable content\") { memory, offset ->\n src.memory.copyTo(memory, src.readPosition, length, offset)\n src.discardExact(length)\n }\n}\n\n/**\n * Write at most [length] readable bytes from [src] to this buffer.\n * Fails if not enough space available to write all bytes.\n */\npublic fun Buffer.writeFully(src: Buffer, length: Int) {\n require(length >= 0) { \"length shouldn't be negative: $length\" }\n require(length <= src.readRemaining) {\n \"length shouldn't be greater than the source read remaining: $length > ${src.readRemaining}\"\n }\n require(length <= writeRemaining) {\n \"length shouldn't be greater than the destination write remaining space: $length > $writeRemaining\"\n }\n\n writeExact(length, \"buffer readable content\") { memory, offset ->\n src.memory.copyTo(memory, src.readPosition, length, offset)\n src.discardExact(length)\n }\n}\n\n@PublishedApi\ninternal inline fun Buffer.readExact(size: Int, name: String, block: (memory: Memory, offset: Int) -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n var value: R\n\n read { memory, start, endExclusive ->\n io.ktor.utils.io.core.internal.require(endExclusive - start >= size) {\n throw EOFException(\"Not enough bytes to read a $name of size $size.\")\n }\n value = block(memory, start)\n size\n }\n\n return value\n}\n\n@PublishedApi\ninternal inline fun Buffer.writeExact(size: Int, name: String, block: (memory: Memory, offset: Int) -> Unit) {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n write { memory, start, endExclusive ->\n val writeRemaining = endExclusive - start\n if (writeRemaining < size) {\n throw InsufficientSpaceException(name, size, writeRemaining)\n }\n block(memory, start)\n size\n }\n}\n","@file:Suppress(\"DeprecatedCallableAddReplaceWith\")\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.internal.*\nimport io.ktor.utils.io.core.internal.require\nimport io.ktor.utils.io.pool.*\n\n/**\n * Write byte [value] repeated the specified [times].\n */\npublic fun Buffer.fill(times: Int, value: Byte) {\n require(times >= 0) { \"times shouldn't be negative: $times\" }\n require(times <= writeRemaining) {\n \"times shouldn't be greater than the write remaining space: $times > $writeRemaining\"\n }\n\n memory.fill(writePosition, times, value)\n commitWritten(times)\n}\n\n/**\n * Write unsigned byte [value] repeated the specified [times].\n */\npublic fun Buffer.fill(times: Int, value: UByte) {\n fill(times, value.toByte())\n}\n\n/**\n * Write byte [v] value repeated [n] times.\n */\n@Deprecated(\"Use fill with n with type Int\")\npublic fun Buffer.fill(n: Long, v: Byte) {\n fill(n.toIntOrFail(\"n\"), v)\n}\n\n/**\n * Push back [n] bytes: only possible if there were at least [n] bytes read before this operation.\n */\n@Deprecated(\"Use rewind instead\", ReplaceWith(\"rewind(n)\"))\npublic fun Buffer.pushBack(n: Int): Unit = rewind(n)\n\n@Deprecated(\"Use duplicate instead\", ReplaceWith(\"duplicate()\"))\npublic fun Buffer.makeView(): Buffer = duplicate()\n\n@Deprecated(\"Use duplicate instead\", ReplaceWith(\"duplicate()\"))\npublic fun ChunkBuffer.makeView(): ChunkBuffer = duplicate()\n\n@Deprecated(\"Does nothing.\")\npublic fun Buffer.flush() {\n}\n\ninternal fun Buffer.appendChars(csq: CharArray, start: Int, end: Int): Int {\n return appendChars(CharArraySequence(csq, 0, csq.size), start, end)\n}\n\ninternal fun Buffer.appendChars(csq: CharSequence, start: Int, end: Int): Int {\n var charactersWritten: Int\n\n write { dst, dstStart, dstEndExclusive ->\n val result = dst.encodeUTF8(csq, start, end, dstStart, dstEndExclusive)\n charactersWritten = result.characters.toInt()\n result.bytes.toInt()\n }\n\n return start + charactersWritten\n}\n\n@Deprecated(\"This is no longer supported. Use a packet builder to append characters instead.\")\npublic fun Buffer.append(c: Char): Buffer {\n write { memory, start, endExclusive ->\n val size = memory.putUtf8Char(start, c.toInt())\n when {\n size > endExclusive - start -> appendFailed(1)\n else -> size\n }\n }\n\n return this\n}\n\n@Deprecated(\"This is no longer supported. Use a packet builder to append characters instead.\")\npublic fun Buffer.append(csq: CharSequence?): Buffer {\n if (csq == null) {\n return append(\"null\")\n }\n\n return append(csq, 0, csq.length)\n}\n\n@Deprecated(\"This is no longer supported. Use a packet builder to append characters instead.\")\npublic fun Buffer.append(csq: CharSequence?, start: Int, end: Int): Buffer = apply {\n if (csq == null) {\n return append(\"null\", start, end)\n }\n\n if (appendChars(csq, start, end) != end) {\n appendFailed(end - start)\n }\n}\n\nprivate fun appendFailed(length: Int): Nothing {\n throw BufferLimitExceededException(\"Not enough free space available to write $length character(s).\")\n}\n\n@Deprecated(\"This is no longer supported. Use a packet builder to append characters instead.\")\npublic fun Buffer.append(csq: CharArray, start: Int, end: Int): Buffer {\n return append(CharArraySequence(csq, 0, csq.size), start, end)\n}\n\n@Deprecated(\"This is no longer supported. Read from a packet instead.\")\npublic fun Buffer.readText(\n decoder: CharsetDecoder,\n out: Appendable,\n lastBuffer: Boolean,\n max: Int = Int.MAX_VALUE\n): Int {\n return decoder.decodeBuffer(this, out, lastBuffer, max)\n}\n\n/**\n * releases buffer view and returns it to the [pool] if there are no more usages. Based on simple ref-counting so\n * it is very fragile.\n */\n@Suppress(\"DEPRECATION\")\npublic fun IoBuffer.release(pool: ObjectPool) {\n // TODO ???\n @Suppress(\"UNCHECKED_CAST\")\n (this as ChunkBuffer).release(pool as ObjectPool)\n}\n\n/**\n * Peek the next unsigned byte or return `-1` if no more bytes available for reading. No bytes will be marked\n * as consumed in any case.\n * @see [Buffer.tryPeekByte]\n */\n@Deprecated(\"Use tryPeekByte instead\", replaceWith = ReplaceWith(\"tryPeekByte()\"))\npublic fun Buffer.tryPeek(): Int = tryPeekByte()\n\npublic fun Buffer.readFully(dst: Array, offset: Int = 0, length: Int = dst.size - offset) {\n read { memory, start, endExclusive ->\n if (endExclusive - start < length) {\n throw EOFException(\"Not enough bytes available to read $length bytes\")\n }\n\n for (index in 0 until length) {\n dst[index + offset] = memory[index + start]\n }\n\n length\n }\n}\n\n@Deprecated(\n \"This is no longer supported. All operations are big endian by default. Use readXXXLittleEndian \" +\n \"to read primitives in little endian\",\n level = DeprecationLevel.ERROR\n)\npublic var Buffer.byteOrder: ByteOrder\n get() = ByteOrder.BIG_ENDIAN\n set(newOrder) {\n if (newOrder != ByteOrder.BIG_ENDIAN) throw UnsupportedOperationException(\"Only BIG_ENDIAN is supported\")\n }\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.internal.ChunkBuffer\nimport io.ktor.utils.io.pool.DefaultPool\nimport io.ktor.utils.io.pool.ObjectPool\nimport kotlin.native.concurrent.ThreadLocal\n\ninternal const val DEFAULT_BUFFER_SIZE: Int = 4096\n\n/**\n * Invoke [block] function with a temporary [Buffer] instance of the specified [size] in bytes.\n * The provided instance shouldn't be captured and used outside of the [block] otherwise an undefined behaviour\n * may occur including crash and/or data corruption.\n */\n@ExperimentalIoApi\npublic inline fun withBuffer(size: Int, block: Buffer.() -> R): R {\n return with(Buffer(DefaultAllocator.alloc(size)), block)\n}\n\n/**\n * Invoke [block] function with a temporary [Buffer] instance taken from the specified [pool].\n * Depending on the pool it may be safe or unsafe to capture and use the provided buffer outside of the [block].\n * Usually it is always recommended to NOT capture an instance outside.\n */\n@ExperimentalIoApi\npublic inline fun withBuffer(pool: ObjectPool, block: Buffer.() -> R): R {\n val instance = pool.borrow()\n return try {\n block(instance)\n } finally {\n pool.recycle(instance)\n }\n}\n\n/**\n * Invoke [block] function with a temporary [Buffer] instance taken from the specified [pool].\n * Depending on the pool it may be safe or unsafe to capture and use the provided buffer outside of the [block].\n * Usually it is always recommended to NOT capture an instance outside.\n * However since [ChunkBuffer] is reference counted, you can create a [Buffer.duplicate] (this is simply a view) and use\n * it outside of the [block] function but it is important to release the duplicate properly once not needed anymore\n * otherwise memory leak may occur on some platforms.\n */\ninternal inline fun withChunkBuffer(pool: ObjectPool, block: ChunkBuffer.() -> R): R {\n val instance = pool.borrow()\n return try {\n block(instance)\n } finally {\n instance.release(pool)\n }\n}\n\n@ThreadLocal\n@Suppress(\"DEPRECATION\")\ninternal val DefaultChunkedBufferPool: ObjectPool = DefaultBufferPool()\n\n@Suppress(\"DEPRECATION\")\ninternal class DefaultBufferPool(\n private val bufferSize: Int = DEFAULT_BUFFER_SIZE,\n\n capacity: Int = 1000,\n private val allocator: Allocator = DefaultAllocator\n) : DefaultPool(capacity) {\n override fun produceInstance(): IoBuffer {\n return IoBuffer(allocator.alloc(bufferSize), null)\n }\n\n override fun disposeInstance(instance: IoBuffer) {\n allocator.free(instance.memory)\n super.disposeInstance(instance)\n instance.unlink()\n }\n\n override fun validateInstance(instance: IoBuffer) {\n super.validateInstance(instance)\n\n if (instance === IoBuffer.Empty) {\n error(\"IoBuffer.Empty couldn't be recycled\")\n }\n\n check(instance !== IoBuffer.Empty) { \"Empty instance couldn't be recycled\" }\n check(instance !== Buffer.Empty) { \"Empty instance couldn't be recycled\" }\n check(instance !== ChunkBuffer.Empty) { \"Empty instance couldn't be recycled\" }\n\n check(instance.referenceCount == 0) { \"Unable to clear buffer: it is still in use.\" }\n check(instance.next == null) { \"Recycled instance shouldn't be a part of a chain.\" }\n check(instance.origin == null) { \"Recycled instance shouldn't be a view or another buffer.\" }\n }\n\n override fun clearInstance(instance: IoBuffer): IoBuffer {\n return super.clearInstance(instance).apply {\n unpark()\n reset()\n }\n }\n}\n","package io.ktor.utils.io.bits\n\nimport io.ktor.utils.io.core.ExperimentalIoApi\n\n/**\n * Reverse number's byte order\n */\npublic expect fun Short.reverseByteOrder(): Short\n\n/**\n * Reverse number's byte order\n */\npublic expect fun Int.reverseByteOrder(): Int\n\n/**\n * Reverse number's byte order\n */\npublic expect fun Long.reverseByteOrder(): Long\n\n/**\n * Reverse number's byte order\n */\npublic expect fun Float.reverseByteOrder(): Float\n\n/**\n * Reverse number's byte order\n */\npublic expect fun Double.reverseByteOrder(): Double\n\n/**\n * Reverse number's byte order\n */\n@ExperimentalUnsignedTypes\npublic fun UShort.reverseByteOrder(): UShort = toShort().reverseByteOrder().toUShort()\n\n/**\n * Reverse number's byte order\n */\n@ExperimentalUnsignedTypes\npublic fun UInt.reverseByteOrder(): UInt = toInt().reverseByteOrder().toUInt()\n\n/**\n * Reverse number's byte order\n */\n@ExperimentalUnsignedTypes\npublic fun ULong.reverseByteOrder(): ULong = toLong().reverseByteOrder().toULong()\n\n@ExperimentalIoApi\npublic inline val Short.highByte: Byte get() = (toInt() ushr 8).toByte()\n\n@ExperimentalIoApi\npublic inline val Short.lowByte: Byte get() = (toInt() and 0xff).toByte()\n\n@ExperimentalIoApi\npublic inline val Int.highShort: Short get() = (this ushr 16).toShort()\n\n@ExperimentalIoApi\npublic inline val Int.lowShort: Short get() = (this and 0xffff).toShort()\n\n@ExperimentalIoApi\npublic inline val Long.highInt: Int get() = (this ushr 32).toInt()\n\n@ExperimentalIoApi\npublic inline val Long.lowInt: Int get() = (this and 0xffffffffL).toInt()\n","@file:Suppress(\"RedundantModalityModifier\")\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.internal.*\nimport io.ktor.utils.io.core.internal.require\nimport io.ktor.utils.io.pool.*\nimport kotlin.Boolean\nimport kotlin.Char\nimport kotlin.CharSequence\nimport kotlin.Deprecated\nimport kotlin.DeprecationLevel\nimport kotlin.Int\nimport kotlin.PublishedApi\nimport kotlin.String\nimport kotlin.Suppress\nimport kotlin.jvm.*\n\n/**\n * A builder that provides ability to build byte packets with no knowledge of it's size.\n * Unlike Java's ByteArrayOutputStream it doesn't copy the whole content every time it's internal buffer overflows\n * but chunks buffers instead. Packet building via [build] function is O(1) operation and only does instantiate\n * a new [ByteReadPacket]. Once a byte packet has been built via [build] function call, the builder could be\n * reused again. You also can discard all written bytes via [reset] or [release]. Please note that an instance of\n * builder need to be terminated either via [build] function invocation or via [release] call otherwise it will\n * cause byte buffer leak so that may have performance impact.\n *\n * Byte packet builder is also an [Appendable] so it does append UTF-8 characters to a packet\n *\n * ```\n * buildPacket {\n * listOf(1,2,3).joinTo(this, separator = \",\")\n * }\n * ```\n */\npublic class BytePacketBuilder(private var headerSizeHint: Int = 0, pool: ObjectPool) :\n @Suppress(\"DEPRECATION_ERROR\")\n BytePacketBuilderPlatformBase(pool) {\n init {\n require(headerSizeHint >= 0) { \"shouldn't be negative: headerSizeHint = $headerSizeHint\" }\n }\n\n /**\n * Number of bytes written to the builder after the creation or the last reset.\n */\n public val size: Int\n get() = _size\n\n /**\n * If no bytes were written or the builder has been reset.\n */\n public val isEmpty: Boolean\n get() = _size == 0\n\n /**\n * If at least one byte was written after the creation or the last reset.\n */\n public val isNotEmpty: Boolean\n get() = _size > 0\n\n @PublishedApi\n internal val _pool: ObjectPool\n get() = pool\n\n /**\n * Does nothing for memory-backed output\n */\n final override fun closeDestination() {\n }\n\n /**\n * Does nothing for memory-backed output\n */\n final override fun flush(source: Memory, offset: Int, length: Int) {\n }\n\n override fun append(c: Char): BytePacketBuilder {\n return super.append(c) as BytePacketBuilder\n }\n\n override fun append(csq: CharSequence?): BytePacketBuilder {\n return super.append(csq) as BytePacketBuilder\n }\n\n override fun append(csq: CharSequence?, start: Int, end: Int): BytePacketBuilder {\n return super.append(csq, start, end) as BytePacketBuilder\n }\n\n @Suppress(\"DEPRECATION_ERROR\", \"UNUSED\")\n @Deprecated(\"Binary compatibility\", level = DeprecationLevel.HIDDEN)\n @JvmName(\"append\")\n public fun appendOld(c: Char): BytePacketBuilderBase = append(c)\n\n @Suppress(\"DEPRECATION_ERROR\", \"UNUSED\")\n @Deprecated(\"Binary compatibility\", level = DeprecationLevel.HIDDEN)\n @JvmName(\"append\")\n public fun appendOld(csq: CharSequence?): BytePacketBuilderBase = append(csq)\n\n @Suppress(\"DEPRECATION_ERROR\", \"UNUSED\")\n @Deprecated(\"Binary compatibility\", level = DeprecationLevel.HIDDEN)\n @JvmName(\"append\")\n public fun appendOld(csq: CharSequence?, start: Int, end: Int): BytePacketBuilderBase = append(csq, start, end)\n\n /**\n * Creates a temporary packet view of the packet being build without discarding any bytes from the builder.\n * This is similar to `build().copy()` except that the builder keeps already written bytes untouched.\n * A temporary view packet is passed as argument to [block] function and it shouldn't leak outside of this block\n * otherwise an unexpected behaviour may occur.\n */\n @Suppress(\"unused\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun preview(block: (tmp: ByteReadPacket) -> R): R {\n return preview(block)\n }\n\n /**\n * Builds byte packet instance and resets builder's state to be able to build another one packet if needed\n */\n public fun build(): ByteReadPacket {\n val size = size\n val head = stealAll()\n\n return when (head) {\n null -> ByteReadPacket.Empty\n else -> ByteReadPacket(head, size.toLong(), pool)\n }\n }\n\n /**\n * Discard all written bytes and prepare to build another packet.\n */\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun reset() {\n release()\n }\n\n @PublishedApi\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"unused\")\n internal fun preview(): ByteReadPacket {\n return preview()\n }\n\n override fun toString(): String {\n return \"BytePacketBuilder($size bytes written)\"\n }\n}\n","@file:Suppress(\"RedundantModalityModifier\", \"FunctionName\")\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.internal.*\nimport io.ktor.utils.io.pool.*\n\n/**\n * Read-only immutable byte packet. Could be consumed only once however it does support [copy] that doesn't copy every byte\n * but creates a new view instead. Once packet created it should be either completely read (consumed) or released\n * via [release].\n */\npublic class ByteReadPacket internal constructor(\n head: ChunkBuffer,\n remaining: Long,\n pool: ObjectPool\n) :\n @Suppress(\"DEPRECATION_ERROR\")\n ByteReadPacketPlatformBase(head, remaining, pool),\n Input {\n public constructor(head: ChunkBuffer, pool: ObjectPool) : this(head, head.remainingAll(), pool)\n\n @Suppress(\"DEPRECATION\", \"UNUSED\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public constructor(head: IoBuffer, pool: ObjectPool) : this(head, head.remainingAll(), pool)\n\n init {\n markNoMoreChunksAvailable()\n }\n\n /**\n * Returns a copy of the packet. The original packet and the copy could be used concurrently. Both need to be\n * either completely consumed or released via [release]\n */\n public final fun copy(): ByteReadPacket = ByteReadPacket(head.copyAll(), remaining, pool)\n\n final override fun fill(): ChunkBuffer? = null\n\n final override fun fill(destination: Memory, offset: Int, length: Int): Int {\n return 0\n }\n\n final override fun closeSource() {\n }\n\n override fun toString(): String {\n return \"ByteReadPacket($remaining bytes remaining)\"\n }\n\n public companion object {\n public val Empty: ByteReadPacket = ByteReadPacket(ChunkBuffer.Empty, 0L, ChunkBuffer.EmptyPool)\n\n @DangerousInternalIoApi\n public val ReservedSize: Int\n get() = Buffer.ReservedSize\n }\n}\n\n@Suppress(\"DEPRECATION\")\n@DangerousInternalIoApi\n@Deprecated(\n \"Will be removed in future releases.\",\n level = DeprecationLevel.ERROR,\n replaceWith = ReplaceWith(\"AbstractInput\", \"io.ktor.utils.io.core.AbstractInput\")\n)\npublic abstract class ByteReadPacketPlatformBase protected constructor(\n head: ChunkBuffer,\n remaining: Long,\n pool: ObjectPool\n) : ByteReadPacketBase(head, remaining, pool) {\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public constructor(\n head: IoBuffer,\n remaining: Long,\n pool: ObjectPool\n ) : this(head as ChunkBuffer, remaining, pool)\n}\n\npublic expect fun ByteReadPacket(\n array: ByteArray,\n offset: Int = 0,\n length: Int = array.size,\n block: (ByteArray) -> Unit\n): ByteReadPacket\n\n@Suppress(\"NOTHING_TO_INLINE\")\npublic inline fun ByteReadPacket(array: ByteArray, offset: Int = 0, length: Int = array.size): ByteReadPacket {\n return ByteReadPacket(array, offset, length) {}\n}\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.internal.*\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readShort(): Short {\n return readPrimitive(2, { memory, index -> memory.loadShortAt(index) }, { readShortFallback() })\n}\n\nprivate fun Input.readShortFallback(): Short {\n return readPrimitiveFallback(2) { it.readShort() }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readInt(): Int {\n return readPrimitive(4, { memory, index -> memory.loadIntAt(index) }, { readIntFallback() })\n}\n\nprivate fun Input.readIntFallback(): Int {\n return readPrimitiveFallback(4) { it.readInt() }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readLong(): Long {\n return readPrimitive(8, { memory, index -> memory.loadLongAt(index) }, { readLongFallback() })\n}\n\nprivate fun Input.readLongFallback(): Long {\n return readPrimitiveFallback(8) { it.readLong() }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readFloat(): Float {\n return readPrimitive(4, { memory, index -> memory.loadFloatAt(index) }, { readFloatFallback() })\n}\n\npublic fun Input.readFloatFallback(): Float {\n return readPrimitiveFallback(4) { it.readFloat() }\n}\n\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic fun Input.readDouble(): Double {\n return readPrimitive(8, { memory, index -> memory.loadDoubleAt(index) }, { readDoubleFallback() })\n}\n\npublic fun Input.readDoubleFallback(): Double {\n return readPrimitiveFallback(8) { it.readDouble() }\n}\n\nprivate inline fun Input.readPrimitive(size: Int, main: (Memory, Int) -> R, fallback: () -> R): R {\n if (this is AbstractInput && headRemaining > size) {\n val index = headPosition\n headPosition = index + size\n return main(headMemory, index)\n }\n\n return fallback()\n}\n\nprivate inline fun Input.readPrimitiveFallback(size: Int, read: (Buffer) -> R): R {\n val head = prepareReadFirstHead(size) ?: prematureEndOfStream(size)\n val value = read(head)\n completeReadHead(head)\n return value\n}\n","@file:Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\n\npublic fun Output.writeShort(value: Short) {\n if (!writePrimitiveTemplate(2) { memory, index -> memory.storeShortAt(index, value) }) {\n writeShortFallback(value)\n }\n}\n\nprivate fun Output.writeShortFallback(value: Short) {\n if (!writePrimitiveFallbackTemplate(2) { it.writeShort(value) }) {\n writeByte(value.highByte)\n writeByte(value.lowByte)\n }\n}\n\npublic fun Output.writeInt(value: Int) {\n if (!writePrimitiveTemplate(4) { memory, index -> memory.storeIntAt(index, value) }) {\n writeIntFallback(value)\n }\n}\n\nprivate fun Output.writeIntFallback(value: Int) {\n if (!writePrimitiveFallbackTemplate(4) { it.writeInt(value) }) {\n writeIntByteByByte(value)\n }\n}\n\nprivate fun Output.writeIntByteByByte(value: Int) {\n value.highShort.let {\n writeByte(it.highByte)\n writeByte(it.lowByte)\n }\n value.lowShort.let {\n writeByte(it.highByte)\n writeByte(it.lowByte)\n }\n}\n\npublic fun Output.writeLong(value: Long) {\n if (!writePrimitiveTemplate(8) { memory, index -> memory.storeLongAt(index, value) }) {\n writeLongFallback(value)\n }\n}\n\nprivate fun Output.writeLongFallback(value: Long) {\n if (!writePrimitiveFallbackTemplate(8) { it.writeLong(value) }) {\n writeIntByteByByte(value.highInt)\n writeIntByteByByte(value.lowInt)\n }\n}\n\npublic fun Output.writeFloat(value: Float) {\n if (!writePrimitiveTemplate(4) { memory, index -> memory.storeFloatAt(index, value) }) {\n writeIntFallback(value.toRawBits())\n }\n}\n\npublic fun Output.writeDouble(value: Double) {\n if (!writePrimitiveTemplate(8) { memory, index -> memory.storeDoubleAt(index, value) }) {\n writeLongFallback(value.toRawBits())\n }\n}\n\nprivate inline fun Output.writePrimitiveTemplate(\n componentSize: Int,\n block: (Memory, index: Int) -> Unit\n): Boolean {\n if (this is AbstractOutput) {\n val index = tailPosition\n if (tailEndExclusive - index > componentSize) {\n tailPosition = index + componentSize\n block(tailMemory, index)\n return true\n }\n }\n\n return false\n}\n\nprivate inline fun Output.writePrimitiveFallbackTemplate(\n componentSize: Int,\n writeOperation: (Buffer) -> Unit\n): Boolean {\n if (this is AbstractOutput) {\n val tail = prepareWriteHead(componentSize)\n writeOperation(tail)\n afterHeadWrite()\n return true\n }\n\n return false\n}\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.core.internal.*\nimport kotlin.contracts.*\n\n/**\n * Creates a temporary packet view of the packet being build without discarding any bytes from the builder.\n * This is similar to `build().copy()` except that the builder keeps already written bytes untouched.\n * A temporary view packet is passed as argument to [block] function and it shouldn't leak outside of this block\n * otherwise an unexpected behaviour may occur.\n */\n@Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\npublic inline fun BytePacketBuilder.preview(block: (tmp: ByteReadPacket) -> R): R {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n val packet = preview()\n return try {\n block(packet)\n } finally {\n packet.release()\n }\n}\n\n@PublishedApi\ninternal fun BytePacketBuilder.preview(): ByteReadPacket {\n val head = head\n return when {\n head === ChunkBuffer.Empty -> ByteReadPacket.Empty\n else -> ByteReadPacket(head.copyAll(), _pool)\n }\n}\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\n\n/**\n * Discards bytes until [delimiter] occurred\n * @return number of bytes discarded\n */\npublic fun Input.discardUntilDelimiter(delimiter: Byte): Long {\n var discardedTotal = 0L\n\n takeWhile { chunk ->\n val discarded = chunk.discardUntilDelimiterImpl(delimiter)\n discardedTotal += discarded\n discarded > 0 && !chunk.canRead()\n }\n\n return discardedTotal\n}\n\n/**\n * Discards bytes until of of the specified delimiters [delimiter1] or [delimiter2] occurred\n * @return number of bytes discarded\n */\npublic fun Input.discardUntilDelimiters(delimiter1: Byte, delimiter2: Byte): Long {\n var discardedTotal = 0L\n\n takeWhile { chunk ->\n val discarded = chunk.discardUntilDelimitersImpl(delimiter1, delimiter2)\n discardedTotal += discarded\n discarded > 0 && !chunk.canRead()\n }\n\n return discardedTotal\n}\n\n/**\n * Copies to [dst] array at [offset] at most [length] bytes or until the specified [delimiter] occurred.\n * @return number of bytes copied\n */\npublic fun Input.readUntilDelimiter(delimiter: Byte, dst: ByteArray, offset: Int = 0, length: Int = dst.size): Int {\n var currentOffset = offset\n var dstRemaining = length\n\n takeWhile { chunk ->\n val copied = chunk.readUntilDelimiterImpl(delimiter, dst, currentOffset, dstRemaining)\n currentOffset += copied\n dstRemaining -= copied\n dstRemaining > 0 && !chunk.canRead()\n }\n\n return currentOffset - offset\n}\n\n/**\n * Copies to [dst] array at [offset] at most [length] bytes or until one of the specified delimiters\n * [delimiter1] or [delimiter2] occurred.\n * @return number of bytes copied\n */\npublic fun Input.readUntilDelimiters(\n delimiter1: Byte,\n delimiter2: Byte,\n dst: ByteArray,\n offset: Int = 0,\n length: Int = dst.size\n): Int {\n if (delimiter1 == delimiter2) return readUntilDelimiter(delimiter1, dst, offset, length)\n\n var currentOffset = offset\n var dstRemaining = length\n\n takeWhile { chunk ->\n val copied = chunk.readUntilDelimitersImpl(delimiter1, delimiter2, dst, currentOffset, dstRemaining)\n currentOffset += copied\n dstRemaining -= copied\n !chunk.canRead() && dstRemaining > 0\n }\n\n return currentOffset - offset\n}\n\n/**\n * Copies to [dst] output until the specified [delimiter] occurred.\n * @return number of bytes copied\n */\npublic fun Input.readUntilDelimiter(delimiter: Byte, dst: Output): Long {\n var copiedTotal = 0L\n takeWhile { chunk ->\n val copied = chunk.readUntilDelimiterImpl(delimiter, dst)\n copiedTotal += copied\n !chunk.canRead()\n }\n\n return copiedTotal\n}\n\n/**\n * Copies to [dst] output until one of the specified delimiters\n * [delimiter1] or [delimiter2] occurred.\n * @return number of bytes copied\n */\npublic fun Input.readUntilDelimiters(delimiter1: Byte, delimiter2: Byte, dst: Output): Long {\n var copiedTotal = 0L\n\n takeWhile { chunk ->\n val copied = chunk.readUntilDelimitersImpl(delimiter1, delimiter2, dst)\n copiedTotal += copied\n !chunk.canRead()\n }\n\n return copiedTotal\n}\n\ninternal expect fun Buffer.discardUntilDelimiterImpl(delimiter: Byte): Int\n\ninternal fun discardUntilDelimiterImplMemory(buffer: Buffer, delimiter: Byte): Int {\n val start = buffer.readPosition\n var i = start\n val limit = buffer.writePosition\n val memory = buffer.memory\n\n while (i < limit) {\n if (memory[i] == delimiter) break\n i++\n }\n\n buffer.discardUntilIndex(i)\n return i - start\n}\n\ninternal expect fun Buffer.discardUntilDelimitersImpl(delimiter1: Byte, delimiter2: Byte): Int\n\ninternal fun discardUntilDelimitersImplMemory(buffer: Buffer, delimiter1: Byte, delimiter2: Byte): Int {\n val start = buffer.readPosition\n var i = start\n val limit = buffer.writePosition\n val memory = buffer.memory\n\n while (i < limit) {\n val v = memory[i]\n if (v == delimiter1 || v == delimiter2) break\n i++\n }\n\n buffer.discardUntilIndex(i)\n return i - start\n}\n\ninternal expect fun Buffer.readUntilDelimiterImpl(\n delimiter: Byte,\n dst: ByteArray,\n offset: Int,\n length: Int\n): Int\n\ninternal expect fun Buffer.readUntilDelimitersImpl(\n delimiter1: Byte,\n delimiter2: Byte,\n dst: ByteArray,\n offset: Int,\n length: Int\n): Int\n\ninternal expect fun Buffer.readUntilDelimiterImpl(\n delimiter: Byte,\n dst: Output\n): Int\n\ninternal expect fun Buffer.readUntilDelimitersImpl(\n delimiter1: Byte,\n delimiter2: Byte,\n dst: Output\n): Int\n\ninternal inline fun Buffer.copyUntil(predicate: (Byte) -> Boolean, dst: ByteArray, offset: Int, length: Int): Int {\n val readPosition = readPosition\n var end = minOf(writePosition, readPosition + length)\n val memory = memory\n for (index in readPosition until end) {\n if (predicate(memory.loadAt(index))) {\n end = index\n break\n }\n }\n\n val copySize = end - readPosition\n memory.loadByteArray(readPosition, dst, offset, copySize)\n return copySize\n}\n\ninternal inline fun Buffer.copyUntil(predicate: (Byte) -> Boolean, dst: Output): Int {\n var index = readPosition\n val end = writePosition\n val memory = memory\n do {\n if (index == end || predicate(memory.loadAt(index))) {\n break\n }\n index++\n } while (true)\n\n val size = index - readPosition\n dst.writeFully(this, size)\n return size\n}\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.internal.*\n\n@Suppress(\"NOTHING_TO_INLINE\")\npublic inline fun String.toByteArray(charset: Charset = Charsets.UTF_8): ByteArray =\n charset.newEncoder().encodeToByteArray(this, 0, length)\n\n/**\n * Create an instance of [String] from the specified [bytes] range starting at [offset] and bytes [length]\n * interpreting characters in the specified [charset].\n */\n@Suppress(\"FunctionName\")\npublic expect fun String(\n bytes: ByteArray,\n offset: Int = 0,\n length: Int = bytes.size,\n charset: Charset = Charsets.UTF_8\n): String\n\n/**\n * Read a string line considering optionally specified [estimate] but up to optional [limit] characters length\n * (does fail once limit exceeded) or return `null` if the packet is empty\n */\npublic fun ByteReadPacket.readUTF8Line(estimate: Int = 16, limit: Int = Int.MAX_VALUE): String? {\n if (isEmpty) return null\n val sb = StringBuilder(estimate)\n return if (readUTF8LineTo(sb, limit)) sb.toString() else null\n}\n\n/**\n * Read a string line considering optionally specified [estimate] but up to optional [limit] characters length\n * (does fail once limit exceeded) or return `null` if the packet is empty\n */\npublic fun Input.readUTF8Line(estimate: Int = 16, limit: Int = Int.MAX_VALUE): String? {\n val sb = StringBuilder(estimate)\n return if (readUTF8LineTo(sb, limit)) sb.toString() else null\n}\n\n/**\n * Read UTF-8 line and append all line characters to [out] except line endings. Does support CR, LF and CR+LF\n * @return `true` if some characters were appended or line ending reached (empty line) or `false` if packet\n * if empty\n */\npublic fun Input.readUTF8LineTo(out: Appendable, limit: Int): Boolean {\n var decoded = 0\n var size = 1\n var cr = false\n var end = false\n\n takeWhileSize { buffer ->\n var skip = 0\n size = buffer.decodeUTF8 { ch ->\n when (ch) {\n '\\r' -> {\n if (cr) {\n end = true\n return@decodeUTF8 false\n }\n cr = true\n true\n }\n '\\n' -> {\n end = true\n skip = 1\n false\n }\n else -> {\n if (cr) {\n end = true\n return@decodeUTF8 false\n }\n\n if (decoded == limit) bufferLimitExceeded(limit)\n decoded++\n out.append(ch)\n true\n }\n }\n }\n\n if (skip > 0) {\n buffer.discardExact(skip)\n }\n\n if (end) 0 else size.coerceAtLeast(1)\n }\n\n if (size > 1) prematureEndOfStream(size)\n\n return decoded > 0 || !endOfInput\n}\n\n/**\n * Reads UTF-8 characters until one of the specified [delimiters] found, [limit] exceeded or end of stream encountered\n *\n * @throws BufferLimitExceededException\n * @returns a string of characters read before delimiter\n */\npublic fun Input.readUTF8UntilDelimiter(delimiters: String, limit: Int = Int.MAX_VALUE): String {\n return buildString {\n readUTF8UntilDelimiterTo(this, delimiters, limit)\n }\n}\n\n/**\n * Reads UTF-8 characters to [out] buffer until one of the specified [delimiters] found, [limit] exceeded\n * or end of stream encountered\n *\n * @throws BufferLimitExceededException\n * @returns number of characters copied (possibly zero)\n */\npublic fun Input.readUTF8UntilDelimiterTo(out: Appendable, delimiters: String, limit: Int = Int.MAX_VALUE): Int {\n var decoded = 0\n var delimiter = false\n\n takeWhile { buffer ->\n buffer.decodeASCII { ch ->\n if (ch in delimiters) {\n delimiter = true\n false\n } else {\n if (decoded == limit) bufferLimitExceeded(limit)\n decoded++\n out.append(ch)\n true\n }\n }\n }\n\n if (!delimiter) {\n decoded = readUTF8UntilDelimiterToSlowUtf8(out, delimiters, limit, decoded)\n }\n\n return decoded\n}\n\n/**\n * Reads UTF-8 characters to [out] buffer until one of the specified [delimiters] found, [limit] exceeded\n * or end of stream encountered\n *\n * @throws BufferLimitExceededException\n * @returns number of characters copied (possibly zero)\n */\npublic fun Input.readUTF8UntilDelimiterTo(out: Output, delimiters: String, limit: Int = Int.MAX_VALUE): Int {\n val delimitersCount = delimiters.length\n if (delimitersCount == 1 && delimiters[0].isAsciiChar()) {\n return readUntilDelimiter(delimiters[0].toByte(), out).toInt()\n } else if (delimitersCount == 2 && delimiters[0].isAsciiChar() && delimiters[1].isAsciiChar()) {\n return readUntilDelimiters(delimiters[0].toByte(), delimiters[1].toByte(), out).toInt()\n }\n\n return readUTFUntilDelimiterToSlowAscii(delimiters, limit, out)\n}\n\n@Suppress(\"unused\", \"DEPRECATION_ERROR\")\n@Deprecated(\"Use Output version instead\", level = DeprecationLevel.HIDDEN)\npublic fun Input.readUTF8UntilDelimiterTo(\n out: BytePacketBuilderBase,\n delimiters: String,\n limit: Int = Int.MAX_VALUE\n): Int {\n return readUTF8UntilDelimiterTo(out as Output, delimiters, limit)\n}\n\n/**\n * Read exactly [n] bytes (consumes all remaining if [n] is not specified but up to [Int.MAX_VALUE] bytes).\n * Does fail if not enough bytes remaining.\n */\npublic fun ByteReadPacket.readBytes(\n n: Int = remaining.coerceAtMostMaxIntOrFail(\"Unable to convert to a ByteArray: packet is too big\")\n): ByteArray = when {\n n != 0 -> ByteArray(n).also { readFully(it, 0, n) }\n else -> EmptyByteArray\n}\n\n/**\n * Reads exactly [n] bytes from the input or fails if not enough bytes available.\n */\npublic fun Input.readBytes(n: Int): ByteArray = readBytesOf(n, n)\n\n/**\n * Reads all remaining bytes from the input\n */\npublic fun Input.readBytes(): ByteArray = readBytesOf()\n\n/**\n * Reads at least [min] but no more than [max] bytes from the input to a new byte array\n * @throws EOFException if not enough bytes available to get [min] bytes\n */\npublic fun Input.readBytesOf(min: Int = 0, max: Int = Int.MAX_VALUE): ByteArray = if (min == max && min == 0) {\n EmptyByteArray\n} else if (min == max) {\n ByteArray(min).also { readFully(it, 0, min) }\n} else {\n var array = ByteArray(max.toLong().coerceAtMost(sizeEstimate()).coerceAtLeast(min.toLong()).toInt())\n var size = 0\n\n while (size < max) {\n val partSize = minOf(max, array.size) - size\n val rc = readAvailable(array, size, partSize)\n if (rc <= 0) break\n size += rc\n if (array.size == size) {\n array = array.copyOf(size * 2)\n }\n }\n\n if (size < min) {\n throw EOFException(\"Not enough bytes available to read $min bytes: ${min - size} more required\")\n }\n\n if (size == array.size) array else array.copyOf(size)\n}\n\n/**\n * Reads at most [max] characters decoding bytes with specified [decoder]. Extra character bytes will remain unconsumed\n * @return number of characters copied to [out]\n */\n@Deprecated(\n \"Use CharsetDecoder.decode instead\",\n ReplaceWith(\"decoder.decode(this, out, max)\", \"io.ktor.utils.io.charsets.decode\"),\n level = DeprecationLevel.ERROR\n)\npublic fun Input.readText(out: Appendable, decoder: CharsetDecoder, max: Int = Int.MAX_VALUE): Int {\n return decoder.decode(this, out, max)\n}\n\n/**\n * Reads at most [max] characters decoding bytes with specified [charset]. Extra character bytes will remain unconsumed\n * @return number of characters copied to [out]\n */\npublic fun Input.readText(out: Appendable, charset: Charset = Charsets.UTF_8, max: Int = Int.MAX_VALUE): Int {\n return charset.newDecoder().decode(this, out, max)\n}\n\n/**\n * Reads at most [max] characters decoding bytes with specified [decoder]. Extra character bytes will remain unconsumed\n * @return a decoded string\n */\n@Deprecated(\n \"Use CharsetDecoder.decode instead\",\n ReplaceWith(\"decoder.decode(this, max)\", \"io.ktor.utils.io.charsets.decode\")\n)\npublic fun Input.readText(decoder: CharsetDecoder, max: Int = Int.MAX_VALUE): String {\n return decoder.decode(this, max)\n}\n\n/**\n * Reads at most [max] characters decoding bytes with specified [charset]. Extra character bytes will remain unconsumed\n * @return a decoded string\n */\npublic fun Input.readText(charset: Charset = Charsets.UTF_8, max: Int = Int.MAX_VALUE): String {\n return charset.newDecoder().decode(this, max)\n}\n\n/**\n * Reads at most [max] characters decoding bytes with specified [charset]. Extra character bytes will remain unconsumed\n * @return a decoded string\n */\npublic fun Buffer.readText(charset: Charset = Charsets.UTF_8, max: Int = Int.MAX_VALUE): String = buildString {\n charset.newDecoder().decodeBuffer(this@readText, this, true, max)\n}\n\n/**\n * Read exactly [n] characters interpreting bytes in the specified [charset].\n */\n@Deprecated(\n \"Use readTextExactCharacters instead.\",\n ReplaceWith(\"readTextExactCharacters(n, charset)\")\n)\npublic fun Input.readTextExact(charset: Charset = Charsets.UTF_8, n: Int): String {\n return readTextExactCharacters(n, charset)\n}\n\n/**\n * Read exactly [charactersCount] characters interpreting bytes in the specified [charset].\n */\npublic fun Input.readTextExactCharacters(charactersCount: Int, charset: Charset = Charsets.UTF_8): String {\n val s = readText(charset, charactersCount)\n if (s.length < charactersCount) {\n prematureEndOfStreamToReadChars(charactersCount)\n }\n return s\n}\n\n/**\n * Read exactly the specified number of [bytes]\n * interpreting bytes in the specified [charset] (optional, UTF-8 by default).\n */\n@Deprecated(\"Parameters order is changed.\", ReplaceWith(\"readTextExactBytes(bytes, charset)\"))\npublic fun Input.readTextExactBytes(charset: Charset = Charsets.UTF_8, bytes: Int): String {\n return readTextExactBytes(bytes, charset)\n}\n\n/**\n * Read exactly [bytesCount] interpreting bytes in the specified [charset] (optional, UTF-8 by default).\n */\npublic fun Input.readTextExactBytes(bytesCount: Int, charset: Charset = Charsets.UTF_8): String {\n return charset.newDecoder().decodeExactBytes(this, inputLength = bytesCount)\n}\n\n/**\n * Writes [text] characters in range \\[[fromIndex] .. [toIndex]) with the specified [encoder]\n */\n@Deprecated(\n \"Use the implementation with Charset instead\",\n ReplaceWith(\n \"writeText(text, fromIndex, toIndex, encoder.charset)\",\n \"io.ktor.utils.io.charsets.charset\"\n ),\n level = DeprecationLevel.ERROR\n)\npublic fun Output.writeText(\n text: CharSequence,\n fromIndex: Int = 0,\n toIndex: Int = text.length,\n encoder: CharsetEncoder\n) {\n encoder.encodeToImpl(this, text, fromIndex, toIndex)\n}\n\n/**\n * Writes [text] characters in range \\[[fromIndex] .. [toIndex]) with the specified [charset]\n */\npublic fun Output.writeText(\n text: CharSequence,\n fromIndex: Int = 0,\n toIndex: Int = text.length,\n charset: Charset = Charsets.UTF_8\n) {\n if (charset === Charsets.UTF_8) {\n return writeTextUtf8(text, fromIndex, toIndex)\n }\n\n charset.newEncoder().encodeToImpl(this, text, fromIndex, toIndex)\n}\n\n/**\n * Writes [text] characters in range \\[[fromIndex] .. [toIndex]) with the specified [charset]\n */\npublic fun Output.writeText(\n text: CharArray,\n fromIndex: Int = 0,\n toIndex: Int = text.size,\n charset: Charset = Charsets.UTF_8\n) {\n if (charset === Charsets.UTF_8) {\n return writeTextUtf8(CharArraySequence(text, 0, text.size), fromIndex, toIndex)\n }\n\n charset.newEncoder().encode(text, fromIndex, toIndex, this)\n}\n\nprivate fun Output.writeTextUtf8(text: CharSequence, fromIndex: Int, toIndex: Int) {\n var index = fromIndex\n writeWhileSize(1) { buffer ->\n val memory = buffer.memory\n val dstOffset = buffer.writePosition\n val dstLimit = buffer.limit\n\n val (characters, bytes) = memory.encodeUTF8(text, index, toIndex, dstOffset, dstLimit)\n\n index += characters.toInt()\n buffer.commitWritten(bytes.toInt())\n\n when {\n characters.toInt() == 0 && index < toIndex -> 8\n index < toIndex -> 1\n else -> 0\n }\n }\n}\n\ninternal expect fun String.getCharsInternal(dst: CharArray, dstOffset: Int)\n\n@Suppress(\"NOTHING_TO_INLINE\")\nprivate inline fun Char.isAsciiChar() = toInt() <= 0x7f\n\nprivate fun Input.readUTFUntilDelimiterToSlowAscii(delimiters: String, limit: Int, out: Output): Int {\n var decoded = 0\n var delimiter = false\n\n takeWhile { buffer ->\n val before = buffer.readRemaining\n\n val rc = buffer.decodeASCII { ch ->\n if (ch in delimiters) {\n delimiter = true\n false\n } else {\n if (decoded == limit) bufferLimitExceeded(limit)\n decoded++\n true\n }\n }\n\n val delta = before - buffer.readRemaining\n if (delta > 0) {\n buffer.rewind(delta)\n out.writeFully(buffer, delta)\n }\n\n rc\n }\n\n if (!delimiter && !endOfInput) {\n decoded = readUTF8UntilDelimiterToSlowUtf8(out, delimiters, limit, decoded)\n }\n\n return decoded\n}\n\nprivate fun Input.readUTF8UntilDelimiterToSlowUtf8(\n out: Output,\n delimiters: String,\n limit: Int,\n decoded0: Int\n): Int {\n var decoded = decoded0\n var size = 1\n\n takeWhileSize { buffer ->\n val before = buffer.readRemaining\n\n size = buffer.decodeUTF8 { ch ->\n if (ch in delimiters) {\n false\n } else {\n if (decoded == limit) {\n bufferLimitExceeded(limit)\n }\n decoded++\n true\n }\n }\n\n val delta = before - buffer.readRemaining\n if (delta > 0) {\n buffer.rewind(delta)\n out.writeFully(buffer, delta)\n }\n\n size = if (size == -1) 0 else size.coerceAtLeast(1)\n size\n }\n\n if (size > 1) prematureEndOfStream(size)\n\n return decoded\n}\n\nprivate fun Input.readUTF8UntilDelimiterToSlowUtf8(\n out: Appendable,\n delimiters: String,\n limit: Int,\n decoded0: Int\n): Int {\n var decoded = decoded0\n var size = 1\n\n takeWhileSize { buffer ->\n size = buffer.decodeUTF8 { ch ->\n if (ch in delimiters) {\n false\n } else {\n if (decoded == limit) {\n bufferLimitExceeded(limit)\n }\n decoded++\n out.append(ch)\n true\n }\n }\n\n size = if (size == -1) 0 else size.coerceAtLeast(1)\n size\n }\n\n if (size > 1) prematureEndOfStream(size)\n\n return decoded\n}\n\nprivate fun bufferLimitExceeded(limit: Int): Nothing {\n throw BufferLimitExceededException(\"Too many characters before delimiter: limit $limit exceeded\")\n}\n\n@PublishedApi\ninternal fun prematureEndOfStream(size: Int): Nothing =\n throw EOFException(\"Premature end of stream: expected $size bytes\")\n\n@PublishedApi\ninternal fun prematureEndOfStream(size: Long): Nothing =\n throw EOFException(\"Premature end of stream: expected $size bytes\")\n\nprivate fun prematureEndOfStreamToReadChars(charactersCount: Int): Nothing =\n throw EOFException(\"Not enough input bytes to read $charactersCount characters.\")\n","package io.ktor.utils.io.core.internal\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.bits.DefaultAllocator\nimport io.ktor.utils.io.concurrent.*\nimport io.ktor.utils.io.core.*\nimport io.ktor.utils.io.pool.*\nimport kotlinx.atomicfu.*\n\n@DangerousInternalIoApi\npublic open class ChunkBuffer internal constructor(memory: Memory, origin: ChunkBuffer?) : Buffer(memory) {\n init {\n require(origin !== this) { \"A chunk couldn't be a view of itself.\" }\n }\n\n private val nextRef: AtomicRef = atomic(null)\n private val refCount = atomic(1)\n\n /**\n * Reference to an origin buffer view this was copied from\n */\n public var origin: ChunkBuffer? by shared(origin)\n private set\n\n /**\n * Reference to next buffer view. Useful to chain multiple views.\n * @see appendNext\n * @see cleanNext\n */\n public var next: ChunkBuffer? get() = nextRef.value\n set(newValue) {\n if (newValue == null) {\n cleanNext()\n } else {\n appendNext(newValue)\n }\n }\n\n public val referenceCount: Int get() = refCount.value\n\n private fun appendNext(chunk: ChunkBuffer) {\n if (!nextRef.compareAndSet(null, chunk)) {\n throw IllegalStateException(\"This chunk has already a next chunk.\")\n }\n }\n\n public fun cleanNext(): ChunkBuffer? {\n return nextRef.getAndSet(null)\n }\n\n override fun duplicate(): ChunkBuffer = (origin ?: this).let { newOrigin ->\n newOrigin.acquire()\n ChunkBuffer(memory, newOrigin).also { copy ->\n duplicateTo(copy)\n }\n }\n\n public open fun release(pool: ObjectPool) {\n if (release()) {\n val origin = origin\n if (origin != null) {\n unlink()\n origin.release(pool)\n } else {\n pool.recycle(this)\n }\n }\n }\n\n internal fun unlink() {\n if (!refCount.compareAndSet(0, -1)) {\n throw IllegalStateException(\"Unable to unlink: buffer is in use.\")\n }\n\n cleanNext()\n origin = null\n }\n\n /**\n * Increase ref-count. May fail if already released.\n */\n internal fun acquire() {\n refCount.update { old ->\n if (old <= 0) throw IllegalStateException(\"Unable to acquire chunk: it is already released.\")\n old + 1\n }\n }\n\n /**\n * Invoked by a pool before return the instance to a user.\n */\n internal fun unpark() {\n refCount.update { old ->\n if (old < 0) {\n throw IllegalStateException(\"This instance is already disposed and couldn't be borrowed.\")\n }\n if (old > 0) {\n throw IllegalStateException(\"This instance is already in use but somehow appeared in the pool.\")\n }\n\n 1\n }\n }\n\n /**\n * Release ref-count.\n * @return `true` if the last usage was released\n */\n internal fun release(): Boolean {\n return refCount.updateAndGet { old ->\n if (old <= 0) throw IllegalStateException(\"Unable to release: it is already released.\")\n old - 1\n } == 0\n }\n\n final override fun reset() {\n require(origin == null) { \"Unable to reset buffer with origin\" }\n\n super.reset()\n @Suppress(\"DEPRECATION\")\n attachment = null\n nextRef.value = null\n }\n\n public companion object {\n public val Pool: ObjectPool = object : ObjectPool {\n override val capacity: Int\n get() = DefaultChunkedBufferPool.capacity\n\n override fun borrow(): ChunkBuffer {\n return DefaultChunkedBufferPool.borrow()\n }\n\n @Suppress(\"DEPRECATION\")\n override fun recycle(instance: ChunkBuffer) {\n if (instance !is IoBuffer) {\n throw IllegalArgumentException(\"Only IoBuffer instances can be recycled.\")\n }\n\n DefaultChunkedBufferPool.recycle(instance)\n }\n\n override fun dispose() {\n DefaultChunkedBufferPool.dispose()\n }\n }\n\n @Suppress(\"DEPRECATION\")\n public val Empty: ChunkBuffer get() = IoBuffer.Empty\n\n /**\n * A pool that always returns [ChunkBuffer.Empty]\n */\n public val EmptyPool: ObjectPool = object : ObjectPool {\n override val capacity: Int get() = 1\n\n override fun borrow() = Empty\n\n override fun recycle(instance: ChunkBuffer) {\n require(instance === ChunkBuffer.Empty) { \"Only ChunkBuffer.Empty instance could be recycled.\" }\n }\n\n override fun dispose() {\n }\n }\n\n @Suppress(\"DEPRECATION\")\n internal val NoPool: ObjectPool = object : NoPoolImpl() {\n override fun borrow(): ChunkBuffer {\n return IoBuffer(DefaultAllocator.alloc(DEFAULT_BUFFER_SIZE), null)\n }\n\n override fun recycle(instance: ChunkBuffer) {\n if (instance !is IoBuffer) {\n throw IllegalArgumentException(\"Only IoBuffer instances can be recycled.\")\n }\n\n DefaultAllocator.free(instance.memory)\n }\n }\n\n internal val NoPoolManuallyManaged: ObjectPool = object : NoPoolImpl() {\n override fun borrow(): ChunkBuffer {\n throw UnsupportedOperationException(\"This pool doesn't support borrow\")\n }\n\n override fun recycle(instance: ChunkBuffer) {\n // do nothing: manually managed objects should be disposed manually\n }\n }\n }\n}\n\n/**\n * @return `true` if and only if the are no buffer views that share the same actual buffer. This actually does\n * refcount and only work guaranteed if other views created/not created via [Buffer.duplicate] function.\n * One can instantiate multiple buffers with the same buffer and this function will return `true` in spite of\n * the fact that the buffer is actually shared.\n */\ninternal fun ChunkBuffer.isExclusivelyOwned(): Boolean = referenceCount == 1\n","@file:Suppress(\"KDocMissingDocumentation\")\n\npackage io.ktor.utils.io.core.internal\n\nimport io.ktor.utils.io.core.*\nimport kotlin.jvm.*\nimport kotlin.native.concurrent.*\n\n/**\n * API marked with this annotation is internal and extremely fragile and not intended to be used by library users.\n * Such API could be changed without notice including rename, removal and behaviour change.\n * Also using API marked with this annotation could cause data loss or any other damage.\n */\n@Suppress(\"DEPRECATION\")\n@RequiresOptIn(level = RequiresOptIn.Level.ERROR)\n@Experimental(level = Experimental.Level.ERROR)\npublic annotation class DangerousInternalIoApi\n\n@DangerousInternalIoApi\npublic fun ByteReadPacket.`$unsafeAppend$`(builder: BytePacketBuilder) {\n val builderHead = builder.stealAll() ?: return\n val builderSize = builder.size\n\n if (builderSize <= PACKET_MAX_COPY_SIZE && builderHead.next == null && tryWriteAppend(builderHead)) {\n builder.afterBytesStolen()\n return\n }\n\n append(builderHead)\n}\n\ninternal fun ByteReadPacket.unsafeAppend(builder: BytePacketBuilder): Int {\n val builderSize = builder.size\n val builderHead = builder.stealAll() ?: return 0\n\n if (builderSize <= PACKET_MAX_COPY_SIZE && builderHead.next == null && tryWriteAppend(builderHead)) {\n builder.afterBytesStolen()\n return builderSize\n }\n\n append(builderHead)\n return builderSize\n}\n\n@Suppress(\"DEPRECATION\", \"UNUSED\")\n@JvmName(\"prepareReadFirstHead\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\npublic fun Input.prepareReadFirstHeadOld(minSize: Int): IoBuffer? {\n return prepareReadFirstHead(minSize) as IoBuffer?\n}\n\n@DangerousInternalIoApi\npublic fun Input.prepareReadFirstHead(minSize: Int): ChunkBuffer? {\n if (this is AbstractInput) {\n return prepareReadHead(minSize)\n }\n if (this is ChunkBuffer) {\n return if (canRead()) this else null\n }\n\n return prepareReadHeadFallback(minSize)\n}\n\nprivate fun Input.prepareReadHeadFallback(minSize: Int): ChunkBuffer? {\n if (endOfInput) return null\n\n val buffer = ChunkBuffer.Pool.borrow()\n val copied = peekTo(\n buffer.memory,\n buffer.writePosition.toLong(),\n 0L,\n minSize.toLong(),\n buffer.writeRemaining.toLong()\n ).toInt()\n buffer.commitWritten(copied)\n\n if (copied < minSize) {\n prematureEndOfStream(minSize)\n }\n\n return buffer\n}\n\n@Suppress(\"UNUSED\", \"DEPRECATION\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\npublic fun Input.completeReadHead(current: IoBuffer) {\n completeReadHead(current)\n}\n\n@DangerousInternalIoApi\npublic fun Input.completeReadHead(current: ChunkBuffer) {\n if (current === this) {\n return\n }\n if (this is AbstractInput) {\n if (!current.canRead()) {\n ensureNext(current)\n } else if (current.endGap < Buffer.ReservedSize) {\n fixGapAfterRead(current)\n } else {\n headPosition = current.readPosition\n }\n return\n }\n\n completeReadHeadFallback(current)\n}\n\nprivate fun Input.completeReadHeadFallback(current: ChunkBuffer) {\n val discardAmount = current.capacity - current.writeRemaining - current.readRemaining\n discardExact(discardAmount)\n current.release(ChunkBuffer.Pool)\n}\n\n@Suppress(\"DEPRECATION\", \"UNUSED\")\n@JvmName(\"prepareReadNextHead\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\npublic fun Input.prepareReadNextHeadOld(current: IoBuffer): IoBuffer? {\n return prepareReadNextHead(current) as IoBuffer?\n}\n\n@DangerousInternalIoApi\npublic fun Input.prepareReadNextHead(current: ChunkBuffer): ChunkBuffer? {\n if (current === this) {\n return if (canRead()) this else null\n }\n if (this is AbstractInput) {\n return ensureNextHead(current)\n }\n\n return prepareNextReadHeadFallback(current)\n}\n\nprivate fun Input.prepareNextReadHeadFallback(current: ChunkBuffer): ChunkBuffer? {\n val discardAmount = current.capacity - current.writeRemaining - current.readRemaining\n discardExact(discardAmount)\n current.resetForWrite()\n\n if (endOfInput || peekTo(current) <= 0) {\n current.release(ChunkBuffer.Pool)\n return null\n }\n\n return current\n}\n\n@Suppress(\"DEPRECATION\", \"UNUSED\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\npublic fun Output.prepareWriteHead(capacity: Int, current: IoBuffer?): IoBuffer {\n return prepareWriteHead(capacity, current) as IoBuffer\n}\n\n@DangerousInternalIoApi\npublic fun Output.prepareWriteHead(capacity: Int, current: ChunkBuffer?): ChunkBuffer {\n if (this is AbstractOutput) {\n if (current != null) {\n afterHeadWrite()\n }\n return prepareWriteHead(capacity)\n }\n\n return prepareWriteHeadFallback(current)\n}\n\nprivate fun Output.prepareWriteHeadFallback(current: ChunkBuffer?): ChunkBuffer {\n if (current != null) {\n writeFully(current)\n current.resetForWrite()\n return current\n }\n\n return ChunkBuffer.Pool.borrow()\n}\n\n@Suppress(\"DEPRECATION\", \"UNUSED\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\npublic fun Output.afterHeadWrite(current: IoBuffer) {\n return afterHeadWrite(current)\n}\n\n@DangerousInternalIoApi\npublic fun Output.afterHeadWrite(current: ChunkBuffer) {\n if (this is AbstractOutput) {\n return afterHeadWrite()\n }\n\n afterWriteHeadFallback(current)\n}\n\n@JvmField\n@SharedImmutable\ninternal val EmptyByteArray = ByteArray(0)\n\nprivate fun Output.afterWriteHeadFallback(current: ChunkBuffer) {\n writeFully(current)\n current.release(ChunkBuffer.Pool)\n}\n","package io.ktor.utils.io.errors\n\nimport io.ktor.utils.io.core.*\n\npublic expect open class IOException(message: String, cause: Throwable?) : Exception {\n public constructor(message: String)\n}\n\npublic expect open class EOFException(message: String) : IOException\n\n@Suppress(\"DeprecatedCallableAddReplaceWith\")\n@Deprecated(\"Not implemented.\", level = DeprecationLevel.ERROR)\npublic fun TODO_ERROR(value: R): Nothing = TODO(\"Not implemented. Value is $value\")\n\n@Suppress(\"DeprecatedCallableAddReplaceWith\")\n@Deprecated(\"Not implemented.\", level = DeprecationLevel.ERROR)\npublic fun TODO_ERROR(): Nothing = TODO(\"Not implemented.\")\n\ninternal fun checkPeekTo(destination: Buffer, offset: Int, min: Int, max: Int) {\n io.ktor.utils.io.core.internal.require(offset >= 0) { \"offset shouldn't be negative: $offset.\" }\n io.ktor.utils.io.core.internal.require(min >= 0) { \"min shouldn't be negative: $min.\" }\n io.ktor.utils.io.core.internal.require(max >= min) { \"max should't be less than min: max = $max, min = $min.\" }\n io.ktor.utils.io.core.internal.require(min <= destination.writeRemaining) {\n \"Not enough free space in the destination buffer \" +\n \"to write the specified minimum number of bytes: min = $min, free = ${destination.writeRemaining}.\"\n }\n}\n\n@PublishedApi\ninternal fun incompatibleVersionError(): Nothing = throw Error(\n \"This API is no longer supported. \" +\n \"Please downgrade kotlinx-io or recompile your project/dependencies with new kotlinx-io.\"\n)\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.utils.io.internal\n\nimport io.ktor.utils.io.*\nimport kotlinx.atomicfu.*\nimport kotlinx.coroutines.*\n\n/**\n * Exclusive slot for waiting.\n * Only one waiter allowed.\n *\n * TODO: replace [Job] -> [Continuation] when all coroutines problems are fixed.\n */\ninternal class AwaitingSlot {\n private val suspension: AtomicRef = atomic(null)\n\n init {\n makeShared()\n }\n\n /**\n * Wait for other [sleep] or resume.\n */\n public suspend fun sleep() {\n if (trySuspend()) {\n return\n }\n\n resume()\n }\n\n /**\n * Resume waiter.\n */\n public fun resume() {\n suspension.getAndSet(null)?.complete()\n }\n\n /**\n * Cancel waiter.\n */\n public fun cancel(cause: Throwable?) {\n val continuation = suspension.getAndSet(null) ?: return\n\n if (cause != null) {\n continuation.completeExceptionally(cause)\n } else {\n continuation.complete()\n }\n }\n\n private suspend fun trySuspend(): Boolean {\n var suspended = false\n\n val job = Job()\n if (suspension.compareAndSet(null, job)) {\n suspended = true\n job.join()\n }\n\n return suspended\n }\n}\n","package io.ktor.utils.io.internal\n\nimport io.ktor.utils.io.ByteChannelSequentialBase\nimport io.ktor.utils.io.close\nimport io.ktor.utils.io.core.internal.ChunkBuffer\n\ninternal suspend fun ByteChannelSequentialBase.joinToImpl(dst: ByteChannelSequentialBase, closeOnEnd: Boolean) {\n copyToSequentialImpl(dst, Long.MAX_VALUE)\n if (closeOnEnd) dst.close()\n}\n\n/**\n * Reads up to [limit] bytes from receiver channel and writes them to [dst] channel.\n * Closes [dst] channel if fails to read or write with cause exception.\n * @return a number of copied bytes\n */\ninternal suspend fun ByteChannelSequentialBase.copyToSequentialImpl(dst: ByteChannelSequentialBase, limit: Long): Long {\n require(this !== dst)\n if (closedCause != null) {\n dst.close(closedCause)\n return 0L\n }\n\n var remainingLimit = limit\n\n while (remainingLimit > 0) {\n if (!awaitInternalAtLeast1()) {\n break\n }\n val transferred = transferTo(dst, remainingLimit)\n\n val copied = if (transferred == 0L) {\n val tail = copyToTail(dst, remainingLimit)\n if (tail == 0L) {\n break\n }\n\n tail\n } else {\n if (dst.availableForWrite == 0) {\n dst.awaitAtLeastNBytesAvailableForWrite(1)\n }\n\n transferred\n }\n\n remainingLimit -= copied\n }\n\n return limit - remainingLimit\n}\n\nprivate suspend fun ByteChannelSequentialBase.copyToTail(dst: ByteChannelSequentialBase, limit: Long): Long {\n val lastPiece = ChunkBuffer.Pool.borrow()\n try {\n lastPiece.resetForWrite(limit.coerceAtMost(lastPiece.capacity.toLong()).toInt())\n val rc = readAvailable(lastPiece)\n if (rc == -1) {\n lastPiece.release(ChunkBuffer.Pool)\n return 0\n }\n\n dst.writeFully(lastPiece)\n return rc.toLong()\n } finally {\n lastPiece.release(ChunkBuffer.Pool)\n }\n}\n","package io.ktor.utils.io.pool\n\nimport io.ktor.utils.io.core.*\nimport kotlinx.atomicfu.*\nimport kotlin.jvm.*\n\npublic interface ObjectPool : Closeable {\n /**\n * Pool capacity\n */\n public val capacity: Int\n\n /**\n * borrow an instance. Pool can recycle an old instance or create a new one\n */\n public fun borrow(): T\n\n /**\n * Recycle an instance. Should be recycled what was borrowed before otherwise could fail\n */\n public fun recycle(instance: T)\n\n /**\n * Dispose the whole pool. None of borrowed objects could be used after the pool gets disposed\n * otherwise it can result in undefined behaviour\n */\n public fun dispose()\n\n /**\n * Does pool dispose\n */\n override fun close() {\n dispose()\n }\n}\n\n/**\n * A pool implementation of zero capacity that always creates new instances\n */\npublic abstract class NoPoolImpl : ObjectPool {\n override val capacity: Int\n get() = 0\n\n override fun recycle(instance: T) {\n }\n\n override fun dispose() {\n }\n}\n\n/**\n * A pool that produces at most one instance\n */\npublic abstract class SingleInstancePool : ObjectPool {\n private val borrowed = atomic(0)\n private val disposed = atomic(false)\n\n @Volatile\n private var instance: T? = null\n\n /**\n * Creates a new instance of [T]\n */\n protected abstract fun produceInstance(): T\n\n /**\n * Dispose [instance] and release it's resources\n */\n protected abstract fun disposeInstance(instance: T)\n\n final override val capacity: Int get() = 1\n\n final override fun borrow(): T {\n borrowed.update {\n if (it != 0) throw IllegalStateException(\"Instance is already consumed\")\n 1\n }\n\n val instance = produceInstance()\n this.instance = instance\n\n return instance\n }\n\n final override fun recycle(instance: T) {\n if (this.instance !== instance) {\n if (this.instance == null && borrowed.value != 0) {\n throw IllegalStateException(\"Already recycled or an irrelevant instance tried to be recycled\")\n }\n\n throw IllegalStateException(\"Unable to recycle irrelevant instance\")\n }\n\n this.instance = null\n\n if (!disposed.compareAndSet(false, true)) {\n throw IllegalStateException(\"An instance is already disposed\")\n }\n\n disposeInstance(instance)\n }\n\n final override fun dispose() {\n if (disposed.compareAndSet(false, true)) {\n val instance = this.instance ?: return\n this.instance = null\n\n disposeInstance(instance)\n }\n }\n}\n\n/**\n * Default object pool implementation.\n */\npublic expect abstract class DefaultPool(capacity: Int) : ObjectPool {\n /**\n * Pool capacity.\n */\n final override val capacity: Int\n\n /**\n * Creates a new instance of [T]\n */\n protected abstract fun produceInstance(): T\n\n /**\n * Dispose [instance] and release it's resources\n */\n protected open fun disposeInstance(instance: T)\n\n /**\n * Clear [instance]'s state before reuse: reset pointers, counters and so on\n */\n protected open fun clearInstance(instance: T): T\n\n /**\n * Validate [instance] of [T]. Could verify that the object has been borrowed from this pool\n */\n protected open fun validateInstance(instance: T)\n\n final override fun borrow(): T\n\n final override fun recycle(instance: T)\n\n final override fun dispose()\n}\n\n/**\n * Borrows and instance of [T] from the pool, invokes [block] with it and finally recycles it\n */\n@Deprecated(\"Use useInstance instead\", ReplaceWith(\"useInstance(block)\"))\npublic inline fun ObjectPool.useBorrowed(block: (T) -> R): R {\n return useInstance(block)\n}\n\n/**\n * Borrows and instance of [T] from the pool, invokes [block] with it and finally recycles it\n */\npublic inline fun ObjectPool.useInstance(block: (T) -> R): R {\n val instance = borrow()\n try {\n return block(instance)\n } finally {\n recycle(instance)\n }\n}\n","package io.ktor.utils.io\n\nimport io.ktor.utils.io.core.*\nimport io.ktor.utils.io.internal.*\nimport kotlinx.coroutines.*\nimport org.khronos.webgl.*\n\n/**\n * Creates buffered channel for asynchronous reading and writing of sequences of bytes.\n */\npublic actual fun ByteChannel(autoFlush: Boolean): ByteChannel {\n return ByteChannelJS(IoBuffer.Empty, autoFlush)\n}\n\n/**\n * Creates channel for reading from the specified byte array.\n */\npublic actual fun ByteReadChannel(content: ByteArray, offset: Int, length: Int): ByteReadChannel {\n if (content.isEmpty()) return ByteReadChannel.Empty\n val head = IoBuffer.Pool.borrow()\n var tail = head\n\n var start = offset\n val end = start + length\n while (true) {\n tail.reserveEndGap(8)\n val size = minOf(end - start, tail.writeRemaining)\n (tail as Buffer).writeFully(content, start, size)\n start += size\n\n if (start == end) break\n val current = tail\n tail = IoBuffer.Pool.borrow()\n current.next = tail\n }\n\n return ByteChannelJS(head, false).apply { close() }\n}\n\n/**\n * Creates channel for reading from the specified [ArrayBufferView]\n */\npublic fun ByteReadChannel(content: ArrayBufferView): ByteReadChannel {\n if (content.byteLength == 0) return ByteReadChannel.Empty\n val head = IoBuffer.Pool.borrow()\n var tail = head\n\n var start = 0\n var remaining = content.byteLength - content.byteOffset\n while (true) {\n tail.reserveEndGap(8)\n val size = minOf(remaining, tail.writeRemaining)\n tail.writeFully(content, start, size)\n start += size\n remaining -= size\n\n if (remaining == 0) break\n tail = IoBuffer.Pool.borrow()\n }\n\n return ByteChannelJS(head, false).apply { close() }\n}\n\npublic actual suspend fun ByteReadChannel.joinTo(dst: ByteWriteChannel, closeOnEnd: Boolean) {\n (this as ByteChannelSequentialBase).joinToImpl((dst as ByteChannelSequentialBase), closeOnEnd)\n}\n\n/**\n * Reads up to [limit] bytes from receiver channel and writes them to [dst] channel.\n * Closes [dst] channel if fails to read or write with cause exception.\n * @return a number of copied bytes\n */\npublic actual suspend fun ByteReadChannel.copyTo(dst: ByteWriteChannel, limit: Long): Long {\n return (this as ByteChannelSequentialBase).copyToSequentialImpl((dst as ByteChannelSequentialBase), limit)\n}\n\ninternal class ByteChannelJS(initial: IoBuffer, autoFlush: Boolean) : ByteChannelSequentialBase(initial, autoFlush) {\n private var attachedJob: Job? = null\n\n @OptIn(InternalCoroutinesApi::class)\n override fun attachJob(job: Job) {\n attachedJob?.cancel()\n attachedJob = job\n job.invokeOnCompletion(onCancelling = true) { cause ->\n attachedJob = null\n if (cause != null) {\n cancel(cause)\n }\n }\n }\n\n override suspend fun readAvailable(dst: ArrayBuffer, offset: Int, length: Int): Int {\n return if (readable.isEmpty) {\n readAvailableSuspend(dst, offset, length)\n } else {\n closedCause?.let { throw it }\n readable.readAvailable(dst, offset, length)\n }\n }\n\n private suspend fun readAvailableSuspend(dst: ArrayBuffer, offset: Int, length: Int): Int {\n if (!await(1)) return -1\n return readAvailable(dst, offset, length)\n }\n\n override suspend fun readFully(dst: ArrayBuffer, offset: Int, length: Int) {\n if (availableForRead >= length) {\n closedCause?.let { throw it }\n readable.readFully(dst, offset, length)\n return\n }\n\n return readFullySuspend(dst, offset, length)\n }\n\n private suspend fun readFullySuspend(dst: ArrayBuffer, offset: Int, length: Int) {\n var start = offset\n val end = offset + length\n var remaining = length\n\n while (start < end) {\n val rc = readAvailable(dst, start, remaining)\n if (rc == -1) throw EOFException(\"Premature end of stream: required $remaining more bytes\")\n start += rc\n remaining -= rc\n }\n }\n\n override fun toString(): String = \"ByteChannel[$attachedJob, ${hashCode()}]\"\n}\n","// ktlint-disable filename\n/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.utils.io\n\nimport io.ktor.utils.io.core.*\nimport io.ktor.utils.io.core.internal.*\nimport kotlin.jvm.*\n\ninternal actual class ByteChannelSequentialBaseSharedState actual constructor() {\n actual var closed: Boolean = false\n\n actual var readByteOrder: ByteOrder = ByteOrder.BIG_ENDIAN\n\n actual var writeByteOrder: ByteOrder = ByteOrder.BIG_ENDIAN\n\n actual var totalBytesRead: Long = 0L\n\n actual var totalBytesWritten: Long = 0L\n\n actual var closedCause: Throwable? = null\n\n actual var lastReadAvailable: Int = 0\n\n actual var lastReadView: ChunkBuffer = ChunkBuffer.Empty\n}\n","// ktlint-disable filename\npackage io.ktor.utils.io\n\nimport kotlin.coroutines.*\n\ninternal actual class Condition actual constructor(val predicate: () -> Boolean) {\n private var cont: Continuation? = null\n\n actual fun check(): Boolean {\n return predicate()\n }\n\n actual fun signal() {\n val cont = cont\n if (cont != null && predicate()) {\n this.cont = null\n cont.resume(Unit)\n }\n }\n\n actual suspend fun await(block: () -> Unit) {\n if (predicate()) return\n\n return suspendCoroutine { c ->\n cont = c\n block()\n }\n }\n actual suspend fun await() {\n if (predicate()) return\n\n return suspendCoroutine { c ->\n cont = c\n }\n }\n}\n","@file:Suppress(\"NOTHING_TO_INLINE\")\n\npackage io.ktor.utils.io.bits\n\n/**\n * Reverse number's byte order\n */\npublic actual fun Short.reverseByteOrder(): Short = swap(this)\n\n/**\n * Reverse number's byte order\n */\npublic actual fun Int.reverseByteOrder(): Int = swap(this)\n\n/**\n * Reverse number's byte order\n */\npublic actual fun Long.reverseByteOrder(): Long = swap(this)\n\n/**\n * Reverse number's byte order\n */\npublic actual fun Float.reverseByteOrder(): Float = swap(this)\n\n/**\n * Reverse number's byte order\n */\npublic actual fun Double.reverseByteOrder(): Double = swap(this)\n\nprivate inline fun swap(s: Short): Short = (((s.toInt() and 0xff) shl 8) or ((s.toInt() and 0xffff) ushr 8)).toShort()\n\nprivate inline fun swap(s: Int): Int =\n (swap((s and 0xffff).toShort()).toInt() shl 16) or (swap((s ushr 16).toShort()).toInt() and 0xffff)\n\nprivate inline fun swap(s: Long): Long =\n (swap((s and 0xffffffff).toInt()).toLong() shl 32) or (swap((s ushr 32).toInt()).toLong() and 0xffffffff)\n\nprivate inline fun swap(s: Float): Float = Float.fromBits(swap(s.toRawBits()))\n\nprivate inline fun swap(s: Double): Double = Double.fromBits(swap(s.toRawBits()))\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.utils.io\n\n/**\n * Print exception stacktrace.\n */\npublic actual fun Throwable.printStack() {\n @Suppress(\"UnsafeCastFromDynamic\")\n println(asDynamic().stack)\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.utils.io\n\nimport io.ktor.utils.io.core.internal.*\n\n@DangerousInternalIoApi\npublic actual fun Any.preventFreeze() {\n}\n\n@DangerousInternalIoApi\npublic actual fun Any.makeShared() {\n}\n","@file:Suppress(\"NOTHING_TO_INLINE\")\n\npackage io.ktor.utils.io.bits\n\nimport io.ktor.utils.io.core.*\nimport io.ktor.utils.io.core.internal.*\nimport org.khronos.webgl.*\n\nprivate val isLittleEndianPlatform = ByteOrder.nativeOrder() === ByteOrder.LITTLE_ENDIAN\n\n/**\n * Copies shorts integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic actual fun Memory.loadShortArray(\n offset: Int,\n destination: ShortArray,\n destinationOffset: Int,\n count: Int\n) {\n val typed = Int16Array(view.buffer, view.byteOffset + offset, count)\n\n if (isLittleEndianPlatform) {\n // TODO investigate this implementation vs DataView.getInt16(...)\n repeat(count) { index ->\n destination[index + destinationOffset] = typed[index].reverseByteOrder()\n }\n } else {\n repeat(count) { index ->\n destination[index + destinationOffset] = typed[index]\n }\n }\n}\n\n/**\n * Copies shorts integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic actual fun Memory.loadShortArray(\n offset: Long,\n destination: ShortArray,\n destinationOffset: Int,\n count: Int\n) {\n loadShortArray(offset.toIntOrFail(\"offset\"), destination, destinationOffset, count)\n}\n\n/**\n * Copies regular integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic actual fun Memory.loadIntArray(\n offset: Int,\n destination: IntArray,\n destinationOffset: Int,\n count: Int\n) {\n val typed = Int32Array(view.buffer, view.byteOffset + offset, count)\n\n if (isLittleEndianPlatform) {\n repeat(count) { index ->\n destination[index + destinationOffset] = typed[index].reverseByteOrder()\n }\n } else {\n repeat(count) { index ->\n destination[index + destinationOffset] = typed[index]\n }\n }\n}\n\n/**\n * Copies regular integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic actual fun Memory.loadIntArray(\n offset: Long,\n destination: IntArray,\n destinationOffset: Int,\n count: Int\n) {\n loadIntArray(offset.toIntOrFail(\"offset\"), destination, destinationOffset, count)\n}\n\n/**\n * Copies regular integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic actual fun Memory.loadLongArray(\n offset: Int,\n destination: LongArray,\n destinationOffset: Int,\n count: Int\n) {\n val typed = Int32Array(view.buffer, view.byteOffset + offset, count * 2)\n\n if (isLittleEndianPlatform) {\n for (index in 0 until count * 2 step 2) {\n destination[index / 2 + destinationOffset] =\n (typed[index + 1].reverseByteOrder().toLong() and 0xffffffffL) or\n (typed[index].reverseByteOrder().toLong() shl 32)\n }\n } else {\n for (index in 0 until count * 2 step 2) {\n destination[index / 2 + destinationOffset] = (typed[index].toLong() and 0xffffffffL) or\n (typed[index + 1].toLong() shl 32)\n }\n }\n}\n\n/**\n * Copies regular integers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic actual fun Memory.loadLongArray(\n offset: Long,\n destination: LongArray,\n destinationOffset: Int,\n count: Int\n) {\n loadLongArray(offset.toIntOrFail(\"offset\"), destination, destinationOffset, count)\n}\n\n/**\n * Copies floating point numbers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic actual fun Memory.loadFloatArray(\n offset: Int,\n destination: FloatArray,\n destinationOffset: Int,\n count: Int\n) {\n val typed = Float32Array(view.buffer, view.byteOffset + offset, count)\n\n if (isLittleEndianPlatform) {\n repeat(count) { index ->\n destination[index + destinationOffset] = typed[index].reverseByteOrder()\n }\n } else {\n repeat(count) { index ->\n destination[index + destinationOffset] = typed[index]\n }\n }\n}\n\n/**\n * Copies floating point numbers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic actual fun Memory.loadFloatArray(\n offset: Long,\n destination: FloatArray,\n destinationOffset: Int,\n count: Int\n) {\n loadFloatArray(offset.toIntOrFail(\"offset\"), destination, destinationOffset, count)\n}\n\n/**\n * Copies floating point numbers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic actual fun Memory.loadDoubleArray(\n offset: Int,\n destination: DoubleArray,\n destinationOffset: Int,\n count: Int\n) {\n val typed = Float64Array(view.buffer, view.byteOffset + offset, count)\n\n if (isLittleEndianPlatform) {\n repeat(count) { index ->\n destination[index + destinationOffset] = typed[index].reverseByteOrder()\n }\n } else {\n repeat(count) { index ->\n destination[index + destinationOffset] = typed[index]\n }\n }\n}\n\n/**\n * Copies floating point numbers from this memory range from the specified [offset] and [count]\n * to the [destination] at [destinationOffset] interpreting numbers in the network order (Big Endian).\n * @param destinationOffset items\n */\npublic actual fun Memory.loadDoubleArray(\n offset: Long,\n destination: DoubleArray,\n destinationOffset: Int,\n count: Int\n) {\n loadDoubleArray(offset.toIntOrFail(\"offset\"), destination, destinationOffset, count)\n}\n\n/**\n * Copies shorts integers from from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic actual fun Memory.storeShortArray(\n offset: Int,\n source: ShortArray,\n sourceOffset: Int,\n count: Int\n) {\n val typed = Int16Array(view.buffer, view.byteOffset + offset, count)\n\n if (isLittleEndianPlatform) {\n // TODO investigate this implementation vs DataView.getInt16(...)\n repeat(count) { index ->\n typed[index] = source[index + sourceOffset].reverseByteOrder()\n }\n } else {\n repeat(count) { index ->\n typed[index] = source[index + sourceOffset]\n }\n }\n}\n\n/**\n * Copies shorts integers from from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic actual fun Memory.storeShortArray(\n offset: Long,\n source: ShortArray,\n sourceOffset: Int,\n count: Int\n) {\n storeShortArray(offset.toIntOrFail(\"offset\"), source, sourceOffset, count)\n}\n\n/**\n * Copies regular integers from from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic actual fun Memory.storeIntArray(\n offset: Int,\n source: IntArray,\n sourceOffset: Int,\n count: Int\n) {\n val typed = Int32Array(view.buffer, view.byteOffset + offset, count)\n\n if (isLittleEndianPlatform) {\n repeat(count) { index ->\n typed[index] = source[index + sourceOffset].reverseByteOrder()\n }\n } else {\n repeat(count) { index ->\n typed[index] = source[index + sourceOffset]\n }\n }\n}\n\n/**\n * Copies regular integers from from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic actual fun Memory.storeIntArray(\n offset: Long,\n source: IntArray,\n sourceOffset: Int,\n count: Int\n) {\n storeIntArray(offset.toIntOrFail(\"offset\"), source, sourceOffset, count)\n}\n\n/**\n * Copies regular integers from from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic actual fun Memory.storeLongArray(\n offset: Int,\n source: LongArray,\n sourceOffset: Int,\n count: Int\n) {\n val typed = Int32Array(view.buffer, view.byteOffset + offset, count * 2)\n\n if (isLittleEndianPlatform) {\n for (index in 0 until count * 2 step 2) {\n val sourceIndex = index / 2 + sourceOffset\n val sourceValue = source[sourceIndex]\n typed[index] = (sourceValue ushr 32).toInt().reverseByteOrder()\n typed[index + 1] = (sourceValue and 0xffffffffL).toInt().reverseByteOrder()\n }\n } else {\n for (index in 0 until count * 2 step 2) {\n val sourceIndex = index / 2 + sourceOffset\n val sourceValue = source[sourceIndex]\n typed[index] = (sourceValue ushr 32).toInt()\n typed[index + 1] = (sourceValue and 0xffffffffL).toInt()\n }\n }\n}\n\n/**\n * Copies regular integers from from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic actual fun Memory.storeLongArray(\n offset: Long,\n source: LongArray,\n sourceOffset: Int,\n count: Int\n) {\n storeLongArray(offset.toIntOrFail(\"offset\"), source, sourceOffset, count)\n}\n\n/**\n * Copies floating point numbers from from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic actual fun Memory.storeFloatArray(\n offset: Int,\n source: FloatArray,\n sourceOffset: Int,\n count: Int\n) {\n val typed = Float32Array(view.buffer, view.byteOffset + offset, count)\n\n if (isLittleEndianPlatform) {\n repeat(count) { index ->\n typed[index] = source[index + sourceOffset].reverseByteOrder()\n }\n } else {\n repeat(count) { index ->\n typed[index] = source[index + sourceOffset]\n }\n }\n}\n\n/**\n * Copies floating point numbers from from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic actual fun Memory.storeFloatArray(\n offset: Long,\n source: FloatArray,\n sourceOffset: Int,\n count: Int\n) {\n storeFloatArray(offset.toIntOrFail(\"offset\"), source, sourceOffset, count)\n}\n\n/**\n * Copies floating point numbers from from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic actual fun Memory.storeDoubleArray(\n offset: Int,\n source: DoubleArray,\n sourceOffset: Int,\n count: Int\n) {\n val typed = Float64Array(view.buffer, view.byteOffset + offset, count)\n\n if (isLittleEndianPlatform) {\n repeat(count) { index ->\n typed[index] = source[index + sourceOffset].reverseByteOrder()\n }\n } else {\n repeat(count) { index ->\n typed[index] = source[index + sourceOffset]\n }\n }\n}\n\n/**\n * Copies floating point numbers from from the [source] array at [sourceOffset] to this memory at the specified [offset]\n * interpreting numbers in the network order (Big Endian).\n * @param sourceOffset items\n */\npublic actual fun Memory.storeDoubleArray(\n offset: Long,\n source: DoubleArray,\n sourceOffset: Int,\n count: Int\n) {\n storeDoubleArray(offset.toIntOrFail(\"offset\"), source, sourceOffset, count)\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// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.khronos.webgl\n\nimport kotlin.js.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.encryptedmedia.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.mediasource.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.fetch.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\npublic external interface WebGLContextAttributes {\n var alpha: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var depth: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var stencil: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var antialias: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var premultipliedAlpha: Boolean? /* = true */\n get() = definedExternally\n set(value) = definedExternally\n var preserveDrawingBuffer: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var preferLowPowerToHighPerformance: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n var failIfMajorPerformanceCaveat: Boolean? /* = false */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun WebGLContextAttributes(alpha: Boolean? = true, depth: Boolean? = true, stencil: Boolean? = false, antialias: Boolean? = true, premultipliedAlpha: Boolean? = true, preserveDrawingBuffer: Boolean? = false, preferLowPowerToHighPerformance: Boolean? = false, failIfMajorPerformanceCaveat: Boolean? = false): WebGLContextAttributes {\n val o = js(\"({})\")\n o[\"alpha\"] = alpha\n o[\"depth\"] = depth\n o[\"stencil\"] = stencil\n o[\"antialias\"] = antialias\n o[\"premultipliedAlpha\"] = premultipliedAlpha\n o[\"preserveDrawingBuffer\"] = preserveDrawingBuffer\n o[\"preferLowPowerToHighPerformance\"] = preferLowPowerToHighPerformance\n o[\"failIfMajorPerformanceCaveat\"] = failIfMajorPerformanceCaveat\n return o\n}\n\npublic external abstract class WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLBuffer](https://developer.mozilla.org/en/docs/Web/API/WebGLBuffer) to Kotlin\n */\npublic external abstract class WebGLBuffer : WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLFramebuffer](https://developer.mozilla.org/en/docs/Web/API/WebGLFramebuffer) to Kotlin\n */\npublic external abstract class WebGLFramebuffer : WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLProgram](https://developer.mozilla.org/en/docs/Web/API/WebGLProgram) to Kotlin\n */\npublic external abstract class WebGLProgram : WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLRenderbuffer](https://developer.mozilla.org/en/docs/Web/API/WebGLRenderbuffer) to Kotlin\n */\npublic external abstract class WebGLRenderbuffer : WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLShader](https://developer.mozilla.org/en/docs/Web/API/WebGLShader) to Kotlin\n */\npublic external abstract class WebGLShader : WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLTexture](https://developer.mozilla.org/en/docs/Web/API/WebGLTexture) to Kotlin\n */\npublic external abstract class WebGLTexture : WebGLObject\n\n/**\n * Exposes the JavaScript [WebGLUniformLocation](https://developer.mozilla.org/en/docs/Web/API/WebGLUniformLocation) to Kotlin\n */\npublic external abstract class WebGLUniformLocation\n\n/**\n * Exposes the JavaScript [WebGLActiveInfo](https://developer.mozilla.org/en/docs/Web/API/WebGLActiveInfo) to Kotlin\n */\npublic external abstract class WebGLActiveInfo {\n open val size: Int\n open val type: Int\n open val name: String\n}\n\n/**\n * Exposes the JavaScript [WebGLShaderPrecisionFormat](https://developer.mozilla.org/en/docs/Web/API/WebGLShaderPrecisionFormat) to Kotlin\n */\npublic external abstract class WebGLShaderPrecisionFormat {\n open val rangeMin: Int\n open val rangeMax: Int\n open val precision: Int\n}\n\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface WebGLRenderingContextBase {\n val canvas: HTMLCanvasElement\n val drawingBufferWidth: Int\n val drawingBufferHeight: Int\n fun getContextAttributes(): WebGLContextAttributes?\n fun isContextLost(): Boolean\n fun getSupportedExtensions(): Array?\n fun getExtension(name: String): dynamic\n fun activeTexture(texture: Int)\n fun attachShader(program: WebGLProgram?, shader: WebGLShader?)\n fun bindAttribLocation(program: WebGLProgram?, index: Int, name: String)\n fun bindBuffer(target: Int, buffer: WebGLBuffer?)\n fun bindFramebuffer(target: Int, framebuffer: WebGLFramebuffer?)\n fun bindRenderbuffer(target: Int, renderbuffer: WebGLRenderbuffer?)\n fun bindTexture(target: Int, texture: WebGLTexture?)\n fun blendColor(red: Float, green: Float, blue: Float, alpha: Float)\n fun blendEquation(mode: Int)\n fun blendEquationSeparate(modeRGB: Int, modeAlpha: Int)\n fun blendFunc(sfactor: Int, dfactor: Int)\n fun blendFuncSeparate(srcRGB: Int, dstRGB: Int, srcAlpha: Int, dstAlpha: Int)\n fun bufferData(target: Int, size: Int, usage: Int)\n fun bufferData(target: Int, data: BufferDataSource?, usage: Int)\n fun bufferSubData(target: Int, offset: Int, data: BufferDataSource?)\n fun checkFramebufferStatus(target: Int): Int\n fun clear(mask: Int)\n fun clearColor(red: Float, green: Float, blue: Float, alpha: Float)\n fun clearDepth(depth: Float)\n fun clearStencil(s: Int)\n fun colorMask(red: Boolean, green: Boolean, blue: Boolean, alpha: Boolean)\n fun compileShader(shader: WebGLShader?)\n fun compressedTexImage2D(target: Int, level: Int, internalformat: Int, width: Int, height: Int, border: Int, data: ArrayBufferView)\n fun compressedTexSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, width: Int, height: Int, format: Int, data: ArrayBufferView)\n fun copyTexImage2D(target: Int, level: Int, internalformat: Int, x: Int, y: Int, width: Int, height: Int, border: Int)\n fun copyTexSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, x: Int, y: Int, width: Int, height: Int)\n fun createBuffer(): WebGLBuffer?\n fun createFramebuffer(): WebGLFramebuffer?\n fun createProgram(): WebGLProgram?\n fun createRenderbuffer(): WebGLRenderbuffer?\n fun createShader(type: Int): WebGLShader?\n fun createTexture(): WebGLTexture?\n fun cullFace(mode: Int)\n fun deleteBuffer(buffer: WebGLBuffer?)\n fun deleteFramebuffer(framebuffer: WebGLFramebuffer?)\n fun deleteProgram(program: WebGLProgram?)\n fun deleteRenderbuffer(renderbuffer: WebGLRenderbuffer?)\n fun deleteShader(shader: WebGLShader?)\n fun deleteTexture(texture: WebGLTexture?)\n fun depthFunc(func: Int)\n fun depthMask(flag: Boolean)\n fun depthRange(zNear: Float, zFar: Float)\n fun detachShader(program: WebGLProgram?, shader: WebGLShader?)\n fun disable(cap: Int)\n fun disableVertexAttribArray(index: Int)\n fun drawArrays(mode: Int, first: Int, count: Int)\n fun drawElements(mode: Int, count: Int, type: Int, offset: Int)\n fun enable(cap: Int)\n fun enableVertexAttribArray(index: Int)\n fun finish()\n fun flush()\n fun framebufferRenderbuffer(target: Int, attachment: Int, renderbuffertarget: Int, renderbuffer: WebGLRenderbuffer?)\n fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: WebGLTexture?, level: Int)\n fun frontFace(mode: Int)\n fun generateMipmap(target: Int)\n fun getActiveAttrib(program: WebGLProgram?, index: Int): WebGLActiveInfo?\n fun getActiveUniform(program: WebGLProgram?, index: Int): WebGLActiveInfo?\n fun getAttachedShaders(program: WebGLProgram?): Array?\n fun getAttribLocation(program: WebGLProgram?, name: String): Int\n fun getBufferParameter(target: Int, pname: Int): Any?\n fun getParameter(pname: Int): Any?\n fun getError(): Int\n fun getFramebufferAttachmentParameter(target: Int, attachment: Int, pname: Int): Any?\n fun getProgramParameter(program: WebGLProgram?, pname: Int): Any?\n fun getProgramInfoLog(program: WebGLProgram?): String?\n fun getRenderbufferParameter(target: Int, pname: Int): Any?\n fun getShaderParameter(shader: WebGLShader?, pname: Int): Any?\n fun getShaderPrecisionFormat(shadertype: Int, precisiontype: Int): WebGLShaderPrecisionFormat?\n fun getShaderInfoLog(shader: WebGLShader?): String?\n fun getShaderSource(shader: WebGLShader?): String?\n fun getTexParameter(target: Int, pname: Int): Any?\n fun getUniform(program: WebGLProgram?, location: WebGLUniformLocation?): Any?\n fun getUniformLocation(program: WebGLProgram?, name: String): WebGLUniformLocation?\n fun getVertexAttrib(index: Int, pname: Int): Any?\n fun getVertexAttribOffset(index: Int, pname: Int): Int\n fun hint(target: Int, mode: Int)\n fun isBuffer(buffer: WebGLBuffer?): Boolean\n fun isEnabled(cap: Int): Boolean\n fun isFramebuffer(framebuffer: WebGLFramebuffer?): Boolean\n fun isProgram(program: WebGLProgram?): Boolean\n fun isRenderbuffer(renderbuffer: WebGLRenderbuffer?): Boolean\n fun isShader(shader: WebGLShader?): Boolean\n fun isTexture(texture: WebGLTexture?): Boolean\n fun lineWidth(width: Float)\n fun linkProgram(program: WebGLProgram?)\n fun pixelStorei(pname: Int, param: Int)\n fun polygonOffset(factor: Float, units: Float)\n fun readPixels(x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, pixels: ArrayBufferView?)\n fun renderbufferStorage(target: Int, internalformat: Int, width: Int, height: Int)\n fun sampleCoverage(value: Float, invert: Boolean)\n fun scissor(x: Int, y: Int, width: Int, height: Int)\n fun shaderSource(shader: WebGLShader?, source: String)\n fun stencilFunc(func: Int, ref: Int, mask: Int)\n fun stencilFuncSeparate(face: Int, func: Int, ref: Int, mask: Int)\n fun stencilMask(mask: Int)\n fun stencilMaskSeparate(face: Int, mask: Int)\n fun stencilOp(fail: Int, zfail: Int, zpass: Int)\n fun stencilOpSeparate(face: Int, fail: Int, zfail: Int, zpass: Int)\n fun texImage2D(target: Int, level: Int, internalformat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, pixels: ArrayBufferView?)\n fun texImage2D(target: Int, level: Int, internalformat: Int, format: Int, type: Int, source: TexImageSource?)\n fun texParameterf(target: Int, pname: Int, param: Float)\n fun texParameteri(target: Int, pname: Int, param: Int)\n fun texSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, width: Int, height: Int, format: Int, type: Int, pixels: ArrayBufferView?)\n fun texSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, format: Int, type: Int, source: TexImageSource?)\n fun uniform1f(location: WebGLUniformLocation?, x: Float)\n fun uniform1fv(location: WebGLUniformLocation?, v: Float32Array)\n fun uniform1fv(location: WebGLUniformLocation?, v: Array)\n fun uniform1i(location: WebGLUniformLocation?, x: Int)\n fun uniform1iv(location: WebGLUniformLocation?, v: Int32Array)\n fun uniform1iv(location: WebGLUniformLocation?, v: Array)\n fun uniform2f(location: WebGLUniformLocation?, x: Float, y: Float)\n fun uniform2fv(location: WebGLUniformLocation?, v: Float32Array)\n fun uniform2fv(location: WebGLUniformLocation?, v: Array)\n fun uniform2i(location: WebGLUniformLocation?, x: Int, y: Int)\n fun uniform2iv(location: WebGLUniformLocation?, v: Int32Array)\n fun uniform2iv(location: WebGLUniformLocation?, v: Array)\n fun uniform3f(location: WebGLUniformLocation?, x: Float, y: Float, z: Float)\n fun uniform3fv(location: WebGLUniformLocation?, v: Float32Array)\n fun uniform3fv(location: WebGLUniformLocation?, v: Array)\n fun uniform3i(location: WebGLUniformLocation?, x: Int, y: Int, z: Int)\n fun uniform3iv(location: WebGLUniformLocation?, v: Int32Array)\n fun uniform3iv(location: WebGLUniformLocation?, v: Array)\n fun uniform4f(location: WebGLUniformLocation?, x: Float, y: Float, z: Float, w: Float)\n fun uniform4fv(location: WebGLUniformLocation?, v: Float32Array)\n fun uniform4fv(location: WebGLUniformLocation?, v: Array)\n fun uniform4i(location: WebGLUniformLocation?, x: Int, y: Int, z: Int, w: Int)\n fun uniform4iv(location: WebGLUniformLocation?, v: Int32Array)\n fun uniform4iv(location: WebGLUniformLocation?, v: Array)\n fun uniformMatrix2fv(location: WebGLUniformLocation?, transpose: Boolean, value: Float32Array)\n fun uniformMatrix2fv(location: WebGLUniformLocation?, transpose: Boolean, value: Array)\n fun uniformMatrix3fv(location: WebGLUniformLocation?, transpose: Boolean, value: Float32Array)\n fun uniformMatrix3fv(location: WebGLUniformLocation?, transpose: Boolean, value: Array)\n fun uniformMatrix4fv(location: WebGLUniformLocation?, transpose: Boolean, value: Float32Array)\n fun uniformMatrix4fv(location: WebGLUniformLocation?, transpose: Boolean, value: Array)\n fun useProgram(program: WebGLProgram?)\n fun validateProgram(program: WebGLProgram?)\n fun vertexAttrib1f(index: Int, x: Float)\n fun vertexAttrib1fv(index: Int, values: dynamic)\n fun vertexAttrib2f(index: Int, x: Float, y: Float)\n fun vertexAttrib2fv(index: Int, values: dynamic)\n fun vertexAttrib3f(index: Int, x: Float, y: Float, z: Float)\n fun vertexAttrib3fv(index: Int, values: dynamic)\n fun vertexAttrib4f(index: Int, x: Float, y: Float, z: Float, w: Float)\n fun vertexAttrib4fv(index: Int, values: dynamic)\n fun vertexAttribPointer(index: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int)\n fun viewport(x: Int, y: Int, width: Int, height: Int)\n\n companion object {\n val DEPTH_BUFFER_BIT: Int\n val STENCIL_BUFFER_BIT: Int\n val COLOR_BUFFER_BIT: Int\n val POINTS: Int\n val LINES: Int\n val LINE_LOOP: Int\n val LINE_STRIP: Int\n val TRIANGLES: Int\n val TRIANGLE_STRIP: Int\n val TRIANGLE_FAN: Int\n val ZERO: Int\n val ONE: Int\n val SRC_COLOR: Int\n val ONE_MINUS_SRC_COLOR: Int\n val SRC_ALPHA: Int\n val ONE_MINUS_SRC_ALPHA: Int\n val DST_ALPHA: Int\n val ONE_MINUS_DST_ALPHA: Int\n val DST_COLOR: Int\n val ONE_MINUS_DST_COLOR: Int\n val SRC_ALPHA_SATURATE: Int\n val FUNC_ADD: Int\n val BLEND_EQUATION: Int\n val BLEND_EQUATION_RGB: Int\n val BLEND_EQUATION_ALPHA: Int\n val FUNC_SUBTRACT: Int\n val FUNC_REVERSE_SUBTRACT: Int\n val BLEND_DST_RGB: Int\n val BLEND_SRC_RGB: Int\n val BLEND_DST_ALPHA: Int\n val BLEND_SRC_ALPHA: Int\n val CONSTANT_COLOR: Int\n val ONE_MINUS_CONSTANT_COLOR: Int\n val CONSTANT_ALPHA: Int\n val ONE_MINUS_CONSTANT_ALPHA: Int\n val BLEND_COLOR: Int\n val ARRAY_BUFFER: Int\n val ELEMENT_ARRAY_BUFFER: Int\n val ARRAY_BUFFER_BINDING: Int\n val ELEMENT_ARRAY_BUFFER_BINDING: Int\n val STREAM_DRAW: Int\n val STATIC_DRAW: Int\n val DYNAMIC_DRAW: Int\n val BUFFER_SIZE: Int\n val BUFFER_USAGE: Int\n val CURRENT_VERTEX_ATTRIB: Int\n val FRONT: Int\n val BACK: Int\n val FRONT_AND_BACK: Int\n val CULL_FACE: Int\n val BLEND: Int\n val DITHER: Int\n val STENCIL_TEST: Int\n val DEPTH_TEST: Int\n val SCISSOR_TEST: Int\n val POLYGON_OFFSET_FILL: Int\n val SAMPLE_ALPHA_TO_COVERAGE: Int\n val SAMPLE_COVERAGE: Int\n val NO_ERROR: Int\n val INVALID_ENUM: Int\n val INVALID_VALUE: Int\n val INVALID_OPERATION: Int\n val OUT_OF_MEMORY: Int\n val CW: Int\n val CCW: Int\n val LINE_WIDTH: Int\n val ALIASED_POINT_SIZE_RANGE: Int\n val ALIASED_LINE_WIDTH_RANGE: Int\n val CULL_FACE_MODE: Int\n val FRONT_FACE: Int\n val DEPTH_RANGE: Int\n val DEPTH_WRITEMASK: Int\n val DEPTH_CLEAR_VALUE: Int\n val DEPTH_FUNC: Int\n val STENCIL_CLEAR_VALUE: Int\n val STENCIL_FUNC: Int\n val STENCIL_FAIL: Int\n val STENCIL_PASS_DEPTH_FAIL: Int\n val STENCIL_PASS_DEPTH_PASS: Int\n val STENCIL_REF: Int\n val STENCIL_VALUE_MASK: Int\n val STENCIL_WRITEMASK: Int\n val STENCIL_BACK_FUNC: Int\n val STENCIL_BACK_FAIL: Int\n val STENCIL_BACK_PASS_DEPTH_FAIL: Int\n val STENCIL_BACK_PASS_DEPTH_PASS: Int\n val STENCIL_BACK_REF: Int\n val STENCIL_BACK_VALUE_MASK: Int\n val STENCIL_BACK_WRITEMASK: Int\n val VIEWPORT: Int\n val SCISSOR_BOX: Int\n val COLOR_CLEAR_VALUE: Int\n val COLOR_WRITEMASK: Int\n val UNPACK_ALIGNMENT: Int\n val PACK_ALIGNMENT: Int\n val MAX_TEXTURE_SIZE: Int\n val MAX_VIEWPORT_DIMS: Int\n val SUBPIXEL_BITS: Int\n val RED_BITS: Int\n val GREEN_BITS: Int\n val BLUE_BITS: Int\n val ALPHA_BITS: Int\n val DEPTH_BITS: Int\n val STENCIL_BITS: Int\n val POLYGON_OFFSET_UNITS: Int\n val POLYGON_OFFSET_FACTOR: Int\n val TEXTURE_BINDING_2D: Int\n val SAMPLE_BUFFERS: Int\n val SAMPLES: Int\n val SAMPLE_COVERAGE_VALUE: Int\n val SAMPLE_COVERAGE_INVERT: Int\n val COMPRESSED_TEXTURE_FORMATS: Int\n val DONT_CARE: Int\n val FASTEST: Int\n val NICEST: Int\n val GENERATE_MIPMAP_HINT: Int\n val BYTE: Int\n val UNSIGNED_BYTE: Int\n val SHORT: Int\n val UNSIGNED_SHORT: Int\n val INT: Int\n val UNSIGNED_INT: Int\n val FLOAT: Int\n val DEPTH_COMPONENT: Int\n val ALPHA: Int\n val RGB: Int\n val RGBA: Int\n val LUMINANCE: Int\n val LUMINANCE_ALPHA: Int\n val UNSIGNED_SHORT_4_4_4_4: Int\n val UNSIGNED_SHORT_5_5_5_1: Int\n val UNSIGNED_SHORT_5_6_5: Int\n val FRAGMENT_SHADER: Int\n val VERTEX_SHADER: Int\n val MAX_VERTEX_ATTRIBS: Int\n val MAX_VERTEX_UNIFORM_VECTORS: Int\n val MAX_VARYING_VECTORS: Int\n val MAX_COMBINED_TEXTURE_IMAGE_UNITS: Int\n val MAX_VERTEX_TEXTURE_IMAGE_UNITS: Int\n val MAX_TEXTURE_IMAGE_UNITS: Int\n val MAX_FRAGMENT_UNIFORM_VECTORS: Int\n val SHADER_TYPE: Int\n val DELETE_STATUS: Int\n val LINK_STATUS: Int\n val VALIDATE_STATUS: Int\n val ATTACHED_SHADERS: Int\n val ACTIVE_UNIFORMS: Int\n val ACTIVE_ATTRIBUTES: Int\n val SHADING_LANGUAGE_VERSION: Int\n val CURRENT_PROGRAM: Int\n val NEVER: Int\n val LESS: Int\n val EQUAL: Int\n val LEQUAL: Int\n val GREATER: Int\n val NOTEQUAL: Int\n val GEQUAL: Int\n val ALWAYS: Int\n val KEEP: Int\n val REPLACE: Int\n val INCR: Int\n val DECR: Int\n val INVERT: Int\n val INCR_WRAP: Int\n val DECR_WRAP: Int\n val VENDOR: Int\n val RENDERER: Int\n val VERSION: Int\n val NEAREST: Int\n val LINEAR: Int\n val NEAREST_MIPMAP_NEAREST: Int\n val LINEAR_MIPMAP_NEAREST: Int\n val NEAREST_MIPMAP_LINEAR: Int\n val LINEAR_MIPMAP_LINEAR: Int\n val TEXTURE_MAG_FILTER: Int\n val TEXTURE_MIN_FILTER: Int\n val TEXTURE_WRAP_S: Int\n val TEXTURE_WRAP_T: Int\n val TEXTURE_2D: Int\n val TEXTURE: Int\n val TEXTURE_CUBE_MAP: Int\n val TEXTURE_BINDING_CUBE_MAP: Int\n val TEXTURE_CUBE_MAP_POSITIVE_X: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_X: Int\n val TEXTURE_CUBE_MAP_POSITIVE_Y: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_Y: Int\n val TEXTURE_CUBE_MAP_POSITIVE_Z: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_Z: Int\n val MAX_CUBE_MAP_TEXTURE_SIZE: Int\n val TEXTURE0: Int\n val TEXTURE1: Int\n val TEXTURE2: Int\n val TEXTURE3: Int\n val TEXTURE4: Int\n val TEXTURE5: Int\n val TEXTURE6: Int\n val TEXTURE7: Int\n val TEXTURE8: Int\n val TEXTURE9: Int\n val TEXTURE10: Int\n val TEXTURE11: Int\n val TEXTURE12: Int\n val TEXTURE13: Int\n val TEXTURE14: Int\n val TEXTURE15: Int\n val TEXTURE16: Int\n val TEXTURE17: Int\n val TEXTURE18: Int\n val TEXTURE19: Int\n val TEXTURE20: Int\n val TEXTURE21: Int\n val TEXTURE22: Int\n val TEXTURE23: Int\n val TEXTURE24: Int\n val TEXTURE25: Int\n val TEXTURE26: Int\n val TEXTURE27: Int\n val TEXTURE28: Int\n val TEXTURE29: Int\n val TEXTURE30: Int\n val TEXTURE31: Int\n val ACTIVE_TEXTURE: Int\n val REPEAT: Int\n val CLAMP_TO_EDGE: Int\n val MIRRORED_REPEAT: Int\n val FLOAT_VEC2: Int\n val FLOAT_VEC3: Int\n val FLOAT_VEC4: Int\n val INT_VEC2: Int\n val INT_VEC3: Int\n val INT_VEC4: Int\n val BOOL: Int\n val BOOL_VEC2: Int\n val BOOL_VEC3: Int\n val BOOL_VEC4: Int\n val FLOAT_MAT2: Int\n val FLOAT_MAT3: Int\n val FLOAT_MAT4: Int\n val SAMPLER_2D: Int\n val SAMPLER_CUBE: Int\n val VERTEX_ATTRIB_ARRAY_ENABLED: Int\n val VERTEX_ATTRIB_ARRAY_SIZE: Int\n val VERTEX_ATTRIB_ARRAY_STRIDE: Int\n val VERTEX_ATTRIB_ARRAY_TYPE: Int\n val VERTEX_ATTRIB_ARRAY_NORMALIZED: Int\n val VERTEX_ATTRIB_ARRAY_POINTER: Int\n val VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: Int\n val IMPLEMENTATION_COLOR_READ_TYPE: Int\n val IMPLEMENTATION_COLOR_READ_FORMAT: Int\n val COMPILE_STATUS: Int\n val LOW_FLOAT: Int\n val MEDIUM_FLOAT: Int\n val HIGH_FLOAT: Int\n val LOW_INT: Int\n val MEDIUM_INT: Int\n val HIGH_INT: Int\n val FRAMEBUFFER: Int\n val RENDERBUFFER: Int\n val RGBA4: Int\n val RGB5_A1: Int\n val RGB565: Int\n val DEPTH_COMPONENT16: Int\n val STENCIL_INDEX: Int\n val STENCIL_INDEX8: Int\n val DEPTH_STENCIL: Int\n val RENDERBUFFER_WIDTH: Int\n val RENDERBUFFER_HEIGHT: Int\n val RENDERBUFFER_INTERNAL_FORMAT: Int\n val RENDERBUFFER_RED_SIZE: Int\n val RENDERBUFFER_GREEN_SIZE: Int\n val RENDERBUFFER_BLUE_SIZE: Int\n val RENDERBUFFER_ALPHA_SIZE: Int\n val RENDERBUFFER_DEPTH_SIZE: Int\n val RENDERBUFFER_STENCIL_SIZE: Int\n val FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: Int\n val FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: Int\n val FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: Int\n val FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: Int\n val COLOR_ATTACHMENT0: Int\n val DEPTH_ATTACHMENT: Int\n val STENCIL_ATTACHMENT: Int\n val DEPTH_STENCIL_ATTACHMENT: Int\n val NONE: Int\n val FRAMEBUFFER_COMPLETE: Int\n val FRAMEBUFFER_INCOMPLETE_ATTACHMENT: Int\n val FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: Int\n val FRAMEBUFFER_INCOMPLETE_DIMENSIONS: Int\n val FRAMEBUFFER_UNSUPPORTED: Int\n val FRAMEBUFFER_BINDING: Int\n val RENDERBUFFER_BINDING: Int\n val MAX_RENDERBUFFER_SIZE: Int\n val INVALID_FRAMEBUFFER_OPERATION: Int\n val UNPACK_FLIP_Y_WEBGL: Int\n val UNPACK_PREMULTIPLY_ALPHA_WEBGL: Int\n val CONTEXT_LOST_WEBGL: Int\n val UNPACK_COLORSPACE_CONVERSION_WEBGL: Int\n val BROWSER_DEFAULT_WEBGL: Int\n }\n}\n\n/**\n * Exposes the JavaScript [WebGLRenderingContext](https://developer.mozilla.org/en/docs/Web/API/WebGLRenderingContext) to Kotlin\n */\npublic external abstract class WebGLRenderingContext : WebGLRenderingContextBase, RenderingContext {\n companion object {\n val DEPTH_BUFFER_BIT: Int\n val STENCIL_BUFFER_BIT: Int\n val COLOR_BUFFER_BIT: Int\n val POINTS: Int\n val LINES: Int\n val LINE_LOOP: Int\n val LINE_STRIP: Int\n val TRIANGLES: Int\n val TRIANGLE_STRIP: Int\n val TRIANGLE_FAN: Int\n val ZERO: Int\n val ONE: Int\n val SRC_COLOR: Int\n val ONE_MINUS_SRC_COLOR: Int\n val SRC_ALPHA: Int\n val ONE_MINUS_SRC_ALPHA: Int\n val DST_ALPHA: Int\n val ONE_MINUS_DST_ALPHA: Int\n val DST_COLOR: Int\n val ONE_MINUS_DST_COLOR: Int\n val SRC_ALPHA_SATURATE: Int\n val FUNC_ADD: Int\n val BLEND_EQUATION: Int\n val BLEND_EQUATION_RGB: Int\n val BLEND_EQUATION_ALPHA: Int\n val FUNC_SUBTRACT: Int\n val FUNC_REVERSE_SUBTRACT: Int\n val BLEND_DST_RGB: Int\n val BLEND_SRC_RGB: Int\n val BLEND_DST_ALPHA: Int\n val BLEND_SRC_ALPHA: Int\n val CONSTANT_COLOR: Int\n val ONE_MINUS_CONSTANT_COLOR: Int\n val CONSTANT_ALPHA: Int\n val ONE_MINUS_CONSTANT_ALPHA: Int\n val BLEND_COLOR: Int\n val ARRAY_BUFFER: Int\n val ELEMENT_ARRAY_BUFFER: Int\n val ARRAY_BUFFER_BINDING: Int\n val ELEMENT_ARRAY_BUFFER_BINDING: Int\n val STREAM_DRAW: Int\n val STATIC_DRAW: Int\n val DYNAMIC_DRAW: Int\n val BUFFER_SIZE: Int\n val BUFFER_USAGE: Int\n val CURRENT_VERTEX_ATTRIB: Int\n val FRONT: Int\n val BACK: Int\n val FRONT_AND_BACK: Int\n val CULL_FACE: Int\n val BLEND: Int\n val DITHER: Int\n val STENCIL_TEST: Int\n val DEPTH_TEST: Int\n val SCISSOR_TEST: Int\n val POLYGON_OFFSET_FILL: Int\n val SAMPLE_ALPHA_TO_COVERAGE: Int\n val SAMPLE_COVERAGE: Int\n val NO_ERROR: Int\n val INVALID_ENUM: Int\n val INVALID_VALUE: Int\n val INVALID_OPERATION: Int\n val OUT_OF_MEMORY: Int\n val CW: Int\n val CCW: Int\n val LINE_WIDTH: Int\n val ALIASED_POINT_SIZE_RANGE: Int\n val ALIASED_LINE_WIDTH_RANGE: Int\n val CULL_FACE_MODE: Int\n val FRONT_FACE: Int\n val DEPTH_RANGE: Int\n val DEPTH_WRITEMASK: Int\n val DEPTH_CLEAR_VALUE: Int\n val DEPTH_FUNC: Int\n val STENCIL_CLEAR_VALUE: Int\n val STENCIL_FUNC: Int\n val STENCIL_FAIL: Int\n val STENCIL_PASS_DEPTH_FAIL: Int\n val STENCIL_PASS_DEPTH_PASS: Int\n val STENCIL_REF: Int\n val STENCIL_VALUE_MASK: Int\n val STENCIL_WRITEMASK: Int\n val STENCIL_BACK_FUNC: Int\n val STENCIL_BACK_FAIL: Int\n val STENCIL_BACK_PASS_DEPTH_FAIL: Int\n val STENCIL_BACK_PASS_DEPTH_PASS: Int\n val STENCIL_BACK_REF: Int\n val STENCIL_BACK_VALUE_MASK: Int\n val STENCIL_BACK_WRITEMASK: Int\n val VIEWPORT: Int\n val SCISSOR_BOX: Int\n val COLOR_CLEAR_VALUE: Int\n val COLOR_WRITEMASK: Int\n val UNPACK_ALIGNMENT: Int\n val PACK_ALIGNMENT: Int\n val MAX_TEXTURE_SIZE: Int\n val MAX_VIEWPORT_DIMS: Int\n val SUBPIXEL_BITS: Int\n val RED_BITS: Int\n val GREEN_BITS: Int\n val BLUE_BITS: Int\n val ALPHA_BITS: Int\n val DEPTH_BITS: Int\n val STENCIL_BITS: Int\n val POLYGON_OFFSET_UNITS: Int\n val POLYGON_OFFSET_FACTOR: Int\n val TEXTURE_BINDING_2D: Int\n val SAMPLE_BUFFERS: Int\n val SAMPLES: Int\n val SAMPLE_COVERAGE_VALUE: Int\n val SAMPLE_COVERAGE_INVERT: Int\n val COMPRESSED_TEXTURE_FORMATS: Int\n val DONT_CARE: Int\n val FASTEST: Int\n val NICEST: Int\n val GENERATE_MIPMAP_HINT: Int\n val BYTE: Int\n val UNSIGNED_BYTE: Int\n val SHORT: Int\n val UNSIGNED_SHORT: Int\n val INT: Int\n val UNSIGNED_INT: Int\n val FLOAT: Int\n val DEPTH_COMPONENT: Int\n val ALPHA: Int\n val RGB: Int\n val RGBA: Int\n val LUMINANCE: Int\n val LUMINANCE_ALPHA: Int\n val UNSIGNED_SHORT_4_4_4_4: Int\n val UNSIGNED_SHORT_5_5_5_1: Int\n val UNSIGNED_SHORT_5_6_5: Int\n val FRAGMENT_SHADER: Int\n val VERTEX_SHADER: Int\n val MAX_VERTEX_ATTRIBS: Int\n val MAX_VERTEX_UNIFORM_VECTORS: Int\n val MAX_VARYING_VECTORS: Int\n val MAX_COMBINED_TEXTURE_IMAGE_UNITS: Int\n val MAX_VERTEX_TEXTURE_IMAGE_UNITS: Int\n val MAX_TEXTURE_IMAGE_UNITS: Int\n val MAX_FRAGMENT_UNIFORM_VECTORS: Int\n val SHADER_TYPE: Int\n val DELETE_STATUS: Int\n val LINK_STATUS: Int\n val VALIDATE_STATUS: Int\n val ATTACHED_SHADERS: Int\n val ACTIVE_UNIFORMS: Int\n val ACTIVE_ATTRIBUTES: Int\n val SHADING_LANGUAGE_VERSION: Int\n val CURRENT_PROGRAM: Int\n val NEVER: Int\n val LESS: Int\n val EQUAL: Int\n val LEQUAL: Int\n val GREATER: Int\n val NOTEQUAL: Int\n val GEQUAL: Int\n val ALWAYS: Int\n val KEEP: Int\n val REPLACE: Int\n val INCR: Int\n val DECR: Int\n val INVERT: Int\n val INCR_WRAP: Int\n val DECR_WRAP: Int\n val VENDOR: Int\n val RENDERER: Int\n val VERSION: Int\n val NEAREST: Int\n val LINEAR: Int\n val NEAREST_MIPMAP_NEAREST: Int\n val LINEAR_MIPMAP_NEAREST: Int\n val NEAREST_MIPMAP_LINEAR: Int\n val LINEAR_MIPMAP_LINEAR: Int\n val TEXTURE_MAG_FILTER: Int\n val TEXTURE_MIN_FILTER: Int\n val TEXTURE_WRAP_S: Int\n val TEXTURE_WRAP_T: Int\n val TEXTURE_2D: Int\n val TEXTURE: Int\n val TEXTURE_CUBE_MAP: Int\n val TEXTURE_BINDING_CUBE_MAP: Int\n val TEXTURE_CUBE_MAP_POSITIVE_X: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_X: Int\n val TEXTURE_CUBE_MAP_POSITIVE_Y: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_Y: Int\n val TEXTURE_CUBE_MAP_POSITIVE_Z: Int\n val TEXTURE_CUBE_MAP_NEGATIVE_Z: Int\n val MAX_CUBE_MAP_TEXTURE_SIZE: Int\n val TEXTURE0: Int\n val TEXTURE1: Int\n val TEXTURE2: Int\n val TEXTURE3: Int\n val TEXTURE4: Int\n val TEXTURE5: Int\n val TEXTURE6: Int\n val TEXTURE7: Int\n val TEXTURE8: Int\n val TEXTURE9: Int\n val TEXTURE10: Int\n val TEXTURE11: Int\n val TEXTURE12: Int\n val TEXTURE13: Int\n val TEXTURE14: Int\n val TEXTURE15: Int\n val TEXTURE16: Int\n val TEXTURE17: Int\n val TEXTURE18: Int\n val TEXTURE19: Int\n val TEXTURE20: Int\n val TEXTURE21: Int\n val TEXTURE22: Int\n val TEXTURE23: Int\n val TEXTURE24: Int\n val TEXTURE25: Int\n val TEXTURE26: Int\n val TEXTURE27: Int\n val TEXTURE28: Int\n val TEXTURE29: Int\n val TEXTURE30: Int\n val TEXTURE31: Int\n val ACTIVE_TEXTURE: Int\n val REPEAT: Int\n val CLAMP_TO_EDGE: Int\n val MIRRORED_REPEAT: Int\n val FLOAT_VEC2: Int\n val FLOAT_VEC3: Int\n val FLOAT_VEC4: Int\n val INT_VEC2: Int\n val INT_VEC3: Int\n val INT_VEC4: Int\n val BOOL: Int\n val BOOL_VEC2: Int\n val BOOL_VEC3: Int\n val BOOL_VEC4: Int\n val FLOAT_MAT2: Int\n val FLOAT_MAT3: Int\n val FLOAT_MAT4: Int\n val SAMPLER_2D: Int\n val SAMPLER_CUBE: Int\n val VERTEX_ATTRIB_ARRAY_ENABLED: Int\n val VERTEX_ATTRIB_ARRAY_SIZE: Int\n val VERTEX_ATTRIB_ARRAY_STRIDE: Int\n val VERTEX_ATTRIB_ARRAY_TYPE: Int\n val VERTEX_ATTRIB_ARRAY_NORMALIZED: Int\n val VERTEX_ATTRIB_ARRAY_POINTER: Int\n val VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: Int\n val IMPLEMENTATION_COLOR_READ_TYPE: Int\n val IMPLEMENTATION_COLOR_READ_FORMAT: Int\n val COMPILE_STATUS: Int\n val LOW_FLOAT: Int\n val MEDIUM_FLOAT: Int\n val HIGH_FLOAT: Int\n val LOW_INT: Int\n val MEDIUM_INT: Int\n val HIGH_INT: Int\n val FRAMEBUFFER: Int\n val RENDERBUFFER: Int\n val RGBA4: Int\n val RGB5_A1: Int\n val RGB565: Int\n val DEPTH_COMPONENT16: Int\n val STENCIL_INDEX: Int\n val STENCIL_INDEX8: Int\n val DEPTH_STENCIL: Int\n val RENDERBUFFER_WIDTH: Int\n val RENDERBUFFER_HEIGHT: Int\n val RENDERBUFFER_INTERNAL_FORMAT: Int\n val RENDERBUFFER_RED_SIZE: Int\n val RENDERBUFFER_GREEN_SIZE: Int\n val RENDERBUFFER_BLUE_SIZE: Int\n val RENDERBUFFER_ALPHA_SIZE: Int\n val RENDERBUFFER_DEPTH_SIZE: Int\n val RENDERBUFFER_STENCIL_SIZE: Int\n val FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: Int\n val FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: Int\n val FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: Int\n val FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: Int\n val COLOR_ATTACHMENT0: Int\n val DEPTH_ATTACHMENT: Int\n val STENCIL_ATTACHMENT: Int\n val DEPTH_STENCIL_ATTACHMENT: Int\n val NONE: Int\n val FRAMEBUFFER_COMPLETE: Int\n val FRAMEBUFFER_INCOMPLETE_ATTACHMENT: Int\n val FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: Int\n val FRAMEBUFFER_INCOMPLETE_DIMENSIONS: Int\n val FRAMEBUFFER_UNSUPPORTED: Int\n val FRAMEBUFFER_BINDING: Int\n val RENDERBUFFER_BINDING: Int\n val MAX_RENDERBUFFER_SIZE: Int\n val INVALID_FRAMEBUFFER_OPERATION: Int\n val UNPACK_FLIP_Y_WEBGL: Int\n val UNPACK_PREMULTIPLY_ALPHA_WEBGL: Int\n val CONTEXT_LOST_WEBGL: Int\n val UNPACK_COLORSPACE_CONVERSION_WEBGL: Int\n val BROWSER_DEFAULT_WEBGL: Int\n }\n}\n\n/**\n * Exposes the JavaScript [WebGLContextEvent](https://developer.mozilla.org/en/docs/Web/API/WebGLContextEvent) to Kotlin\n */\npublic external open class WebGLContextEvent(type: String, eventInit: WebGLContextEventInit = definedExternally) : Event {\n open val statusMessage: String\n\n companion object {\n val NONE: Short\n val CAPTURING_PHASE: Short\n val AT_TARGET: Short\n val BUBBLING_PHASE: Short\n }\n}\n\npublic external interface WebGLContextEventInit : EventInit {\n var statusMessage: String? /* = \"\" */\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun WebGLContextEventInit(statusMessage: String? = \"\", bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): WebGLContextEventInit {\n val o = js(\"({})\")\n o[\"statusMessage\"] = statusMessage\n o[\"bubbles\"] = bubbles\n o[\"cancelable\"] = cancelable\n o[\"composed\"] = composed\n return o\n}\n\n/**\n * Exposes the JavaScript [ArrayBuffer](https://developer.mozilla.org/en/docs/Web/API/ArrayBuffer) to Kotlin\n */\npublic external open class ArrayBuffer(length: Int) : BufferDataSource {\n open val byteLength: Int\n fun slice(begin: Int, end: Int = definedExternally): ArrayBuffer\n\n companion object {\n fun isView(value: Any?): Boolean\n }\n}\n\n/**\n * Exposes the JavaScript [ArrayBufferView](https://developer.mozilla.org/en/docs/Web/API/ArrayBufferView) to Kotlin\n */\npublic external interface ArrayBufferView : BufferDataSource {\n val buffer: ArrayBuffer\n val byteOffset: Int\n val byteLength: Int\n}\n\n/**\n * Exposes the JavaScript [Int8Array](https://developer.mozilla.org/en/docs/Web/API/Int8Array) to Kotlin\n */\npublic external open class Int8Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Int8Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Int8Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Int8Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Int8Array.get(index: Int): Byte = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Int8Array.set(index: Int, value: Byte) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Uint8Array](https://developer.mozilla.org/en/docs/Web/API/Uint8Array) to Kotlin\n */\npublic external open class Uint8Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Uint8Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Uint8Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Uint8Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint8Array.get(index: Int): Byte = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint8Array.set(index: Int, value: Byte) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Uint8ClampedArray](https://developer.mozilla.org/en/docs/Web/API/Uint8ClampedArray) to Kotlin\n */\npublic external open class Uint8ClampedArray : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Uint8ClampedArray)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Uint8ClampedArray, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Uint8ClampedArray\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint8ClampedArray.get(index: Int): Byte = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint8ClampedArray.set(index: Int, value: Byte) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Int16Array](https://developer.mozilla.org/en/docs/Web/API/Int16Array) to Kotlin\n */\npublic external open class Int16Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Int16Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Int16Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Int16Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Int16Array.get(index: Int): Short = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Int16Array.set(index: Int, value: Short) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Uint16Array](https://developer.mozilla.org/en/docs/Web/API/Uint16Array) to Kotlin\n */\npublic external open class Uint16Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Uint16Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Uint16Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Uint16Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint16Array.get(index: Int): Short = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint16Array.set(index: Int, value: Short) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Int32Array](https://developer.mozilla.org/en/docs/Web/API/Int32Array) to Kotlin\n */\npublic external open class Int32Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Int32Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Int32Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Int32Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Int32Array.get(index: Int): Int = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Int32Array.set(index: Int, value: Int) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Uint32Array](https://developer.mozilla.org/en/docs/Web/API/Uint32Array) to Kotlin\n */\npublic external open class Uint32Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Uint32Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Uint32Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Uint32Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint32Array.get(index: Int): Int = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Uint32Array.set(index: Int, value: Int) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Float32Array](https://developer.mozilla.org/en/docs/Web/API/Float32Array) to Kotlin\n */\npublic external open class Float32Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Float32Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Float32Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Float32Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Float32Array.get(index: Int): Float = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Float32Array.set(index: Int, value: Float) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [Float64Array](https://developer.mozilla.org/en/docs/Web/API/Float64Array) to Kotlin\n */\npublic external open class Float64Array : ArrayBufferView {\n constructor(length: Int)\n constructor(array: Float64Array)\n constructor(array: Array)\n constructor(buffer: ArrayBuffer, byteOffset: Int = definedExternally, length: Int = definedExternally)\n open val length: Int\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun set(array: Float64Array, offset: Int = definedExternally)\n fun set(array: Array, offset: Int = definedExternally)\n fun subarray(start: Int, end: Int): Float64Array\n\n companion object {\n val BYTES_PER_ELEMENT: Int\n }\n}\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Float64Array.get(index: Int): Double = asDynamic()[index]\n\n@kotlin.internal.InlineOnly\npublic inline operator fun Float64Array.set(index: Int, value: Double) { asDynamic()[index] = value }\n\n/**\n * Exposes the JavaScript [DataView](https://developer.mozilla.org/en/docs/Web/API/DataView) to Kotlin\n */\npublic external open class DataView(buffer: ArrayBuffer, byteOffset: Int = definedExternally, byteLength: Int = definedExternally) : ArrayBufferView {\n override val buffer: ArrayBuffer\n override val byteOffset: Int\n override val byteLength: Int\n fun getInt8(byteOffset: Int): Byte\n fun getUint8(byteOffset: Int): Byte\n fun getInt16(byteOffset: Int, littleEndian: Boolean = definedExternally): Short\n fun getUint16(byteOffset: Int, littleEndian: Boolean = definedExternally): Short\n fun getInt32(byteOffset: Int, littleEndian: Boolean = definedExternally): Int\n fun getUint32(byteOffset: Int, littleEndian: Boolean = definedExternally): Int\n fun getFloat32(byteOffset: Int, littleEndian: Boolean = definedExternally): Float\n fun getFloat64(byteOffset: Int, littleEndian: Boolean = definedExternally): Double\n fun setInt8(byteOffset: Int, value: Byte)\n fun setUint8(byteOffset: Int, value: Byte)\n fun setInt16(byteOffset: Int, value: Short, littleEndian: Boolean = definedExternally)\n fun setUint16(byteOffset: Int, value: Short, littleEndian: Boolean = definedExternally)\n fun setInt32(byteOffset: Int, value: Int, littleEndian: Boolean = definedExternally)\n fun setUint32(byteOffset: Int, value: Int, littleEndian: Boolean = definedExternally)\n fun setFloat32(byteOffset: Int, value: Float, littleEndian: Boolean = definedExternally)\n fun setFloat64(byteOffset: Int, value: Double, littleEndian: Boolean = definedExternally)\n}\n\npublic external interface BufferDataSource\n\npublic external interface TexImageSource","package io.ktor.utils.io.charsets\n\nimport io.ktor.utils.io.core.*\nimport io.ktor.utils.io.js.*\nimport org.khronos.webgl.*\n\npublic actual abstract class Charset(internal val _name: String) {\n public actual abstract fun newEncoder(): CharsetEncoder\n public actual abstract fun newDecoder(): CharsetDecoder\n\n public actual companion object {\n public actual fun forName(name: String): Charset {\n if (name == \"UTF-8\" || name == \"utf-8\" || name == \"UTF8\" || name == \"utf8\") return Charsets.UTF_8\n if (name == \"ISO-8859-1\" || name == \"iso-8859-1\" || name.replace('_', '-').let {\n it == \"iso-8859-1\" || it.toLowerCase() == \"iso-8859-1\"\n } || name == \"latin1\"\n ) {\n return Charsets.ISO_8859_1\n }\n throw IllegalArgumentException(\"Charset $name is not supported\")\n }\n }\n}\n\npublic actual val Charset.name: String get() = _name\n\n// -----------------------\n\npublic actual abstract class CharsetEncoder(internal val _charset: Charset)\nprivate data class CharsetEncoderImpl(private val charset: Charset) : CharsetEncoder(charset)\npublic actual val CharsetEncoder.charset: Charset get() = _charset\n\npublic actual fun CharsetEncoder.encodeToByteArray(input: CharSequence, fromIndex: Int, toIndex: Int): ByteArray =\n encodeToByteArrayImpl1(input, fromIndex, toIndex)\n\ninternal actual fun CharsetEncoder.encodeImpl(input: CharSequence, fromIndex: Int, toIndex: Int, dst: Buffer): Int {\n require(fromIndex <= toIndex)\n if (charset == Charsets.ISO_8859_1) {\n return encodeISO88591(input, fromIndex, toIndex, dst)\n }\n\n require(charset === Charsets.UTF_8) { \"Only UTF-8 encoding is supported in JS\" }\n\n val encoder = TextEncoder() // Only UTF-8 is supported so we know that at most 6 bytes per character is used\n var start = fromIndex\n var dstRemaining = dst.writeRemaining\n\n while (start < toIndex && dstRemaining > 0) {\n val numChars = minOf(toIndex - start, dstRemaining / 6).coerceAtLeast(1)\n val dropLastChar = input[start + numChars - 1].isHighSurrogate()\n val endIndexExclusive = when {\n dropLastChar && numChars == 1 -> start + 2\n dropLastChar -> start + numChars - 1\n else -> start + numChars\n }\n\n val array1 = encoder.encode(input.substring(start, endIndexExclusive))\n if (array1.length > dstRemaining) break\n dst.writeFully(array1)\n start = endIndexExclusive\n dstRemaining -= array1.length\n }\n\n return start - fromIndex\n}\n\npublic actual fun CharsetEncoder.encodeUTF8(input: ByteReadPacket, dst: Output) {\n require(charset === Charsets.UTF_8)\n // we only support UTF-8 so as far as input is UTF-8 encoded string then we simply copy bytes\n dst.writePacket(input)\n}\n\ninternal actual fun CharsetEncoder.encodeComplete(dst: Buffer): Boolean = true\n\n// ----------------------------------------------------------------------\n\npublic actual abstract class CharsetDecoder(internal val _charset: Charset)\n\nprivate data class CharsetDecoderImpl(private val charset: Charset) : CharsetDecoder(charset)\n\npublic actual val CharsetDecoder.charset: Charset get() = _charset\n\ninternal actual fun CharsetDecoder.decodeBuffer(\n input: Buffer,\n out: Appendable,\n lastBuffer: Boolean,\n max: Int\n): Int {\n if (max == 0) return 0\n\n val decoder = Decoder(charset.name)\n val copied: Int\n\n input.readDirectInt8Array { view ->\n val result = view.decodeBufferImpl(decoder, max)\n out.append(result.charactersDecoded)\n copied = result.bytesConsumed\n\n result.bytesConsumed\n }\n\n return copied\n}\n\npublic actual fun CharsetDecoder.decode(input: Input, dst: Appendable, max: Int): Int {\n val decoder = Decoder(charset.name, true)\n var charactersCopied = 0\n\n // use decode stream while we have remaining characters count > buffer size in bytes\n // it is much faster than using decodeBufferImpl\n input.takeWhileSize { buffer ->\n val rem = max - charactersCopied\n val bufferSize = buffer.readRemaining\n if (rem < bufferSize) return@takeWhileSize 0\n\n buffer.readDirectInt8Array { view ->\n val decodedText = decodeWrap {\n decoder.decodeStream(view, stream = true)\n }\n dst.append(decodedText)\n charactersCopied += decodedText.length\n view.byteLength\n }\n\n when {\n charactersCopied == max -> {\n val tail = try {\n decoder.decode()\n } catch (_: dynamic) {\n \"\"\n }\n\n if (tail.isNotEmpty()) {\n // if we have a trailing byte then we can't handle this chunk via fast-path\n // because we don't know how many bytes in the end we need to preserve\n buffer.rewind(bufferSize)\n }\n 0\n }\n charactersCopied < max -> MAX_CHARACTERS_SIZE_IN_BYTES\n else -> 0\n }\n }\n\n if (charactersCopied < max) {\n var size = 1\n input.takeWhileSize(1) { buffer ->\n val rc = buffer.readDirectInt8Array { view ->\n val result = view.decodeBufferImpl(decoder, max - charactersCopied)\n dst.append(result.charactersDecoded)\n charactersCopied += result.charactersDecoded.length\n result.bytesConsumed\n }\n when {\n rc > 0 -> size = 1\n size == MAX_CHARACTERS_SIZE_IN_BYTES -> size = 0\n else -> size++\n }\n\n size\n }\n }\n\n return charactersCopied\n}\n\npublic actual fun CharsetDecoder.decodeExactBytes(input: Input, inputLength: Int): String {\n if (inputLength == 0) return \"\"\n if (input is AbstractInput && input.headRemaining >= inputLength) {\n val decoder = Decoder(charset._name, true)\n\n val head = input.head\n val view = input.headMemory.view\n\n val text = decodeWrap {\n val subView: ArrayBufferView = when {\n head.readPosition == 0 && inputLength == view.byteLength -> view\n else -> DataView(view.buffer, view.byteOffset + head.readPosition, inputLength)\n }\n\n decoder.decode(subView)\n }\n\n input.discardExact(inputLength)\n return text\n }\n\n return decodeExactBytesSlow(input, inputLength)\n}\n\n// -----------------------------------------------------------\n\npublic actual object Charsets {\n public actual val UTF_8: Charset = CharsetImpl(\"UTF-8\")\n public actual val ISO_8859_1: Charset = CharsetImpl(\"ISO-8859-1\")\n}\n\nprivate data class CharsetImpl(val name: String) : Charset(name) {\n override fun newEncoder(): CharsetEncoder = CharsetEncoderImpl(this)\n override fun newDecoder(): CharsetDecoder = CharsetDecoderImpl(this)\n}\n\npublic actual open class MalformedInputException actual constructor(message: String) : Throwable(message)\n\nprivate fun CharsetDecoder.decodeExactBytesSlow(input: Input, inputLength: Int): String {\n val decoder = Decoder(charset.name, true)\n var inputRemaining = inputLength\n val sb = StringBuilder(inputLength)\n\n decodeWrap {\n input.takeWhileSize(6) { buffer ->\n val chunkSize = buffer.readRemaining\n val size = minOf(chunkSize, inputRemaining)\n val text = when {\n buffer.readPosition == 0 && buffer.memory.view.byteLength == size -> decoder.decodeStream(\n buffer.memory.view,\n true\n )\n else -> decoder.decodeStream(\n Int8Array(\n buffer.memory.view.buffer,\n buffer.memory.view.byteOffset + buffer.readPosition,\n size\n ),\n true\n )\n }\n sb.append(text)\n\n buffer.discardExact(size)\n inputRemaining -= size\n\n if (inputRemaining > 0) 6 else 0\n }\n\n if (inputRemaining > 0) {\n input.takeWhile { buffer ->\n val chunkSize = buffer.readRemaining\n val size = minOf(chunkSize, inputRemaining)\n val text = when {\n buffer.readPosition == 0 && buffer.memory.view.byteLength == size -> {\n decoder.decode(buffer.memory.view)\n }\n else -> decoder.decodeStream(\n Int8Array(\n buffer.memory.view.buffer,\n buffer.memory.view.byteOffset + buffer.readPosition,\n size\n ),\n true\n )\n }\n sb.append(text)\n buffer.discardExact(size)\n inputRemaining -= size\n true\n }\n }\n\n sb.append(decoder.decode())\n }\n\n if (inputRemaining > 0) {\n throw EOFException(\n \"Not enough bytes available: had only ${inputLength - inputRemaining} instead of $inputLength\"\n )\n }\n return sb.toString()\n}\n","package io.ktor.utils.io.js\n\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.*\nimport org.khronos.webgl.*\n\n@Deprecated(\n \"Use readText with charset instead\",\n ReplaceWith(\n \"readText(Charset.forName(encoding), max)\",\n \"io.ktor.utils.io.core.readText\",\n \"io.ktor.utils.io.charsets.Charset\"\n )\n)\npublic fun ByteReadPacket.readText(encoding: String, max: Int = Int.MAX_VALUE): String =\n readText(Charset.forName(encoding), max)\n\n@Deprecated(\n \"Use readText with charset instead\",\n ReplaceWith(\n \"readText(out, Charset.forName(encoding), max)\",\n \"io.ktor.utils.io.core.readText\",\n \"io.ktor.utils.io.charsets.Charset\"\n )\n)\npublic fun ByteReadPacket.readText(encoding: String = \"UTF-8\", out: Appendable, max: Int = Int.MAX_VALUE): Int {\n return readText(out, Charset.forName(encoding), max)\n}\n\ninternal inline fun decodeWrap(block: () -> R): R {\n try {\n return block()\n } catch (t: Throwable) {\n throw MalformedInputException(\"Failed to decode bytes: ${t.message ?: \"no cause provided\"}\")\n }\n}\n","/*\n * Copyright 2014-2021 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.utils.io.js\n\nimport org.khronos.webgl.*\n\ninternal fun Decoder(encoding: String, fatal: Boolean = true): Decoder = try {\n TextDecoder(encoding, textDecoderOptions(fatal)).toKtor()\n} catch (cause: Throwable) {\n TextDecoderFallback(encoding, fatal)\n}\n\ninternal interface Decoder {\n fun decode(): String\n fun decode(buffer: ArrayBufferView): String\n fun decode(buffer: ArrayBufferView, options: dynamic): String\n}\n\ninternal inline fun Decoder.decodeStream(buffer: ArrayBufferView, stream: Boolean): String {\n decodeWrap {\n return decode(buffer, decodeOptions(stream))\n }\n}\n\ninternal fun decodeOptions(stream: Boolean): dynamic = Any().apply {\n with(this.asDynamic()) {\n this.stream = stream\n }\n}\n","package io.ktor.utils.io.charsets\n\nimport io.ktor.utils.io.js.*\nimport org.khronos.webgl.*\n\n// I don't know any characters that have longer characters\ninternal const val MAX_CHARACTERS_SIZE_IN_BYTES: Int = 8\nprivate const val MAX_CHARACTERS_COUNT = Int.MAX_VALUE / MAX_CHARACTERS_SIZE_IN_BYTES\n\ninternal data class DecodeBufferResult(val charactersDecoded: String, val bytesConsumed: Int)\n\ninternal fun Int8Array.decodeBufferImpl(nativeDecoder: Decoder, maxCharacters: Int): DecodeBufferResult {\n if (maxCharacters == 0) {\n return DecodeBufferResult(\"\", 0)\n }\n\n // fast-path: try to assume that we have 1 byte per character content\n try {\n val sizeInBytes = maxCharacters.coerceAtMost(byteLength)\n val text = nativeDecoder.decode(subarray(0, sizeInBytes))\n if (text.length <= maxCharacters) {\n return DecodeBufferResult(text, sizeInBytes)\n }\n } catch (_: dynamic) {\n }\n\n return decodeBufferImplSlow(nativeDecoder, maxCharacters)\n}\n\nprivate fun Int8Array.decodeBufferImplSlow(nativeDecoder: Decoder, maxCharacters: Int): DecodeBufferResult {\n val maxBytes = when {\n maxCharacters >= MAX_CHARACTERS_COUNT -> Int.MAX_VALUE\n else -> maxCharacters * MAX_CHARACTERS_SIZE_IN_BYTES\n }.coerceAtMost(byteLength)\n\n var sizeInBytes = maxBytes\n while (sizeInBytes > MAX_CHARACTERS_SIZE_IN_BYTES) {\n try {\n val text = nativeDecoder.decode(subarray(0, sizeInBytes))\n if (text.length <= maxCharacters) {\n return DecodeBufferResult(text, sizeInBytes)\n }\n } catch (_: dynamic) {\n }\n\n sizeInBytes /= 2\n }\n\n sizeInBytes = MAX_CHARACTERS_SIZE_IN_BYTES\n while (sizeInBytes > 0) {\n try {\n val text = nativeDecoder.decode(subarray(0, sizeInBytes))\n if (text.length <= maxCharacters) {\n return DecodeBufferResult(text, sizeInBytes)\n }\n } catch (_: dynamic) {\n }\n\n sizeInBytes--\n }\n\n // all attempts were failed so most likely we have a broken character but we can't find it for some reason\n // so the following decode most likely will fail\n decodeWrap {\n nativeDecoder.decode(this)\n }\n\n // if it didn't for some reason we have no idea what to do\n throw MalformedInputException(\"Unable to decode buffer\")\n}\n","package io.ktor.utils.io.charsets\n\nimport io.ktor.utils.io.core.*\nimport org.khronos.webgl.*\n\ninternal fun encodeISO88591(input: CharSequence, fromIndex: Int, toIndex: Int, dst: Buffer): Int {\n if (fromIndex >= toIndex) return 0\n\n dst.writeDirect { view ->\n val i8 = Int8Array(view.buffer, view.byteOffset, view.byteLength)\n var writeIndex = 0\n for (index in fromIndex until toIndex) {\n val character = input[index].toInt()\n if (character > 0xff) {\n failedToMapError(character)\n }\n i8[writeIndex++] = character.toByte()\n }\n writeIndex\n }\n return toIndex - fromIndex\n}\n\nprivate fun failedToMapError(ch: Int): Nothing {\n throw MalformedInputException(\"The character with unicode point $ch couldn't be mapped to ISO-8859-1 character\")\n}\n","@file:Suppress(\"ReplaceRangeToWithUntil\", \"RedundantModalityModifier\", \"DEPRECATION\", \"DEPRECATION_ERROR\")\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.internal.*\nimport io.ktor.utils.io.pool.*\nimport org.khronos.webgl.*\nimport kotlin.contracts.*\n\n@Suppress(\"DIFFERENT_NAMES_FOR_THE_SAME_PARAMETER_IN_SUPERTYPES\")\n@Deprecated(\"Use Buffer instead.\", replaceWith = ReplaceWith(\"Buffer\", \"io.ktor.utils.io.core.Buffer\"))\npublic actual class IoBuffer actual constructor(\n memory: Memory,\n origin: ChunkBuffer?\n) : Input, Output, ChunkBuffer(memory, origin) {\n private val content: ArrayBuffer get() = memory.view.buffer\n\n override val endOfInput: Boolean get() = writePosition == readPosition\n\n @Deprecated(\n \"Not supported anymore. All operations are big endian by default. \" +\n \"Read/write with readXXXLittleEndian/writeXXXLittleEndian or \" +\n \"do readXXX/writeXXX with X.reverseByteOrder() instead.\",\n level = DeprecationLevel.ERROR\n )\n actual final override var byteOrder: ByteOrder\n get() = ByteOrder.BIG_ENDIAN\n set(newOrder) {\n if (newOrder != ByteOrder.BIG_ENDIAN) {\n throw IllegalArgumentException(\"Only big endian is supported\")\n }\n }\n\n final override fun peekTo(destination: Memory, destinationOffset: Long, offset: Long, min: Long, max: Long): Long {\n return (this as Buffer).peekTo(destination, destinationOffset, offset, min, max)\n }\n\n final override fun tryPeek(): Int {\n return tryPeekByte()\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun readFully(dst: ArrayBuffer, offset: Int, length: Int) {\n (this as Buffer).readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readAvailable(dst: ArrayBuffer, offset: Int, length: Int): Int {\n return (this as Buffer).readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun readAvailable(dst: IoBuffer, length: Int): Int {\n return (this as Buffer).readAvailable(dst, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readFully(dst: ArrayBufferView, offset: Int, length: Int) {\n if (readRemaining < length) throw IllegalStateException(\n \"Not enough bytes available ($readRemaining) to read $length bytes\"\n )\n if (length > dst.byteLength) throw IllegalArgumentException(\n \"Destination buffer overflow: length = $length, buffer capacity ${dst.byteLength}\"\n )\n require(offset >= 0) { \"offset should be positive\" }\n require(offset + length <= dst.byteLength) { throw IndexOutOfBoundsException(\"\") }\n\n (this as Buffer).readFully(dst.buffer, dst.byteOffset + offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readAvailable(dst: ArrayBufferView, offset: Int, length: Int): Int {\n val readRemaining = readRemaining\n if (readRemaining == 0) return -1\n val size = minOf(length, readRemaining)\n (this as Buffer).readFully(dst, offset, size)\n return size\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readFully(dst: Int8Array, offset: Int, length: Int) {\n (this as Buffer).readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readAvailable(dst: Int8Array, offset: Int, length: Int): Int {\n return (this as Buffer).readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun readFully(dst: IoBuffer, length: Int) {\n (this as Buffer).readFully(dst, length)\n }\n\n final override fun append(csq: CharSequence?, start: Int, end: Int): Appendable {\n val idx = appendChars(csq ?: \"null\", start, end)\n if (idx != end) throw IllegalStateException(\"Not enough free space to append char sequence\")\n return this\n }\n\n final override fun append(csq: CharSequence?): Appendable {\n return if (csq == null) append(\"null\") else append(csq, 0, csq.length)\n }\n\n final override fun append(csq: CharArray, start: Int, end: Int): Appendable {\n val idx = appendChars(csq, start, end)\n\n if (idx != end) throw IllegalStateException(\"Not enough free space to append char sequence\")\n return this\n }\n\n override fun append(c: Char): Appendable {\n (this as Buffer).append(c)\n return this\n }\n\n @Deprecated(\n \"Use writeFully instead\",\n ReplaceWith(\"writeFully(array, offset, length)\"),\n level = DeprecationLevel.ERROR\n )\n public fun write(array: ByteArray, offset: Int, length: Int) {\n (this as Buffer).writeFully(array, offset, length)\n }\n\n @Deprecated(\n \"Use writeFully instead\",\n ReplaceWith(\"writeFully(array, offset, length)\"),\n level = DeprecationLevel.ERROR\n )\n public fun write(src: Int8Array, offset: Int, length: Int) {\n (this as Buffer).writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readShort(): Short {\n return (this as Buffer).readShort()\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readInt(): Int {\n return (this as Buffer).readInt()\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readFloat(): Float {\n return (this as Buffer).readFloat()\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readDouble(): Double {\n return (this as Buffer).readDouble()\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readFully(dst: ByteArray, offset: Int, length: Int) {\n (this as Buffer).readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readFully(dst: ShortArray, offset: Int, length: Int) {\n (this as Buffer).readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readFully(dst: IntArray, offset: Int, length: Int) {\n (this as Buffer).readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readFully(dst: LongArray, offset: Int, length: Int) {\n (this as Buffer).readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readFully(dst: FloatArray, offset: Int, length: Int) {\n (this as Buffer).readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readFully(dst: DoubleArray, offset: Int, length: Int) {\n (this as Buffer).readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readAvailable(dst: ByteArray, offset: Int, length: Int): Int {\n return (this as Buffer).readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readAvailable(dst: ShortArray, offset: Int, length: Int): Int {\n return (this as Buffer).readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readAvailable(dst: IntArray, offset: Int, length: Int): Int {\n return (this as Buffer).readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readAvailable(dst: LongArray, offset: Int, length: Int): Int {\n return (this as Buffer).readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readAvailable(dst: FloatArray, offset: Int, length: Int): Int {\n return (this as Buffer).readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun readAvailable(dst: DoubleArray, offset: Int, length: Int): Int {\n return (this as Buffer).readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun peekTo(buffer: IoBuffer): Int {\n return (this as Input).peekTo(buffer)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun readLong(): Long {\n return (this as Buffer).readLong()\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun writeShort(v: Short) {\n (this as Buffer).writeShort(v)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun writeInt(v: Int) {\n (this as Buffer).writeInt(v)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun writeFloat(v: Float) {\n (this as Buffer).writeFloat(v)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun writeDouble(v: Double) {\n (this as Buffer).writeDouble(v)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun writeFully(src: ByteArray, offset: Int, length: Int) {\n (this as Buffer).writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun writeFully(src: ShortArray, offset: Int, length: Int) {\n (this as Buffer).writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun writeFully(src: IntArray, offset: Int, length: Int) {\n (this as Buffer).writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun writeFully(src: LongArray, offset: Int, length: Int) {\n (this as Buffer).writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun writeFully(src: FloatArray, offset: Int, length: Int) {\n (this as Buffer).writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun writeFully(src: DoubleArray, offset: Int, length: Int) {\n (this as Buffer).writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun writeFully(src: IoBuffer, length: Int) {\n (this as Buffer).writeFully(src, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n override fun fill(n: Long, v: Byte) {\n (this as Buffer).fill(n, v)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n final override fun writeLong(v: Long) {\n (this as Buffer).writeLong(v)\n }\n\n @Deprecated(\"Use writeFully instead\", ReplaceWith(\"writeFully(src, length)\"), level = DeprecationLevel.ERROR)\n public fun writeBuffer(src: IoBuffer, length: Int): Int {\n (this as Buffer).writeFully(src, length)\n return length\n }\n\n actual final override fun flush() {\n }\n\n @PublishedApi\n internal fun readableView(): DataView {\n val readPosition = readPosition\n val writePosition = writePosition\n\n return when {\n readPosition == writePosition -> EmptyDataView\n readPosition == 0 && writePosition == content.byteLength -> memory.view\n else -> DataView(content, readPosition, writePosition - readPosition)\n }\n }\n\n @PublishedApi\n internal fun writableView(): DataView {\n val writePosition = writePosition\n val limit = limit\n\n return when {\n writePosition == limit -> EmptyDataView\n writePosition == 0 && limit == content.byteLength -> memory.view\n else -> DataView(content, writePosition, limit - writePosition)\n }\n }\n\n /**\n * Apply [block] function on a [DataView] of readable bytes.\n * The [block] function should return number of consumed bytes.\n * @return number of bytes consumed\n */\n @ExperimentalIoApi\n public inline fun readDirect(block: (DataView) -> Int): Int {\n val view = readableView()\n val rc = block(view)\n check(rc >= 0) { \"The returned value from block function shouldn't be negative: $rc\" }\n discard(rc)\n return rc\n }\n\n /**\n * Apply [block] function on a [DataView] of the free space.\n * The [block] function should return number of written bytes.\n * @return number of bytes written\n */\n @ExperimentalIoApi\n public inline fun writeDirect(block: (DataView) -> Int): Int {\n val view = writableView()\n val rc = block(view)\n check(rc >= 0) { \"The returned value from block function shouldn't be negative: $rc\" }\n check(rc <= writeRemaining) { \"The returned value from block function is too big: $rc > $writeRemaining\" }\n commitWritten(rc)\n return rc\n }\n\n public actual fun release(pool: ObjectPool) {\n releaseImpl(pool)\n }\n\n actual override fun close() {\n throw UnsupportedOperationException(\"close for buffer view is not supported\")\n }\n\n override fun toString(): String =\n \"Buffer[readable = $readRemaining, writable = $writeRemaining, startGap = $startGap, endGap = $endGap]\"\n\n public actual companion object {\n /**\n * Number of bytes usually reserved in the end of chunk\n * when several instances of [IoBuffer] are connected into a chain (usually inside of [ByteReadPacket]\n * or [BytePacketBuilder])\n */\n @DangerousInternalIoApi\n public actual val ReservedSize: Int\n get() = Buffer.ReservedSize\n\n private val EmptyBuffer = ArrayBuffer(0)\n private val EmptyDataView = DataView(EmptyBuffer)\n\n public actual val Empty: IoBuffer = IoBuffer(Memory.Empty, null)\n\n /**\n * The default buffer pool\n */\n public actual val Pool: ObjectPool = object : DefaultPool(BUFFER_VIEW_POOL_SIZE) {\n override fun produceInstance(): IoBuffer {\n return IoBuffer(DefaultAllocator.alloc(DEFAULT_BUFFER_SIZE), null)\n }\n\n override fun clearInstance(instance: IoBuffer): IoBuffer {\n return super.clearInstance(instance).apply {\n unpark()\n reset()\n }\n }\n\n override fun validateInstance(instance: IoBuffer) {\n super.validateInstance(instance)\n\n require(instance.referenceCount == 0) {\n \"unable to recycle buffer: buffer view is in use (refCount = ${instance.referenceCount})\"\n }\n require(instance.origin == null) {\n \"Unable to recycle buffer view: view copy shouldn't be recycled\"\n }\n }\n\n override fun disposeInstance(instance: IoBuffer) {\n DefaultAllocator.free(instance.memory)\n instance.unlink()\n }\n }\n\n public actual val NoPool: ObjectPool = object : NoPoolImpl() {\n override fun borrow(): IoBuffer {\n return IoBuffer(DefaultAllocator.alloc(DEFAULT_BUFFER_SIZE), null)\n }\n\n override fun recycle(instance: IoBuffer) {\n DefaultAllocator.free(instance.memory)\n }\n }\n\n public actual val EmptyPool: ObjectPool = EmptyBufferPoolImpl\n }\n}\n\npublic fun Buffer.readFully(dst: ArrayBuffer, offset: Int = 0, length: Int = dst.byteLength - offset) {\n read { memory, start, endExclusive ->\n if (endExclusive - start < length) {\n throw EOFException(\"Not enough bytes available to read $length bytes\")\n }\n\n memory.copyTo(dst, start, length, offset)\n length\n }\n}\n\npublic fun Buffer.readFully(dst: ArrayBufferView, offset: Int = 0, length: Int = dst.byteLength - offset) {\n read { memory, start, endExclusive ->\n if (endExclusive - start < length) {\n throw EOFException(\"Not enough bytes available to read $length bytes\")\n }\n\n memory.copyTo(dst, start, length, offset)\n length\n }\n}\n\npublic fun Buffer.readAvailable(dst: ArrayBuffer, offset: Int = 0, length: Int = dst.byteLength - offset): Int {\n if (!canRead()) return -1\n val readSize = minOf(length, readRemaining)\n readFully(dst, offset, readSize)\n return readSize\n}\n\npublic fun Buffer.readAvailable(dst: ArrayBufferView, offset: Int = 0, length: Int = dst.byteLength - offset): Int {\n if (!canRead()) return -1\n val readSize = minOf(length, readRemaining)\n readFully(dst, offset, readSize)\n return readSize\n}\n\npublic fun Buffer.writeFully(src: ArrayBuffer, offset: Int = 0, length: Int = src.byteLength) {\n write { memory, start, endExclusive ->\n if (endExclusive - start < length) {\n throw InsufficientSpaceException(\"Not enough free space to write $length bytes\")\n }\n\n src.copyTo(memory, offset, length, start)\n length\n }\n}\n\npublic fun Buffer.writeFully(src: ArrayBufferView, offset: Int = 0, length: Int = src.byteLength - offset) {\n write { memory, dstOffset, endExclusive ->\n if (endExclusive - dstOffset < length) {\n throw InsufficientSpaceException(\"Not enough free space to write $length bytes\")\n }\n\n src.copyTo(memory, offset, length, dstOffset)\n length\n }\n}\n\npublic inline fun Buffer.writeDirect(block: (DataView) -> Int): Int {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n return write { memory, start, endExclusive ->\n block(memory.slice(start, endExclusive - start).view)\n }\n}\n\npublic inline fun Buffer.readDirect(block: (DataView) -> Int): Int {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n return read { memory, start, endExclusive ->\n block(memory.slice(start, endExclusive - start).view)\n }\n}\n\npublic inline fun Buffer.writeDirectInt8Array(block: (Int8Array) -> Int): Int {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n return write { memory, start, endExclusive ->\n block(Int8Array(memory.view.buffer, memory.view.byteOffset + start, endExclusive - start))\n }\n}\n\npublic inline fun Buffer.readDirectInt8Array(block: (Int8Array) -> Int): Int {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n return read { memory, start, endExclusive ->\n block(Int8Array(memory.view.buffer, memory.view.byteOffset + start, endExclusive - start))\n }\n}\n","// ktlint-disable filename\npackage io.ktor.utils.io.core\n\nimport org.khronos.webgl.*\n\npublic actual enum class ByteOrder {\n BIG_ENDIAN, LITTLE_ENDIAN;\n\n public actual companion object {\n private val native: ByteOrder\n\n init {\n val buffer = ArrayBuffer(4)\n val arr = Int32Array(buffer)\n val view = DataView(buffer)\n\n arr[0] = 0x11223344\n\n native = if (view.getInt32(0, true) == 0x11223344) LITTLE_ENDIAN else BIG_ENDIAN\n }\n\n public actual fun nativeOrder(): ByteOrder = native\n }\n}\n","@file:Suppress(\"FunctionName\")\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.internal.*\nimport io.ktor.utils.io.pool.*\nimport org.khronos.webgl.*\n\npublic actual fun ByteReadPacket(\n array: ByteArray,\n offset: Int,\n length: Int,\n block: (ByteArray) -> Unit\n): ByteReadPacket {\n val content = array.asDynamic() as Int8Array\n val sub = when {\n offset == 0 && length == array.size -> content.buffer\n else -> content.buffer.slice(offset, offset + length)\n }\n\n val pool = object : SingleInstancePool() {\n override fun produceInstance(): ChunkBuffer {\n @Suppress(\"DEPRECATION\")\n return IoBuffer(Memory.of(sub), null)\n }\n\n override fun disposeInstance(instance: ChunkBuffer) {\n @Suppress(\"DEPRECATION\")\n check(instance is IoBuffer) { \"Only IoBuffer could be recycled\" }\n block(array)\n }\n }\n\n return ByteReadPacket(pool.borrow().apply { resetForRead() }, pool)\n}\n","package io.ktor.utils.io.core\n\npublic actual interface Closeable {\n public actual fun close()\n}\n\n@PublishedApi\ninternal actual fun Throwable.addSuppressedInternal(other: Throwable) {\n}\n","@file:Suppress(\"EXTENSION_SHADOWED_BY_MEMBER\")\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.internal.*\nimport org.khronos.webgl.*\n\npublic fun Input.readFully(dst: Int8Array, offset: Int = 0, length: Int = dst.length - offset) {\n if (this is AbstractInput) {\n return readFully(dst, offset, length)\n }\n\n val rc = readAvailable(dst, offset, length)\n if (rc != length) {\n prematureEndOfStream(length)\n }\n}\n\npublic fun Input.readFully(dst: ArrayBuffer, offset: Int = 0, length: Int = dst.byteLength - offset) {\n if (this is AbstractInput) {\n return readFully(dst, offset, length)\n }\n\n val rc = readAvailable(dst, offset, length)\n if (rc != length) {\n prematureEndOfStream(length)\n }\n}\n\npublic fun Input.readFully(dst: ArrayBufferView, byteOffset: Int = 0, byteLength: Int = dst.byteLength - byteOffset) {\n if (this is AbstractInput) {\n return readFully(dst, byteOffset, byteLength)\n }\n\n val rc = readAvailable(dst, byteOffset, byteLength)\n if (rc != byteLength) {\n prematureEndOfStream(byteLength)\n }\n}\n\npublic fun Input.readAvailable(dst: Int8Array, offset: Int = 0, length: Int = dst.length - offset): Int {\n if (this is AbstractInput) {\n return readAvailable(dst, offset, length)\n }\n\n @Suppress(\"UNCHECKED_CAST_TO_EXTERNAL_INTERFACE\")\n return readAvailable(dst as ArrayBufferView, offset, length)\n}\n\n@Suppress(\"Duplicates\")\npublic fun Input.readAvailable(dst: ArrayBuffer, offset: Int = 0, length: Int = dst.byteLength - offset): Int {\n if (this is AbstractInput) {\n return readAvailable(dst, offset, length)\n }\n\n var bytesCopied = 0\n takeWhile { buffer ->\n val partSize = minOf(buffer.readRemaining, length - bytesCopied)\n buffer.memory.copyTo(dst, buffer.readPosition, partSize, bytesCopied)\n bytesCopied += partSize\n bytesCopied < length\n }\n\n return bytesCopied\n}\n\n@Suppress(\"Duplicates\")\npublic fun Input.readAvailable(\n dst: ArrayBufferView,\n byteOffset: Int = 0,\n byteLength: Int = dst.byteLength - byteOffset\n): Int {\n if (this is AbstractInput) {\n return readAvailable(dst, byteOffset, byteLength)\n }\n\n var bytesCopied = 0\n takeWhile { buffer ->\n val partSize = minOf(buffer.readRemaining, byteLength - bytesCopied)\n buffer.memory.copyTo(dst, buffer.readPosition, partSize, bytesCopied)\n bytesCopied += partSize\n bytesCopied < byteLength\n }\n\n return bytesCopied\n}\n\ninternal fun AbstractInput.readFully(dst: Int8Array, offset: Int, length: Int) {\n @Suppress(\"UNCHECKED_CAST_TO_EXTERNAL_INTERFACE\")\n return readFully(dst as ArrayBufferView, offset, length)\n}\n\ninternal fun AbstractInput.readFully(dst: ArrayBuffer, offset: Int, length: Int) {\n if (remaining < length) throw IllegalArgumentException(\n \"Not enough bytes available ($remaining) to read $length bytes\"\n )\n var copied = 0\n\n takeWhile { buffer: Buffer ->\n val rc = buffer.readAvailable(dst, offset + copied, length - copied)\n if (rc > 0) copied += rc\n copied < length\n }\n}\n\ninternal fun AbstractInput.readFully(dst: ArrayBufferView, offset: Int, length: Int) {\n require(length <= dst.byteLength) {\n throw IndexOutOfBoundsException(\"length $length is greater than view size ${dst.byteLength}\")\n }\n\n return readFully(dst.buffer, dst.byteOffset + offset, length)\n}\n\ninternal fun AbstractInput.readAvailable(dst: Int8Array, offset: Int, length: Int): Int {\n val remaining = remaining\n if (remaining == 0L) return -1\n val size = minOf(remaining, length.toLong()).toInt()\n readFully(dst, offset, size)\n return size\n}\n\ninternal fun AbstractInput.readAvailable(dst: ArrayBuffer, offset: Int, length: Int): Int {\n val remaining = remaining\n if (remaining == 0L) return -1\n val size = minOf(remaining, length.toLong()).toInt()\n readFully(dst, offset, size)\n return size\n}\n\ninternal fun AbstractInput.readAvailable(dst: ArrayBufferView, offset: Int, length: Int): Int {\n val remaining = remaining\n if (remaining == 0L) return -1\n val size = minOf(remaining, length.toLong()).toInt()\n readFully(dst, offset, size)\n return size\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.utils.io.concurrent\n\nimport io.ktor.utils.io.core.internal.*\nimport kotlin.properties.*\nimport kotlin.reflect.*\n\n/**\n * Allows to create mutate property with frozen value.\n * Please note that any assigned value will be frozen.\n *\n * Usage:\n * ```kotlin\n * var myCounter by shared(0)\n * ```\n */\n@Suppress(\"NOTHING_TO_INLINE\")\n@DangerousInternalIoApi\npublic actual inline fun shared(value: T): ReadWriteProperty = object : ReadWriteProperty {\n private var value: T = value\n\n override fun getValue(thisRef: Any, property: KProperty<*>): T {\n return this.value\n }\n\n override fun setValue(thisRef: Any, property: KProperty<*>, value: T) {\n this.value = value\n }\n}\n\n/**\n * Allow to create thread local reference without freezing.\n * Please note that reference is thread-local only in kotlin-native. Otherwise it will be simple [value] reference.\n *\n * This reference is allowed to use only from creation thread. Otherwise it will return null.\n */\n@DangerousInternalIoApi\npublic actual fun threadLocal(value: T): ReadOnlyProperty =\n ReadOnlyProperty { thisRef, property -> value }\n","// ktlint-disable filename\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.Memory\nimport org.khronos.webgl.*\n\n/**\n * Shouldn't be implemented directly. Inherit [AbstractInput] instead.\n */\n@Suppress(\"NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS\")\npublic actual interface Input : Closeable {\n @Deprecated(\n \"Not supported anymore. All operations are big endian by default. \" +\n \"Read and readXXXLittleEndian or readXXX then X.reverseByteOrder() instead.\",\n level = DeprecationLevel.ERROR\n )\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual var byteOrder: ByteOrder\n get() = ByteOrder.BIG_ENDIAN\n set(newValue) {\n if (newValue != ByteOrder.BIG_ENDIAN) {\n throw IllegalArgumentException(\"Only BIG_ENDIAN is supported\")\n }\n }\n\n /**\n * It is `true` when it is known that no more bytes will be available. When it is `false` then this means that\n * it is not known yet or there are available bytes.\n * Please note that `false` value doesn't guarantee that there are available bytes so `readByte()` may fail.\n */\n public actual val endOfInput: Boolean\n\n /**\n * Copy at least [min] but up to [max] bytes to the specified [destination] buffer from this input\n * skipping [offset] bytes. If there are not enough bytes available to provide [min] bytes then\n * it fails with an exception.\n * It is safe to specify `max > destination.writeRemaining` but\n * `min` shouldn't be bigger than the [destination] free space.\n * This function could trigger the underlying source reading that may lead to blocking I/O.\n * It is safe to specify too big [offset] but only if `min = 0`, fails otherwise.\n * This function usually copy more bytes than [min] (unless `max = min`).\n *\n * @param destination to write bytes\n * @param offset to skip input\n * @param min bytes to be copied, shouldn't be greater than the buffer free space. Could be `0`.\n * @param max bytes to be copied even if there are more bytes buffered, could be [Int.MAX_VALUE].\n * @return number of bytes copied to the [destination] possibly `0`\n * @throws Throwable when not enough bytes available to provide\n */\n public actual fun peekTo(\n destination: Memory,\n destinationOffset: Long,\n offset: Long,\n min: Long,\n max: Long\n ): Long\n\n /**\n * Read the next upcoming byte\n * @throws EOFException if no more bytes available.\n */\n public actual fun readByte(): Byte\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readShort(): Short {\n return readShort()\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readInt(): Int {\n return readInt()\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readLong(): Long {\n return readLong()\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readFloat(): Float {\n return readFloat()\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readDouble(): Double {\n return readDouble()\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readFully(dst: ByteArray, offset: Int, length: Int) {\n return readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readFully(dst: ShortArray, offset: Int, length: Int) {\n return readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readFully(dst: IntArray, offset: Int, length: Int) {\n return readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readFully(dst: LongArray, offset: Int, length: Int) {\n return readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readFully(dst: FloatArray, offset: Int, length: Int) {\n return readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readFully(dst: DoubleArray, offset: Int, length: Int) {\n return readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"DEPRECATION\")\n public actual fun readFully(dst: IoBuffer, length: Int) {\n return readFully(dst, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readAvailable(dst: ByteArray, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readAvailable(dst: ShortArray, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readAvailable(dst: IntArray, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readAvailable(dst: LongArray, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readAvailable(dst: FloatArray, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun readAvailable(dst: DoubleArray, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\", \"DEPRECATION\")\n public actual fun readAvailable(dst: IoBuffer, length: Int): Int {\n return readAvailable(dst, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readFully(dst: Int8Array, offset: Int, length: Int) {\n return readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readFully(dst: ArrayBuffer, offset: Int, length: Int) {\n return readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readFully(dst: ArrayBufferView, offset: Int, length: Int) {\n return readFully(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readAvailable(dst: Int8Array, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readAvailable(dst: ArrayBuffer, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun readAvailable(dst: ArrayBufferView, offset: Int, length: Int): Int {\n return readAvailable(dst, offset, length)\n }\n\n /*\n * Returns next byte (unsigned) or `-1` if no more bytes available\n */\n public actual fun tryPeek(): Int\n\n /**\n * Copy available bytes to the specified [buffer] but keep them available.\n * If the underlying implementation could trigger\n * bytes population from the underlying source and block until any bytes available\n *\n * Very similar to [readAvailable] but don't discard copied bytes.\n *\n * @return number of bytes were copied\n */\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"DEPRECATION\", \"ACTUAL_WITHOUT_EXPECT\")\n public actual fun peekTo(buffer: IoBuffer): Int {\n return peekTo(buffer)\n }\n\n public actual fun discard(n: Long): Long\n\n actual override fun close()\n}\n","// ktlint-disable filename\n/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.internal.*\n\ninternal actual class AbstractOutputSharedState {\n actual var head: ChunkBuffer? = null\n\n actual var tail: ChunkBuffer? = null\n\n actual var tailMemory: Memory = Memory.Empty\n\n actual var tailPosition: Int = 0\n\n actual var tailEndExclusive: Int = 0\n\n actual var tailInitialPosition: Int = 0\n\n actual var chainedSize: Int = 0\n}\n","// ktlint-disable filename\n/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.internal.*\n\ninternal actual class AbstractInputSharedState actual constructor(\n actual var head: ChunkBuffer,\n remaining: Long\n) {\n actual var headMemory: Memory = head.memory\n\n actual var headPosition: Int = head.readPosition\n\n actual var headEndExclusive: Int = head.writePosition\n\n actual var tailRemaining: Long = remaining - (headEndExclusive - headPosition)\n}\n","// ktlint-disable filename\n/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.utils.io.core\n\ninternal actual class BufferSharedState actual constructor(actual var limit: Int) {\n actual var readPosition: Int = 0\n\n actual var writePosition: Int = 0\n\n actual var startGap: Int = 0\n\n actual var attachment: Any? = null\n}\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport org.khronos.webgl.*\n\nprivate fun Memory.asInt8Array(): Int8Array {\n return Int8Array(view.buffer, view.byteOffset, view.byteLength)\n}\n\ninternal actual fun Buffer.discardUntilDelimiterImpl(delimiter: Byte): Int {\n val content = memory.asInt8Array()\n var idx = readPosition\n val end = writePosition\n\n while (idx < end) {\n if (content[idx] == delimiter) break\n idx++\n }\n\n val start = readPosition\n discardUntilIndex(idx)\n return idx - start\n}\n\ninternal actual fun Buffer.discardUntilDelimitersImpl(delimiter1: Byte, delimiter2: Byte): Int {\n val content = memory.asInt8Array()\n var idx = readPosition\n val end = writePosition\n\n while (idx < end) {\n val v = content[idx]\n if (v == delimiter1 || v == delimiter2) break\n idx++\n }\n\n val start = readPosition\n discardUntilIndex(idx)\n return idx - start\n}\n\ninternal actual fun Buffer.readUntilDelimiterImpl(\n delimiter: Byte,\n dst: ByteArray,\n offset: Int,\n length: Int\n): Int {\n check(offset >= 0)\n check(length >= 0)\n check(offset + length <= dst.size)\n\n return readUntilImpl({ it == delimiter }, dst, offset, length)\n}\n\ninternal actual fun Buffer.readUntilDelimitersImpl(\n delimiter1: Byte,\n delimiter2: Byte,\n dst: ByteArray,\n offset: Int,\n length: Int\n): Int {\n check(offset >= 0)\n check(length >= 0)\n check(offset + length <= dst.size)\n check(delimiter1 != delimiter2)\n\n return readUntilImpl({ it == delimiter1 || it == delimiter2 }, dst, offset, length)\n}\n\ninternal actual fun Buffer.readUntilDelimiterImpl(delimiter: Byte, dst: Output): Int {\n return readUntilImpl({ it == delimiter }, dst)\n}\n\ninternal actual fun Buffer.readUntilDelimitersImpl(delimiter1: Byte, delimiter2: Byte, dst: Output): Int {\n check(delimiter1 != delimiter2)\n\n return readUntilImpl({ it == delimiter1 || it == delimiter2 }, dst)\n}\n\nprivate inline fun Buffer.readUntilImpl(\n predicate: (Byte) -> Boolean,\n dst: ByteArray,\n offset: Int,\n length: Int\n): Int {\n val array = memory.asInt8Array()\n val start = readPosition\n var i = start\n val end = i + minOf(length, readRemaining)\n\n while (i < end) {\n if (predicate(array[i])) break\n i++\n }\n\n val copied = i - start\n val dstArray = dst.asDynamic() as Int8Array\n dstArray.set(array.subarray(start, end), offset)\n discardUntilIndex(i)\n\n return copied\n}\n\nprivate inline fun Buffer.readUntilImpl(\n predicate: (Byte) -> Boolean,\n dst: Output\n): Int {\n val array = memory.asInt8Array()\n var i = readPosition\n var copiedTotal = 0\n\n dst.writeWhile { chunk ->\n chunk.writeFully(chunk, 0)\n val start = i\n val end = minOf(i + chunk.writeRemaining, writePosition)\n\n while (i < end) {\n if (predicate(array[i])) break\n i++\n }\n\n val size = i - start\n\n chunk.memory.asInt8Array().set(array.subarray(start, i), chunk.writePosition)\n chunk.commitWritten(size)\n copiedTotal += size\n\n chunk.writeRemaining == 0 && i < end\n }\n\n discardUntilIndex(i)\n return copiedTotal\n}\n","// ktlint-disable filename\npackage io.ktor.utils.io.core\n\n/**\n * This shouldn't be implemented directly. Inherit [AbstractOutput] instead.\n */\n@Suppress(\"NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS\")\npublic actual interface Output : Appendable, Closeable {\n @Deprecated(\"Write with writeXXXLittleEndian or do X.reverseByteOrder() and then writeXXX instead.\")\n public actual var byteOrder: ByteOrder\n\n public actual fun writeByte(v: Byte)\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun writeShort(v: Short) {\n writeShort(v)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun writeInt(v: Int) {\n writeInt(v)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun writeLong(v: Long) {\n writeLong(v)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun writeFloat(v: Float) {\n writeFloat(v)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun writeDouble(v: Double) {\n writeDouble(v)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun writeFully(src: ByteArray, offset: Int, length: Int) {\n writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun writeFully(src: ShortArray, offset: Int, length: Int) {\n writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun writeFully(src: IntArray, offset: Int, length: Int) {\n writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun writeFully(src: LongArray, offset: Int, length: Int) {\n writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun writeFully(src: FloatArray, offset: Int, length: Int) {\n writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun writeFully(src: DoubleArray, offset: Int, length: Int) {\n writeFully(src, offset, length)\n }\n\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n public actual fun writeFully(src: IoBuffer, length: Int) {\n writeFully(src, length)\n }\n\n public actual fun append(csq: CharArray, start: Int, end: Int): Appendable\n\n @Suppress(\"ACTUAL_WITHOUT_EXPECT\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public actual fun fill(n: Long, v: Byte) {\n fill(n, v)\n }\n\n public actual fun flush()\n\n actual override fun close()\n}\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.core.internal.*\n\npublic actual val PACKET_MAX_COPY_SIZE: Int = 200\ninternal const val BUFFER_VIEW_POOL_SIZE = 100\ninternal const val BUFFER_VIEW_SIZE = 4096\n\npublic actual fun BytePacketBuilder(headerSizeHint: Int): BytePacketBuilder =\n BytePacketBuilder(headerSizeHint, ChunkBuffer.Pool)\n\npublic actual typealias EOFException = io.ktor.utils.io.errors.EOFException\n","/*\n * Copyright 2014-2021 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.utils.io.js\n\nimport org.khronos.webgl.*\n\ninternal external class TextDecoder(encoding: String, options: dynamic = definedExternally) {\n val encoding: String\n\n fun decode(): String\n fun decode(buffer: ArrayBuffer): String\n fun decode(buffer: ArrayBuffer, options: dynamic): String\n fun decode(buffer: ArrayBufferView): String\n fun decode(buffer: ArrayBufferView, options: dynamic): String\n}\n\ninternal fun TextDecoder.toKtor(): Decoder = object : Decoder {\n override fun decode(): String = this@toKtor.decode()\n override fun decode(buffer: ArrayBufferView): String = this@toKtor.decode(buffer)\n override fun decode(buffer: ArrayBufferView, options: dynamic): String = this@toKtor.decode(buffer, options)\n}\n\ninternal fun textDecoderOptions(fatal: Boolean = false): Any = Any().apply {\n with(this.asDynamic()) {\n this.fatal = fatal\n }\n}\n","package io.ktor.utils.io.core\n\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.internal.*\nimport org.khronos.webgl.*\nimport kotlin.require\n\n/**\n * Create an instance of [String] from the specified [bytes] range starting at [offset] and bytes [length]\n * interpreting characters in the specified [charset].\n */\n@Suppress(\"FunctionName\")\npublic actual fun String(bytes: ByteArray, offset: Int, length: Int, charset: Charset): String {\n if (offset < 0 || length < 0 || offset + length > bytes.size) {\n checkIndices(offset, length, bytes)\n }\n\n @Suppress(\"UnsafeCastFromDynamic\")\n val i8: Int8Array = bytes.asDynamic() // we know that K/JS generates Int8Array for ByteBuffer\n val bufferOffset = i8.byteOffset + offset\n val buffer = i8.buffer.slice(bufferOffset, bufferOffset + length)\n\n @Suppress(\"DEPRECATION\")\n val view = IoBuffer(Memory.of(buffer), null)\n view.resetForRead()\n val packet = ByteReadPacket(view, ChunkBuffer.NoPoolManuallyManaged)\n\n return charset.newDecoder().decode(packet, Int.MAX_VALUE)\n}\n\npublic fun checkIndices(offset: Int, length: Int, bytes: ByteArray): Nothing {\n require(offset >= 0) { throw IndexOutOfBoundsException(\"offset ($offset) shouldn't be negative\") }\n require(length >= 0) { throw IndexOutOfBoundsException(\"length ($length) shouldn't be negative\") }\n require(offset + length <= bytes.size) {\n throw IndexOutOfBoundsException(\"offset ($offset) + length ($length) > bytes.size (${bytes.size})\")\n }\n\n throw IndexOutOfBoundsException()\n}\n\ninternal actual fun String.getCharsInternal(dst: CharArray, dstOffset: Int) {\n val length = length\n require(dstOffset + length <= dst.size)\n\n var dstIndex = dstOffset\n for (srcIndex in 0 until length) {\n dst[dstIndex++] = this[srcIndex]\n }\n}\n","package io.ktor.utils.io.errors\n\npublic actual open class IOException actual constructor(message: String, cause: Throwable?) :\n Exception(message, cause) {\n public actual constructor(message: String) : this(message, null)\n}\n\npublic actual open class EOFException actual constructor(message: String) : IOException(message)\n","/*\n * Copyright 2014-2021 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.utils.io.js\n\nimport io.ktor.utils.io.core.*\nimport org.khronos.webgl.*\n\nprivate val ENCODING_ALIASES = setOf(\n \"ansi_x3.4-1968\",\n \"ascii\",\n \"cp1252\",\n \"cp819\",\n \"csisolatin1\",\n \"ibm819\",\n \"iso-8859-1\",\n \"iso-ir-100\",\n \"iso8859-1\",\n \"iso88591\",\n \"iso_8859-1\",\n \"iso_8859-1:1987\",\n \"l1\",\n \"latin1\",\n \"us-ascii\",\n \"windows-1252\",\n \"x-cp1252\"\n)\n\nprivate val REPLACEMENT = byteArrayOf(0xEF.toByte(), 0xBF.toByte(), 0xBD.toByte())\n\n/**\n * Windows-1252 decoder.\n *\n * According to https://encoding.spec.whatwg.org/, ISO-8859-1 should be treated as windows-1252 for http.\n */\ninternal class TextDecoderFallback(\n encoding: String,\n val fatal: Boolean\n) : Decoder {\n\n init {\n val requestedEncoding = encoding.trim().toLowerCase()\n check(ENCODING_ALIASES.contains(requestedEncoding)) { \"$encoding is not supported.\" }\n }\n\n override fun decode(): String = \"\"\n\n override fun decode(buffer: ArrayBufferView): String = buildPacket {\n val bytes = buffer as Int8Array\n for (index in 0 until bytes.length) {\n val byte = bytes[index]\n val point: Int = byte.toCodePoint()\n\n if (point < 0) {\n check(!fatal) { \"Invalid character: $point\" }\n writeFully(REPLACEMENT)\n continue\n }\n\n if (point > 0xFF) {\n writeByte((point shr 8).toByte())\n }\n\n writeByte((point and 0xFF).toByte())\n }\n }.readBytes().decodeToString()\n\n override fun decode(buffer: ArrayBufferView, options: dynamic): String {\n return decode(buffer)\n }\n}\n\nprivate fun Byte.toCodePoint(): Int {\n val value = toInt() and 0xFF\n if (value.isASCII()) {\n return value\n }\n\n return WIN1252_TABLE[value - 0x80]\n}\n\nprivate fun Int.isASCII(): Boolean = this in 0..0x7F\n","package io.ktor.utils.io.pool\n\npublic actual abstract class DefaultPool\nactual constructor(actual final override val capacity: Int) : ObjectPool {\n\n private val instances = arrayOfNulls(capacity)\n private var size = 0\n\n protected actual abstract fun produceInstance(): T\n protected actual open fun disposeInstance(instance: T) {}\n\n protected actual open fun clearInstance(instance: T): T = instance\n protected actual open fun validateInstance(instance: T) {}\n\n actual final override fun borrow(): T {\n if (size == 0) return produceInstance()\n val idx = --size\n\n @Suppress(\"UNCHECKED_CAST\")\n val instance = instances[idx] as T\n instances[idx] = null\n\n return clearInstance(instance)\n }\n\n actual final override fun recycle(instance: T) {\n validateInstance(instance)\n if (size == capacity) {\n disposeInstance(instance)\n } else {\n instances[size++] = instance\n }\n }\n\n actual final override fun dispose() {\n for (i in 0 until size) {\n @Suppress(\"UNCHECKED_CAST\")\n val instance = instances[i] as T\n instances[i] = null\n disposeInstance(instance)\n }\n size = 0\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\npackage io.ktor.http\n\nimport io.ktor.util.*\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.*\nimport kotlin.native.concurrent.*\n\n@SharedImmutable\nprivate val URL_ALPHABET = (('a'..'z') + ('A'..'Z') + ('0'..'9')).map { it.toByte() }\n\n@SharedImmutable\nprivate val URL_ALPHABET_CHARS = (('a'..'z') + ('A'..'Z') + ('0'..'9'))\n\n@SharedImmutable\nprivate val HEX_ALPHABET = ('a'..'f') + ('A'..'F') + ('0'..'9')\n\n/**\n * https://tools.ietf.org/html/rfc3986#section-2\n */\n@SharedImmutable\nprivate val URL_PROTOCOL_PART = listOf(\n ':', '/', '?', '#', '[', ']', '@', // general\n '!', '$', '&', '\\'', '(', ')', '*', ',', ';', '=', // sub-components\n '-', '.', '_', '~', '+' // unreserved\n).map { it.toByte() }\n\n/**\n * from `pchar` in https://tools.ietf.org/html/rfc3986#section-2\n */\n@SharedImmutable\nprivate val VALID_PATH_PART = listOf(\n ':', '@',\n '!', '$', '&', '\\'', '(', ')', '*', '+', ',', ';', '=',\n '-', '.', '_', '~'\n)\n\n/**\n * Oauth specific percent encoding\n * https://tools.ietf.org/html/rfc5849#section-3.6\n */\n@SharedImmutable\nprivate val OAUTH_SYMBOLS = listOf('-', '.', '_', '~').map { it.toByte() }\n\ninternal val LETTERS_AND_NUMBERS = ('a'..'z').toSet() + ('A'..'Z').toSet() + ('0'..'9').toSet()\n\n/**\n * https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\ninternal val TOKENS: Set =\n setOf('!', '#', '%', '&', '\\'', '*', '+', '-', '.', '^', '_', '`', '|', '~') + LETTERS_AND_NUMBERS\n\n/**\n * Encode url part as specified in\n * https://tools.ietf.org/html/rfc3986#section-2\n */\npublic fun String.encodeURLQueryComponent(\n encodeFull: Boolean = false,\n spaceToPlus: Boolean = false,\n charset: Charset = Charsets.UTF_8\n): String = buildString {\n val content = charset.newEncoder().encode(this@encodeURLQueryComponent)\n content.forEach {\n when {\n it == ' '.toByte() -> if (spaceToPlus) append('+') else append(\"%20\")\n it in URL_ALPHABET || (!encodeFull && it in URL_PROTOCOL_PART) -> append(it.toChar())\n else -> append(it.percentEncode())\n }\n }\n}\n\n/**\n * Encode URL path or component. It escapes all illegal or ambiguous characters\n */\npublic fun String.encodeURLPath(): String = buildString {\n val charset = Charsets.UTF_8\n\n var index = 0\n while (index < this@encodeURLPath.length) {\n val current = this@encodeURLPath[index]\n if (current == '/' || current in URL_ALPHABET_CHARS || current in VALID_PATH_PART) {\n append(current)\n index++\n continue\n }\n\n if (current == '%' &&\n index + 2 < this@encodeURLPath.length &&\n this@encodeURLPath[index + 1] in HEX_ALPHABET &&\n this@encodeURLPath[index + 2] in HEX_ALPHABET\n ) {\n append(current)\n append(this@encodeURLPath[index + 1])\n append(this@encodeURLPath[index + 2])\n\n index += 3\n continue\n }\n\n val symbolSize = if (current.isSurrogate()) 2 else 1\n // we need to call newEncoder() for every symbol, otherwise it won't work\n charset.newEncoder().encode(this@encodeURLPath, index, index + symbolSize).forEach {\n append(it.percentEncode())\n }\n index += symbolSize\n }\n}\n\n/**\n * Encode [this] in percent encoding specified here:\n * https://tools.ietf.org/html/rfc5849#section-3.6\n */\npublic fun String.encodeOAuth(): String = encodeURLParameter()\n\n/**\n * Encode [this] as query parameter key.\n */\npublic fun String.encodeURLParameter(\n spaceToPlus: Boolean = false\n): String = buildString {\n val content = Charsets.UTF_8.newEncoder().encode(this@encodeURLParameter)\n content.forEach {\n when {\n it in URL_ALPHABET || it in OAUTH_SYMBOLS -> append(it.toChar())\n spaceToPlus && it == ' '.toByte() -> append('+')\n else -> append(it.percentEncode())\n }\n }\n}\n\n/**\n * Encode [this] as query parameter value.\n */\ninternal fun String.encodeURLParameterValue(): String = buildString {\n val content = Charsets.UTF_8.newEncoder().encode(this@encodeURLParameterValue)\n content.forEach {\n when {\n it in URL_ALPHABET || it in OAUTH_SYMBOLS || it == '='.toByte() -> append(it.toChar())\n it == ' '.toByte() -> append('+')\n else -> append(it.percentEncode())\n }\n }\n}\n\n/**\n * Decode URL query component\n */\npublic fun String.decodeURLQueryComponent(\n start: Int = 0,\n end: Int = length,\n plusIsSpace: Boolean = false,\n charset: Charset = Charsets.UTF_8\n): String = decodeScan(start, end, plusIsSpace, charset)\n\n/**\n * Decode percent encoded URL part within the specified range [[start], [end]).\n * This function is not intended to decode urlencoded forms so it doesn't decode plus character to space.\n */\npublic fun String.decodeURLPart(\n start: Int = 0,\n end: Int = length,\n charset: Charset = Charsets.UTF_8\n): String = decodeScan(start, end, false, charset)\n\nprivate fun String.decodeScan(start: Int, end: Int, plusIsSpace: Boolean, charset: Charset): String {\n for (index in start until end) {\n val ch = this[index]\n if (ch == '%' || (plusIsSpace && ch == '+')) {\n return decodeImpl(start, end, index, plusIsSpace, charset)\n }\n }\n return if (start == 0 && end == length) toString() else substring(start, end)\n}\n\nprivate fun CharSequence.decodeImpl(\n start: Int,\n end: Int,\n prefixEnd: Int,\n plusIsSpace: Boolean,\n charset: Charset\n): String {\n val length = end - start\n // if length is big, it probably means it is encoded\n val sbSize = if (length > 255) length / 3 else length\n val sb = StringBuilder(sbSize)\n\n if (prefixEnd > start) {\n sb.append(this, start, prefixEnd)\n }\n\n var index = prefixEnd\n\n // reuse ByteArray for hex decoding stripes\n var bytes: ByteArray? = null\n\n while (index < end) {\n val c = this[index]\n when {\n plusIsSpace && c == '+' -> {\n sb.append(' ')\n index++\n }\n c == '%' -> {\n // if ByteArray was not needed before, create it with an estimate of remaining string be all hex\n if (bytes == null) {\n bytes = ByteArray((end - index) / 3)\n }\n\n // fill ByteArray with all the bytes, so Charset can decode text\n var count = 0\n while (index < end && this[index] == '%') {\n if (index + 2 >= end) {\n throw URLDecodeException(\n \"Incomplete trailing HEX escape: ${substring(index)}, in $this at $index\"\n )\n }\n\n val digit1 = charToHexDigit(this[index + 1])\n val digit2 = charToHexDigit(this[index + 2])\n if (digit1 == -1 || digit2 == -1) {\n throw URLDecodeException(\n \"Wrong HEX escape: %${this[index + 1]}${this[index + 2]}, in $this, at $index\"\n )\n }\n\n bytes[count++] = (digit1 * 16 + digit2).toByte()\n index += 3\n }\n\n // Decode chars from bytes and put into StringBuilder\n // Note: Tried using ByteBuffer and using enc.decode() – it's slower\n sb.append(String(bytes, offset = 0, length = count, charset = charset))\n }\n else -> {\n sb.append(c)\n index++\n }\n }\n }\n\n return sb.toString()\n}\n\n/**\n * URL decoder exception\n */\npublic class URLDecodeException(message: String) : Exception(message)\n\nprivate fun Byte.percentEncode(): String = buildString(3) {\n val code = toInt() and 0xff\n append('%')\n append(hexDigitToChar(code shr 4))\n append(hexDigitToChar(code and 0x0f))\n}\n\nprivate fun charToHexDigit(c2: Char) = when (c2) {\n in '0'..'9' -> c2 - '0'\n in 'A'..'F' -> c2 - 'A' + 10\n in 'a'..'f' -> c2 - 'a' + 10\n else -> -1\n}\n\nprivate fun hexDigitToChar(digit: Int): Char = when (digit) {\n in 0..9 -> '0' + digit\n else -> 'A' + digit - 10\n}\n\nprivate fun ByteReadPacket.forEach(block: (Byte) -> Unit) {\n takeWhile { buffer ->\n while (buffer.canRead()) {\n block(buffer.readByte())\n }\n true\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(\"StringsKt\")\n\npackage kotlin.text\n\n/**\n * Converts the string into a regular expression [Regex] with the default options.\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.toRegex(): Regex = Regex(this)\n\n/**\n * Converts the string into a regular expression [Regex] with the specified single [option].\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.toRegex(option: RegexOption): Regex = Regex(this, option)\n\n/**\n * Converts the string into a regular expression [Regex] with the specified set of [options].\n */\n@kotlin.internal.InlineOnly\npublic inline fun String.toRegex(options: Set): Regex = Regex(this, options)\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\n/**\n * Escapes the characters in a String using HTML entities\n */\npublic fun String.escapeHTML(): String {\n val text = this@escapeHTML\n if (text.isEmpty()) return text\n\n return buildString(length) {\n for (idx in 0 until text.length) {\n val ch = text[idx]\n when (ch) {\n '\\'' -> append(\"'\")\n '\\\"' -> append(\""\")\n '&' -> append(\"&\")\n '<' -> append(\"<\")\n '>' -> append(\">\")\n else -> append(ch)\n }\n }\n }\n}\n\n/**\n * Splits the given string into two parts before and after separator.\n *\n * Useful together with destructuring declarations\n */\npublic inline fun String.chomp(\n separator: String,\n onMissingDelimiter: () -> Pair\n): Pair {\n val idx = indexOf(separator)\n return when (idx) {\n -1 -> onMissingDelimiter()\n else -> substring(0, idx) to substring(idx + 1)\n }\n}\n\n/**\n * Does the same as the regular [toLowerCase] except that locale-specific rules are not applied to ASCII characters\n * so latin characters are converted by the original english rules.\n */\n@InternalAPI\npublic fun String.toLowerCasePreservingASCIIRules(): String {\n val firstIndex = indexOfFirst {\n toLowerCasePreservingASCII(it) != it\n }\n\n if (firstIndex == -1) {\n return this\n }\n\n val original = this\n return buildString(length) {\n append(original, 0, firstIndex)\n\n for (index in firstIndex..original.lastIndex) {\n append(toLowerCasePreservingASCII(original[index]))\n }\n }\n}\n\n/**\n * Does the same as the regular [toUpperCase] except that locale-specific rules are not applied to ASCII characters\n * so latin characters are converted by the original english rules.\n */\n@InternalAPI\npublic fun String.toUpperCasePreservingASCIIRules(): String {\n val firstIndex = indexOfFirst {\n toUpperCasePreservingASCII(it) != it\n }\n\n if (firstIndex == -1) {\n return this\n }\n\n val original = this\n return buildString(length) {\n append(original, 0, firstIndex)\n\n for (index in firstIndex..original.lastIndex) {\n append(toUpperCasePreservingASCII(original[index]))\n }\n }\n}\n\nprivate fun toLowerCasePreservingASCII(ch: Char): Char = when (ch) {\n in 'A'..'Z' -> ch + 32\n in '\\u0000'..'\\u007f' -> ch\n else -> ch.toLowerCase()\n}\n\nprivate fun toUpperCasePreservingASCII(ch: Char): Char = when (ch) {\n in 'a'..'z' -> ch - 32\n in '\\u0000'..'\\u007f' -> ch\n else -> ch.toLowerCase()\n}\n\ninternal fun String.caseInsensitive(): CaseInsensitiveString = CaseInsensitiveString(this)\n\ninternal class CaseInsensitiveString(val content: String) {\n private val hash = content.toLowerCase().hashCode()\n\n override fun equals(other: Any?): Boolean =\n (other as? CaseInsensitiveString)?.content?.equals(content, ignoreCase = true) == true\n\n override fun hashCode(): Int = hash\n\n override fun toString(): String = content\n}\n","package io.ktor.utils.io.core\n\npublic expect interface Closeable {\n public fun close()\n}\n\npublic inline fun C.use(block: (C) -> R): R {\n var closed = false\n\n return try {\n block(this)\n } catch (first: Throwable) {\n try {\n closed = true\n close()\n } catch (second: Throwable) {\n first.addSuppressedInternal(second)\n }\n\n throw first\n } finally {\n if (!closed) {\n close()\n }\n }\n}\n\n@PublishedApi\ninternal expect fun Throwable.addSuppressedInternal(other: Throwable)\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\n/**\n * Represents `Content-Disposition` header value\n */\npublic class ContentDisposition(disposition: String, parameters: List = emptyList()) :\n HeaderValueWithParameters(disposition, parameters) {\n /**\n * Content disposition value without parameters\n */\n public val disposition: String get() = content\n\n /**\n * Content disposition name (from parameter named `name`)\n */\n public val name: String?\n get() = parameter(Parameters.Name)\n\n /**\n * Creates new with parameter appended\n */\n public fun withParameter(key: String, value: String): ContentDisposition =\n ContentDisposition(disposition, parameters + HeaderValueParam(key, value))\n\n /**\n * Creates new with parameters appended\n */\n public fun withParameters(newParameters: List): ContentDisposition =\n ContentDisposition(disposition, parameters + newParameters)\n\n override fun equals(other: Any?): Boolean =\n other is ContentDisposition &&\n disposition == other.disposition &&\n parameters == other.parameters\n\n override fun hashCode(): Int = disposition.hashCode() * 31 + parameters.hashCode()\n\n @Suppress(\"unused\", \"PublicApiImplicitType\")\n public companion object {\n /**\n * `Content-Disposition: file`\n */\n public val File: ContentDisposition = ContentDisposition(\"file\")\n\n /**\n * `Content-Disposition: mixed`\n */\n public val Mixed: ContentDisposition = ContentDisposition(\"mixed\")\n\n /**\n * `Content-Disposition: attachment`\n */\n public val Attachment: ContentDisposition = ContentDisposition(\"attachment\")\n\n /**\n * `Content-Disposition: inline`\n */\n public val Inline: ContentDisposition = ContentDisposition(\"inline\")\n\n /**\n * Parse `Content-Disposition` header [value]\n */\n public fun parse(value: String): ContentDisposition = parse(value) { v, p -> ContentDisposition(v, p) }\n }\n\n /**\n * Frequently used content disposition parameter names\n */\n @Suppress(\"KDocMissingDocumentation\", \"unused\", \"PublicApiImplicitType\")\n public object Parameters {\n public const val FileName: String = \"filename\"\n public const val FileNameAsterisk: String = \"filename*\"\n public const val Name: String = \"name\"\n public const val CreationDate: String = \"creation-date\"\n public const val ModificationDate: String = \"modification-date\"\n public const val ReadDate: String = \"read-date\"\n public const val Size: String = \"size\"\n public const val Handling: String = \"handling\"\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\n/**\n * Set `E-Tag` header\n */\npublic fun HeadersBuilder.etag(entityTag: String): Unit = set(HttpHeaders.ETag, entityTag)\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\n/**\n * Represents a value for a `Cache-Control` header\n *\n * @param visibility specifies an optional visibility such as private or public\n */\npublic sealed class CacheControl(public val visibility: Visibility?) {\n\n /**\n * Controls caching by proxies\n */\n public enum class Visibility(internal val headerValue: String) {\n /**\n * Specifies that the response is cacheable by clients and shared (proxy) caches.\n */\n Public(\"public\"),\n\n /**\n * Specifies that the response is cacheable only on the client and not by shared (proxy server) caches.\n */\n Private(\"private\")\n }\n\n /**\n * Represents a no-cache cache control value\n */\n public class NoCache(visibility: Visibility?) : CacheControl(visibility) {\n override fun toString(): String = if (visibility == null) {\n \"no-cache\"\n } else {\n \"no-cache, ${visibility.headerValue}\"\n }\n\n override fun equals(other: Any?): Boolean {\n return other is NoCache && visibility == other.visibility\n }\n\n override fun hashCode(): Int {\n return visibility.hashCode()\n }\n }\n\n /**\n * Represents a no-store cache control value\n */\n public class NoStore(visibility: Visibility?) : CacheControl(visibility) {\n override fun toString(): String = if (visibility == null) {\n \"no-store\"\n } else {\n \"no-store, ${visibility.headerValue}\"\n }\n\n override fun equals(other: Any?): Boolean {\n return other is NoStore && other.visibility == visibility\n }\n\n override fun hashCode(): Int {\n return visibility.hashCode()\n }\n }\n\n /**\n * Represents a cache control value with the specified max ages and re-validation strategies\n * @property maxAgeSeconds max-age in seconds\n * @property proxyMaxAgeSeconds max-age in seconds for caching proxies\n * @property mustRevalidate `true` if a client must validate in spite of age\n * @property proxyRevalidate `true` if a caching proxy must revalidate in spite of age\n */\n public class MaxAge(\n public val maxAgeSeconds: Int,\n public val proxyMaxAgeSeconds: Int? = null,\n public val mustRevalidate: Boolean = false,\n public val proxyRevalidate: Boolean = false,\n visibility: Visibility? = null\n ) : CacheControl(visibility) {\n override fun toString(): String {\n val parts = ArrayList(5)\n parts.add(\"max-age=$maxAgeSeconds\")\n if (proxyMaxAgeSeconds != null) {\n parts.add(\"s-maxage=$proxyMaxAgeSeconds\")\n }\n if (mustRevalidate) {\n parts.add(\"must-revalidate\")\n }\n if (proxyRevalidate) {\n parts.add(\"proxy-revalidate\")\n }\n if (visibility != null) {\n parts.add(visibility.headerValue)\n }\n\n return parts.joinToString(\", \")\n }\n\n override fun equals(other: Any?): Boolean {\n return other === this || (\n other is MaxAge &&\n other.maxAgeSeconds == maxAgeSeconds &&\n other.proxyMaxAgeSeconds == proxyMaxAgeSeconds &&\n other.mustRevalidate == mustRevalidate &&\n other.proxyRevalidate == proxyRevalidate &&\n other.visibility == visibility\n )\n }\n\n override fun hashCode(): Int {\n var result = maxAgeSeconds\n result = 31 * result + (proxyMaxAgeSeconds ?: 0)\n result = 31 * result + mustRevalidate.hashCode()\n result = 31 * result + proxyRevalidate.hashCode()\n result = 31 * result + visibility.hashCode()\n return result\n }\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\nimport kotlin.native.concurrent.*\n\n/** Separator symbols listed in RFC https://tools.ietf.org/html/rfc2616#section-2.2 */\n@SharedImmutable\nprivate val HeaderFieldValueSeparators =\n setOf('(', ')', '<', '>', '@', ',', ';', ':', '\\\\', '\\\"', '/', '[', ']', '?', '=', '{', '}', ' ', '\\t', '\\n', '\\r')\n\n/**\n * Represents a header value that consist of [content] followed by [parameters].\n * Useful for headers such as `Content-Type`, `Content-Disposition` and so on.\n *\n * @property content header's content without parameters\n * @property parameters\n */\npublic abstract class HeaderValueWithParameters(\n protected val content: String,\n public val parameters: List = emptyList()\n) {\n\n /**\n * The first value for the parameter with [name] comparing case-insensitively or `null` if no such parameters found\n */\n public fun parameter(name: String): String? =\n parameters.firstOrNull { it.name.equals(name, ignoreCase = true) }?.value\n\n override fun toString(): String = when {\n parameters.isEmpty() -> content\n else -> {\n val size = content.length + parameters.sumBy { it.name.length + it.value.length + 3 }\n StringBuilder(size).apply {\n append(content)\n for (index in 0 until parameters.size) {\n val (name, value) = parameters[index]\n append(\"; \")\n append(name)\n append(\"=\")\n value.escapeIfNeededTo(this)\n }\n }.toString()\n }\n }\n\n public companion object {\n /**\n * Parse header with parameter and pass it to [init] function to instantiate particular type\n */\n public inline fun parse(value: String, init: (String, List) -> R): R {\n val headerValue = parseHeaderValue(value).single()\n return init(headerValue.value, headerValue.params)\n }\n }\n}\n\n/**\n * Append formatted header value to the builder\n */\npublic fun StringValuesBuilder.append(name: String, value: HeaderValueWithParameters) {\n append(name, value.toString())\n}\n\n/**\n * Escape using double quotes if needed or keep as is if no dangerous strings found\n */\n@InternalAPI\npublic fun String.escapeIfNeeded(): String = when {\n checkNeedEscape() -> quote()\n else -> this\n}\n\n@Suppress(\"NOTHING_TO_INLINE\")\nprivate inline fun String.escapeIfNeededTo(out: StringBuilder) {\n when {\n checkNeedEscape() -> out.append(this.quote())\n else -> out.append(this)\n }\n}\n\nprivate fun String.checkNeedEscape(): Boolean {\n if (isEmpty()) return true\n if (isQuoted()) return false\n\n for (index in 0 until length) {\n if (HeaderFieldValueSeparators.contains(this[index])) return true\n }\n\n return false\n}\n\nprivate fun String.isQuoted(): Boolean {\n if (length < 2) {\n return false\n }\n if (first() != '\"' || last() != '\"') {\n return false\n }\n var startIndex = 1\n do {\n val index = indexOf('\"', startIndex)\n if (index == lastIndex) {\n break\n }\n\n var slashesCount = 0\n var slashIndex = index - 1\n while (this[slashIndex] == '\\\\') {\n slashesCount++\n slashIndex--\n }\n if (slashesCount % 2 == 0) {\n return false\n }\n\n startIndex = index + 1\n } while (startIndex < length)\n\n return true\n}\n\n/**\n * Escape string using double quotes\n */\n@InternalAPI\npublic fun String.quote(): String = buildString { this@quote.quoteTo(this) }\n\nprivate fun String.quoteTo(out: StringBuilder) {\n out.append(\"\\\"\")\n for (i in 0 until length) {\n val ch = this[i]\n when (ch) {\n '\\\\' -> out.append(\"\\\\\\\\\")\n '\\n' -> out.append(\"\\\\n\")\n '\\r' -> out.append(\"\\\\r\")\n '\\t' -> out.append(\"\\\\t\")\n '\\\"' -> out.append(\"\\\\\\\"\")\n else -> out.append(ch)\n }\n }\n out.append(\"\\\"\")\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\n\n/**\n * Format `Content-Range` header value\n */\npublic fun contentRangeHeaderValue(\n range: LongRange?,\n fullLength: Long? = null,\n unit: RangeUnits = RangeUnits.Bytes\n): String =\n contentRangeHeaderValue(range, fullLength, unit.unitToken)\n\n/**\n * Format `Content-Range` header value\n */\npublic fun contentRangeHeaderValue(\n range: LongRange?,\n fullLength: Long? = null,\n unit: String = RangeUnits.Bytes.unitToken\n): String = buildString {\n append(unit)\n append(\" \")\n if (range != null) {\n append(range.start)\n append('-')\n append(range.endInclusive)\n } else {\n append('*')\n }\n append('/')\n append(fullLength ?: \"*\")\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.utils.io.charsets.*\n\n/**\n * Represents a value for a `Content-Type` header.\n * @property contentType represents a type part of the media type.\n * @property contentSubtype represents a subtype part of the media type.\n */\npublic class ContentType private constructor(\n public val contentType: String,\n public val contentSubtype: String,\n existingContent: String,\n parameters: List = emptyList()\n) : HeaderValueWithParameters(existingContent, parameters) {\n\n public constructor(\n contentType: String,\n contentSubtype: String,\n parameters: List = emptyList()\n ) : this(\n contentType,\n contentSubtype,\n \"$contentType/$contentSubtype\",\n parameters\n )\n\n /**\n * Creates a copy of `this` type with the added parameter with the [name] and [value].\n */\n public fun withParameter(name: String, value: String): ContentType {\n if (hasParameter(name, value)) return this\n\n return ContentType(contentType, contentSubtype, content, parameters + HeaderValueParam(name, value))\n }\n\n private fun hasParameter(name: String, value: String): Boolean = when (parameters.size) {\n 0 -> false\n 1 -> parameters[0].let { it.name.equals(name, ignoreCase = true) && it.value.equals(value, ignoreCase = true) }\n else -> parameters.any { it.name.equals(name, ignoreCase = true) && it.value.equals(value, ignoreCase = true) }\n }\n\n /**\n * Creates a copy of `this` type without any parameters\n */\n public fun withoutParameters(): ContentType = when {\n parameters.isEmpty() -> this\n else -> ContentType(contentType, contentSubtype)\n }\n\n /**\n * Checks if `this` type matches a [pattern] type taking into account placeholder symbols `*` and parameters.\n */\n public fun match(pattern: ContentType): Boolean {\n if (pattern.contentType != \"*\" && !pattern.contentType.equals(contentType, ignoreCase = true)) {\n return false\n }\n\n if (pattern.contentSubtype != \"*\" && !pattern.contentSubtype.equals(contentSubtype, ignoreCase = true)) {\n return false\n }\n\n for ((patternName, patternValue) in pattern.parameters) {\n val matches = when (patternName) {\n \"*\" -> {\n when (patternValue) {\n \"*\" -> true\n else -> parameters.any { p -> p.value.equals(patternValue, ignoreCase = true) }\n }\n }\n else -> {\n val value = parameter(patternName)\n when (patternValue) {\n \"*\" -> value != null\n else -> value.equals(patternValue, ignoreCase = true)\n }\n }\n }\n\n if (!matches) {\n return false\n }\n }\n return true\n }\n\n /**\n * Checks if `this` type matches a [pattern] type taking into account placeholder symbols `*` and parameters.\n */\n public fun match(pattern: String): Boolean = match(parse(pattern))\n\n override fun equals(other: Any?): Boolean =\n other is ContentType &&\n contentType.equals(other.contentType, ignoreCase = true) &&\n contentSubtype.equals(other.contentSubtype, ignoreCase = true) &&\n parameters == other.parameters\n\n override fun hashCode(): Int {\n var result = contentType.toLowerCase().hashCode()\n result += 31 * result + contentSubtype.toLowerCase().hashCode()\n result += 31 * parameters.hashCode()\n return result\n }\n\n public companion object {\n /**\n * Parses a string representing a `Content-Type` header into a [ContentType] instance.\n */\n public fun parse(value: String): ContentType {\n if (value.isBlank()) return Any\n\n return parse(value) { parts, parameters ->\n val slash = parts.indexOf('/')\n\n if (slash == -1) {\n if (parts.trim() == \"*\") {\n return Any\n }\n\n throw BadContentTypeFormatException(value)\n }\n\n val type = parts.substring(0, slash).trim()\n\n if (type.isEmpty()) {\n throw BadContentTypeFormatException(value)\n }\n\n val subtype = parts.substring(slash + 1).trim()\n\n if (subtype.isEmpty() || subtype.contains('/')) {\n throw BadContentTypeFormatException(value)\n }\n\n ContentType(type, subtype, parameters)\n }\n }\n\n /**\n * Represents a pattern `* / *` to match any content type.\n */\n public val Any: ContentType = ContentType(\"*\", \"*\")\n }\n\n /**\n * Provides a list of standard subtypes of an `application` content type.\n */\n @Suppress(\"KDocMissingDocumentation\", \"unused\")\n public object Application {\n /**\n * Represents a pattern `application / *` to match any application content type.\n */\n public val Any: ContentType = ContentType(\"application\", \"*\")\n public val Atom: ContentType = ContentType(\"application\", \"atom+xml\")\n public val Cbor: ContentType = ContentType(\"application\", \"cbor\")\n public val Json: ContentType = ContentType(\"application\", \"json\")\n public val HalJson: ContentType = ContentType(\"application\", \"hal+json\")\n public val JavaScript: ContentType = ContentType(\"application\", \"javascript\")\n public val OctetStream: ContentType = ContentType(\"application\", \"octet-stream\")\n public val FontWoff: ContentType = ContentType(\"application\", \"font-woff\")\n public val Rss: ContentType = ContentType(\"application\", \"rss+xml\")\n public val Xml: ContentType = ContentType(\"application\", \"xml\")\n public val Xml_Dtd: ContentType = ContentType(\"application\", \"xml-dtd\")\n public val Zip: ContentType = ContentType(\"application\", \"zip\")\n public val GZip: ContentType = ContentType(\"application\", \"gzip\")\n\n public val FormUrlEncoded: ContentType =\n ContentType(\"application\", \"x-www-form-urlencoded\")\n\n public val Pdf: ContentType = ContentType(\"application\", \"pdf\")\n public val ProtoBuf: ContentType = ContentType(\"application\", \"protobuf\")\n public val Wasm: ContentType = ContentType(\"application\", \"wasm\")\n public val ProblemJson: ContentType = ContentType(\"application\", \"problem+json\")\n public val ProblemXml: ContentType = ContentType(\"application\", \"problem+xml\")\n }\n\n /**\n * Provides a list of standard subtypes of an `audio` content type.\n */\n @Suppress(\"KDocMissingDocumentation\", \"unused\")\n public object Audio {\n public val Any: ContentType = ContentType(\"audio\", \"*\")\n public val MP4: ContentType = ContentType(\"audio\", \"mp4\")\n public val MPEG: ContentType = ContentType(\"audio\", \"mpeg\")\n public val OGG: ContentType = ContentType(\"audio\", \"ogg\")\n }\n\n /**\n * Provides a list of standard subtypes of an `image` content type.\n */\n @Suppress(\"KDocMissingDocumentation\", \"unused\")\n public object Image {\n public val Any: ContentType = ContentType(\"image\", \"*\")\n public val GIF: ContentType = ContentType(\"image\", \"gif\")\n public val JPEG: ContentType = ContentType(\"image\", \"jpeg\")\n public val PNG: ContentType = ContentType(\"image\", \"png\")\n public val SVG: ContentType = ContentType(\"image\", \"svg+xml\")\n public val XIcon: ContentType = ContentType(\"image\", \"x-icon\")\n }\n\n /**\n * Provides a list of standard subtypes of a `message` content type.\n */\n @Suppress(\"KDocMissingDocumentation\", \"unused\")\n public object Message {\n public val Any: ContentType = ContentType(\"message\", \"*\")\n public val Http: ContentType = ContentType(\"message\", \"http\")\n }\n\n /**\n * Provides a list of standard subtypes of a `multipart` content type.\n */\n @Suppress(\"KDocMissingDocumentation\", \"unused\")\n public object MultiPart {\n public val Any: ContentType = ContentType(\"multipart\", \"*\")\n public val Mixed: ContentType = ContentType(\"multipart\", \"mixed\")\n public val Alternative: ContentType = ContentType(\"multipart\", \"alternative\")\n public val Related: ContentType = ContentType(\"multipart\", \"related\")\n public val FormData: ContentType = ContentType(\"multipart\", \"form-data\")\n public val Signed: ContentType = ContentType(\"multipart\", \"signed\")\n public val Encrypted: ContentType = ContentType(\"multipart\", \"encrypted\")\n public val ByteRanges: ContentType = ContentType(\"multipart\", \"byteranges\")\n }\n\n /**\n * Provides a list of standard subtypes of a `text` content type.\n */\n @Suppress(\"KDocMissingDocumentation\", \"unused\")\n public object Text {\n public val Any: ContentType = ContentType(\"text\", \"*\")\n public val Plain: ContentType = ContentType(\"text\", \"plain\")\n public val CSS: ContentType = ContentType(\"text\", \"css\")\n public val CSV: ContentType = ContentType(\"text\", \"csv\")\n public val Html: ContentType = ContentType(\"text\", \"html\")\n public val JavaScript: ContentType = ContentType(\"text\", \"javascript\")\n public val VCard: ContentType = ContentType(\"text\", \"vcard\")\n public val Xml: ContentType = ContentType(\"text\", \"xml\")\n public val EventStream: ContentType = ContentType(\"text\", \"event-stream\")\n }\n\n /**\n * Provides a list of standard subtypes of a `video` content type.\n */\n @Suppress(\"KDocMissingDocumentation\", \"unused\")\n public object Video {\n public val Any: ContentType = ContentType(\"video\", \"*\")\n public val MPEG: ContentType = ContentType(\"video\", \"mpeg\")\n public val MP4: ContentType = ContentType(\"video\", \"mp4\")\n public val OGG: ContentType = ContentType(\"video\", \"ogg\")\n public val QuickTime: ContentType = ContentType(\"video\", \"quicktime\")\n }\n}\n\n/**\n * Exception thrown when a content type string is malformed.\n */\npublic class BadContentTypeFormatException(value: String) : Exception(\"Bad Content-Type format: $value\")\n\n/**\n * Creates a copy of `this` type with the added charset parameter with [charset] value.\n */\npublic fun ContentType.withCharset(charset: Charset): ContentType = withParameter(\"charset\", charset.name)\n\n/**\n * Extracts a [Charset] value from the given `Content-Type`, `Content-Disposition` or similar header value.\n */\npublic fun HeaderValueWithParameters.charset(): Charset? = parameter(\"charset\")?.let { Charset.forName(it) }\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\nimport io.ktor.util.date.*\nimport kotlin.jvm.*\nimport kotlin.native.concurrent.*\n\n/**\n * Represents a cookie with name, content and a set of settings such as expiration, visibility and security.\n * A cookie with neither [expires] nor [maxAge] is a session cookie.\n *\n * @property name\n * @property value\n * @property encoding - cookie encoding type [CookieEncoding]\n * @property maxAge number of seconds to keep cookie\n * @property expires date when it expires\n * @property domain for which it is set\n * @property path for which it is set\n * @property secure send it via secure connection only\n * @property httpOnly only transfer cookie over HTTP, no access from JavaScript\n * @property extensions additional cookie extensions\n */\npublic data class Cookie(\n val name: String,\n val value: String,\n val encoding: CookieEncoding = CookieEncoding.URI_ENCODING,\n @get:JvmName(\"getMaxAgeInt\")\n val maxAge: Int = 0,\n val expires: GMTDate? = null,\n val domain: String? = null,\n val path: String? = null,\n val secure: Boolean = false,\n val httpOnly: Boolean = false,\n val extensions: Map = emptyMap()\n) {\n @Suppress(\"unused\", \"KDocMissingDocumentation\")\n @Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\n public fun getMaxAge(): Int = maxAge\n}\n\n/**\n * Cooke encoding strategy\n */\npublic enum class CookieEncoding {\n /**\n * No encoding (could be dangerous)\n */\n RAW,\n\n /**\n * Double quotes with slash-escaping\n */\n DQUOTES,\n\n /**\n * URI encoding\n */\n URI_ENCODING,\n\n /**\n * BASE64 encoding\n */\n BASE64_ENCODING\n}\n\n@SharedImmutable\nprivate val loweredPartNames = setOf(\"max-age\", \"expires\", \"domain\", \"path\", \"secure\", \"httponly\", \"\\$x-enc\")\n\n/**\n * Parse server's `Set-Cookie` header value\n */\n@KtorExperimentalAPI\npublic fun parseServerSetCookieHeader(cookiesHeader: String): Cookie {\n val asMap = parseClientCookiesHeader(cookiesHeader, false)\n val first = asMap.entries.first { !it.key.startsWith(\"$\") }\n val encoding = asMap[\"\\$x-enc\"]?.let { CookieEncoding.valueOf(it) } ?: CookieEncoding.RAW\n val loweredMap = asMap.mapKeys { it.key.toLowerCasePreservingASCIIRules() }\n\n return Cookie(\n name = first.key,\n value = decodeCookieValue(first.value, encoding),\n encoding = encoding,\n maxAge = loweredMap[\"max-age\"]?.toIntClamping() ?: 0,\n expires = loweredMap[\"expires\"]?.fromCookieToGmtDate(),\n domain = loweredMap[\"domain\"],\n path = loweredMap[\"path\"],\n secure = \"secure\" in loweredMap,\n httpOnly = \"httponly\" in loweredMap,\n extensions = asMap.filterKeys {\n it.toLowerCasePreservingASCIIRules() !in loweredPartNames && it != first.key\n }\n )\n}\n\n@ThreadLocal\nprivate val clientCookieHeaderPattern = \"\"\"(^|;)\\s*([^()<>@;:/\\\\\"\\[\\]\\?=\\{\\}\\s]+)\\s*(=\\s*(\"[^\"]*\"|[^;]*))?\"\"\".toRegex()\n\n/**\n * Parse client's `Cookie` header value\n */\n@KtorExperimentalAPI\npublic fun parseClientCookiesHeader(cookiesHeader: String, skipEscaped: Boolean = true): Map =\n clientCookieHeaderPattern.findAll(cookiesHeader)\n .map { (it.groups[2]?.value ?: \"\") to (it.groups[4]?.value ?: \"\") }\n .filter { !skipEscaped || !it.first.startsWith(\"$\") }\n .map { cookie ->\n if (cookie.second.startsWith(\"\\\"\") && cookie.second.endsWith(\"\\\"\")) {\n cookie.copy(second = cookie.second.removeSurrounding(\"\\\"\"))\n } else {\n cookie\n }\n }\n .toMap()\n\n/**\n * Format `Set-Cookie` header value\n */\n@KtorExperimentalAPI\npublic fun renderSetCookieHeader(cookie: Cookie): String = with(cookie) {\n renderSetCookieHeader(\n name,\n value,\n encoding,\n maxAge,\n expires,\n domain,\n path,\n secure,\n httpOnly,\n extensions\n )\n}\n\n/**\n * Format `Set-Cookie` header value\n */\n@KtorExperimentalAPI\npublic fun renderCookieHeader(cookie: Cookie): String = with(cookie) {\n renderSetCookieHeader(\n name,\n value,\n encoding,\n maxAge,\n expires,\n domain,\n path,\n secure,\n httpOnly,\n extensions,\n includeEncoding = false\n )\n}\n\n/**\n * Format `Set-Cookie` header value\n */\n@KtorExperimentalAPI\npublic fun renderSetCookieHeader(\n name: String,\n value: String,\n encoding: CookieEncoding = CookieEncoding.URI_ENCODING,\n maxAge: Int = 0,\n expires: GMTDate? = null,\n domain: String? = null,\n path: String? = null,\n secure: Boolean = false,\n httpOnly: Boolean = false,\n extensions: Map = emptyMap(),\n includeEncoding: Boolean = true\n): String = (\n listOf(\n cookiePart(name.assertCookieName(), value, encoding),\n cookiePartUnencoded(\"Max-Age\", if (maxAge > 0) maxAge else null),\n cookiePartUnencoded(\"Expires\", expires?.toHttpDate()),\n cookiePart(\"Domain\", domain, CookieEncoding.RAW),\n cookiePart(\"Path\", path, CookieEncoding.RAW),\n\n cookiePartFlag(\"Secure\", secure),\n cookiePartFlag(\"HttpOnly\", httpOnly)\n ) + extensions.map { cookiePartExt(it.key.assertCookieName(), it.value, encoding) } +\n if (includeEncoding) cookiePartExt(\"\\$x-enc\", encoding.name, CookieEncoding.RAW) else \"\"\n ).filter { it.isNotEmpty() }\n .joinToString(\"; \")\n\n/**\n * Encode cookie value using the specified [encoding]\n */\n@KtorExperimentalAPI\npublic fun encodeCookieValue(value: String, encoding: CookieEncoding): String = when (encoding) {\n CookieEncoding.RAW -> when {\n value.any { it.shouldEscapeInCookies() } ->\n throw IllegalArgumentException(\n \"The cookie value contains characters that couldn't be encoded in RAW format. \" +\n \" Consider URL_ENCODING mode\"\n )\n else -> value\n }\n CookieEncoding.DQUOTES -> when {\n value.contains('\"') -> throw IllegalArgumentException(\n \"The cookie value contains characters that couldn't be encoded in DQUOTES format. \" +\n \"Consider URL_ENCODING mode\"\n )\n value.any { it.shouldEscapeInCookies() } -> \"\\\"$value\\\"\"\n else -> value\n }\n CookieEncoding.BASE64_ENCODING -> value.encodeBase64()\n CookieEncoding.URI_ENCODING -> value.encodeURLQueryComponent(encodeFull = true, spaceToPlus = true)\n}\n\n/**\n * Decode cookie value using the specified [encoding]\n */\n@KtorExperimentalAPI\npublic fun decodeCookieValue(encodedValue: String, encoding: CookieEncoding): String = when (encoding) {\n CookieEncoding.RAW, CookieEncoding.DQUOTES -> when {\n encodedValue.trimStart().startsWith(\"\\\"\") && encodedValue.trimEnd().endsWith(\"\\\"\") ->\n encodedValue.trim().removeSurrounding(\"\\\"\")\n else -> encodedValue\n }\n CookieEncoding.URI_ENCODING -> encodedValue.decodeURLQueryComponent(plusIsSpace = true)\n CookieEncoding.BASE64_ENCODING -> encodedValue.decodeBase64String()\n}\n\nprivate fun String.assertCookieName() = when {\n any { it.shouldEscapeInCookies() } -> throw IllegalArgumentException(\"Cookie name is not valid: $this\")\n else -> this\n}\n\n@SharedImmutable\nprivate val cookieCharsShouldBeEscaped = setOf(';', ',', '\"')\n\nprivate fun Char.shouldEscapeInCookies() = isWhitespace() || this < ' ' || this in cookieCharsShouldBeEscaped\n\n@Suppress(\"NOTHING_TO_INLINE\")\nprivate inline fun cookiePart(name: String, value: Any?, encoding: CookieEncoding) =\n if (value != null) \"$name=${encodeCookieValue(value.toString(), encoding)}\" else \"\"\n\n@Suppress(\"NOTHING_TO_INLINE\")\nprivate inline fun cookiePartUnencoded(name: String, value: Any?) =\n if (value != null) \"$name=$value\" else \"\"\n\n@Suppress(\"NOTHING_TO_INLINE\")\nprivate inline fun cookiePartFlag(name: String, value: Boolean) =\n if (value) name else \"\"\n\n@Suppress(\"NOTHING_TO_INLINE\")\nprivate inline fun cookiePartExt(name: String, value: String?, encoding: CookieEncoding) =\n if (value == null) cookiePartFlag(name, true) else cookiePart(name, value, encoding)\n\nprivate fun String.toIntClamping(): Int = toLong().coerceIn(0L, Int.MAX_VALUE.toLong()).toInt()\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\n\n/**\n * Represents HTTP headers as a map from case-insensitive names to collection of [String] values\n */\npublic interface Headers : StringValues {\n public companion object {\n /**\n * Empty [Headers] instance\n */\n @Suppress(\"DEPRECATION_ERROR\")\n public val Empty: Headers = EmptyHeaders\n\n /**\n * Builds a [Headers] instance with the given [builder] function\n * @param builder specifies a function to build a map\n */\n public inline fun build(builder: HeadersBuilder.() -> Unit): Headers = HeadersBuilder().apply(builder).build()\n }\n}\n\n@Suppress(\"KDocMissingDocumentation\")\npublic class HeadersBuilder(size: Int = 8) : StringValuesBuilder(true, size) {\n override fun build(): Headers {\n require(!built) { \"HeadersBuilder can only build a single Headers instance\" }\n built = true\n return HeadersImpl(values)\n }\n\n override fun validateName(name: String) {\n super.validateName(name)\n HttpHeaders.checkHeaderName(name)\n }\n\n override fun validateValue(value: String) {\n super.validateValue(value)\n HttpHeaders.checkHeaderValue(value)\n }\n}\n\n@Suppress(\"KDocMissingDocumentation\")\n@Deprecated(\n \"Empty headers is internal\",\n replaceWith = ReplaceWith(\"Headers.Empty\"),\n level = DeprecationLevel.ERROR\n)\npublic object EmptyHeaders : Headers {\n override val caseInsensitiveName: Boolean get() = true\n override fun getAll(name: String): List? = null\n override fun names(): Set = emptySet()\n override fun entries(): Set>> = emptySet()\n override fun isEmpty(): Boolean = true\n override fun toString(): String = \"Headers ${entries()}\"\n}\n\n/**\n * Returns empty headers\n */\npublic fun headersOf(): Headers = Headers.Empty\n\n/**\n * Returns [Headers] instance containing only one header with the specified [name] and [value]\n */\npublic fun headersOf(name: String, value: String): Headers = HeadersSingleImpl(name, listOf(value))\n\n/**\n * Returns [Headers] instance containing only one header with the specified [name] and [values]\n */\npublic fun headersOf(name: String, values: List): Headers = HeadersSingleImpl(name, values)\n\n/**\n * Returns [Headers] instance from [pairs]\n */\npublic fun headersOf(vararg pairs: Pair>): Headers = HeadersImpl(pairs.asList().toMap())\n\n@InternalAPI\n@Suppress(\"KDocMissingDocumentation\")\npublic class HeadersImpl(\n values: Map> = emptyMap()\n) : Headers, StringValuesImpl(true, values) {\n override fun toString(): String = \"Headers ${entries()}\"\n}\n\n@InternalAPI\n@Suppress(\"KDocMissingDocumentation\")\npublic class HeadersSingleImpl(\n name: String,\n values: List\n) : Headers, StringValuesSingleImpl(true, name, values) {\n override fun toString(): String = \"Headers ${entries()}\"\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\n\n/**\n * Represents a single value parameter\n * @property name of parameter\n * @property value of parameter\n */\npublic data class HeaderValueParam(val name: String, val value: String) {\n override fun equals(other: Any?): Boolean {\n return other is HeaderValueParam &&\n other.name.equals(name, ignoreCase = true) &&\n other.value.equals(value, ignoreCase = true)\n }\n\n override fun hashCode(): Int {\n var result = name.toLowerCase().hashCode()\n result += 31 * result + value.toLowerCase().hashCode()\n return result\n }\n}\n\n/**\n * Represents a header value. Similar to [HeaderValueWithParameters]\n * @property value\n * @property params for this value (could be empty)\n */\npublic data class HeaderValue(val value: String, val params: List = listOf()) {\n /**\n * Value's quality according to `q` parameter or `1.0` if missing or invalid\n */\n val quality: Double =\n params.firstOrNull { it.name == \"q\" }?.value?.toDoubleOrNull()?.takeIf { it in 0.0..1.0 } ?: 1.0\n}\n\n/**\n * Parse header value and sort multiple values according to qualities\n */\npublic fun parseAndSortHeader(header: String?): List =\n parseHeaderValue(header).sortedByDescending { it.quality }\n\n/**\n * Parse `Content-Type` header values and sort them by quality and asterisks quantity\n */\npublic fun parseAndSortContentTypeHeader(header: String?): List = parseHeaderValue(header).sortedWith(\n compareByDescending { it.quality }.thenBy {\n val contentType = ContentType.parse(it.value)\n var asterisks = 0\n if (contentType.contentType == \"*\") {\n asterisks += 2\n }\n if (contentType.contentSubtype == \"*\") {\n asterisks++\n }\n asterisks\n }.thenByDescending { it.params.size }\n)\n\n/**\n * Parse header value respecting multi-values\n */\npublic fun parseHeaderValue(text: String?): List {\n return parseHeaderValue(text, false)\n}\n\n/**\n * Parse header value respecting multi-values\n * @param parametersOnly if no header value itself, only parameters\n */\npublic fun parseHeaderValue(text: String?, parametersOnly: Boolean): List {\n if (text == null) {\n return emptyList()\n }\n\n var position = 0\n val items = lazy(LazyThreadSafetyMode.NONE) { arrayListOf() }\n while (position <= text.lastIndex) {\n position = parseHeaderValueItem(text, position, items, parametersOnly)\n }\n return items.valueOrEmpty()\n}\n\n/**\n * Construct a list of [HeaderValueParam] from an iterable of pairs\n */\npublic fun Iterable>.toHeaderParamsList(): List =\n map { HeaderValueParam(it.first, it.second) }\n\nprivate fun Lazy>.valueOrEmpty(): List = if (isInitialized()) value else emptyList()\nprivate fun String.subtrim(start: Int, end: Int): String {\n return substring(start, end).trim()\n}\n\nprivate fun parseHeaderValueItem(\n text: String,\n start: Int,\n items: Lazy>,\n parametersOnly: Boolean\n): Int {\n var position = start\n val parameters = lazy(LazyThreadSafetyMode.NONE) { arrayListOf() }\n var valueEnd: Int? = if (parametersOnly) position else null\n\n while (position <= text.lastIndex) {\n when (text[position]) {\n ',' -> {\n items.value.add(HeaderValue(text.subtrim(start, valueEnd ?: position), parameters.valueOrEmpty()))\n return position + 1\n }\n ';' -> {\n if (valueEnd == null) valueEnd = position\n position = parseHeaderValueParameter(text, position + 1, parameters)\n }\n else -> {\n position = if (parametersOnly) {\n parseHeaderValueParameter(text, position, parameters)\n } else {\n position + 1\n }\n }\n }\n }\n\n items.value.add(HeaderValue(text.subtrim(start, valueEnd ?: position), parameters.valueOrEmpty()))\n return position\n}\n\nprivate fun parseHeaderValueParameter(text: String, start: Int, parameters: Lazy>): Int {\n fun addParam(text: String, start: Int, end: Int, value: String) {\n val name = text.subtrim(start, end)\n if (name.isEmpty()) {\n return\n }\n\n parameters.value.add(HeaderValueParam(name, value))\n }\n\n var position = start\n while (position <= text.lastIndex) {\n when (text[position]) {\n '=' -> {\n val (paramEnd, paramValue) = parseHeaderValueParameterValue(text, position + 1)\n addParam(text, start, position, paramValue)\n return paramEnd\n }\n ';', ',' -> {\n addParam(text, start, position, \"\")\n return position\n }\n else -> position++\n }\n }\n\n addParam(text, start, position, \"\")\n return position\n}\n\nprivate fun parseHeaderValueParameterValue(value: String, start: Int): Pair {\n if (value.length == start) {\n return start to \"\"\n }\n\n var position = start\n if (value[start] == '\"') {\n return parseHeaderValueParameterValueQuoted(value, position + 1)\n }\n\n while (position <= value.lastIndex) {\n when (value[position]) {\n ';', ',' -> return position to value.subtrim(start, position)\n else -> position++\n }\n }\n return position to value.subtrim(start, position)\n}\n\nprivate fun parseHeaderValueParameterValueQuoted(value: String, start: Int): Pair {\n var position = start\n val builder = StringBuilder()\n loop@ while (position <= value.lastIndex) {\n val currentChar = value[position]\n\n when {\n currentChar == '\"' && value.nextIsSemicolonOrEnd(position) -> {\n return position + 1 to builder.toString()\n }\n currentChar == '\\\\' && position < value.lastIndex - 2 -> {\n builder.append(value[position + 1])\n position += 2\n continue@loop\n }\n }\n\n builder.append(currentChar)\n position++\n }\n\n // The value is unquoted here\n return position to '\"' + builder.toString()\n}\n\nprivate fun String.nextIsSemicolonOrEnd(start: Int): Boolean {\n var position = start + 1\n loop@ while (position < length && get(position) == ' ') {\n position += 1\n }\n\n return position == length || get(position) == ';'\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\n\n@Suppress(\"unused\", \"KDocMissingDocumentation\", \"PublicApiImplicitType\", \"MayBeConstant\")\npublic object HttpHeaders {\n // Permanently registered standard HTTP headers\n // The list is taken from http://www.iana.org/assignments/message-headers/message-headers.xml#perm-headers\n\n public val Accept: String = \"Accept\"\n public val AcceptCharset: String = \"Accept-Charset\"\n public val AcceptEncoding: String = \"Accept-Encoding\"\n public val AcceptLanguage: String = \"Accept-Language\"\n public val AcceptRanges: String = \"Accept-Ranges\"\n public val Age: String = \"Age\"\n public val Allow: String = \"Allow\"\n public val ALPN: String = \"ALPN\" // Application-Layer Protocol Negotiation, HTTP/2\n public val AuthenticationInfo: String = \"Authentication-Info\"\n public val Authorization: String = \"Authorization\"\n public val CacheControl: String = \"Cache-Control\"\n public val Connection: String = \"Connection\"\n public val ContentDisposition: String = \"Content-Disposition\"\n public val ContentEncoding: String = \"Content-Encoding\"\n public val ContentLanguage: String = \"Content-Language\"\n public val ContentLength: String = \"Content-Length\"\n public val ContentLocation: String = \"Content-Location\"\n public val ContentRange: String = \"Content-Range\"\n public val ContentType: String = \"Content-Type\"\n public val Cookie: String = \"Cookie\"\n public val DASL: String = \"DASL\" // WebDAV Search\n public val Date: String = \"Date\"\n public val DAV: String = \"DAV\" // WebDAV\n public val Depth: String = \"Depth\" // WebDAV\n public val Destination: String = \"Destination\"\n public val ETag: String = \"ETag\"\n public val Expect: String = \"Expect\"\n public val Expires: String = \"Expires\"\n public val From: String = \"From\"\n public val Forwarded: String = \"Forwarded\"\n public val Host: String = \"Host\"\n public val HTTP2Settings: String = \"HTTP2-Settings\"\n public val If: String = \"If\"\n public val IfMatch: String = \"If-Match\"\n public val IfModifiedSince: String = \"If-Modified-Since\"\n public val IfNoneMatch: String = \"If-None-Match\"\n public val IfRange: String = \"If-Range\"\n public val IfScheduleTagMatch: String = \"If-Schedule-Tag-Match\"\n public val IfUnmodifiedSince: String = \"If-Unmodified-Since\"\n public val LastModified: String = \"Last-Modified\"\n public val Location: String = \"Location\"\n public val LockToken: String = \"Lock-Token\"\n public val Link: String = \"Link\"\n public val MaxForwards: String = \"Max-Forwards\"\n public val MIMEVersion: String = \"MIME-Version\"\n public val OrderingType: String = \"Ordering-Type\"\n public val Origin: String = \"Origin\"\n public val Overwrite: String = \"Overwrite\"\n public val Position: String = \"Position\"\n public val Pragma: String = \"Pragma\"\n public val Prefer: String = \"Prefer\"\n public val PreferenceApplied: String = \"Preference-Applied\"\n public val ProxyAuthenticate: String = \"Proxy-Authenticate\"\n public val ProxyAuthenticationInfo: String = \"Proxy-Authentication-Info\"\n public val ProxyAuthorization: String = \"Proxy-Authorization\"\n public val PublicKeyPins: String = \"Public-Key-Pins\"\n public val PublicKeyPinsReportOnly: String = \"Public-Key-Pins-Report-Only\"\n public val Range: String = \"Range\"\n public val Referrer: String = \"Referer\"\n public val RetryAfter: String = \"Retry-After\"\n public val ScheduleReply: String = \"Schedule-Reply\"\n public val ScheduleTag: String = \"Schedule-Tag\"\n public val SecWebSocketAccept: String = \"Sec-WebSocket-Accept\"\n public val SecWebSocketExtensions: String = \"Sec-WebSocket-Extensions\"\n public val SecWebSocketKey: String = \"Sec-WebSocket-Key\"\n public val SecWebSocketProtocol: String = \"Sec-WebSocket-Protocol\"\n public val SecWebSocketVersion: String = \"Sec-WebSocket-Version\"\n public val Server: String = \"Server\"\n public val SetCookie: String = \"Set-Cookie\"\n public val SLUG: String = \"SLUG\" // Atom Publishing\n public val StrictTransportSecurity: String = \"Strict-Transport-Security\"\n public val TE: String = \"TE\"\n public val Timeout: String = \"Timeout\"\n public val Trailer: String = \"Trailer\"\n public val TransferEncoding: String = \"Transfer-Encoding\"\n public val Upgrade: String = \"Upgrade\"\n public val UserAgent: String = \"User-Agent\"\n public val Vary: String = \"Vary\"\n public val Via: String = \"Via\"\n public val Warning: String = \"Warning\"\n public val WWWAuthenticate: String = \"WWW-Authenticate\"\n\n // CORS\n public val AccessControlAllowOrigin: String = \"Access-Control-Allow-Origin\"\n public val AccessControlAllowMethods: String = \"Access-Control-Allow-Methods\"\n public val AccessControlAllowCredentials: String = \"Access-Control-Allow-Credentials\"\n public val AccessControlAllowHeaders: String = \"Access-Control-Allow-Headers\"\n\n public val AccessControlRequestMethod: String = \"Access-Control-Request-Method\"\n public val AccessControlRequestHeaders: String = \"Access-Control-Request-Headers\"\n public val AccessControlExposeHeaders: String = \"Access-Control-Expose-Headers\"\n public val AccessControlMaxAge: String = \"Access-Control-Max-Age\"\n\n // Unofficial de-facto headers\n public val XHttpMethodOverride: String = \"X-Http-Method-Override\"\n public val XForwardedHost: String = \"X-Forwarded-Host\"\n public val XForwardedServer: String = \"X-Forwarded-Server\"\n public val XForwardedProto: String = \"X-Forwarded-Proto\"\n public val XForwardedFor: String = \"X-Forwarded-For\"\n\n public val XRequestId: String = \"X-Request-ID\"\n public val XCorrelationId: String = \"X-Correlation-ID\"\n public val XTotalCount: String = \"X-Total-Count\"\n\n /**\n * Check if [header] is unsafe. Header is unsafe if listed in [UnsafeHeadersList]\n */\n public fun isUnsafe(header: String): Boolean = UnsafeHeadersArray.any { it.equals(header, ignoreCase = true) }\n\n private val UnsafeHeadersArray: Array = arrayOf(ContentLength, ContentType, TransferEncoding, Upgrade)\n\n @Deprecated(\"Use UnsafeHeadersList instead.\", replaceWith = ReplaceWith(\"HttpHeaders.UnsafeHeadersList\"))\n public val UnsafeHeaders: Array\n get() = UnsafeHeadersArray.copyOf()\n\n /**\n * A list of header names that are not safe to use unless it is low-level engine implementation.\n */\n public val UnsafeHeadersList: List = UnsafeHeadersArray.asList()\n\n /**\n * Validates header [name] throwing [IllegalHeaderNameException] when the name is not valid.\n */\n public fun checkHeaderName(name: String) {\n name.forEachIndexed { index, ch ->\n if (ch <= ' ' || isDelimiter(ch)) {\n throw IllegalHeaderNameException(name, index)\n }\n }\n }\n\n /**\n * Validates header [value] throwing [IllegalHeaderValueException] when the value is not valid.\n */\n public fun checkHeaderValue(value: String) {\n value.forEachIndexed { index, ch ->\n if (ch == ' ' || ch == '\\u0009') return@forEachIndexed\n if (ch < ' ') {\n throw IllegalHeaderValueException(value, index)\n }\n }\n }\n}\n\n/**\n * Thrown when an attempt to set unsafe header detected. A header is unsafe if listed in [HttpHeaders.UnsafeHeadersList].\n */\npublic class UnsafeHeaderException(header: String) : IllegalArgumentException(\n \"Header(s) $header are controlled by the engine and \" +\n \"cannot be set explicitly\"\n)\n\n/**\n * Thrown when an illegal header name was used.\n * A header name should only consist from visible characters\n * without delimiters \"double quote\" and the following characters: `(),/:;<=>?@[\\]{}`.\n * @property headerName that was tried to use\n * @property position at which validation failed\n */\npublic class IllegalHeaderNameException(public val headerName: String, public val position: Int) :\n IllegalArgumentException(\n \"Header name '$headerName' contains illegal character '${headerName[position]}'\" +\n \" (code ${(headerName[position].toInt() and 0xff)})\"\n )\n\n/**\n * Thrown when an illegal header value was used.\n * A header value should only consist from visible characters, spaces and/or HTAB (0x09).\n * @property headerValue that was tried to use\n * @property position at which validation failed\n */\npublic class IllegalHeaderValueException(public val headerValue: String, public val position: Int) :\n IllegalArgumentException(\n \"Header value '$headerValue' contains illegal character '${headerValue[position]}'\" +\n \" (code ${(headerValue[position].toInt() and 0xff)})\"\n )\n\nprivate fun isDelimiter(ch: Char): Boolean = ch in \"\\\"(),/:;<=>?@[\\\\]{}\"\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\n@file:Suppress(\"unused\")\n\npackage io.ktor.http\n\nimport io.ktor.utils.io.charsets.*\n\n/**\n * Set `Content-Type` header.\n */\npublic fun HttpMessageBuilder.contentType(type: ContentType): Unit =\n headers.set(HttpHeaders.ContentType, type.toString())\n\n@Deprecated(\n \"Content-Length is controlled by underlying engine. Don't specify it explicitly.\",\n level = DeprecationLevel.ERROR\n)\n@Suppress(\"KDocMissingDocumentation\", \"unused\", \"PublicApiImplicitType\", \"DeprecatedCallableAddReplaceWith\")\npublic fun HttpMessageBuilder.contentLength(length: Int): Unit =\n headers.set(HttpHeaders.ContentLength, length.toString())\n\n@Deprecated(\"Use content with particular content type and charset instead\", level = DeprecationLevel.ERROR)\n@Suppress(\"KDocMissingDocumentation\", \"unused\", \"PublicApiImplicitType\", \"DeprecatedCallableAddReplaceWith\")\npublic fun HttpMessageBuilder.charset(charset: Charset): Unit? =\n contentType()?.let { contentType(it.withCharset(charset)) }\n\n/**\n * Append `Max-Age` header value.\n */\npublic fun HttpMessageBuilder.maxAge(seconds: Int): Unit = headers.append(HttpHeaders.CacheControl, \"max-age=$seconds\")\n\n/**\n * Set `If-None-Match` header value.\n */\npublic fun HttpMessageBuilder.ifNoneMatch(value: String): Unit = headers.set(HttpHeaders.IfNoneMatch, value)\n\n/**\n * Set `User-Agent` header value.\n */\npublic fun HttpMessageBuilder.userAgent(content: String): Unit = headers.set(HttpHeaders.UserAgent, content)\n\n/**\n * Parse `Content-Type` header value.\n */\npublic fun HttpMessageBuilder.contentType(): ContentType? =\n headers[HttpHeaders.ContentType]?.let { ContentType.parse(it) }\n\n/**\n * Parse charset from `Content-Type` header value.\n */\npublic fun HttpMessageBuilder.charset(): Charset? = contentType()?.charset()\n\n/**\n * Parse `E-Tag` header value.\n */\npublic fun HttpMessageBuilder.etag(): String? = headers[HttpHeaders.ETag]\n\n/**\n * Parse `Vary` header value.\n */\npublic fun HttpMessageBuilder.vary(): List? = headers[HttpHeaders.Vary]?.split(\",\")?.map { it.trim() }\n\n/**\n * Parse `Content-Length` header value.\n */\npublic fun HttpMessageBuilder.contentLength(): Long? = headers[HttpHeaders.ContentLength]?.toLong()\n\n/**\n * Parse `Content-Type` header value.\n */\npublic fun HttpMessage.contentType(): ContentType? = headers[HttpHeaders.ContentType]?.let { ContentType.parse(it) }\n\n/**\n * Parse charset from `Content-Type` header value.\n */\npublic fun HttpMessage.charset(): Charset? = contentType()?.charset()\n\n/**\n * Parse `E-Tag` header value.\n */\npublic fun HttpMessage.etag(): String? = headers[HttpHeaders.ETag]\n\n/**\n * Parse `Vary` header value.\n */\npublic fun HttpMessage.vary(): List? = headers[HttpHeaders.Vary]?.split(\",\")?.map { it.trim() }\n\n/**\n * Parse `Content-Length` header value.\n */\npublic fun HttpMessage.contentLength(): Long? = headers[HttpHeaders.ContentLength]?.toLong()\n\n/**\n * Parse `Set-Cookie` header value.\n */\npublic fun HttpMessage.setCookie(): List = headers.getAll(HttpHeaders.SetCookie)\n ?.flatMap { it.splitSetCookieHeader() }\n ?.map { parseServerSetCookieHeader(it) }\n ?: emptyList()\n\n/**\n * Parse `Set-Cookie` header value.\n */\npublic fun HttpMessageBuilder.cookies(): List =\n headers.getAll(HttpHeaders.SetCookie)?.map { parseServerSetCookieHeader(it) } ?: emptyList()\n\n/**\n * Parse `CacheControl` header.\n */\npublic fun HttpMessage.cacheControl(): List = headers[HttpHeaders.CacheControl]?.let {\n parseHeaderValue(it)\n} ?: emptyList()\n\ninternal fun String.splitSetCookieHeader(): List {\n var comma = indexOf(',')\n\n if (comma == -1) {\n return listOf(this)\n }\n\n val result = mutableListOf()\n var current = 0\n\n var equals = indexOf('=', comma)\n var semicolon = indexOf(';', comma)\n while (current < length && comma > 0) {\n if (equals < comma) {\n equals = indexOf('=', comma)\n }\n\n var nextComma = indexOf(',', comma + 1)\n while (nextComma >= 0 && nextComma < equals) {\n comma = nextComma\n nextComma = indexOf(',', nextComma + 1)\n }\n\n if (semicolon < comma) {\n semicolon = indexOf(';', comma)\n }\n\n // No more keys remaining.\n if (equals < 0) {\n result += substring(current)\n return result\n }\n\n // No ';' between ',' and '=' => We're on a header border.\n if (semicolon == -1 || semicolon > equals) {\n result += substring(current, comma)\n current = comma + 1\n // Update comma index at the end of loop.\n }\n\n // ',' in value, skip it and find next.\n comma = nextComma\n }\n\n // Add last chunk if no more ',' available.\n if (current < length) {\n result += substring(current)\n }\n\n return result\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\n/**\n * Represents an HTTP method (verb)\n * @property value contains method name\n */\npublic data class HttpMethod(val value: String) {\n @Suppress(\"KDocMissingDocumentation\", \"PublicApiImplicitType\")\n public companion object {\n public val Get: HttpMethod = HttpMethod(\"GET\")\n public val Post: HttpMethod = HttpMethod(\"POST\")\n public val Put: HttpMethod = HttpMethod(\"PUT\")\n public val Patch: HttpMethod = HttpMethod(\"PATCH\") // https://tools.ietf.org/html/rfc5789\n public val Delete: HttpMethod = HttpMethod(\"DELETE\")\n public val Head: HttpMethod = HttpMethod(\"HEAD\")\n public val Options: HttpMethod = HttpMethod(\"OPTIONS\")\n\n /**\n * Parse HTTP method by [method] string\n */\n public fun parse(method: String): HttpMethod {\n return when (method) {\n Get.value -> Get\n Post.value -> Post\n Put.value -> Put\n Patch.value -> Patch\n Delete.value -> Delete\n Head.value -> Head\n Options.value -> Options\n else -> HttpMethod(method)\n }\n }\n\n /**\n * A list of default HTTP methods\n */\n public val DefaultMethods: List = listOf(Get, Post, Put, Patch, Delete, Head, Options)\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\n/**\n * Represents an HTTP protocol version.\n * @property name specifies name of the protocol, e.g. \"HTTP\".\n * @property major specifies protocol major version.\n * @property minor specifies protocol minor version.\n */\npublic data class HttpProtocolVersion(val name: String, val major: Int, val minor: Int) {\n @Suppress(\"PublicApiImplicitType\")\n public companion object {\n /**\n * HTTP/2.0 version.\n */\n public val HTTP_2_0: HttpProtocolVersion = HttpProtocolVersion(\"HTTP\", 2, 0)\n\n /**\n * HTTP/1.1 version.\n */\n public val HTTP_1_1: HttpProtocolVersion = HttpProtocolVersion(\"HTTP\", 1, 1)\n\n /**\n * HTTP/1.0 version.\n */\n public val HTTP_1_0: HttpProtocolVersion = HttpProtocolVersion(\"HTTP\", 1, 0)\n\n /**\n * SPDY/3.0 version.\n */\n public val SPDY_3: HttpProtocolVersion = HttpProtocolVersion(\"SPDY\", 3, 0)\n\n /**\n * QUIC/1.0 version.\n */\n public val QUIC: HttpProtocolVersion = HttpProtocolVersion(\"QUIC\", 1, 0)\n\n /**\n * Creates an instance of [HttpProtocolVersion] from the given parameters.\n */\n public fun fromValue(name: String, major: Int, minor: Int): HttpProtocolVersion = when {\n name == \"HTTP\" && major == 1 && minor == 1 -> HTTP_1_1\n name == \"HTTP\" && major == 2 && minor == 0 -> HTTP_2_0\n else -> HttpProtocolVersion(name, major, minor)\n }\n\n /**\n * Create an instance of [HttpProtocolVersion] from http string representation.\n */\n public fun parse(value: CharSequence): HttpProtocolVersion {\n /**\n * Format: protocol/major.minor\n */\n val (protocol, major, minor) = value.split(\"/\", \".\").also {\n check(it.size == 3) {\n \"Failed to parse HttpProtocolVersion. Expected format: protocol/major.minor, but actual: $value\"\n }\n }\n\n return fromValue(protocol, major.toInt(), minor.toInt())\n }\n }\n\n override fun toString(): String = \"$name/$major.$minor\"\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\n/**\n * Represents an HTTP status code and description.\n * @param value is a numeric code.\n * @param description is free form description of a status.\n */\n@Suppress(\"unused\")\npublic data class HttpStatusCode(val value: Int, val description: String) {\n override fun toString(): String = \"$value $description\"\n\n override fun equals(other: Any?): Boolean = other is HttpStatusCode && other.value == value\n\n override fun hashCode(): Int = value.hashCode()\n\n /**\n * Returns a copy of `this` code with a description changed to [value].\n */\n public fun description(value: String): HttpStatusCode = copy(description = value)\n\n @Suppress(\"KDocMissingDocumentation\", \"PublicApiImplicitType\")\n public companion object {\n // =============================================================================================================\n // Disclaimer\n // Adding a new status code here please remember [allStatusCodes] as well\n //\n\n public val Continue: HttpStatusCode = HttpStatusCode(100, \"Continue\")\n public val SwitchingProtocols: HttpStatusCode = HttpStatusCode(101, \"Switching Protocols\")\n public val Processing: HttpStatusCode = HttpStatusCode(102, \"Processing\")\n\n public val OK: HttpStatusCode = HttpStatusCode(200, \"OK\")\n public val Created: HttpStatusCode = HttpStatusCode(201, \"Created\")\n public val Accepted: HttpStatusCode = HttpStatusCode(202, \"Accepted\")\n\n public val NonAuthoritativeInformation: HttpStatusCode =\n HttpStatusCode(203, \"Non-Authoritative Information\")\n\n public val NoContent: HttpStatusCode = HttpStatusCode(204, \"No Content\")\n public val ResetContent: HttpStatusCode = HttpStatusCode(205, \"Reset Content\")\n public val PartialContent: HttpStatusCode = HttpStatusCode(206, \"Partial Content\")\n public val MultiStatus: HttpStatusCode = HttpStatusCode(207, \"Multi-Status\")\n\n public val MultipleChoices: HttpStatusCode = HttpStatusCode(300, \"Multiple Choices\")\n public val MovedPermanently: HttpStatusCode = HttpStatusCode(301, \"Moved Permanently\")\n public val Found: HttpStatusCode = HttpStatusCode(302, \"Found\")\n public val SeeOther: HttpStatusCode = HttpStatusCode(303, \"See Other\")\n public val NotModified: HttpStatusCode = HttpStatusCode(304, \"Not Modified\")\n public val UseProxy: HttpStatusCode = HttpStatusCode(305, \"Use Proxy\")\n public val SwitchProxy: HttpStatusCode = HttpStatusCode(306, \"Switch Proxy\")\n public val TemporaryRedirect: HttpStatusCode = HttpStatusCode(307, \"Temporary Redirect\")\n public val PermanentRedirect: HttpStatusCode = HttpStatusCode(308, \"Permanent Redirect\")\n\n public val BadRequest: HttpStatusCode = HttpStatusCode(400, \"Bad Request\")\n public val Unauthorized: HttpStatusCode = HttpStatusCode(401, \"Unauthorized\")\n public val PaymentRequired: HttpStatusCode = HttpStatusCode(402, \"Payment Required\")\n public val Forbidden: HttpStatusCode = HttpStatusCode(403, \"Forbidden\")\n public val NotFound: HttpStatusCode = HttpStatusCode(404, \"Not Found\")\n public val MethodNotAllowed: HttpStatusCode = HttpStatusCode(405, \"Method Not Allowed\")\n public val NotAcceptable: HttpStatusCode = HttpStatusCode(406, \"Not Acceptable\")\n\n public val ProxyAuthenticationRequired: HttpStatusCode =\n HttpStatusCode(407, \"Proxy Authentication Required\")\n\n public val RequestTimeout: HttpStatusCode = HttpStatusCode(408, \"Request Timeout\")\n public val Conflict: HttpStatusCode = HttpStatusCode(409, \"Conflict\")\n public val Gone: HttpStatusCode = HttpStatusCode(410, \"Gone\")\n public val LengthRequired: HttpStatusCode = HttpStatusCode(411, \"Length Required\")\n public val PreconditionFailed: HttpStatusCode = HttpStatusCode(412, \"Precondition Failed\")\n public val PayloadTooLarge: HttpStatusCode = HttpStatusCode(413, \"Payload Too Large\")\n public val RequestURITooLong: HttpStatusCode = HttpStatusCode(414, \"Request-URI Too Long\")\n\n public val UnsupportedMediaType: HttpStatusCode = HttpStatusCode(415, \"Unsupported Media Type\")\n\n public val RequestedRangeNotSatisfiable: HttpStatusCode =\n HttpStatusCode(416, \"Requested Range Not Satisfiable\")\n\n public val ExpectationFailed: HttpStatusCode = HttpStatusCode(417, \"Expectation Failed\")\n public val UnprocessableEntity: HttpStatusCode = HttpStatusCode(422, \"Unprocessable Entity\")\n public val Locked: HttpStatusCode = HttpStatusCode(423, \"Locked\")\n public val FailedDependency: HttpStatusCode = HttpStatusCode(424, \"Failed Dependency\")\n public val UpgradeRequired: HttpStatusCode = HttpStatusCode(426, \"Upgrade Required\")\n public val TooManyRequests: HttpStatusCode = HttpStatusCode(429, \"Too Many Requests\")\n\n public val RequestHeaderFieldTooLarge: HttpStatusCode =\n HttpStatusCode(431, \"Request Header Fields Too Large\")\n\n public val InternalServerError: HttpStatusCode = HttpStatusCode(500, \"Internal Server Error\")\n public val NotImplemented: HttpStatusCode = HttpStatusCode(501, \"Not Implemented\")\n public val BadGateway: HttpStatusCode = HttpStatusCode(502, \"Bad Gateway\")\n public val ServiceUnavailable: HttpStatusCode = HttpStatusCode(503, \"Service Unavailable\")\n public val GatewayTimeout: HttpStatusCode = HttpStatusCode(504, \"Gateway Timeout\")\n\n public val VersionNotSupported: HttpStatusCode =\n HttpStatusCode(505, \"HTTP Version Not Supported\")\n\n public val VariantAlsoNegotiates: HttpStatusCode = HttpStatusCode(506, \"Variant Also Negotiates\")\n public val InsufficientStorage: HttpStatusCode = HttpStatusCode(507, \"Insufficient Storage\")\n\n /**\n * All known status codes\n */\n public val allStatusCodes: List = allStatusCodes()\n\n private val byValue: Array = Array(1000) { idx ->\n allStatusCodes.firstOrNull { it.value == idx }\n }\n\n /**\n * Creates an instance of [HttpStatusCode] with the given numeric value.\n */\n public fun fromValue(value: Int): HttpStatusCode {\n val knownStatus = if (value in 1 until 1000) byValue[value] else null\n return knownStatus ?: HttpStatusCode(value, \"Unknown Status Code\")\n }\n }\n}\n\n@Suppress(\"UNUSED\", \"KDocMissingDocumentation\")\n@Deprecated(\n \"Use ExpectationFailed instead\",\n ReplaceWith(\"ExpectationFailed\", \"io.ktor.http.HttpStatusCode.Companion.ExpectationFailed\"),\n level = DeprecationLevel.ERROR\n)\npublic inline val HttpStatusCode.Companion.ExceptionFailed: HttpStatusCode\n get() = ExpectationFailed\n\ninternal fun allStatusCodes(): List = listOf(\n HttpStatusCode.Continue,\n HttpStatusCode.SwitchingProtocols,\n HttpStatusCode.Processing,\n HttpStatusCode.OK,\n HttpStatusCode.Created,\n HttpStatusCode.Accepted,\n HttpStatusCode.NonAuthoritativeInformation,\n HttpStatusCode.NoContent,\n HttpStatusCode.ResetContent,\n HttpStatusCode.PartialContent,\n HttpStatusCode.MultiStatus,\n HttpStatusCode.MultipleChoices,\n HttpStatusCode.MovedPermanently,\n HttpStatusCode.Found,\n HttpStatusCode.SeeOther,\n HttpStatusCode.NotModified,\n HttpStatusCode.UseProxy,\n HttpStatusCode.SwitchProxy,\n HttpStatusCode.TemporaryRedirect,\n HttpStatusCode.PermanentRedirect,\n HttpStatusCode.BadRequest,\n HttpStatusCode.Unauthorized,\n HttpStatusCode.PaymentRequired,\n HttpStatusCode.Forbidden,\n HttpStatusCode.NotFound,\n HttpStatusCode.MethodNotAllowed,\n HttpStatusCode.NotAcceptable,\n HttpStatusCode.ProxyAuthenticationRequired,\n HttpStatusCode.RequestTimeout,\n HttpStatusCode.Conflict,\n HttpStatusCode.Gone,\n HttpStatusCode.LengthRequired,\n HttpStatusCode.PreconditionFailed,\n HttpStatusCode.PayloadTooLarge,\n HttpStatusCode.RequestURITooLong,\n HttpStatusCode.UnsupportedMediaType,\n HttpStatusCode.RequestedRangeNotSatisfiable,\n HttpStatusCode.ExpectationFailed,\n HttpStatusCode.UnprocessableEntity,\n HttpStatusCode.Locked,\n HttpStatusCode.FailedDependency,\n HttpStatusCode.UpgradeRequired,\n HttpStatusCode.TooManyRequests,\n HttpStatusCode.RequestHeaderFieldTooLarge,\n HttpStatusCode.InternalServerError,\n HttpStatusCode.NotImplemented,\n HttpStatusCode.BadGateway,\n HttpStatusCode.ServiceUnavailable,\n HttpStatusCode.GatewayTimeout,\n HttpStatusCode.VersionNotSupported,\n HttpStatusCode.VariantAlsoNegotiates,\n HttpStatusCode.InsufficientStorage\n)\n\n/**\n * Checks if a given status code is a success code according to HTTP standards.\n *\n * Codes from 200 to 299 are considered to be successful.\n */\npublic fun HttpStatusCode.isSuccess(): Boolean = value in (200 until 300)\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.utils.io.charsets.*\n\n/**\n * Parse URL query parameters. Shouldn't be used for urlencoded forms because of `+` character.\n */\npublic fun String.parseUrlEncodedParameters(defaultEncoding: Charset = Charsets.UTF_8, limit: Int = 1000): Parameters {\n val parameters: List> =\n split(\"&\", limit = limit).map { it.substringBefore(\"=\") to it.substringAfter(\"=\", \"\") }\n val encoding: String =\n parameters.firstOrNull { it.first == \"_charset_\" }?.second ?: defaultEncoding.name\n\n val charset = Charset.forName(encoding)\n return Parameters.build {\n parameters.forEach { (key, value) ->\n append(\n key.decodeURLQueryComponent(charset = charset),\n value.decodeURLQueryComponent(charset = charset)\n )\n }\n }\n}\n\n/**\n * Encode form parameters from a list of pairs\n */\npublic fun List>.formUrlEncode(): String = StringBuilder().apply {\n formUrlEncodeTo(this)\n}.toString()\n\n/**\n * Encode form parameters from a list of pairs to the specified [out] appendable\n */\npublic fun List>.formUrlEncodeTo(out: Appendable) {\n joinTo(out, \"&\") {\n val key = it.first.encodeURLParameter(spaceToPlus = true)\n if (it.second == null) {\n key\n } else {\n val value = it.second.toString().encodeURLParameterValue()\n \"$key=$value\"\n }\n }\n}\n\n/**\n * Encode form parameters\n */\npublic fun Parameters.formUrlEncode(): String = entries()\n .flatMap { e -> e.value.map { e.key to it } }\n .formUrlEncode()\n\n/**\n * Encode form parameters to the specified [out] appendable\n */\npublic fun Parameters.formUrlEncodeTo(out: Appendable) {\n entries().formUrlEncodeTo(out)\n}\n\ninternal fun ParametersBuilder.formUrlEncodeTo(out: Appendable) {\n entries().formUrlEncodeTo(out)\n}\n\ninternal fun Set>>.formUrlEncodeTo(out: Appendable) {\n flatMap { (key, value) ->\n if (value.isEmpty()) listOf(key to null) else value.map { key to it }\n }.formUrlEncodeTo(out)\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\n\n/**\n * Represents HTTP parameters as a map from case-insensitive names to collection of [String] values\n */\npublic interface Parameters : StringValues {\n public companion object {\n /**\n * Empty [Parameters] instance\n */\n @Suppress(\"DEPRECATION_ERROR\")\n public val Empty: Parameters = EmptyParameters\n\n /**\n * Builds a [Parameters] instance with the given [builder] function\n * @param builder specifies a function to build a map\n */\n public inline fun build(builder: ParametersBuilder.() -> Unit): Parameters =\n ParametersBuilder().apply(builder).build()\n }\n}\n\n@Suppress(\"KDocMissingDocumentation\")\npublic class ParametersBuilder(size: Int = 8) : StringValuesBuilder(true, size) {\n override fun build(): Parameters {\n require(!built) { \"ParametersBuilder can only build a single Parameters instance\" }\n built = true\n return ParametersImpl(values)\n }\n}\n\n@Suppress(\"KDocMissingDocumentation\")\n@Deprecated(\n \"Empty parameters is internal\",\n replaceWith = ReplaceWith(\"Parameters.Empty\"),\n level = DeprecationLevel.ERROR\n)\npublic object EmptyParameters : Parameters {\n override val caseInsensitiveName: Boolean get() = true\n override fun getAll(name: String): List? = null\n override fun names(): Set = emptySet()\n override fun entries(): Set>> = emptySet()\n override fun isEmpty(): Boolean = true\n override fun toString(): String = \"Parameters ${entries()}\"\n\n override fun equals(other: Any?): Boolean = other is Parameters && other.isEmpty()\n}\n\n/**\n * Returns an empty parameters instance\n */\npublic fun parametersOf(): Parameters = Parameters.Empty\n\n/**\n * Creates a parameters instance containing only single pair\n */\npublic fun parametersOf(name: String, value: String): Parameters = ParametersSingleImpl(name, listOf(value))\n\n/**\n * Creates a parameters instance containing only single pair of [name] with multiple [values]\n */\npublic fun parametersOf(name: String, values: List): Parameters = ParametersSingleImpl(name, values)\n\n/**\n * Creates a parameters instance from the specified [pairs]\n */\npublic fun parametersOf(vararg pairs: Pair>): Parameters = ParametersImpl(pairs.asList().toMap())\n\n@Suppress(\"KDocMissingDocumentation\")\n@InternalAPI\npublic class ParametersImpl(values: Map> = emptyMap()) : Parameters,\n StringValuesImpl(true, values) {\n override fun toString(): String = \"Parameters ${entries()}\"\n}\n\n@Suppress(\"KDocMissingDocumentation\")\n@InternalAPI\npublic class ParametersSingleImpl(name: String, values: List) : Parameters,\n StringValuesSingleImpl(true, name, values) {\n override fun toString(): String = \"Parameters ${entries()}\"\n}\n\n/**\n * Plus operator function that creates a new parameters instance from the original one concatenating with [other]\n */\npublic operator fun Parameters.plus(other: Parameters): Parameters = when {\n caseInsensitiveName == other.caseInsensitiveName -> when {\n this.isEmpty() -> other\n other.isEmpty() -> this\n else -> Parameters.build { appendAll(this@plus); appendAll(other) }\n }\n else -> {\n throw IllegalArgumentException(\n \"Cannot concatenate Parameters with case-sensitive and case-insensitive names\"\n )\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\n/**\n * Represents a `Link` header value as per RFC 5988\n */\npublic class LinkHeader(\n uri: String,\n params: List\n) : HeaderValueWithParameters(\"<$uri>\", params) {\n\n @Suppress(\"unused\")\n public constructor(uri: String, rel: String) : this(uri, listOf(HeaderValueParam(Parameters.Rel, rel)))\n\n public constructor(uri: String, vararg rel: String) : this(\n uri,\n listOf(HeaderValueParam(Parameters.Rel, rel.joinToString(\" \")))\n )\n\n @Suppress(\"unused\")\n public constructor(\n uri: String,\n rel: List,\n type: ContentType\n ) : this(\n uri,\n listOf(\n HeaderValueParam(Parameters.Rel, rel.joinToString(\" \")),\n HeaderValueParam(Parameters.Type, type.toString())\n )\n )\n\n /**\n * Link URI part\n */\n public val uri: String\n get() = content.removePrefix(\"<\").removeSuffix(\">\")\n\n /**\n * Known Link header parameters\n */\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"PublicApiImplicitType\")\n public object Parameters {\n public const val Rel: String = \"rel\"\n public const val Anchor: String = \"anchor\"\n public const val Rev: String = \"Rev\"\n public const val HrefLang: String = \"hreflang\"\n public const val Media: String = \"media\"\n public const val Title: String = \"title\"\n public const val Type: String = \"type\"\n }\n\n /**\n * Known rel parameter values\n */\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"PublicApiImplicitType\")\n public object Rel {\n public const val Stylesheet: String = \"stylesheet\"\n\n public const val Prefetch: String = \"prefetch\"\n public const val DnsPrefetch: String = \"dns-prefetch\"\n public const val PreConnect: String = \"preconnect\"\n public const val PreLoad: String = \"preload\"\n public const val PreRender: String = \"prerender\"\n public const val Next: String = \"next\"\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\n/**\n * Parse query string withing starting at the specified [startIndex] but up to [limit] pairs\n */\npublic fun parseQueryString(query: String, startIndex: Int = 0, limit: Int = 1000): Parameters {\n return if (startIndex > query.lastIndex) {\n Parameters.Empty\n } else {\n Parameters.build { parse(query, startIndex, limit) }\n }\n}\n\nprivate fun ParametersBuilder.parse(query: String, startIndex: Int, limit: Int) {\n var count = 0\n var nameIndex = startIndex\n var equalIndex = -1\n for (index in startIndex..query.lastIndex) {\n if (count == limit) {\n return\n }\n when (query[index]) {\n '&' -> {\n appendParam(query, nameIndex, equalIndex, index)\n nameIndex = index + 1\n equalIndex = -1\n count++\n }\n '=' -> {\n if (equalIndex == -1) {\n equalIndex = index\n }\n }\n }\n }\n if (count == limit) {\n return\n }\n appendParam(query, nameIndex, equalIndex, query.length)\n}\n\nprivate fun ParametersBuilder.appendParam(query: String, nameIndex: Int, equalIndex: Int, endIndex: Int) {\n if (equalIndex == -1) {\n val spaceNameIndex = trimStart(nameIndex, endIndex, query)\n val spaceEndIndex = trimEnd(spaceNameIndex, endIndex, query)\n\n if (spaceEndIndex > spaceNameIndex) {\n val name = query.decodeURLQueryComponent(spaceNameIndex, spaceEndIndex)\n appendAll(name, emptyList())\n }\n } else {\n val spaceNameIndex = trimStart(nameIndex, equalIndex, query)\n val spaceEqualIndex = trimEnd(spaceNameIndex, equalIndex, query)\n if (spaceEqualIndex > spaceNameIndex) {\n val name = query.decodeURLQueryComponent(spaceNameIndex, spaceEqualIndex)\n\n val spaceValueIndex = trimStart(equalIndex + 1, endIndex, query)\n val spaceEndIndex = trimEnd(spaceValueIndex, endIndex, query)\n val value = query.decodeURLQueryComponent(spaceValueIndex, spaceEndIndex, plusIsSpace = true)\n append(name, value)\n }\n }\n}\n\nprivate fun trimEnd(start: Int, end: Int, text: CharSequence): Int {\n var spaceIndex = end\n while (spaceIndex > start && text[spaceIndex - 1].isWhitespace()) spaceIndex--\n return spaceIndex\n}\n\nprivate fun trimStart(start: Int, end: Int, query: CharSequence): Int {\n var spaceIndex = start\n while (spaceIndex < end && query[spaceIndex].isWhitespace()) spaceIndex++\n return spaceIndex\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\nimport kotlin.math.*\n\n/**\n * Possible content range units: bytes and none\n * @property unitToken Lower-case unit name\n */\npublic enum class RangeUnits(public val unitToken: String) {\n /**\n * Range unit `bytes`\n */\n Bytes(\"bytes\"),\n\n /**\n * Range unit `none`\n */\n None(\"none\");\n}\n\n/**\n * Represents a `Range` header's particular range\n */\npublic sealed class ContentRange {\n /**\n * Represents a `Content-Range` bounded from both sides\n * @property from index from which the content should begin\n * @property to the last index the content should end at (inclusive)\n */\n public data class Bounded(val from: Long, val to: Long) : ContentRange() {\n override fun toString(): String = \"$from-$to\"\n }\n\n /**\n * Represents a `Content-Range` bounded at the beginning (skip first bytes, show tail)\n * @property from index from which the content should begin\n */\n public data class TailFrom(val from: Long) : ContentRange() {\n override fun toString(): String = \"$from-\"\n }\n\n /**\n * Represents a `Content-Range` bounded by tail size\n * @property lastCount number of tail bytes\n */\n public data class Suffix(val lastCount: Long) : ContentRange() {\n override fun toString(): String = \"-$lastCount\"\n }\n}\n\n/**\n * Parse `Range` header value\n */\npublic fun parseRangesSpecifier(rangeSpec: String): RangesSpecifier? {\n try {\n val (unit, allRangesString) = rangeSpec.chomp(\"=\") { return null }\n val allRanges = allRangesString.split(',').map {\n if (it.startsWith(\"-\")) {\n ContentRange.Suffix(it.removePrefix(\"-\").toLong())\n } else {\n val (from, to) = it.chomp(\"-\") { \"\" to \"\" }\n when {\n to.isNotEmpty() -> ContentRange.Bounded(from.toLong(), to.toLong())\n else -> ContentRange.TailFrom(from.toLong())\n }\n }\n }\n\n if (allRanges.isEmpty() || unit.isEmpty()) {\n return null\n }\n\n val spec = RangesSpecifier(unit, allRanges)\n return if (spec.isValid()) spec else null\n } catch (e: Throwable) {\n return null // according to the specification we should ignore syntactically incorrect headers\n }\n}\n\ninternal fun List.toLongRanges(contentLength: Long) = map {\n when (it) {\n is ContentRange.Bounded -> it.from..it.to.coerceAtMost(contentLength - 1)\n is ContentRange.TailFrom -> it.from until contentLength\n is ContentRange.Suffix -> (contentLength - it.lastCount).coerceAtLeast(0L) until contentLength\n }\n}.filterNot { it.isEmpty() }\n\n// O (N^2 + N ln (N) + N)\ninternal fun List.mergeRangesKeepOrder(): List {\n val sortedMerged = sortedBy { it.start }.fold(ArrayList(size)) { acc, range ->\n when {\n acc.isEmpty() -> acc.add(range)\n acc.last().endInclusive < range.start - 1 -> acc.add(range)\n else -> {\n val last = acc.last()\n acc[acc.lastIndex] = last.start..max(last.endInclusive, range.endInclusive)\n }\n }\n acc\n }\n val result = arrayOfNulls(size)\n\n for (range in sortedMerged) {\n for (i in indices) {\n if (this[i] in range) {\n result[i] = range\n break\n }\n }\n }\n\n return result.filterNotNull()\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\n/**\n * Select default port value from protocol.\n */\npublic const val DEFAULT_PORT: Int = 0\n\n/**\n * A URL builder with all mutable components\n *\n * @property protocol URL protocol (scheme)\n * @property host name without port (domain)\n * @property port port number\n * @property user username part (optional)\n * @property password password part (optional)\n * @property encodedPath encoded URL path without query\n * @property parameters URL query parameters\n * @property fragment URL fragment (anchor name)\n * @property trailingQuery keep a trailing question character even if there are no query parameters\n */\npublic class URLBuilder(\n public var protocol: URLProtocol = URLProtocol.HTTP,\n public var host: String = \"localhost\",\n public var port: Int = DEFAULT_PORT,\n public var user: String? = null,\n public var password: String? = null,\n public var encodedPath: String = \"/\",\n public val parameters: ParametersBuilder = ParametersBuilder(),\n public var fragment: String = \"\",\n public var trailingQuery: Boolean = false\n) {\n init {\n originHost?.let { takeFrom(it) }\n\n if (encodedPath.isEmpty()) {\n encodedPath = \"/\"\n }\n }\n\n /**\n * Encode [components] to [encodedPath]\n */\n public fun path(vararg components: String): URLBuilder {\n path(components.asList())\n\n return this\n }\n\n /**\n * Encode [components] to [encodedPath]\n */\n public fun path(components: List): URLBuilder {\n encodedPath = components.joinToString(\"/\", prefix = \"/\") { it.encodeURLPath() }\n\n return this\n }\n\n private fun appendTo(out: A): A {\n out.append(protocol.name)\n\n when (protocol.name) {\n \"file\" -> {\n out.appendFile(host, encodedPath)\n return out\n }\n \"mailto\" -> {\n out.appendMailto(userAndPassword, encodedPath)\n return out\n }\n }\n\n out.append(\"://\")\n out.append(authority)\n\n out.appendUrlFullPath(encodedPath, parameters, trailingQuery)\n\n if (fragment.isNotEmpty()) {\n out.append('#')\n out.append(fragment.encodeURLQueryComponent())\n }\n\n return out\n }\n\n /**\n * Build a URL string\n */\n // note: 256 should fit 99.5% of all urls according to http://www.supermind.org/blog/740/average-length-of-a-url-part-2\n public fun buildString(): String = appendTo(StringBuilder(256)).toString()\n\n /**\n * Build a [Url] instance (everything is copied to a new instance)\n */\n public fun build(): Url = Url(\n protocol, host, port, encodedPath, parameters.build(), fragment, user, password, trailingQuery\n )\n\n // Required to write external extension function\n public companion object\n}\n\n/**\n * Hostname of current origin.\n *\n * It uses \"localhost\" for all platforms except js.\n */\ninternal expect val URLBuilder.Companion.originHost: String?\n\n/**\n * Create a copy of this builder. Modifications in a copy is not reflected in the original instance and vise-versa.\n */\npublic fun URLBuilder.clone(): URLBuilder = URLBuilder().takeFrom(this)\n\n/**\n * Represents an immutable URL\n *\n * @property protocol\n * @property host name without port (domain)\n * @property port the specified port or protocol default port\n * @property specifiedPort port number that was specified to override protocol's default\n * @property encodedPath encoded path without query string\n * @property parameters URL query parameters\n * @property fragment URL fragment (anchor name)\n * @property user username part of URL\n * @property password password part of URL\n * @property trailingQuery keep trailing question character even if there are no query parameters\n */\npublic data class Url(\n val protocol: URLProtocol,\n val host: String,\n val specifiedPort: Int,\n val encodedPath: String,\n val parameters: Parameters,\n val fragment: String,\n val user: String?,\n val password: String?,\n val trailingQuery: Boolean\n) {\n init {\n require(\n specifiedPort in 1..65536 ||\n specifiedPort == DEFAULT_PORT\n ) { \"port must be between 1 and 65536, or $DEFAULT_PORT if not set\" }\n }\n\n val port: Int get() = specifiedPort.takeUnless { it == DEFAULT_PORT } ?: protocol.defaultPort\n\n override fun toString(): String = buildString {\n append(protocol.name)\n\n when (protocol.name) {\n \"file\" -> {\n appendFile(host, encodedPath)\n return@buildString\n }\n \"mailto\" -> {\n val userValue = user ?: error(\"User can't be empty.\")\n appendMailto(userValue, host)\n return@buildString\n }\n }\n\n append(\"://\")\n append(authority)\n append(fullPath)\n\n if (fragment.isNotEmpty()) {\n append('#')\n append(fragment)\n }\n }\n\n public companion object\n}\n\nprivate fun Appendable.appendMailto(user: String, host: String) {\n append(\":\")\n append(user.encodeURLParameter())\n append('@')\n append(host)\n}\n\nprivate fun Appendable.appendFile(host: String, encodedPath: String) {\n append(\"://\")\n append(host)\n append(encodedPath)\n}\n\ninternal val Url.userAndPassword: String\n get() = buildString {\n appendUserAndPassword(user, password)\n }\n\ninternal val URLBuilder.userAndPassword: String\n get() = buildString {\n appendUserAndPassword(user, password)\n }\n\nprivate fun StringBuilder.appendUserAndPassword(user: String?, password: String?) {\n user ?: return\n append(user.encodeURLParameter())\n\n if (password != null) {\n append(':')\n append(password.encodeURLParameter())\n }\n\n append(\"@\")\n}\n\n/**\n * [Url] authority.\n */\npublic val Url.authority: String\n get() = buildString {\n append(userAndPassword)\n\n if (specifiedPort == DEFAULT_PORT) {\n append(host)\n } else {\n append(hostWithPort)\n }\n }\n\n/**\n * [URLBuilder] authority.\n */\npublic val URLBuilder.authority: String\n get() = buildString {\n append(userAndPassword)\n append(host)\n\n if (port != DEFAULT_PORT && port != protocol.defaultPort) {\n append(\":\")\n append(port.toString())\n }\n }\n\n/**\n * Adds [components] to current [encodedPath]\n */\npublic fun URLBuilder.pathComponents(components: List): URLBuilder {\n var paths = components\n .map { part -> part.dropWhile { it == '/' }.dropLastWhile { it == '/' }.encodeURLQueryComponent() }\n .filter { it.isNotEmpty() }\n .joinToString(\"/\")\n\n // make sure that there's a slash separator at the end of current path\n if (!encodedPath.endsWith('/')) {\n paths = \"/$paths\"\n }\n encodedPath += paths\n\n return this\n}\n\n/**\n * Adds [components] to current [encodedPath]\n */\npublic fun URLBuilder.pathComponents(vararg components: String): URLBuilder {\n return pathComponents(components.toList())\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\n\n/**\n * Take url parts from [urlString]\n * throws [URLParserException]\n */\npublic fun URLBuilder.takeFrom(urlString: String): URLBuilder {\n return try {\n takeFromUnsafe(urlString)\n } catch (cause: Throwable) {\n throw URLParserException(urlString, cause)\n }\n}\n\n/**\n * Thrown when failed to parse URL\n */\npublic class URLParserException(urlString: String, cause: Throwable) : IllegalStateException(\n \"Fail to parse url: $urlString\",\n cause\n)\n\ninternal fun URLBuilder.takeFromUnsafe(urlString: String): URLBuilder {\n var startIndex = urlString.indexOfFirst { !it.isWhitespace() }\n val endIndex = urlString.indexOfLast { !it.isWhitespace() } + 1\n\n val schemeLength = findScheme(urlString, startIndex, endIndex)\n if (schemeLength > 0) {\n val scheme = urlString.substring(startIndex, startIndex + schemeLength)\n\n protocol = URLProtocol.createOrDefault(scheme)\n startIndex += schemeLength + 1\n }\n\n // Auth & Host\n val slashCount = count(urlString, startIndex, endIndex, '/')\n startIndex += slashCount\n\n if (protocol.name == \"file\") {\n parseFile(urlString, startIndex, endIndex, slashCount)\n return this\n }\n\n if (protocol.name == \"mailto\") {\n require(slashCount == 0)\n parseMailto(urlString, startIndex, endIndex)\n return this\n }\n\n if (slashCount >= 2) {\n loop@ while (true) {\n val delimiter = urlString.indexOfAny(\"@/\\\\?#\".toCharArray(), startIndex).takeIf { it > 0 } ?: endIndex\n\n if (delimiter < endIndex && urlString[delimiter] == '@') {\n // user and password check\n val passwordIndex = urlString.indexOfColonInHostPort(startIndex, delimiter)\n if (passwordIndex != -1) {\n user = urlString.substring(startIndex, passwordIndex).decodeURLPart()\n password = urlString.substring(passwordIndex + 1, delimiter).decodeURLPart()\n } else {\n user = urlString.substring(startIndex, delimiter).decodeURLPart()\n }\n startIndex = delimiter + 1\n } else {\n fillHost(urlString, startIndex, delimiter)\n startIndex = delimiter\n break@loop\n }\n }\n }\n\n // Path\n if (startIndex >= endIndex) {\n encodedPath = if (urlString[endIndex - 1] == '/') \"/\" else \"\"\n return this\n }\n\n encodedPath = if (slashCount == 0) {\n // Relative path\n val lastSlashIndex = encodedPath.lastIndexOf('/')\n\n if (lastSlashIndex != encodedPath.length - 1) {\n // Current path does not end in slash, get rid of last path segment.\n if (lastSlashIndex != -1) {\n encodedPath.substring(0, lastSlashIndex + 1)\n } else {\n \"/\"\n }\n } else {\n // keep the whole path\n encodedPath\n }\n } else {\n // overwrite the path\n \"\"\n }\n\n val pathEnd = urlString.indexOfAny(\"?#\".toCharArray(), startIndex).takeIf { it > 0 } ?: endIndex\n val rawPath = urlString.substring(startIndex, pathEnd)\n\n encodedPath += rawPath.encodeURLPath()\n startIndex = pathEnd\n\n // Query\n if (startIndex < endIndex && urlString[startIndex] == '?') {\n startIndex = parseQuery(urlString, startIndex, endIndex)\n }\n\n // Fragment\n parseFragment(urlString, startIndex, endIndex)\n return this\n}\n\nprivate fun URLBuilder.parseFile(urlString: String, startIndex: Int, endIndex: Int, slashCount: Int) {\n when (slashCount) {\n 2 -> {\n val nextSlash = urlString.indexOf('/', startIndex)\n if (nextSlash == -1 || nextSlash == endIndex) {\n host = urlString.substring(startIndex, endIndex)\n return\n }\n\n host = urlString.substring(startIndex, nextSlash)\n encodedPath = urlString.substring(nextSlash, endIndex)\n }\n 3 -> {\n host = \"\"\n encodedPath = \"/\" + urlString.substring(startIndex, endIndex)\n }\n else -> throw IllegalArgumentException(\"Invalid file url: $urlString\")\n }\n}\n\nprivate fun URLBuilder.parseMailto(urlString: String, startIndex: Int, endIndex: Int) {\n val delimiter = urlString.indexOf(\"@\", startIndex)\n if (delimiter == -1) {\n throw IllegalArgumentException(\"Invalid mailto url: $urlString, it should contain '@'.\")\n }\n\n user = urlString.substring(startIndex, delimiter).decodeURLPart()\n host = urlString.substring(delimiter + 1, endIndex)\n}\n\nprivate fun URLBuilder.parseQuery(urlString: String, startIndex: Int, endIndex: Int): Int {\n if (startIndex + 1 == endIndex) {\n trailingQuery = true\n return endIndex\n }\n\n val fragmentStart = urlString.indexOf('#', startIndex + 1).takeIf { it > 0 } ?: endIndex\n\n val rawParameters = parseQueryString(urlString.substring(startIndex + 1, fragmentStart))\n rawParameters.forEach { key, values ->\n parameters.appendAll(key, values)\n }\n\n return fragmentStart\n}\n\nprivate fun URLBuilder.parseFragment(urlString: String, startIndex: Int, endIndex: Int) {\n if (startIndex < endIndex && urlString[startIndex] == '#') {\n fragment = urlString.substring(startIndex + 1, endIndex)\n }\n}\n\nprivate fun URLBuilder.fillHost(urlString: String, startIndex: Int, endIndex: Int) {\n val colonIndex = urlString.indexOfColonInHostPort(startIndex, endIndex).takeIf { it > 0 } ?: endIndex\n\n host = urlString.substring(startIndex, colonIndex)\n\n if (colonIndex + 1 < endIndex) {\n port = urlString.substring(colonIndex + 1, endIndex).toInt()\n } else {\n port = DEFAULT_PORT\n }\n}\n\n/**\n * Finds scheme in the given [urlString]. If there is no scheme found the function returns -1. If the scheme contains\n * illegal characters an [IllegalArgumentException] will be thrown. If the scheme is present and it doesn't contain\n * illegal characters the function returns the length of the scheme.\n */\nprivate fun findScheme(urlString: String, startIndex: Int, endIndex: Int): Int {\n var current = startIndex\n\n // Incorrect scheme position is used to identify the first position at which the character is not allowed in the\n // scheme or the part of the scheme. This number is reported in the exception message.\n var incorrectSchemePosition = -1\n val firstChar = urlString[current]\n if (firstChar !in 'a'..'z' && firstChar !in 'A'..'Z') {\n incorrectSchemePosition = current\n }\n\n while (current < endIndex) {\n val char = urlString[current]\n\n // Character ':' means the end of the scheme and at this point the length of the scheme should be returned or\n // the exception should be thrown in case the scheme contains illegal characters.\n if (char == ':') {\n if (incorrectSchemePosition != -1) {\n throw IllegalArgumentException(\"Illegal character in scheme at position $incorrectSchemePosition\")\n }\n\n return current - startIndex\n }\n\n // If character '/' or '?' or '#' found this is not a scheme.\n if (char == '/' || char == '?' || char == '#') return -1\n\n // Update incorrect scheme position is current char is illegal.\n if (incorrectSchemePosition == -1 &&\n char !in 'a'..'z' &&\n char !in 'A'..'Z' &&\n char !in '0'..'9' &&\n char != '.' &&\n char != '+' &&\n char != '-'\n ) {\n incorrectSchemePosition = current\n }\n\n ++current\n }\n\n return -1\n}\n\nprivate fun count(urlString: String, startIndex: Int, endIndex: Int, char: Char): Int {\n var result = 0\n while (startIndex + result < endIndex) {\n if (urlString[startIndex + result] != char) break\n result++\n }\n\n return result\n}\n\nprivate fun String.indexOfColonInHostPort(startIndex: Int, endIndex: Int): Int {\n var skip = false\n for (index in startIndex until endIndex) {\n when (this[index]) {\n '[' -> skip = true\n ']' -> skip = false\n ':' -> if (!skip) return index\n }\n }\n\n return -1\n}\n\nprivate fun Char.isLetter(): Boolean = toLowerCase() in 'a'..'z'\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\n\n/**\n * Represents URL protocol\n * @property name of protocol (schema)\n * @property defaultPort default port for protocol or `-1` if not known\n */\npublic data class URLProtocol(val name: String, val defaultPort: Int) {\n init {\n require(name.all { it.isLowerCase() }) { \"All characters should be lower case\" }\n }\n\n @Suppress(\"PublicApiImplicitType\")\n public companion object {\n /**\n * HTTP with port 80\n */\n public val HTTP: URLProtocol = URLProtocol(\"http\", 80)\n\n /**\n * secure HTTPS with port 443\n */\n public val HTTPS: URLProtocol = URLProtocol(\"https\", 443)\n\n /**\n * Web socket over HTTP on port 80\n */\n public val WS: URLProtocol = URLProtocol(\"ws\", 80)\n\n /**\n * Web socket over secure HTTPS on port 443\n */\n public val WSS: URLProtocol = URLProtocol(\"wss\", 443)\n\n /**\n * Socks proxy url protocol.\n */\n public val SOCKS: URLProtocol = URLProtocol(\"socks\", 1080)\n\n /**\n * Protocols by names map\n */\n public val byName: Map = listOf(HTTP, HTTPS, WS, WSS, SOCKS).associateBy { it.name }\n\n /**\n * Create an instance by [name] or use already existing instance\n */\n public fun createOrDefault(name: String): URLProtocol = name.toLowerCasePreservingASCIIRules().let {\n byName[it] ?: URLProtocol(it, DEFAULT_PORT)\n }\n }\n}\n\n/**\n * Check if the protocol is websocket\n */\npublic fun URLProtocol.isWebsocket(): Boolean = name == \"ws\" || name == \"wss\"\n\n/**\n * Check if the protocol is secure\n */\npublic fun URLProtocol.isSecure(): Boolean = name == \"https\" || name == \"wss\"\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\n\n/**\n * Construct [Url] from [urlString].\n */\n@Suppress(\"FunctionName\")\npublic fun Url(urlString: String): Url = URLBuilder(urlString).build()\n\n/**\n * Construct [Url] from [builder] without building origin.\n */\n@Suppress(\"FunctionName\")\npublic fun Url(builder: URLBuilder): Url = URLBuilder().takeFrom(builder).build()\n\n/**\n * Construct [URLBuilder] from [urlString].\n */\n@Suppress(\"FunctionName\")\npublic fun URLBuilder(urlString: String): URLBuilder = URLBuilder().takeFrom(urlString)\n\n/**\n * Construct [URLBuilder] from [url].\n */\n@Suppress(\"FunctionName\")\npublic fun URLBuilder(url: Url): URLBuilder = URLBuilder().takeFrom(url)\n\n/**\n * Construct [URLBuilder] from [builder].\n */\n@Suppress(\"FunctionName\")\npublic fun URLBuilder(builder: URLBuilder): URLBuilder = URLBuilder().takeFrom(builder)\n\n/**\n * Take components from another [url] builder\n */\npublic fun URLBuilder.takeFrom(url: URLBuilder): URLBuilder {\n protocol = url.protocol\n host = url.host\n port = url.port\n encodedPath = url.encodedPath\n user = url.user\n password = url.password\n parameters.appendAll(url.parameters)\n fragment = url.fragment\n trailingQuery = url.trailingQuery\n\n return this\n}\n\n/**\n * Take components from another [url]\n */\npublic fun URLBuilder.takeFrom(url: Url): URLBuilder {\n protocol = url.protocol\n host = url.host\n port = url.specifiedPort\n encodedPath = url.encodedPath\n user = url.user\n password = url.password\n parameters.appendAll(url.parameters)\n fragment = url.fragment\n trailingQuery = url.trailingQuery\n\n return this\n}\n\n/**\n * Full encoded path with query string but without domain, port and schema\n */\npublic val Url.fullPath: String\n get() = buildString { appendUrlFullPath(encodedPath, parameters, trailingQuery) }\n\n/**\n * Host:port pair, not normalized so port is always specified even if the port is schema's default\n */\npublic val Url.hostWithPort: String get() = \"$host:$port\"\n\ninternal fun Appendable.appendUrlFullPath(\n encodedPath: String,\n queryParameters: Parameters,\n trailingQuery: Boolean\n) {\n if (encodedPath.isNotBlank() && !encodedPath.startsWith(\"/\")) {\n append('/')\n }\n\n append(encodedPath)\n\n if (!queryParameters.isEmpty() || trailingQuery) {\n append(\"?\")\n }\n\n queryParameters.formUrlEncodeTo(this)\n}\n\ninternal fun Appendable.appendUrlFullPath(\n encodedPath: String,\n queryParameters: ParametersBuilder,\n trailingQuery: Boolean\n) {\n if (encodedPath.isNotBlank() && !encodedPath.startsWith(\"/\")) {\n append('/')\n }\n\n append(encodedPath)\n\n if (!queryParameters.isEmpty() || trailingQuery) {\n append(\"?\")\n }\n\n queryParameters.formUrlEncodeTo(this)\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.auth\n\n/**\n * Describes how a header should be encoded.\n */\npublic enum class HeaderValueEncoding {\n /**\n * The header will be quoted only when required.\n */\n QUOTED_WHEN_REQUIRED,\n\n /**\n * The header will be quoted always.\n */\n QUOTED_ALWAYS,\n\n /**\n * The header will be URI-encoded as described in the RFC-3986:\n *\n * see https://tools.ietf.org/html/rfc3986#page-12\n */\n URI_ENCODE\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.auth\n\nimport io.ktor.http.*\nimport io.ktor.http.parsing.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.charsets.*\nimport kotlin.native.concurrent.*\n\nprivate const val valuePatternPart = \"\"\"(\"((\\\\.)|[^\\\\\"])*\")|[^\\s,]*\"\"\"\n\n@ThreadLocal\nprivate val token68Pattern = \"[a-zA-Z0-9\\\\-._~+/]+=*\".toRegex()\n\n@ThreadLocal\nprivate val authSchemePattern = \"\\\\S+\".toRegex()\n\n@ThreadLocal\nprivate val parameterPattern = \"\\\\s*,?\\\\s*($token68Pattern)\\\\s*=\\\\s*($valuePatternPart)\\\\s*,?\\\\s*\".toRegex()\n\n@ThreadLocal\nprivate val escapeRegex: Regex = \"\\\\\\\\.\".toRegex()\n\n/**\n * Parses an authorization header [headerValue] into a [HttpAuthHeader].\n * @return [HttpAuthHeader] or `null` if argument string is blank.\n * @throws [ParseException] on invalid header\n */\npublic fun parseAuthorizationHeader(headerValue: String): HttpAuthHeader? {\n val schemeRegion = authSchemePattern.find(headerValue) ?: return null\n val authScheme = schemeRegion.value\n val remaining = headerValue.substringAfterMatch(schemeRegion).trimStart()\n\n val token68 = token68Pattern.find(remaining)\n if (token68 != null && remaining.substringAfterMatch(token68).isBlank()) {\n return HttpAuthHeader.Single(authScheme, token68.value)\n }\n\n val parameters = parameterPattern.findAll(remaining).associateBy(\n { it.groups[1]!!.value },\n { it.groups[2]!!.value.unescapedIfQuoted() }\n )\n\n return HttpAuthHeader.Parameterized(authScheme, parameters)\n}\n\n/**\n * Describes an authentication header with a mandatory [authScheme] that usually is a standard [AuthScheme].\n *\n * This can be of type [HttpAuthHeader.Single] or [HttpAuthHeader.Parameterized].\n *\n * @property authScheme auth scheme, usually one of [AuthScheme]\n */\npublic sealed class HttpAuthHeader(public val authScheme: String) {\n init {\n if (!authScheme.matches(token68Pattern)) {\n throw ParseException(\"invalid authScheme value: it should be token but it is $authScheme\")\n }\n }\n\n /**\n * Describes an authentication header that is represented by a single [blob].\n * @property blob contains single token 68, should consist from digits, letters and one of the following: `-._~+/`\n */\n public class Single(authScheme: String, public val blob: String) : HttpAuthHeader(authScheme) {\n init {\n if (!blob.matches(token68Pattern)) {\n throw ParseException(\"invalid blob value: it should be token68 but it is $blob\")\n }\n }\n\n override fun render(): String = \"$authScheme $blob\"\n override fun render(encoding: HeaderValueEncoding): String = render()\n\n override fun equals(other: Any?): Boolean {\n if (other !is Single) return false\n return other.authScheme.equals(authScheme, ignoreCase = true) &&\n other.blob.equals(blob, ignoreCase = true)\n }\n\n override fun hashCode(): Int {\n return Hash.combine(authScheme.toLowerCase(), blob.toLowerCase())\n }\n }\n\n /**\n * Describes a parameterized authentication header that is represented by a set of [parameters] encoded with [encoding].\n * @property parameters a list of auth parameters\n * @property encoding parameters encoding method, one of [HeaderValueEncoding]\n */\n public class Parameterized(\n authScheme: String,\n public val parameters: List,\n public val encoding: HeaderValueEncoding = HeaderValueEncoding.QUOTED_WHEN_REQUIRED\n ) : HttpAuthHeader(authScheme) {\n public constructor(\n authScheme: String,\n parameters: Map,\n encoding: HeaderValueEncoding = HeaderValueEncoding.QUOTED_WHEN_REQUIRED\n ) : this(authScheme, parameters.entries.map { HeaderValueParam(it.key, it.value) }, encoding)\n\n init {\n parameters.forEach {\n if (!it.name.matches(token68Pattern)) {\n throw ParseException(\"parameter name should be a token but it is ${it.name}\")\n }\n }\n }\n\n /**\n * Copies this [Parameterized] appending a new parameter [name] [value].\n */\n public fun withParameter(name: String, value: String): Parameterized =\n Parameterized(authScheme, this.parameters + HeaderValueParam(name, value), encoding)\n\n /**\n * Copies this [Parameterized] replacing parameters with [name] assigning new [value]\n * or appending if no such parameters found.\n * If there were several pairs they will be reduced into a single pair\n * at position of first occurrence discarding following pairs with this [name].\n */\n public fun withReplacedParameter(name: String, value: String): Parameterized {\n val firstIndex = parameters.indexOfFirst { it.name == name }\n if (firstIndex == -1) return withParameter(name, value)\n\n var replaced = false\n val newParameters = parameters.mapNotNull {\n when {\n it.name != name -> it\n !replaced -> {\n replaced = true\n HeaderValueParam(name, value)\n }\n else -> null\n }\n }\n\n return Parameterized(authScheme, newParameters, encoding)\n }\n\n override fun render(encoding: HeaderValueEncoding): String =\n parameters.joinToString(\", \", prefix = \"$authScheme \") { \"${it.name}=${it.value.encode(encoding)}\" }\n\n /**\n * Tries to extract the first value of a parameter [name]. Returns null when not found.\n */\n public fun parameter(name: String): String? = parameters.firstOrNull { it.name == name }?.value\n\n private fun String.encode(encoding: HeaderValueEncoding) = when (encoding) {\n HeaderValueEncoding.QUOTED_WHEN_REQUIRED -> escapeIfNeeded()\n HeaderValueEncoding.QUOTED_ALWAYS -> quote()\n HeaderValueEncoding.URI_ENCODE -> encodeURLParameter()\n }\n\n override fun render(): String = render(encoding)\n\n override fun equals(other: Any?): Boolean {\n if (other !is Parameterized) return false\n return other.authScheme.equals(authScheme, ignoreCase = true) &&\n other.parameters == parameters\n }\n\n override fun hashCode(): Int {\n return Hash.combine(authScheme.toLowerCase(), parameters)\n }\n }\n\n /**\n * Encodes the header with a specified [encoding].\n */\n public abstract fun render(encoding: HeaderValueEncoding): String\n\n /**\n * Encodes the header with the default [HeaderValueEncoding] for this header.\n */\n public abstract fun render(): String\n\n /**\n * Encodes the header with the default [HeaderValueEncoding] for this header.\n */\n override fun toString(): String {\n return render()\n }\n\n public companion object {\n /**\n * Generates an [AuthScheme.Basic] challenge as a [HttpAuthHeader].\n */\n public fun basicAuthChallenge(realm: String, charset: Charset?): Parameterized = Parameterized(\n AuthScheme.Basic,\n LinkedHashMap().apply {\n put(Parameters.Realm, realm)\n if (charset != null) {\n put(Parameters.Charset, charset.name)\n }\n }\n )\n\n /**\n * Generates an [AuthScheme.Digest] challenge as a [HttpAuthHeader].\n */\n public fun digestAuthChallenge(\n realm: String,\n nonce: String = generateNonce(),\n domain: List = emptyList(),\n opaque: String? = null,\n stale: Boolean? = null,\n algorithm: String = \"MD5\"\n ): Parameterized = Parameterized(\n AuthScheme.Digest,\n linkedMapOf().apply {\n put(\"realm\", realm)\n put(\"nonce\", nonce)\n if (domain.isNotEmpty()) {\n put(\"domain\", domain.joinToString(\" \"))\n }\n if (opaque != null) {\n put(\"opaque\", opaque)\n }\n if (stale != null) {\n put(\"stale\", stale.toString())\n }\n put(\"algorithm\", algorithm)\n },\n HeaderValueEncoding.QUOTED_ALWAYS\n )\n }\n\n /**\n * Standard parameters for [Parameterized] [HttpAuthHeader].\n */\n @Suppress(\"KDocMissingDocumentation\", \"PublicApiImplicitType\")\n public object Parameters {\n public const val Realm: String = \"realm\"\n public const val Charset: String = \"charset\"\n\n public const val OAuthCallback: String = \"oauth_callback\"\n public const val OAuthConsumerKey: String = \"oauth_consumer_key\"\n public const val OAuthNonce: String = \"oauth_nonce\"\n public const val OAuthToken: String = \"oauth_token\"\n public const val OAuthTokenSecret: String = \"oauth_token_secret\"\n public const val OAuthVerifier: String = \"oauth_verifier\"\n public const val OAuthSignatureMethod: String = \"oauth_signature_method\"\n public const val OAuthTimestamp: String = \"oauth_timestamp\"\n public const val OAuthVersion: String = \"oauth_version\"\n public const val OAuthSignature: String = \"oauth_signature\"\n public const val OAuthCallbackConfirmed: String = \"oauth_callback_confirmed\"\n }\n}\n\nprivate fun String.substringAfterMatch(result: MatchResult): String = drop(\n result.range.last + if (result.range.isEmpty()) 0 else 1\n)\n\nprivate fun String.unescapedIfQuoted() = when {\n startsWith('\"') && endsWith('\"') -> {\n removeSurrounding(\"\\\"\").replace(escapeRegex) { it.value.takeLast(1) }\n }\n else -> this\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.auth\n\n/**\n * Contains the standard auth schemes.\n */\npublic object AuthScheme {\n /**\n * Basic Authentication described in the RFC-7617\n *\n * ```\n * response = base64(\"$user:$password\")\n * ```\n *\n * see https://tools.ietf.org/html/rfc7617)\n */\n public const val Basic: String = \"Basic\"\n\n /**\n * Digest Authentication described in the RFC-2069:\n *\n * ```\n * HA1 = MD5(\"$username:$realm:$password\") // What's usually stored\n * HA2 = MD5(\"$method:$digestURI\")\n * response = MD5(\"$HA1:$nonce:$HA2\") // The client and the server sends and checks this.\n * ```\n *\n * see https://tools.ietf.org/html/rfc2069\n */\n public const val Digest: String = \"Digest\"\n\n /**\n * Described in the RFC-4599:\n *\n * see https://www.ietf.org/rfc/rfc4559.txt\n */\n public const val Negotiate: String = \"Negotiate\"\n\n /**\n * OAuth Authentication described in the RFC-6749:\n *\n * see https://tools.ietf.org/html/rfc6749\n */\n public const val OAuth: String = \"OAuth\"\n\n @Suppress(\"KDocMissingDocumentation\", \"unused\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getBasic(): String = Basic\n\n @Suppress(\"KDocMissingDocumentation\", \"unused\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getDigest(): String = Digest\n\n @Suppress(\"KDocMissingDocumentation\", \"unused\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getNegotiate(): String = Negotiate\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.content\n\nimport io.ktor.http.*\n\n/**\n * Implementation of the [OutgoingContent.ByteArrayContent] for sending array of bytes\n */\npublic class ByteArrayContent(\n private val bytes: ByteArray,\n override val contentType: ContentType? = null,\n override val status: HttpStatusCode? = null\n) : OutgoingContent.ByteArrayContent() {\n override val contentLength: Long get() = bytes.size.toLong()\n\n override fun bytes(): ByteArray = bytes\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.content\n\nimport io.ktor.http.*\nimport io.ktor.util.*\nimport io.ktor.util.date.*\n\n/**\n * Specifies caching properties for an [OutgoingContent] such as Cache-Control or Expires\n * @property cacheControl header\n * @property expires header\n */\npublic data class CachingOptions(val cacheControl: CacheControl? = null, val expires: GMTDate? = null)\n\n/**\n * Specifies a key for CacheControl extension property for [OutgoingContent]\n */\npublic val CachingProperty: AttributeKey = AttributeKey(\"Caching\")\n\n/**\n * Gets or sets [CacheControl] instance as an extension property on this content\n */\npublic var OutgoingContent.caching: CachingOptions?\n get() = getProperty(CachingProperty)\n set(value) = setProperty(CachingProperty, value)\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.content\n\nimport io.ktor.http.*\nimport io.ktor.http.content.PartData.*\nimport io.ktor.utils.io.core.*\n\n/**\n * Represents a multipart/form-data entry. Could be a [FormItem] or [FileItem]\n * @property dispose to be invoked when this part is no longed needed\n * @property headers of this part, could be inaccurate on some engines\n */\npublic sealed class PartData(public val dispose: () -> Unit, public val headers: Headers) {\n /**\n * Represents a multipart form item\n * @property value of this field\n */\n public class FormItem(public val value: String, dispose: () -> Unit, partHeaders: Headers) :\n PartData(dispose, partHeaders)\n\n /**\n * Represents a file item\n * @property provider of content bytes\n */\n public class FileItem(\n public val provider: () -> Input,\n dispose: () -> Unit,\n partHeaders: Headers\n ) : PartData(dispose, partHeaders) {\n /**\n * Original file name if present\n */\n public val originalFileName: String? = contentDisposition?.parameter(ContentDisposition.Parameters.FileName)\n }\n\n /**\n * Represents a binary item\n * @property provider of content bytes\n */\n public class BinaryItem(\n public val provider: () -> Input,\n dispose: () -> Unit,\n partHeaders: Headers\n ) : PartData(dispose, partHeaders)\n\n /**\n * Parsed `Content-Disposition` header or `null` if missing\n */\n public val contentDisposition: ContentDisposition? by lazy(LazyThreadSafetyMode.NONE) {\n headers[HttpHeaders.ContentDisposition]?.let { ContentDisposition.parse(it) }\n }\n\n /**\n * Parsed `Content-Type` header or `null` if missing\n */\n public val contentType: ContentType? by lazy(LazyThreadSafetyMode.NONE) {\n headers[HttpHeaders.ContentType]?.let {\n ContentType.parse(\n it\n )\n }\n }\n\n /**\n * Optional part name based on `Content-Disposition` header\n */\n public val name: String? get() = contentDisposition?.name\n\n @Suppress(\"KDocMissingDocumentation\", \"unused\")\n @Deprecated(\n \"Use name property instead\",\n ReplaceWith(\"name\"),\n level = DeprecationLevel.ERROR\n )\n public val partName: String?\n get() = name\n\n @Suppress(\"KDocMissingDocumentation\", \"unused\")\n @Deprecated(\n \"Use headers property instead\",\n ReplaceWith(\"headers\"),\n level = DeprecationLevel.ERROR\n )\n public val partHeaders: Headers\n get() = headers\n}\n\n/**\n * Represents a multipart data stream that could be received from a call\n */\npublic interface MultiPartData {\n /**\n * Reads next part data or `null` if end of multipart stream encountered\n */\n public suspend fun readPart(): PartData?\n\n /**\n * An empty multipart data stream\n */\n public object Empty : MultiPartData {\n override suspend fun readPart(): PartData? {\n return null\n }\n }\n}\n\n/**\n * Parse multipart data stream and invoke [partHandler] for each [PartData] encountered\n * @param partHandler to be invoked for every part item\n */\npublic suspend fun MultiPartData.forEachPart(partHandler: suspend (PartData) -> Unit) {\n while (true) {\n val part = readPart() ?: break\n partHandler(part)\n }\n}\n\n/**\n * Parse multipart data stream and put all parts into a list\n * @return a list of part data\n */\npublic suspend fun MultiPartData.readAllParts(): List {\n var part = readPart() ?: return emptyList()\n val parts = ArrayList()\n parts.add(part)\n\n do {\n part = readPart() ?: break\n parts.add(part)\n } while (true)\n\n return parts\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.content\n\nimport io.ktor.http.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\n\n/**\n * Information about the content to be sent to the peer, recognized by a client or server engine\n */\npublic sealed class OutgoingContent {\n /**\n * Specifies [ContentType] for this resource.\n */\n public open val contentType: ContentType? get() = null\n\n /**\n * Specifies content length in bytes for this resource.\n *\n * If null, the resources will be sent as `Transfer-Encoding: chunked`\n */\n public open val contentLength: Long? get() = null\n\n /**\n * Status code to set when sending this content\n */\n public open val status: HttpStatusCode?\n get() = null\n\n /**\n * Headers to set when sending this content\n */\n public open val headers: Headers\n get() = Headers.Empty\n\n private var extensionProperties: Attributes? = null\n\n /**\n * Gets an extension property for this content\n */\n public open fun getProperty(key: AttributeKey): T? = extensionProperties?.getOrNull(key)\n\n /**\n * Sets an extension property for this content\n */\n public open fun setProperty(key: AttributeKey, value: T?) {\n when {\n value == null && extensionProperties == null -> return\n value == null -> extensionProperties?.remove(key)\n else -> (extensionProperties ?: Attributes()).also { extensionProperties = it }.put(key, value)\n }\n }\n\n /**\n * Variant of a [OutgoingContent] without a payload\n */\n public abstract class NoContent : OutgoingContent()\n\n /**\n * Variant of a [OutgoingContent] with payload read from [ByteReadChannel]\n *\n */\n public abstract class ReadChannelContent : OutgoingContent() {\n /**\n * Provides [ByteReadChannel] for the content\n */\n public abstract fun readFrom(): ByteReadChannel\n\n /**\n * Provides [ByteReadChannel] for the given range of the content\n */\n public open fun readFrom(range: LongRange): ByteReadChannel = if (range.isEmpty()) {\n ByteReadChannel.Empty\n } else {\n GlobalScope.writer(Dispatchers.Unconfined, autoFlush = true) {\n val source = readFrom()\n source.discard(range.start)\n val limit = range.endInclusive - range.start + 1\n source.copyTo(channel, limit)\n }.channel\n }\n }\n\n /**\n * Variant of a [OutgoingContent] with payload written to [ByteWriteChannel]\n */\n public abstract class WriteChannelContent : OutgoingContent() {\n /**\n * Receives [channel] provided by the engine and writes all data to it\n */\n public abstract suspend fun writeTo(channel: ByteWriteChannel)\n }\n\n /**\n * Variant of a [OutgoingContent] with payload represented as [ByteArray]\n */\n public abstract class ByteArrayContent : OutgoingContent() {\n /**\n * Provides [ByteArray] which engine will send to peer\n */\n public abstract fun bytes(): ByteArray\n }\n\n /**\n * Variant of a [OutgoingContent] for upgrading an HTTP connection\n */\n public abstract class ProtocolUpgrade : OutgoingContent() {\n final override val status: HttpStatusCode?\n get() = HttpStatusCode.SwitchingProtocols\n\n /**\n * Upgrades an HTTP connection\n * @param input is a [ByteReadChannel] for an upgraded connection\n * @param output is a [ByteWriteChannel] for an upgraded connection\n * @param engineContext is a [CoroutineContext] to execute non-blocking code, such as parsing or processing\n * @param userContext is a [CoroutineContext] to execute user-provided callbacks or code potentially blocking\n */\n public abstract suspend fun upgrade(\n input: ByteReadChannel,\n output: ByteWriteChannel,\n engineContext: CoroutineContext,\n userContext: CoroutineContext\n ): Job\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.parsing\n\ninternal fun Grammar.printDebug(offset: Int = 0): Unit = when (this) {\n is StringGrammar -> printlnWithOffset(offset, \"STRING[${Regex.escape(value)}]\")\n is RawGrammar -> printlnWithOffset(offset, \"STRING[$value]\")\n is NamedGrammar -> {\n printlnWithOffset(offset, \"NAMED[$name]\")\n grammar.printDebug(offset + 2)\n }\n is SequenceGrammar -> {\n printlnWithOffset(offset, \"SEQUENCE\")\n grammars.forEach { it.printDebug(offset + 2) }\n }\n is OrGrammar -> {\n printlnWithOffset(offset, \"OR\")\n grammars.forEach { it.printDebug(offset + 2) }\n }\n is MaybeGrammar -> {\n printlnWithOffset(offset, \"MAYBE\")\n grammar.printDebug(offset + 2)\n }\n is ManyGrammar -> {\n printlnWithOffset(offset, \"MANY\")\n grammar.printDebug(offset + 2)\n }\n is AtLeastOne -> {\n printlnWithOffset(offset, \"MANY_NOT_EMPTY\")\n grammar.printDebug(offset + 2)\n }\n is AnyOfGrammar -> printlnWithOffset(offset, \"ANY_OF[${Regex.escape(value)}]\")\n is RangeGrammar -> printlnWithOffset(offset, \"RANGE[$from-$to]\")\n}\n\nprivate fun printlnWithOffset(offset: Int, node: Any) {\n println(\"${\" \".repeat(offset)}${offset / 2}: $node\")\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.parsing\n\ninternal class GrammarBuilder {\n private val grammars = mutableListOf()\n\n infix fun then(grammar: Grammar): GrammarBuilder {\n grammars += grammar\n return this\n }\n\n infix fun then(value: String): GrammarBuilder {\n grammars += StringGrammar(value)\n return this\n }\n\n operator fun (() -> Grammar).unaryPlus() {\n grammars += this()\n }\n\n operator fun Grammar.unaryPlus() {\n grammars += this\n }\n\n operator fun String.unaryPlus() {\n grammars += StringGrammar(this)\n }\n\n public fun build(): Grammar = if (grammars.size == 1) grammars.first() else SequenceGrammar(grammars)\n}\n\ninternal fun grammar(block: GrammarBuilder.() -> Unit): Grammar = GrammarBuilder().apply(block).build()\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.parsing\n\ninternal sealed class Grammar\n\ninternal interface ComplexGrammar {\n val grammars: List\n}\n\ninternal interface SimpleGrammar {\n val grammar: Grammar\n}\n\ninternal class StringGrammar(val value: String) : Grammar()\ninternal class AnyOfGrammar(val value: String) : Grammar()\ninternal class RangeGrammar(val from: Char, val to: Char) : Grammar()\ninternal class RawGrammar(val value: String) : Grammar()\n\ninternal class NamedGrammar(val name: String, val grammar: Grammar) : Grammar()\n\ninternal class MaybeGrammar(override val grammar: Grammar) : Grammar(), SimpleGrammar\ninternal class ManyGrammar(override val grammar: Grammar) : Grammar(), SimpleGrammar\ninternal class AtLeastOne(override val grammar: Grammar) : Grammar(), SimpleGrammar\n\ninternal class SequenceGrammar(sourceGrammars: List) : Grammar(), ComplexGrammar {\n override val grammars: List = sourceGrammars.flatten()\n}\n\ninternal class OrGrammar(sourceGrammars: List) : Grammar(), ComplexGrammar {\n override val grammars: List = sourceGrammars.flatten()\n}\n\ninternal fun maybe(grammar: Grammar): Grammar = MaybeGrammar(grammar)\ninternal fun maybe(value: String): Grammar = MaybeGrammar(StringGrammar(value))\ninternal fun maybe(block: GrammarBuilder.() -> Unit): () -> Grammar = { maybe(GrammarBuilder().apply(block).build()) }\n\ninternal infix fun String.then(grammar: Grammar): Grammar = StringGrammar(this) then grammar\ninternal infix fun Grammar.then(grammar: Grammar): Grammar = SequenceGrammar(listOf(this, grammar))\ninternal infix fun Grammar.then(value: String): Grammar = this then StringGrammar(value)\n\ninternal infix fun Grammar.or(grammar: Grammar): Grammar = OrGrammar(listOf(this, grammar))\ninternal infix fun Grammar.or(value: String): Grammar = this or StringGrammar(value)\ninternal infix fun String.or(grammar: Grammar): Grammar = StringGrammar(this) or grammar\n\ninternal fun many(grammar: Grammar): Grammar = ManyGrammar(grammar)\ninternal fun atLeastOne(grammar: Grammar): Grammar = AtLeastOne(grammar)\n\ninternal fun Grammar.named(name: String): Grammar = NamedGrammar(name, this)\n\ninternal fun anyOf(value: String): Grammar = AnyOfGrammar(value)\ninternal infix fun Char.to(other: Char): Grammar = RangeGrammar(this, other)\n\ninternal inline fun List.flatten(): List {\n val result = mutableListOf()\n forEach {\n if (it is T) result += it.grammars else result += it\n }\n return result\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.parsing.regex\n\nimport io.ktor.http.parsing.*\n\ninternal fun Grammar.buildRegexParser(): Parser {\n val groups = mutableMapOf>()\n val expression = toRegex(groups).regex\n\n return RegexParser(Regex(expression), groups)\n}\n\nprivate class GrammarRegex(\n regexRaw: String,\n groupsCountRaw: Int = 0,\n group: Boolean = false\n) {\n val regex = if (group) \"($regexRaw)\" else regexRaw\n val groupsCount = if (group) groupsCountRaw + 1 else groupsCountRaw\n}\n\nprivate fun Grammar.toRegex(\n groups: MutableMap>,\n offset: Int = 1,\n shouldGroup: Boolean = false\n): GrammarRegex = when (this) {\n is StringGrammar -> GrammarRegex(Regex.escape(value))\n is RawGrammar -> GrammarRegex(value)\n is NamedGrammar -> {\n val nested = grammar.toRegex(groups, offset + 1)\n groups.add(name, offset)\n GrammarRegex(nested.regex, nested.groupsCount, group = true)\n }\n is ComplexGrammar -> {\n val expression = StringBuilder()\n\n var currentOffset = if (shouldGroup) offset + 1 else offset\n grammars.forEachIndexed { index, grammar ->\n val current = grammar.toRegex(groups, currentOffset, shouldGroup = true)\n\n if (index != 0 && this is OrGrammar) expression.append(\"|\")\n expression.append(current.regex)\n currentOffset += current.groupsCount\n }\n\n val groupsCount = if (shouldGroup) currentOffset - offset - 1 else currentOffset - offset\n GrammarRegex(expression.toString(), groupsCount, shouldGroup)\n }\n is SimpleGrammar -> {\n val operator = when (this) {\n is MaybeGrammar -> '?'\n is ManyGrammar -> '*'\n is AtLeastOne -> '+'\n else -> error(\"Unsupported simple grammar element: $this\")\n }\n\n val nested = grammar.toRegex(groups, offset, shouldGroup = true)\n GrammarRegex(\"${nested.regex}$operator\", nested.groupsCount)\n }\n is AnyOfGrammar -> GrammarRegex(\"[${Regex.escape(value)}]\")\n is RangeGrammar -> GrammarRegex(\"[$from-$to]\")\n else -> error(\"Unsupported grammar element: $this\")\n}\n\nprivate fun MutableMap>.add(key: String, value: Int) {\n if (!contains(key)) this[key] = mutableListOf()\n this[key]!! += value\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.websocket\n\nimport io.ktor.util.*\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.*\n\nprivate const val WEBSOCKET_SERVER_ACCEPT_TAIL = \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\"\n\n/**\n * Calculates `Sec-WebSocket-Accept` header value\n */\npublic fun websocketServerAccept(nonce: String): String =\n sha1(\"${nonce.trim()}$WEBSOCKET_SERVER_ACCEPT_TAIL\".toByteArray(Charset.forName(\"ISO_8859_1\"))).encodeBase64()\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\nimport kotlin.browser.*\n\n/**\n * Hostname of current origin.\n *\n * It uses \"localhost\" for all platforms except js.\n */\ninternal actual val URLBuilder.Companion.originHost: String?\n get() = if (PlatformUtils.IS_BROWSER) {\n window.location.origin\n } else null\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http.content\n\nimport io.ktor.http.*\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.*\n\n/**\n * Represents a text content that could be sent\n * @property text to be sent\n */\npublic class TextContent(\n public val text: String,\n override val contentType: ContentType,\n override val status: HttpStatusCode? = null\n) : OutgoingContent.ByteArrayContent() {\n private val bytes = text.toByteArray(contentType.charset() ?: Charsets.UTF_8)\n\n override val contentLength: Long\n get() = bytes.size.toLong()\n\n override fun bytes(): ByteArray = bytes\n\n override fun toString(): String = \"TextContent[$contentType] \\\"${text.take(30)}\\\"\"\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\nimport io.ktor.utils.io.charsets.*\nimport kotlin.native.concurrent.*\n\n/**\n * Default [ContentType] for [extension]\n */\npublic fun ContentType.Companion.defaultForFileExtension(extension: String): ContentType =\n ContentType.fromFileExtension(extension).selectDefault()\n\n/**\n * Default [ContentType] for file [path]\n */\npublic fun ContentType.Companion.defaultForFilePath(path: String): ContentType =\n ContentType.fromFilePath(path).selectDefault()\n\n/**\n * Recommended content types by file [path]\n */\npublic fun ContentType.Companion.fromFilePath(path: String): List {\n val slashIndex = path.lastIndexOfAny(\"/\\\\\".toCharArray())\n val index = path.indexOf('.', startIndex = slashIndex + 1)\n if (index == -1) {\n return emptyList()\n }\n return fromFileExtension(path.substring(index + 1))\n}\n\n/**\n * Recommended content type by file name extension\n */\npublic fun ContentType.Companion.fromFileExtension(ext: String): List {\n var current = ext.removePrefix(\".\").toLowerCasePreservingASCIIRules()\n while (current.isNotEmpty()) {\n val type = contentTypesByExtensions[current]\n if (type != null) {\n return type\n }\n current = current.substringAfter(\".\", \"\")\n }\n\n return emptyList()\n}\n\n/**\n * Recommended file name extensions for this content type\n */\npublic fun ContentType.fileExtensions(): List = extensionsByContentType[this]\n ?: extensionsByContentType[this.withoutParameters()]\n ?: emptyList()\n\n@ThreadLocal\nprivate val contentTypesByExtensions: Map> by lazy {\n caseInsensitiveMap>().apply { putAll(mimes.asSequence().groupByPairs()) }\n}\n\n@ThreadLocal\nprivate val extensionsByContentType: Map> by lazy {\n mimes.asSequence().map { (first, second) -> second to first }.groupByPairs()\n}\n\ninternal fun List.selectDefault(): ContentType {\n val contentType = firstOrNull() ?: ContentType.Application.OctetStream\n return when {\n contentType.contentType == \"text\" && contentType.charset() == null -> contentType.withCharset(Charsets.UTF_8)\n else -> contentType\n }\n}\n\ninternal fun Sequence>.groupByPairs() = groupBy { it.first }\n .mapValues { e -> e.value.map { it.second } }\n\ninternal fun String.toContentType() = try {\n ContentType.parse(this)\n} catch (e: Throwable) {\n throw IllegalArgumentException(\"Failed to parse $this\", e)\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.util.*\nimport io.ktor.util.date.*\nimport kotlin.native.concurrent.*\n\n@SharedImmutable\nprivate val HTTP_DATE_FORMATS = listOf(\n \"***, dd MMM YYYY hh:mm:ss zzz\",\n \"****, dd-MMM-YYYY hh:mm:ss zzz\",\n \"*** MMM d hh:mm:ss YYYY\",\n \"***, dd-MMM-YYYY hh:mm:ss zzz\",\n \"***, dd-MMM-YYYY hh-mm-ss zzz\",\n \"***, dd MMM YYYY hh:mm:ss zzz\",\n \"*** dd-MMM-YYYY hh:mm:ss zzz\",\n \"*** dd MMM YYYY hh:mm:ss zzz\",\n \"*** dd-MMM-YYYY hh-mm-ss zzz\",\n \"***,dd-MMM-YYYY hh:mm:ss zzz\",\n \"*** MMM d YYYY hh:mm:ss zzz\"\n)\n\n/**\n * Convert valid http date [String] to [GMTDate] trying various http date formats from [HTTP_DATE_FORMATS]\n *\n * Note that only GMT(UTC) date is valid http date.\n */\npublic fun String.fromHttpToGmtDate(): GMTDate = with(trim()) {\n for (format in HTTP_DATE_FORMATS) {\n try {\n val parser = GMTDateParser(format)\n return parser.parse(this@fromHttpToGmtDate)\n } catch (_: InvalidDateStringException) {\n }\n }\n\n error(\"Failed to parse date: $this\")\n}\n\n/**\n * Convert valid cookie date [String] to [GMTDate] trying first the RFC6265 standard, falling back on [fromHttpToGmtDate]\n *\n * @see [fromHttpToGmtDate]\n */\npublic fun String.fromCookieToGmtDate(): GMTDate = with(trim()) {\n try {\n val parser = CookieDateParser()\n return parser.parse(this@with)\n } catch (_: InvalidCookieDateException) {\n }\n\n return fromHttpToGmtDate()\n}\n\n/**\n * Convert [GMTDate] to valid http date [String]\n */\npublic fun GMTDate.toHttpDate(): String = buildString {\n append(\"${dayOfWeek.value}, \")\n append(\"${dayOfMonth.padZero(2)} \")\n append(\"${month.value} \")\n append(year.padZero(4))\n append(\" ${hours.padZero(2)}:${minutes.padZero(2)}:${seconds.padZero(2)} \")\n append(\"GMT\")\n}\n\nprivate fun Int.padZero(length: Int): String = toString().padStart(length, '0')\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.http\n\nimport io.ktor.http.parsing.*\nimport io.ktor.http.parsing.regex.*\nimport kotlin.native.concurrent.*\n\n/**\n * Check if [host] is IPv4 or IPv6 address.\n */\npublic fun hostIsIp(host: String): Boolean = IP_PARSER.match(host)\n\n@SharedImmutable\nprivate val IPv4address = digits then \".\" then digits then \".\" then digits then \".\" then digits\n\n@SharedImmutable\nprivate val IPv6address = \"[\" then atLeastOne(hex or \":\") then \"]\"\n\n@SharedImmutable\nprivate val IP_PARSER = (IPv4address or IPv6address).buildRegexParser()\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","(function (root, factory) {\n if (typeof define === 'function' && define.amd)\n define(['exports', 'kotlin'], factory);\n else if (typeof exports === 'object')\n factory(module.exports, require('kotlin'));\n else {\n if (typeof kotlin === 'undefined') {\n throw new Error(\"Error loading module 'kotlin-wrappers-kotlin-extensions-jsLegacy'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'kotlin-wrappers-kotlin-extensions-jsLegacy'.\");\n }root['kotlin-wrappers-kotlin-extensions-jsLegacy'] = factory(typeof this['kotlin-wrappers-kotlin-extensions-jsLegacy'] === 'undefined' ? {} : this['kotlin-wrappers-kotlin-extensions-jsLegacy'], kotlin);\n }\n}(this, function (_, Kotlin) {\n 'use strict';\n var getCallableRef = Kotlin.getCallableRef;\n var defineInlineFunction = Kotlin.defineInlineFunction;\n var wrapFunction = Kotlin.wrapFunction;\n function clone(obj) {\n return Object.assign({}, obj);\n }\n function getOwnPropertyNames($receiver) {\n return Object.getOwnPropertyNames($receiver);\n }\n function invoke_3($receiver, strings, values) {\n var tmp$;\n return (tmp$ = $receiver).call.apply(tmp$, [null, strings].concat(values));\n }\n function invoke_4($receiver, string, values) {\n return invoke_3($receiver, [string], values.slice());\n }\n function invoke_5($receiver, values) {\n return invoke_3($receiver, [], values.slice());\n }\n var package$kotlinext = _.kotlinext || (_.kotlinext = {});\n var package$js = package$kotlinext.js || (package$kotlinext.js = {});\n package$js.clone_issdgt$ = clone;\n package$js.getOwnPropertyNames_s8jyvk$ = getOwnPropertyNames;\n package$js.invoke_z5wujd$ = invoke_3;\n package$js.invoke_dgimx$ = invoke_4;\n package$js.invoke_9p99ed$ = invoke_5;\n return _;\n}));\n\n//# sourceMappingURL=kotlin-wrappers-kotlin-extensions-jsLegacy.js.map\n","package com.arkivanov.mvikotlin.core.store\n\nimport com.arkivanov.mvikotlin.utils.internal.atomic\nimport com.arkivanov.mvikotlin.utils.internal.initialize\nimport com.arkivanov.mvikotlin.utils.internal.requireValue\n\n/**\n * Simple implementation of the [Bootstrapper].\n * Accepts an array of the `Actions` and dispatches them one by one.\n *\n * @param actions an array of the `Actions` to be dispatched\n */\nclass SimpleBootstrapper(\n private vararg val actions: Action\n) : Bootstrapper {\n\n private val actionConsumer = atomic<(Action) -> Unit>()\n\n override fun init(actionConsumer: (Action) -> Unit) {\n this.actionConsumer.initialize(actionConsumer)\n }\n\n override fun dispose() {\n // no-op\n }\n\n override fun invoke() {\n actions.forEach(actionConsumer.requireValue()::invoke)\n }\n}\n","package com.arkivanov.mvikotlin.core.store\n\nenum class StoreEventType {\n\n INTENT, ACTION, RESULT, STATE, LABEL;\n\n val title: String = name.toLowerCase().capitalize()\n\n companion object {\n val VALUES: Set = values().toSet()\n }\n}\n","package com.arkivanov.mvikotlin.core.store\n\nimport com.arkivanov.mvikotlin.core.annotations.MainThread\nimport kotlin.js.JsName\n\n/**\n * Creates instances of [Store]s using the provided components.\n * You can create different [Store] wrappers and combine them depending on circumstances.\n */\ninterface StoreFactory {\n\n @JsName(\"create\")\n @MainThread\n fun create(\n name: String? = null,\n initialState: State,\n bootstrapper: Bootstrapper? = null,\n executorFactory: () -> Executor,\n @Suppress(\"UNCHECKED_CAST\")\n reducer: Reducer = bypassReducer as Reducer\n ): Store\n\n private companion object {\n private val bypassReducer: Reducer =\n object : Reducer {\n override fun Any.reduce(result: Any): Any = this\n }\n }\n}\n","package com.arkivanov.mvikotlin.core.utils\n\nimport com.arkivanov.mvikotlin.core.annotations.MainThread\n\nvar isAssertOnMainThreadEnabled: Boolean\n get() = com.arkivanov.mvikotlin.utils.internal.isAssertOnMainThreadEnabled\n set(value) {\n com.arkivanov.mvikotlin.utils.internal.isAssertOnMainThreadEnabled = value\n }\n\n@MainThread\nfun assertOnMainThread() {\n com.arkivanov.mvikotlin.utils.internal.assertOnMainThread()\n}\n","package com.arkivanov.mvikotlin.utils.internal\n\nimport kotlin.reflect.KProperty\n\nfun AtomicRef.initialize(value: T) {\n if (!compareAndSet(null, value)) {\n throw IllegalStateException(\"Value is already initialized: $this\")\n }\n}\n\nfun AtomicRef.requireValue(): T = requireNotNull(value) { \"Value was not initialized\" }\n\noperator fun AtomicBoolean.getValue(thisRef: Any?, property: KProperty<*>): Boolean = value\n\noperator fun AtomicBoolean.setValue(thisRef: Any?, property: KProperty<*>, value: Boolean) {\n this.value = value\n}\n\noperator fun AtomicInt.getValue(thisRef: Any?, property: KProperty<*>): Int = value\n\noperator fun AtomicInt.setValue(thisRef: Any?, property: KProperty<*>, value: Int) {\n this.value = value\n}\n\noperator fun AtomicRef.getValue(thisRef: Any?, property: KProperty<*>): T = value\n\noperator fun AtomicRef.setValue(thisRef: Any?, property: KProperty<*>, value: T) {\n this.value = value\n}\n\nfun AtomicRef.getAndUpdate(block: (T) -> T): T {\n var oldValue: T\n do {\n oldValue = value\n } while (!compareAndSet(oldValue, block(oldValue)))\n\n return oldValue\n}\n","package com.arkivanov.mvikotlin.utils.internal\n\ninternal const val LOG_TAG = \"MVIKotlin\"\n\nexpect fun logV(text: String)\n\nexpect fun logE(text: String)\n\ninternal fun String.withLogTag(): String = \"[$LOG_TAG]: $this\"\n","package com.arkivanov.mvikotlin.utils.internal\n\nvar isAssertOnMainThreadEnabled: Boolean by atomic(true)\n\nprivate val mainThreadIdRef = atomic(null)\n\nfun assertOnMainThread() {\n if (isAssertOnMainThreadEnabled) {\n require(isMainThread()) {\n \"Not on Main thread, current thread is: ${getCurrentThreadDescription()}\"\n }\n }\n}\n\ninternal expect fun getMainThreadId(): MainThreadId?\n\ninternal expect fun isMainThread(mainThreadId: MainThreadId): Boolean\n\ninternal expect fun getCurrentThreadDescription(): String\n\nprivate fun isMainThread(): Boolean {\n val mainThreadId =\n mainThreadIdRef.initAndGet {\n val id: MainThreadId? = getMainThreadId()\n if (id == null) {\n logE(\"Main thread id is undefined, main thread assert is disabled\")\n }\n MainThreadIdHolder(id)\n }\n\n return mainThreadId.id?.let(::isMainThread) ?: true\n}\n\nprivate inline fun AtomicRef.initAndGet(init: () -> T): T {\n while (true) {\n var v: T? = value\n if (v != null) {\n return v\n }\n\n v = init()\n if (compareAndSet(null, v)) {\n return v\n }\n }\n}\n\ninternal expect class MainThreadId\n\nprivate class MainThreadIdHolder(val id: MainThreadId?)\n","package com.arkivanov.mvikotlin.utils.internal\n\nactual fun atomic(value: T): AtomicRef = AtomicRefImpl(value)\n\nprivate class AtomicRefImpl(\n override var value: T\n) : AtomicRef {\n override fun compareAndSet(expected: T, new: T): Boolean =\n if (this.value === expected) {\n this.value = new\n true\n } else {\n false\n }\n}\n\nactual fun atomic(value: Boolean): AtomicBoolean = AtomicBooleanImpl(value)\n\nprivate class AtomicBooleanImpl(\n override var value: Boolean\n) : AtomicBoolean\n\nactual fun atomic(value: Int): AtomicInt = AtomicIntImpl(value)\n\nprivate class AtomicIntImpl(\n override var value: Int\n) : AtomicInt\n","package com.arkivanov.mvikotlin.utils.internal\n\nactual fun logV(text: String) {\n console.log(text.withLogTag())\n}\n\nactual fun logE(text: String) {\n console.error(text.withLogTag())\n}\n","package com.arkivanov.mvikotlin.utils.internal\n\ninternal actual fun getMainThreadId(): MainThreadId? = MainThreadId()\n\ninternal actual fun isMainThread(mainThreadId: MainThreadId): Boolean = true\n\ninternal actual fun getCurrentThreadDescription(): String = \"Main thread\"\n\ninternal actual class MainThreadId\n","@file:JvmName(\"AtomicJvm\")\n\npackage com.arkivanov.mvikotlin.utils.internal\n\nimport kotlin.jvm.JvmName\n\ninterface AtomicRef {\n\n var value: T\n\n fun compareAndSet(expected: T, new: T): Boolean\n}\n\ninterface AtomicBoolean {\n\n var value: Boolean\n}\n\ninterface AtomicInt {\n\n var value: Int\n}\n\nexpect fun atomic(value: T): AtomicRef\n\nexpect fun atomic(value: Boolean): AtomicBoolean\n\nexpect fun atomic(value: Int): AtomicInt\n\nfun atomic(): AtomicRef = atomic(null)\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.bits.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.*\n\nprivate const val CHUNK_BUFFER_SIZE = 4096L\n\n/**\n * Split source [ByteReadChannel] into 2 new one.\n * Cancel of one channel in split(input or both outputs) cancels other channels.\n */\npublic fun ByteReadChannel.split(coroutineScope: CoroutineScope): Pair {\n val first = ByteChannel(autoFlush = true)\n val second = ByteChannel(autoFlush = true)\n\n coroutineScope.launch {\n try {\n while (!isClosedForRead) {\n this@split.readRemaining(CHUNK_BUFFER_SIZE).use { chunk ->\n listOf(\n async { first.writePacket(chunk.copy()) },\n async { second.writePacket(chunk.copy()) }\n ).awaitAll()\n }\n }\n\n if (this is ByteChannel) {\n closedCause?.let { throw it }\n }\n } catch (cause: Throwable) {\n this@split.cancel(cause)\n first.cancel(cause)\n second.cancel(cause)\n } finally {\n first.close()\n second.close()\n }\n }.invokeOnCompletion {\n it ?: return@invokeOnCompletion\n first.cancel(it)\n second.cancel(it)\n }\n\n return first to second\n}\n\n/**\n * Copy source channel to both output channels chunk by chunk.\n */\n@InternalAPI\npublic fun ByteReadChannel.copyToBoth(first: ByteWriteChannel, second: ByteWriteChannel) {\n GlobalScope.launch(Dispatchers.Unconfined) {\n try {\n while (!isClosedForRead && (!first.isClosedForWrite || !second.isClosedForWrite)) {\n readRemaining(CHUNK_BUFFER_SIZE).use {\n try {\n first.writePacket(it.copy())\n second.writePacket(it.copy())\n } catch (cause: Throwable) {\n this@copyToBoth.cancel(cause)\n first.close(cause)\n second.close(cause)\n }\n }\n }\n\n if (this is ByteChannel) {\n closedCause?.let { throw it }\n }\n } catch (cause: Throwable) {\n first.close(cause)\n second.close(cause)\n } finally {\n first.close()\n second.close()\n }\n }.invokeOnCompletion {\n it ?: return@invokeOnCompletion\n first.close(it)\n second.close(it)\n }\n}\n\n/**\n * Read channel to byte array.\n */\npublic suspend fun ByteReadChannel.toByteArray(): ByteArray = readRemaining().readBytes()\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\n\n/**\n * Print [Job] children tree.\n */\n@InternalAPI\npublic fun Job.printDebugTree(offset: Int = 0) {\n println(\" \".repeat(offset) + this)\n\n children.forEach {\n it.printDebugTree(offset + 2)\n }\n\n if (offset == 0) println()\n}\n\n@InternalAPI\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal expect inline fun (suspend R.(A) -> Unit).startCoroutineUninterceptedOrReturn3(\n receiver: R,\n arg: A,\n continuation: Continuation\n): Any?\n\n/**\n * Supervisor with empty coroutine exception handler ignoring all exceptions.\n */\n@InternalAPI\npublic fun SilentSupervisor(parent: Job? = null): CoroutineContext =\n SupervisorJob(parent) + CoroutineExceptionHandler { _, _ -> }\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\n/**\n * Length of this [LongRange]\n */\n@Deprecated(\"Not supported anymore.\", level = DeprecationLevel.ERROR)\npublic val LongRange.length: Long\n get() = (endInclusive - start + 1).coerceAtLeast(0L)\n\n/**\n * Returns `true` if [other] range is fully contained inside [this] range\n */\n@InternalAPI\npublic operator fun LongRange.contains(other: LongRange): Boolean =\n other.start >= start && other.endInclusive <= endInclusive\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.*\nimport kotlin.experimental.*\nimport kotlin.native.concurrent.*\n\nprivate const val BASE64_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\nprivate const val BASE64_MASK: Byte = 0x3f\nprivate const val BASE64_PAD = '='\n\n@SharedImmutable\nprivate val BASE64_INVERSE_ALPHABET = IntArray(256) {\n BASE64_ALPHABET.indexOf(it.toChar())\n}\n\n/**\n * Encode [String] in base64 format and UTF-8 character encoding.\n */\n@InternalAPI\npublic fun String.encodeBase64(): String = buildPacket {\n writeText(this@encodeBase64)\n}.encodeBase64()\n\n/**\n * Encode [ByteArray] in base64 format\n */\n@InternalAPI\npublic fun ByteArray.encodeBase64(): String = buildPacket {\n writeFully(this@encodeBase64)\n}.encodeBase64()\n\n/**\n * Encode [ByteReadPacket] in base64 format\n */\n@InternalAPI\npublic fun ByteReadPacket.encodeBase64(): String = buildString {\n val data = ByteArray(3)\n while (remaining > 0) {\n val read = readAvailable(data)\n data.clearFrom(read)\n\n val padSize = (data.size - read) * 8 / 6\n val chunk = ((data[0].toInt() and 0xFF) shl 16) or\n ((data[1].toInt() and 0xFF) shl 8) or\n (data[2].toInt() and 0xFF)\n\n for (index in data.size downTo padSize) {\n val char = (chunk shr (6 * index)) and BASE64_MASK.toInt()\n append(char.toBase64())\n }\n\n repeat(padSize) { append(BASE64_PAD) }\n }\n}\n\n/**\n * Decode [String] from base64 format encoded in UTF-8.\n */\n@InternalAPI\npublic fun String.decodeBase64String(): String = String(decodeBase64Bytes(), charset = Charsets.UTF_8)\n\n/**\n * Decode [String] from base64 format\n */\n@InternalAPI\npublic fun String.decodeBase64Bytes(): ByteArray = buildPacket {\n writeText(dropLastWhile { it == BASE64_PAD })\n}.decodeBase64Bytes().readBytes()\n\n/**\n * Decode [ByteReadPacket] from base64 format\n */\n@InternalAPI\npublic fun ByteReadPacket.decodeBase64Bytes(): Input = buildPacket {\n val data = ByteArray(4)\n\n while (remaining > 0) {\n val read = readAvailable(data)\n\n val chunk = data.foldIndexed(0) { index, result, current ->\n result or (current.fromBase64().toInt() shl ((3 - index) * 6))\n }\n\n for (index in data.size - 2 downTo (data.size - read)) {\n val origin = (chunk shr (8 * index)) and 0xff\n writeByte(origin.toByte())\n }\n }\n}\n\n@Suppress(\"unused\", \"KDocMissingDocumentation\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\npublic fun String.decodeBase64(): String = decodeBase64String()\n\n@Suppress(\"unused\", \"KDocMissingDocumentation\")\n@Deprecated(\"Binary compatibility.\", level = DeprecationLevel.HIDDEN)\npublic fun ByteReadPacket.decodeBase64(): String = decodeBase64Bytes().readText()\n\ninternal fun ByteArray.clearFrom(from: Int) {\n (from until size).forEach { this[it] = 0 }\n}\n\ninternal fun Int.toBase64(): Char = BASE64_ALPHABET[this]\ninternal fun Byte.fromBase64(): Byte = BASE64_INVERSE_ALPHABET[toInt() and 0xff].toByte() and BASE64_MASK\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\n/**\n * A map with case insensitive [String] keys\n */\n@InternalAPI\npublic class CaseInsensitiveMap : MutableMap {\n private val delegate = mutableMapOf()\n\n override val size: Int get() = delegate.size\n\n override fun containsKey(key: String): Boolean = delegate.containsKey(CaseInsensitiveString(key))\n\n override fun containsValue(value: Value): Boolean = delegate.containsValue(value)\n\n override fun get(key: String): Value? = delegate[key.caseInsensitive()]\n\n override fun isEmpty(): Boolean = delegate.isEmpty()\n\n override fun clear() {\n delegate.clear()\n }\n\n override fun put(key: String, value: Value): Value? = delegate.put(key.caseInsensitive(), value)\n\n override fun putAll(from: Map) {\n from.forEach { (key, value) -> put(key, value) }\n }\n\n override fun remove(key: String): Value? = delegate.remove(key.caseInsensitive())\n\n override val keys: MutableSet\n get() = DelegatingMutableSet(\n delegate.keys,\n { content },\n { caseInsensitive() }\n )\n\n override val entries: MutableSet>\n get() = DelegatingMutableSet(\n delegate.entries,\n { Entry(key.content, value) },\n { Entry(key.caseInsensitive(), value) }\n )\n\n override val values: MutableCollection get() = delegate.values\n\n override fun equals(other: Any?): Boolean {\n if (other == null || other !is CaseInsensitiveMap<*>) return false\n return other.delegate == delegate\n }\n\n override fun hashCode(): Int = delegate.hashCode()\n}\n\nprivate class Entry(\n override val key: Key,\n override var value: Value\n) : MutableMap.MutableEntry {\n\n override fun setValue(newValue: Value): Value {\n value = newValue\n return value\n }\n\n override fun hashCode(): Int = 17 * 31 + key!!.hashCode() + value!!.hashCode()\n\n override fun equals(other: Any?): Boolean {\n if (other == null || other !is Map.Entry<*, *>) return false\n return other.key == key && other.value == value\n }\n\n override fun toString(): String = \"$key=$value\"\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\npackage io.ktor.util\n\n@InternalAPI\npublic class CaseInsensitiveSet() : MutableSet {\n private val backingMap = CaseInsensitiveMap()\n\n public constructor(initial: Iterable) : this() {\n addAll(initial)\n }\n\n override fun add(element: String): Boolean {\n if (element in backingMap) {\n return false\n }\n backingMap[element] = true\n return true\n }\n\n override val size: Int\n get() = backingMap.size\n\n override fun remove(element: String): Boolean {\n return backingMap.remove(element) == true\n }\n\n override fun addAll(elements: Collection): Boolean {\n var added = false\n for (element in elements) {\n if (add(element)) {\n added = true\n }\n }\n return added\n }\n\n override fun clear() {\n backingMap.clear()\n }\n\n override fun removeAll(elements: Collection): Boolean {\n return backingMap.keys.removeAll(elements)\n }\n\n override fun retainAll(elements: Collection): Boolean {\n return backingMap.keys.retainAll(elements)\n }\n\n override fun contains(element: String): Boolean {\n return backingMap.contains(element)\n }\n\n override fun containsAll(elements: Collection): Boolean {\n return backingMap.keys.containsAll(elements)\n }\n\n override fun isEmpty(): Boolean {\n return backingMap.isEmpty()\n }\n\n override fun iterator(): MutableIterator = backingMap.keys.iterator()\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\n/**\n * Check if [Char] is in lower case\n */\n@InternalAPI\npublic fun Char.isLowerCase(): Boolean = toLowerCase() == this\n\n/**\n * Convert [String] to [CharArray]\n */\n@InternalAPI\npublic fun String.toCharArray(): CharArray = CharArray(length) { get(it) }\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\ninternal open class DelegatingMutableSet(\n private val delegate: MutableSet,\n private val convertTo: From.() -> To,\n private val convert: To.() -> From\n) : MutableSet {\n\n public open fun Collection.convert(): Collection = map { it.convert() }\n public open fun Collection.convertTo(): Collection = map { it.convertTo() }\n\n override val size: Int = delegate.size\n\n override fun add(element: To): Boolean = delegate.add(element.convert())\n\n override fun addAll(elements: Collection): Boolean = delegate.addAll(elements.convert())\n\n override fun clear() {\n delegate.clear()\n }\n\n override fun remove(element: To): Boolean = delegate.remove(element.convert())\n\n override fun removeAll(elements: Collection): Boolean = delegate.removeAll(elements.convert())\n\n override fun retainAll(elements: Collection): Boolean = delegate.retainAll(elements.convert())\n\n override fun contains(element: To): Boolean = delegate.contains(element.convert())\n\n override fun containsAll(elements: Collection): Boolean = delegate.containsAll(elements.convert())\n\n override fun isEmpty(): Boolean = delegate.isEmpty()\n\n override fun iterator(): MutableIterator = object : MutableIterator {\n val delegateIterator = delegate.iterator()\n\n override fun hasNext(): Boolean = delegateIterator.hasNext()\n\n override fun next(): To = delegateIterator.next().convertTo()\n\n override fun remove() = delegateIterator.remove()\n }\n\n override fun hashCode(): Int = delegate.hashCode()\n\n override fun equals(other: Any?): Boolean {\n if (other == null || other !is Set<*>) return false\n\n val elements = delegate.convertTo()\n return other.containsAll(elements) && elements.containsAll(other)\n }\n\n override fun toString(): String = delegate.convertTo().toString()\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\n/**\n * API marked with this annotation is ktor internal and it is not intended to be used outside.\n * It could be modified or removed without any notice. Using it outside of ktor could cause undefined behaviour and/or\n * any strange effects.\n *\n * We are strongly recommend to not use such API.\n */\n@Suppress(\"DEPRECATION\")\n@RequiresOptIn(\n level = RequiresOptIn.Level.ERROR,\n message = \"This API is internal in ktor and should not be used. It could be removed or changed without notice.\"\n)\n@Experimental(level = Experimental.Level.ERROR)\n@Target(\n AnnotationTarget.CLASS,\n AnnotationTarget.TYPEALIAS,\n AnnotationTarget.FUNCTION,\n AnnotationTarget.PROPERTY,\n AnnotationTarget.FIELD,\n AnnotationTarget.CONSTRUCTOR,\n AnnotationTarget.PROPERTY_SETTER\n)\npublic annotation class InternalAPI\n\n/**\n * API marked with this annotation is experimental and is not guaranteed to be stable.\n */\n@Suppress(\"DEPRECATION\")\n@RequiresOptIn(\n level = RequiresOptIn.Level.WARNING,\n message = \"This API is experimental. \" +\n \"It could be removed or changed in future releases, or its behaviour may be different.\"\n)\n@Experimental(level = Experimental.Level.WARNING)\n@Target(\n AnnotationTarget.CLASS,\n AnnotationTarget.TYPEALIAS,\n AnnotationTarget.FUNCTION,\n AnnotationTarget.PROPERTY,\n AnnotationTarget.FIELD,\n AnnotationTarget.CONSTRUCTOR\n)\npublic annotation class KtorExperimentalAPI\n\n/**\n * API marked with this annotation is intended to become public in the future [version].\n * Usually it means that the API can't be public at the moment of development due to\n * compatibility guarantees restrictions.\n *\n * Marking a public declaration with this annotation makes no sense\n * except for the case when it is also marked with [InternalAPI].\n *\n * Please note that the specified [version] and the fact of making something a candidate is not a guarantee,\n * so the target version could be changed without any notice or even the promotion could be cancelled at all.\n *\n * @property version in which the API is planned to be promoted\n */\n@InternalAPI\n@Retention(AnnotationRetention.SOURCE)\n@Target(\n AnnotationTarget.CLASS,\n AnnotationTarget.ANNOTATION_CLASS,\n AnnotationTarget.CONSTRUCTOR,\n AnnotationTarget.FUNCTION,\n AnnotationTarget.PROPERTY,\n AnnotationTarget.PROPERTY_SETTER,\n AnnotationTarget.TYPEALIAS\n)\npublic annotation class PublicAPICandidate(val version: String)\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\n/**\n * Specifies a key for an attribute in [Attributes]\n * @param T is type of the value stored in the attribute\n * @param name is a name of the attribute for diagnostic purposes\n */\npublic class AttributeKey(public val name: String) {\n override fun toString(): String = if (name.isEmpty()) super.toString() else \"AttributeKey: $name\"\n}\n\n/**\n * Create attributes instance suitable for the particular platform\n */\npublic expect fun Attributes(concurrent: Boolean = false): Attributes\n\n/**\n * Map of attributes accessible by [AttributeKey] in a typed manner\n */\npublic interface Attributes {\n /**\n * Gets a value of the attribute for the specified [key], or throws an exception if an attribute doesn't exist\n */\n public operator fun get(key: AttributeKey): T =\n getOrNull(key) ?: throw IllegalStateException(\"No instance for key $key\")\n\n /**\n * Gets a value of the attribute for the specified [key], or return `null` if an attribute doesn't exist\n */\n public fun getOrNull(key: AttributeKey): T?\n\n /**\n * Checks if an attribute with the specified [key] exists\n */\n public operator fun contains(key: AttributeKey<*>): Boolean\n\n /**\n * Creates or changes an attribute with the specified [key] using [value]\n */\n public fun put(key: AttributeKey, value: T)\n\n /**\n * Removes an attribute with the specified [key]\n */\n public fun remove(key: AttributeKey)\n\n /**\n * Removes an attribute with the specified [key] and returns its current value, throws an exception if an attribute doesn't exist\n */\n public fun take(key: AttributeKey): T = get(key).also { remove(key) }\n\n /**\n * Removes an attribute with the specified [key] and returns its current value, returns `null` if an attribute doesn't exist\n */\n public fun takeOrNull(key: AttributeKey): T? = getOrNull(key).also { remove(key) }\n\n /**\n * Gets a value of the attribute for the specified [key], or calls supplied [block] to compute its value\n */\n public fun computeIfAbsent(key: AttributeKey, block: () -> T): T\n\n /**\n * Returns [List] of all [AttributeKey] instances in this map\n */\n public val allKeys: List>\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\n/**\n * Read [Short] in network order(BE) with specified [offset] from [ByteArray].\n */\n@InternalAPI\npublic fun ByteArray.readShort(offset: Int): Short {\n val result = ((this[offset].toInt() and 0xFF) shl 8) or (this[offset + 1].toInt() and 0xFF)\n return result.toShort()\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\n@file:kotlin.jvm.JvmMultifileClass\n@file:kotlin.jvm.JvmName(\"CryptoKt\")\n\npackage io.ktor.util\n\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.*\nimport kotlin.native.concurrent.*\n\n@SharedImmutable\nprivate val digits = \"0123456789abcdef\".toCharArray()\n\n/**\n * Encode [bytes] as a HEX string with no spaces, newlines and `0x` prefixes.\n */\npublic fun hex(bytes: ByteArray): String {\n val result = CharArray(bytes.size * 2)\n var resultIndex = 0\n val digits = digits\n\n for (index in 0 until bytes.size) {\n val b = bytes[index].toInt() and 0xff\n result[resultIndex++] = digits[b shr 4]\n result[resultIndex++] = digits[b and 0x0f]\n }\n\n return result.concatToString()\n}\n\n/**\n * Decode bytes from HEX string. It should be no spaces and `0x` prefixes.\n */\npublic fun hex(s: String): ByteArray {\n val result = ByteArray(s.length / 2)\n for (idx in 0 until result.size) {\n val srcIdx = idx * 2\n val high = s[srcIdx].toString().toInt(16) shl 4\n val low = s[srcIdx + 1].toString().toInt(16)\n result[idx] = (high or low).toByte()\n }\n\n return result\n}\n\n/**\n * Generates a nonce string. Could block if the system's entropy source is empty\n */\n@InternalAPI\npublic expect fun generateNonce(): String\n\n/**\n * Generates a nonce bytes of [size]. Could block if the system's entropy source is empty\n */\n@InternalAPI\npublic fun generateNonce(size: Int): ByteArray = buildPacket {\n while (this.size < size) {\n writeText(generateNonce())\n }\n}.readBytes(size)\n\n/**\n * Compute SHA-1 hash for the specified [bytes]\n */\npublic expect fun sha1(bytes: ByteArray): ByteArray\n\n/**\n * Create [Digest] from specified hash [name].\n */\n@Suppress(\"FunctionName\")\n@InternalAPI\npublic expect fun Digest(name: String): Digest\n\n/**\n * Stateful digest class specified to calculate digest.\n */\n@InternalAPI\npublic interface Digest {\n /**\n * Add [bytes] to digest value.\n */\n public operator fun plusAssign(bytes: ByteArray)\n\n /**\n * Reset [Digest] state.\n */\n public fun reset()\n\n /**\n * Calculate digest bytes.\n */\n public suspend fun build(): ByteArray\n}\n\n/**\n * Calculate digest from current state and specified [bytes].\n */\n@InternalAPI\npublic suspend fun Digest.build(bytes: ByteArray): ByteArray {\n this += bytes\n return build()\n}\n\n/**\n * Calculate digest from current state and specified [string].\n */\n@InternalAPI\npublic suspend fun Digest.build(string: String, charset: Charset = Charsets.UTF_8): ByteArray {\n this += string.toByteArray(charset)\n return build()\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\nimport io.ktor.utils.io.*\nimport kotlinx.coroutines.*\n\n/**\n * Empty [Encoder] that doesn't do any changes.\n */\npublic object Identity : Encoder {\n override fun CoroutineScope.encode(source: ByteReadChannel): ByteReadChannel = source\n\n override fun CoroutineScope.decode(source: ByteReadChannel): ByteReadChannel = source\n}\n\n/**\n * Content encoder.\n */\npublic interface Encoder {\n /**\n * Launch coroutine to encode [source] bytes.\n */\n public fun CoroutineScope.encode(source: ByteReadChannel): ByteReadChannel\n\n /**\n * Launch coroutine to decode [source] bytes.\n */\n public fun CoroutineScope.decode(source: ByteReadChannel): ByteReadChannel\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\n/**\n * Represents a nonce manager. It's responsibility is to produce nonce values\n * and verify nonce values from untrusted sources that they are provided by this manager.\n * This is usually required in web environment to mitigate CSRF attacks.\n * Depending on it's underlying implementation it could be stateful or stateless.\n * Note that there is usually some timeout for nonce values to reduce memory usage and to avoid replay attacks.\n * Nonce length is unspecified.\n */\npublic interface NonceManager {\n /**\n * Generate new nonce instance\n */\n public suspend fun newNonce(): String\n\n /**\n * Verify [nonce] value\n * @return `true` if [nonce] is valid\n */\n public suspend fun verifyNonce(nonce: String): Boolean\n}\n\n/**\n * This implementation does only generate nonce values but doesn't validate them. This is recommended for testing only.\n */\npublic object GenerateOnlyNonceManager : NonceManager {\n override suspend fun newNonce(): String {\n return generateNonce()\n }\n\n override suspend fun verifyNonce(nonce: String): Boolean {\n return true\n }\n}\n\n/**\n * Stub implementation that always fails.\n * Will be removed so no public signatures should rely on it\n */\n@Deprecated(\"This should be removed with OAuth2StateProvider\", level = DeprecationLevel.ERROR)\n@InternalAPI\npublic object AlwaysFailNonceManager : NonceManager {\n override suspend fun newNonce(): String {\n throw UnsupportedOperationException(\"This manager should never be used\")\n }\n\n override suspend fun verifyNonce(nonce: String): Boolean {\n throw UnsupportedOperationException(\"This manager should never be used\")\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\n/**\n * Provides data structure for associating a [String] with a [List] of Strings\n */\npublic interface StringValues {\n public companion object {\n /**\n * Empty [StringValues] instance\n */\n public val Empty: StringValues = StringValuesImpl()\n\n /**\n * Builds a [StringValues] instance with the given [builder] function\n * @param caseInsensitiveName specifies if map should have case-sensitive or case-insensitive names\n * @param builder specifies a function to build a map\n */\n public inline fun build(\n caseInsensitiveName: Boolean = false,\n builder: StringValuesBuilder.() -> Unit\n ): StringValues = StringValuesBuilder(caseInsensitiveName).apply(builder).build()\n }\n\n /**\n * Specifies if map has case-sensitive or case-insensitive names\n */\n public val caseInsensitiveName: Boolean\n\n /**\n * Gets first value from the list of values associated with a [name], or null if the name is not present\n */\n public operator fun get(name: String): String? = getAll(name)?.firstOrNull()\n\n /**\n * Gets all values associated with the [name], or null if the name is not present\n */\n public fun getAll(name: String): List?\n\n /**\n * Gets all names from the map\n */\n public fun names(): Set\n\n /**\n * Gets all entries from the map\n */\n public fun entries(): Set>>\n\n /**\n * Checks if the given [name] exists in the map\n */\n public operator fun contains(name: String): Boolean = getAll(name) != null\n\n /**\n * Checks if the given [name] and [value] pair exists in the map\n */\n public fun contains(name: String, value: String): Boolean = getAll(name)?.contains(value) ?: false\n\n /**\n * Iterates over all entries in this map and calls [body] for each pair\n *\n * Can be optimized in implementations\n */\n public fun forEach(body: (String, List) -> Unit): Unit = entries().forEach { (k, v) -> body(k, v) }\n\n /**\n * Checks if this map is empty\n */\n public fun isEmpty(): Boolean\n}\n\n@InternalAPI\n@Suppress(\"KDocMissingDocumentation\")\npublic open class StringValuesSingleImpl(\n override val caseInsensitiveName: Boolean,\n public val name: String,\n public val values: List\n) : StringValues {\n\n override fun getAll(name: String): List? = if (this.name.equals(name, caseInsensitiveName)) values else null\n\n override fun entries(): Set>> = setOf(\n object : Map.Entry> {\n override val key: String = name\n override val value: List = values\n override fun toString() = \"$key=$value\"\n }\n )\n\n override fun isEmpty(): Boolean = false\n\n override fun names(): Set = setOf(name)\n\n override fun toString(): String = \"StringValues(case=${!caseInsensitiveName}) ${entries()}\"\n\n override fun hashCode(): Int = entriesHashCode(entries(), 31 * caseInsensitiveName.hashCode())\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is StringValues) return false\n if (caseInsensitiveName != other.caseInsensitiveName) return false\n return entriesEquals(entries(), other.entries())\n }\n\n override fun forEach(body: (String, List) -> Unit): Unit = body(name, values)\n\n override fun get(name: String): String? =\n if (name.equals(this.name, caseInsensitiveName)) values.firstOrNull() else null\n\n override fun contains(name: String): Boolean = name.equals(this.name, caseInsensitiveName)\n\n override fun contains(name: String, value: String): Boolean =\n name.equals(this.name, caseInsensitiveName) && values.contains(value)\n}\n\n@InternalAPI\n@Suppress(\"KDocMissingDocumentation\")\npublic open class StringValuesImpl(\n override val caseInsensitiveName: Boolean = false,\n values: Map> = emptyMap()\n) : StringValues {\n\n protected val values: Map> by lazy {\n if (caseInsensitiveName) caseInsensitiveMap>().apply { putAll(values) } else values.toMap()\n }\n\n override operator fun get(name: String): String? = listForKey(name)?.firstOrNull()\n\n override fun getAll(name: String): List? = listForKey(name)\n\n override operator fun contains(name: String): Boolean = listForKey(name) != null\n\n override fun contains(name: String, value: String): Boolean = listForKey(name)?.contains(value) ?: false\n\n override fun names(): Set = values.keys.unmodifiable()\n\n override fun isEmpty(): Boolean = values.isEmpty()\n\n override fun entries(): Set>> = values.entries.unmodifiable()\n\n override fun forEach(body: (String, List) -> Unit) {\n for ((key, value) in values) body(key, value)\n }\n\n private fun listForKey(name: String): List? = values[name]\n\n override fun toString(): String = \"StringValues(case=${!caseInsensitiveName}) ${entries()}\"\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is StringValues) return false\n if (caseInsensitiveName != other.caseInsensitiveName) return false\n return entriesEquals(entries(), other.entries())\n }\n\n override fun hashCode(): Int = entriesHashCode(entries(), 31 * caseInsensitiveName.hashCode())\n}\n\n@InternalAPI\n@Suppress(\"KDocMissingDocumentation\")\npublic open class StringValuesBuilder(public val caseInsensitiveName: Boolean = false, size: Int = 8) {\n protected val values: MutableMap> =\n if (caseInsensitiveName) caseInsensitiveMap() else LinkedHashMap(size)\n\n protected var built: Boolean = false\n\n public fun getAll(name: String): List? = values[name]\n\n public operator fun contains(name: String): Boolean = name in values\n\n public fun contains(name: String, value: String): Boolean = values[name]?.contains(value) ?: false\n\n public fun names(): Set = values.keys\n\n public fun isEmpty(): Boolean = values.isEmpty()\n\n public fun entries(): Set>> = values.entries.unmodifiable()\n\n public operator fun set(name: String, value: String) {\n validateValue(value)\n val list = ensureListForKey(name, 1)\n list.clear()\n list.add(value)\n }\n\n public operator fun get(name: String): String? = getAll(name)?.firstOrNull()\n\n public fun append(name: String, value: String) {\n validateValue(value)\n ensureListForKey(name, 1).add(value)\n }\n\n public fun appendAll(stringValues: StringValues) {\n stringValues.forEach { name, values ->\n appendAll(name, values)\n }\n }\n\n public fun appendMissing(stringValues: StringValues) {\n stringValues.forEach { name, values ->\n appendMissing(name, values)\n }\n }\n\n public fun appendAll(name: String, values: Iterable) {\n ensureListForKey(name, (values as? Collection)?.size ?: 2).let { list ->\n values.forEach { value ->\n validateValue(value)\n list.add(value)\n }\n }\n }\n\n public fun appendMissing(name: String, values: Iterable) {\n val existing = this.values[name]?.toSet() ?: emptySet()\n\n appendAll(name, values.filter { it !in existing })\n }\n\n public fun remove(name: String) {\n values.remove(name)\n }\n\n public fun removeKeysWithNoEntries() {\n for ((k, _) in values.filter { it.value.isEmpty() }) {\n remove(k)\n }\n }\n\n public fun remove(name: String, value: String): Boolean = values[name]?.remove(value) ?: false\n\n public fun clear() {\n values.clear()\n }\n\n public open fun build(): StringValues {\n require(!built) { \"ValueMapBuilder can only build a single ValueMap\" }\n built = true\n return StringValuesImpl(caseInsensitiveName, values)\n }\n\n protected open fun validateName(name: String) {\n }\n\n protected open fun validateValue(value: String) {\n }\n\n private fun ensureListForKey(name: String, size: Int): MutableList {\n if (built) {\n throw IllegalStateException(\"Cannot modify a builder when final structure has already been built\")\n }\n\n return values[name] ?: ArrayList(size).also { validateName(name); values[name] = it }\n }\n}\n\n/**\n * Build an instance of [StringValues] from a vararg list of pairs\n */\npublic fun valuesOf(vararg pairs: Pair>, caseInsensitiveKey: Boolean = false): StringValues {\n return StringValuesImpl(caseInsensitiveKey, pairs.asList().toMap())\n}\n\n/**\n * Build an instance of [StringValues] from a single pair\n */\npublic fun valuesOf(name: String, value: String, caseInsensitiveKey: Boolean = false): StringValues {\n return StringValuesSingleImpl(caseInsensitiveKey, name, listOf(value))\n}\n\n/**\n * Build an instance of [StringValues] with a single [name] and multiple [values]\n */\npublic fun valuesOf(name: String, values: List, caseInsensitiveKey: Boolean = false): StringValues {\n return StringValuesSingleImpl(caseInsensitiveKey, name, values)\n}\n\n/**\n * Build an empty [StringValues] instance.\n */\npublic fun valuesOf(): StringValues = StringValues.Empty\n\n/**\n * Build an instance of [StringValues] from the specified [map]\n */\npublic fun valuesOf(map: Map>, caseInsensitiveKey: Boolean = false): StringValues {\n val size = map.size\n if (size == 1) {\n val entry = map.entries.single()\n return StringValuesSingleImpl(caseInsensitiveKey, entry.key, entry.value.toList())\n }\n val values: MutableMap> =\n if (caseInsensitiveKey) caseInsensitiveMap() else LinkedHashMap(size)\n map.entries.forEach { values.put(it.key, it.value.toList()) }\n return StringValuesImpl(caseInsensitiveKey, values)\n}\n\n/**\n * Copy values to a new independent map\n */\npublic fun StringValues.toMap(): Map> =\n entries().associateByTo(LinkedHashMap(), { it.key }, { it.value.toList() })\n\n/**\n * Copy values to a list of pairs\n */\npublic fun StringValues.flattenEntries(): List> = entries().flatMap { e ->\n e.value.map { e.key to it }\n}\n\n/**\n * Invoke [block] function for every value pair\n */\npublic fun StringValues.flattenForEach(block: (String, String) -> Unit): Unit = forEach { name, items ->\n items.forEach { block(name, it) }\n}\n\n/**\n * Create a new instance of [StringValues] filtered by the specified [predicate]\n * @param keepEmpty when `true` will keep empty lists otherwise keys with no values will be discarded\n */\npublic fun StringValues.filter(keepEmpty: Boolean = false, predicate: (String, String) -> Boolean): StringValues {\n val entries = entries()\n val values: MutableMap> =\n if (caseInsensitiveName) caseInsensitiveMap() else LinkedHashMap(entries.size)\n\n entries.forEach { entry ->\n val list = entry.value.filterTo(ArrayList(entry.value.size)) { predicate(entry.key, it) }\n if (keepEmpty || list.isNotEmpty()) {\n values.put(entry.key, list)\n }\n }\n\n return StringValuesImpl(caseInsensitiveName, values)\n}\n\n/**\n * Append values from [source] filtering values by the specified [predicate]\n * @param keepEmpty when `true` will keep empty lists otherwise keys with no values will be discarded\n */\npublic fun StringValuesBuilder.appendFiltered(\n source: StringValues,\n keepEmpty: Boolean = false,\n predicate: (String, String) -> Boolean\n) {\n source.forEach { name, value ->\n val list = value.filterTo(ArrayList(value.size)) { predicate(name, it) }\n if (keepEmpty || list.isNotEmpty()) {\n appendAll(name, list)\n }\n }\n}\n\n/**\n * Append all values from the specified [builder]\n */\npublic fun StringValuesBuilder.appendAll(builder: StringValuesBuilder): StringValuesBuilder = apply {\n builder.entries().forEach { (name, values) ->\n appendAll(name, values)\n }\n}\n\nprivate fun entriesEquals(a: Set>>, b: Set>>): Boolean {\n return a == b\n}\n\nprivate fun entriesHashCode(entries: Set>>, seed: Int): Int {\n return seed * 31 + entries.hashCode()\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.cio\n\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.core.*\nimport kotlin.contracts.*\n\n/**\n * Convert [ByteReadChannel] to [ByteArray]\n */\npublic suspend fun ByteReadChannel.toByteArray(limit: Int = Int.MAX_VALUE): ByteArray =\n readRemaining(limit.toLong()).readBytes()\n\n/**\n * Executes [block] on [ByteWriteChannel] and close it down correctly whether an exception\n */\npublic inline fun ByteWriteChannel.use(block: ByteWriteChannel.() -> Unit) {\n contract {\n callsInPlace(block, InvocationKind.EXACTLY_ONCE)\n }\n\n try {\n block()\n } catch (cause: Throwable) {\n close(cause)\n throw cause\n } finally {\n close()\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\n@file:Suppress(\"KDocMissingDocumentation\")\n\npackage io.ktor.util\n\n@InternalAPI\npublic expect class Lock() {\n public fun lock()\n public fun unlock()\n\n public fun close()\n}\n\n@InternalAPI\npublic inline fun Lock.withLock(crossinline block: () -> R): R {\n try {\n lock()\n return block()\n } finally {\n unlock()\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.collections\n\nimport io.ktor.util.*\n\n@InternalAPI\npublic open class ConcurrentCollection(\n private val delegate: MutableCollection,\n private val lock: Lock\n) : MutableCollection {\n\n override val size: Int get() = lock.withLock {\n delegate.size\n }\n\n override fun contains(element: E): Boolean = lock.withLock {\n delegate.contains(element)\n }\n\n override fun containsAll(elements: Collection): Boolean = lock.withLock {\n delegate.containsAll(elements)\n }\n\n override fun isEmpty(): Boolean = lock.withLock {\n delegate.isEmpty()\n }\n\n override fun add(element: E): Boolean = lock.withLock {\n delegate.add(element)\n }\n\n override fun addAll(elements: Collection): Boolean = lock.withLock {\n delegate.addAll(elements)\n }\n\n override fun clear(): Unit = lock.withLock {\n delegate.clear()\n }\n\n override fun iterator(): MutableIterator = delegate.iterator()\n\n override fun remove(element: E): Boolean = lock.withLock {\n delegate.remove(element)\n }\n\n override fun removeAll(elements: Collection): Boolean = lock.withLock {\n delegate.removeAll(elements)\n }\n\n override fun retainAll(elements: Collection): Boolean = lock.withLock {\n delegate.retainAll(elements)\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.collections\n\nimport io.ktor.util.*\nimport io.ktor.util.collections.internal.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.concurrent.*\nimport kotlinx.atomicfu.locks.*\n\nprivate const val INITIAL_CAPACITY = 32\n\n@KtorExperimentalAPI\npublic class ConcurrentList : MutableList {\n private var data by shared(SharedList(INITIAL_CAPACITY))\n\n override var size: Int by shared(0)\n private set\n\n private val lock = SynchronizedObject()\n\n init {\n makeShared()\n }\n\n override fun hashCode(): Int = synchronized(lock) {\n return@synchronized fold(7) { state, current -> Hash.combine(state, current.hashCode()) }\n }\n\n override fun equals(other: Any?): Boolean = synchronized(lock) {\n if (other == null || other !is List<*> || other.size != size) {\n return@synchronized false\n }\n\n forEachIndexed { index, item ->\n if (other[index] != item) return@synchronized false\n }\n\n return@synchronized true\n }\n\n override fun toString(): String = synchronized(lock) {\n return@synchronized buildString {\n append('[')\n this@ConcurrentList.forEachIndexed { index, item ->\n append(\"$item\")\n\n if (index + 1 < size) {\n append(\", \")\n }\n }\n\n append(']')\n }\n }\n\n override fun contains(element: T): Boolean = indexOf(element) >= 0\n\n override fun containsAll(elements: Collection): Boolean = elements.all { contains(it) }\n\n override fun get(index: Int): T = synchronized(lock) {\n if (index >= size) {\n throw NoSuchElementException()\n }\n\n return data[index]!!\n }\n\n override fun indexOf(element: T): Int = synchronized(lock) {\n for (index in 0 until size) {\n if (data[index] == element) {\n return index\n }\n }\n\n return -1\n }\n\n override fun isEmpty(): Boolean = size == 0\n\n override fun lastIndexOf(element: T): Int = synchronized(lock) {\n for (index in size - 1 downTo 0) {\n if (data[index] == element) {\n return index\n }\n }\n\n return -1\n }\n\n override fun add(element: T): Boolean = synchronized(lock) {\n if (size >= data.size) {\n increaseCapacity()\n }\n\n data[size] = element\n size += 1\n return true\n }\n\n override fun add(index: Int, element: T) {\n reserve(index, 1)\n data[index] = element\n }\n\n override fun addAll(index: Int, elements: Collection): Boolean {\n reserve(index, elements.size)\n\n var current = index\n for (item in elements) {\n data[current] = item\n current += 1\n }\n\n return elements.isNotEmpty()\n }\n\n override fun addAll(elements: Collection): Boolean {\n elements.all { add(it) }\n return elements.isNotEmpty()\n }\n\n override fun clear(): Unit = synchronized(lock) {\n data = SharedList(INITIAL_CAPACITY)\n size = 0\n }\n\n override fun iterator(): MutableIterator = listIterator()\n\n override fun listIterator(): MutableListIterator = listIterator(0)\n\n override fun listIterator(index: Int): MutableListIterator = object : MutableListIterator {\n var current by shared(index)\n\n override fun hasNext(): Boolean = current < this@ConcurrentList.size\n\n override fun next(): T = this@ConcurrentList[current++]\n\n override fun remove() {\n removeAt(current - 1)\n current--\n }\n\n override fun hasPrevious(): Boolean = current > 0\n\n override fun nextIndex(): Int = current + 1\n\n override fun previous(): T = this@ConcurrentList[current--]\n\n override fun previousIndex(): Int = current - 1\n\n override fun add(element: T) {\n add(current, element)\n }\n\n override fun set(element: T) {\n this@ConcurrentList[current - 1] = element\n }\n }\n\n override fun subList(fromIndex: Int, toIndex: Int): MutableList =\n ConcurrentListSlice(this, fromIndex, toIndex)\n\n override fun remove(element: T): Boolean = synchronized(lock) {\n val index = indexOf(element)\n if (index < 0) {\n return false\n }\n\n removeAt(index)\n return true\n }\n\n override fun removeAll(elements: Collection): Boolean {\n var result = false\n elements.forEach { result = remove(it) || result }\n return result\n }\n\n override fun removeAt(index: Int): T = synchronized(lock) {\n checkIndex(index)\n\n val old = data[index]\n data[index] = null\n\n sweep(index)\n return old!!\n }\n\n override fun retainAll(elements: Collection): Boolean = synchronized(lock) {\n var changed = false\n var firstNull = -1\n for (index in 0 until size) {\n val item = data[index]!!\n\n if (item !in elements) {\n changed = true\n data[index] = null\n\n if (firstNull < 0) {\n firstNull = index\n }\n }\n }\n\n if (changed) {\n sweep(firstNull)\n }\n\n return changed\n }\n\n override fun set(index: Int, element: T): T = synchronized(lock) {\n checkIndex(index)\n val old = data[index]\n data[index] = element\n\n return old ?: element\n }\n\n private fun checkIndex(index: Int) {\n if (index >= size || index < 0) throw IndexOutOfBoundsException()\n }\n\n private fun increaseCapacity(targetCapacity: Int = data.size * 2) {\n val newData = SharedList(targetCapacity)\n for (index in 0 until data.size) {\n newData[index] = data[index]\n }\n\n data = newData\n }\n\n private fun sweep(firstNull: Int) {\n var writePosition = firstNull\n\n for (index in writePosition + 1 until size) {\n if (data[index] == null) {\n continue\n }\n\n data[writePosition] = data[index]\n writePosition += 1\n }\n\n for (index in writePosition until size) {\n data[index] = null\n }\n\n size = writePosition\n }\n\n private fun reserve(index: Int, gapSize: Int) {\n val targetSize = gapSize + size\n while (data.size < targetSize) {\n increaseCapacity()\n }\n\n var readPosition = size - 1\n while (readPosition >= index) {\n data[readPosition + gapSize] = data[readPosition]\n readPosition -= 1\n }\n\n for (current in index until index + gapSize) {\n data[current] = null\n }\n\n size += gapSize\n }\n}\n",null,"/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.collections\n\nimport io.ktor.util.*\nimport io.ktor.util.collections.internal.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.concurrent.*\nimport kotlinx.atomicfu.*\n\nprivate const val INITIAL_CAPACITY = 32\nprivate const val MAX_LOAD_FACTOR = 0.5\nprivate const val UPSIZE_RATIO = 2\n\n/**\n * Ktor concurrent map implementation. Please do not use it.\n */\n@InternalAPI\npublic class ConcurrentMap(\n private val lock: Lock = Lock(),\n initialCapacity: Int = INITIAL_CAPACITY\n) : MutableMap {\n private var table by shared(SharedList>>(initialCapacity))\n private var insertionOrder by shared(SharedForwardList>())\n\n private val _size = atomic(0)\n private val loadFactor: Float get() = _size.value.toFloat() / table.size\n\n public constructor(lock: Lock, map: Map) : this(lock, map.size) {\n putAll(map)\n }\n\n init {\n makeShared()\n }\n\n override val size: Int\n get() = _size.value\n\n override fun containsKey(key: Key): Boolean = get(key) != null\n\n override fun containsValue(value: Value): Boolean = locked {\n for (bucket in table) {\n bucket ?: continue\n\n for (item in bucket) {\n if (item.value == value) {\n return@locked true\n }\n }\n }\n\n return@locked false\n }\n\n override fun get(key: Key): Value? = locked {\n val bucket = findBucket(key) ?: return@locked null\n val item = bucket.find { it.key == key }\n\n return@locked item?.value\n }\n\n override fun isEmpty(): Boolean = size == 0\n\n override fun clear(): Unit = locked {\n table = SharedList(INITIAL_CAPACITY)\n insertionOrder = SharedForwardList()\n }\n\n override fun put(key: Key, value: Value): Value? = locked {\n if (loadFactor > MAX_LOAD_FACTOR) {\n upsize()\n }\n\n val bucket = findOrCreateBucket(key)\n val item = bucket.find { it.key == key }\n\n if (item != null) {\n val oldValue = item.value\n item.value = value\n return@locked oldValue\n }\n\n val mapNode = MapNode(key, value)\n val node = insertionOrder.appendLast(mapNode)\n\n mapNode.backReference = node\n bucket.appendFirst(mapNode)\n\n _size.incrementAndGet()\n return@locked null\n }\n\n override fun putAll(from: Map) {\n for ((key, value) in from) {\n put(key, value)\n }\n }\n\n override fun remove(key: Key): Value? = locked {\n val bucket = findBucket(key) ?: return@locked null\n\n with(bucket.iterator()) {\n while (hasNext()) {\n val item = next()\n\n if (item.key == key) {\n val result = item.value\n _size.decrementAndGet()\n\n item.remove()\n remove()\n\n return@locked result\n }\n }\n }\n\n return@locked null\n }\n\n override val entries: MutableSet>\n get() = MutableMapEntries(this)\n\n override val keys: MutableSet\n get() = ConcurrentMapKeys(this)\n\n override val values: MutableCollection\n get() = ConcurrentMapValues(this)\n\n override fun equals(other: Any?): Boolean = locked {\n if (other == null || other !is Map<*, *> || other.size != size) {\n return@locked false\n }\n\n for ((key, value) in other.entries) {\n if (get(key) != value) {\n return@locked false\n }\n }\n\n return@locked true\n }\n\n override fun hashCode(): Int = locked {\n var current = 7\n for ((key, value) in entries) {\n current = Hash.combine(key.hashCode(), value.hashCode(), current)\n }\n\n return@locked current\n }\n\n override fun toString(): String = locked {\n return@locked buildString {\n append(\"{\")\n this@ConcurrentMap.entries.forEachIndexed { index, (key, value) ->\n append(\"$key=$value\")\n\n if (index != size - 1) {\n append(\", \")\n }\n }\n\n append(\"}\")\n }\n }\n\n internal fun iterator(): MutableIterator> =\n object : MutableIterator> {\n private var current: ForwardListNode>? by shared(insertionOrder.first())\n private val previous: ForwardListNode>? get() = current?.previous\n\n init {\n makeShared()\n }\n\n override fun hasNext(): Boolean = current != null\n\n override fun next(): MutableMap.MutableEntry {\n val result = current!!.item!!\n current = current?.next\n return result\n }\n\n override fun remove() {\n val item = previous!!.item!!\n remove(item.key)\n }\n }\n\n /**\n * Perform concurrent insert.\n */\n @Deprecated(\n \"This is accidentally does insert instead of get. Use computeIfAbsent or getOrElse instead.\",\n level = DeprecationLevel.ERROR\n )\n public fun getOrDefault(key: Key, block: () -> Value): Value = lock.withLock {\n return@withLock computeIfAbsent(key, block)\n }\n\n /**\n * Computes [block] and inserts result in map. The [block] will be evaluated at most once.\n */\n public fun computeIfAbsent(key: Key, block: () -> Value): Value = locked {\n val value = get(key)\n if (value != null) {\n return@locked value\n }\n val newValue = block()\n put(key, newValue)\n\n return@locked newValue\n }\n\n private fun findBucket(key: Key): SharedForwardList>? {\n val bucketId = key.hashCode() and (table.size - 1)\n return table[bucketId]\n }\n\n private fun findOrCreateBucket(key: Key): SharedForwardList> {\n val bucketId = key.hashCode() and (table.size - 1)\n val result = table[bucketId]\n\n if (result == null) {\n val bucket = SharedForwardList>()\n table[bucketId] = bucket\n return bucket\n }\n\n return result\n }\n\n private fun upsize() {\n val newTable = ConcurrentMap(initialCapacity = table.size * UPSIZE_RATIO)\n newTable.putAll(this)\n\n table = newTable.table\n }\n\n private fun locked(block: () -> T): T = lock.withLock { block() }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.collections.internal\n\nimport kotlin.math.*\n\ninternal class ConcurrentListSlice(\n private val origin: MutableList,\n private val fromIndex: Int,\n private val toIndex: Int\n) : AbstractMutableList() {\n override val size: Int\n get() = min(origin.size, toIndex - fromIndex)\n\n override fun get(index: Int): T {\n return origin[fromIndex + index]\n }\n\n override fun add(index: Int, element: T) {\n error(\"Unsupported append in ConcurrentList slice\")\n }\n\n override fun removeAt(index: Int): T {\n error(\"Unsupported remove in ConcurrentList slice\")\n }\n\n override fun set(index: Int, element: T): T = origin.set(fromIndex + index, element)\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.collections.internal\n\nimport io.ktor.util.collections.*\nimport io.ktor.utils.io.*\n\ninternal class ConcurrentMapKeys(\n private val delegate: ConcurrentMap\n) : MutableSet {\n\n init {\n makeShared()\n }\n\n override fun add(element: Key): Boolean = throw UnsupportedOperationException()\n\n override fun addAll(elements: Collection): Boolean {\n throw UnsupportedOperationException()\n }\n\n override fun clear() {\n delegate.clear()\n }\n\n override fun iterator(): MutableIterator = object : MutableIterator {\n private val delegateIterator: MutableIterator> = delegate.iterator()\n\n init {\n makeShared()\n }\n\n override fun hasNext(): Boolean = delegateIterator.hasNext()\n\n override fun next(): Key = delegateIterator.next().key\n\n override fun remove() {\n delegateIterator.remove()\n }\n }\n\n override fun remove(element: Key): Boolean = delegate.remove(element) != null\n\n override fun removeAll(elements: Collection): Boolean {\n var modified = false\n elements.forEach {\n modified = remove(it) || modified\n }\n\n return modified\n }\n\n override fun retainAll(elements: Collection): Boolean {\n var modified = false\n\n with(iterator()) {\n while (hasNext()) {\n if (next() in elements) {\n continue\n }\n\n modified = true\n remove()\n }\n }\n\n return modified\n }\n\n override val size: Int\n get() = delegate.size\n\n override fun contains(element: Key): Boolean = delegate.contains(element)\n\n override fun containsAll(elements: Collection): Boolean = elements.all { contains(it) }\n\n override fun isEmpty(): Boolean = size == 0\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.collections.internal\n\nimport io.ktor.util.collections.*\nimport io.ktor.utils.io.*\n\ninternal class ConcurrentMapValues(\n private val delegate: ConcurrentMap\n) : MutableCollection {\n\n init {\n makeShared()\n }\n\n override val size: Int\n get() = delegate.size\n\n override fun contains(element: Value): Boolean = delegate.containsValue(element)\n\n override fun containsAll(elements: Collection): Boolean = elements.all { contains(it) }\n\n override fun isEmpty(): Boolean = delegate.size == 0\n\n override fun add(element: Value): Boolean {\n throw UnsupportedOperationException()\n }\n\n override fun addAll(elements: Collection): Boolean {\n throw UnsupportedOperationException()\n }\n\n override fun clear() {\n delegate.clear()\n }\n\n override fun iterator(): MutableIterator = object : MutableIterator {\n val delegateIterator = delegate.iterator()\n\n init {\n makeShared()\n }\n\n override fun hasNext(): Boolean = delegateIterator.hasNext()\n\n override fun next(): Value = delegateIterator.next().value\n\n override fun remove() {\n delegateIterator.remove()\n }\n }\n\n override fun remove(element: Value): Boolean {\n var modified = false\n\n with(iterator()) {\n while (hasNext()) {\n if (next() == element) {\n continue\n }\n\n modified = true\n remove()\n }\n }\n\n return modified\n }\n\n override fun removeAll(elements: Collection): Boolean {\n var modified = false\n\n with(iterator()) {\n while (hasNext()) {\n if (next() !in elements) {\n continue\n }\n\n modified = true\n remove()\n }\n }\n\n return modified\n }\n\n override fun retainAll(elements: Collection): Boolean {\n error(\"Common concurrent map doesn't support this operation yet.\")\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.collections.internal\n\nimport io.ktor.utils.io.concurrent.*\n\ninternal class ForwardListIterator(head: ForwardListNode) : MutableIterator {\n var previous by shared?>(head)\n val current: ForwardListNode? get() = previous?.next\n\n override fun hasNext(): Boolean = current?.item != null\n\n override fun next(): T {\n previous = current\n return previous?.item ?: throw NoSuchElementException()\n }\n\n override fun remove() {\n previous?.remove() ?: error(\"Fail to remove element before iteration\")\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.collections.internal\n\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.concurrent.*\n\ninternal class ForwardListNode(\n private val list: SharedForwardList,\n next: ForwardListNode?,\n val item: T?,\n previous: ForwardListNode?\n) {\n var next by shared(next)\n var previous: ForwardListNode? by shared(previous)\n\n init {\n makeShared()\n }\n\n fun insertAfter(value: T): ForwardListNode {\n val result = ForwardListNode(list, next, value, this)\n next = result\n return result\n }\n\n fun removeNext() {\n if (next == list.tail) {\n list.tail = this\n }\n\n next = next?.next\n next?.previous = this\n }\n\n fun remove() {\n previous!!.removeNext()\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.collections.internal\n\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.concurrent.*\n\ninternal class MapNode(override val key: Key, value: Value) : MutableMap.MutableEntry {\n internal var backReference: ForwardListNode>? by shared(null)\n override var value: Value by shared(value)\n\n val hash: Int = key.hashCode()\n\n init {\n makeShared()\n }\n\n override fun setValue(newValue: Value): Value {\n val result = value\n value = newValue\n return result\n }\n\n internal fun remove() {\n backReference!!.remove()\n backReference = null\n }\n\n override fun toString(): String = \"MapItem[$key, $value]\"\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.collections.internal\n\nimport io.ktor.util.collections.*\nimport io.ktor.utils.io.*\n\ninternal class MutableMapEntries(\n private val delegate: ConcurrentMap\n) : MutableSet> {\n\n init {\n makeShared()\n }\n\n override fun add(element: MutableMap.MutableEntry): Boolean =\n delegate.put(element.key, element.value) != element.value\n\n override fun addAll(elements: Collection>): Boolean {\n var result = false\n\n elements.forEach {\n result = add(it) || result\n }\n\n return result\n }\n\n override fun clear() {\n delegate.clear()\n }\n\n override fun iterator(): MutableIterator> =\n object : MutableIterator> {\n private val origin = delegate.iterator()\n override fun hasNext(): Boolean = origin.hasNext()\n\n override fun next(): MutableMap.MutableEntry = origin.next()\n\n override fun remove(): Unit = origin.remove()\n }\n\n override fun remove(element: MutableMap.MutableEntry): Boolean =\n delegate.remove(element.key) != null\n\n override fun removeAll(elements: Collection>): Boolean {\n var modified = false\n elements.forEach {\n modified = remove(it) || modified\n }\n\n return modified\n }\n\n override fun retainAll(elements: Collection>): Boolean {\n var modified = false\n with(iterator()) {\n while (hasNext()) {\n if (next() in elements) {\n continue\n }\n\n modified = true\n remove()\n }\n }\n\n return modified\n }\n\n override val size: Int\n get() = delegate.size\n\n override fun contains(element: MutableMap.MutableEntry): Boolean =\n delegate[element.key] == element.value\n\n override fun containsAll(elements: Collection>): Boolean =\n elements.all { contains(it) }\n\n override fun isEmpty(): Boolean = delegate.isEmpty()\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.collections.internal\n\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.concurrent.*\n\ninternal class SharedForwardList : MutableIterable {\n internal var head: ForwardListNode? by shared(null)\n internal var tail by shared(head)\n\n init {\n makeShared()\n\n head = ForwardListNode(this, null, null, null)\n tail = head\n }\n\n fun first(): ForwardListNode? {\n return head!!.next\n }\n\n fun last(): ForwardListNode? {\n if (head == tail) {\n return null\n }\n\n return tail\n }\n\n fun appendFirst(value: T): ForwardListNode {\n val newValue = head!!.insertAfter(value)\n if (head == tail) {\n tail = newValue\n }\n\n return newValue\n }\n\n fun appendLast(value: T): ForwardListNode {\n tail = tail!!.insertAfter(value)\n return tail!!\n }\n\n override fun iterator(): MutableIterator =\n ForwardListIterator(head!!)\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.date\n\nimport kotlin.time.*\n\n/**\n * According to:\n * http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/time.h.html\n */\n\n/**\n * Day of week\n * [value] is 3 letter shortcut\n */\n@Suppress(\"KDocMissingDocumentation\")\npublic enum class WeekDay(public val value: String) {\n MONDAY(\"Mon\"),\n TUESDAY(\"Tue\"),\n WEDNESDAY(\"Wed\"),\n THURSDAY(\"Thu\"),\n FRIDAY(\"Fri\"),\n SATURDAY(\"Sat\"),\n SUNDAY(\"Sun\");\n\n public companion object {\n /**\n * Lookup an instance by [ordinal]\n */\n public fun from(ordinal: Int): WeekDay = values()[ordinal]\n\n /**\n * Lookup an instance by short week day name [WeekDay.value]\n */\n public fun from(value: String): WeekDay = values().find { it.value == value }\n ?: error(\"Invalid day of week: $value\")\n }\n}\n\n/**\n * Month\n * [value] is 3 letter shortcut\n */\n@Suppress(\"KDocMissingDocumentation\")\npublic enum class Month(public val value: String) {\n JANUARY(\"Jan\"),\n FEBRUARY(\"Feb\"),\n MARCH(\"Mar\"),\n APRIL(\"Apr\"),\n MAY(\"May\"),\n JUNE(\"Jun\"),\n JULY(\"Jul\"),\n AUGUST(\"Aug\"),\n SEPTEMBER(\"Sep\"),\n OCTOBER(\"Oct\"),\n NOVEMBER(\"Nov\"),\n DECEMBER(\"Dec\");\n\n public companion object {\n /**\n * Lookup an instance by [ordinal]\n */\n public fun from(ordinal: Int): Month = values()[ordinal]\n /**\n * Lookup an instance by short month name [Month.value]\n */\n public fun from(value: String): Month = values().find { it.value == value }\n ?: error(\"Invalid month: $value\")\n }\n}\n\n/**\n * Date in GMT timezone\n *\n * @property seconds: seconds from 0 to 60(last is for leap second)\n * @property minutes: minutes from 0 to 59\n * @property hours: hours from 0 to 23\n * @property dayOfWeek an instance of the corresponding day of week\n * @property dayOfMonth: day of month from 1 to 31\n * @property dayOfYear: day of year from 1 to 366\n * @property month an instance of the corresponding month\n * @property year: year in common era(CE: https://en.wikipedia.org/wiki/Common_Era)\n *\n * @property timestamp is a number of epoch milliseconds\n */\npublic data class GMTDate internal constructor(\n val seconds: Int,\n val minutes: Int,\n val hours: Int,\n\n val dayOfWeek: WeekDay,\n val dayOfMonth: Int,\n val dayOfYear: Int,\n\n val month: Month,\n val year: Int,\n\n val timestamp: Long\n) : Comparable {\n\n override fun compareTo(other: GMTDate): Int = timestamp.compareTo(other.timestamp)\n\n public companion object {\n /**\n * An instance of [GMTDate] corresponding to the epoch beginning\n */\n public val START: GMTDate = GMTDate(0)\n }\n}\n\n/**\n * Create new gmt date from the [timestamp].\n * @param timestamp is a number of epoch milliseconds (it is `now` by default).\n */\n@Suppress(\"FunctionName\")\npublic expect fun GMTDate(timestamp: Long? = null): GMTDate\n\n/**\n * Create an instance of [GMTDate] from the specified date/time components\n */\n@Suppress(\"FunctionName\")\npublic expect fun GMTDate(seconds: Int, minutes: Int, hours: Int, dayOfMonth: Int, month: Month, year: Int): GMTDate\n\n/**\n * Adds the specified number of [milliseconds]\n */\npublic operator fun GMTDate.plus(milliseconds: Long): GMTDate = GMTDate(timestamp + milliseconds)\n\n/**\n * Subtracts the specified number of [milliseconds]\n */\npublic operator fun GMTDate.minus(milliseconds: Long): GMTDate = GMTDate(timestamp - milliseconds)\n\n/**\n * Adds the specified [duration]\n */\n@ExperimentalTime\npublic operator fun GMTDate.plus(duration: Duration): GMTDate = GMTDate(timestamp + duration.toLongMilliseconds())\n\n/**\n * Subtracts the specified [duration]\n */\n@ExperimentalTime\npublic operator fun GMTDate.minus(duration: Duration): GMTDate = GMTDate(timestamp - duration.toLongMilliseconds())\n\n/**\n * Truncate to seconds by discarding sub-second part\n */\npublic fun GMTDate.truncateToSeconds(): GMTDate = GMTDate(seconds, minutes, hours, dayOfMonth, month, year)\n\n/**\n * Gets current system time in milliseconds since certain moment in the past, only delta between two subsequent calls makes sense.\n */\npublic expect fun getTimeMillis(): Long\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.collections.internal\n\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\nimport kotlinx.atomicfu.*\n\n@InternalAPI\ninternal class SharedList(override val size: Int) : List {\n private val data: AtomicArray = atomicArrayOfNulls(size)\n\n init {\n makeShared()\n }\n\n operator fun set(index: Int, value: T?) {\n data[index].value = value\n }\n\n override fun contains(element: T?): Boolean {\n for (index in 0 until size) {\n if (data[index].value == element) {\n return true\n }\n }\n\n return false\n }\n\n override fun containsAll(elements: Collection): Boolean = elements.all { contains(it) }\n\n override fun get(index: Int): T? = data[index].value\n\n override fun indexOf(element: T?): Int {\n for (index in 0 until size) {\n if (data[index].value == element) {\n return index\n }\n }\n\n return -1\n }\n\n override fun isEmpty(): Boolean = size == 0\n\n override fun iterator(): Iterator = listIterator(0)\n\n override fun lastIndexOf(element: T?): Int = asReversed().indexOf(element)\n\n override fun listIterator(): ListIterator = listIterator(0)\n\n override fun listIterator(index: Int): ListIterator = object : ListIterator {\n private val currentIndex = atomic(index)\n\n init {\n makeShared()\n }\n\n override fun hasNext(): Boolean = currentIndex.value < size\n\n override fun hasPrevious(): Boolean = currentIndex.value > 0\n\n override fun next(): T? {\n check(hasNext())\n val current = currentIndex.getAndIncrement()\n return data[current].value\n }\n\n override fun nextIndex(): Int {\n check(hasNext())\n return currentIndex.value + 1\n }\n\n override fun previous(): T? {\n check(hasPrevious())\n val current = currentIndex.getAndDecrement()\n return data[current].value\n }\n\n override fun previousIndex(): Int {\n check(hasPrevious())\n return currentIndex.value - 1\n }\n }\n\n override fun subList(fromIndex: Int, toIndex: Int): List {\n val result = SharedList(toIndex - fromIndex)\n\n for (index in fromIndex until toIndex) {\n result[index - fromIndex] = data[index].value\n }\n\n return result\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.pipeline\n\nimport kotlin.coroutines.*\n\n/**\n * Represents running execution of a pipeline\n * @param context object representing context in which pipeline executes\n * @param interceptors list of interceptors to execute\n * @param subject object representing subject that goes along the pipeline\n */\n@ContextDsl\ninternal class DebugPipelineContext constructor(\n override val context: TContext,\n private val interceptors: List>,\n subject: TSubject,\n override val coroutineContext: CoroutineContext\n) : PipelineContext,\n @Suppress(\"DEPRECATION\")\n PipelineExecutor {\n\n /**\n * Subject of this pipeline execution\n */\n override var subject: TSubject = subject\n private set\n\n private var index = 0\n\n /**\n * Finishes current pipeline execution\n */\n override fun finish() {\n index = -1\n }\n\n /**\n * Continues execution of the pipeline with the given subject\n */\n override suspend fun proceedWith(subject: TSubject): TSubject {\n this.subject = subject\n return proceed()\n }\n\n /**\n * Continues execution of the pipeline with the same subject\n */\n override suspend fun proceed(): TSubject {\n val index = index\n if (index < 0) return subject\n\n if (index >= interceptors.size) {\n finish()\n return subject\n }\n\n return proceedLoop()\n }\n\n override suspend fun execute(initial: TSubject): TSubject {\n index = 0\n subject = initial\n return proceed()\n }\n\n private suspend fun proceedLoop(): TSubject {\n do {\n val index = index\n if (index == -1) {\n break\n }\n val interceptors = interceptors\n if (index >= interceptors.size) {\n finish()\n break\n }\n val executeInterceptor = interceptors[index]\n this.index = index + 1\n executeInterceptor.invoke(this, subject)\n } while (true)\n\n return subject\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.pipeline\n\nimport io.ktor.util.collections.*\nimport io.ktor.utils.io.concurrent.*\n\ninternal class PhaseContent(\n val phase: PipelinePhase,\n val relation: PipelinePhaseRelation,\n interceptors: MutableList>\n) {\n private var interceptors: MutableList> by shared(interceptors)\n\n @Suppress(\"UNCHECKED_CAST\")\n constructor(\n phase: PipelinePhase,\n relation: PipelinePhaseRelation\n ) : this(phase, relation, SharedArrayList as MutableList>) {\n check(SharedArrayList.isEmpty()) { \"The shared empty array list has been modified\" }\n }\n\n var shared: Boolean by shared(true)\n\n val isEmpty: Boolean get() = interceptors.isEmpty()\n val size: Int get() = interceptors.size\n\n fun addInterceptor(interceptor: PipelineInterceptor) {\n if (shared) {\n copyInterceptors()\n }\n\n interceptors.add(interceptor)\n }\n\n fun addTo(destination: MutableList>) {\n val interceptors = interceptors\n\n if (destination is ArrayList) {\n destination.ensureCapacity(destination.size + interceptors.size)\n }\n\n for (index in 0 until interceptors.size) {\n destination.add(interceptors[index])\n }\n }\n\n fun addTo(destination: PhaseContent) {\n if (isEmpty) return\n\n if (destination.isEmpty) {\n destination.interceptors = sharedInterceptors()\n destination.shared = true\n return\n }\n\n if (destination.shared) {\n destination.copyInterceptors()\n }\n\n addTo(destination.interceptors)\n }\n\n fun sharedInterceptors(): MutableList> {\n shared = true\n return interceptors\n }\n\n fun copiedInterceptors(): MutableList> =\n sharedListOf>().apply {\n addAll(interceptors)\n }\n\n override fun toString(): String = \"Phase `${phase.name}`, $size handlers\"\n\n private fun copyInterceptors() {\n interceptors = copiedInterceptors()\n shared = false\n }\n\n companion object {\n val SharedArrayList: MutableList = sharedListOf()\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.date\n\nimport io.ktor.util.*\n\n/**\n * Build [GMTDate] parser using [pattern] string.\n *\n * Pattern string format:\n * | Unit | pattern char | Description |\n * | -------- | ------------ | ---------------------------------------------------- |\n * | Seconds | s | parse seconds 0 to 60 |\n * | Minutes | m | parse minutes 0 to 60 |\n * | Hours | h | parse hours 0 to 23 |\n * | Month | M | parse month from Jan to Dec(see [Month] for details) |\n * | Year | Y | parse year |\n * | Any char | * | Match any character |\n */\n@InternalAPI\npublic class GMTDateParser(private val pattern: String) {\n init {\n check(pattern.isNotEmpty()) { \"Date parser pattern shouldn't be empty.\" }\n }\n\n /**\n * Parse [GMTDate] from [dateString] using [pattern].\n */\n public fun parse(dateString: String): GMTDate {\n val builder = GMTDateBuilder()\n\n var start = 0\n var current = pattern[start]\n var chunkStart = 0\n var index = 1\n\n try {\n while (index < pattern.length) {\n if (pattern[index] == current) {\n index++\n continue\n }\n\n val chunkEnd = chunkStart + index - start\n builder.handleToken(current, dateString.substring(chunkStart, chunkEnd))\n\n chunkStart = chunkEnd\n start = index\n current = pattern[index]\n\n index++\n }\n\n if (chunkStart < dateString.length) {\n builder.handleToken(current, dateString.substring(chunkStart))\n }\n } catch (_: Throwable) {\n throw InvalidDateStringException(dateString, chunkStart, pattern)\n }\n\n return builder.build()\n }\n\n private fun GMTDateBuilder.handleToken(\n type: Char,\n chunk: String\n ): Unit = when (type) {\n SECONDS -> {\n seconds = chunk.toInt()\n }\n MINUTES -> {\n minutes = chunk.toInt()\n }\n HOURS -> {\n hours = chunk.toInt()\n }\n DAY_OF_MONTH -> {\n dayOfMonth = chunk.toInt()\n }\n MONTH -> {\n month = Month.from(chunk)\n }\n YEAR -> {\n year = chunk.toInt()\n }\n ZONE ->\n check(chunk == \"GMT\")\n ANY -> Unit\n else -> {\n check(chunk.all { it == type })\n }\n }\n\n public companion object {\n public const val SECONDS: Char = 's'\n public const val MINUTES: Char = 'm'\n public const val HOURS: Char = 'h'\n\n public const val DAY_OF_MONTH: Char = 'd'\n public const val MONTH: Char = 'M'\n public const val YEAR: Char = 'Y'\n\n public const val ZONE: Char = 'z'\n\n public const val ANY: Char = '*'\n }\n}\n\ninternal class GMTDateBuilder {\n var seconds: Int? = null\n var minutes: Int? = null\n var hours: Int? = null\n\n var dayOfMonth: Int? = null\n lateinit var month: Month\n var year: Int? = null\n\n public fun build(): GMTDate = GMTDate(seconds!!, minutes!!, hours!!, dayOfMonth!!, month, year!!)\n}\n\n/**\n * Thrown when the date string doesn't the string pattern.\n */\npublic class InvalidDateStringException(\n data: String,\n at: Int,\n pattern: String\n) : IllegalStateException(\"Failed to parse date string: \\\"${data}\\\" at index $at. Pattern: \\\"$pattern\\\"\")\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.pipeline\n\nimport io.ktor.util.*\nimport io.ktor.util.collections.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.concurrent.*\nimport kotlinx.atomicfu.*\nimport kotlin.coroutines.*\n\n/**\n * Represents an execution pipeline for asynchronous extensible computations\n */\npublic open class Pipeline(\n vararg phases: PipelinePhase\n) {\n /**\n * Provides common place to store pipeline attributes\n */\n public val attributes: Attributes = Attributes(concurrent = true)\n\n /**\n * Indicated if debug mode is enabled. In debug mode users will get more details in the stacktrace.\n */\n public open val developmentMode: Boolean = false\n\n private val phasesRaw: MutableList = sharedListOf(*phases)\n\n private var interceptorsQuantity by shared(0)\n\n /**\n * Phases of this pipeline\n */\n public val items: List\n get() = phasesRaw.map {\n it as? PipelinePhase ?: (it as? PhaseContent<*, *>)?.phase!!\n }\n\n /**\n * @return `true` if there are no interceptors installed regardless number of phases\n */\n @InternalAPI\n public val isEmpty: Boolean\n get() = interceptorsQuantity == 0\n\n private val _interceptors: AtomicRef.(TSubject) -> Unit>?> =\n atomic(null)\n\n private var interceptors: List>?\n get() = _interceptors.value\n set(value) {\n _interceptors.value = value\n }\n\n /**\n * share between pipelines/contexts\n */\n private var interceptorsListShared: Boolean by shared(false)\n\n /**\n * interceptors list is shared with pipeline phase content\n */\n private var interceptorsListSharedPhase: PipelinePhase? by shared(null)\n\n public constructor(\n phase: PipelinePhase,\n interceptors: List>\n ) : this(phase) {\n interceptors.forEach { intercept(phase, it) }\n }\n\n /**\n * Executes this pipeline in the given [context] and with the given [subject]\n */\n public suspend fun execute(context: TContext, subject: TSubject): TSubject =\n createContext(context, subject, coroutineContext).execute(subject)\n\n /**\n * Adds [phase] to the end of this pipeline\n */\n public fun addPhase(phase: PipelinePhase) {\n if (hasPhase(phase)) {\n return\n }\n\n phasesRaw.add(phase)\n }\n\n /**\n * Inserts [phase] after the [reference] phase\n */\n public fun insertPhaseAfter(reference: PipelinePhase, phase: PipelinePhase) {\n if (hasPhase(phase)) return\n\n val index = findPhaseIndex(reference)\n if (index == -1) {\n throw InvalidPhaseException(\"Phase $reference was not registered for this pipeline\")\n }\n\n phasesRaw.add(index + 1, PhaseContent(phase, PipelinePhaseRelation.After(reference)))\n }\n\n /**\n * Inserts [phase] before the [reference] phase\n */\n public fun insertPhaseBefore(reference: PipelinePhase, phase: PipelinePhase) {\n if (hasPhase(phase)) return\n\n val index = findPhaseIndex(reference)\n if (index == -1) {\n throw InvalidPhaseException(\"Phase $reference was not registered for this pipeline\")\n }\n\n phasesRaw.add(index, PhaseContent(phase, PipelinePhaseRelation.Before(reference)))\n }\n\n /**\n * Adds [block] to the [phase] of this pipeline\n */\n public fun intercept(phase: PipelinePhase, block: PipelineInterceptor) {\n val phaseContent = findPhase(phase)\n ?: throw InvalidPhaseException(\"Phase $phase was not registered for this pipeline\")\n\n if (tryAddToPhaseFastPath(phase, block)) {\n interceptorsQuantity++\n return\n }\n\n phaseContent.addInterceptor(block)\n interceptorsQuantity++\n resetInterceptorsList()\n\n afterIntercepted()\n }\n\n /**\n * Invoked after an interceptor has been installed\n */\n public open fun afterIntercepted() {\n }\n\n /**\n * Merges another pipeline into this pipeline, maintaining relative phases order\n */\n public fun merge(from: Pipeline) {\n if (fastPathMerge(from)) {\n return\n }\n\n if (interceptorsQuantity == 0) {\n setInterceptorsListFromAnotherPipeline(from)\n } else {\n resetInterceptorsList()\n }\n\n val fromPhases = from.phasesRaw\n for (index in 0..fromPhases.lastIndex) {\n val fromPhaseOrContent = fromPhases[index]\n\n val fromPhase =\n (fromPhaseOrContent as? PipelinePhase) ?: (fromPhaseOrContent as PhaseContent<*, *>).phase\n\n if (!hasPhase(fromPhase)) {\n val fromPhaseRelation = when {\n fromPhaseOrContent === fromPhase -> PipelinePhaseRelation.Last\n else -> (fromPhaseOrContent as PhaseContent<*, *>).relation\n }\n\n when (fromPhaseRelation) {\n is PipelinePhaseRelation.Last -> addPhase(fromPhase)\n is PipelinePhaseRelation.Before -> insertPhaseBefore(\n fromPhaseRelation.relativeTo,\n fromPhase\n )\n is PipelinePhaseRelation.After -> insertPhaseAfter(\n fromPhaseRelation.relativeTo,\n fromPhase\n )\n }\n }\n\n if (fromPhaseOrContent is PhaseContent<*, *> && !fromPhaseOrContent.isEmpty) {\n @Suppress(\"UNCHECKED_CAST\")\n fromPhaseOrContent as PhaseContent\n\n fromPhaseOrContent.addTo(findPhase(fromPhase)!!)\n interceptorsQuantity += fromPhaseOrContent.size\n }\n }\n }\n\n internal fun phaseInterceptors(phase: PipelinePhase): List> =\n findPhase(phase)?.sharedInterceptors() ?: emptyList()\n\n /**\n * For tests only\n */\n internal fun interceptorsForTests(): List> {\n return interceptors ?: cacheInterceptors()\n }\n\n @Suppress(\"DEPRECATION\")\n private fun createContext(\n context: TContext,\n subject: TSubject,\n coroutineContext: CoroutineContext\n ): PipelineExecutor =\n pipelineExecutorFor(context, sharedInterceptorsList(), subject, coroutineContext, developmentMode)\n\n private fun findPhase(phase: PipelinePhase): PhaseContent? {\n val phasesList = phasesRaw\n\n for (index in 0 until phasesList.size) {\n val current = phasesList[index]\n if (current === phase) {\n val content = PhaseContent(phase, PipelinePhaseRelation.Last)\n phasesList[index] = content\n return content\n }\n\n if (current is PhaseContent<*, *> && current.phase === phase) {\n @Suppress(\"UNCHECKED_CAST\")\n return current as PhaseContent\n }\n }\n\n return null\n }\n\n private fun findPhaseIndex(phase: PipelinePhase): Int {\n val phasesList = phasesRaw\n for (index in 0 until phasesList.size) {\n val current = phasesList[index]\n if (current === phase || (current is PhaseContent<*, *> && current.phase === phase)) {\n return index\n }\n }\n\n return -1\n }\n\n private fun hasPhase(phase: PipelinePhase): Boolean {\n val phasesList = phasesRaw\n for (index in 0 until phasesList.size) {\n val current = phasesList[index]\n if (current === phase || (current is PhaseContent<*, *> && current.phase === phase)) {\n return true\n }\n }\n\n return false\n }\n\n private fun cacheInterceptors(): List> {\n val interceptorsQuantity = interceptorsQuantity\n if (interceptorsQuantity == 0) {\n notSharedInterceptorsList(emptyList())\n return emptyList()\n }\n\n val phases = phasesRaw\n if (interceptorsQuantity == 1) {\n for (phaseIndex in 0..phases.lastIndex) {\n @Suppress(\"UNCHECKED_CAST\")\n val phaseContent =\n phases[phaseIndex] as? PhaseContent ?: continue\n\n if (!phaseContent.isEmpty) {\n val interceptors = phaseContent.sharedInterceptors()\n setInterceptorsListFromPhase(phaseContent)\n return interceptors\n }\n }\n }\n\n val destination: MutableList.(TSubject) -> Unit> = sharedListOf()\n for (phaseIndex in 0..phases.lastIndex) {\n @Suppress(\"UNCHECKED_CAST\")\n val phase = phases[phaseIndex] as? PhaseContent\n ?: continue\n\n phase.addTo(destination)\n }\n\n notSharedInterceptorsList(destination)\n return destination\n }\n\n private fun fastPathMerge(from: Pipeline): Boolean {\n if (from.phasesRaw.isEmpty()) {\n return true\n }\n\n if (phasesRaw.isNotEmpty()) {\n return false\n }\n\n val fromPhases = from.phasesRaw\n\n for (index in 0..fromPhases.lastIndex) {\n val fromPhaseOrContent = fromPhases[index]\n if (fromPhaseOrContent is PipelinePhase) {\n phasesRaw.add(fromPhaseOrContent)\n continue\n }\n\n if (fromPhaseOrContent is PhaseContent<*, *>) {\n @Suppress(\"UNCHECKED_CAST\")\n fromPhaseOrContent as PhaseContent\n\n phasesRaw.add(\n PhaseContent(\n fromPhaseOrContent.phase,\n fromPhaseOrContent.relation,\n fromPhaseOrContent.sharedInterceptors()\n )\n )\n continue\n }\n }\n\n interceptorsQuantity += from.interceptorsQuantity\n setInterceptorsListFromAnotherPipeline(from)\n return true\n }\n\n private fun sharedInterceptorsList(): List> {\n if (interceptors == null) {\n cacheInterceptors()\n }\n\n interceptorsListShared = true\n return interceptors!!\n }\n\n private fun resetInterceptorsList() {\n interceptors = null\n interceptorsListShared = false\n interceptorsListSharedPhase = null\n }\n\n private fun notSharedInterceptorsList(list: List>) {\n interceptors = list\n interceptorsListShared = false\n interceptorsListSharedPhase = null\n }\n\n private fun setInterceptorsListFromPhase(phaseContent: PhaseContent) {\n interceptors = phaseContent.sharedInterceptors()\n interceptorsListShared = false\n interceptorsListSharedPhase = phaseContent.phase\n }\n\n private fun setInterceptorsListFromAnotherPipeline(pipeline: Pipeline) {\n interceptors = pipeline.sharedInterceptorsList()\n interceptorsListShared = true\n interceptorsListSharedPhase = null\n }\n\n private fun tryAddToPhaseFastPath(phase: PipelinePhase, block: PipelineInterceptor): Boolean {\n val currentInterceptors = interceptors\n if (phasesRaw.isEmpty() || currentInterceptors == null) {\n return false\n }\n\n if (interceptorsListShared || currentInterceptors !is MutableList) {\n return false\n }\n\n if (interceptorsListSharedPhase == phase) {\n currentInterceptors.add(block)\n return true\n }\n\n if (phase == phasesRaw.last() || findPhaseIndex(phase) == phasesRaw.lastIndex) {\n findPhase(phase)!!.addInterceptor(block)\n currentInterceptors.add(block)\n return true\n }\n\n return false\n }\n}\n\n/**\n * Executes this pipeline\n */\n@Suppress(\"NOTHING_TO_INLINE\")\npublic suspend inline fun Pipeline.execute(\n context: TContext\n): Unit = execute(context, Unit)\n\n/**\n * Intercepts an untyped pipeline when the subject is of the given type\n */\npublic inline fun Pipeline<*, TContext>.intercept(\n phase: PipelinePhase,\n noinline block: suspend PipelineContext.(TSubject) -> Unit\n) {\n intercept(phase) interceptor@{ subject ->\n if (subject !is TSubject) return@interceptor\n\n @Suppress(\"UNCHECKED_CAST\")\n val reinterpret = this as? PipelineContext\n reinterpret?.block(subject)\n }\n}\n\n/**\n * Represents an interceptor type which is a suspend extension function for context\n */\npublic typealias PipelineInterceptor =\n suspend PipelineContext.(TSubject) -> Unit\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.pipeline\n\nimport kotlinx.coroutines.internal.*\nimport kotlin.coroutines.*\n\n/**\n * Recreates the exception with the original cause to keep exception structure.\n *\n * Notice: This method breaks the [exception] identity.\n */\ninternal fun recoverStackTraceBridge(exception: Throwable, continuation: Continuation<*>): Throwable = try {\n @Suppress(\"INVISIBLE_MEMBER\")\n recoverStackTrace(exception, continuation).withCause(exception.cause)\n} catch (_: Throwable) {\n exception\n}\n\ninternal expect fun Throwable.withCause(cause: Throwable?): Throwable\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.pipeline\n\n/**\n * Represents relations between pipeline phases\n */\ninternal sealed class PipelinePhaseRelation {\n /**\n * Given phase should be executed after [relativeTo] phase\n * @property relativeTo represents phases for relative positioning\n */\n class After(val relativeTo: PipelinePhase) : PipelinePhaseRelation()\n\n /**\n * Given phase should be executed before [relativeTo] phase\n * @property relativeTo represents phases for relative positioning\n */\n class Before(val relativeTo: PipelinePhase) : PipelinePhaseRelation()\n\n /**\n * Given phase should be executed last\n */\n object Last : PipelinePhaseRelation()\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.pipeline\n\ninternal object StackWalkingFailed {\n public fun failedToCaptureStackFrame() {\n error(\n \"Failed to capture stack frame. This is usually happens when a coroutine is running so\" +\n \" the frame stack is changing quickly \" +\n \"and the coroutine debug agent is unable to capture it concurrently.\" +\n \" You may retry running your test to see this particular trace.\"\n )\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.pipeline\n\nimport io.ktor.util.*\nimport kotlin.coroutines.*\n\n/**\n * This is a fake coroutine stack frame. It is reported by [SuspendFunctionGun] when the debug agent\n * is trying to probe jobs state by peeking frames when the coroutine is running at the same time\n * and the frames sequence is concurrently changed.\n */\ninternal object StackWalkingFailedFrame : CoroutineStackFrame, Continuation {\n override val callerFrame: CoroutineStackFrame? get() = null\n\n override fun getStackTraceElement(): StackTraceElement? {\n return createStackTraceElement(\n StackWalkingFailed::class,\n StackWalkingFailed::failedToCaptureStackFrame.name,\n \"StackWalkingFailed.kt\",\n 8\n )\n }\n\n override val context: CoroutineContext\n get() = EmptyCoroutineContext\n\n override fun resumeWith(result: Result) {\n StackWalkingFailed.failedToCaptureStackFrame()\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\nimport kotlin.coroutines.*\nimport kotlin.coroutines.intrinsics.*\n\n@InternalAPI\n@Suppress(\"NOTHING_TO_INLINE\")\ninternal actual inline fun (suspend R.(A) -> Unit).startCoroutineUninterceptedOrReturn3(\n receiver: R,\n arg: A,\n continuation: Continuation\n): Any? {\n val block: suspend () -> Unit = { this(receiver, arg) }\n return block.startCoroutineUninterceptedOrReturn(continuation)\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.pipeline\n\nimport io.ktor.util.*\nimport io.ktor.util.CoroutineStackFrame\nimport io.ktor.util.StackTraceElement\nimport io.ktor.utils.io.*\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\nimport kotlin.coroutines.intrinsics.*\n\ninternal class SuspendFunctionGun(\n initial: TSubject,\n override val context: TContext,\n private val blocks: List>\n) : PipelineContext,\n @Suppress(\"DEPRECATION\")\n PipelineExecutor,\n CoroutineScope {\n\n override val coroutineContext: CoroutineContext get() = continuation.context\n\n // Stack-walking state\n private var lastPeekedIndex: Int = -1\n\n // this is impossible to inline because of property name clash\n // between PipelineContext.context and Continuation.context\n private val continuation: Continuation = object : Continuation, CoroutineStackFrame {\n override val callerFrame: CoroutineStackFrame? get() = peekContinuation() as? CoroutineStackFrame\n\n override fun getStackTraceElement(): StackTraceElement? = null\n\n private fun peekContinuation(): Continuation<*>? {\n if (lastPeekedIndex < 0) return null\n\n when (val rootContinuation = rootContinuation) {\n null -> return null\n is Continuation<*> -> {\n --lastPeekedIndex\n return rootContinuation\n }\n is ArrayList<*> -> {\n if (rootContinuation.isEmpty()) {\n // If the list is empty, then lastPeekedIndex should be -1\n // and null should be already returned at the beginning of the function.\n // So if we are here and see that the list is empty but lastPeekedIndex wasn't -1,\n // then it means that element(s) has disappeared concurrently.\n return StackWalkingFailedFrame\n }\n @Suppress(\"UNCHECKED_CAST\")\n return peekContinuationFromList(rootContinuation as List>)\n }\n else -> return null\n }\n }\n\n private fun peekContinuationFromList(list: List>): Continuation<*>? {\n // this is only invoked by debug agent during job state probes\n // lastPeekedIndex is non-volatile intentionally\n // and the list of continuations is not synchronized too\n // so this is not guaranteed to work properly (may produce incorrect trace),\n // but the only we care is to not crash here\n // and simply return StackWalkingFailedFrame on any unfortunate accident\n\n try {\n val index = lastPeekedIndex\n val result = list.getOrNull(index) ?: return StackWalkingFailedFrame\n lastPeekedIndex = index - 1\n return result\n } catch (_: Throwable) {\n return StackWalkingFailedFrame\n }\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n override val context: CoroutineContext\n get() = when (val cont = rootContinuation) {\n null -> throw IllegalStateException(\"Not started\")\n is Continuation<*> -> cont.context\n is List<*> -> (cont as List>).last().context\n else -> throw IllegalStateException(\"Unexpected rootContinuation value\")\n }\n\n override fun resumeWith(result: Result) {\n if (result.isFailure) {\n resumeRootWith(Result.failure(result.exceptionOrNull()!!))\n return\n }\n\n loop(false)\n }\n }\n\n override var subject: TSubject = initial\n private set\n\n private var rootContinuation: Any? = null\n private var index = 0\n\n init {\n preventFreeze()\n }\n\n override fun finish() {\n index = blocks.size\n }\n\n override suspend fun proceed(): TSubject = suspendCoroutineUninterceptedOrReturn { continuation ->\n if (index == blocks.size) return@suspendCoroutineUninterceptedOrReturn subject\n\n addContinuation(continuation)\n\n if (loop(true)) {\n discardLastRootContinuation()\n return@suspendCoroutineUninterceptedOrReturn subject\n }\n\n COROUTINE_SUSPENDED\n }\n\n override suspend fun proceedWith(subject: TSubject): TSubject {\n this.subject = subject\n return proceed()\n }\n\n override suspend fun execute(initial: TSubject): TSubject {\n index = 0\n if (index == blocks.size) return initial\n subject = initial\n\n if (rootContinuation != null) throw IllegalStateException(\"Already started\")\n\n return proceed()\n }\n\n /**\n * @return `true` if it is possible to return result immediately\n */\n private fun loop(direct: Boolean): Boolean {\n do {\n val index = index // it is important to read index every time\n if (index == blocks.size) {\n if (!direct) {\n resumeRootWith(Result.success(subject))\n return false\n }\n\n return true\n }\n\n this@SuspendFunctionGun.index = index + 1 // it is important to increase it before function invocation\n val next = blocks[index]\n\n try {\n val me = this@SuspendFunctionGun\n\n val rc = next.startCoroutineUninterceptedOrReturn3(me, me.subject, me.continuation)\n if (rc === COROUTINE_SUSPENDED) {\n return false\n }\n } catch (cause: Throwable) {\n resumeRootWith(Result.failure(cause))\n return false\n }\n } while (true)\n }\n\n private fun resumeRootWith(result: Result) {\n val rootContinuation = rootContinuation\n\n @Suppress(\"UNCHECKED_CAST\")\n val next = when (rootContinuation) {\n null -> throw IllegalStateException(\"No more continuations to resume\")\n is Continuation<*> -> {\n this.rootContinuation = null\n lastPeekedIndex = -1\n rootContinuation\n }\n is ArrayList<*> -> {\n if (rootContinuation.isEmpty()) throw IllegalStateException(\"No more continuations to resume\")\n lastPeekedIndex = rootContinuation.lastIndex - 1\n rootContinuation.removeAt(rootContinuation.lastIndex)\n }\n else -> unexpectedRootContinuationValue(rootContinuation)\n } as Continuation\n\n if (!result.isFailure) {\n next.resumeWith(result)\n } else {\n val exception = recoverStackTraceBridge(result.exceptionOrNull()!!, next)\n next.resumeWithException(exception)\n }\n }\n\n private fun discardLastRootContinuation() {\n val rootContinuation = rootContinuation\n\n @Suppress(\"UNCHECKED_CAST\")\n when (rootContinuation) {\n null -> throw IllegalStateException(\"No more continuations to resume\")\n is Continuation<*> -> {\n lastPeekedIndex = -1\n this.rootContinuation = null\n }\n is ArrayList<*> -> {\n if (rootContinuation.isEmpty()) throw IllegalStateException(\"No more continuations to resume\")\n rootContinuation.removeAt(rootContinuation.lastIndex)\n lastPeekedIndex = rootContinuation.lastIndex\n }\n else -> unexpectedRootContinuationValue(rootContinuation)\n }\n }\n\n private fun addContinuation(continuation: Continuation) {\n when (val rootContinuation = rootContinuation) {\n null -> {\n lastPeekedIndex = 0\n this.rootContinuation = continuation\n }\n is Continuation<*> -> {\n this.rootContinuation = ArrayList>(blocks.size).apply {\n add(rootContinuation)\n add(continuation)\n lastPeekedIndex = 1\n }\n }\n is ArrayList<*> -> {\n @Suppress(\"UNCHECKED_CAST\")\n rootContinuation as ArrayList>\n rootContinuation.add(continuation)\n lastPeekedIndex = rootContinuation.lastIndex\n }\n else -> unexpectedRootContinuationValue(rootContinuation)\n }\n }\n\n private fun unexpectedRootContinuationValue(rootContinuation: Any?): Nothing {\n throw IllegalStateException(\"Unexpected rootContinuation content: $rootContinuation\")\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\n/**\n * Create ES specific [Attributes] instance.\n */\n@JsName(\"AttributesJsFn\")\npublic actual fun Attributes(concurrent: Boolean): Attributes = AttributesJs()\n\n@Suppress(\"KDocMissingDocumentation\")\npublic class AttributesJs : Attributes {\n private val map = mutableMapOf, Any?>()\n\n @Suppress(\"UNCHECKED_CAST\")\n override fun getOrNull(key: AttributeKey): T? = map[key] as T?\n\n override operator fun contains(key: AttributeKey<*>): Boolean = map.containsKey(key)\n\n override fun put(key: AttributeKey, value: T) {\n map[key] = value\n }\n\n override fun remove(key: AttributeKey) {\n map.remove(key)\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n override fun computeIfAbsent(key: AttributeKey, block: () -> T): T {\n map[key]?.let { return it as T }\n return block().also { result ->\n map[key] = result\n }\n }\n\n override val allKeys: List>\n get() = map.keys.toList()\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\npublic actual fun Set.unmodifiable(): Set = this\n","// ktlint-disable filename\n/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\npublic actual object PlatformUtils {\n public actual val IS_BROWSER: Boolean = js(\n \"typeof window !== 'undefined' && typeof window.document !== 'undefined'\"\n ) as Boolean\n\n public actual val IS_NODE: Boolean = js(\n \"typeof process !== 'undefined' && process.versions != null && process.versions.node != null\"\n ) as Boolean\n\n public actual val IS_JVM: Boolean = false\n public actual val IS_NATIVE: Boolean = false\n public actual val IS_DEVELOPMENT_MODE: Boolean = false\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\nimport kotlin.reflect.*\n\n@Suppress(\"UNUSED\")\ninternal actual interface CoroutineStackFrame {\n public actual val callerFrame: CoroutineStackFrame?\n public actual fun getStackTraceElement(): StackTraceElement?\n}\n\n@Suppress(\"ACTUAL_WITHOUT_EXPECT\")\ninternal actual typealias StackTraceElement = Any\n\n@Suppress(\"FunctionName\")\ninternal actual fun createStackTraceElement(\n kClass: KClass<*>,\n methodName: String,\n fileName: String,\n lineNumber: Int\n): StackTraceElement = Any()\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.date\n\nimport kotlin.js.*\n\npublic actual fun GMTDate(timestamp: Long?): GMTDate {\n val date = timestamp?.toDouble()?.let { Date(it) } ?: Date()\n\n if (date.getTime().isNaN()) throw InvalidTimestampException(timestamp!!)\n\n with(date) {\n /* from SUNDAY 0 -> MONDAY 0 */\n val dayOfWeek = WeekDay.from((getUTCDay() + 6) % 7)\n\n val month = Month.from(getUTCMonth())\n\n return GMTDate(\n getUTCSeconds(),\n getUTCMinutes(),\n getUTCHours(),\n\n dayOfWeek,\n getUTCDate(),\n getUTCFullYear(),\n\n month,\n getUTCFullYear(),\n\n getTime().toLong()\n )\n }\n}\n\npublic actual fun GMTDate(seconds: Int, minutes: Int, hours: Int, dayOfMonth: Int, month: Month, year: Int): GMTDate {\n val timestamp = Date.UTC(year, month.ordinal, dayOfMonth, hours, minutes, seconds).toLong()\n return GMTDate(timestamp)\n}\n\n/**\n * Invalid exception: possible overflow or underflow\n */\npublic class InvalidTimestampException(timestamp: Long) : IllegalStateException(\n \"Invalid date timestamp exception: $timestamp\"\n)\n\n/**\n * Gets current system time in milliseconds since certain moment in the past, only delta between two subsequent calls makes sense.\n */\npublic actual fun getTimeMillis(): Long = Date().getTime().toLong()\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util.network\n\n/**\n * Represents remote endpoint with [hostname] and [port].\n *\n * The address will be resolved after construction.\n *\n * @throws UnresolvedAddressException if the [hostname] cannot be resolved.\n */\npublic actual class NetworkAddress internal constructor(\n internal val hostname: String,\n internal val port: Int,\n internal val address: String\n)\n\n/**\n * Network address hostname.\n */\npublic actual val NetworkAddress.hostname: String\n get() = hostname\n\n/**\n * Network address port.\n */\npublic actual val NetworkAddress.port: Int\n get() = port\n\n/**\n * Represents remote endpoint with [hostname] and [port].\n *\n * The address will be resolved after construction.\n *\n * @throws UnresolvedAddressException if the [hostname] cannot be resolved.\n */\npublic actual fun NetworkAddress(hostname: String, port: Int): NetworkAddress =\n NetworkAddress(hostname, port, hostname)\n\npublic actual class UnresolvedAddressException : IllegalArgumentException()\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.util\n\nimport kotlinx.coroutines.*\nimport org.khronos.webgl.*\nimport kotlin.js.*\n\nprivate const val NONCE_SIZE_IN_BYTES = 8\n\n/**\n * Generates a nonce string.\n */\n@InternalAPI\npublic actual fun generateNonce(): String {\n val buffer = ByteArray(NONCE_SIZE_IN_BYTES)\n if (PlatformUtils.IS_NODE) {\n _crypto.randomFillSync(buffer)\n } else {\n _crypto.getRandomValues(buffer)\n }\n return hex(buffer)\n}\n\n/**\n * Create [Digest] from specified hash [name].\n */\n@InternalAPI\npublic actual fun Digest(name: String): Digest = object : Digest {\n private val state = mutableListOf()\n override fun plusAssign(bytes: ByteArray) {\n state += bytes\n }\n\n override fun reset() {\n state.clear()\n }\n\n override suspend fun build(): ByteArray {\n val snapshot = state.reduce { a, b -> a + b }\n val digestBuffer = _crypto.subtle.digest(name, snapshot).asDeferred().await()\n val digestView = DataView(digestBuffer)\n return ByteArray(digestView.byteLength) { digestView.getUint8(it) }\n }\n}\n\n// Variable is renamed to `_crypto` so it wouldn't clash with existing `crypto` variable.\n// JS IR backend doesn't reserve names accessed inside js(\"\") calls\nprivate val _crypto: Crypto = if (PlatformUtils.IS_NODE) js(\"require('crypto')\") else js(\"(crypto ? crypto : msCrypto)\")\n\nprivate external class Crypto {\n val subtle: SubtleCrypto\n\n public fun getRandomValues(array: ByteArray)\n\n public fun randomFillSync(array: ByteArray)\n}\n\nprivate external class SubtleCrypto {\n public fun digest(algoName: String, buffer: ByteArray): Promise\n}\n\n/**\n * Compute SHA-1 hash for the specified [bytes]\n */\npublic actual fun sha1(bytes: ByteArray): ByteArray = error(\"sha1 currently is not supported in ktor-js\")\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models\n\ndata class DownloadRecord(\n var id: Long = 0,\n var type: String,\n var name: String,\n var link: String,\n var coverUrl: String,\n var totalFiles: Long = 1,\n)\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models\n\nsealed class AllPlatforms {\n object Js : AllPlatforms()\n object Jvm : AllPlatforms()\n object Native : AllPlatforms()\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models\n\nsealed class CorsProxy(open val url: String) {\n data class SelfHostedCorsProxy(override val url: String = \"https://spotiflyer.azurewebsites.net/\") : CorsProxy(url)\n data class PublicProxyWithExtension(override val url: String = \"https://cors.bridged.cc/\") : CorsProxy(url)\n\n fun toggle(mode: CorsProxy? = null): CorsProxy {\n mode?.let {\n corsProxy = mode\n return corsProxy\n }\n corsProxy = when (corsProxy) {\n is SelfHostedCorsProxy -> PublicProxyWithExtension()\n is PublicProxyWithExtension -> SelfHostedCorsProxy()\n }\n return corsProxy\n }\n\n fun extensionMode(): Boolean {\n return when (corsProxy) {\n is SelfHostedCorsProxy -> false\n is PublicProxyWithExtension -> true\n }\n }\n}\n\n/*\n* This Var Keeps Track for Cors Config in JS Platform\n* Default Self Hosted, However ask user to use extension if possible.\n* */\nvar corsProxy: CorsProxy = CorsProxy.SelfHostedCorsProxy()\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models\n\nimport com.shabinder.common.models.spotify.Source\nimport dev.icerock.moko.parcelize.Parcelable\nimport dev.icerock.moko.parcelize.Parcelize\nimport kotlinx.serialization.Serializable\n\n@Parcelize\n@Serializable\ndata class TrackDetails(\n var title: String,\n var artists: List,\n var durationSec: Int,\n var albumName: String? = null,\n var year: String? = null,\n var comment: String? = null,\n var lyrics: String? = null,\n var trackUrl: String? = null,\n var albumArtPath: String,\n var albumArtURL: String,\n var source: Source,\n val progress: Int = 2,\n val downloaded: DownloadStatus = DownloadStatus.NotDownloaded,\n var outputFilePath: String,\n var videoID: String? = null,\n) : Parcelable\n\n@Serializable\nsealed class DownloadStatus : Parcelable {\n @Parcelize object Downloaded : DownloadStatus()\n @Parcelize data class Downloading(val progress: Int = 2) : DownloadStatus()\n @Parcelize object Queued : DownloadStatus()\n @Parcelize object NotDownloaded : DownloadStatus()\n @Parcelize object Converting : DownloadStatus()\n @Parcelize object Failed : DownloadStatus()\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models\n\nsealed class DownloadResult {\n\n data class Error(val message: String, val cause: Exception? = null) : DownloadResult()\n\n data class Progress(val progress: Int) : DownloadResult()\n\n data class Success(val byteArray: ByteArray) : DownloadResult() {\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other == null || this::class != other::class) return false\n\n other as Success\n\n if (!byteArray.contentEquals(other.byteArray)) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n return byteArray.contentHashCode()\n }\n }\n}\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models\n\nimport com.shabinder.common.models.spotify.Source\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class PlatformQueryResult(\n var folderType: String,\n var subFolder: String,\n var title: String,\n var coverUrl: String,\n var trackList: List,\n var source: Source\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class YoutubeTrack(\n var name: String? = null,\n var type: String? = null, // Song / Video\n var artist: String? = null,\n var duration: String? = null,\n var videoId: String? = null\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.gaana\n\nimport kotlinx.serialization.SerialName\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class Artist(\n val popularity: Int,\n val seokey: String,\n val name: String,\n @SerialName(\"artwork_175x175\")var artworkLink: String? = null\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.gaana\n\nimport kotlinx.serialization.SerialName\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class CustomArtworks(\n @SerialName(\"40x40\") val size_40p: String,\n @SerialName(\"80x80\") val size_80p: String,\n @SerialName(\"110x110\")val size_110p: String,\n @SerialName(\"175x175\")val size_175p: String,\n @SerialName(\"480x480\")val size_480p: String,\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.gaana\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class GaanaAlbum(\n val tracks: List,\n val count: Int,\n val custom_artworks: CustomArtworks,\n val release_year: Int,\n val favorite_count: Int,\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.gaana\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class GaanaArtistDetails(\n val artist: List,\n val count: Int,\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.gaana\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class GaanaArtistTracks(\n val count: Int,\n val tracks: List? = null\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.gaana\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class GaanaPlaylist(\n val modified_on: String,\n val count: Int,\n val created_on: String,\n val favorite_count: Int,\n val tracks: List,\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.gaana\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class GaanaSong(\n val tracks: List\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.gaana\n\nimport com.shabinder.common.models.DownloadStatus\nimport kotlinx.serialization.SerialName\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class GaanaTrack(\n val tags: List? = null,\n val seokey: String,\n val albumseokey: String? = null,\n val track_title: String,\n val album_title: String? = null,\n val language: String? = null,\n val duration: Int,\n @SerialName(\"artwork_large\") val artworkLink: String,\n val artist: List = emptyList(),\n @SerialName(\"gener\") val genre: List? = null,\n val lyrics_url: String? = null,\n val youtube_id: String? = null,\n val total_favourite_count: Int? = null,\n val release_date: String? = null,\n val play_ct: String? = null,\n val secondary_language: String? = null,\n var downloaded: DownloadStatus? = DownloadStatus.NotDownloaded\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.gaana\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class Genre(\n val genre_id: Int,\n val name: String\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.gaana\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class Tags(\n val tag_id: Int,\n val tag_name: String\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class Album(\n var album_type: String? = null,\n var artists: List? = null,\n var available_markets: List? = null,\n var copyrights: List? = null,\n var external_ids: Map? = null,\n var external_urls: Map? = null,\n var genres: List? = null,\n var href: String? = null,\n var id: String? = null,\n var images: List? = null,\n var label: String? = null,\n var name: String? = null,\n var popularity: Int? = null,\n var release_date: String? = null,\n var release_date_precision: String? = null,\n var tracks: PagingObjectTrack? = null,\n var type: String? = null,\n var uri: String? = null\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class Artist(\n var external_urls: Map? = null,\n var href: String? = null,\n var id: String? = null,\n var name: String? = null,\n var type: String? = null,\n var uri: String? = null\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class Copyright(\n var text: String? = null,\n var type: String? = null\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class Followers(\n var href: String? = null,\n var total: Int? = null\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class Image(\n var width: Int? = null,\n var height: Int? = null,\n var url: String? = null\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class LinkedTrack(\n var external_urls: Map? = null,\n var href: String? = null,\n var id: String? = null,\n var type: String? = null,\n var uri: String? = null\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class PagingObjectPlaylistTrack(\n var href: String? = null,\n var items: List? = null,\n var limit: Int = 0,\n var next: String? = null,\n var offset: Int = 0,\n var previous: String? = null,\n var total: Int = 0\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class PagingObjectTrack(\n var href: String? = null,\n var items: List? = null,\n var limit: Int = 0,\n var next: String? = null,\n var offset: Int = 0,\n var previous: String? = null,\n var total: Int = 0\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport kotlinx.serialization.SerialName\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class Playlist(\n @SerialName(\"collaborative\")var is_collaborative: Boolean? = null,\n var description: String? = null,\n var external_urls: Map? = null,\n var followers: Followers? = null,\n var href: String? = null,\n var id: String? = null,\n var images: List? = null,\n var name: String? = null,\n var owner: UserPublic? = null,\n @SerialName(\"public\")var is_public: Boolean? = null,\n var snapshot_id: String? = null,\n var tracks: PagingObjectPlaylistTrack? = null,\n var type: String? = null,\n var uri: String? = null\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class PlaylistTrack(\n var added_at: String? = null,\n var added_by: UserPublic? = null,\n var track: Track? = null,\n var is_local: Boolean? = null\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nenum class Source {\n Spotify,\n YouTube,\n Gaana,\n}\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport kotlinx.serialization.SerialName\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class TokenData(\n var access_token: String?,\n var token_type: String?,\n @SerialName(\"expires_in\") var expiry: Long?\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport com.shabinder.common.models.DownloadStatus\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class Track(\n var artists: List? = null,\n var available_markets: List? = null,\n var is_playable: Boolean? = null,\n var linked_from: LinkedTrack? = null,\n var disc_number: Int = 0,\n var duration_ms: Long = 0,\n var explicit: Boolean? = null,\n var external_urls: Map? = null,\n var href: String? = null,\n var name: String? = null,\n var preview_url: String? = null,\n var track_number: Int = 0,\n var type: String? = null,\n var uri: String? = null,\n var album: Album? = null,\n var external_ids: Map? = null,\n var popularity: Int? = null,\n var downloaded: DownloadStatus = DownloadStatus.NotDownloaded\n)\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.models.spotify\n\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class UserPublic(\n var display_name: String? = null,\n var external_urls: Map? = null,\n var followers: Followers? = null,\n var href: String? = null,\n var id: String? = null,\n var images: List? = null,\n var type: String? = null,\n var uri: String? = null\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\npackage kotlin.properties\n\nimport kotlin.reflect.KProperty\n\n/**\n * Standard property delegates.\n */\npublic object Delegates {\n /**\n * Returns a property delegate for a read/write property with a non-`null` value that is initialized not during\n * object construction time but at a later time. Trying to read the property before the initial value has been\n * assigned results in an exception.\n *\n * @sample samples.properties.Delegates.notNullDelegate\n */\n public fun notNull(): ReadWriteProperty = NotNullVar()\n\n /**\n * Returns a property delegate for a read/write property that calls a specified callback function when changed.\n * @param initialValue the initial value of the property.\n * @param onChange the callback which is called after the change of the property is made. The value of the property\n * has already been changed when this callback is invoked.\n *\n * @sample samples.properties.Delegates.observableDelegate\n */\n public inline fun observable(initialValue: T, crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Unit):\n ReadWriteProperty =\n object : ObservableProperty(initialValue) {\n override fun afterChange(property: KProperty<*>, oldValue: T, newValue: T) = onChange(property, oldValue, newValue)\n }\n\n /**\n * Returns a property delegate for a read/write property that calls a specified callback function when changed,\n * allowing the callback to veto the modification.\n * @param initialValue the initial value of the property.\n * @param onChange the callback which is called before a change to the property value is attempted.\n * The value of the property hasn't been changed yet, when this callback is invoked.\n * If the callback returns `true` the value of the property is being set to the new value,\n * and if the callback returns `false` the new value is discarded and the property remains its old value.\n *\n * @sample samples.properties.Delegates.vetoableDelegate\n * @sample samples.properties.Delegates.throwVetoableDelegate\n */\n public inline fun vetoable(initialValue: T, crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Boolean):\n ReadWriteProperty =\n object : ObservableProperty(initialValue) {\n override fun beforeChange(property: KProperty<*>, oldValue: T, newValue: T): Boolean = onChange(property, oldValue, newValue)\n }\n\n}\n\n\nprivate class NotNullVar() : ReadWriteProperty {\n private var value: T? = null\n\n public override fun getValue(thisRef: Any?, property: KProperty<*>): T {\n return value ?: throw IllegalStateException(\"Property ${property.name} should be initialized before get.\")\n }\n\n public override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {\n this.value = value\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,null,null,null,null,null,"/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features.cache\n\nimport io.ktor.client.call.*\nimport io.ktor.client.statement.*\nimport io.ktor.http.*\nimport io.ktor.util.*\nimport io.ktor.util.date.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.core.*\n\ninternal suspend fun HttpCacheEntry(response: HttpResponse): HttpCacheEntry {\n val body = response.content.readRemaining().readBytes()\n response.complete()\n return HttpCacheEntry(response.cacheExpires(), response.varyKeys(), response, body)\n}\n\n/**\n * Client single response cache with [expires] and [varyKeys].\n */\n@KtorExperimentalAPI\n@Suppress(\"KDocMissingDocumentation\")\npublic class HttpCacheEntry internal constructor(\n public val expires: GMTDate,\n public val varyKeys: Map,\n public val response: HttpResponse,\n public val body: ByteArray\n) {\n internal val responseHeaders: Headers = Headers.build {\n appendAll(response.headers)\n }\n\n internal fun produceResponse(): HttpResponse {\n val currentClient = response.call.client ?: error(\"Failed to save response in cache in different thread.\")\n val call = SavedHttpCall(currentClient)\n call.response = SavedHttpResponse(call, body, response)\n call.request = SavedHttpRequest(call, response.call.request)\n\n return call.response\n }\n\n override fun equals(other: Any?): Boolean {\n if (other == null || other !is HttpCacheEntry) return false\n if (other === this) return true\n return varyKeys == other.varyKeys\n }\n\n override fun hashCode(): Int {\n return varyKeys.hashCode()\n }\n}\n\ninternal fun HttpResponse.varyKeys(): Map {\n val validationKeys = vary() ?: return emptyMap()\n\n val result = mutableMapOf()\n val requestHeaders = call.request.headers\n\n for (key in validationKeys) {\n result[key] = requestHeaders[key] ?: \"\"\n }\n\n return result\n}\n\ninternal fun HttpResponse.cacheExpires(fallback: () -> GMTDate = { GMTDate() }): GMTDate {\n val cacheControl = cacheControl()\n\n val isPrivate = CacheControl.PRIVATE in cacheControl\n\n val maxAgeKey = if (isPrivate) \"s-max-age\" else \"max-age\"\n\n val maxAge = cacheControl.firstOrNull { it.value.startsWith(maxAgeKey) }\n ?.value?.split(\"=\")\n ?.get(1)?.toInt()\n\n if (maxAge != null) {\n return call.response.requestTime + maxAge * 1000L\n }\n\n val expires = headers[HttpHeaders.Expires]\n return expires?.let {\n // Handle \"0\" case faster\n if (it == \"0\" || it.isBlank()) return fallback()\n\n return try {\n it.fromHttpToGmtDate()\n } catch (e: Throwable) {\n fallback()\n }\n } ?: fallback()\n}\n\ninternal fun HttpCacheEntry.shouldValidate(): Boolean {\n val cacheControl = responseHeaders[HttpHeaders.CacheControl]?.let { parseHeaderValue(it) } ?: emptyList()\n val isStale = GMTDate() > expires\n // must-revalidate; re-validate once STALE, and MUST NOT return a cached response once stale.\n // This is how majority of clients implement the RFC\n // OkHttp Implements this the same: https://github.com/square/okhttp/issues/4043#issuecomment-403679369\n // Disabled for now, as we don't currently return a cached object when there's a network failure; must-revalidate\n // works the same as being stale on the request side. On response side, must-revalidate would not return a cached\n // object if we are stale and couldn't refresh.\n // isStale = isStale && CacheControl.MUST_REVALIDATE in cacheControl\n return isStale || CacheControl.NO_CACHE in cacheControl\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features.websocket\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.engine.*\nimport io.ktor.client.features.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.http.*\nimport io.ktor.http.cio.websocket.*\nimport io.ktor.util.*\nimport kotlin.native.concurrent.*\n\n@ExperimentalWebSocketExtensionApi\n@SharedImmutable\nprivate val REQUEST_EXTENSIONS_KEY = AttributeKey>>(\"Websocket extensions\")\n\n/**\n * Indicates if a client engine supports WebSockets.\n */\npublic object WebSocketCapability : HttpClientEngineCapability {\n override fun toString(): String = \"WebSocketCapability\"\n}\n\n/**\n * Indicates if a client engine supports extensions for WebSocket feature.\n */\npublic object WebSocketExtensionsCapability : HttpClientEngineCapability {\n override fun toString(): String = \"WebSocketExtensionsCapability\"\n}\n\n/**\n * Client WebSocket feature.\n *\n * @property pingInterval - interval between [FrameType.PING] messages.\n * @property maxFrameSize - max size of single websocket frame.\n * @property extensionsConfig - extensions configuration\n */\n@OptIn(WebSocketInternalAPI::class)\npublic class WebSockets @OptIn(ExperimentalWebSocketExtensionApi::class)\ninternal constructor(\n public val pingInterval: Long,\n public val maxFrameSize: Long,\n private val extensionsConfig: WebSocketExtensionsConfig\n) {\n /**\n * Client WebSocket feature.\n *\n * @property pingInterval - interval between [FrameType.PING] messages.\n * @property maxFrameSize - max size of single websocket frame.\n */\n @OptIn(ExperimentalWebSocketExtensionApi::class)\n public constructor(\n pingInterval: Long = -1L,\n maxFrameSize: Long = Int.MAX_VALUE.toLong(),\n ) : this(pingInterval, maxFrameSize, WebSocketExtensionsConfig())\n\n /**\n * Client WebSocket feature.\n */\n @OptIn(ExperimentalWebSocketExtensionApi::class)\n public constructor() : this(-1L, Int.MAX_VALUE.toLong(), WebSocketExtensionsConfig())\n\n @ExperimentalWebSocketExtensionApi\n private fun installExtensions(context: HttpRequestBuilder) {\n val installed = extensionsConfig.build()\n context.attributes.put(REQUEST_EXTENSIONS_KEY, installed)\n\n val protocols = installed.flatMap { it.protocols }\n addNegotiatedProtocols(context, protocols)\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n @ExperimentalWebSocketExtensionApi\n private fun completeNegotiation(\n call: HttpClientCall\n ): List> {\n val serverExtensions: List = call.response\n .headers[HttpHeaders.SecWebSocketExtensions]\n ?.let { parseWebSocketExtensions(it) } ?: emptyList()\n\n val clientExtensions = call.attributes[REQUEST_EXTENSIONS_KEY]\n\n return clientExtensions.filter { it.clientNegotiation(serverExtensions) }\n }\n\n @OptIn(ExperimentalWebSocketExtensionApi::class)\n private fun addNegotiatedProtocols(context: HttpRequestBuilder, protocols: List) {\n val headerValue = protocols.joinToString(\";\")\n context.header(HttpHeaders.SecWebSocketExtensions, headerValue)\n }\n\n internal fun convertSessionToDefault(session: WebSocketSession): DefaultWebSocketSession {\n if (session is DefaultWebSocketSession) return session\n\n return DefaultWebSocketSession(session, pingInterval, timeoutMillis = pingInterval * 2).also {\n it.maxFrameSize = this@WebSockets.maxFrameSize\n }\n }\n\n init {\n }\n\n /**\n * [WebSockets] configuration.\n */\n public class Config {\n @ExperimentalWebSocketExtensionApi\n internal val extensionsConfig: WebSocketExtensionsConfig = WebSocketExtensionsConfig()\n\n /**\n * Sets interval of sending ping frames.\n *\n * Value -1L is for disabled ping.\n */\n public var pingInterval: Long = -1L\n\n /**\n * Sets maximum frame size in bytes.\n */\n public var maxFrameSize: Long = Int.MAX_VALUE.toLong()\n\n /**\n * Configure WebSocket extensions.\n */\n @ExperimentalWebSocketExtensionApi\n public fun extensions(block: WebSocketExtensionsConfig.() -> Unit) {\n extensionsConfig.apply(block)\n }\n }\n\n /**\n * Add WebSockets support for ktor http client.\n */\n public companion object Feature : HttpClientFeature {\n override val key: AttributeKey = AttributeKey(\"Websocket\")\n\n @OptIn(ExperimentalWebSocketExtensionApi::class)\n override fun prepare(block: Config.() -> Unit): WebSockets {\n val config = Config().apply(block)\n return WebSockets(config.pingInterval, config.maxFrameSize, config.extensionsConfig)\n }\n\n @OptIn(ExperimentalWebSocketExtensionApi::class)\n override fun install(feature: WebSockets, scope: HttpClient) {\n val extensionsSupported = scope.engine.supportedCapabilities.contains(WebSocketExtensionsCapability)\n\n scope.requestPipeline.intercept(HttpRequestPipeline.Render) {\n if (!context.url.protocol.isWebsocket()) return@intercept\n context.setCapability(WebSocketCapability, Unit)\n\n if (extensionsSupported) {\n feature.installExtensions(context)\n }\n\n proceedWith(WebSocketContent())\n }\n\n scope.responsePipeline.intercept(HttpResponsePipeline.Transform) { (info, session) ->\n if (session !is WebSocketSession) return@intercept\n\n val clientSession: ClientWebSocketSession = when (info.type) {\n DefaultClientWebSocketSession::class -> {\n val defaultSession = feature.convertSessionToDefault(session)\n val clientSession = DefaultClientWebSocketSession(context, defaultSession)\n\n val negotiated = if (extensionsSupported) {\n feature.completeNegotiation(context)\n } else emptyList()\n\n clientSession.apply {\n start(negotiated)\n }\n }\n else -> DelegatingClientWebSocketSession(context, session)\n }\n\n val response = HttpResponseContainer(info, clientSession)\n proceedWith(response)\n }\n }\n }\n}\n\n@Suppress(\"KDocMissingDocumentation\")\npublic class WebSocketException(message: String) : IllegalStateException(message)\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client\n\nimport io.ktor.client.call.*\nimport io.ktor.client.engine.*\nimport io.ktor.client.features.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.client.utils.checkCoroutinesVersion\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.concurrent.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.atomicfu.*\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\n\n/**\n * Constructs an asynchronous [HttpClient] using optional [block] for configuring this client.\n *\n * The [HttpClientEngine] is selected from the dependencies.\n * https://ktor.io/clients/http-client/engines.html\n */\n@HttpClientDsl\npublic expect fun HttpClient(\n block: HttpClientConfig<*>.() -> Unit = {}\n): HttpClient\n\n/**\n * Constructs an asynchronous [HttpClient] using the specified [engineFactory]\n * and an optional [block] for configuring this client.\n */\n@HttpClientDsl\npublic fun HttpClient(\n engineFactory: HttpClientEngineFactory,\n block: HttpClientConfig.() -> Unit = {}\n): HttpClient {\n val config: HttpClientConfig = HttpClientConfig().apply(block)\n val engine = engineFactory.create(config.engineConfig)\n val client = HttpClient(engine, config, manageEngine = true)\n\n // If the engine was created using factory Ktor is responsible for its lifecycle management. Otherwise user has to\n // close engine by themself.\n client.coroutineContext[Job]!!.invokeOnCompletion {\n engine.close()\n }\n\n return client\n}\n\n/**\n * Constructs an asynchronous [HttpClient] using the specified [engine]\n * and a [block] for configuring this client.\n */\n@HttpClientDsl\npublic fun HttpClient(\n engine: HttpClientEngine,\n block: HttpClientConfig<*>.() -> Unit\n): HttpClient = HttpClient(engine, HttpClientConfig().apply(block), manageEngine = false)\n\n/**\n * Asynchronous client to perform HTTP requests.\n *\n * This is a generic implementation that uses a specific engine [HttpClientEngine].\n * @property engine: [HttpClientEngine] for executing requests.\n */\n@OptIn(InternalCoroutinesApi::class)\npublic class HttpClient(\n public val engine: HttpClientEngine,\n private val userConfig: HttpClientConfig = HttpClientConfig()\n) : CoroutineScope, Closeable {\n private var manageEngine: Boolean by shared(false)\n\n internal constructor(\n engine: HttpClientEngine,\n userConfig: HttpClientConfig,\n manageEngine: Boolean\n ) : this(engine, userConfig) {\n this.manageEngine = manageEngine\n }\n\n private val closed = atomic(false)\n\n private val clientJob: CompletableJob = Job(engine.coroutineContext[Job])\n\n public override val coroutineContext: CoroutineContext = engine.coroutineContext + clientJob\n\n /**\n * Pipeline used for processing all the requests sent by this client.\n */\n public val requestPipeline: HttpRequestPipeline = HttpRequestPipeline(userConfig.developmentMode)\n\n /**\n * Pipeline used for processing all the responses sent by the server.\n */\n public val responsePipeline: HttpResponsePipeline = HttpResponsePipeline(userConfig.developmentMode)\n\n /**\n * Pipeline used for sending the request.\n */\n public val sendPipeline: HttpSendPipeline = HttpSendPipeline(userConfig.developmentMode)\n\n /**\n * Pipeline used for receiving request.\n */\n public val receivePipeline: HttpReceivePipeline = HttpReceivePipeline(userConfig.developmentMode)\n\n /**\n * Typed attributes used as a lightweight container for this client.\n */\n public val attributes: Attributes = Attributes(concurrent = true)\n\n /**\n * Dispatcher handles io operations.\n */\n @Deprecated(\n \"[dispatcher] is deprecated. Use coroutineContext instead.\",\n replaceWith = ReplaceWith(\"coroutineContext\"),\n level = DeprecationLevel.ERROR\n )\n public val dispatcher: CoroutineDispatcher\n get() = engine.dispatcher\n\n /**\n * Client engine config.\n */\n public val engineConfig: HttpClientEngineConfig = engine.config\n\n internal val config = HttpClientConfig()\n\n init {\n checkCoroutinesVersion()\n\n if (manageEngine) {\n clientJob.invokeOnCompletion {\n if (it != null) {\n engine.cancel()\n }\n }\n }\n\n engine.install(this)\n\n sendPipeline.intercept(HttpSendPipeline.Receive) { call ->\n check(call is HttpClientCall) { \"Error: HttpClientCall expected, but found $call(${call::class}).\" }\n val receivedCall = receivePipeline.execute(call, call.response).call\n proceedWith(receivedCall)\n }\n\n with(userConfig) {\n config.install(HttpRequestLifecycle)\n\n if (useDefaultTransformers) {\n config.install(HttpPlainText)\n config.install(\"DefaultTransformers\") { defaultTransformers() }\n }\n\n config.install(HttpSend)\n\n if (followRedirects) {\n config.install(HttpRedirect)\n }\n\n config += this\n\n config.addDefaultResponseValidation()\n\n config.install(this@HttpClient)\n }\n\n makeShared()\n }\n\n /**\n * Creates a new [HttpRequest] from a request [data] and a specific client [call].\n */\n\n @Deprecated(\n \"Unbound [HttpClientCall] is deprecated. Consider using [request(builder)] instead.\",\n level = DeprecationLevel.ERROR,\n replaceWith = ReplaceWith(\n \"this.request(builder)\",\n \"io.ktor.client.statement.*\"\n )\n )\n @InternalAPI\n public suspend fun execute(builder: HttpRequestBuilder): HttpClientCall =\n requestPipeline.execute(builder, builder.body) as HttpClientCall\n\n /**\n * Check if the specified [capability] is supported by this client.\n */\n public fun isSupported(capability: HttpClientEngineCapability<*>): Boolean {\n return engine.supportedCapabilities.contains(capability)\n }\n\n /**\n * Returns a new [HttpClient] copying this client configuration,\n * and additionally configured by the [block] parameter.\n */\n public fun config(block: HttpClientConfig<*>.() -> Unit): HttpClient = HttpClient(\n engine,\n HttpClientConfig().apply {\n plusAssign(userConfig)\n block()\n },\n manageEngine\n )\n\n /**\n * Closes the underlying [engine].\n */\n override fun close() {\n val success = closed.compareAndSet(false, true)\n if (!success) return\n\n attributes.allKeys.forEach { key ->\n @Suppress(\"UNCHECKED_CAST\")\n val feature = attributes[key as AttributeKey]\n\n if (feature is Closeable) {\n feature.close()\n }\n }\n\n clientJob.complete()\n if (manageEngine) {\n engine.close()\n }\n }\n\n override fun toString(): String = \"HttpClient[$engine]\"\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client\n\nimport io.ktor.client.engine.*\nimport io.ktor.client.features.*\nimport io.ktor.client.utils.sharedMap\nimport io.ktor.util.*\nimport io.ktor.utils.io.concurrent.*\nimport kotlin.collections.set\n\n/**\n * Mutable configuration used by [HttpClient].\n */\n@HttpClientDsl\npublic class HttpClientConfig {\n private val features: MutableMap, (HttpClient) -> Unit> = sharedMap()\n private val featureConfigurations: MutableMap, Any.() -> Unit> = sharedMap()\n\n private val customInterceptors: MutableMap Unit> = sharedMap()\n\n internal var engineConfig: T.() -> Unit by shared {}\n\n /**\n * Configure engine parameters.\n */\n public fun engine(block: T.() -> Unit) {\n val oldConfig = engineConfig\n engineConfig = {\n oldConfig()\n block()\n }\n }\n\n /**\n * Use [HttpRedirect] feature to automatically follow redirects.\n */\n public var followRedirects: Boolean by shared(true)\n\n /**\n * Use [defaultTransformers] to automatically handle simple [ContentType].\n */\n public var useDefaultTransformers: Boolean by shared(true)\n\n /**\n * Terminate [HttpClient.receivePipeline] if status code is not successful (>=300).\n */\n public var expectSuccess: Boolean by shared(true)\n\n /**\n * Indicate if client should use development mode. In development mode client pipelines have advanced stack traces.\n */\n public var developmentMode: Boolean by shared(PlatformUtils.IS_DEVELOPMENT_MODE)\n\n /**\n * Installs a specific [feature] and optionally [configure] it.\n */\n public fun install(\n feature: HttpClientFeature,\n configure: TBuilder.() -> Unit = {}\n ) {\n val previousConfigBlock = featureConfigurations[feature.key]\n featureConfigurations[feature.key] = {\n previousConfigBlock?.invoke(this)\n\n @Suppress(\"UNCHECKED_CAST\")\n (this as TBuilder).configure()\n }\n\n if (features.containsKey(feature.key)) return\n\n features[feature.key] = { scope ->\n val attributes = scope.attributes.computeIfAbsent(FEATURE_INSTALLED_LIST) { Attributes(concurrent = true) }\n val config = scope.config.featureConfigurations[feature.key]!!\n val featureData = feature.prepare(config)\n\n feature.install(featureData, scope)\n attributes.put(feature.key, featureData)\n }\n }\n\n /**\n * Installs an interceptor defined by [block].\n * The [key] parameter is used as a unique name, that also prevents installing duplicated interceptors.\n */\n public fun install(key: String, block: HttpClient.() -> Unit) {\n customInterceptors[key] = block\n }\n\n /**\n * Applies all the installed [features] and [customInterceptors] from this configuration\n * into the specified [client].\n */\n public fun install(client: HttpClient) {\n features.values.forEach { client.apply(it) }\n customInterceptors.values.forEach { client.apply(it) }\n }\n\n /**\n * Clones this [HttpClientConfig] duplicating all the [features] and [customInterceptors].\n */\n public fun clone(): HttpClientConfig {\n val result = HttpClientConfig()\n result += this\n return result\n }\n\n /**\n * Install features from [other] client config.\n */\n public operator fun plusAssign(other: HttpClientConfig) {\n followRedirects = other.followRedirects\n useDefaultTransformers = other.useDefaultTransformers\n expectSuccess = other.expectSuccess\n\n features += other.features\n featureConfigurations += other.featureConfigurations\n customInterceptors += other.customInterceptors\n }\n}\n\n/**\n * Dsl marker for [HttpClient] dsl.\n */\n@DslMarker\npublic annotation class HttpClientDsl\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.call\n\nimport io.ktor.client.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.concurrent.*\nimport kotlinx.atomicfu.*\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\nimport kotlin.reflect.*\n\n@InternalAPI\ninternal fun HttpClientCall(\n client: HttpClient,\n requestData: HttpRequestData,\n responseData: HttpResponseData\n): HttpClientCall = HttpClientCall(client).apply {\n request = DefaultHttpRequest(this, requestData)\n response = DefaultHttpResponse(this, responseData)\n\n if (responseData.body !is ByteReadChannel) {\n @Suppress(\"DEPRECATION\")\n attributes.put(HttpClientCall.CustomResponse, responseData.body)\n }\n}\n\n/**\n * A class that represents a single pair of [request] and [response] for a specific [HttpClient].\n *\n * @property client: client that executed the call.\n */\npublic open class HttpClientCall internal constructor(\n client: HttpClient\n) : CoroutineScope {\n private val received: AtomicBoolean = atomic(false)\n\n public val client: HttpClient? by threadLocal(client)\n\n override val coroutineContext: CoroutineContext get() = response.coroutineContext\n\n /**\n * Typed [Attributes] associated to this call serving as a lightweight container.\n */\n public val attributes: Attributes get() = request.attributes\n\n /**\n * Represents the [request] sent by the client\n */\n public lateinit var request: HttpRequest\n internal set\n\n /**\n * Represents the [response] sent by the server.\n */\n public lateinit var response: HttpResponse\n internal set\n\n protected open val allowDoubleReceive: Boolean = false\n\n protected open suspend fun getResponseContent(): ByteReadChannel = response.content\n\n /**\n * Tries to receive the payload of the [response] as a specific expected type provided in [info].\n * Returns [response] if [info] corresponds to [HttpResponse].\n *\n * @throws NoTransformationFoundException If no transformation is found for the type [info].\n * @throws DoubleReceiveException If already called [receive].\n */\n public suspend fun receive(info: TypeInfo): Any {\n try {\n if (response.instanceOf(info.type)) return response\n if (!allowDoubleReceive && !received.compareAndSet(false, true)) {\n throw DoubleReceiveException(this)\n }\n\n @Suppress(\"DEPRECATION\")\n val responseData = attributes.getOrNull(CustomResponse) ?: getResponseContent()\n\n val subject = HttpResponseContainer(info, responseData)\n val currentClient = client ?: error(\"Failed to receive call($this) in different native thread.\")\n\n val result = currentClient.responsePipeline.execute(this, subject).response\n if (!result.instanceOf(info.type)) {\n val from = result::class\n val to = info.type\n throw NoTransformationFoundException(response, from, to)\n }\n\n return result\n } catch (cause: Throwable) {\n response.cancel(\"Receive failed\", cause)\n throw cause\n } finally {\n response.complete()\n }\n }\n\n override fun toString(): String = \"HttpClientCall[${request.url}, ${response.status}]\"\n\n public companion object {\n /**\n * [CustomResponse] key used to process the response of custom type in case of [HttpClientEngine] can't return body bytes directly.\n * If present, attribute value will be an initial value for [HttpResponseContainer] in [HttpClient.responsePipeline].\n *\n * Example: [WebSocketSession]\n */\n @Deprecated(\n \"This is going to be removed. \" +\n \"Please file a ticket with clarification why and what for do you need it.\"\n )\n public val CustomResponse: AttributeKey = AttributeKey(\"CustomResponse\")\n }\n}\n\n/**\n * Raw http call produced by engine.\n *\n * @property request - executed http request.\n * @property response - raw http response\n */\n@Deprecated(\n \"HttpEngineCall deprecated.\",\n level = DeprecationLevel.ERROR,\n replaceWith = ReplaceWith(\"HttpResponseData\")\n)\n@InternalAPI\npublic data class HttpEngineCall(val request: HttpRequest, val response: HttpResponse)\n\n/**\n * Constructs a [HttpClientCall] from this [HttpClient] and with the specified [HttpRequestBuilder]\n * configured inside the [block].\n */\n@Deprecated(\n \"Unbound [HttpClientCall] is deprecated. Consider using [request(block)] in instead.\",\n level = DeprecationLevel.ERROR,\n replaceWith = ReplaceWith(\n \"this.request(block)\",\n \"io.ktor.client.request.request\",\n \"io.ktor.client.statement.*\"\n )\n)\n@Suppress(\"RedundantSuspendModifier\", \"unused\", \"UNUSED_PARAMETER\")\npublic suspend fun HttpClient.call(block: suspend HttpRequestBuilder.() -> Unit = {}): HttpClientCall =\n error(\"Unbound [HttpClientCall] is deprecated. Consider using [request(block)] in instead.\")\n\n/**\n * Tries to receive the payload of the [response] as an specific type [T].\n *\n * @throws NoTransformationFoundException If no transformation is found for the type [T].\n * @throws DoubleReceiveException If already called [receive].\n */\npublic suspend inline fun HttpClientCall.receive(): T = receive(typeInfo()) as T\n\n/**\n * Tries to receive the payload of the [response] as an specific type [T].\n *\n * @throws NoTransformationFoundException If no transformation is found for the type [T].\n * @throws DoubleReceiveException If already called [receive].\n */\npublic suspend inline fun HttpResponse.receive(): T = call.receive(typeInfo()) as T\n\n/**\n * Exception representing that the response payload has already been received.\n */\n@Suppress(\"KDocMissingDocumentation\")\npublic class DoubleReceiveException(call: HttpClientCall) : IllegalStateException() {\n override val message: String = \"Response already received: $call\"\n}\n\n/**\n * Exception representing fail of the response pipeline\n * [cause] contains origin pipeline exception\n */\n@Suppress(\"KDocMissingDocumentation\", \"unused\")\npublic class ReceivePipelineException(\n public val request: HttpClientCall,\n public val info: TypeInfo,\n override val cause: Throwable\n) : IllegalStateException(\"Fail to run receive pipeline: $cause\")\n\n/**\n * Exception representing the no transformation was found.\n * It includes the received type and the expected type as part of the message.\n */\n@Suppress(\"KDocMissingDocumentation\")\npublic class NoTransformationFoundException(\n response: HttpResponse,\n from: KClass<*>,\n to: KClass<*>\n) : UnsupportedOperationException() {\n override val message: String? = \"\"\"No transformation found: $from -> $to\n |with response from ${response.request.url}:\n |status: ${response.status}\n |response headers: \n |${response.headers.flattenEntries().joinToString { (key, value) -> \"$key: $value\\n\" }}\n \"\"\".trimMargin()\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.engine\n\nimport io.ktor.util.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.atomicfu.*\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\n\n/**\n * Abstract implementation of [HttpClientEngine] responsible for lifecycle control of [dispatcher] and\n * [coroutineContext] as well as proper call context management. Should be considered as the best parent class for\n * custom [HttpClientEngine] implementations.\n */\npublic abstract class HttpClientEngineBase(private val engineName: String) : HttpClientEngine {\n private val closed = atomic(false)\n\n override val coroutineContext: CoroutineContext by lazy {\n SilentSupervisor() + dispatcher + CoroutineName(\"$engineName-context\")\n }\n\n override fun close() {\n if (!closed.compareAndSet(false, true)) return\n\n val requestJob = coroutineContext[Job] as? CompletableJob ?: return\n\n requestJob.complete()\n requestJob.invokeOnCompletion {\n dispatcher.close()\n }\n }\n}\n\n/**\n * Exception that indicates that client engine is already closed.\n */\npublic class ClientEngineClosedException(override val cause: Throwable? = null) :\n IllegalStateException(\"Client already closed\")\n\n/**\n * Close [CoroutineDispatcher] if it's [Closeable].\n */\nprivate fun CoroutineDispatcher.close() = try {\n (this as? Closeable)?.close()\n} catch (ignore: Throwable) {\n // Some closeable dispatchers like Dispatchers.IO can't be closed.\n}\n","package io.ktor.client.engine\n\nimport io.ktor.http.*\nimport io.ktor.util.network.*\n\n/**\n * Proxy configuration.\n *\n * See [ProxyBuilder] to create proxy.\n */\npublic expect class ProxyConfig\n\n/**\n * Type of configured proxy.\n */\npublic expect val ProxyConfig.type: ProxyType\n\n/**\n * Types of proxy\n */\n@Suppress(\"NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING\", \"KDocMissingDocumentation\")\npublic enum class ProxyType {\n SOCKS,\n HTTP,\n UNKNOWN\n}\n\n/**\n * Resolve remote address of [ProxyConfig].\n *\n * This operations can block.\n */\npublic expect fun ProxyConfig.resolveAddress(): NetworkAddress\n\n/**\n * [ProxyConfig] factory.\n */\npublic expect object ProxyBuilder {\n /**\n * Create http proxy from [url].\n */\n public fun http(url: Url): ProxyConfig\n\n /**\n * Create socks proxy from [host] and [port].\n */\n public fun socks(host: String, port: Int): ProxyConfig\n}\n\n/**\n * Create http proxy from [urlString].\n */\npublic fun ProxyBuilder.http(urlString: String): ProxyConfig = http(Url(urlString))\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.call\n\nimport io.ktor.client.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.http.*\nimport io.ktor.util.*\nimport io.ktor.util.date.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\n\ninternal class SavedHttpCall(client: HttpClient) : HttpClientCall(client) {\n /**\n * Equals [HttpResponse.content] in case [receive] was never called before or equals it's copy if [receive] was\n * already called at least once.\n * */\n private var responseContent: ByteReadChannel? = null\n\n /**\n * Saves [responseContent] and returns it's copy that is safe to use without loosing [responseContent] data.\n * */\n override suspend fun getResponseContent(): ByteReadChannel {\n if (responseContent == null) {\n responseContent = response.content\n }\n val contentBytes = responseContent!!.toByteArray()\n responseContent = ByteReadChannel(contentBytes)\n return ByteReadChannel(contentBytes)\n }\n\n override val allowDoubleReceive: Boolean = true\n}\n\ninternal class SavedHttpRequest(\n override val call: SavedHttpCall,\n origin: HttpRequest\n) : HttpRequest by origin\n\ninternal class SavedHttpResponse(\n override val call: SavedHttpCall,\n body: ByteArray,\n origin: HttpResponse\n) : HttpResponse() {\n private val context = Job()\n\n override val status: HttpStatusCode = origin.status\n\n override val version: HttpProtocolVersion = origin.version\n\n override val requestTime: GMTDate = origin.requestTime\n\n override val responseTime: GMTDate = origin.responseTime\n\n override val headers: Headers = origin.headers\n\n override val coroutineContext: CoroutineContext = origin.coroutineContext + context\n\n override val content: ByteReadChannel = ByteReadChannel(body)\n}\n\n/**\n * Fetch data for [HttpClientCall] and close the origin.\n */\n@KtorExperimentalAPI\npublic suspend fun HttpClientCall.save(): HttpClientCall {\n val currentClient = client ?: error(\"Failed to save call in different native thread.\")\n\n return SavedHttpCall(currentClient).also { result ->\n val content = response.content.readRemaining()\n\n result.request = SavedHttpRequest(result, request)\n result.response = SavedHttpResponse(result, content.readBytes(), response)\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.call\n\nimport kotlin.reflect.*\n\n/**\n * Information about type.\n */\npublic expect interface Type\n\n/**\n * Ktor type information.\n * @param type: source KClass<*>\n * @param reifiedType: type with substituted generics\n * @param kotlinType: kotlin reified type with all generic type parameters.\n */\npublic data class TypeInfo(\n val type: KClass<*>,\n val reifiedType: Type,\n val kotlinType: KType? = null\n)\n\n/**\n * Returns [TypeInfo] for the specified type [T]\n */\npublic expect inline fun typeInfo(): TypeInfo\n\n/**\n * Check [this] is instance of [type].\n */\ninternal expect fun Any.instanceOf(type: KClass<*>): Boolean\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.call\n\nimport io.ktor.client.*\nimport io.ktor.client.request.*\nimport io.ktor.http.*\nimport io.ktor.http.content.*\n\n@Suppress(\"KDocMissingDocumentation\")\npublic class UnsupportedContentTypeException(content: OutgoingContent) :\n IllegalStateException(\"Failed to write body: ${content::class}\")\n\n@Suppress(\"KDocMissingDocumentation\", \"UNUSED\")\npublic class UnsupportedUpgradeProtocolException(\n url: Url\n) : IllegalArgumentException(\"Unsupported upgrade protocol exception: $url\")\n\n/**\n * Constructs a [HttpClientCall] from this [HttpClient] and\n * with the specified HTTP request [builder].\n */\n@Deprecated(\n \"Unbound [HttpClientCall] is deprecated. Consider using [request(builder)] instead.\",\n level = DeprecationLevel.ERROR,\n replaceWith = ReplaceWith(\"this.request(builder)\", \"io.ktor.client.statement.*\")\n)\n@Suppress(\"UNUSED\", \"UNUSED_PARAMETER\", \"RedundantSuspendModifier\")\npublic suspend fun HttpClient.call(builder: HttpRequestBuilder): HttpClientCall =\n error(\"Unbound [HttpClientCall] is deprecated. Consider using [request(builder)] instead.\")\n\n/**\n * Constructs a [HttpClientCall] from this [HttpClient],\n * an [url] and an optional [block] configuring a [HttpRequestBuilder].\n */\n@Deprecated(\n \"Unbound [HttpClientCall] is deprecated. Consider using [request(urlString, block)] instead.\",\n level = DeprecationLevel.ERROR,\n replaceWith = ReplaceWith(\n \"this.request(urlString, block)\",\n \"io.ktor.client.statement.*\"\n )\n)\n@Suppress(\"UNUSED\", \"UNUSED_PARAMETER\", \"RedundantSuspendModifier\")\npublic suspend fun HttpClient.call(\n urlString: String,\n block: suspend HttpRequestBuilder.() -> Unit = {}\n): HttpClientCall = error(\n \"Unbound [HttpClientCall] is deprecated. Consider using [request(urlString, block)] instead.\"\n)\n\n/**\n * Constructs a [HttpClientCall] from this [HttpClient],\n * an [url] and an optional [block] configuring a [HttpRequestBuilder].\n */\n@Deprecated(\n \"Unbound [HttpClientCall] is deprecated. Consider using [request(url, block)] instead.\",\n level = DeprecationLevel.ERROR,\n replaceWith = ReplaceWith(\"this.request(url, block)\", \"io.ktor.client.statement.*\")\n)\n@Suppress(\"UNUSED\", \"UNUSED_PARAMETER\", \"RedundantSuspendModifier\")\npublic suspend fun HttpClient.call(\n url: Url,\n block: suspend HttpRequestBuilder.() -> Unit = {}\n): HttpClientCall = error(\n \"Unbound [HttpClientCall] is deprecated. Consider using [request(url, block)] instead.\"\n)\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.engine\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.request.*\nimport io.ktor.http.*\nimport io.ktor.util.*\nimport io.ktor.util.pipeline.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\nimport kotlin.native.concurrent.*\n\n@SharedImmutable\ninternal val CALL_COROUTINE = CoroutineName(\"call-context\")\n\n/**\n * Base interface use to define engines for [HttpClient].\n */\npublic interface HttpClientEngine : CoroutineScope, Closeable {\n /**\n * [CoroutineDispatcher] specified for io operations.\n */\n public val dispatcher: CoroutineDispatcher\n\n /**\n * Engine configuration\n */\n public val config: HttpClientEngineConfig\n\n /**\n * Set of supported engine extensions.\n */\n @KtorExperimentalAPI\n public val supportedCapabilities: Set>\n get() = emptySet()\n\n private val closed: Boolean\n get() = !(coroutineContext[Job]?.isActive ?: false)\n\n /**\n * Creates a new [HttpClientCall] specific for this engine, using a request [data].\n */\n @InternalAPI\n public suspend fun execute(data: HttpRequestData): HttpResponseData\n\n /**\n * Install engine into [HttpClient].\n */\n @InternalAPI\n public fun install(client: HttpClient) {\n client.sendPipeline.intercept(HttpSendPipeline.Engine) { content ->\n val requestData = HttpRequestBuilder().apply {\n takeFromWithExecutionContext(context)\n body = content\n }.build()\n\n validateHeaders(requestData)\n checkExtensions(requestData)\n\n val responseData = executeWithinCallContext(requestData)\n val call = HttpClientCall(client, requestData, responseData)\n\n proceedWith(call)\n }\n }\n\n /**\n * Create call context and use it as a coroutine context to [execute] request.\n */\n private suspend fun executeWithinCallContext(requestData: HttpRequestData): HttpResponseData {\n val callContext = createCallContext(requestData.executionContext)\n callContext.makeShared()\n\n val context = callContext + KtorCallContextElement(callContext)\n return async(context) {\n if (closed) {\n throw ClientEngineClosedException()\n }\n\n execute(requestData)\n }.await()\n }\n\n private fun checkExtensions(requestData: HttpRequestData) {\n for (requestedExtension in requestData.requiredCapabilities) {\n require(supportedCapabilities.contains(requestedExtension)) { \"Engine doesn't support $requestedExtension\" }\n }\n }\n}\n\n/**\n * Factory of [HttpClientEngine] with a specific [T] of [HttpClientEngineConfig].\n */\npublic interface HttpClientEngineFactory {\n /**\n * Creates a new [HttpClientEngine] optionally specifying a [block] configuring [T].\n */\n public fun create(block: T.() -> Unit = {}): HttpClientEngine\n}\n\n/**\n * Creates a new [HttpClientEngineFactory] based on this one\n * with further configurations from the [nested] block.\n */\npublic fun HttpClientEngineFactory.config(\n nested: T.() -> Unit\n): HttpClientEngineFactory {\n val parent = this\n\n return object : HttpClientEngineFactory {\n override fun create(block: T.() -> Unit): HttpClientEngine = parent.create {\n nested()\n block()\n }\n }\n}\n\n/**\n * Create call context with the specified [parentJob] to be used during call execution in the engine. Call context\n * inherits [coroutineContext], but overrides job and coroutine name so that call job's parent is [parentJob] and\n * call coroutine's name is \"call-context\".\n */\ninternal expect suspend fun HttpClientEngine.createCallContext(parentJob: Job): CoroutineContext\n\n/**\n * Validates request headers and fails if there are unsafe headers supplied\n */\nprivate fun validateHeaders(request: HttpRequestData) {\n val requestHeaders = request.headers\n val unsafeRequestHeaders = requestHeaders.names().filter {\n it in HttpHeaders.UnsafeHeadersList\n }\n if (unsafeRequestHeaders.isNotEmpty()) {\n throw UnsafeHeaderException(unsafeRequestHeaders.toString())\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.engine\n\nimport io.ktor.client.utils.*\nimport io.ktor.http.*\nimport io.ktor.http.content.*\nimport io.ktor.util.*\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\n\n/**\n * Default user agent to use in ktor client.\n */\n@InternalAPI\npublic val KTOR_DEFAULT_USER_AGENT: String = \"Ktor client\"\n\n/**\n * Merge headers from [content] and [requestHeaders] according to [OutgoingContent] properties\n */\n@InternalAPI\npublic fun mergeHeaders(\n requestHeaders: Headers,\n content: OutgoingContent,\n block: (key: String, value: String) -> Unit\n) {\n buildHeaders {\n appendAll(requestHeaders)\n appendAll(content.headers)\n }.forEach { key, values ->\n if (HttpHeaders.ContentLength == key) return@forEach // set later\n if (HttpHeaders.ContentType == key) return@forEach // set later\n\n // https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2\n block(key, values.joinToString(\",\"))\n }\n\n val missingAgent = requestHeaders[HttpHeaders.UserAgent] == null && content.headers[HttpHeaders.UserAgent] == null\n if (missingAgent && needUserAgent()) {\n block(HttpHeaders.UserAgent, KTOR_DEFAULT_USER_AGENT)\n }\n\n val type = content.contentType?.toString() ?: content.headers[HttpHeaders.ContentType]\n val length = content.contentLength?.toString() ?: content.headers[HttpHeaders.ContentLength]\n\n type?.let { block(HttpHeaders.ContentType, it) }\n length?.let { block(HttpHeaders.ContentLength, it) }\n}\n\n/**\n * Returns current call context if exists, otherwise null.\n */\n@InternalAPI\npublic suspend fun callContext(): CoroutineContext = coroutineContext[KtorCallContextElement]!!.callContext\n\n/**\n * Coroutine context element containing call job.\n */\ninternal class KtorCallContextElement(val callContext: CoroutineContext) : CoroutineContext.Element {\n override val key: CoroutineContext.Key<*>\n get() = KtorCallContextElement\n\n public companion object : CoroutineContext.Key\n}\n\n/**\n * Attach [callJob] to user job using the following logic: when user job completes with exception, [callJob] completes\n * with exception too.\n */\n@OptIn(InternalCoroutinesApi::class)\ninternal suspend inline fun attachToUserJob(callJob: Job) {\n val userJob = coroutineContext[Job] ?: return\n\n val cleanupHandler = userJob.invokeOnCompletion(onCancelling = true) { cause ->\n cause ?: return@invokeOnCompletion\n callJob.cancel(CancellationException(cause.message))\n }\n\n callJob.invokeOnCompletion {\n cleanupHandler.dispose()\n }\n}\n\nprivate fun needUserAgent(): Boolean = !PlatformUtils.IS_BROWSER\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.call\n\nimport kotlin.reflect.*\n\npublic actual interface Type\n\npublic object JsType : Type\n\n@OptIn(ExperimentalStdlibApi::class)\npublic actual inline fun typeInfo(): TypeInfo = try {\n TypeInfo(T::class, JsType, typeOf())\n} catch (_: dynamic) {\n TypeInfo(T::class, JsType)\n}\n\n/**\n * Check [this] is instance of [type].\n */\ninternal actual fun Any.instanceOf(type: KClass<*>): Boolean = type.isInstance(this)\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features\n\nimport io.ktor.client.*\nimport io.ktor.client.request.*\nimport io.ktor.util.*\n\n/**\n * [Feature] is used to set request default parameters.\n */\npublic class DefaultRequest(private val builder: HttpRequestBuilder.() -> Unit) {\n\n public companion object Feature : HttpClientFeature {\n override val key: AttributeKey = AttributeKey(\"DefaultRequest\")\n\n override fun prepare(block: HttpRequestBuilder.() -> Unit): DefaultRequest =\n DefaultRequest(block)\n\n override fun install(feature: DefaultRequest, scope: HttpClient) {\n scope.requestPipeline.intercept(HttpRequestPipeline.Before) {\n context.apply(feature.builder)\n }\n }\n }\n}\n\n/**\n * Set request default parameters.\n */\npublic fun HttpClientConfig<*>.defaultRequest(block: HttpRequestBuilder.() -> Unit) {\n install(DefaultRequest) {\n block()\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.statement.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.concurrent.*\nimport kotlin.jvm.*\nimport kotlin.native.concurrent.*\n\n@SharedImmutable\nprivate val ValidateMark = AttributeKey(\"ValidateMark\")\n\n/**\n * Default response validation.\n * Check the response status code in range (0..299).\n */\npublic fun HttpClientConfig<*>.addDefaultResponseValidation() {\n HttpResponseValidator {\n @Suppress(\"DEPRECATION\")\n expectSuccess = this@addDefaultResponseValidation.expectSuccess\n\n validateResponse { response ->\n val expectSuccess = response.call.attributes[ExpectSuccessAttributeKey]\n if (!expectSuccess) {\n return@validateResponse\n }\n\n val statusCode = response.status.value\n val originCall = response.call\n if (statusCode < 300 || originCall.attributes.contains(ValidateMark)) {\n return@validateResponse\n }\n\n val exceptionCall = originCall.save().apply {\n attributes.put(ValidateMark, Unit)\n }\n\n val exceptionResponse = exceptionCall.response\n val exceptionResponseText = exceptionResponse.readText()\n when (statusCode) {\n in 300..399 -> throw RedirectResponseException(exceptionResponse, exceptionResponseText)\n in 400..499 -> throw ClientRequestException(exceptionResponse, exceptionResponseText)\n in 500..599 -> throw ServerResponseException(exceptionResponse, exceptionResponseText)\n else -> throw ResponseException(exceptionResponse, exceptionResponseText)\n }\n }\n }\n}\n\ninternal const val NO_RESPONSE_TEXT: String = \"\"\ninternal const val DEPRECATED_EXCEPTION_CTOR: String = \"Please, provide response text in constructor\"\n\n/**\n * Base for default response exceptions.\n * @param [response]: origin response\n */\npublic open class ResponseException(\n response: HttpResponse,\n cachedResponseText: String\n) : IllegalStateException(\"Bad response: $response. Text: \\\"$cachedResponseText\\\"\") {\n @Deprecated(level = DeprecationLevel.WARNING, message = DEPRECATED_EXCEPTION_CTOR)\n public constructor(response: HttpResponse) : this(response, NO_RESPONSE_TEXT)\n\n @delegate:Transient\n private val _response: HttpResponse? by threadLocal(response)\n public val response: HttpResponse\n get() = _response ?: error(\"Failed to access response from a different native thread\")\n}\n\n/**\n * Unhandled redirect exception.\n */\n@Suppress(\"KDocMissingDocumentation\")\npublic class RedirectResponseException(response: HttpResponse, cachedResponseText: String) :\n ResponseException(response, cachedResponseText) {\n @Deprecated(level = DeprecationLevel.WARNING, message = DEPRECATED_EXCEPTION_CTOR)\n public constructor(response: HttpResponse) : this(response, NO_RESPONSE_TEXT)\n\n override val message: String? = \"Unhandled redirect: ${response.call.request.url}. \" +\n \"Status: ${response.status}. Text: \\\"$cachedResponseText\\\"\"\n}\n\n/**\n * Server error exception.\n */\n@Suppress(\"KDocMissingDocumentation\")\npublic class ServerResponseException(\n response: HttpResponse,\n cachedResponseText: String\n) : ResponseException(response, cachedResponseText) {\n @Deprecated(level = DeprecationLevel.WARNING, message = DEPRECATED_EXCEPTION_CTOR)\n public constructor(response: HttpResponse) : this(response, NO_RESPONSE_TEXT)\n\n override val message: String? = \"Server error(${response.call.request.url}: \" +\n \"${response.status}. Text: \\\"$cachedResponseText\\\"\"\n}\n\n/**\n * Bad client request exception.\n */\n@Suppress(\"KDocMissingDocumentation\")\npublic class ClientRequestException(\n response: HttpResponse,\n cachedResponseText: String\n) : ResponseException(response, cachedResponseText) {\n @Deprecated(level = DeprecationLevel.WARNING, message = DEPRECATED_EXCEPTION_CTOR)\n public constructor(response: HttpResponse) : this(response, NO_RESPONSE_TEXT)\n\n override val message: String? = \"Client request(${response.call.request.url}) \" +\n \"invalid: ${response.status}. Text: \\\"$cachedResponseText\\\"\"\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features\n\nimport io.ktor.client.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.http.*\nimport io.ktor.http.content.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.*\nimport kotlinx.coroutines.CancellationException\n\n/**\n * Install default transformers.\n * Usually installed by default so there is no need to use it\n * unless you have disabled it via [HttpClientConfig.useDefaultTransformers].\n */\npublic fun HttpClient.defaultTransformers() {\n val client = this\n\n requestPipeline.intercept(HttpRequestPipeline.Render) { body ->\n if (context.headers[HttpHeaders.Accept] == null) {\n context.headers.append(HttpHeaders.Accept, \"*/*\")\n }\n\n val contentType = context.headers[HttpHeaders.ContentType]?.let {\n ContentType.parse(it)\n }\n\n val content = when (body) {\n is String -> {\n TextContent(body, contentType ?: ContentType.Text.Plain)\n }\n is ByteArray -> object : OutgoingContent.ByteArrayContent() {\n override val contentType: ContentType = contentType ?: ContentType.Application.OctetStream\n override val contentLength: Long = body.size.toLong()\n override fun bytes(): ByteArray = body\n }\n is ByteReadChannel -> object : OutgoingContent.ReadChannelContent() {\n override val contentType: ContentType = contentType ?: ContentType.Application.OctetStream\n override fun readFrom(): ByteReadChannel = body\n }\n else -> null\n }\n\n if (content != null) {\n context.headers.remove(HttpHeaders.ContentType)\n proceedWith(content)\n }\n }\n\n responsePipeline.intercept(HttpResponsePipeline.Parse) { (info, body) ->\n if (body !is ByteReadChannel) return@intercept\n val response = context.response\n val contentLength = response.headers[HttpHeaders.ContentLength]?.toLong() ?: Long.MAX_VALUE\n\n when (info.type) {\n Unit::class -> {\n body.cancel()\n proceedWith(HttpResponseContainer(info, Unit))\n }\n Int::class -> {\n proceedWith(HttpResponseContainer(info, body.readRemaining().readText().toInt()))\n }\n ByteReadPacket::class,\n Input::class -> {\n proceedWith(HttpResponseContainer(info, body.readRemaining()))\n }\n ByteArray::class -> {\n val readRemaining = body.readRemaining(contentLength)\n if (contentLength < Long.MAX_VALUE) {\n check(readRemaining.remaining == contentLength) {\n \"Expected $contentLength, actual ${readRemaining.remaining}\"\n }\n }\n\n proceedWith(HttpResponseContainer(info, readRemaining.readBytes()))\n }\n ByteReadChannel::class -> {\n // the response job could be already completed so the job holder\n // could be cancelled immediately, but it doesn't matter\n // since the copying job is running under the client job\n val responseJobHolder = Job(response.coroutineContext[Job])\n val channel: ByteReadChannel = writer(client.coroutineContext) {\n try {\n body.copyTo(channel, limit = Long.MAX_VALUE)\n } catch (cause: CancellationException) {\n response.cancel(cause)\n throw cause\n } catch (cause: Throwable) {\n response.cancel(\"Receive failed\", cause)\n throw cause\n } finally {\n response.complete()\n }\n }.also { writerJob ->\n writerJob.invokeOnCompletion {\n responseJobHolder.complete()\n }\n }.channel\n\n proceedWith(HttpResponseContainer(info, channel))\n }\n HttpStatusCode::class -> {\n body.cancel()\n proceedWith(HttpResponseContainer(info, response.status))\n }\n }\n }\n\n platformDefaultTransformers()\n}\n\ninternal expect fun HttpClient.platformDefaultTransformers()\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features\n\nimport io.ktor.client.*\nimport io.ktor.util.*\n\n@Deprecated(\n \"[BadResponseStatusException] is deprecated. Use [ResponseException] instead.\",\n ReplaceWith(\"ResponseException\"),\n DeprecationLevel.ERROR\n)\n@Suppress(\"KDocMissingDocumentation\")\npublic typealias BadResponseStatusException = ResponseException\n\n@Deprecated(\n \"Use [HttpCallValidator] instead.\",\n ReplaceWith(\"HttpCallValidator\"),\n DeprecationLevel.ERROR\n)\n@Suppress(\"KDocMissingDocumentation\")\npublic class ExpectSuccess {\n @Suppress(\"DEPRECATION_ERROR\")\n public companion object : HttpClientFeature {\n\n override val key: AttributeKey\n get() = error(\"Deprecated\")\n\n override fun prepare(block: Unit.() -> Unit): ExpectSuccess {\n error(\"Deprecated\")\n }\n\n override fun install(feature: ExpectSuccess, scope: HttpClient) {\n error(\"Deprecated\")\n }\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.features.HttpCallValidator.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.client.utils.*\nimport io.ktor.util.*\nimport io.ktor.util.pipeline.*\nimport kotlin.native.concurrent.*\n\n/**\n * Response validator method.\n *\n * You could throw an exception to fail the response.\n */\npublic typealias ResponseValidator = suspend (response: HttpResponse) -> Unit\n\n/**\n * Response exception handler method.\n */\npublic typealias CallExceptionHandler = suspend (cause: Throwable) -> Unit\n\n/**\n * Response validator feature is used for validate response and handle response exceptions.\n *\n * See also [Config] for additional details.\n */\npublic class HttpCallValidator internal constructor(\n private val responseValidators: List,\n private val callExceptionHandlers: List,\n private val expectSuccess: Boolean\n) {\n\n /**\n * Response validator feature is used for validate response and handle response exceptions.\n *\n * See also [Config] for additional details.\n */\n @Deprecated(\n \"This is going to become internal. \" +\n \"Please file a ticket and clarify, why do you need it.\"\n )\n public constructor(\n responseValidators: List,\n callExceptionHandlers: List\n ) : this(responseValidators, callExceptionHandlers, true)\n\n private suspend fun validateResponse(response: HttpResponse) {\n responseValidators.forEach { it(response) }\n }\n\n private suspend fun processException(cause: Throwable) {\n callExceptionHandlers.forEach { it(cause) }\n }\n\n /**\n * [HttpCallValidator] configuration.\n */\n public class Config {\n internal val responseValidators: MutableList = mutableListOf()\n internal val responseExceptionHandlers: MutableList = mutableListOf()\n\n /**\n * Terminate [HttpClient.receivePipeline] if status code is not successful (>=300).\n */\n\n @Deprecated(\n \"This property is ignored. Please use `expectSuccess` property in HttpClientConfig. \" +\n \"This is going to become internal.\"\n )\n public var expectSuccess: Boolean = true\n\n /**\n * Add [CallExceptionHandler].\n * Last added handler executes first.\n */\n public fun handleResponseException(block: CallExceptionHandler) {\n responseExceptionHandlers += block\n }\n\n /**\n * Add [ResponseValidator].\n * Last added validator executes first.\n */\n public fun validateResponse(block: ResponseValidator) {\n responseValidators += block\n }\n }\n\n public companion object : HttpClientFeature {\n override val key: AttributeKey = AttributeKey(\"HttpResponseValidator\")\n\n override fun prepare(block: Config.() -> Unit): HttpCallValidator {\n val config = Config().apply(block)\n\n return HttpCallValidator(\n config.responseValidators.reversed(),\n config.responseExceptionHandlers.reversed(),\n config.expectSuccess\n )\n }\n\n override fun install(feature: HttpCallValidator, scope: HttpClient) {\n scope.requestPipeline.intercept(HttpRequestPipeline.Before) {\n try {\n context.attributes.computeIfAbsent(ExpectSuccessAttributeKey) { feature.expectSuccess }\n proceedWith(it)\n } catch (cause: Throwable) {\n val unwrappedCause = cause.unwrapCancellationException()\n feature.processException(unwrappedCause)\n throw unwrappedCause\n }\n }\n\n val BeforeReceive = PipelinePhase(\"BeforeReceive\")\n scope.responsePipeline.insertPhaseBefore(HttpResponsePipeline.Receive, BeforeReceive)\n scope.responsePipeline.intercept(BeforeReceive) { container ->\n try {\n proceedWith(container)\n } catch (cause: Throwable) {\n val unwrappedCause = cause.unwrapCancellationException()\n feature.processException(unwrappedCause)\n throw unwrappedCause\n }\n }\n\n scope[HttpSend].intercept { call, _ ->\n feature.validateResponse(call.response)\n call\n }\n }\n }\n}\n\n/**\n * Install [HttpCallValidator] with [block] configuration.\n */\npublic fun HttpClientConfig<*>.HttpResponseValidator(block: HttpCallValidator.Config.() -> Unit) {\n install(HttpCallValidator, block)\n}\n\n/**\n * Terminate [HttpClient.receivePipeline] if status code is not successful (>=300).\n */\npublic var HttpRequestBuilder.expectSuccess: Boolean\n get() = attributes.getOrNull(ExpectSuccessAttributeKey) ?: true\n set(value) = attributes.put(ExpectSuccessAttributeKey, value)\n\n@SharedImmutable\ninternal val ExpectSuccessAttributeKey = AttributeKey(\"ExpectSuccessAttribyteKey\")\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features\n\nimport io.ktor.client.*\nimport io.ktor.util.*\nimport kotlin.native.concurrent.*\n\n@SharedImmutable\ninternal val FEATURE_INSTALLED_LIST = AttributeKey(\"ApplicationFeatureRegistry\")\n\n/**\n * Base interface representing a [HttpClient] feature.\n */\npublic interface HttpClientFeature {\n /**\n * The [AttributeKey] for this feature.\n */\n public val key: AttributeKey\n\n /**\n * Builds a [TFeature] by calling the [block] with a [TConfig] config instance as receiver.\n */\n public fun prepare(block: TConfig.() -> Unit = {}): TFeature\n\n /**\n * Installs the [feature] class for a [HttpClient] defined at [scope].\n */\n public fun install(feature: TFeature, scope: HttpClient)\n}\n\n/**\n * Try to get the [feature] installed in this client. Returns `null` if the feature was not previously installed.\n */\npublic fun HttpClient.feature(feature: HttpClientFeature): F? =\n attributes.getOrNull(FEATURE_INSTALLED_LIST)?.getOrNull(feature.key)\n\n/**\n * Find the [feature] installed in [HttpClient].\n *\n * @throws [IllegalStateException] if [feature] is not installed.\n */\npublic operator fun HttpClient.get(feature: HttpClientFeature): F {\n val requestedFeature = feature(feature)\n if (requestedFeature != null) {\n return requestedFeature\n }\n\n val message = \"Feature $feature is not installed. Consider using `install(${feature.key})` in client config first.\"\n error(message)\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.http.*\nimport io.ktor.http.content.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.*\nimport kotlin.math.*\n\n/**\n * [HttpClient] feature that encodes [String] request bodies to [TextContent]\n * and processes the response body as [String].\n *\n * To configure charsets set following properties in [HttpPlainText.Config].\n */\npublic class HttpPlainText internal constructor(\n charsets: Set,\n charsetQuality: Map,\n sendCharset: Charset?,\n private val responseCharsetFallback: Charset\n) {\n private val requestCharset: Charset\n private val acceptCharsetHeader: String\n\n init {\n val withQuality = charsetQuality.toList().sortedByDescending { it.second }\n val withoutQuality = charsets.filter { !charsetQuality.containsKey(it) }.sortedBy { it.name }\n\n acceptCharsetHeader = buildString {\n withoutQuality.forEach {\n if (length > 0) append(\",\")\n append(it.name)\n }\n\n withQuality.forEach { (charset, quality) ->\n if (length > 0) append(\",\")\n\n check(quality in 0.0..1.0)\n\n val truncatedQuality = (100 * quality).roundToInt() / 100.0\n append(\"${charset.name};q=$truncatedQuality\")\n }\n\n if (isEmpty()) {\n append(responseCharsetFallback.name)\n }\n }\n\n requestCharset = sendCharset\n ?: withoutQuality.firstOrNull() ?: withQuality.firstOrNull()?.first ?: Charsets.UTF_8\n }\n\n /**\n * Charset configuration for [HttpPlainText] feature.\n */\n public class Config {\n internal val charsets: MutableSet = mutableSetOf()\n internal val charsetQuality: MutableMap = mutableMapOf()\n\n /**\n * Add [charset] to allowed list with selected [quality].\n */\n public fun register(charset: Charset, quality: Float? = null) {\n quality?.let { check(it in 0.0..1.0) }\n\n charsets.add(charset)\n\n if (quality == null) {\n charsetQuality.remove(charset)\n } else {\n charsetQuality[charset] = quality\n }\n }\n\n /**\n * Explicit [Charset] for sending content.\n *\n * Use first with highest quality from [register] charset if null.\n */\n public var sendCharset: Charset? = null\n\n /**\n * Fallback charset for the response.\n * Use it if no charset specified.\n */\n public var responseCharsetFallback: Charset = Charsets.UTF_8\n\n /**\n * Default [Charset] to use.\n */\n @Suppress(\"unused\")\n @Deprecated(\n \"Use [register] method instead.\",\n replaceWith = ReplaceWith(\"register()\"),\n level = DeprecationLevel.ERROR\n )\n public var defaultCharset: Charset = Charsets.UTF_8\n }\n\n @Suppress(\"KDocMissingDocumentation\")\n public companion object Feature : HttpClientFeature {\n override val key: AttributeKey = AttributeKey(\"HttpPlainText\")\n\n override fun prepare(block: Config.() -> Unit): HttpPlainText {\n val config = Config().apply(block)\n\n with(config) {\n return HttpPlainText(\n charsets,\n charsetQuality,\n sendCharset,\n responseCharsetFallback\n )\n }\n }\n\n override fun install(feature: HttpPlainText, scope: HttpClient) {\n scope.requestPipeline.intercept(HttpRequestPipeline.Render) { content ->\n feature.addCharsetHeaders(context)\n\n if (content !is String) {\n return@intercept\n }\n\n val contentType = context.contentType()\n if (contentType != null && contentType.contentType != ContentType.Text.Plain.contentType) {\n return@intercept\n }\n\n val contentCharset = contentType?.charset()\n proceedWith(feature.wrapContent(content, contentCharset))\n }\n\n scope.responsePipeline.intercept(HttpResponsePipeline.Parse) { (info, body) ->\n if (info.type != String::class || body !is ByteReadChannel) return@intercept\n\n val bodyBytes = body.readRemaining()\n val content = feature.read(context, bodyBytes)\n proceedWith(HttpResponseContainer(info, content))\n }\n }\n }\n\n private fun wrapContent(content: String, contentCharset: Charset?): Any {\n val charset = contentCharset ?: requestCharset\n return TextContent(content, ContentType.Text.Plain.withCharset(charset))\n }\n\n internal fun read(call: HttpClientCall, body: Input): String {\n val actualCharset = call.response.charset() ?: responseCharsetFallback\n return body.readText(charset = actualCharset)\n }\n\n internal fun addCharsetHeaders(context: HttpRequestBuilder) {\n if (context.headers[HttpHeaders.AcceptCharset] != null) return\n context.headers[HttpHeaders.AcceptCharset] = acceptCharsetHeader\n }\n\n /**\n * Deprecated\n */\n @Suppress(\"unused\", \"UNUSED_PARAMETER\")\n @Deprecated(\n \"Use [Config.register] method instead.\",\n replaceWith = ReplaceWith(\"register()\"),\n level = DeprecationLevel.ERROR\n )\n public var defaultCharset: Charset\n get() = error(\"defaultCharset is deprecated\")\n set(value) = error(\"defaultCharset is deprecated\")\n}\n\n/**\n * Configure client charsets.\n *\n * ```kotlin\n * val client = HttpClient {\n * Charsets {\n * register(Charsets.UTF_8)\n * register(Charsets.ISO_8859_1, quality = 0.1)\n * }\n * }\n * ```\n */\n@Suppress(\"FunctionName\")\npublic fun HttpClientConfig<*>.Charsets(block: HttpPlainText.Config.() -> Unit) {\n install(HttpPlainText, block)\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.request.*\nimport io.ktor.http.*\nimport io.ktor.util.*\nimport kotlinx.atomicfu.*\nimport kotlin.jvm.*\nimport kotlin.native.concurrent.*\n\n@ThreadLocal\nprivate val ALLOWED_FOR_REDIRECT: Set = setOf(HttpMethod.Get, HttpMethod.Head)\n\n/**\n * [HttpClient] feature that handles http redirect\n */\npublic class HttpRedirect {\n private val _checkHttpMethod = atomic(true)\n private val _allowHttpsDowngrade = atomic(false)\n\n /**\n * Check if the HTTP method is allowed for redirect.\n * Only [HttpMethod.Get] and [HttpMethod.Head] is allowed for implicit redirect.\n *\n * Please note: changing this flag could lead to security issues, consider changing the request URL instead.\n */\n public var checkHttpMethod: Boolean\n get() = _checkHttpMethod.value\n set(value) {\n _checkHttpMethod.value = value\n }\n\n /**\n * `true` value allows client redirect with downgrade from https to plain http.\n */\n public var allowHttpsDowngrade: Boolean\n get() = _allowHttpsDowngrade.value\n set(value) {\n _allowHttpsDowngrade.value = value\n }\n\n public companion object Feature : HttpClientFeature {\n override val key: AttributeKey = AttributeKey(\"HttpRedirect\")\n\n override fun prepare(block: HttpRedirect.() -> Unit): HttpRedirect = HttpRedirect().apply(block)\n\n override fun install(feature: HttpRedirect, scope: HttpClient) {\n scope[HttpSend].intercept { origin, context ->\n if (feature.checkHttpMethod && origin.request.method !in ALLOWED_FOR_REDIRECT) {\n return@intercept origin\n }\n\n handleCall(context, origin, feature.allowHttpsDowngrade)\n }\n }\n\n private suspend fun Sender.handleCall(\n context: HttpRequestBuilder,\n origin: HttpClientCall,\n allowHttpsDowngrade: Boolean\n ): HttpClientCall {\n if (!origin.response.status.isRedirect()) return origin\n\n var call = origin\n var requestBuilder = context\n val originProtocol = origin.request.url.protocol\n val originAuthority = origin.request.url.authority\n while (true) {\n val location = call.response.headers[HttpHeaders.Location]\n\n requestBuilder = HttpRequestBuilder().apply {\n takeFromWithExecutionContext(requestBuilder)\n url.parameters.clear()\n\n location?.let { url.takeFrom(it) }\n\n /**\n * Disallow redirect with a security downgrade.\n */\n if (!allowHttpsDowngrade && originProtocol.isSecure() && !url.protocol.isSecure()) {\n return call\n }\n\n if (originAuthority != url.authority) {\n headers.remove(HttpHeaders.Authorization)\n }\n }\n\n call = execute(requestBuilder)\n if (!call.response.status.isRedirect()) return call\n }\n }\n }\n}\n\nprivate fun HttpStatusCode.isRedirect(): Boolean = when (value) {\n HttpStatusCode.MovedPermanently.value,\n HttpStatusCode.Found.value,\n HttpStatusCode.TemporaryRedirect.value,\n HttpStatusCode.PermanentRedirect.value,\n HttpStatusCode.SeeOther.value -> true\n else -> false\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features\n\nimport io.ktor.client.*\nimport io.ktor.client.request.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\nimport kotlinx.coroutines.*\n\n/**\n * Client HTTP feature that sets up [HttpRequestBuilder.executionContext] and completes it when the pipeline is fully\n * processed.\n */\ninternal class HttpRequestLifecycle {\n /**\n * Companion object for feature installation.\n */\n companion object Feature : HttpClientFeature {\n\n override val key: AttributeKey = AttributeKey(\"RequestLifecycle\")\n\n override fun prepare(block: Unit.() -> Unit): HttpRequestLifecycle = HttpRequestLifecycle()\n\n override fun install(feature: HttpRequestLifecycle, scope: HttpClient) {\n scope.requestPipeline.intercept(HttpRequestPipeline.Before) {\n val executionContext = Job(context.executionContext).also {\n it.makeShared()\n }\n\n attachToClientEngineJob(executionContext, scope.coroutineContext[Job]!!)\n\n try {\n context.executionContext = executionContext\n proceed()\n } catch (cause: Throwable) {\n executionContext.completeExceptionally(cause)\n throw cause\n } finally {\n executionContext.complete()\n }\n }\n }\n }\n}\n\n/**\n * Attach client engine job.\n */\nprivate fun attachToClientEngineJob(\n requestJob: CompletableJob,\n clientEngineJob: Job\n) {\n clientEngineJob.makeShared()\n\n val handler = clientEngineJob.invokeOnCompletion { cause ->\n if (cause != null) {\n requestJob.cancel(\"Engine failed\", cause)\n } else {\n requestJob.complete()\n }\n }\n\n requestJob.invokeOnCompletion {\n handler.dispose()\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.request.*\nimport io.ktor.client.utils.*\nimport io.ktor.http.content.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.concurrent.*\nimport kotlinx.coroutines.*\n\n/**\n * HttpSend pipeline interceptor function\n */\npublic typealias HttpSendInterceptor = suspend Sender.(HttpClientCall, HttpRequestBuilder) -> HttpClientCall\n\n/**\n * HttpSend pipeline interceptor function backward compatible with previous implementation.\n */\npublic typealias HttpSendInterceptorBackwardCompatible = suspend Sender.(HttpClientCall) -> HttpClientCall\n\n/**\n * This interface represents a request send pipeline interceptor chain\n */\n@KtorExperimentalAPI\npublic interface Sender {\n /**\n * Execute send pipeline. It could start pipeline execution or replace the call\n */\n public suspend fun execute(requestBuilder: HttpRequestBuilder): HttpClientCall\n}\n\n/**\n * This is internal feature that is always installed.\n * @property maxSendCount is a maximum number of requests that can be sent during a call\n */\n@KtorExperimentalAPI\npublic class HttpSend(\n maxSendCount: Int = 20\n) {\n public var maxSendCount: Int by shared(maxSendCount)\n\n private val interceptors: MutableList = sharedList()\n\n init {\n makeShared()\n }\n\n /**\n * Install send pipeline starter interceptor\n */\n public fun intercept(block: HttpSendInterceptor) {\n interceptors += block\n }\n\n /**\n * Install send pipeline starter interceptor (backward compatible function).\n */\n @Deprecated(\"Intercept with one parameter is deprecated, use both call and request builder as parameters.\")\n public fun intercept(block: HttpSendInterceptorBackwardCompatible) {\n interceptors += { call, _ ->\n block(call)\n }\n }\n\n /**\n * Feature installation object\n */\n public companion object Feature : HttpClientFeature {\n override val key: AttributeKey = AttributeKey(\"HttpSend\")\n\n override fun prepare(block: HttpSend.() -> Unit): HttpSend = HttpSend().apply(block)\n\n override fun install(feature: HttpSend, scope: HttpClient) {\n // default send scenario\n scope.requestPipeline.intercept(HttpRequestPipeline.Send) { content ->\n check(content is OutgoingContent) {\n \"\"\"\n|Fail to serialize body. Content has type: ${content::class}, but OutgoingContent expected.\n|If you expect serialized body, please check that you have installed the corresponding feature(like `Json`) and set `Content-Type` header.\"\"\"\n .trimMargin()\n }\n context.body = content\n\n val sender = DefaultSender(feature.maxSendCount, scope)\n var currentCall = sender.execute(context)\n var callChanged: Boolean\n\n do {\n callChanged = false\n\n passInterceptors@ for (interceptor in feature.interceptors) {\n val transformed = interceptor(sender, currentCall, context)\n if (transformed === currentCall) continue@passInterceptors\n\n currentCall = transformed\n callChanged = true\n break@passInterceptors\n }\n } while (callChanged)\n\n proceedWith(currentCall)\n }\n }\n }\n\n private class DefaultSender(\n private val maxSendCount: Int,\n private val client: HttpClient\n ) : Sender {\n private var sentCount: Int = 0\n private var currentCall: HttpClientCall? = null\n\n override suspend fun execute(requestBuilder: HttpRequestBuilder): HttpClientCall {\n currentCall?.cancel()\n\n if (sentCount >= maxSendCount) {\n throw SendCountExceedException(\"Max send count $maxSendCount exceeded\")\n }\n\n sentCount++\n val sendResult = client.sendPipeline.execute(\n requestBuilder,\n requestBuilder.body\n )\n\n val call = sendResult as? HttpClientCall\n ?: error(\"Failed to execute send pipeline. Expected to got [HttpClientCall], but received $sendResult\")\n\n currentCall = call\n return call\n }\n }\n}\n\n/**\n * Thrown when too many actual requests were sent during a client call.\n * It could be caused by infinite or too long redirect sequence.\n * Maximum number of requests is limited by [HttpSend.maxSendCount]\n */\npublic class SendCountExceedException(message: String) : IllegalStateException(message)\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features\n\nimport io.ktor.client.*\nimport io.ktor.client.engine.*\nimport io.ktor.client.request.*\nimport io.ktor.network.sockets.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.concurrent.*\nimport kotlinx.coroutines.*\n\n/**\n * Client HTTP timeout feature. There are no default values, so default timeouts will be taken from engine configuration\n * or considered as infinite time if engine doesn't provide them.\n */\npublic class HttpTimeout(\n private val requestTimeoutMillis: Long?,\n private val connectTimeoutMillis: Long?,\n private val socketTimeoutMillis: Long?\n) {\n /**\n * [HttpTimeout] extension configuration that is used during installation.\n */\n public class HttpTimeoutCapabilityConfiguration {\n private var _requestTimeoutMillis: Long? by shared(0)\n private var _connectTimeoutMillis: Long? by shared(0)\n private var _socketTimeoutMillis: Long? by shared(0)\n\n /**\n * Creates a new instance of [HttpTimeoutCapabilityConfiguration].\n */\n @InternalAPI\n public constructor(\n requestTimeoutMillis: Long? = null,\n connectTimeoutMillis: Long? = null,\n socketTimeoutMillis: Long? = null\n ) {\n this.requestTimeoutMillis = requestTimeoutMillis\n this.connectTimeoutMillis = connectTimeoutMillis\n this.socketTimeoutMillis = socketTimeoutMillis\n }\n\n /**\n * Request timeout in milliseconds.\n */\n public var requestTimeoutMillis: Long?\n get() = _requestTimeoutMillis\n set(value) {\n _requestTimeoutMillis = checkTimeoutValue(value)\n }\n\n /**\n * Connect timeout in milliseconds.\n */\n public var connectTimeoutMillis: Long?\n get() = _connectTimeoutMillis\n set(value) {\n _connectTimeoutMillis = checkTimeoutValue(value)\n }\n\n /**\n * Socket timeout (read and write) in milliseconds.\n */\n public var socketTimeoutMillis: Long?\n get() = _socketTimeoutMillis\n set(value) {\n _socketTimeoutMillis = checkTimeoutValue(value)\n }\n\n internal fun build(): HttpTimeout = HttpTimeout(requestTimeoutMillis, connectTimeoutMillis, socketTimeoutMillis)\n\n private fun checkTimeoutValue(value: Long?): Long? {\n require(value == null || value > 0) {\n \"Only positive timeout values are allowed, for infinite timeout use HttpTimeout.INFINITE_TIMEOUT_MS\"\n }\n return value\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other == null || this::class != other::class) return false\n\n other as HttpTimeoutCapabilityConfiguration\n\n if (_requestTimeoutMillis != other._requestTimeoutMillis) return false\n if (_connectTimeoutMillis != other._connectTimeoutMillis) return false\n if (_socketTimeoutMillis != other._socketTimeoutMillis) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = _requestTimeoutMillis?.hashCode() ?: 0\n result = 31 * result + (_connectTimeoutMillis?.hashCode() ?: 0)\n result = 31 * result + (_socketTimeoutMillis?.hashCode() ?: 0)\n return result\n }\n\n public companion object {\n public val key: AttributeKey = AttributeKey(\"TimeoutConfiguration\")\n }\n }\n\n /**\n * Utils method that return true if at least one timeout is configured (has not null value).\n */\n private fun hasNotNullTimeouts() =\n requestTimeoutMillis != null || connectTimeoutMillis != null || socketTimeoutMillis != null\n\n /**\n * Companion object for feature installation.\n */\n public companion object Feature :\n HttpClientFeature,\n HttpClientEngineCapability {\n\n override val key: AttributeKey = AttributeKey(\"TimeoutFeature\")\n\n /**\n * Infinite timeout in milliseconds.\n */\n public const val INFINITE_TIMEOUT_MS: Long = Long.MAX_VALUE\n\n override fun prepare(block: HttpTimeoutCapabilityConfiguration.() -> Unit): HttpTimeout =\n HttpTimeoutCapabilityConfiguration().apply(block).build()\n\n override fun install(feature: HttpTimeout, scope: HttpClient) {\n scope.requestPipeline.intercept(HttpRequestPipeline.Before) {\n var configuration = context.getCapabilityOrNull(HttpTimeout)\n if (configuration == null && feature.hasNotNullTimeouts()) {\n configuration = HttpTimeoutCapabilityConfiguration()\n context.setCapability(HttpTimeout, configuration)\n }\n\n configuration?.apply {\n connectTimeoutMillis = connectTimeoutMillis ?: feature.connectTimeoutMillis\n socketTimeoutMillis = socketTimeoutMillis ?: feature.socketTimeoutMillis\n requestTimeoutMillis = requestTimeoutMillis ?: feature.requestTimeoutMillis\n\n val requestTimeout = requestTimeoutMillis ?: feature.requestTimeoutMillis\n if (requestTimeout == null || requestTimeout == INFINITE_TIMEOUT_MS) return@apply\n\n val executionContext = context.executionContext\n val killer = scope.launch {\n delay(requestTimeout)\n executionContext.cancel(HttpRequestTimeoutException(context))\n }\n\n context.executionContext.invokeOnCompletion {\n killer.cancel()\n }\n }\n }\n }\n }\n}\n\n/**\n * Adds timeout boundaries to the request. Requires [HttpTimeout] feature to be installed.\n */\npublic fun HttpRequestBuilder.timeout(block: HttpTimeout.HttpTimeoutCapabilityConfiguration.() -> Unit): Unit =\n setCapability(HttpTimeout, HttpTimeout.HttpTimeoutCapabilityConfiguration().apply(block))\n\n/**\n * This exception is thrown in case request timeout exceeded.\n */\npublic class HttpRequestTimeoutException(\n request: HttpRequestBuilder\n) : CancellationException(\n \"Request timeout has been expired [url=${request.url.buildString()}, \" +\n \"request_timeout=${request.getCapabilityOrNull(HttpTimeout)?.requestTimeoutMillis ?: \"unknown\"} ms]\"\n)\n\n/**\n * This exception is thrown in case connect timeout exceeded.\n */\npublic fun ConnectTimeoutException(\n request: HttpRequestData,\n cause: Throwable? = null\n): ConnectTimeoutException = ConnectTimeoutException(\n \"Connect timeout has been expired [url=${request.url}, \" +\n \"connect_timeout=${request.getCapabilityOrNull(HttpTimeout)?.connectTimeoutMillis ?: \"unknown\"} ms]\",\n cause\n)\n\n/**\n * This exception is thrown in case connect timeout exceeded.\n */\npublic fun ConnectTimeoutException(\n url: String,\n timeout: Long?,\n cause: Throwable? = null\n): ConnectTimeoutException = ConnectTimeoutException(\n \"Connect timeout has been expired [url=$url, connect_timeout=${timeout ?: \"unknown\"} ms]\",\n cause\n)\n\n/**\n * This exception is thrown in case socket timeout (read or write) exceeded.\n */\npublic fun SocketTimeoutException(\n request: HttpRequestData,\n cause: Throwable? = null\n): SocketTimeoutException = SocketTimeoutException(\n \"Socket timeout has been expired [url=${request.url}, \" +\n \"socket_timeout=${request.getCapabilityOrNull(HttpTimeout)?.socketTimeoutMillis ?: \"unknown\"}] ms\",\n cause\n)\n\n/**\n * Convert long timeout in milliseconds to int value. To do that we need to consider [HttpTimeout.INFINITE_TIMEOUT_MS]\n * as zero and convert timeout value to [Int].\n */\n@InternalAPI\npublic fun convertLongTimeoutToIntWithInfiniteAsZero(timeout: Long): Int = when {\n timeout == HttpTimeout.INFINITE_TIMEOUT_MS -> 0\n timeout < Int.MIN_VALUE -> Int.MIN_VALUE\n timeout > Int.MAX_VALUE -> Int.MAX_VALUE\n else -> timeout.toInt()\n}\n\n/**\n * Convert long timeout in milliseconds to long value. To do that we need to consider [HttpTimeout.INFINITE_TIMEOUT_MS]\n * as zero and convert timeout value to [Int].\n */\n@InternalAPI\npublic fun convertLongTimeoutToLongWithInfiniteAsZero(timeout: Long): Long = when (timeout) {\n HttpTimeout.INFINITE_TIMEOUT_MS -> 0L\n else -> timeout\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features.cookies\n\nimport io.ktor.client.*\nimport io.ktor.client.features.*\nimport io.ktor.client.features.cookies.HttpCookies.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.http.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.*\n\n/**\n * [HttpClient] feature that handles sent `Cookie`, and received `Set-Cookie` headers,\n * using a specific [storage] for storing and retrieving cookies.\n *\n * You can configure the [Config.storage] and to provide [Config.default] blocks to set\n * cookies when installing.\n */\npublic class HttpCookies(\n private val storage: CookiesStorage,\n private val defaults: List Unit>\n) : Closeable {\n private val initializer: Job = GlobalScope.launch(Dispatchers.Unconfined) {\n defaults.forEach { it(storage) }\n }\n\n /**\n * Find all cookies by [requestUrl].\n */\n public suspend fun get(requestUrl: Url): List {\n initializer.join()\n return storage.get(requestUrl)\n }\n\n internal suspend fun sendCookiesWith(builder: HttpRequestBuilder) {\n val cookies = get(builder.url.clone().build())\n\n with(builder) {\n if (cookies.isNotEmpty()) {\n headers[HttpHeaders.Cookie] = renderClientCookies(cookies)\n } else {\n headers.remove(HttpHeaders.Cookie)\n }\n }\n }\n\n internal suspend fun saveCookiesFrom(response: HttpResponse) {\n val url = response.request.url\n response.setCookie().forEach {\n storage.addCookie(url, it)\n }\n }\n\n override fun close() {\n storage.close()\n }\n\n /**\n * [HttpCookies] configuration.\n */\n public class Config {\n private val defaults = mutableListOf Unit>()\n\n /**\n * [CookiesStorage] that will be used at this feature.\n * By default it just uses an initially empty in-memory [AcceptAllCookiesStorage].\n */\n public var storage: CookiesStorage = AcceptAllCookiesStorage()\n\n /**\n * Registers a [block] that will be called when the configuration is complete the specified [storage].\n * The [block] can potentially add new cookies by calling [CookiesStorage.addCookie].\n */\n public fun default(block: suspend CookiesStorage.() -> Unit) {\n defaults.add(block)\n }\n\n internal fun build(): HttpCookies = HttpCookies(storage, defaults)\n }\n\n public companion object : HttpClientFeature {\n override fun prepare(block: Config.() -> Unit): HttpCookies = Config().apply(block).build()\n\n override val key: AttributeKey = AttributeKey(\"HttpCookies\")\n\n override fun install(feature: HttpCookies, scope: HttpClient) {\n scope.sendPipeline.intercept(HttpSendPipeline.State) {\n feature.sendCookiesWith(context)\n }\n\n scope.receivePipeline.intercept(HttpReceivePipeline.State) { response ->\n feature.saveCookiesFrom(response)\n }\n }\n }\n}\n\nprivate fun renderClientCookies(cookies: List): String = buildString {\n cookies.forEach {\n append(it.name)\n append('=')\n append(encodeCookieValue(it.value, it.encoding))\n append(';')\n }\n}\n\n/**\n * Gets all the cookies for the specified [url] for this [HttpClient].\n */\npublic suspend fun HttpClient.cookies(url: Url): List = feature(HttpCookies)?.get(url) ?: emptyList()\n\n/**\n * Gets all the cookies for the specified [urlString] for this [HttpClient].\n */\npublic suspend fun HttpClient.cookies(urlString: String): List =\n feature(HttpCookies)?.get(Url(urlString)) ?: emptyList()\n\n/**\n * Find the [Cookie] by [name]\n */\npublic operator fun List.get(name: String): Cookie? = find { it.name == name }\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features.observer\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.http.*\nimport io.ktor.util.*\nimport io.ktor.util.date.*\nimport io.ktor.utils.io.*\nimport kotlin.coroutines.*\n\n/**\n * Wrap existing [HttpClientCall] with new [content].\n */\n@Deprecated(\n \"Parameter [shouldCloseOrigin] is deprecated\",\n ReplaceWith(\"wrapWithContent(content)\"),\n level = DeprecationLevel.ERROR\n)\npublic fun HttpClientCall.wrapWithContent(\n content: ByteReadChannel,\n shouldCloseOrigin: Boolean\n): HttpClientCall = wrapWithContent(content)\n\n/**\n * Wrap existing [HttpClientCall] with new [content].\n */\n@KtorExperimentalAPI\npublic fun HttpClientCall.wrapWithContent(content: ByteReadChannel): HttpClientCall {\n val currentClient = client ?: error(\"Fail to create response observer in different native thread.\")\n\n return DelegatedCall(currentClient, content, this)\n}\n\ninternal class DelegatedCall(\n client: HttpClient,\n content: ByteReadChannel,\n originCall: HttpClientCall\n) : HttpClientCall(client) {\n\n init {\n request = DelegatedRequest(this, originCall.request)\n response = DelegatedResponse(this, content, originCall.response)\n }\n}\n\ninternal class DelegatedRequest(\n override val call: HttpClientCall,\n origin: HttpRequest\n) : HttpRequest by origin\n\ninternal class DelegatedResponse(\n override val call: HttpClientCall,\n override val content: ByteReadChannel,\n private val origin: HttpResponse\n) : HttpResponse() {\n override val coroutineContext: CoroutineContext = origin.coroutineContext\n\n override val status: HttpStatusCode get() = origin.status\n\n override val version: HttpProtocolVersion get() = origin.version\n\n override val requestTime: GMTDate get() = origin.requestTime\n\n override val responseTime: GMTDate get() = origin.responseTime\n\n override val headers: Headers get() = origin.headers\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features.observer\n\nimport io.ktor.client.*\nimport io.ktor.client.features.*\nimport io.ktor.client.statement.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\nimport kotlinx.coroutines.*\n\n/**\n * [ResponseObserver] callback.\n */\npublic typealias ResponseHandler = suspend (HttpResponse) -> Unit\n\n/**\n * Observe response feature.\n */\npublic class ResponseObserver(\n private val responseHandler: ResponseHandler\n) {\n public class Config {\n internal var responseHandler: ResponseHandler = {}\n\n /**\n * Set response handler for logging.\n */\n public fun onResponse(block: ResponseHandler) {\n responseHandler = block\n }\n }\n\n public companion object Feature : HttpClientFeature {\n\n override val key: AttributeKey = AttributeKey(\"BodyInterceptor\")\n\n override fun prepare(block: Config.() -> Unit): ResponseObserver =\n ResponseObserver(Config().apply(block).responseHandler)\n\n override fun install(feature: ResponseObserver, scope: HttpClient) {\n scope.receivePipeline.intercept(HttpReceivePipeline.After) { response ->\n val (loggingContent, responseContent) = response.content.split(response)\n\n val newClientCall = context.wrapWithContent(responseContent)\n val sideCall = newClientCall.wrapWithContent(loggingContent)\n\n scope.launch {\n try {\n feature.responseHandler(sideCall.response)\n } catch (_: Throwable) {\n }\n\n val content = sideCall.response.content\n if (!content.isClosedForRead) {\n content.discard()\n }\n }\n\n context.response = newClientCall.response\n context.request = newClientCall.request\n\n @Suppress(\"UNCHECKED_CAST\")\n (response.coroutineContext[Job] as CompletableJob).complete()\n proceedWith(context.response)\n }\n }\n }\n}\n\n/**\n * Install [ResponseObserver] feature in client.\n */\npublic fun HttpClientConfig<*>.ResponseObserver(block: ResponseHandler) {\n install(ResponseObserver) {\n responseHandler = block\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features.websocket\n\nimport io.ktor.client.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.http.*\nimport io.ktor.http.cio.websocket.*\n\n/**\n * Install [WebSockets] feature using the [config] as configuration.\n */\npublic fun HttpClientConfig<*>.WebSockets(config: WebSockets.Config.() -> Unit) {\n install(WebSockets) {\n config()\n }\n}\n\n/**\n * Open [DefaultClientWebSocketSession].\n */\n@OptIn(WebSocketInternalAPI::class)\npublic suspend fun HttpClient.webSocketSession(\n block: HttpRequestBuilder.() -> Unit\n): DefaultClientWebSocketSession = request {\n url {\n protocol = URLProtocol.WS\n port = protocol.defaultPort\n }\n block()\n}\n\n/**\n * Open [DefaultClientWebSocketSession].\n */\n@OptIn(WebSocketInternalAPI::class)\npublic suspend fun HttpClient.webSocketSession(\n method: HttpMethod = HttpMethod.Get,\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n block: HttpRequestBuilder.() -> Unit = {}\n): DefaultClientWebSocketSession = webSocketSession {\n this.method = method\n url(\"ws\", host, port, path)\n block()\n}\n\n/**\n * Open [block] with [DefaultClientWebSocketSession].\n */\npublic suspend fun HttpClient.webSocket(\n request: HttpRequestBuilder.() -> Unit,\n block: suspend DefaultClientWebSocketSession.() -> Unit\n) {\n val session = request {\n url {\n protocol = URLProtocol.WS\n port = protocol.defaultPort\n }\n request()\n }\n\n session.receive {\n try {\n block(it)\n } finally {\n it.close()\n }\n }\n}\n\n/**\n * Open [block] with [DefaultClientWebSocketSession].\n */\npublic suspend fun HttpClient.webSocket(\n method: HttpMethod = HttpMethod.Get,\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n request: HttpRequestBuilder.() -> Unit = {},\n block: suspend DefaultClientWebSocketSession.() -> Unit\n) {\n webSocket(\n {\n this.method = method\n url(\"ws\", host, port, path)\n request()\n },\n block\n )\n}\n\n/**\n * Open [block] with [DefaultClientWebSocketSession].\n */\npublic suspend fun HttpClient.webSocket(\n urlString: String,\n request: HttpRequestBuilder.() -> Unit = {},\n block: suspend DefaultClientWebSocketSession.() -> Unit\n) {\n webSocket(\n HttpMethod.Get,\n \"localhost\",\n DEFAULT_PORT,\n \"/\",\n {\n url.protocol = URLProtocol.WS\n url.port = port\n\n url.takeFrom(urlString)\n request()\n },\n block\n )\n}\n\n/**\n * Open [block] with [DefaultClientWebSocketSession].\n */\npublic suspend fun HttpClient.ws(\n method: HttpMethod = HttpMethod.Get,\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n request: HttpRequestBuilder.() -> Unit = {},\n block: suspend DefaultClientWebSocketSession.() -> Unit\n): Unit = webSocket(method, host, port, path, request, block)\n\n/**\n * Open [block] with [DefaultClientWebSocketSession].\n */\npublic suspend fun HttpClient.ws(\n request: HttpRequestBuilder.() -> Unit,\n block: suspend DefaultClientWebSocketSession.() -> Unit\n): Unit = webSocket(request, block)\n\n/**\n * Open [block] with [DefaultClientWebSocketSession].\n */\npublic suspend fun HttpClient.ws(\n urlString: String,\n request: HttpRequestBuilder.() -> Unit = {},\n block: suspend DefaultClientWebSocketSession.() -> Unit\n): Unit = webSocket(urlString, request, block)\n\n/**\n * Open [block] with secure [DefaultClientWebSocketSession].\n */\npublic suspend fun HttpClient.wss(\n request: HttpRequestBuilder.() -> Unit,\n block: suspend DefaultClientWebSocketSession.() -> Unit\n): Unit = webSocket(\n {\n url.protocol = URLProtocol.WSS\n url.port = url.protocol.defaultPort\n request()\n },\n block = block\n)\n\n/**\n * Open [block] with secure [DefaultClientWebSocketSession].\n */\npublic suspend fun HttpClient.wss(\n urlString: String,\n request: HttpRequestBuilder.() -> Unit = {},\n block: suspend DefaultClientWebSocketSession.() -> Unit\n): Unit = wss(\n {\n url.takeFrom(urlString)\n request()\n },\n block = block\n)\n\n/**\n * Open [block] with secure [DefaultClientWebSocketSession].\n */\npublic suspend fun HttpClient.wss(\n method: HttpMethod = HttpMethod.Get,\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n request: HttpRequestBuilder.() -> Unit = {},\n block: suspend DefaultClientWebSocketSession.() -> Unit\n): Unit = webSocket(\n method,\n host,\n port,\n path,\n request = {\n url.protocol = URLProtocol.WSS\n url.port = port\n\n request()\n },\n block = block\n)\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.statement\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.engine.*\nimport io.ktor.client.features.*\nimport io.ktor.client.request.*\nimport io.ktor.http.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.*\n\n/**\n * Prepared statement for http client request.\n * This statement doesn't perform any network requests until [execute] method call.\n *\n * [HttpStatement] is safe to execute multiple times.\n */\npublic class HttpStatement(\n private val builder: HttpRequestBuilder,\n private val client: HttpClient\n) {\n init {\n checkCapabilities()\n }\n\n /**\n * Executes this statement and call the [block] with the streaming [response].\n *\n * The [response] argument holds a network connection until the [block] isn't completed. You can read the body\n * on-demand or at once with [receive()] method.\n *\n * After [block] finishes, [response] will be completed body will be discarded or released depends on the engine configuration.\n *\n * Please note: the [response] instance will be canceled and shouldn't be passed outside of [block].\n */\n public suspend fun execute(block: suspend (response: HttpResponse) -> T): T {\n val response: HttpResponse = executeUnsafe()\n\n try {\n return block(response)\n } finally {\n response.cleanup()\n }\n }\n\n /**\n * Executes this statement and download the response.\n * After the method finishes, the client downloads the response body in memory and release the connection.\n *\n * To receive exact type you consider using [receive()] method.\n */\n public suspend fun execute(): HttpResponse = execute {\n val savedCall = it.call.save()\n savedCall.response\n }\n\n /**\n * Executes this statement and run [HttpClient.responsePipeline] with the response and expected type [T].\n *\n * Note if T is a streaming type, you should manage how to close it manually.\n */\n @OptIn(ExperimentalStdlibApi::class)\n public suspend inline fun receive(): T = when (T::class) {\n HttpStatement::class -> this as T\n HttpResponse::class -> execute() as T\n else -> {\n val response = executeUnsafe()\n try {\n response.receive()\n } finally {\n response.complete()\n }\n }\n }\n\n /**\n * Executes this statement and run the [block] with a [HttpClient.responsePipeline] execution result.\n *\n * Note that T can be a streamed type such as [ByteReadChannel].\n */\n public suspend inline fun receive(crossinline block: suspend (response: T) -> R): R {\n val response: HttpResponse = executeUnsafe()\n try {\n val result = response.receive()\n return block(result)\n } finally {\n response.cleanup()\n }\n }\n\n /**\n * Return [HttpResponse] with open streaming body.\n */\n @PublishedApi\n internal suspend fun executeUnsafe(): HttpResponse {\n val builder = HttpRequestBuilder().takeFromWithExecutionContext(builder)\n @Suppress(\"DEPRECATION_ERROR\")\n val call = client.execute(builder)\n return call.response\n }\n\n /**\n * Complete [HttpResponse] and release resources.\n */\n @PublishedApi\n internal suspend fun HttpResponse.cleanup() {\n val job = coroutineContext[Job]!! as CompletableJob\n\n job.apply {\n complete()\n try {\n content.cancel()\n } catch (_: Throwable) {\n }\n join()\n }\n }\n\n /**\n * Check that all request configuration related to client capabilities have correspondent features installed.\n */\n private fun checkCapabilities() {\n builder.attributes.getOrNull(ENGINE_CAPABILITIES_KEY)?.keys\n ?.filterIsInstance>()\n ?.forEach {\n requireNotNull(client.feature(it)) {\n \"Consider installing $it feature because the request requires it to be installed\"\n }\n }\n }\n\n override fun toString(): String = \"HttpStatement[${builder.url.buildString()}]\"\n}\n\n@Deprecated(\n \"[HttpStatement] isn't closeable.\",\n level = DeprecationLevel.ERROR,\n replaceWith = ReplaceWith(\"this.execute(block)\")\n)\n@Suppress(\"unused\", \"KDocMissingDocumentation\", \"UNUSED_PARAMETER\")\npublic fun HttpStatement.use(block: suspend (response: HttpResponse) -> T) {\n}\n\n@Deprecated(\n \"Unbound [HttpResponse] is deprecated. Consider using [execute()] instead.\",\n level = DeprecationLevel.ERROR,\n replaceWith = ReplaceWith(\"this.execute()\")\n)\n@Suppress(\"KDocMissingDocumentation\", \"unused\")\npublic val HttpStatement.response: HttpResponse\n get() = error(\"Unbound [HttpClientCall] is deprecated. Consider using [HttpResponse] instead.\")\n\n/**\n * Read the [HttpResponse.content] as a String. You can pass an optional [charset]\n * to specify a charset in the case no one is specified as part of the Content-Type response.\n * If no charset specified either as parameter or as part of the response,\n * [io.ktor.client.features.HttpPlainText] settings will be used.\n *\n * Note that [fallbackCharset] parameter will be ignored if the response already has a charset.\n * So it just acts as a fallback, honoring the server preference.\n */\npublic suspend fun HttpResponse.readText(fallbackCharset: Charset? = null): String {\n val originCharset = charset() ?: fallbackCharset ?: Charsets.UTF_8\n val decoder = originCharset.newDecoder()\n val input = receive()\n\n return decoder.decode(input)\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.request\n\nimport io.ktor.http.*\nimport io.ktor.http.content.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\n\n@Suppress(\"KDocMissingDocumentation\")\n@InternalAPI\npublic abstract class ClientUpgradeContent : OutgoingContent.NoContent() {\n private val content: ByteChannel by lazy { ByteChannel() }\n\n public val output: ByteWriteChannel get() = content\n\n public suspend fun pipeTo(output: ByteWriteChannel) {\n content.copyAndClose(output)\n }\n\n public abstract fun verify(headers: Headers)\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.request\n\nimport io.ktor.client.call.*\nimport io.ktor.http.*\nimport io.ktor.http.content.*\nimport io.ktor.util.*\nimport kotlin.coroutines.*\n\n/**\n * Default [HttpRequest] implementation.\n */\n@InternalAPI\npublic open class DefaultHttpRequest(override val call: HttpClientCall, data: HttpRequestData) : HttpRequest {\n override val coroutineContext: CoroutineContext get() = call.coroutineContext\n\n override val method: HttpMethod = data.method\n\n override val url: Url = data.url\n\n override val content: OutgoingContent = data.body\n\n override val headers: Headers = data.headers\n\n override val attributes: Attributes = data.attributes\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.request\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.engine.*\nimport io.ktor.client.utils.*\nimport io.ktor.http.*\nimport io.ktor.http.content.*\nimport io.ktor.util.*\nimport io.ktor.util.date.*\nimport io.ktor.utils.io.*\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\n\n/**\n * A request for [HttpClient], first part of [HttpClientCall].\n */\npublic interface HttpRequest : HttpMessage, CoroutineScope {\n /**\n * The associated [HttpClientCall] containing both\n * the underlying [HttpClientCall.request] and [HttpClientCall.response].\n */\n public val call: HttpClientCall\n\n override val coroutineContext: CoroutineContext get() = call.coroutineContext\n\n /**\n * The [HttpMethod] or HTTP VERB used for this request.\n */\n public val method: HttpMethod\n\n /**\n * The [Url] representing the endpoint and the uri for this request.\n */\n public val url: Url\n\n /**\n * Typed [Attributes] associated to this call serving as a lightweight container.\n */\n public val attributes: Attributes\n\n @Deprecated(\n \"Binary compatibility.\",\n level = DeprecationLevel.HIDDEN\n )\n @Suppress(\"unused\", \"KDocMissingDocumentation\")\n public val executionContext: Job\n get() = coroutineContext[Job]!!\n\n /**\n * An [OutgoingContent] representing the request body\n */\n public val content: OutgoingContent\n}\n\n/**\n * Class for building [HttpRequestData].\n */\npublic class HttpRequestBuilder : HttpMessageBuilder {\n /**\n * [URLBuilder] to configure the URL for this request.\n */\n public val url: URLBuilder = URLBuilder()\n\n /**\n * [HttpMethod] used by this request. [HttpMethod.Get] by default.\n */\n public var method: HttpMethod = HttpMethod.Get\n\n /**\n * [HeadersBuilder] to configure the headers for this request.\n */\n override val headers: HeadersBuilder = HeadersBuilder()\n\n /**\n * The [body] for this request. Initially [EmptyContent].\n */\n public var body: Any = EmptyContent\n\n /**\n * A deferred used to control the execution of this request.\n */\n @KtorExperimentalAPI\n public var executionContext: Job = SupervisorJob()\n .also { it.makeShared() }\n internal set(value) {\n value.makeShared()\n field = value\n }\n\n /**\n * Call specific attributes.\n */\n public val attributes: Attributes = Attributes(concurrent = true)\n\n /**\n * Executes a [block] that configures the [URLBuilder] associated to this request.\n */\n public fun url(block: URLBuilder.(URLBuilder) -> Unit): Unit = url.block(url)\n\n /**\n * Create immutable [HttpRequestData]\n */\n public fun build(): HttpRequestData = HttpRequestData(\n url.build(),\n method,\n headers.build(),\n body as? OutgoingContent ?: error(\"No request transformation found: $body\"),\n executionContext,\n attributes\n )\n\n /**\n * Set request specific attributes specified by [block].\n */\n public fun setAttributes(block: Attributes.() -> Unit) {\n attributes.apply(block)\n }\n\n /**\n * Mutates [this] copying all the data from another [builder] using it as base.\n */\n @InternalAPI\n public fun takeFromWithExecutionContext(builder: HttpRequestBuilder): HttpRequestBuilder {\n executionContext = builder.executionContext\n return takeFrom(builder)\n }\n\n /**\n * Mutates [this] copying all the data but execution context from another [builder] using it as base.\n */\n public fun takeFrom(builder: HttpRequestBuilder): HttpRequestBuilder {\n method = builder.method\n body = builder.body\n url.takeFrom(builder.url)\n url.encodedPath = if (url.encodedPath.isBlank()) \"/\" else url.encodedPath\n headers.appendAll(builder.headers)\n builder.attributes.allKeys.forEach {\n @Suppress(\"UNCHECKED_CAST\")\n attributes.put(it as AttributeKey, builder.attributes[it])\n }\n\n return this\n }\n\n /**\n * Set capability configuration.\n */\n @KtorExperimentalAPI\n public fun setCapability(key: HttpClientEngineCapability, capability: T) {\n val capabilities = attributes.computeIfAbsent(ENGINE_CAPABILITIES_KEY) { sharedMap() }\n capabilities[key] = capability\n }\n\n /**\n * Retrieve capability by key.\n */\n @KtorExperimentalAPI\n public fun getCapabilityOrNull(key: HttpClientEngineCapability): T? {\n @Suppress(\"UNCHECKED_CAST\")\n return attributes.getOrNull(ENGINE_CAPABILITIES_KEY)?.get(key) as T?\n }\n\n public companion object\n}\n\n/**\n * Actual data of the [HttpRequest], including [url], [method], [headers], [body] and [executionContext].\n * Built by [HttpRequestBuilder].\n */\npublic class HttpRequestData @InternalAPI constructor(\n public val url: Url,\n public val method: HttpMethod,\n public val headers: Headers,\n public val body: OutgoingContent,\n public val executionContext: Job,\n public val attributes: Attributes\n) {\n /**\n * Retrieve extension by it's key.\n */\n @KtorExperimentalAPI\n public fun getCapabilityOrNull(key: HttpClientEngineCapability): T? {\n @Suppress(\"UNCHECKED_CAST\")\n return attributes.getOrNull(ENGINE_CAPABILITIES_KEY)?.get(key) as T?\n }\n\n /**\n * All extension keys associated with this request.\n */\n internal val requiredCapabilities: Set> =\n attributes.getOrNull(ENGINE_CAPABILITIES_KEY)?.keys ?: emptySet()\n\n override fun toString(): String = \"HttpRequestData(url=$url, method=$method)\"\n}\n\n/**\n * Data prepared for [HttpResponse].\n */\npublic class HttpResponseData constructor(\n public val statusCode: HttpStatusCode,\n public val requestTime: GMTDate,\n public val headers: Headers,\n public val version: HttpProtocolVersion,\n public val body: Any,\n public val callContext: CoroutineContext\n) {\n public val responseTime: GMTDate = GMTDate()\n\n override fun toString(): String = \"HttpResponseData=(statusCode=$statusCode)\"\n}\n\n/**\n * Executes a [block] that configures the [HeadersBuilder] associated to this request.\n */\npublic fun HttpRequestBuilder.headers(block: HeadersBuilder.() -> Unit): HeadersBuilder = headers.apply(block)\n\n/**\n * Mutates [this] copying all the data from another [request] using it as base.\n */\npublic fun HttpRequestBuilder.takeFrom(request: HttpRequest): HttpRequestBuilder {\n method = request.method\n body = request.content\n url.takeFrom(request.url)\n headers.appendAll(request.headers)\n\n return this\n}\n\n/**\n * Executes a [block] that configures the [URLBuilder] associated to this request.\n */\npublic fun HttpRequestBuilder.url(block: URLBuilder.() -> Unit): Unit = block(url)\n\n/**\n * Sets the [HttpRequestBuilder] from [request].\n */\npublic fun HttpRequestBuilder.takeFrom(request: HttpRequestData): HttpRequestBuilder {\n method = request.method\n body = request.body\n url.takeFrom(request.url)\n headers.appendAll(request.headers)\n\n return this\n}\n\n/**\n * Executes a [block] that configures the [URLBuilder] associated to thisrequest.\n */\npublic operator fun HttpRequestBuilder.Companion.invoke(block: URLBuilder.() -> Unit): HttpRequestBuilder =\n HttpRequestBuilder().apply { url(block) }\n\n/**\n * Sets the [url] using the specified [scheme], [host], [port] and [path].\n */\npublic fun HttpRequestBuilder.url(\n scheme: String = \"http\",\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n block: URLBuilder.() -> Unit = {}\n): Unit { // ktlint-disable filename no-unit-return\n url.apply {\n protocol = URLProtocol.createOrDefault(scheme)\n this.host = host\n this.port = port\n encodedPath = path\n block(url)\n }\n}\n\n/**\n * Constructs a [HttpRequestBuilder] from URL information: [scheme], [host], [port] and [path]\n * and optionally further configures it using [block].\n */\npublic operator fun HttpRequestBuilder.Companion.invoke(\n scheme: String = \"http\",\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n block: URLBuilder.() -> Unit = {}\n): HttpRequestBuilder = HttpRequestBuilder().apply { url(scheme, host, port, path, block) }\n\n/**\n * Sets the [HttpRequestBuilder.url] from [urlString].\n */\npublic fun HttpRequestBuilder.url(urlString: String): Unit { // ktlint-disable filename no-unit-return\n url.takeFrom(urlString)\n}\n\n@InternalAPI\n@Suppress(\"KDocMissingDocumentation\")\npublic fun HttpRequestData.isUpgradeRequest(): Boolean {\n return body is ClientUpgradeContent\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.request\n\nimport io.ktor.client.*\nimport io.ktor.http.*\n\n/**\n * Executes a [HttpClient] GET request, with the specified [url] as Url and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.get(\n url: Url,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = get {\n this.url.takeFrom(url)\n block()\n}\n\n/**\n * Executes a [HttpClient] POST request, with the specified [url] as Url and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.post(\n url: Url,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = post {\n this.url.takeFrom(url)\n block()\n}\n\n/**\n * Executes a [HttpClient] PUT request, with the specified [url] as Url and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.put(\n url: Url,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = put {\n this.url.takeFrom(url)\n block()\n}\n\n/**\n * Executes a [HttpClient] PATCH request, with the specified [url] as Url and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.patch(\n url: Url,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = patch {\n this.url.takeFrom(url)\n block()\n}\n\n/**\n * Executes a [HttpClient] OPTIONS request, with the specified [url] as Url and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.options(\n url: Url,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = options {\n this.url.takeFrom(url)\n block()\n}\n\n/**\n * Executes a [HttpClient] HEAD request, with the specified [url] as Url and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.head(\n url: Url,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = head {\n this.url.takeFrom(url)\n block()\n}\n\n/**\n * Executes a [HttpClient] HEAD request, with the specified [url] as Url and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.delete(\n url: Url,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = delete {\n this.url.takeFrom(url)\n block()\n}\n\n/**\n * Sets the [HttpRequestBuilder.url] from [url].\n */\npublic fun HttpRequestBuilder.url(url: Url): Unit { // ktlint-disable no-unit-return\n this.url.takeFrom(url)\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.request.forms\n\nimport io.ktor.client.*\nimport io.ktor.client.request.*\nimport io.ktor.http.*\nimport io.ktor.http.content.*\n\n/**\n * Submit [formParameters] request.\n *\n * If [encodeInQuery] specified encode [formParameters] in url parameters and use [HttpMethod.Get] for the request.\n * Otherwise send [HttpMethod.Post] request with [formParameters] encoded in body.\n *\n * [formParameters] encoded using application/x-www-form-urlencoded format.\n */\npublic suspend inline fun HttpClient.submitForm(\n formParameters: Parameters = Parameters.Empty,\n encodeInQuery: Boolean = false,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = request {\n if (encodeInQuery) {\n method = HttpMethod.Get\n url.parameters.appendAll(formParameters)\n } else {\n method = HttpMethod.Post\n body = FormDataContent(formParameters)\n }\n\n block()\n}\n\n/**\n * Submit [formParameters] request.\n *\n * If [encodeInQuery] specified encode [formParameters] in url parameters and use [HttpMethod.Get] for the request.\n * Otherwise send [HttpMethod.Post] request with [formParameters] encoded in body.\n *\n * [url] destination\n * [formParameters] encoded using application/x-www-form-urlencoded format.\n */\npublic suspend inline fun HttpClient.submitForm(\n url: String,\n formParameters: Parameters = Parameters.Empty,\n encodeInQuery: Boolean = false,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = submitForm(formParameters, encodeInQuery) {\n url(url)\n block()\n}\n\n/**\n * Send [HttpMethod.Post] request with [formData] encoded in body.\n * [formData] encoded using multipart/form-data format.\n * https://tools.ietf.org/html/rfc2045\n */\npublic suspend inline fun HttpClient.submitFormWithBinaryData(\n formData: List,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = request {\n method = HttpMethod.Post\n body = MultiPartFormDataContent(formData)\n block()\n}\n\n/**\n * Send [HttpMethod.Post] request with [formData] encoded in body.\n * [url] destination\n * [formData] encoded using multipart/form-data format.\n *\n * https://tools.ietf.org/html/rfc2045\n */\npublic suspend inline fun HttpClient.submitFormWithBinaryData(\n url: String,\n formData: List,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = submitFormWithBinaryData(formData) {\n url(url)\n block()\n}\n\n/**\n * Submit [formParameters] request.\n *\n * If [encodeInQuery] specified encode [formParameters] in url parameters and use [HttpMethod.Get] for the request.\n * Otherwise send [HttpMethod.Post] request with [formParameters] encoded in body.\n *\n * [formParameters] encoded using application/x-www-form-urlencoded format.\n */\npublic suspend inline fun HttpClient.submitForm(\n scheme: String = \"http\",\n host: String = \"localhost\",\n port: Int = 80,\n path: String = \"/\",\n formParameters: Parameters = Parameters.Empty,\n encodeInQuery: Boolean = false,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = submitForm(formParameters, encodeInQuery) {\n url(scheme, host, port, path)\n apply(block)\n}\n\n/**\n * Send [HttpMethod.Post] request with [formData] encoded in body.\n * [formData] encoded using multipart/form-data format.\n * https://tools.ietf.org/html/rfc2045\n */\npublic suspend inline fun HttpClient.submitFormWithBinaryData(\n scheme: String = \"http\",\n host: String = \"localhost\",\n port: Int = 80,\n path: String = \"/\",\n formData: List = emptyList(),\n block: HttpRequestBuilder.() -> Unit = {}\n): T = submitFormWithBinaryData(formData) {\n url(scheme, host, port, path)\n apply(block)\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.request.forms\n\nimport io.ktor.http.*\nimport io.ktor.http.content.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.core.*\nimport kotlin.contracts.*\n\n/**\n * Multipart form item. Use it to build form in client.\n *\n * @param key multipart name\n * @param value content, could be [String], [Number] or [Input]\n * @param headers part headers, note that some servers may fail if an unknown header provided\n */\npublic data class FormPart(val key: String, val value: T, val headers: Headers = Headers.Empty)\n\n/**\n * Build multipart form from [values].\n */\npublic fun formData(vararg values: FormPart<*>): List {\n val result = mutableListOf()\n\n values.forEach { (key, value, headers) ->\n val partHeaders = HeadersBuilder().apply {\n append(HttpHeaders.ContentDisposition, \"form-data; name=${key.escapeIfNeeded()}\")\n appendAll(headers)\n }\n val part = when (value) {\n is String -> PartData.FormItem(value, {}, partHeaders.build())\n is Number -> PartData.FormItem(value.toString(), {}, partHeaders.build())\n is ByteArray -> {\n partHeaders.append(HttpHeaders.ContentLength, value.size.toString())\n PartData.BinaryItem({ ByteReadPacket(value) }, {}, partHeaders.build())\n }\n is ByteReadPacket -> {\n partHeaders.append(HttpHeaders.ContentLength, value.remaining.toString())\n PartData.BinaryItem({ value.copy() }, { value.close() }, partHeaders.build())\n }\n is InputProvider -> {\n val size = value.size\n if (size != null) {\n partHeaders.append(HttpHeaders.ContentLength, size.toString())\n }\n PartData.BinaryItem(value.block, {}, partHeaders.build())\n }\n is Input -> error(\"Can't use [Input] as part of form: $value. Consider using [InputProvider] instead.\")\n else -> error(\"Unknown form content type: $value\")\n }\n\n result += part\n }\n\n return result\n}\n\n/**\n * Build multipart form using [block] function.\n */\npublic fun formData(block: FormBuilder.() -> Unit): List =\n formData(*FormBuilder().apply(block).build().toTypedArray())\n\n/**\n * Form builder type used in [formData] builder function.\n */\npublic class FormBuilder internal constructor() {\n private val parts = mutableListOf>()\n\n /**\n * Append a pair [key]:[value] with optional [headers].\n */\n @InternalAPI\n public fun append(key: String, value: T, headers: Headers = Headers.Empty) {\n parts += FormPart(key, value, headers)\n }\n\n /**\n * Append a pair [key]:[value] with optional [headers].\n */\n public fun append(key: String, value: String, headers: Headers = Headers.Empty) {\n parts += FormPart(key, value, headers)\n }\n\n /**\n * Append a pair [key]:[value] with optional [headers].\n */\n public fun append(key: String, value: Number, headers: Headers = Headers.Empty) {\n parts += FormPart(key, value, headers)\n }\n\n /**\n * Append a pair [key]:[value] with optional [headers].\n */\n public fun append(key: String, value: ByteArray, headers: Headers = Headers.Empty) {\n parts += FormPart(key, value, headers)\n }\n\n /**\n * Append a pair [key]:[value] with optional [headers].\n */\n public fun append(key: String, value: InputProvider, headers: Headers = Headers.Empty) {\n parts += FormPart(key, value, headers)\n }\n\n /**\n * Append a pair [key]:[InputProvider(block)] with optional [headers].\n */\n public fun appendInput(key: String, headers: Headers = Headers.Empty, size: Long? = null, block: () -> Input) {\n parts += FormPart(key, InputProvider(size, block), headers)\n }\n\n /**\n * Append a pair [key]:[value] with optional [headers].\n */\n public fun append(key: String, value: ByteReadPacket, headers: Headers = Headers.Empty) {\n parts += FormPart(key, value, headers)\n }\n\n /**\n * Append a pair [key]:[value] with optional [headers].\n */\n @Suppress(\"UNUSED_PARAMETER\")\n @Deprecated(\n \"Input is not reusable. Please use [InputProvider] instead.\",\n level = DeprecationLevel.ERROR,\n replaceWith = ReplaceWith(\"appendInput(key, headers) { /* create fresh input here */ }\")\n )\n public fun append(key: String, value: Input, headers: Headers = Headers.Empty) {\n error(\"Input is not reusable. Please use [InputProvider] instead.\")\n }\n\n /**\n * Append a form [part].\n */\n public fun append(part: FormPart) {\n parts += part\n }\n\n internal fun build(): List> = parts\n}\n\n/**\n * Append a form part with the specified [key] using [bodyBuilder] for it's body.\n */\n@OptIn(ExperimentalContracts::class)\npublic inline fun FormBuilder.append(\n key: String,\n headers: Headers = Headers.Empty,\n size: Long? = null,\n crossinline bodyBuilder: BytePacketBuilder.() -> Unit\n) {\n contract {\n callsInPlace(bodyBuilder, InvocationKind.EXACTLY_ONCE)\n }\n append(FormPart(key, InputProvider(size) { buildPacket { bodyBuilder() } }, headers))\n}\n\n/**\n * Reusable [Input] form entry.\n *\n * @property size estimate for data produced by the block or `null` if no size estimation known\n * @param block: content generator\n */\n@KtorExperimentalAPI\npublic class InputProvider(public val size: Long? = null, public val block: () -> Input)\n\n/**\n * Append a form part with the specified [key], [filename] and optional [contentType] using [bodyBuilder] for it's body.\n */\n@OptIn(ExperimentalContracts::class)\npublic fun FormBuilder.append(\n key: String,\n filename: String,\n contentType: ContentType? = null,\n size: Long? = null,\n bodyBuilder: BytePacketBuilder.() -> Unit\n) {\n contract {\n callsInPlace(bodyBuilder, InvocationKind.EXACTLY_ONCE)\n }\n\n val headersBuilder = HeadersBuilder()\n headersBuilder[HttpHeaders.ContentDisposition] = \"filename=${filename.escapeIfNeeded()}\"\n contentType?.run { headersBuilder[HttpHeaders.ContentType] = this.toString() }\n val headers = headersBuilder.build()\n\n append(key, headers, size, bodyBuilder)\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.request\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.util.pipeline.*\n\n/**\n * [HttpClient] Pipeline used for executing [HttpRequest].\n */\npublic class HttpRequestPipeline(\n override val developmentMode: Boolean = false\n) : Pipeline(Before, State, Transform, Render, Send) {\n /**\n * All interceptors accept payload as [subject] and try to convert it to [OutgoingContent]\n * Last phase should proceed with [HttpClientCall]\n */\n public companion object Phases {\n /**\n * The earliest phase that happens before any other\n */\n public val Before: PipelinePhase = PipelinePhase(\"Before\")\n\n /**\n * Use this phase to modify request with shared state\n */\n public val State: PipelinePhase = PipelinePhase(\"State\")\n\n /**\n * Transform request body to supported render format\n */\n public val Transform: PipelinePhase = PipelinePhase(\"Transform\")\n\n /**\n * Encode request body to [OutgoingContent]\n */\n public val Render: PipelinePhase = PipelinePhase(\"Render\")\n\n /**\n * Phase for [HttpSend] feature\n */\n public val Send: PipelinePhase = PipelinePhase(\"Send\")\n }\n}\n\n/**\n * [HttpClient] Pipeline used for sending [HttpRequest] to remote server.\n */\npublic class HttpSendPipeline(\n override val developmentMode: Boolean = false\n) : Pipeline(Before, State, Monitoring, Engine, Receive) {\n\n public companion object Phases {\n /**\n * The earliest phase that happens before any other.\n */\n public val Before: PipelinePhase = PipelinePhase(\"Before\")\n\n /**\n * Use this phase to modify request with shared state.\n */\n public val State: PipelinePhase = PipelinePhase(\"State\")\n\n /**\n * Use this phase for logging and other actions that don't modify request or shared data.\n */\n public val Monitoring: PipelinePhase = PipelinePhase(\"Monitoring\")\n\n /**\n * Send request to remote server.\n */\n public val Engine: PipelinePhase = PipelinePhase(\"Engine\")\n\n /**\n * Receive pipeline execution phase.\n */\n public val Receive: PipelinePhase = PipelinePhase(\"Receive\")\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.request\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.statement.*\nimport io.ktor.client.utils.*\nimport io.ktor.http.*\n\n/**\n * Executes a [HttpClient] request, with the information from the [builder]\n * and tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.request(\n builder: HttpRequestBuilder = HttpRequestBuilder()\n): T = HttpStatement(builder, this).receive()\n\n/**\n * Executes a [HttpClient] request, with the information configured in [builder] block\n * and tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.request(block: HttpRequestBuilder.() -> Unit): T =\n request(HttpRequestBuilder().apply(block))\n\n/**\n * Executes a [HttpClient] request, with the [urlString] and the information configured in builder [block]\n * and tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.request(\n urlString: String,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = request(\n HttpRequestBuilder().apply {\n url(urlString)\n block()\n }\n)\n\n/**\n * Executes a [HttpClient] request, with the [url] and the information configured in builder [block]\n * and tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.request(\n url: Url,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = request(\n HttpRequestBuilder().apply {\n url(url)\n block()\n }\n)\n\n/**\n * Executes a [HttpClient] GET request, with the information from the [builder]\n * and tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.get(builder: HttpRequestBuilder): T {\n builder.method = HttpMethod.Get\n return request(builder)\n}\n\n/**\n * Executes a [HttpClient] POST request, with the information from the [builder]\n * and tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.post(builder: HttpRequestBuilder): T {\n builder.method = HttpMethod.Post\n return request(builder)\n}\n\n/**\n * Executes a [HttpClient] PUT request, with the information from the [builder]\n * and tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.put(builder: HttpRequestBuilder): T {\n builder.method = HttpMethod.Put\n return request(builder)\n}\n\n/**\n * Executes a [HttpClient] DELETE request, with the information from the [builder]\n * and tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.delete(builder: HttpRequestBuilder): T {\n builder.method = HttpMethod.Delete\n return request(builder)\n}\n\n/**\n * Executes a [HttpClient] OPTIONS request, with the information from the [builder]\n * and tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.options(builder: HttpRequestBuilder): T {\n builder.method = HttpMethod.Options\n return request(builder)\n}\n\n/**\n * Executes a [HttpClient] PATCH request, with the information from the [builder]\n * and tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.patch(builder: HttpRequestBuilder): T {\n builder.method = HttpMethod.Patch\n return request(builder)\n}\n\n/**\n * Executes a [HttpClient] HEAD request, with the information from the [builder]\n * and tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.head(builder: HttpRequestBuilder): T {\n builder.method = HttpMethod.Head\n return request(builder)\n}\n\n/**\n * Executes a [HttpClient] GET request, with the specified [scheme], [host], [port], [path] and [body].\n * And allows to further configure the request, using a [block] receiving an [HttpRequestBuilder].\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.get(\n scheme: String = \"http\",\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n body: Any = EmptyContent,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = request {\n url(scheme, host, port, path)\n method = HttpMethod.Get\n this.body = body\n apply(block)\n}\n\n/**\n * Executes a [HttpClient] POST request, with the specified [scheme], [host], [port], [path] and [body].\n * And allows to further configure the request, using a [block] receiving an [HttpRequestBuilder].\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.post(\n scheme: String = \"http\",\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n body: Any = EmptyContent,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = request {\n url(scheme, host, port, path)\n method = HttpMethod.Post\n this.body = body\n apply(block)\n}\n\n/**\n * Executes a [HttpClient] PUT request, with the specified [scheme], [host], [port], [path] and [body].\n * And allows to further configure the request, using a [block] receiving an [HttpRequestBuilder].\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.put(\n scheme: String = \"http\",\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n body: Any = EmptyContent,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = request {\n url(scheme, host, port, path)\n method = HttpMethod.Put\n this.body = body\n apply(block)\n}\n\n/**\n * Executes a [HttpClient] DELETE request, with the specified [scheme], [host], [port], [path] and [body].\n * And allows to further configure the request, using a [block] receiving an [HttpRequestBuilder].\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.delete(\n scheme: String = \"http\",\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n body: Any = EmptyContent,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = request {\n url(scheme, host, port, path)\n method = HttpMethod.Delete\n this.body = body\n apply(block)\n}\n\n/**\n * Executes a [HttpClient] PATCH request, with the specified [scheme], [host], [port], [path] and [body].\n * And allows to further configure the request, using a [block] receiving an [HttpRequestBuilder].\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.patch(\n scheme: String = \"http\",\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n body: Any = EmptyContent,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = request {\n url(scheme, host, port, path)\n method = HttpMethod.Patch\n this.body = body\n apply(block)\n}\n\n/**\n * Executes a [HttpClient] HEAD request, with the specified [scheme], [host], [port], [path] and [body].\n * And allows to further configure the request, using a [block] receiving an [HttpRequestBuilder].\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.head(\n scheme: String = \"http\",\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n body: Any = EmptyContent,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = request {\n url(scheme, host, port, path)\n method = HttpMethod.Head\n this.body = body\n apply(block)\n}\n\n/**\n * Executes a [HttpClient] OPTIONS request, with the specified [scheme], [host], [port], [path] and [body].\n * And allows to further configure the request, using a [block] receiving an [HttpRequestBuilder].\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.options(\n scheme: String = \"http\",\n host: String = \"localhost\",\n port: Int = DEFAULT_PORT,\n path: String = \"/\",\n body: Any = EmptyContent,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = request {\n url(scheme, host, port, path)\n method = HttpMethod.Options\n this.body = body\n apply(block)\n}\n\n/**\n * Creates a [HttpRequestBuilder] and configures it with a [block] of code.\n */\npublic fun request(block: HttpRequestBuilder.() -> Unit): HttpRequestBuilder = HttpRequestBuilder().apply(block)\n\n/**\n * Executes a [HttpClient] GET request, with the specified [url] as URL and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.get(\n urlString: String,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = get {\n url.takeFrom(urlString)\n block()\n}\n\n/**\n * Executes a [HttpClient] POST request, with the specified [url] as URL and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.post(\n urlString: String,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = post {\n url.takeFrom(urlString)\n block()\n}\n\n/**\n * Executes a [HttpClient] PUT request, with the specified [url] as URL and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.put(\n urlString: String,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = put {\n url.takeFrom(urlString)\n block()\n}\n\n/**\n * Executes a [HttpClient] DELETE request, with the specified [url] as URL and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.delete(\n urlString: String,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = delete {\n url.takeFrom(urlString)\n block()\n}\n\n/**\n * Executes a [HttpClient] OPTIONS request, with the specified [url] as URL and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.options(\n urlString: String,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = options {\n url.takeFrom(urlString)\n block()\n}\n\n/**\n * Executes a [HttpClient] PATCH request, with the specified [url] as URL and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.patch(\n urlString: String,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = patch {\n url.takeFrom(urlString)\n block()\n}\n\n/**\n * Executes a [HttpClient] HEAD request, with the specified [url] as URL and\n * an optional [block] receiving an [HttpRequestBuilder] for further configuring the request.\n *\n * Tries to receive a specific type [T], if fails, an exception is thrown.\n */\npublic suspend inline fun HttpClient.head(\n urlString: String,\n block: HttpRequestBuilder.() -> Unit = {}\n): T = head {\n url.takeFrom(urlString)\n block()\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.request.forms\n\nimport io.ktor.http.*\nimport io.ktor.http.content.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.charsets.*\nimport io.ktor.utils.io.core.*\nimport kotlin.native.concurrent.*\nimport kotlin.random.*\n\n@ThreadLocal\nprivate val RN_BYTES = \"\\r\\n\".toByteArray()\n\n/**\n * [OutgoingContent] with for application/x-www-form-urlencoded formatted request.\n *\n * @param formData: data to send.\n */\npublic class FormDataContent(\n public val formData: Parameters\n) : OutgoingContent.ByteArrayContent() {\n private val content = formData.formUrlEncode().toByteArray()\n\n override val contentLength: Long = content.size.toLong()\n override val contentType: ContentType = ContentType.Application.FormUrlEncoded.withCharset(Charsets.UTF_8)\n\n override fun bytes(): ByteArray = content\n}\n\n/**\n * [OutgoingContent] for multipart/form-data formatted request.\n *\n * @param parts: form part data\n */\npublic class MultiPartFormDataContent(\n parts: List\n) : OutgoingContent.WriteChannelContent() {\n private val boundary: String = generateBoundary()\n private val BOUNDARY_BYTES = \"--$boundary\\r\\n\".toByteArray()\n private val LAST_BOUNDARY_BYTES = \"--$boundary--\\r\\n\".toByteArray()\n\n private val BODY_OVERHEAD_SIZE = LAST_BOUNDARY_BYTES.size\n private val PART_OVERHEAD_SIZE = RN_BYTES.size * 2 + BOUNDARY_BYTES.size\n\n private val rawParts: List = parts.map { part ->\n val headersBuilder = BytePacketBuilder()\n for ((key, values) in part.headers.entries()) {\n headersBuilder.writeText(\"$key: ${values.joinToString(\"; \")}\")\n headersBuilder.writeFully(RN_BYTES)\n }\n\n val bodySize = part.headers[HttpHeaders.ContentLength]?.toLong()\n when (part) {\n is PartData.FileItem -> {\n val headers = headersBuilder.build().readBytes()\n val size = bodySize?.plus(PART_OVERHEAD_SIZE)?.plus(headers.size)\n PreparedPart(headers, part.provider, size)\n }\n is PartData.BinaryItem -> {\n val headers = headersBuilder.build().readBytes()\n val size = bodySize?.plus(PART_OVERHEAD_SIZE)?.plus(headers.size)\n PreparedPart(headers, part.provider, size)\n }\n is PartData.FormItem -> {\n val bytes = buildPacket { writeText(part.value) }.readBytes()\n val provider = { buildPacket { writeFully(bytes) } }\n if (bodySize == null) {\n headersBuilder.writeText(\"${HttpHeaders.ContentLength}: ${bytes.size}\")\n headersBuilder.writeFully(RN_BYTES)\n }\n\n val headers = headersBuilder.build().readBytes()\n val size = bytes.size + PART_OVERHEAD_SIZE + headers.size\n PreparedPart(headers, provider, size.toLong())\n }\n }\n }\n\n override val contentLength: Long?\n\n override val contentType: ContentType = ContentType.MultiPart.FormData.withParameter(\"boundary\", boundary)\n\n init {\n var rawLength: Long? = 0\n for (part in rawParts) {\n val size = part.size\n if (size == null) {\n rawLength = null\n break\n }\n\n rawLength = rawLength?.plus(size)\n }\n\n if (rawLength != null) {\n rawLength += BODY_OVERHEAD_SIZE\n }\n\n contentLength = rawLength\n }\n\n override suspend fun writeTo(channel: ByteWriteChannel) {\n try {\n for (part in rawParts) {\n channel.writeFully(BOUNDARY_BYTES)\n channel.writeFully(part.headers)\n channel.writeFully(RN_BYTES)\n\n part.provider().use { input ->\n input.copyTo(channel)\n }\n\n channel.writeFully(RN_BYTES)\n }\n\n channel.writeFully(LAST_BOUNDARY_BYTES)\n } catch (cause: Throwable) {\n channel.close(cause)\n } finally {\n channel.close()\n }\n }\n}\n\nprivate fun generateBoundary(): String = buildString {\n repeat(32) {\n append(Random.nextInt().toString(16))\n }\n}.take(70)\n\nprivate class PreparedPart(\n val headers: ByteArray,\n val provider: () -> Input,\n val size: Long?\n)\n\nprivate suspend fun Input.copyTo(channel: ByteWriteChannel) {\n if (this is ByteReadPacket) {\n channel.writePacket(this)\n return\n }\n\n while (!this@copyTo.endOfInput) {\n channel.write { freeSpace, startOffset, endExclusive ->\n this@copyTo.readAvailable(freeSpace, startOffset, endExclusive - startOffset).toInt()\n }\n }\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.statement\n\nimport io.ktor.client.call.*\nimport io.ktor.client.request.*\nimport io.ktor.http.*\nimport io.ktor.util.*\nimport io.ktor.util.date.*\nimport io.ktor.utils.io.*\nimport kotlin.coroutines.*\n\n@InternalAPI\npublic class DefaultHttpResponse(\n override val call: HttpClientCall,\n responseData: HttpResponseData\n) : HttpResponse() {\n override val coroutineContext: CoroutineContext = responseData.callContext\n\n override val status: HttpStatusCode = responseData.statusCode\n\n override val version: HttpProtocolVersion = responseData.version\n\n override val requestTime: GMTDate = responseData.requestTime\n\n override val responseTime: GMTDate = responseData.responseTime\n\n override val content: ByteReadChannel = responseData.body as? ByteReadChannel\n ?: ByteReadChannel.Empty\n\n override val headers: Headers = responseData.headers\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.statement\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.util.pipeline.*\n\n/**\n * [HttpClient] Pipeline used for executing [HttpResponse].\n */\npublic class HttpResponsePipeline(\n override val developmentMode: Boolean = false\n) : Pipeline(\n Receive,\n Parse,\n Transform,\n State,\n After\n) {\n public companion object Phases {\n /**\n * The earliest phase that happens before any other\n */\n public val Receive: PipelinePhase = PipelinePhase(\"Receive\")\n\n /**\n * Decode response body\n */\n public val Parse: PipelinePhase = PipelinePhase(\"Parse\")\n\n /**\n * Transform response body to expected format\n */\n public val Transform: PipelinePhase = PipelinePhase(\"Transform\")\n\n /**\n * Use this phase to store request shared state\n */\n public val State: PipelinePhase = PipelinePhase(\"State\")\n\n /**\n * Latest response pipeline phase\n */\n public val After: PipelinePhase = PipelinePhase(\"After\")\n }\n}\n\n/**\n * [HttpClient] Pipeline used for receiving [HttpResponse] without any processing.\n */\npublic class HttpReceivePipeline(\n override val developmentMode: Boolean = false\n) : Pipeline(Before, State, After) {\n public companion object Phases {\n /**\n * The earliest phase that happens before any other\n */\n public val Before: PipelinePhase = PipelinePhase(\"Before\")\n\n /**\n * Use this phase to store request shared state\n */\n public val State: PipelinePhase = PipelinePhase(\"State\")\n\n /**\n * Latest response pipeline phase\n */\n public val After: PipelinePhase = PipelinePhase(\"After\")\n }\n}\n\n/**\n * Class representing a typed [response] with an attached [expectedType].\n * @param expectedType: information about expected type.\n * @param response: current response state.\n */\npublic data class HttpResponseContainer(val expectedType: TypeInfo, val response: Any)\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.request\n\nimport io.ktor.http.*\nimport io.ktor.util.date.*\n\n/**\n * Gets the associated URL's host.\n */\npublic var HttpRequestBuilder.host: String\n get() = url.host\n set(value) {\n url.host = value\n }\n\n/**\n * Gets the associated URL's port.\n */\npublic var HttpRequestBuilder.port: Int\n get() = url.port\n set(value) {\n url.port = value\n }\n\n/**\n * Sets a single header of [key] with a specific [value] if the value is not null.\n */\npublic fun HttpRequestBuilder.header(key: String, value: Any?): Unit =\n value?.let { headers.append(key, it.toString()) } ?: Unit\n\n/**\n * Sets a single header of [key] with a specific [value] if the value is not null.\n */\npublic fun HttpRequestBuilder.cookie(\n name: String,\n value: String,\n maxAge: Int = 0,\n expires: GMTDate? = null,\n domain: String? = null,\n path: String? = null,\n secure: Boolean = false,\n httpOnly: Boolean = false,\n extensions: Map = emptyMap()\n): Unit { // ktlint-disable no-unit-return\n val renderedCookie = Cookie(\n name = name,\n value = value,\n maxAge = maxAge,\n expires = expires,\n domain = domain,\n path = path,\n secure = secure,\n httpOnly = httpOnly,\n extensions = extensions\n ).let(::renderCookieHeader)\n\n if (HttpHeaders.Cookie !in headers) {\n headers.append(HttpHeaders.Cookie, renderedCookie)\n return\n }\n // Client cookies are stored in a single header \"Cookies\" and multiple values are separated with \";\"\n headers[HttpHeaders.Cookie] = headers[HttpHeaders.Cookie] + \"; \" + renderedCookie\n}\n\n/**\n * Sets a single URL query parameter of [key] with a specific [value] if the value is not null. Can not be used to set\n * form parameters in the body.\n */\npublic fun HttpRequestBuilder.parameter(key: String, value: Any?): Unit =\n value?.let { url.parameters.append(key, it.toString()) } ?: Unit\n\n/**\n * Sets the `Accept` header with a specific [contentType].\n */\npublic fun HttpRequestBuilder.accept(contentType: ContentType): Unit =\n headers.append(HttpHeaders.Accept, contentType.toString())\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\n@file:Suppress(\"KDocMissingDocumentation\")\n\npackage io.ktor.client.response\n\nimport io.ktor.http.*\nimport io.ktor.utils.io.charsets.*\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\n\n@Deprecated(\n \"Unbound streaming [HttpResponse] is deprecated. Consider using [HttpStatement] instead.\",\n level = DeprecationLevel.ERROR,\n replaceWith = ReplaceWith(\"HttpStatement\", \"io.ktor.client.statement.*\")\n)\npublic class HttpResponse : CoroutineScope, HttpMessage {\n override val coroutineContext: CoroutineContext\n get() = error(\"Unbound streaming [HttpResponse] is deprecated. Consider using [HttpStatement] instead.\")\n override val headers: Headers\n get() = error(\"Unbound streaming [HttpResponse] is deprecated. Consider using [HttpStatement] instead.\")\n}\n\n@Suppress(\"DEPRECATION_ERROR\", \"unused\", \"UNUSED_PARAMETER\", \"RedundantSuspendModifier\")\n@Deprecated(\n \"Unbound streaming [HttpResponse] is deprecated. Consider using [HttpStatement] instead.\",\n level = DeprecationLevel.ERROR\n)\npublic suspend fun HttpResponse.readText(charset: Charset? = null): String {\n error(\"Unbound streaming [HttpResponse] is deprecated. Consider using [HttpStatement] instead.\")\n}\n\n/**\n * Exactly reads [count] bytes of the [HttpResponse.content].\n */\n@Deprecated(\n \"Unbound streaming [HttpResponse] is deprecated. Consider using [HttpStatement] instead.\",\n level = DeprecationLevel.ERROR\n)\n@Suppress(\"DEPRECATION_ERROR\", \"unused\", \"UNUSED_PARAMETER\", \"RedundantSuspendModifier\")\npublic suspend fun HttpResponse.readBytes(count: Int): ByteArray {\n error(\"Unbound streaming [HttpResponse] is deprecated. Consider using [HttpStatement] instead.\")\n}\n\n/**\n * Reads the whole [HttpResponse.content] if Content-Length was specified.\n * Otherwise it just reads one byte.\n */\n@Deprecated(\n \"Unbound streaming [HttpResponse] is deprecated. Consider using [HttpStatement] instead.\",\n level = DeprecationLevel.ERROR\n)\n@Suppress(\"DEPRECATION_ERROR\", \"unused\", \"UNUSED_PARAMETER\", \"RedundantSuspendModifier\")\npublic suspend fun HttpResponse.readBytes(): ByteArray {\n error(\"Unbound streaming [HttpResponse] is deprecated. Consider using [HttpStatement] instead.\")\n}\n\n/**\n * Efficiently discards the remaining bytes of [HttpResponse.content].\n */\n@Deprecated(\n \"Unbound streaming [HttpResponse] is deprecated. Consider using [HttpStatement] instead.\",\n level = DeprecationLevel.ERROR\n)\n@Suppress(\"DEPRECATION_ERROR\", \"unused\", \"UNUSED_PARAMETER\", \"RedundantSuspendModifier\")\npublic suspend fun HttpResponse.discardRemaining() {\n error(\"Unbound streaming [HttpResponse] is deprecated. Consider using [HttpStatement] instead.\")\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.statement\n\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.request.*\nimport io.ktor.http.*\nimport io.ktor.util.*\nimport io.ktor.util.date.*\nimport io.ktor.utils.io.*\nimport kotlinx.coroutines.*\n\n/**\n * A response for [HttpClient], second part of [HttpClientCall].\n */\npublic abstract class HttpResponse : HttpMessage, CoroutineScope {\n /**\n * The associated [HttpClientCall] containing both\n * the underlying [HttpClientCall.request] and [HttpClientCall.response].\n */\n public abstract val call: HttpClientCall\n\n /**\n * The [HttpStatusCode] returned by the server. It includes both,\n * the [HttpStatusCode.description] and the [HttpStatusCode.value] (code).\n */\n public abstract val status: HttpStatusCode\n\n /**\n * HTTP version. Usually [HttpProtocolVersion.HTTP_1_1] or [HttpProtocolVersion.HTTP_2_0].\n */\n public abstract val version: HttpProtocolVersion\n\n /**\n * [GMTDate] of the request start.\n */\n public abstract val requestTime: GMTDate\n\n /**\n * [GMTDate] of the response start.\n */\n public abstract val responseTime: GMTDate\n\n /**\n * Unmodified [ByteReadChannel] with the raw payload of the response.\n *\n * **Note:** this content doesn't go through any interceptors from [HttpResponsePipeline].\n * If you need modified content, use [HttpResponse::receive] function.\n */\n public abstract val content: ByteReadChannel\n\n override fun toString(): String = \"HttpResponse[${request.url}, $status]\"\n}\n\n/**\n * [HttpRequest] associated with this response.\n */\npublic val HttpResponse.request: HttpRequest get() = call.request\n\n@Suppress(\"unused\", \"KDocMissingDocumentation\")\n@Deprecated(\"Close is obsolete for [HttpResponse]\", replaceWith = ReplaceWith(\"this\"))\npublic fun HttpResponse.close() {\n}\n\n@Suppress(\"UNUSED_PARAMETER\", \"KDocMissingDocumentation\", \"unused\")\n@Deprecated(\"Use is obsolete for [HttpResponse]\", replaceWith = ReplaceWith(\"this.also(block)\"))\npublic fun HttpResponse.use(block: () -> Unit) {\n}\n\n@Suppress(\"unused\", \"KDocMissingDocumentation\")\n@Deprecated(\"[response] is obsolete for [HttpResponse]\", replaceWith = ReplaceWith(\"this\"))\npublic val HttpResponse.response: HttpResponse\n get() = this\n\n@InternalAPI\n@PublishedApi\ninternal fun HttpResponse.complete() {\n val job = coroutineContext[Job]!! as CompletableJob\n job.complete()\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.statement\n\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.core.*\n\n/**\n * Exactly reads [count] bytes of the [HttpResponse.content].\n */\npublic suspend fun HttpResponse.readBytes(count: Int): ByteArray = ByteArray(count).also {\n content.readFully(it)\n}\n\n/**\n * Reads the whole [HttpResponse.content] if Content-Length was specified.\n * Otherwise it just reads one byte.\n */\npublic suspend fun HttpResponse.readBytes(): ByteArray = content.readRemaining().readBytes()\n\n/**\n * Efficiently discards the remaining bytes of [HttpResponse.content].\n */\npublic suspend fun HttpResponse.discardRemaining() {\n content.discard()\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.utils\n\nimport io.ktor.util.*\n\n/**\n * List of [CacheControl] known values.\n */\n@Suppress(\"KDocMissingDocumentation\", \"MemberVisibilityCanBePrivate\")\n@KtorExperimentalAPI\npublic object CacheControl {\n public const val MAX_AGE: String = \"max-age\"\n public const val MIN_FRESH: String = \"min-fresh\"\n public const val ONLY_IF_CACHED: String = \"only-if-cached\"\n\n public const val MAX_STALE: String = \"max-stale\"\n public const val NO_CACHE: String = \"no-cache\"\n public const val NO_STORE: String = \"no-store\"\n public const val NO_TRANSFORM: String = \"no-transform\"\n\n public const val MUST_REVALIDATE: String = \"must-revalidate\"\n public const val PUBLIC: String = \"public\"\n public const val PRIVATE: String = \"private\"\n public const val PROXY_REVALIDATE: String = \"proxy-revalidate\"\n public const val S_MAX_AGE: String = \"s-maxage\"\n\n // ------- binary compatibility\n\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"FunctionName\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getMAX_AGE(): String = MAX_AGE\n\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"FunctionName\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getMIN_FRESH(): String = MIN_FRESH\n\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"FunctionName\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getONLY_IF_CACHED(): String = ONLY_IF_CACHED\n\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"FunctionName\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getMAX_STALE(): String = MAX_STALE\n\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"FunctionName\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getNO_CACHE(): String = NO_CACHE\n\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"FunctionName\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getNO_STORE(): String = NO_STORE\n\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"FunctionName\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getNO_TRANSFORM(): String = NO_TRANSFORM\n\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"FunctionName\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getMUST_REVALIDATE(): String = MUST_REVALIDATE\n\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"FunctionName\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getPUBLIC(): String = PUBLIC\n\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"FunctionName\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getPRIVATE(): String = PRIVATE\n\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"FunctionName\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getPROXY_REVALIDATE(): String = PROXY_REVALIDATE\n\n @Suppress(\"unused\", \"KDocMissingDocumentation\", \"FunctionName\")\n @Deprecated(\"Compatibility\", level = DeprecationLevel.HIDDEN)\n public fun getS_MAX_AGE(): String = S_MAX_AGE\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.utils\n\nimport io.ktor.http.*\nimport io.ktor.http.content.*\nimport io.ktor.utils.io.*\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\n\n/**\n * Concrete [OutgoingContent] without a payload.\n */\npublic object EmptyContent : OutgoingContent.NoContent() {\n override val contentLength: Long = 0\n\n override fun toString(): String = \"EmptyContent\"\n}\n\n/**\n * Generates a new [OutgoingContent] of the same abstract type\n * but with [OutgoingContent.headers] transformed by the specified [block].\n */\npublic fun OutgoingContent.wrapHeaders(block: (Headers) -> Headers): OutgoingContent = when (this) {\n is OutgoingContent.NoContent -> object : OutgoingContent.NoContent() {\n override val contentLength: Long? get() = this@wrapHeaders.contentLength\n override val contentType: ContentType? get() = this@wrapHeaders.contentType\n override val status: HttpStatusCode? get() = this@wrapHeaders.status\n\n override val headers: Headers = block(this@wrapHeaders.headers)\n }\n is OutgoingContent.ReadChannelContent -> object : OutgoingContent.ReadChannelContent() {\n override val contentLength: Long? get() = this@wrapHeaders.contentLength\n override val contentType: ContentType? get() = this@wrapHeaders.contentType\n override val status: HttpStatusCode? get() = this@wrapHeaders.status\n\n override val headers: Headers = block(this@wrapHeaders.headers)\n\n override fun readFrom(): ByteReadChannel = this@wrapHeaders.readFrom()\n\n override fun readFrom(range: LongRange): ByteReadChannel = this@wrapHeaders.readFrom(range)\n }\n is OutgoingContent.WriteChannelContent -> object : OutgoingContent.WriteChannelContent() {\n override val contentLength: Long? get() = this@wrapHeaders.contentLength\n override val contentType: ContentType? get() = this@wrapHeaders.contentType\n override val status: HttpStatusCode? get() = this@wrapHeaders.status\n\n override val headers: Headers = block(this@wrapHeaders.headers)\n\n override suspend fun writeTo(channel: ByteWriteChannel) = this@wrapHeaders.writeTo(channel)\n }\n is OutgoingContent.ByteArrayContent -> object : OutgoingContent.ByteArrayContent() {\n override val contentLength: Long? get() = this@wrapHeaders.contentLength\n override val contentType: ContentType? get() = this@wrapHeaders.contentType\n override val status: HttpStatusCode? get() = this@wrapHeaders.status\n\n override val headers: Headers = block(this@wrapHeaders.headers)\n\n override fun bytes(): ByteArray = this@wrapHeaders.bytes()\n }\n is OutgoingContent.ProtocolUpgrade -> object : OutgoingContent.ProtocolUpgrade() {\n override val contentLength: Long? get() = this@wrapHeaders.contentLength\n override val contentType: ContentType? get() = this@wrapHeaders.contentType\n\n override val headers: Headers = block(this@wrapHeaders.headers)\n\n override suspend fun upgrade(\n input: ByteReadChannel,\n output: ByteWriteChannel,\n engineContext: CoroutineContext,\n userContext: CoroutineContext\n ): Job = this@wrapHeaders.upgrade(input, output, engineContext, userContext)\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.network.sockets\n\nimport io.ktor.client.features.*\nimport io.ktor.client.request.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.errors.*\nimport kotlinx.coroutines.*\n\n/**\n * This exception is thrown in case connect timeout exceeded.\n */\npublic expect class ConnectTimeoutException(message: String, cause: Throwable? = null) : IOException\n\n/**\n * This exception is thrown in case socket timeout (read or write) exceeded.\n */\npublic expect class SocketTimeoutException(message: String, cause: Throwable? = null) : IOException\n\n/**\n * Returns [ByteReadChannel] with [ByteChannel.close] handler that returns [SocketTimeoutException] instead of\n * [SocketTimeoutException].\n */\n@InternalAPI\npublic fun CoroutineScope.mapEngineExceptions(input: ByteReadChannel, request: HttpRequestData): ByteReadChannel {\n if (PlatformUtils.IS_NATIVE) {\n return input\n }\n\n val replacementChannel = ByteChannelWithMappedExceptions(request)\n\n writer(channel = replacementChannel) {\n try {\n input.copyAndClose(replacementChannel)\n } catch (cause: Throwable) {\n input.cancel(cause)\n }\n }\n\n return replacementChannel\n}\n\n/**\n * Returns [ByteWriteChannel] with [ByteChannel.close] handler that returns [SocketTimeoutException] instead of\n * [SocketTimeoutException].\n */\n@InternalAPI\npublic fun CoroutineScope.mapEngineExceptions(output: ByteWriteChannel, request: HttpRequestData): ByteWriteChannel {\n if (PlatformUtils.IS_NATIVE) {\n return output\n }\n\n val replacementChannel = ByteChannelWithMappedExceptions(request)\n\n writer(channel = replacementChannel) {\n try {\n replacementChannel.copyAndClose(output)\n } catch (cause: Throwable) {\n replacementChannel.close(cause)\n }\n }\n\n return replacementChannel\n}\n\n/**\n * Creates [ByteChannel] that maps close exceptions (close the channel with [SocketTimeoutException] if asked to\n * close it with [SocketTimeoutException]).\n */\ninternal expect fun ByteChannelWithMappedExceptions(request: HttpRequestData): ByteChannel\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.utils\n\nimport io.ktor.http.*\nimport io.ktor.util.*\n\n/**\n * Builds an instance of [Headers] using the [block] function.\n */\npublic fun buildHeaders(block: HeadersBuilder.() -> Unit = {}): Headers =\n HeadersBuilder().apply(block).build()\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.engine.js\n\nimport io.ktor.client.engine.*\nimport io.ktor.client.engine.js.compatibility.*\nimport io.ktor.client.engine.js.node.*\nimport io.ktor.client.features.*\nimport io.ktor.client.features.websocket.*\nimport io.ktor.client.request.*\nimport io.ktor.client.utils.*\nimport io.ktor.http.*\nimport io.ktor.util.*\nimport io.ktor.util.date.*\nimport kotlinx.coroutines.*\nimport org.w3c.dom.*\nimport org.w3c.dom.events.*\nimport kotlin.coroutines.*\n\ninternal class JsClientEngine(override val config: HttpClientEngineConfig) : HttpClientEngineBase(\"ktor-js\") {\n\n override val dispatcher = Dispatchers.Default\n\n override val supportedCapabilities = setOf(HttpTimeout, WebSocketCapability)\n\n init {\n check(config.proxy == null) { \"Proxy unsupported in Js engine.\" }\n }\n\n override suspend fun execute(data: HttpRequestData): HttpResponseData {\n val callContext = callContext()\n\n if (data.isUpgradeRequest()) {\n return executeWebSocketRequest(data, callContext)\n }\n\n val requestTime = GMTDate()\n val rawRequest = data.toRaw(callContext)\n val rawResponse = commonFetch(data.url.toString(), rawRequest)\n\n val status = HttpStatusCode(rawResponse.status.toInt(), rawResponse.statusText)\n val headers = rawResponse.headers.mapToKtor()\n val version = HttpProtocolVersion.HTTP_1_1\n\n val body = CoroutineScope(callContext).readBody(rawResponse)\n\n return HttpResponseData(\n status,\n requestTime,\n headers,\n version,\n body,\n callContext\n )\n }\n\n private suspend fun executeWebSocketRequest(\n request: HttpRequestData,\n callContext: CoroutineContext\n ): HttpResponseData {\n val requestTime = GMTDate()\n\n val urlString = request.url.toString()\n val socket = if (PlatformUtils.IS_NODE) {\n NodeWebsocket(urlString)\n } else {\n WebSocket(urlString)\n }\n\n try {\n socket.awaitConnection()\n } catch (cause: Throwable) {\n callContext.cancel(CancellationException(\"Failed to connect to $urlString\", cause))\n throw cause\n }\n\n val session = JsWebSocketSession(callContext, socket)\n\n return HttpResponseData(\n HttpStatusCode.OK,\n requestTime,\n Headers.Empty,\n HttpProtocolVersion.HTTP_1_1,\n session,\n callContext\n )\n }\n}\n\nprivate suspend fun WebSocket.awaitConnection(): WebSocket = suspendCancellableCoroutine { continuation ->\n if (continuation.isCancelled) return@suspendCancellableCoroutine\n\n val eventListener = { event: Event ->\n when (event.type) {\n \"open\" -> continuation.resume(this)\n \"error\" -> continuation.resumeWithException(WebSocketException(JSON.stringify(event)))\n }\n }\n\n addEventListener(\"open\", callback = eventListener)\n addEventListener(\"error\", callback = eventListener)\n\n continuation.invokeOnCancellation {\n removeEventListener(\"open\", callback = eventListener)\n removeEventListener(\"error\", callback = eventListener)\n\n if (it != null) {\n this@awaitConnection.close()\n }\n }\n}\n\nprivate fun org.w3c.fetch.Headers.mapToKtor(): Headers = buildHeaders {\n this@mapToKtor.asDynamic().forEach { value: String, key: String ->\n append(key, value)\n }\n\n Unit\n}\n\n/**\n * Wrapper for javascript `error` objects.\n * @property origin: fail reason\n */\npublic class JsError(public val origin: dynamic) : Throwable(\"Error from javascript[$origin].\")\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.engine.js\n\nimport io.ktor.client.engine.*\nimport io.ktor.client.engine.js.node.*\nimport io.ktor.client.request.*\nimport io.ktor.http.content.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.*\nimport org.khronos.webgl.*\nimport org.w3c.fetch.*\nimport kotlin.coroutines.*\n\ninternal suspend fun HttpRequestData.toRaw(callContext: CoroutineContext): RequestInit {\n val jsHeaders = if (PlatformUtils.IS_BROWSER) {\n Headers()\n } else {\n NodeFetch.Headers()\n }\n mergeHeaders(headers, body) { key, value ->\n jsHeaders.set(key, value)\n }\n\n val bodyBytes = when (val content = body) {\n is OutgoingContent.ByteArrayContent -> content.bytes()\n is OutgoingContent.ReadChannelContent -> content.readFrom().readRemaining().readBytes()\n is OutgoingContent.WriteChannelContent -> {\n GlobalScope.writer(callContext) {\n content.writeTo(channel)\n }.channel.readRemaining().readBytes()\n }\n else -> null\n }?.let { Uint8Array(it.toTypedArray()) }\n\n return RequestInit(\n method = method.value,\n headers = jsHeaders,\n body = bodyBytes,\n redirect = RequestRedirect.FOLLOW\n )\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.engine.js.compatibility\n\nimport io.ktor.client.engine.js.browser.*\nimport io.ktor.client.engine.js.node.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\nimport kotlinx.browser.*\nimport kotlinx.coroutines.*\nimport org.w3c.fetch.*\nimport kotlin.coroutines.*\nimport kotlin.js.*\n\ninternal suspend fun commonFetch(\n input: String,\n init: RequestInit\n): Response = suspendCancellableCoroutine { continuation ->\n val controller = if (PlatformUtils.IS_BROWSER) {\n AbortController()\n } else {\n NodeAbortController()\n }\n init.signal = controller.signal\n\n continuation.invokeOnCancellation {\n controller.abort()\n }\n\n val promise: Promise = if (PlatformUtils.IS_BROWSER) {\n window.fetch(input, init)\n } else {\n nodeFetch(input, init)\n }\n\n promise.then(\n onFulfilled = {\n continuation.resume(it)\n },\n onRejected = {\n continuation.resumeWithException(Error(\"Fail to fetch\", it))\n }\n )\n}\n\ninternal fun CoroutineScope.readBody(\n response: Response\n): ByteReadChannel = if (PlatformUtils.IS_BROWSER) {\n readBodyBrowser(response)\n} else {\n readBodyNode(response)\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.engine.js\n\nimport kotlinx.coroutines.*\nimport org.khronos.webgl.*\nimport kotlin.coroutines.*\nimport kotlin.js.*\n\ninternal external interface ReadableStream {\n public fun getReader(): ReadableStreamReader\n}\n\ninternal external interface ReadResult {\n val done: Boolean\n val value: Uint8Array?\n}\n\ninternal external interface ReadableStreamReader {\n public fun cancel(reason: dynamic): Promise\n public fun read(): Promise\n}\n\ninternal suspend fun ReadableStreamReader.readChunk(): Uint8Array? = suspendCancellableCoroutine { continuation ->\n read().then {\n val chunk = it.value\n val result = if (it.done || chunk == null) null else chunk\n continuation.resumeWith(Result.success(result))\n }.catch { cause ->\n continuation.resumeWithException(cause)\n }\n}\n\n@Suppress(\"UnsafeCastFromDynamic\")\ninternal fun Uint8Array.asByteArray(): ByteArray {\n return Int8Array(buffer, byteOffset, length).asDynamic()\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.engine.js.browser\n\nimport io.ktor.client.engine.js.*\nimport io.ktor.client.engine.js.ReadableStream\nimport io.ktor.utils.io.*\nimport kotlinx.coroutines.*\nimport org.w3c.fetch.*\n\ninternal fun CoroutineScope.readBodyBrowser(response: Response): ByteReadChannel {\n @Suppress(\"UNCHECKED_CAST_TO_EXTERNAL_INTERFACE\")\n val stream = response.body as? ReadableStream ?: error(\"Fail to obtain native stream: ${response.asDynamic()}\")\n return channelFromStream(stream)\n}\n\ninternal fun CoroutineScope.channelFromStream(\n stream: ReadableStream\n): ByteReadChannel = writer {\n val reader = stream.getReader()\n while (true) {\n try {\n val chunk = reader.readChunk() ?: break\n channel.writeFully(chunk.asByteArray())\n } catch (cause: Throwable) {\n reader.cancel(cause)\n throw cause\n }\n }\n}.channel\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.utils\n\nimport io.ktor.util.*\nimport io.ktor.util.collections.*\n\ninternal fun sharedMap(): MutableMap {\n if (PlatformUtils.IS_NATIVE) {\n return ConcurrentMap()\n }\n\n return mutableMapOf()\n}\n\ninternal fun sharedList(): MutableList {\n if (PlatformUtils.IS_NATIVE) {\n return ConcurrentList()\n }\n\n return mutableListOf()\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client\n\nimport io.ktor.client.engine.js.*\n\n/**\n * Constructs an asynchronous [HttpClient] using optional [block] for configuring this client.\n *\n * The [HttpClientEngine] is selected from the dependencies.\n * https://ktor.io/clients/http-client/engines.html\n */\npublic actual fun HttpClient(\n block: HttpClientConfig<*>.() -> Unit\n): HttpClient = HttpClient(JsClient(), block)\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.engine\n\nimport kotlinx.coroutines.*\nimport kotlin.coroutines.*\n\n/**\n * Create call context with the specified [parentJob] to be used during call execution in the engine. Call context\n * inherits [coroutineContext], but overrides job and coroutine name so that call job's parent is [parentJob] and\n * call coroutine's name is \"call-context\".\n */\ninternal actual suspend fun HttpClientEngine.createCallContext(parentJob: Job): CoroutineContext {\n val callJob = Job(parentJob)\n val callContext = coroutineContext + callJob + CALL_COROUTINE\n\n attachToUserJob(callJob)\n\n return callContext\n}\n","package io.ktor.client.engine\n\nimport io.ktor.http.*\nimport io.ktor.util.network.*\n\n/**\n * Proxy configuration.\n *\n * See [ProxyBuilder] to create proxy.\n */\npublic actual class ProxyConfig\n\n/**\n * [ProxyConfig] factory.\n */\npublic actual object ProxyBuilder {\n /**\n * Create http proxy from [url].\n */\n public actual fun http(url: Url): ProxyConfig {\n error(\"Proxy unsupported in js client engine.\")\n }\n\n /**\n * Create socks proxy from [host] and [port].\n */\n public actual fun socks(host: String, port: Int): ProxyConfig {\n error(\"Proxy unsupported in js client engine.\")\n }\n}\n\n/**\n * Resolve remote address of [ProxyConfig].\n *\n * This operations can block.\n */\npublic actual fun ProxyConfig.resolveAddress(): NetworkAddress {\n error(\"Proxy unsupported in js client engine.\")\n}\n\n/**\n * Type of configured proxy.\n */\npublic actual val ProxyConfig.type: ProxyType\n get() = error(\"Proxy unsupported in js client engine.\")\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.engine.js\n\nimport io.ktor.client.engine.*\n\n/**\n * [HttpClientEngineFactory] using a fetch API to execute requests.\n */\npublic object Js : HttpClientEngineFactory {\n override fun create(block: HttpClientEngineConfig.() -> Unit): HttpClientEngine =\n JsClientEngine(HttpClientEngineConfig().apply(block))\n}\n\n@JsName(\"JsClient\")\npublic fun JsClient(): HttpClientEngineFactory = Js\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// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!\n// See github.com/kotlin/dukat for details\n\npackage org.w3c.fetch\n\nimport kotlin.js.*\nimport org.khronos.webgl.*\nimport org.w3c.css.masking.*\nimport org.w3c.dom.*\nimport org.w3c.dom.clipboard.*\nimport org.w3c.dom.css.*\nimport org.w3c.dom.encryptedmedia.*\nimport org.w3c.dom.events.*\nimport org.w3c.dom.mediacapture.*\nimport org.w3c.dom.mediasource.*\nimport org.w3c.dom.parsing.*\nimport org.w3c.dom.pointerevents.*\nimport org.w3c.dom.svg.*\nimport org.w3c.dom.url.*\nimport org.w3c.files.*\nimport org.w3c.notifications.*\nimport org.w3c.performance.*\nimport org.w3c.workers.*\nimport org.w3c.xhr.*\n\n/**\n * Exposes the JavaScript [Headers](https://developer.mozilla.org/en/docs/Web/API/Headers) to Kotlin\n */\npublic external open class Headers(init: dynamic = definedExternally) {\n fun append(name: String, value: String)\n fun delete(name: String)\n fun get(name: String): String?\n fun has(name: String): Boolean\n fun set(name: String, value: String)\n}\n\n/**\n * Exposes the JavaScript [Body](https://developer.mozilla.org/en/docs/Web/API/Body) to Kotlin\n */\npublic external interface Body {\n val bodyUsed: Boolean\n fun arrayBuffer(): Promise\n fun blob(): Promise\n fun formData(): Promise\n fun json(): Promise\n fun text(): Promise\n}\n\n/**\n * Exposes the JavaScript [Request](https://developer.mozilla.org/en/docs/Web/API/Request) to Kotlin\n */\npublic external open class Request(input: dynamic, init: RequestInit = definedExternally) : Body {\n open val method: String\n open val url: String\n open val headers: Headers\n open val type: RequestType\n open val destination: RequestDestination\n open val referrer: String\n open val referrerPolicy: dynamic\n open val mode: RequestMode\n open val credentials: RequestCredentials\n open val cache: RequestCache\n open val redirect: RequestRedirect\n open val integrity: String\n open val keepalive: Boolean\n override val bodyUsed: Boolean\n fun clone(): Request\n override fun arrayBuffer(): Promise\n override fun blob(): Promise\n override fun formData(): Promise\n override fun json(): Promise\n override fun text(): Promise\n}\n\npublic external interface RequestInit {\n var method: String?\n get() = definedExternally\n set(value) = definedExternally\n var headers: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var body: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var referrer: String?\n get() = definedExternally\n set(value) = definedExternally\n var referrerPolicy: dynamic\n get() = definedExternally\n set(value) = definedExternally\n var mode: RequestMode?\n get() = definedExternally\n set(value) = definedExternally\n var credentials: RequestCredentials?\n get() = definedExternally\n set(value) = definedExternally\n var cache: RequestCache?\n get() = definedExternally\n set(value) = definedExternally\n var redirect: RequestRedirect?\n get() = definedExternally\n set(value) = definedExternally\n var integrity: String?\n get() = definedExternally\n set(value) = definedExternally\n var keepalive: Boolean?\n get() = definedExternally\n set(value) = definedExternally\n var window: Any?\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun RequestInit(method: String? = undefined, headers: dynamic = undefined, body: dynamic = undefined, referrer: String? = undefined, referrerPolicy: dynamic = undefined, mode: RequestMode? = undefined, credentials: RequestCredentials? = undefined, cache: RequestCache? = undefined, redirect: RequestRedirect? = undefined, integrity: String? = undefined, keepalive: Boolean? = undefined, window: Any? = undefined): RequestInit {\n val o = js(\"({})\")\n o[\"method\"] = method\n o[\"headers\"] = headers\n o[\"body\"] = body\n o[\"referrer\"] = referrer\n o[\"referrerPolicy\"] = referrerPolicy\n o[\"mode\"] = mode\n o[\"credentials\"] = credentials\n o[\"cache\"] = cache\n o[\"redirect\"] = redirect\n o[\"integrity\"] = integrity\n o[\"keepalive\"] = keepalive\n o[\"window\"] = window\n return o\n}\n\n/**\n * Exposes the JavaScript [Response](https://developer.mozilla.org/en/docs/Web/API/Response) to Kotlin\n */\npublic external open class Response(body: dynamic = definedExternally, init: ResponseInit = definedExternally) : Body {\n open val type: ResponseType\n open val url: String\n open val redirected: Boolean\n open val status: Short\n open val ok: Boolean\n open val statusText: String\n open val headers: Headers\n open val body: dynamic\n open val trailer: Promise\n override val bodyUsed: Boolean\n fun clone(): Response\n override fun arrayBuffer(): Promise\n override fun blob(): Promise\n override fun formData(): Promise\n override fun json(): Promise\n override fun text(): Promise\n\n companion object {\n fun error(): Response\n fun redirect(url: String, status: Short = definedExternally): Response\n }\n}\n\npublic external interface ResponseInit {\n var status: Short? /* = 200 */\n get() = definedExternally\n set(value) = definedExternally\n var statusText: String? /* = \"OK\" */\n get() = definedExternally\n set(value) = definedExternally\n var headers: dynamic\n get() = definedExternally\n set(value) = definedExternally\n}\n\n@kotlin.internal.InlineOnly\npublic inline fun ResponseInit(status: Short? = 200, statusText: String? = \"OK\", headers: dynamic = undefined): ResponseInit {\n val o = js(\"({})\")\n o[\"status\"] = status\n o[\"statusText\"] = statusText\n o[\"headers\"] = headers\n return o\n}\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface RequestType {\n companion object\n}\n\npublic inline val RequestType.Companion.EMPTY: RequestType get() = \"\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.AUDIO: RequestType get() = \"audio\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.FONT: RequestType get() = \"font\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.IMAGE: RequestType get() = \"image\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.SCRIPT: RequestType get() = \"script\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.STYLE: RequestType get() = \"style\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.TRACK: RequestType get() = \"track\".asDynamic().unsafeCast()\n\npublic inline val RequestType.Companion.VIDEO: RequestType get() = \"video\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface RequestDestination {\n companion object\n}\n\npublic inline val RequestDestination.Companion.EMPTY: RequestDestination get() = \"\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.DOCUMENT: RequestDestination get() = \"document\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.EMBED: RequestDestination get() = \"embed\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.FONT: RequestDestination get() = \"font\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.IMAGE: RequestDestination get() = \"image\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.MANIFEST: RequestDestination get() = \"manifest\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.MEDIA: RequestDestination get() = \"media\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.OBJECT: RequestDestination get() = \"object\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.REPORT: RequestDestination get() = \"report\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.SCRIPT: RequestDestination get() = \"script\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.SERVICEWORKER: RequestDestination get() = \"serviceworker\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.SHAREDWORKER: RequestDestination get() = \"sharedworker\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.STYLE: RequestDestination get() = \"style\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.WORKER: RequestDestination get() = \"worker\".asDynamic().unsafeCast()\n\npublic inline val RequestDestination.Companion.XSLT: RequestDestination get() = \"xslt\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface RequestMode {\n companion object\n}\n\npublic inline val RequestMode.Companion.NAVIGATE: RequestMode get() = \"navigate\".asDynamic().unsafeCast()\n\npublic inline val RequestMode.Companion.SAME_ORIGIN: RequestMode get() = \"same-origin\".asDynamic().unsafeCast()\n\npublic inline val RequestMode.Companion.NO_CORS: RequestMode get() = \"no-cors\".asDynamic().unsafeCast()\n\npublic inline val RequestMode.Companion.CORS: RequestMode get() = \"cors\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface RequestCredentials {\n companion object\n}\n\npublic inline val RequestCredentials.Companion.OMIT: RequestCredentials get() = \"omit\".asDynamic().unsafeCast()\n\npublic inline val RequestCredentials.Companion.SAME_ORIGIN: RequestCredentials get() = \"same-origin\".asDynamic().unsafeCast()\n\npublic inline val RequestCredentials.Companion.INCLUDE: RequestCredentials get() = \"include\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface RequestCache {\n companion object\n}\n\npublic inline val RequestCache.Companion.DEFAULT: RequestCache get() = \"default\".asDynamic().unsafeCast()\n\npublic inline val RequestCache.Companion.NO_STORE: RequestCache get() = \"no-store\".asDynamic().unsafeCast()\n\npublic inline val RequestCache.Companion.RELOAD: RequestCache get() = \"reload\".asDynamic().unsafeCast()\n\npublic inline val RequestCache.Companion.NO_CACHE: RequestCache get() = \"no-cache\".asDynamic().unsafeCast()\n\npublic inline val RequestCache.Companion.FORCE_CACHE: RequestCache get() = \"force-cache\".asDynamic().unsafeCast()\n\npublic inline val RequestCache.Companion.ONLY_IF_CACHED: RequestCache get() = \"only-if-cached\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface RequestRedirect {\n companion object\n}\n\npublic inline val RequestRedirect.Companion.FOLLOW: RequestRedirect get() = \"follow\".asDynamic().unsafeCast()\n\npublic inline val RequestRedirect.Companion.ERROR: RequestRedirect get() = \"error\".asDynamic().unsafeCast()\n\npublic inline val RequestRedirect.Companion.MANUAL: RequestRedirect get() = \"manual\".asDynamic().unsafeCast()\n\n/* please, don't implement this interface! */\n@Suppress(\"NESTED_CLASS_IN_EXTERNAL_INTERFACE\")\npublic external interface ResponseType {\n companion object\n}\n\npublic inline val ResponseType.Companion.BASIC: ResponseType get() = \"basic\".asDynamic().unsafeCast()\n\npublic inline val ResponseType.Companion.CORS: ResponseType get() = \"cors\".asDynamic().unsafeCast()\n\npublic inline val ResponseType.Companion.DEFAULT: ResponseType get() = \"default\".asDynamic().unsafeCast()\n\npublic inline val ResponseType.Companion.ERROR: ResponseType get() = \"error\".asDynamic().unsafeCast()\n\npublic inline val ResponseType.Companion.OPAQUE: ResponseType get() = \"opaque\".asDynamic().unsafeCast()\n\npublic inline val ResponseType.Companion.OPAQUEREDIRECT: ResponseType get() = \"opaqueredirect\".asDynamic().unsafeCast()","/*\n * Copyright 2014-2021 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.engine.js.compatibility\n\nimport org.w3c.dom.events.*\nimport org.w3c.fetch.*\n\n// https://youtrack.jetbrains.com/issue/KT-29243\n/**\n * https://fetch.spec.whatwg.org/#dom-request-signal\n */\ninternal var RequestInit.signal: AbortSignal\n get() = asDynamic().signal as AbortSignal\n set(newValue) {\n asDynamic().signal = newValue\n }\n\n/**\n * Exposes the JavaScript [AbortController](https://dom.spec.whatwg.org/#interface-abortcontroller) to Kotlin\n */\ninternal open external class AbortController {\n var signal: AbortSignal\n fun abort()\n}\n\n/**\n * Exposes the JavaScript [AbortSignal](https://dom.spec.whatwg.org/#interface-AbortSignal) to Kotlin\n */\ninternal abstract external class AbortSignal : EventTarget {\n var aborted: Boolean\n var onabort: ((AbortSignal, ev: Event) -> Any)?\n get() = definedExternally\n set(value) = definedExternally\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.engine.js.node\n\nimport io.ktor.client.engine.js.*\nimport io.ktor.utils.io.*\nimport kotlinx.coroutines.*\nimport kotlinx.coroutines.channels.*\nimport org.khronos.webgl.ArrayBuffer\nimport org.khronos.webgl.Uint8Array\nimport org.w3c.fetch.*\n\ninternal fun CoroutineScope.readBodyNode(response: Response): ByteReadChannel = writer {\n val body: dynamic = response.body ?: error(\"Fail to get body\")\n\n val responseData = Channel(1)\n\n body.on(\"data\") { chunk: ArrayBuffer ->\n responseData.offer(Uint8Array(chunk).asByteArray())\n body.pause()\n }\n\n body.on(\"error\") { error ->\n val cause = JsError(error)\n responseData.close(cause)\n channel.close(cause)\n }\n\n body.on(\"end\") {\n responseData.close()\n }\n\n try {\n for (chunk in responseData) {\n channel.writeFully(chunk)\n body.resume()\n }\n } catch (cause: Throwable) {\n body.destroy(cause)\n throw cause\n }\n}.channel\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features\n\nimport io.ktor.client.*\n\ninternal actual fun HttpClient.platformDefaultTransformers() {}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features.websocket\n\nimport io.ktor.http.cio.websocket.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.*\nimport kotlinx.coroutines.channels.*\nimport org.khronos.webgl.*\nimport org.w3c.dom.*\nimport kotlin.coroutines.*\n\ninternal class JsWebSocketSession(\n override val coroutineContext: CoroutineContext,\n private val websocket: WebSocket\n) : DefaultWebSocketSession {\n private val _closeReason: CompletableDeferred = CompletableDeferred()\n private val _incoming: Channel = Channel(Channel.UNLIMITED)\n private val _outgoing: Channel = Channel(Channel.UNLIMITED)\n\n override val incoming: ReceiveChannel = _incoming\n override val outgoing: SendChannel = _outgoing\n\n @ExperimentalWebSocketExtensionApi\n override val extensions: List> get() = emptyList()\n\n override val closeReason: Deferred = _closeReason\n\n override var maxFrameSize: Long\n get() = Long.MAX_VALUE\n set(value) {}\n\n init {\n websocket.binaryType = BinaryType.ARRAYBUFFER\n\n websocket.addEventListener(\n \"message\",\n callback = {\n val event = it.unsafeCast()\n\n launch {\n val data = event.data\n\n val frame: Frame = when (data) {\n is ArrayBuffer -> Frame.Binary(false, Int8Array(data).unsafeCast())\n is String -> Frame.Text(data)\n else -> {\n val error = IllegalStateException(\"Unknown frame type: ${event.type}\")\n _closeReason.completeExceptionally(error)\n throw error\n }\n }\n\n _incoming.offer(frame)\n }\n }\n )\n\n websocket.addEventListener(\n \"error\",\n callback = {\n val cause = WebSocketException(\"$it\")\n _closeReason.completeExceptionally(cause)\n _incoming.close(cause)\n _outgoing.cancel()\n }\n )\n\n websocket.addEventListener(\n \"close\",\n callback = { event: dynamic ->\n launch {\n val reason = CloseReason(event.code as Short, event.reason as String)\n _closeReason.complete(reason)\n _incoming.send(Frame.Close(reason))\n _incoming.close()\n\n _outgoing.cancel()\n }\n }\n )\n\n launch {\n @OptIn(ExperimentalCoroutinesApi::class)\n _outgoing.consumeEach {\n when (it.frameType) {\n FrameType.TEXT -> {\n val text = it.data\n websocket.send(String(text))\n }\n FrameType.BINARY -> {\n val source = it.data as Int8Array\n val frameData = source.buffer.slice(\n source.byteOffset,\n source.byteOffset + source.byteLength\n )\n\n websocket.send(frameData)\n }\n FrameType.CLOSE -> {\n val data = buildPacket { writeFully(it.data) }\n val code = data.readShort()\n val reason = data.readText()\n _closeReason.complete(CloseReason(code, reason))\n if (code.isReservedStatusCode()) {\n websocket.close()\n } else {\n websocket.close(code, reason)\n }\n }\n FrameType.PING, FrameType.PONG -> {\n // ignore\n }\n }\n }\n }\n\n coroutineContext[Job]?.invokeOnCompletion { cause ->\n if (cause == null) {\n websocket.close()\n } else {\n websocket.close(CloseReason.Codes.INTERNAL_ERROR.code, \"Client failed\")\n }\n }\n }\n\n @OptIn(ExperimentalWebSocketExtensionApi::class)\n override fun start(negotiatedExtensions: List>) {\n require(negotiatedExtensions.isEmpty()) { \"Extensions are not supported.\" }\n }\n\n override suspend fun flush() {\n }\n\n @Deprecated(\n \"Use cancel() instead.\",\n ReplaceWith(\"cancel()\", \"kotlinx.coroutines.cancel\")\n )\n override fun terminate() {\n _incoming.cancel()\n _outgoing.cancel()\n _closeReason.cancel(\"WebSocket terminated\")\n websocket.close()\n }\n\n private fun Short.isReservedStatusCode(): Boolean {\n return CloseReason.Codes.byCode(this).let { resolved ->\n @Suppress(\"DEPRECATION\")\n resolved == null || resolved == CloseReason.Codes.CLOSED_ABNORMALLY\n }\n }\n}\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","(function (root, factory) {\n if (typeof define === 'function' && define.amd)\n define(['exports', 'kotlin', 'react', 'kotlin-wrappers-kotlin-extensions-jsLegacy', 'kotlinx-coroutines-core'], factory);\n else if (typeof exports === 'object')\n factory(module.exports, require('kotlin'), require('react'), require('kotlin-wrappers-kotlin-extensions-jsLegacy'), require('kotlinx-coroutines-core'));\n else {\n if (typeof kotlin === 'undefined') {\n throw new Error(\"Error loading module 'kotlin-wrappers-kotlin-react-jsLegacy'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'kotlin-wrappers-kotlin-react-jsLegacy'.\");\n }if (typeof react === 'undefined') {\n throw new Error(\"Error loading module 'kotlin-wrappers-kotlin-react-jsLegacy'. Its dependency 'react' was not found. Please, check whether 'react' is loaded prior to 'kotlin-wrappers-kotlin-react-jsLegacy'.\");\n }if (typeof this['kotlin-wrappers-kotlin-extensions-jsLegacy'] === 'undefined') {\n throw new Error(\"Error loading module 'kotlin-wrappers-kotlin-react-jsLegacy'. Its dependency 'kotlin-wrappers-kotlin-extensions-jsLegacy' was not found. Please, check whether 'kotlin-wrappers-kotlin-extensions-jsLegacy' is loaded prior to 'kotlin-wrappers-kotlin-react-jsLegacy'.\");\n }if (typeof this['kotlinx-coroutines-core'] === 'undefined') {\n throw new Error(\"Error loading module 'kotlin-wrappers-kotlin-react-jsLegacy'. Its dependency 'kotlinx-coroutines-core' was not found. Please, check whether 'kotlinx-coroutines-core' is loaded prior to 'kotlin-wrappers-kotlin-react-jsLegacy'.\");\n }root['kotlin-wrappers-kotlin-react-jsLegacy'] = factory(typeof this['kotlin-wrappers-kotlin-react-jsLegacy'] === 'undefined' ? {} : this['kotlin-wrappers-kotlin-react-jsLegacy'], kotlin, react, this['kotlin-wrappers-kotlin-extensions-jsLegacy'], this['kotlinx-coroutines-core']);\n }\n}(this, function (_, Kotlin, $module$react, $module$kotlin_wrappers_kotlin_extensions_jsLegacy, $module$kotlinx_coroutines_core) {\n 'use strict';\n var $$importsForInline$$ = _.$$importsForInline$$ || (_.$$importsForInline$$ = {});\n var Unit = Kotlin.kotlin.Unit;\n var Kind_CLASS = Kotlin.Kind.CLASS;\n var Annotation = Kotlin.kotlin.Annotation;\n var createElement = $module$react.createElement;\n var emptyList = Kotlin.kotlin.collections.emptyList_287e2$;\n var clone = $module$kotlin_wrappers_kotlin_extensions_jsLegacy.kotlinext.js.clone_issdgt$;\n var defineInlineFunction = Kotlin.defineInlineFunction;\n var wrapFunction = Kotlin.wrapFunction;\n var listOf = Kotlin.kotlin.collections.listOf_mh5how$;\n var Children = $module$react.Children;\n var addAll = Kotlin.kotlin.collections.addAll_ye1y7v$;\n var throwCCE = Kotlin.throwCCE;\n var cloneElement = $module$react.cloneElement;\n var first = Kotlin.kotlin.collections.first_2p1efm$;\n var ArrayList_init = Kotlin.kotlin.collections.ArrayList_init_287e2$;\n var copyToArray = Kotlin.kotlin.collections.copyToArray;\n var collectionSizeOrDefault = Kotlin.kotlin.collections.collectionSizeOrDefault_ba2ldo$;\n var ArrayList_init_0 = Kotlin.kotlin.collections.ArrayList_init_ww73n8$;\n var checkIndexOverflow = Kotlin.kotlin.collections.checkIndexOverflow_za3lpa$;\n var IllegalStateException_init = Kotlin.kotlin.IllegalStateException_init_pdl1vj$;\n var get_js = Kotlin.kotlin.js.get_js_1yb8b7$;\n var coroutines = $module$kotlinx_coroutines_core.kotlinx.coroutines;\n var Throwable = Error;\n var COROUTINE_SUSPENDED = Kotlin.kotlin.coroutines.intrinsics.COROUTINE_SUSPENDED;\n var CoroutineImpl = Kotlin.kotlin.coroutines.CoroutineImpl;\n var launch = $module$kotlinx_coroutines_core.kotlinx.coroutines.launch_s496o7$;\n var Component = $module$react.Component;\n var Any = Object;\n var ReadWriteProperty = Kotlin.kotlin.properties.ReadWriteProperty;\n var to = Kotlin.kotlin.to_ujzrz7$;\n var rawUseEffect = $module$react.useEffect;\n RElementBuilder.prototype = Object.create(RBuilder.prototype);\n RElementBuilder.prototype.constructor = RElementBuilder;\n RComponent.prototype = Object.create(Component.prototype);\n RComponent.prototype.constructor = RComponent;\n function RBuilder() {\n this.childList = ArrayList_init();\n }\n RBuilder.prototype.child_52psg1$ = function (element) {\n this.childList.add_11rb$(element);\n return element;\n };\n RBuilder.prototype.unaryPlus_84gpoi$ = function ($receiver) {\n this.childList.add_11rb$($receiver);\n };\n RBuilder.prototype.unaryPlus_pdl1vz$ = function ($receiver) {\n this.childList.add_11rb$($receiver);\n };\n RBuilder.prototype.child_k3oess$ = function (type, props, children) {\n return this.child_52psg1$(createElement.apply(null, [type, props].concat(copyToArray(children))));\n };\n RBuilder.prototype.child_4dvv5y$ = function (type, props, handler) {\n var $receiver = new RElementBuilder(props);\n handler($receiver);\n var children = $receiver.childList;\n return this.child_k3oess$(type, props, children);\n };\n RBuilder.prototype.invoke_eb8iu4$ = function ($receiver, handler) {\n return this.child_4dvv5y$($receiver, {}, handler);\n };\n RBuilder.prototype.invoke_csqs6z$ = function ($receiver, value, handler) {\n var $receiver_0 = {};\n $receiver_0.value = value;\n return this.child_4dvv5y$($receiver, $receiver_0, handler);\n };\n function RBuilder$invoke$lambda$lambda$lambda(closure$handler, closure$value) {\n return function ($receiver) {\n closure$handler($receiver, closure$value);\n return Unit;\n };\n }\n function RBuilder$invoke$lambda$lambda(closure$handler) {\n return function (value) {\n return buildElements(RBuilder$invoke$lambda$lambda$lambda(closure$handler, value));\n };\n }\n function RBuilder$invoke$lambda($receiver) {\n return Unit;\n }\n RBuilder.prototype.invoke_ory6b3$ = function ($receiver, handler) {\n var $receiver_0 = {};\n $receiver_0.children = RBuilder$invoke$lambda$lambda(handler);\n return this.child_4dvv5y$($receiver, $receiver_0, RBuilder$invoke$lambda);\n };\n RBuilder.prototype.node_rwypko$ = function ($receiver, props, children) {\n if (children === void 0)\n children = emptyList();\n return this.child_k3oess$($receiver, clone(props), children);\n };\n RBuilder.prototype.child_ssazr1$ = function (klazz, handler) {\n return this.invoke_eb8iu4$(get_rClass(klazz), handler);\n };\n RBuilder.prototype.child_t7en6a$ = defineInlineFunction('kotlin-wrappers-kotlin-react-jsLegacy.react.RBuilder.child_t7en6a$', wrapFunction(function () {\n var getKClass = Kotlin.getKClass;\n return function (C_0, isC, handler) {\n return this.child_ssazr1$(getKClass(C_0), handler);\n };\n }));\n function RBuilder$childFunction$lambda(closure$children) {\n return function (value) {\n var $receiver = new RBuilder();\n closure$children($receiver, value);\n return first($receiver.childList);\n };\n }\n RBuilder.prototype.childFunction_2656uf$ = function (klazz, handler, children) {\n var tmp$ = get_rClass(klazz);\n var $receiver = new RElementBuilder({});\n handler($receiver);\n return this.child_k3oess$(tmp$, $receiver.attrs, listOf(RBuilder$childFunction$lambda(children)));\n };\n RBuilder.prototype.childFunction_khdow9$ = defineInlineFunction('kotlin-wrappers-kotlin-react-jsLegacy.react.RBuilder.childFunction_khdow9$', wrapFunction(function () {\n var getKClass = Kotlin.getKClass;\n return function (C_0, isC, handler, children) {\n return this.childFunction_2656uf$(getKClass(C_0), handler, children);\n };\n }));\n RBuilder.prototype.node_3ecl1l$ = function (klazz, props, children) {\n if (children === void 0)\n children = emptyList();\n return this.node_rwypko$(get_rClass(klazz), props, children);\n };\n RBuilder.prototype.node_e2hqbc$ = defineInlineFunction('kotlin-wrappers-kotlin-react-jsLegacy.react.RBuilder.node_e2hqbc$', wrapFunction(function () {\n var emptyList = Kotlin.kotlin.collections.emptyList_287e2$;\n var getKClass = Kotlin.getKClass;\n return function (C_0, isC, props, children) {\n if (children === void 0)\n children = emptyList();\n return this.node_3ecl1l$(getKClass(C_0), props, children);\n };\n }));\n RBuilder.prototype.children_yllgzm$ = function ($receiver) {\n addAll(this.childList, Children.toArray(get_children($receiver)));\n };\n RBuilder.prototype.children_48djri$ = function ($receiver, value) {\n var tmp$;\n this.childList.add_11rb$((typeof (tmp$ = get_children($receiver)) === 'function' ? tmp$ : throwCCE())(value));\n };\n RBuilder.prototype.renderEach_3b8uhr$ = function ($receiver, fn) {\n var tmp$ = this.childList;\n var destination = ArrayList_init_0(collectionSizeOrDefault($receiver, 10));\n var tmp$_0;\n tmp$_0 = $receiver.iterator();\n while (tmp$_0.hasNext()) {\n var item = tmp$_0.next();\n var tmp$_1 = destination.add_11rb$;\n var $receiver_0 = new RBuilder();\n fn($receiver_0, item);\n tmp$_1.call(destination, first($receiver_0.childList));\n }\n tmp$.add_11rb$(copyToArray(destination));\n };\n RBuilder.prototype.renderEachIndexed_a4qrr7$ = function ($receiver, fn) {\n var tmp$ = this.childList;\n var destination = ArrayList_init_0(collectionSizeOrDefault($receiver, 10));\n var tmp$_0, tmp$_0_0;\n var index = 0;\n tmp$_0 = $receiver.iterator();\n while (tmp$_0.hasNext()) {\n var item = tmp$_0.next();\n var tmp$_1 = destination.add_11rb$;\n var index_0 = checkIndexOverflow((tmp$_0_0 = index, index = tmp$_0_0 + 1 | 0, tmp$_0_0));\n var $receiver_0 = new RBuilder();\n fn($receiver_0, index_0, item);\n tmp$_1.call(destination, first($receiver_0.childList));\n }\n tmp$.add_11rb$(copyToArray(destination));\n };\n RBuilder.prototype.withKey_s5hl0b$ = function ($receiver, newKey) {\n var index = this.childList.indexOf_11rb$($receiver);\n if (index >= 0) {\n this.childList.removeAt_za3lpa$(index);\n var $receiver_0 = {};\n set_key($receiver_0, newKey);\n var elementWithKey = cloneElement($receiver, $receiver_0);\n this.childList.add_wxm5ur$(index, elementWithKey);\n }};\n RBuilder.prototype.withKey_pspxar$ = function ($receiver, newKey) {\n this.withKey_s5hl0b$($receiver, newKey.toString());\n };\n RBuilder.$metadata$ = {kind: Kind_CLASS, simpleName: 'RBuilder', interfaces: []};\n function buildElements(handler) {\n var tmp$;\n var $receiver = new RBuilder();\n handler($receiver);\n var nodes = $receiver.childList;\n switch (nodes.size) {\n case 0:\n tmp$ = null;\n break;\n case 1:\n tmp$ = first(nodes);\n break;\n default:var tmp$_0 = $module$react.Fragment;\n var $receiver_0 = {};\n tmp$ = createElement.apply(null, [tmp$_0, $receiver_0].concat(copyToArray(nodes)));\n break;\n }\n return tmp$;\n }\n function RElementBuilder(attrs) {\n RBuilder.call(this);\n this.attrs_iyt8sk$_0 = attrs;\n }\n Object.defineProperty(RElementBuilder.prototype, 'attrs', {get: function () {\n return this.attrs_iyt8sk$_0;\n }});\n RElementBuilder.prototype.attrs_slhiwc$ = function (handler) {\n handler(this.attrs);\n };\n Object.defineProperty(RElementBuilder.prototype, 'key', {configurable: true, get: function () {\n throw IllegalStateException_init(''.toString());\n }, set: function (value) {\n set_key(this.attrs, value);\n }});\n Object.defineProperty(RElementBuilder.prototype, 'ref', {configurable: true, get: function () {\n throw IllegalStateException_init(''.toString());\n }, set: function (value) {\n set_ref(this.attrs, value);\n }});\n RElementBuilder.prototype.ref_5ij4lk$ = function (handler) {\n ref(this.attrs, handler);\n };\n RElementBuilder.$metadata$ = {kind: Kind_CLASS, simpleName: 'RElementBuilder', interfaces: [RBuilder]};\n function functionalComponent$lambda$lambda(closure$func, closure$props) {\n return function ($receiver) {\n closure$func($receiver, closure$props);\n return Unit;\n };\n }\n function functionalComponent$lambda(closure$func) {\n return function (props) {\n return buildElements(functionalComponent$lambda$lambda(closure$func, props));\n };\n }\n function functionalComponent(displayName, func) {\n if (displayName === void 0)\n displayName = null;\n var fc = functionalComponent$lambda(func);\n if (displayName != null) {\n fc.displayName = displayName;\n }return fc;\n }\n function child$lambda($receiver) {\n return Unit;\n }\n function child($receiver, component, props, handler) {\n if (props === void 0) {\n props = {};\n }if (handler === void 0)\n handler = child$lambda;\n return $receiver.child_4dvv5y$(component, props, handler);\n }\n function get_rClass($receiver) {\n return get_js($receiver);\n }\n function get_children($receiver) {\n return $receiver.children;\n }\n function set_key($receiver, value) {\n $receiver.key = value;\n }\n function set_ref($receiver, value) {\n $receiver.ref = value;\n }\n function ref($receiver, ref) {\n $receiver.ref = ref;\n }\n function setState$lambda(closure$buildState) {\n return function (it) {\n var builder = closure$buildState;\n var $receiver = clone(it);\n builder($receiver);\n return $receiver;\n };\n }\n function setState($receiver, buildState) {\n $receiver.setState(setState$lambda(buildState));\n }\n function RComponent() {\n }\n RComponent.prototype.init_bc6fkx$ = function ($receiver) {\n };\n RComponent.prototype.init_65a95q$ = function ($receiver, props) {\n };\n RComponent.prototype.children_ss14n$ = function ($receiver) {\n $receiver.children_yllgzm$(this.props);\n };\n RComponent.prototype.children_tgvp6h$ = function ($receiver, value) {\n $receiver.children_48djri$(this.props, value);\n };\n function RComponent$render$lambda(this$RComponent) {\n return function ($receiver) {\n this$RComponent.render_ss14n$($receiver);\n return Unit;\n };\n }\n RComponent.prototype.render = function () {\n return buildElements(RComponent$render$lambda(this));\n };\n RComponent.$metadata$ = {kind: Kind_CLASS, simpleName: 'RComponent', interfaces: []};\n function RComponent_init_0(props, $this) {\n $this = $this || Object.create(RComponent.prototype);\n Component.call($this, props);\n RComponent.call($this);\n var $receiver = {};\n $this.init_65a95q$($receiver, props);\n $this.state = $receiver;\n return $this;\n }\n function RStateDelegate(state, setState) {\n this.state_0 = state;\n this.setState_0 = setState;\n }\n RStateDelegate.prototype.component1 = function () {\n return this.state_0;\n };\n RStateDelegate.prototype.component2 = function () {\n return this.setState_0;\n };\n RStateDelegate.prototype.getValue_lrcp0p$ = function (thisRef, property) {\n return this.state_0;\n };\n RStateDelegate.prototype.setValue_9rddgb$ = function (thisRef, property, value) {\n this.setState_0(value);\n };\n RStateDelegate.$metadata$ = {kind: Kind_CLASS, simpleName: 'RStateDelegate', interfaces: [ReadWriteProperty]};\n function useEffect$lambda(closure$effect) {\n return function () {\n closure$effect();\n return undefined;\n };\n }\n function useEffect(dependencies, effect) {\n if (dependencies === void 0)\n dependencies = null;\n var rawEffect = useEffect$lambda(effect);\n if (dependencies != null) {\n rawUseEffect(rawEffect, copyToArray(dependencies));\n } else {\n rawUseEffect(rawEffect);\n }\n }\n var package$react = _.react || (_.react = {});\n $$importsForInline$$['kotlin-wrappers-kotlin-extensions-jsLegacy'] = $module$kotlin_wrappers_kotlin_extensions_jsLegacy;\n package$react.RBuilder = RBuilder;\n package$react.buildElements_zepujl$ = buildElements;\n package$react.RElementBuilder = RElementBuilder;\n package$react.functionalComponent_7g4vsr$ = functionalComponent;\n package$react.child_9r8yuv$ = child;\n $$importsForInline$$.react = $module$react;\n package$react.get_rClass_inwa2g$ = get_rClass;\n package$react.get_children_yllgzm$ = get_children;\n package$react.set_key_38rnt0$ = set_key;\n package$react.set_ref_jjyqia$ = set_ref;\n package$react.ref_dpkau5$ = ref;\n package$react.setState_kpl3tw$ = setState;\n package$react.RComponent_init_8bz2yq$ = RComponent_init_0;\n package$react.RComponent = RComponent;\n package$react.RStateDelegate = RStateDelegate;\n package$react.useEffect_wrbdb4$ = useEffect;\n return _;\n}));\n\n//# sourceMappingURL=kotlin-wrappers-kotlin-react-jsLegacy.js.map\n","package com.arkivanov.mvikotlin.rx\n\n// Expect/actual workaround for https://github.com/arkivanov/MVIKotlin/issues/145\nexpect fun observer(onComplete: () -> Unit = {}, onNext: (T) -> Unit = {}): Observer\n","package com.arkivanov.mvikotlin.rx\n\nactual fun observer(onComplete: () -> Unit, onNext: (T) -> Unit): Observer =\n ObserverImpl(onComplete, onNext)\n\nprivate class ObserverImpl(\n private val onComplete: () -> Unit,\n private val onNext: (T) -> Unit\n) : Observer {\n override fun onNext(value: T) {\n onNext.invoke(value)\n }\n\n override fun onComplete() {\n onComplete.invoke()\n }\n}\n",null,null,"/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di\n\nimport co.touchlab.kermit.Kermit\nimport com.shabinder.common.database.TokenDBQueries\nimport com.shabinder.common.di.spotify.authenticateSpotify\nimport com.shabinder.common.models.spotify.TokenData\nimport kotlinx.coroutines.GlobalScope\nimport kotlinx.coroutines.launch\nimport kotlinx.datetime.Clock\n\nclass TokenStore(\n private val dir: Dir,\n private val logger: Kermit,\n) {\n private val db: TokenDBQueries?\n get() = dir.db?.tokenDBQueries\n\n private fun save(token: TokenData) {\n if (!token.access_token.isNullOrBlank() && token.expiry != null)\n db?.add(token.access_token!!, token.expiry!! + Clock.System.now().epochSeconds)\n }\n\n suspend fun getToken(): TokenData? {\n var token: TokenData? = db?.select()?.executeAsOneOrNull()?.let {\n TokenData(it.accessToken, null, it.expiry)\n }\n logger.d { \"System Time:${Clock.System.now().epochSeconds} , Token Expiry:${token?.expiry}\" }\n if (Clock.System.now().epochSeconds > token?.expiry ?: 0 || token == null) {\n logger.d { \"Requesting New Token\" }\n token = authenticateSpotify()\n GlobalScope.launch { token?.access_token?.let { save(token) } }\n }\n return token\n }\n}\n",null,"/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di\n\nimport co.touchlab.kermit.Kermit\nimport com.shabinder.common.database.createDatabase\nimport com.shabinder.common.database.getLogger\nimport com.shabinder.common.di.providers.GaanaProvider\nimport com.shabinder.common.di.providers.SpotifyProvider\nimport com.shabinder.common.di.providers.YoutubeMp3\nimport com.shabinder.common.di.providers.YoutubeMusic\nimport io.ktor.client.HttpClient\nimport io.ktor.client.features.json.JsonFeature\nimport io.ktor.client.features.json.serializer.KotlinxSerializer\nimport io.ktor.client.features.logging.DEFAULT\nimport io.ktor.client.features.logging.LogLevel\nimport io.ktor.client.features.logging.Logger\nimport io.ktor.client.features.logging.Logging\nimport kotlinx.serialization.json.Json\nimport org.koin.core.context.startKoin\nimport org.koin.dsl.KoinAppDeclaration\nimport org.koin.dsl.module\n\nfun initKoin(enableNetworkLogs: Boolean = false, appDeclaration: KoinAppDeclaration = {}) =\n startKoin {\n appDeclaration()\n modules(commonModule(enableNetworkLogs = enableNetworkLogs))\n }\n\nfun commonModule(enableNetworkLogs: Boolean) = module {\n single { createHttpClient(enableNetworkLogs = enableNetworkLogs) }\n single { Dir(get(), createDatabase()) }\n single { Kermit(getLogger()) }\n single { TokenStore(get(), get()) }\n single { YoutubeMusic(get(), get()) }\n single { SpotifyProvider(get(), get(), get()) }\n single { GaanaProvider(get(), get(), get()) }\n single { YoutubeProvider(get(), get(), get()) }\n single { YoutubeMp3(get(), get(), get()) }\n single { FetchPlatformQueryResult(get(), get(), get(), get(), get(), get()) }\n}\n\nval kotlinxSerializer = KotlinxSerializer(\n Json {\n isLenient = true\n ignoreUnknownKeys = true\n }\n)\n\nfun createHttpClient(enableNetworkLogs: Boolean = false, serializer: KotlinxSerializer = kotlinxSerializer) = HttpClient {\n install(JsonFeature) {\n this.serializer = serializer\n }\n if (enableNetworkLogs) {\n install(Logging) {\n logger = Logger.DEFAULT\n level = LogLevel.INFO\n }\n }\n}\nval ktorHttpClient = HttpClient {}\n",null,"/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di\n\nimport co.touchlab.kermit.Kermit\nimport com.shabinder.common.database.createDatabase\nimport com.shabinder.common.di.utils.removeIllegalChars\nimport com.shabinder.common.models.DownloadResult\nimport com.shabinder.common.models.TrackDetails\nimport com.shabinder.database.Database\nimport io.ktor.client.request.get\nimport io.ktor.client.statement.HttpStatement\nimport io.ktor.http.contentLength\nimport io.ktor.http.isSuccess\nimport kotlinx.coroutines.flow.Flow\nimport kotlinx.coroutines.flow.flow\nimport kotlin.math.roundToInt\n\nexpect class Dir(\n logger: Kermit,\n database: Database? = createDatabase()\n) {\n val db: Database?\n fun isPresent(path: String): Boolean\n fun fileSeparator(): String\n fun defaultDir(): String\n fun imageCacheDir(): String\n fun createDirectory(dirPath: String)\n suspend fun cacheImage(image: Any, path: String) // in Android = ImageBitmap, Desktop = BufferedImage\n suspend fun loadImage(url: String): Picture\n suspend fun clearCache()\n suspend fun saveFileWithMetadata(mp3ByteArray: ByteArray, trackDetails: TrackDetails)\n fun addToLibrary(path: String)\n}\n\nsuspend fun downloadFile(url: String): Flow {\n return flow {\n val client = createHttpClient()\n val response = client.get(url).execute()\n val data = ByteArray(response.contentLength()!!.toInt())\n var offset = 0\n do {\n val currentRead = response.content.readAvailable(data, offset, data.size)\n offset += currentRead\n val progress = (offset * 100f / data.size).roundToInt()\n emit(DownloadResult.Progress(progress))\n } while (currentRead > 0)\n if (response.status.isSuccess()) {\n emit(DownloadResult.Success(data))\n } else {\n emit(DownloadResult.Error(\"File not downloaded\"))\n }\n client.close()\n }\n}\nfun getNameURL(url: String): String {\n return url.substring(url.lastIndexOf('/', url.lastIndexOf('/') - 1) + 1, url.length).replace('/', '_')\n}\n/*\n* Call this function at startup!\n* */\nfun Dir.createDirectories() {\n createDirectory(defaultDir())\n createDirectory(imageCacheDir())\n createDirectory(defaultDir() + \"Tracks/\")\n createDirectory(defaultDir() + \"Albums/\")\n createDirectory(defaultDir() + \"Playlists/\")\n createDirectory(defaultDir() + \"YT_Downloads/\")\n}\nfun Dir.finalOutputDir(itemName: String, type: String, subFolder: String, defaultDir: String, extension: String = \".mp3\"): String =\n defaultDir + removeIllegalChars(type) + this.fileSeparator() +\n if (subFolder.isEmpty())\"\" else { removeIllegalChars(subFolder) + this.fileSeparator() } +\n removeIllegalChars(itemName) + extension\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di\n\nimport com.shabinder.common.database.DownloadRecordDatabaseQueries\nimport com.shabinder.common.di.providers.GaanaProvider\nimport com.shabinder.common.di.providers.SpotifyProvider\nimport com.shabinder.common.di.providers.YoutubeMp3\nimport com.shabinder.common.di.providers.YoutubeMusic\nimport com.shabinder.common.models.PlatformQueryResult\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\n\nclass FetchPlatformQueryResult(\n private val gaanaProvider: GaanaProvider,\n private val spotifyProvider: SpotifyProvider,\n val youtubeProvider: YoutubeProvider,\n val youtubeMusic: YoutubeMusic,\n val youtubeMp3: YoutubeMp3,\n private val dir: Dir\n) {\n private val db: DownloadRecordDatabaseQueries?\n get() = dir.db?.downloadRecordDatabaseQueries\n\n suspend fun query(link: String): PlatformQueryResult? {\n val result = when {\n // SPOTIFY\n link.contains(\"spotify\", true) ->\n spotifyProvider.query(link)\n\n // YOUTUBE\n link.contains(\"youtube.com\", true) || link.contains(\"youtu.be\", true) ->\n youtubeProvider.query(link)\n\n // GAANA\n link.contains(\"gaana\", true) ->\n gaanaProvider.query(link)\n\n else -> {\n null\n }\n }\n result?.run {\n withContext(Dispatchers.Default) {\n db?.add(\n folderType, title, link, coverUrl, trackList.size.toLong()\n )\n }\n }\n return result\n }\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di.gaana\n\nimport com.shabinder.common.di.currentPlatform\nimport com.shabinder.common.models.AllPlatforms\nimport com.shabinder.common.models.corsProxy\nimport com.shabinder.common.models.gaana.GaanaAlbum\nimport com.shabinder.common.models.gaana.GaanaArtistDetails\nimport com.shabinder.common.models.gaana.GaanaArtistTracks\nimport com.shabinder.common.models.gaana.GaanaPlaylist\nimport com.shabinder.common.models.gaana.GaanaSong\nimport io.ktor.client.HttpClient\nimport io.ktor.client.request.get\n\nval corsApi get() = if (currentPlatform is AllPlatforms.Js) {\n corsProxy.url\n} // \"https://spotiflyer-cors.azurewebsites.net/\" //\"https://spotiflyer-cors.herokuapp.com/\"//\"https://cors.bridged.cc/\"\nelse \"\"\n\nprivate const val TOKEN = \"b2e6d7fbc136547a940516e9b77e5990\"\nprivate val BASE_URL get() = \"${corsApi}https://api.gaana.com\"\n\ninterface GaanaRequests {\n\n val httpClient: HttpClient\n\n /*\n * Api Request: http://api.gaana.com/?type=playlist&subtype=playlist_detail&seokey=gaana-dj-hindi-top-50-1&token=b2e6d7fbc136547a940516e9b77e5990&format=JSON\n *\n * subtype : [\"most_popular_playlist\" , \"playlist_home_featured\" ,\"playlist_detail\" ,\"user_playlist\" ,\"topCharts\"]\n **/\n suspend fun getGaanaPlaylist(\n type: String = \"playlist\",\n subtype: String = \"playlist_detail\",\n seokey: String,\n format: String = \"JSON\",\n limit: Int = 2000\n ): GaanaPlaylist {\n return httpClient.get(\n \"$BASE_URL/?type=$type&subtype=$subtype&seokey=$seokey&token=$TOKEN&format=$format&limit=$limit\"\n )\n }\n\n /*\n * Api Request: http://api.gaana.com/?type=album&subtype=album_detail&seokey=kabir-singh&token=b2e6d7fbc136547a940516e9b77e5990&format=JSON\n *\n * subtype : [\"most_popular\" , \"new_release\" ,\"featured_album\" ,\"similar_album\" ,\"all_albums\", \"album\" ,\"album_detail\" ,\"album_detail_info\"]\n **/\n suspend fun getGaanaAlbum(\n type: String = \"album\",\n subtype: String = \"album_detail\",\n seokey: String,\n format: String = \"JSON\",\n limit: Int = 2000\n ): GaanaAlbum {\n return httpClient.get(\n \"$BASE_URL/?type=$type&subtype=$subtype&seokey=$seokey&token=$TOKEN&format=$format&limit=$limit\"\n )\n }\n\n /*\n * Api Request: http://api.gaana.com/?type=song&subtype=song_detail&seokey=pachtaoge&token=b2e6d7fbc136547a940516e9b77e5990&format=JSON\n *\n * subtype : [\"most_popular\" , \"hot_songs\" ,\"recommendation\" ,\"song_detail\"]\n **/\n suspend fun getGaanaSong(\n type: String = \"song\",\n subtype: String = \"song_detail\",\n seokey: String,\n format: String = \"JSON\",\n ): GaanaSong {\n return httpClient.get(\n \"$BASE_URL/?type=$type&subtype=$subtype&seokey=$seokey&token=$TOKEN&format=$format\"\n )\n }\n\n /*\n * Api Request: https://api.gaana.com/?type=artist&subtype=artist_details_info&seokey=neha-kakkar&token=b2e6d7fbc136547a940516e9b77e5990&format=JSON\n *\n * subtype : [\"most_popular\" , \"artist_list\" ,\"artist_track_listing\" ,\"artist_album\" ,\"similar_artist\",\"artist_details\" ,\"artist_details_info\"]\n **/\n suspend fun getGaanaArtistDetails(\n type: String = \"artist\",\n subtype: String = \"artist_details_info\",\n seokey: String,\n format: String = \"JSON\",\n ): GaanaArtistDetails {\n return httpClient.get(\n \"$BASE_URL/?type=$type&subtype=$subtype&seokey=$seokey&token=$TOKEN&format=$format\"\n )\n }\n\n /*\n * Api Request: http://api.gaana.com/?type=artist&subtype=artist_track_listing&seokey=neha-kakkar&limit=50&token=b2e6d7fbc136547a940516e9b77e5990&format=JSON\n *\n * subtype : [\"most_popular\" , \"artist_list\" ,\"artist_track_listing\" ,\"artist_album\" ,\"similar_artist\",\"artist_details\" ,\"artist_details_info\"]\n **/\n suspend fun getGaanaArtistTracks(\n type: String = \"artist\",\n subtype: String = \"artist_track_listing\",\n seokey: String,\n format: String = \"JSON\",\n limit: Int = 50\n ): GaanaArtistTracks {\n return httpClient.get(\n \"$BASE_URL/?type=$type&subtype=$subtype&seokey=$seokey&token=$TOKEN&format=$format&limit=$limit\"\n )\n }\n}\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di.providers\n\nimport co.touchlab.kermit.Kermit\nimport com.shabinder.common.di.Dir\nimport com.shabinder.common.di.finalOutputDir\nimport com.shabinder.common.di.gaana.GaanaRequests\nimport com.shabinder.common.models.DownloadStatus\nimport com.shabinder.common.models.PlatformQueryResult\nimport com.shabinder.common.models.TrackDetails\nimport com.shabinder.common.models.gaana.GaanaTrack\nimport com.shabinder.common.models.spotify.Source\nimport io.ktor.client.HttpClient\n\nclass GaanaProvider(\n override val httpClient: HttpClient,\n private val logger: Kermit,\n private val dir: Dir,\n) : GaanaRequests {\n\n private val gaanaPlaceholderImageUrl = \"https://a10.gaanacdn.com/images/social/gaana_social.jpg\"\n\n suspend fun query(fullLink: String): PlatformQueryResult? {\n // Link Schema: https://gaana.com/type/link\n val gaanaLink = fullLink.substringAfter(\"gaana.com/\")\n\n val link = gaanaLink.substringAfterLast('/', \"error\")\n val type = gaanaLink.substringBeforeLast('/', \"error\").substringAfterLast('/')\n\n // Error\n if (type == \"Error\" || link == \"Error\") {\n return null\n }\n return gaanaSearch(\n type,\n link\n )\n }\n\n private suspend fun gaanaSearch(\n type: String,\n link: String,\n ): PlatformQueryResult {\n val result = PlatformQueryResult(\n folderType = \"\",\n subFolder = link,\n title = link,\n coverUrl = gaanaPlaceholderImageUrl,\n trackList = listOf(),\n Source.Gaana\n )\n logger.i { \"GAANA SEARCH: $type - $link\" }\n with(result) {\n when (type) {\n \"song\" -> {\n getGaanaSong(seokey = link).tracks.firstOrNull()?.also {\n folderType = \"Tracks\"\n subFolder = \"\"\n it.updateStatusIfPresent(folderType, subFolder)\n trackList = listOf(it).toTrackDetailsList(folderType, subFolder)\n title = it.track_title\n coverUrl = it.artworkLink\n }\n }\n \"album\" -> {\n getGaanaAlbum(seokey = link).also {\n folderType = \"Albums\"\n subFolder = link\n it.tracks.forEach { track ->\n track.updateStatusIfPresent(folderType, subFolder)\n }\n trackList = it.tracks.toTrackDetailsList(folderType, subFolder)\n title = link\n coverUrl = it.custom_artworks.size_480p\n }\n }\n \"playlist\" -> {\n getGaanaPlaylist(seokey = link).also {\n folderType = \"Playlists\"\n subFolder = link\n it.tracks.forEach { track ->\n track.updateStatusIfPresent(folderType, subFolder)\n }\n trackList = it.tracks.toTrackDetailsList(folderType, subFolder)\n title = link\n // coverUrl.value = \"TODO\"\n coverUrl = gaanaPlaceholderImageUrl\n }\n }\n \"artist\" -> {\n folderType = \"Artist\"\n subFolder = link\n coverUrl = gaanaPlaceholderImageUrl\n getGaanaArtistDetails(seokey = link).artist.firstOrNull()\n ?.also {\n title = it.name\n coverUrl = it.artworkLink ?: gaanaPlaceholderImageUrl\n }\n getGaanaArtistTracks(seokey = link).also {\n it.tracks?.forEach { track ->\n track.updateStatusIfPresent(folderType, subFolder)\n }\n trackList = it.tracks?.toTrackDetailsList(folderType, subFolder) ?: emptyList()\n }\n }\n else -> {\n // TODO Handle Error\n }\n }\n return result\n }\n }\n\n private fun List.toTrackDetailsList(type: String, subFolder: String) = this.map {\n TrackDetails(\n title = it.track_title,\n artists = it.artist.map { artist -> artist?.name.toString() },\n durationSec = it.duration,\n albumArtPath = dir.imageCacheDir() + (it.artworkLink.substringBeforeLast('/').substringAfterLast('/')) + \".jpeg\",\n albumName = it.album_title,\n year = it.release_date,\n comment = \"Genres:${it.genre?.map { genre -> genre?.name }?.reduceOrNull { acc, s -> acc + s }}\",\n trackUrl = it.lyrics_url,\n downloaded = it.downloaded ?: DownloadStatus.NotDownloaded,\n source = Source.Gaana,\n albumArtURL = it.artworkLink,\n outputFilePath = dir.finalOutputDir(it.track_title, type, subFolder, dir.defaultDir()/*,\".m4a\"*/)\n )\n }\n private fun GaanaTrack.updateStatusIfPresent(folderType: String, subFolder: String) {\n if (dir.isPresent(\n dir.finalOutputDir(\n track_title,\n folderType,\n subFolder,\n dir.defaultDir()\n )\n )\n ) { // Download Already Present!!\n downloaded = DownloadStatus.Downloaded\n }\n }\n}\n","/*\n * Copyright (c) 2021 Shabinder Singh\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di.providers\n\nimport co.touchlab.kermit.Kermit\nimport com.shabinder.common.di.Dir\nimport com.shabinder.common.di.TokenStore\nimport com.shabinder.common.di.currentPlatform\nimport com.shabinder.common.di.finalOutputDir\nimport com.shabinder.common.di.kotlinxSerializer\nimport com.shabinder.common.di.spotify.SpotifyRequests\nimport com.shabinder.common.di.spotify.authenticateSpotify\nimport com.shabinder.common.models.AllPlatforms\nimport com.shabinder.common.models.PlatformQueryResult\nimport com.shabinder.common.models.TrackDetails\nimport com.shabinder.common.models.spotify.Album\nimport com.shabinder.common.models.spotify.Image\nimport com.shabinder.common.models.spotify.Source\nimport com.shabinder.common.models.spotify.Track\nimport io.ktor.client.HttpClient\nimport io.ktor.client.features.defaultRequest\nimport io.ktor.client.features.json.JsonFeature\nimport io.ktor.client.request.header\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.GlobalScope\nimport kotlinx.coroutines.launch\n\nclass SpotifyProvider(\n private val tokenStore: TokenStore,\n private val logger: Kermit,\n private val dir: Dir,\n) : SpotifyRequests {\n\n init {\n logger.d { \"Creating Spotify Provider\" }\n GlobalScope.launch(Dispatchers.Default) {\n if (currentPlatform is AllPlatforms.Js) {\n authenticateSpotifyClient(override = true)\n } else authenticateSpotifyClient()\n }\n }\n\n override suspend fun authenticateSpotifyClient(override: Boolean): HttpClient? {\n val token = if (override) authenticateSpotify() else tokenStore.getToken()\n return if (token == null) {\n logger.d { \"Please Check your Network Connection\" }\n null\n } else {\n logger.d { \"Spotify Provider Created with $token\" }\n httpClient = HttpClient {\n defaultRequest {\n header(\"Authorization\", \"Bearer ${token.access_token}\")\n }\n install(JsonFeature) {\n serializer = kotlinxSerializer\n }\n }\n httpClient\n }\n }\n\n override lateinit var httpClient: HttpClient\n\n suspend fun query(fullLink: String): PlatformQueryResult? {\n\n if (!this::httpClient.isInitialized) {\n authenticateSpotifyClient()\n }\n\n var spotifyLink =\n \"https://\" + fullLink.substringAfterLast(\"https://\").substringBefore(\" \").trim()\n\n if (!spotifyLink.contains(\"open.spotify\")) {\n // Very Rare instance\n spotifyLink = resolveLink(spotifyLink)\n }\n\n val link = spotifyLink.substringAfterLast('/', \"Error\").substringBefore('?')\n val type = spotifyLink.substringBeforeLast('/', \"Error\").substringAfterLast('/')\n\n if (type == \"Error\" || link == \"Error\") {\n return null\n }\n\n if (type == \"episode\" || type == \"show\") {\n // TODO Implementation\n return null\n }\n\n return spotifySearch(\n type,\n link\n )\n }\n\n private suspend fun spotifySearch(\n type: String,\n link: String\n ): PlatformQueryResult {\n val result = PlatformQueryResult(\n folderType = \"\",\n subFolder = \"\",\n title = \"\",\n coverUrl = \"\",\n trackList = listOf(),\n Source.Spotify\n )\n with(result) {\n when (type) {\n \"track\" -> {\n getTrack(link).also {\n folderType = \"Tracks\"\n subFolder = \"\"\n it.updateStatusIfPresent(folderType, subFolder)\n trackList = listOf(it).toTrackDetailsList(folderType, subFolder)\n title = it.name.toString()\n coverUrl = (\n it.album?.images?.elementAtOrNull(1)?.url\n ?: it.album?.images?.elementAtOrNull(0)?.url\n ).toString()\n }\n }\n\n \"album\" -> {\n val albumObject = getAlbum(link)\n folderType = \"Albums\"\n subFolder = albumObject.name.toString()\n albumObject.tracks?.items?.forEach {\n it.updateStatusIfPresent(folderType, subFolder)\n it.album = Album(\n images = listOf(\n Image(\n url = albumObject.images?.elementAtOrNull(1)?.url\n ?: albumObject.images?.elementAtOrNull(0)?.url\n )\n )\n )\n }\n albumObject.tracks?.items?.toTrackDetailsList(folderType, subFolder).let {\n if (it.isNullOrEmpty()) {\n // TODO Handle Error\n } else {\n trackList = it\n title = albumObject.name.toString()\n coverUrl = (\n albumObject.images?.elementAtOrNull(1)?.url\n ?: albumObject.images?.elementAtOrNull(0)?.url\n ).toString()\n }\n }\n }\n\n \"playlist\" -> {\n val playlistObject = getPlaylist(link)\n folderType = \"Playlists\"\n subFolder = playlistObject.name.toString()\n val tempTrackList = mutableListOf()\n // log(\"Tracks Fetched\", playlistObject.tracks?.items?.size.toString())\n playlistObject.tracks?.items?.forEach {\n it.track?.let { it1 ->\n it1.updateStatusIfPresent(folderType, subFolder)\n tempTrackList.add(it1)\n }\n }\n var moreTracksAvailable = !playlistObject.tracks?.next.isNullOrBlank()\n\n while (moreTracksAvailable) {\n // Check For More Tracks If available\n val moreTracks =\n getPlaylistTracks(link, offset = tempTrackList.size)\n moreTracks.items?.forEach {\n it.track?.let { it1 -> tempTrackList.add(it1) }\n }\n moreTracksAvailable = !moreTracks.next.isNullOrBlank()\n }\n // log(\"Total Tracks Fetched\", tempTrackList.size.toString())\n trackList = tempTrackList.toTrackDetailsList(folderType, subFolder)\n title = playlistObject.name.toString()\n coverUrl = playlistObject.images?.elementAtOrNull(1)?.url\n ?: playlistObject.images?.firstOrNull()?.url.toString()\n }\n \"episode\" -> { // TODO\n }\n \"show\" -> { // TODO\n }\n else -> {\n // TODO Handle Error\n }\n }\n }\n return result\n }\n\n /*\n * New Link Schema: https://link.tospotify.com/kqTBblrjQbb,\n * Fetching Standard Link: https://open.spotify.com/playlist/37i9dQZF1DX9RwfGbeGQwP?si=iWz7B1tETiunDntnDo3lSQ&_branch_match_id=862039436205270630\n * */\n private suspend fun resolveLink(\n url: String\n ): String {\n val response = getResponse(url)\n val regex = \"\"\"https://open\\.spotify\\.com.+\\w\"\"\".toRegex()\n return regex.find(response)?.value.toString()\n }\n\n private fun List.toTrackDetailsList(type: String, subFolder: String) = this.map {\n TrackDetails(\n title = it.name.toString(),\n artists = it.artists?.map { artist -> artist?.name.toString() } ?: listOf(),\n durationSec = (it.duration_ms / 1000).toInt(),\n albumArtPath = dir.imageCacheDir() + (it.album?.images?.elementAtOrNull(1)?.url ?: it.album?.images?.firstOrNull()?.url.toString()).substringAfterLast('/') + \".jpeg\",\n albumName = it.album?.name,\n year = it.album?.release_date,\n comment = \"Genres:${it.album?.genres?.joinToString()}\",\n trackUrl = it.href,\n downloaded = it.downloaded,\n source = Source.Spotify,\n albumArtURL = it.album?.images?.elementAtOrNull(1)?.url ?: it.album?.images?.firstOrNull()?.url.toString(),\n outputFilePath = dir.finalOutputDir(it.name.toString(), type, subFolder, dir.defaultDir()/*,\".m4a\"*/)\n )\n }\n private fun Track.updateStatusIfPresent(folderType: String, subFolder: String) {\n if (dir.isPresent(\n dir.finalOutputDir(\n name.toString(),\n folderType,\n subFolder,\n dir.defaultDir()\n )\n )\n ) { // Download Already Present!!\n downloaded = com.shabinder.common.models.DownloadStatus.Downloaded\n }\n }\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di.providers\n\nimport co.touchlab.kermit.Kermit\nimport com.shabinder.common.di.Dir\nimport com.shabinder.common.di.currentPlatform\nimport com.shabinder.common.di.youtubeMp3.Yt1sMp3\nimport com.shabinder.common.models.AllPlatforms\nimport io.ktor.client.HttpClient\n\nclass YoutubeMp3(\n override val httpClient: HttpClient,\n private val logger: Kermit,\n private val dir: Dir,\n) : Yt1sMp3 {\n suspend fun getMp3DownloadLink(videoID: String): String? = getLinkFromYt1sMp3(videoID)?.let {\n if (currentPlatform is AllPlatforms.Js/* && corsProxy !is CorsProxy.PublicProxyWithExtension*/)\n \"https://spotiflyer.azurewebsites.net/$it\"\n else it\n }\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di.providers\n\nimport co.touchlab.kermit.Kermit\nimport com.shabinder.common.di.gaana.corsApi\nimport com.shabinder.common.models.TrackDetails\nimport com.shabinder.common.models.YoutubeTrack\nimport com.willowtreeapps.fuzzywuzzy.diffutils.FuzzySearch\nimport io.ktor.client.HttpClient\nimport io.ktor.client.request.headers\nimport io.ktor.client.request.post\nimport io.ktor.http.ContentType\nimport io.ktor.http.contentType\nimport kotlinx.serialization.json.Json\nimport kotlinx.serialization.json.JsonArray\nimport kotlinx.serialization.json.buildJsonArray\nimport kotlinx.serialization.json.buildJsonObject\nimport kotlinx.serialization.json.contentOrNull\nimport kotlinx.serialization.json.jsonArray\nimport kotlinx.serialization.json.jsonObject\nimport kotlinx.serialization.json.jsonPrimitive\nimport kotlinx.serialization.json.put\nimport kotlinx.serialization.json.putJsonObject\nimport kotlin.math.absoluteValue\n\nprivate const val apiKey = \"AIzaSyC9XL3ZjWddXya6X74dJoCTL-WEYFDNX30\"\n\nclass YoutubeMusic constructor(\n private val logger: Kermit,\n private val httpClient: HttpClient,\n) {\n private val tag = \"YT Music\"\n\n suspend fun getYTIDBestMatch(query: String, trackDetails: TrackDetails): String? {\n return sortByBestMatch(\n getYTTracks(query),\n trackName = trackDetails.title,\n trackArtists = trackDetails.artists,\n trackDurationSec = trackDetails.durationSec\n ).keys.firstOrNull()\n }\n private suspend fun getYTTracks(query: String): List {\n val youtubeTracks = mutableListOf()\n\n val responseObj = Json.parseToJsonElement(getYoutubeMusicResponse(query))\n\n val contentBlocks = responseObj.jsonObject[\"contents\"]\n ?.jsonObject?.get(\"sectionListRenderer\")\n ?.jsonObject?.get(\"contents\")?.jsonArray\n\n val resultBlocks = mutableListOf()\n if (contentBlocks != null) {\n for (cBlock in contentBlocks) {\n /**\n *Ignore user-suggestion\n *The 'itemSectionRenderer' field is for user notices (stuff like - 'showing\n *results for xyz, search for abc instead') we have no use for them, the for\n *loop below if throw a keyError if we don't ignore them\n */\n if (cBlock.jsonObject.containsKey(\"itemSectionRenderer\")) {\n continue\n }\n\n for (\n contents in cBlock.jsonObject[\"musicShelfRenderer\"]?.jsonObject?.get(\"contents\")?.jsonArray\n ?: listOf()\n ) {\n /**\n * apparently content Blocks without an 'overlay' field don't have linkBlocks\n * I have no clue what they are and why there even exist\n *\n if(!contents.containsKey(\"overlay\")){\n println(contents)\n continue\n TODO check and correct\n }*/\n\n val result = contents.jsonObject[\"musicResponsiveListItemRenderer\"]\n ?.jsonObject?.get(\"flexColumns\")?.jsonArray\n\n // Add the linkBlock\n val linkBlock = contents.jsonObject[\"musicResponsiveListItemRenderer\"]\n ?.jsonObject?.get(\"overlay\")\n ?.jsonObject?.get(\"musicItemThumbnailOverlayRenderer\")\n ?.jsonObject?.get(\"content\")\n ?.jsonObject?.get(\"musicPlayButtonRenderer\")\n ?.jsonObject?.get(\"playNavigationEndpoint\")\n\n // detailsBlock is always a list, so we just append the linkBlock to it\n // instead of carrying along all the other junk from \"musicResponsiveListItemRenderer\"\n val finalResult = buildJsonArray {\n result?.let { add(it) }\n linkBlock?.let { add(it) }\n }\n resultBlocks.add(finalResult)\n }\n }\n\n /* We only need results that are Songs or Videos, so we filter out the rest, since\n ! Songs and Videos are supplied with different details, extracting all details from\n ! both is just carrying on redundant data, so we also have to selectively extract\n ! relevant details. What you need to know to understand how we do that here:\n !\n ! Songs details are ALWAYS in the following order:\n ! 0 - Name\n ! 1 - Type (Song)\n ! 2 - com.shabinder.spotiflyer.models.gaana.Artist\n ! 3 - Album\n ! 4 - Duration (mm:ss)\n !\n ! Video details are ALWAYS in the following order:\n ! 0 - Name\n ! 1 - Type (Video)\n ! 2 - Channel\n ! 3 - Viewers\n ! 4 - Duration (hh:mm:ss)\n !\n ! We blindly gather all the details we get our hands on, then\n ! cherry pick the details we need based on their index numbers,\n ! we do so only if their Type is 'Song' or 'Video\n */\n\n for (result in resultBlocks) {\n\n // Blindly gather available details\n val availableDetails = mutableListOf()\n\n /*\n Filter Out dummies here itself\n ! 'musicResponsiveListItemFlexColumnRenderer' should have more that one\n ! sub-block, if not its a dummy, why does the YTM response contain dummies?\n ! I have no clue. We skip these.\n\n ! Remember that we appended the linkBlock to result, treating that like the\n ! other constituents of a result block will lead to errors, hence the 'in\n ! result[:-1] ,i.e., skip last element in array '\n */\n for (detailArray in result.subList(0, result.size - 1)) {\n for (detail in detailArray.jsonArray) {\n if (detail.jsonObject[\"musicResponsiveListItemFlexColumnRenderer\"]?.jsonObject?.size ?: 0 < 2) continue\n\n // if not a dummy, collect All Variables\n val details = detail.jsonObject[\"musicResponsiveListItemFlexColumnRenderer\"]\n ?.jsonObject?.get(\"text\")\n ?.jsonObject?.get(\"runs\")?.jsonArray ?: listOf()\n\n for (d in details) {\n d.jsonObject[\"text\"]?.jsonPrimitive?.contentOrNull?.let {\n if (it != \" • \") {\n availableDetails.add(it)\n }\n }\n }\n }\n }\n // logger.d(\"YT Music details\"){availableDetails.toString()}\n /*\n ! Filter Out non-Song/Video results and incomplete results here itself\n ! From what we know about detail order, note that [1] - indicate result type\n */\n if (availableDetails.size == 5 && availableDetails[1] in listOf(\"Song\", \"Video\")) {\n\n // skip if result is in hours instead of minutes (no song is that long)\n if (availableDetails[4].split(':').size != 2) continue\n\n /*\n ! grab Video ID\n ! this is nested as [playlistEndpoint/watchEndpoint][videoId/playlistId/...]\n ! so hardcoding the dict keys for data look up is an ardours process, since\n ! the sub-block pattern is fixed even though the key isn't, we just\n ! reference the dict keys by index\n */\n\n val videoId: String? = result.last().jsonObject[\"watchEndpoint\"]?.jsonObject?.get(\"videoId\")?.jsonPrimitive?.content\n val ytTrack = YoutubeTrack(\n name = availableDetails[0],\n type = availableDetails[1],\n artist = availableDetails[2],\n duration = availableDetails[4],\n videoId = videoId\n )\n youtubeTracks.add(ytTrack)\n }\n }\n }\n // logger.d {youtubeTracks.joinToString(\"\\n\")}\n return youtubeTracks\n }\n\n private fun sortByBestMatch(\n ytTracks: List,\n trackName: String,\n trackArtists: List,\n trackDurationSec: Int,\n ): Map {\n /*\n * \"linksWithMatchValue\" is map with Youtube VideoID and its rating/match with 100 as Max Value\n **/\n val linksWithMatchValue = mutableMapOf()\n\n for (result in ytTracks) {\n\n // LoweCasing Name to match Properly\n // most song results on youtube go by $artist - $songName or artist1/artist2\n var hasCommonWord = false\n\n val resultName = result.name?.toLowerCase()?.replace(\"-\", \" \")?.replace(\"/\", \" \") ?: \"\"\n val trackNameWords = trackName.toLowerCase().split(\" \")\n\n for (nameWord in trackNameWords) {\n if (nameWord.isNotBlank() && FuzzySearch.partialRatio(nameWord, resultName) > 85) hasCommonWord = true\n }\n\n // Skip this Result if No Word is Common in Name\n if (!hasCommonWord) {\n // log(\"YT Api Removing\", result.toString())\n continue\n }\n\n // Find artist match\n // Will Be Using Fuzzy Search Because YT Spelling might be mucked up\n // match = (no of artist names in result) / (no. of artist names on spotify) * 100\n var artistMatchNumber = 0\n\n if (result.type == \"Song\") {\n for (artist in trackArtists) {\n if (FuzzySearch.ratio(artist.toLowerCase(), result.artist?.toLowerCase() ?: \"\") > 85)\n artistMatchNumber++\n }\n } else { // i.e. is a Video\n for (artist in trackArtists) {\n if (FuzzySearch.partialRatio(artist.toLowerCase(), result.name?.toLowerCase() ?: \"\") > 85)\n artistMatchNumber++\n }\n }\n\n if (artistMatchNumber == 0) {\n // logger.d{ \"YT Api Removing: $result\" }\n continue\n }\n\n val artistMatch = (artistMatchNumber / trackArtists.size) * 100\n\n // Duration Match\n /*! time match = 100 - (delta(duration)**2 / original duration * 100)\n ! difference in song duration (delta) is usually of the magnitude of a few\n ! seconds, we need to amplify the delta if it is to have any meaningful impact\n ! wen we calculate the avg match value*/\n val difference = result.duration?.split(\":\")?.get(0)?.toInt()?.times(60)\n ?.plus(result.duration?.split(\":\")?.get(1)?.toInt() ?: 0)\n ?.minus(trackDurationSec)?.absoluteValue ?: 0\n val nonMatchValue: Float = ((difference * difference).toFloat() / trackDurationSec.toFloat())\n val durationMatch = 100 - (nonMatchValue * 100)\n\n val avgMatch = (artistMatch + durationMatch) / 2\n linksWithMatchValue[result.videoId.toString()] = avgMatch.toInt()\n }\n // logger.d(\"YT Api Result\"){\"$trackName - $linksWithMatchValue\"}\n return linksWithMatchValue.toList().sortedByDescending { it.second }.toMap().also {\n logger.d(tag) { \"Match Found for $trackName - ${!it.isNullOrEmpty()}\" }\n }\n }\n\n private suspend fun getYoutubeMusicResponse(query: String): String {\n return httpClient.post(\"${corsApi}https://music.youtube.com/youtubei/v1/search?alt=json&key=$apiKey\") {\n contentType(ContentType.Application.Json)\n headers {\n append(\"referer\", \"https://music.youtube.com/search\")\n }\n body = buildJsonObject {\n putJsonObject(\"context\") {\n putJsonObject(\"client\") {\n put(\"clientName\", \"WEB_REMIX\")\n put(\"clientVersion\", \"0.1\")\n }\n }\n put(\"query\", query)\n }\n }\n }\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di.spotify\n\nimport com.shabinder.common.di.isInternetAvailable\nimport com.shabinder.common.di.kotlinxSerializer\nimport com.shabinder.common.models.spotify.TokenData\nimport io.ktor.client.HttpClient\nimport io.ktor.client.features.auth.Auth\nimport io.ktor.client.features.auth.providers.basic\nimport io.ktor.client.features.json.JsonFeature\nimport io.ktor.client.request.forms.FormDataContent\nimport io.ktor.client.request.post\nimport io.ktor.http.Parameters\n\nsuspend fun authenticateSpotify(): TokenData? {\n return if (isInternetAvailable) spotifyAuthClient.post(\"https://accounts.spotify.com/api/token\") {\n body = FormDataContent(Parameters.build { append(\"grant_type\", \"client_credentials\") })\n } else null\n}\n\nprivate val spotifyAuthClient by lazy {\n HttpClient {\n val clientId = \"694d8bf4f6ec420fa66ea7fb4c68f89d\"\n val clientSecret = \"02ca2d4021a7452dae2328b47a6e8fe8\"\n\n install(Auth) {\n basic {\n sendWithoutRequest = true\n username = clientId\n password = clientSecret\n }\n }\n install(JsonFeature) {\n serializer = kotlinxSerializer\n }\n }\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di.spotify\n\nimport com.shabinder.common.di.gaana.corsApi\nimport com.shabinder.common.models.spotify.Album\nimport com.shabinder.common.models.spotify.PagingObjectPlaylistTrack\nimport com.shabinder.common.models.spotify.Playlist\nimport com.shabinder.common.models.spotify.Track\nimport io.ktor.client.HttpClient\nimport io.ktor.client.request.get\n\nprivate val BASE_URL get() = \"${corsApi}https://api.spotify.com/v1\"\n\ninterface SpotifyRequests {\n\n val httpClient: HttpClient\n\n suspend fun authenticateSpotifyClient(override: Boolean = false): HttpClient?\n\n suspend fun getPlaylist(playlistID: String): Playlist {\n return httpClient.get(\"$BASE_URL/playlists/$playlistID\")\n }\n\n suspend fun getPlaylistTracks(\n playlistID: String?,\n offset: Int = 0,\n limit: Int = 100\n ): PagingObjectPlaylistTrack {\n return httpClient.get(\"$BASE_URL/playlists/$playlistID/tracks?offset=$offset&limit=$limit\")\n }\n\n suspend fun getTrack(id: String?): Track {\n return httpClient.get(\"$BASE_URL/tracks/$id\")\n }\n\n suspend fun getEpisode(id: String?): Track {\n return httpClient.get(\"$BASE_URL/episodes/$id\")\n }\n\n suspend fun getShow(id: String?): Track {\n return httpClient.get(\"$BASE_URL/shows/$id\")\n }\n\n suspend fun getAlbum(id: String): Album {\n return httpClient.get(\"$BASE_URL/albums/$id\")\n }\n\n suspend fun getResponse(url: String): String {\n return httpClient.get(url)\n }\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di.utils\n\n/**\n * Removing Illegal Chars from File Name\n * **/\nfun removeIllegalChars(fileName: String): String {\n val illegalCharArray = charArrayOf(\n '/',\n '\\n',\n '\\r',\n '\\t',\n '\\u0000',\n '\\u000C',\n '`',\n '?',\n '*',\n '\\\\',\n '<',\n '>',\n '|',\n '\\\"',\n '.',\n '-',\n '\\''\n )\n\n var name = fileName\n for (c in illegalCharArray) {\n name = fileName.replace(c, '_')\n }\n name = name.replace(\"\\\\s\".toRegex(), \"_\")\n name = name.replace(\"\\\\)\".toRegex(), \"\")\n name = name.replace(\"\\\\(\".toRegex(), \"\")\n name = name.replace(\"\\\\[\".toRegex(), \"\")\n name = name.replace(\"]\".toRegex(), \"\")\n name = name.replace(\"\\\\.\".toRegex(), \"\")\n name = name.replace(\"\\\"\".toRegex(), \"\")\n name = name.replace(\"\\'\".toRegex(), \"\")\n name = name.replace(\":\".toRegex(), \"\")\n name = name.replace(\"\\\\|\".toRegex(), \"\")\n return name\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di.youtubeMp3\n\nimport com.shabinder.common.di.gaana.corsApi\nimport io.ktor.client.HttpClient\nimport io.ktor.client.request.forms.FormDataContent\nimport io.ktor.client.request.post\nimport io.ktor.http.Parameters\nimport kotlinx.serialization.json.JsonObject\nimport kotlinx.serialization.json.jsonPrimitive\n\n/*\n* site link: https://yt1s.com/youtube-to-mp3/en1\n* Provides Direct Mp3 , No Need For FFmpeg\n* */\ninterface Yt1sMp3 {\n\n val httpClient: HttpClient\n\n /*\n * Downloadable Mp3 Link for YT videoID.\n * */\n suspend fun getLinkFromYt1sMp3(videoID: String): String? =\n getConvertedMp3Link(videoID, getKey(videoID))?.get(\"dlink\")?.jsonPrimitive?.toString()?.replace(\"\\\"\", \"\")\n\n /*\n * POST:https://yt1s.com/api/ajaxSearch/index\n * Body Form= q:yt video link ,vt:format=mp3\n * */\n private suspend fun getKey(videoID: String): String {\n val response: JsonObject? = httpClient.post(\"${corsApi}https://yt1s.com/api/ajaxSearch/index\") {\n body = FormDataContent(\n Parameters.build {\n append(\"q\", \"https://www.youtube.com/watch?v=$videoID\")\n append(\"vt\", \"mp3\")\n }\n )\n }\n return response?.get(\"kc\")?.jsonPrimitive.toString()\n }\n\n private suspend fun getConvertedMp3Link(videoID: String, key: String): JsonObject? {\n return httpClient.post(\"${corsApi}https://yt1s.com/api/ajaxConvert/convert\") {\n body = FormDataContent(\n Parameters.build {\n append(\"vid\", videoID)\n append(\"k\", key)\n }\n )\n }\n }\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di\n\nimport com.shabinder.common.models.AllPlatforms\nimport com.shabinder.common.models.DownloadResult\nimport com.shabinder.common.models.DownloadStatus\nimport com.shabinder.common.models.TrackDetails\nimport io.ktor.client.request.head\nimport kotlinx.coroutines.CoroutineDispatcher\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.flow.MutableSharedFlow\nimport kotlinx.coroutines.flow.collect\nimport kotlinx.coroutines.withContext\n\nactual val currentPlatform: AllPlatforms = AllPlatforms.Js\n\nactual fun openPlatform(packageID: String, platformLink: String) {\n // TODO\n}\n\nactual fun shareApp() {\n // TODO\n}\n\nactual fun giveDonation() {\n // TODO\n}\n\nactual fun queryActiveTracks() {}\n\nactual val dispatcherIO: CoroutineDispatcher = Dispatchers.Default\n\n/*\n* Refactor This\n* */\nprivate suspend fun isInternetAvailable(): Boolean {\n return withContext(dispatcherIO) {\n try {\n ktorHttpClient.head(\"http://google.com\")\n true\n } catch (e: Exception) {\n println(e.message)\n false\n }\n }\n}\n\nactual val isInternetAvailable: Boolean\n get() {\n return true\n /*var result = false\n val job = GlobalScope.launch { result = isInternetAvailable() }\n while(job.isActive){}\n return result*/\n }\n\nval DownloadProgressFlow: MutableSharedFlow> = MutableSharedFlow(1)\n// Error:https://github.com/Kotlin/kotlinx.atomicfu/issues/182\n// val DownloadScope = ParallelExecutor(Dispatchers.Default) //Download Pool of 4 parallel\nval allTracksStatus: HashMap = hashMapOf()\n\nactual suspend fun downloadTracks(\n list: List,\n fetcher: FetchPlatformQueryResult,\n dir: Dir\n) {\n list.forEach {\n withContext(dispatcherIO) {\n allTracksStatus[it.title] = DownloadStatus.Queued\n if (!it.videoID.isNullOrBlank()) { // Video ID already known!\n downloadTrack(it.videoID!!, it, fetcher, dir)\n } else {\n val searchQuery = \"${it.title} - ${it.artists.joinToString(\",\")}\"\n val videoID = fetcher.youtubeMusic.getYTIDBestMatch(searchQuery, it)\n println(videoID + \" : \" + it.title)\n if (videoID.isNullOrBlank()) {\n allTracksStatus[it.title] = DownloadStatus.Failed\n DownloadProgressFlow.emit(allTracksStatus)\n } else { // Found Youtube Video ID\n downloadTrack(videoID, it, fetcher, dir)\n }\n }\n DownloadProgressFlow.emit(allTracksStatus)\n }\n }\n}\n\nsuspend fun downloadTrack(videoID: String, track: TrackDetails, fetcher: FetchPlatformQueryResult, dir: Dir) {\n val url = fetcher.youtubeMp3.getMp3DownloadLink(videoID)\n if (url == null) {\n allTracksStatus[track.title] = DownloadStatus.Failed\n DownloadProgressFlow.emit(allTracksStatus)\n println(\"No URL to Download\")\n } else {\n downloadFile(url).collect {\n when (it) {\n is DownloadResult.Success -> {\n println(\"Download Completed\")\n dir.saveFileWithMetadata(it.byteArray, track)\n }\n is DownloadResult.Error -> {\n allTracksStatus[track.title] = DownloadStatus.Failed\n println(\"Download Error: ${track.title}\")\n }\n is DownloadResult.Progress -> {\n allTracksStatus[track.title] = DownloadStatus.Downloading(it.progress)\n println(\"Download Progress: ${it.progress} : ${track.title}\")\n }\n }\n DownloadProgressFlow.emit(allTracksStatus)\n }\n }\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di\n\nimport co.touchlab.kermit.Kermit\nimport com.shabinder.common.di.gaana.corsApi\nimport com.shabinder.common.di.utils.removeIllegalChars\nimport com.shabinder.common.models.DownloadResult\nimport com.shabinder.common.models.DownloadStatus\nimport com.shabinder.common.models.TrackDetails\nimport com.shabinder.database.Database\nimport kotlinext.js.Object\nimport kotlinext.js.js\nimport kotlinx.coroutines.flow.collect\nimport org.khronos.webgl.ArrayBuffer\nimport org.khronos.webgl.Int8Array\nimport org.w3c.dom.ImageBitmap\n\nactual class Dir actual constructor(\n private val logger: Kermit,\n private val database: Database?,\n) {\n\n /*init {\n createDirectories()\n }*/\n\n /*\n * TODO\n * */\n actual fun fileSeparator(): String = \"/\"\n\n actual fun imageCacheDir(): String = \"TODO\" +\n fileSeparator() + \"SpotiFlyer/.images\" + fileSeparator()\n\n actual fun defaultDir(): String = \"TODO\" + fileSeparator() +\n \"SpotiFlyer\" + fileSeparator()\n\n actual fun isPresent(path: String): Boolean = false\n\n actual fun createDirectory(dirPath: String) {}\n\n actual suspend fun clearCache() {}\n\n actual suspend fun cacheImage(image: Any, path: String) {}\n\n @Suppress(\"BlockingMethodInNonBlockingContext\")\n actual suspend fun saveFileWithMetadata(\n mp3ByteArray: ByteArray,\n trackDetails: TrackDetails\n ) {\n val writer = ID3Writer(mp3ByteArray.toArrayBuffer())\n val albumArt = downloadFile(corsApi + trackDetails.albumArtURL)\n albumArt.collect {\n when (it) {\n is DownloadResult.Success -> {\n logger.d { \"Album Art Downloaded Success\" }\n val albumArtObj = js {\n this[\"type\"] = 3\n this[\"data\"] = it.byteArray.toArrayBuffer()\n this[\"description\"] = \"Cover Art\"\n }\n writeTagsAndSave(writer, albumArtObj as Object, trackDetails)\n }\n is DownloadResult.Error -> {\n logger.d { \"Album Art Downloading Error\" }\n writeTagsAndSave(writer, null, trackDetails)\n }\n is DownloadResult.Progress -> logger.d { \"Album Art Downloading: ${it.progress}\" }\n }\n }\n }\n\n private suspend fun writeTagsAndSave(writer: ID3Writer, albumArt: Object?, trackDetails: TrackDetails) {\n writer.apply {\n setFrame(\"TIT2\", trackDetails.title)\n setFrame(\"TPE1\", trackDetails.artists.toTypedArray())\n setFrame(\"TALB\", trackDetails.albumName ?: \"\")\n try { trackDetails.year?.substring(0, 4)?.toInt()?.let { setFrame(\"TYER\", it) } } catch (e: Exception) {}\n setFrame(\"TPE2\", trackDetails.artists.joinToString(\",\"))\n setFrame(\"WOAS\", trackDetails.source.toString())\n setFrame(\"TLEN\", trackDetails.durationSec)\n albumArt?.let { setFrame(\"APIC\", it) }\n }\n writer.addTag()\n allTracksStatus[trackDetails.title] = DownloadStatus.Downloaded\n DownloadProgressFlow.emit(allTracksStatus)\n saveAs(writer.getBlob(), \"${removeIllegalChars(trackDetails.title)}.mp3\")\n }\n\n actual fun addToLibrary(path: String) {}\n\n actual suspend fun loadImage(url: String): Picture {\n return Picture(url)\n }\n\n private fun loadCachedImage(cachePath: String): ImageBitmap? = null\n\n private suspend fun freshImage(url: String): ImageBitmap? = null\n\n actual val db: Database?\n get() = database\n}\n\nfun ByteArray.toArrayBuffer(): ArrayBuffer {\n return this.unsafeCast().buffer\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di\n\nactual data class Picture(\n var imageUrl: String\n)\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.di\n\nimport co.touchlab.kermit.Kermit\nimport com.shabinder.common.models.PlatformQueryResult\nimport io.ktor.client.HttpClient\n\nactual class YoutubeProvider actual constructor(\n httpClient: HttpClient,\n logger: Kermit,\n dir: Dir\n) {\n actual suspend fun query(fullLink: String): PlatformQueryResult? {\n return null // TODO\n }\n}\n","(function (root, factory) {\n if (typeof define === 'function' && define.amd)\n define(['exports', 'kotlin'], factory);\n else if (typeof exports === 'object')\n factory(module.exports, require('kotlin'));\n else {\n if (typeof kotlin === 'undefined') {\n throw new Error(\"Error loading module 'kotlin-wrappers-kotlin-extensions-jsLegacy'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'kotlin-wrappers-kotlin-extensions-jsLegacy'.\");\n }root['kotlin-wrappers-kotlin-extensions-jsLegacy'] = factory(typeof this['kotlin-wrappers-kotlin-extensions-jsLegacy'] === 'undefined' ? {} : this['kotlin-wrappers-kotlin-extensions-jsLegacy'], kotlin);\n }\n}(this, function (_, Kotlin) {\n 'use strict';\n var getCallableRef = Kotlin.getCallableRef;\n var defineInlineFunction = Kotlin.defineInlineFunction;\n var wrapFunction = Kotlin.wrapFunction;\n function clone(obj) {\n return Object.assign({}, obj);\n }\n function getOwnPropertyNames($receiver) {\n return Object.getOwnPropertyNames($receiver);\n }\n function invoke_3($receiver, strings, values) {\n var tmp$;\n return (tmp$ = $receiver).call.apply(tmp$, [null, strings].concat(values));\n }\n function invoke_4($receiver, string, values) {\n return invoke_3($receiver, [string], values.slice());\n }\n function invoke_5($receiver, values) {\n return invoke_3($receiver, [], values.slice());\n }\n var package$kotlinext = _.kotlinext || (_.kotlinext = {});\n var package$js = package$kotlinext.js || (package$kotlinext.js = {});\n package$js.clone_issdgt$ = clone;\n package$js.getOwnPropertyNames_s8jyvk$ = getOwnPropertyNames;\n package$js.invoke_z5wujd$ = invoke_3;\n package$js.invoke_dgimx$ = invoke_4;\n package$js.invoke_9p99ed$ = invoke_5;\n return _;\n}));\n\n//# sourceMappingURL=kotlin-wrappers-kotlin-extensions-jsLegacy.js.map\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n",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\npackage kotlin.reflect\n\nimport findAssociatedObject\n\n/**\n * The experimental marker for associated objects API.\n *\n * Any usage of a declaration annotated with `@ExperimentalAssociatedObjects` must be accepted either by\n * annotating that usage with the [OptIn] annotation, e.g. `@OptIn(ExperimentalAssociatedObjects::class)`,\n * or by using the compiler argument `-Xopt-in=kotlin.reflect.ExperimentalAssociatedObjects`.\n */\n@RequiresOptIn(level = RequiresOptIn.Level.ERROR)\n@Retention(value = AnnotationRetention.BINARY)\npublic annotation class ExperimentalAssociatedObjects\n\n/**\n * Makes the annotated annotation class an associated object key.\n *\n * An associated object key annotation should have single [KClass] parameter.\n * When applied to a class with reference to an object declaration as an argument, it binds\n * the object to the class, making this binding discoverable at runtime using [findAssociatedObject].\n */\n@ExperimentalAssociatedObjects\n@Retention(AnnotationRetention.BINARY)\n@Target(AnnotationTarget.ANNOTATION_CLASS)\npublic annotation class AssociatedObjectKey\n\n/**\n * If [T] is an @[AssociatedObjectKey]-annotated annotation class and [this] class is annotated with @[T] (`S::class`),\n * returns object `S`.\n *\n * Otherwise returns `null`.\n */\n@ExperimentalAssociatedObjects\npublic inline fun KClass<*>.findAssociatedObject(): Any? =\n this.findAssociatedObject(T::class)",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.JvmName(\"GroupingKt\")\n@file:kotlin.jvm.JvmMultifileClass\n\npackage kotlin.collections\n\n/**\n * Represents a source of elements with a [keyOf] function, which can be applied to each element to get its key.\n *\n * A [Grouping] structure serves as an intermediate step in group-and-fold operations:\n * they group elements by their keys and then fold each group with some aggregating operation.\n *\n * It is created by attaching `keySelector: (T) -> K` function to a source of elements.\n * To get an instance of [Grouping] use one of `groupingBy` extension functions:\n * - [Iterable.groupingBy]\n * - [Sequence.groupingBy]\n * - [Array.groupingBy]\n * - [CharSequence.groupingBy]\n *\n * For the list of group-and-fold operations available, see the [extension functions](#extension-functions) for `Grouping`.\n */\n@SinceKotlin(\"1.1\")\npublic interface Grouping {\n /** Returns an [Iterator] over the elements of the source of this grouping. */\n fun sourceIterator(): Iterator\n /** Extracts the key of an [element]. */\n fun keyOf(element: T): K\n}\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments, and stores the results in a new map.\n *\n * The key for each element is provided by the [Grouping.keyOf] function.\n *\n * @param operation function is invoked on each element with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group, can be `null` if it's the first `element` encountered in the group;\n * - `element`: the element from the source being aggregated;\n * - `first`: indicates whether it's the first `element` encountered in the group.\n *\n * @return a [Map] associating the key of each group with the result of aggregation of the group elements.\n * @sample samples.collections.Grouping.aggregateByRadix\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.aggregate(\n operation: (key: K, accumulator: R?, element: T, first: Boolean) -> R\n): Map {\n return aggregateTo(mutableMapOf(), operation)\n}\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in the given [destination] map.\n *\n * The key for each element is provided by the [Grouping.keyOf] function.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group, can be `null` if it's the first `element` encountered in the group;\n * - `element`: the element from the source being aggregated;\n * - `first`: indicates whether it's the first `element` encountered in the group.\n *\n * If the [destination] map already has a value corresponding to some key,\n * then the elements being aggregated for that key are never considered as `first`.\n *\n * @return the [destination] map associating the key of each group with the result of aggregation of the group elements.\n * @sample samples.collections.Grouping.aggregateByRadixTo\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.aggregateTo(\n destination: M,\n operation: (key: K, accumulator: R?, element: T, first: Boolean) -> R\n): M {\n for (e in this.sourceIterator()) {\n val key = keyOf(e)\n val accumulator = destination[key]\n destination[key] = operation(key, accumulator, e, accumulator == null && !destination.containsKey(key))\n }\n return destination\n}\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments, and stores the results in a new map.\n * An initial value of accumulator is provided by [initialValueSelector] function.\n *\n * @param initialValueSelector a function that provides an initial value of accumulator for each group.\n * It's invoked with parameters:\n * - `key`: the key of the group;\n * - `element`: the first element being encountered in that group.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return a [Map] associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.foldByEvenLengthWithComputedInitialValue\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.fold(\n initialValueSelector: (key: K, element: T) -> R,\n operation: (key: K, accumulator: R, element: T) -> R\n): Map =\n @Suppress(\"UNCHECKED_CAST\")\n aggregate { key, acc, e, first -> operation(key, if (first) initialValueSelector(key, e) else acc as R, e) }\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in the given [destination] map.\n * An initial value of accumulator is provided by [initialValueSelector] function.\n *\n * @param initialValueSelector a function that provides an initial value of accumulator for each group.\n * It's invoked with parameters:\n * - `key`: the key of the group;\n * - `element`: the first element being encountered in that group.\n *\n * If the [destination] map already has a value corresponding to some key, that value is used as an initial value of\n * the accumulator for that group and the [initialValueSelector] function is not called for that group.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return the [destination] map associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.foldByEvenLengthWithComputedInitialValueTo\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.foldTo(\n destination: M,\n initialValueSelector: (key: K, element: T) -> R,\n operation: (key: K, accumulator: R, element: T) -> R\n): M =\n @Suppress(\"UNCHECKED_CAST\")\n aggregateTo(destination) { key, acc, e, first -> operation(key, if (first) initialValueSelector(key, e) else acc as R, e) }\n\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments, and stores the results in a new map.\n * An initial value of accumulator is the same [initialValue] for each group.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return a [Map] associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.foldByEvenLengthWithConstantInitialValue\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.fold(\n initialValue: R,\n operation: (accumulator: R, element: T) -> R\n): Map =\n @Suppress(\"UNCHECKED_CAST\")\n aggregate { _, acc, e, first -> operation(if (first) initialValue else acc as R, e) }\n\n/**\n * Groups elements from the [Grouping] source by key and applies [operation] to the elements of each group sequentially,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in the given [destination] map.\n * An initial value of accumulator is the same [initialValue] for each group.\n *\n * If the [destination] map already has a value corresponding to the key of some group,\n * that value is used as an initial value of the accumulator for that group.\n *\n * @param operation a function that is invoked on each element with the following parameters:\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return the [destination] map associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.foldByEvenLengthWithConstantInitialValueTo\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.foldTo(\n destination: M,\n initialValue: R,\n operation: (accumulator: R, element: T) -> R\n): M =\n @Suppress(\"UNCHECKED_CAST\")\n aggregateTo(destination) { _, acc, e, first -> operation(if (first) initialValue else acc as R, e) }\n\n\n/**\n * Groups elements from the [Grouping] source by key and applies the reducing [operation] to the elements of each group\n * sequentially starting from the second element of the group,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in a new map.\n * An initial value of accumulator is the first element of the group.\n *\n * @param operation a function that is invoked on each subsequent element of the group with the following parameters:\n * - `key`: the key of the group this element belongs to;\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being accumulated.\n *\n * @return a [Map] associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.reduceByMaxVowels\n */\n@SinceKotlin(\"1.1\")\npublic inline fun Grouping.reduce(\n operation: (key: K, accumulator: S, element: T) -> S\n): Map =\n aggregate { key, acc, e, first ->\n @Suppress(\"UNCHECKED_CAST\")\n if (first) e else operation(key, acc as S, e)\n }\n\n/**\n * Groups elements from the [Grouping] source by key and applies the reducing [operation] to the elements of each group\n * sequentially starting from the second element of the group,\n * passing the previously accumulated value and the current element as arguments,\n * and stores the results in the given [destination] map.\n * An initial value of accumulator is the first element of the group.\n *\n * If the [destination] map already has a value corresponding to the key of some group,\n * that value is used as an initial value of the accumulator for that group and the first element of that group is also\n * subjected to the [operation].\n\n * @param operation a function that is invoked on each subsequent element of the group with the following parameters:\n * - `accumulator`: the current value of the accumulator of the group;\n * - `element`: the element from the source being folded;\n *\n * @return the [destination] map associating the key of each group with the result of accumulating the group elements.\n * @sample samples.collections.Grouping.reduceByMaxVowelsTo\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.reduceTo(\n destination: M,\n operation: (key: K, accumulator: S, element: T) -> S\n): M =\n aggregateTo(destination) { key, acc, e, first ->\n @Suppress(\"UNCHECKED_CAST\")\n if (first) e else operation(key, acc as S, e)\n }\n\n\n/**\n * Groups elements from the [Grouping] source by key and counts elements in each group to the given [destination] map.\n *\n * If the [destination] map already has a value corresponding to the key of some group,\n * that value is used as an initial value of the counter for that group.\n *\n * @return the [destination] map associating the key of each group with the count of elements in the group.\n *\n * @sample samples.collections.Grouping.groupingByEachCount\n */\n@SinceKotlin(\"1.1\")\npublic fun > Grouping.eachCountTo(destination: M): M =\n foldTo(destination, 0) { acc, _ -> acc + 1 }\n\n/*\n/**\n * Groups elements from the [Grouping] source by key and sums values provided by the [valueSelector] function for elements in each group\n * to the given [destination] map.\n *\n *\n * If the [destination] map already has a value corresponding to the key of some group,\n * that value is used as an initial value of the sum for that group.\n *\n * @return the [destination] map associating the key of each group with the sum of elements in the group.\n */\n@SinceKotlin(\"1.1\")\npublic inline fun > Grouping.eachSumOfTo(destination: M, valueSelector: (T) -> Int): M =\n foldTo(destination, 0) { acc, e -> acc + valueSelector(e)}\n*/\n\n\n/*\n// TODO: sum by long and by double overloads\n\npublic inline fun > Grouping.sumEachByLongTo(destination: M, valueSelector: (T) -> Long): M =\n foldTo(destination, 0L) { acc, e -> acc + valueSelector(e)}\n\npublic inline fun Grouping.sumEachByLong(valueSelector: (T) -> Long): Map =\n fold(0L) { acc, e -> acc + valueSelector(e)}\n\npublic inline fun > Grouping.sumEachByDoubleTo(destination: M, valueSelector: (T) -> Double): M =\n foldTo(destination, 0.0) { acc, e -> acc + valueSelector(e)}\n\npublic inline fun Grouping.sumEachByDouble(valueSelector: (T) -> Double): Map =\n fold(0.0) { acc, e -> acc + valueSelector(e)}\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,"package kotlinx.html\r\n\r\nimport org.w3c.dom.events.*\r\n\r\ninterface TagConsumer {\r\n fun onTagStart(tag: Tag)\r\n fun onTagAttributeChange(tag: Tag, attribute: String, value: String?)\r\n fun onTagEvent(tag: Tag, event: String, value: (Event) -> Unit)\r\n fun onTagEnd(tag: Tag)\r\n fun onTagContent(content: CharSequence)\r\n fun onTagContentEntity(entity: Entities)\r\n fun onTagContentUnsafe(block: Unsafe.() -> Unit)\r\n fun onTagComment(content: CharSequence)\r\n fun onTagError(tag: Tag, exception: Throwable): Unit = throw exception\r\n fun finalize(): R\r\n}\r\n\r\n@HtmlTagMarker\r\ninterface Tag {\r\n val tagName: String\r\n val consumer: TagConsumer<*>\r\n val namespace: String?\r\n\r\n val attributes: MutableMap\r\n val attributesEntries: Collection>\r\n\r\n val inlineTag: Boolean\r\n val emptyTag: Boolean\r\n\r\n operator fun Entities.unaryPlus(): Unit {\r\n entity(this)\r\n }\r\n\r\n operator fun String.unaryPlus(): Unit {\r\n text(this)\r\n }\r\n\r\n fun text(s: String) {\r\n consumer.onTagContent(s)\r\n }\r\n\r\n fun text(n: Number) {\r\n text(n.toString())\r\n }\r\n\r\n fun entity(e: Entities) {\r\n consumer.onTagContentEntity(e)\r\n }\r\n\r\n fun comment(s: String) {\r\n consumer.onTagComment(s)\r\n }\r\n}\r\n\r\n@HtmlTagMarker\r\ninterface Unsafe {\r\n operator fun String.unaryPlus()\r\n operator fun Entities.unaryPlus() = +text\r\n\r\n fun raw(s: String) {\r\n +s\r\n }\r\n\r\n fun raw(entity: Entities) {\r\n +entity\r\n }\r\n\r\n fun raw(n: Number) {\r\n +n.toString()\r\n }\r\n}\r\n\r\ninterface AttributeEnum {\r\n val realValue: String\r\n}\r\n\r\ninline fun T.visit(crossinline block: T.() -> Unit) = visitTag { block() }\r\n\r\ninline fun T.visitAndFinalize(consumer: TagConsumer, crossinline block: T.() -> Unit): R\r\n = visitTagAndFinalize(consumer) { block() }\r\n\r\nfun attributesMapOf() = emptyMap\r\nfun attributesMapOf(key: String, value: String?): Map = when (value) {\r\n null -> emptyMap\r\n else -> singletonMapOf(key, value)\r\n}\r\n\r\nfun attributesMapOf(vararg pairs: String?): Map {\r\n var result: MutableMap? = null\r\n\r\n for (i in 0..pairs.size - 1 step 2) {\r\n val k = pairs[i]\r\n val v = pairs[i + 1]\r\n if (k != null && v != null) {\r\n if (result == null) {\r\n result = linkedMapOf()\r\n }\r\n result.put(k, v)\r\n }\r\n }\r\n\r\n return result ?: emptyMap\r\n}\r\n\r\nfun singletonMapOf(key: String, value: String): Map = SingletonStringMap(key, value)\r\n\r\nfun HTMLTag.unsafe(block: Unsafe.() -> Unit): Unit = consumer.onTagContentUnsafe(block)\r\n\r\nval emptyMap: Map = emptyMap()\r\n\r\nclass DefaultUnsafe : Unsafe {\r\n private val sb = StringBuilder()\r\n\r\n override fun String.unaryPlus() {\r\n sb.append(this)\r\n }\r\n\r\n override fun toString(): String = sb.toString()\r\n}\r\n\r\n@DslMarker\r\nannotation class HtmlTagMarker\r\n\r\ntypealias HtmlContent = FlowOrPhrasingContent\r\n\r\nprivate data class SingletonStringMap(override val key: String, override val value: String) : Map, Map.Entry {\r\n override val entries: Set>\r\n get() = setOf(this)\r\n\r\n override val keys: Set\r\n get() = setOf(key)\r\n\r\n override val size: Int\r\n get() = 1\r\n\r\n override val values: Collection\r\n get() = listOf(value)\r\n\r\n override fun containsKey(key: String) = key == this.key\r\n override fun containsValue(value: String) = value == this.value\r\n override fun get(key: String): String? = if (key == this.key) value else null\r\n override fun isEmpty() = false\r\n}\r\n","package kotlinx.html.attributes\r\n\r\nimport kotlinx.html.*\r\n\r\ninterface AttributeEncoder {\r\n fun encode(attributeName: String, value : T) : String\r\n fun decode(attributeName: String, value : String) : T\r\n fun empty(attributeName: String, tag: Tag) : T = throw IllegalStateException(\"Attribute $attributeName is not yet defined for tag ${tag.tagName}\")\r\n}\r\n\r\nabstract class Attribute(val encoder : AttributeEncoder) {\r\n open operator fun get(thisRef: Tag, attributeName: String) : T =\r\n thisRef.attributes[attributeName]?.let {\r\n encoder.decode(attributeName, it)\r\n } ?: encoder.empty(attributeName, thisRef)\r\n\r\n open operator fun set(thisRef: Tag, attributeName: String, value : T) {\r\n thisRef.attributes.put(attributeName, encoder.encode(attributeName, value))\r\n }\r\n}\r\n\r\nobject StringEncoder : AttributeEncoder {\r\n override fun encode(attributeName: String, value: String): String = value\r\n override fun decode(attributeName: String, value: String): String = value\r\n}\r\n\r\nclass StringAttribute : Attribute(StringEncoder)\r\n\r\n//public class IntAttribute : Attribute() {\r\n// override fun encode(desc: PropertyMetadata, value: Int): String = value.toString()\r\n// override fun decode(desc: PropertyMetadata, value: String): Int = value.toInt()\r\n//}\r\n\r\nfun Boolean.booleanEncode() = toString()\r\nclass BooleanEncoder(val trueValue: String = \"true\", val falseValue: String = \"false\") : AttributeEncoder {\r\n override fun encode(attributeName: String, value : Boolean): String = if (value) trueValue else falseValue\r\n override fun decode(attributeName: String, value: String): Boolean = when (value) {\r\n trueValue -> true\r\n falseValue -> false\r\n else -> throw IllegalArgumentException(\"Unknown value $value for $attributeName\")\r\n }\r\n}\r\n\r\nclass BooleanAttribute(trueValue: String = \"true\", falseValue: String = \"false\") : Attribute(BooleanEncoder(trueValue, falseValue))\r\n\r\nfun Boolean.tickerEncode(attributeName: String) : String = if (this) attributeName else \"\"\r\nobject TickerEncoder : AttributeEncoder {\r\n override fun encode(attributeName: String, value: Boolean): String = value.tickerEncode(attributeName)\r\n override fun decode(attributeName: String, value: String): Boolean = value == attributeName\r\n}\r\n\r\nclass TickerAttribute : Attribute(TickerEncoder) {\r\n override fun set(thisRef: Tag, attributeName: String, value: Boolean) {\r\n if (value) {\r\n thisRef.attributes.put(attributeName, attributeName)\r\n } else {\r\n thisRef.attributes.remove(attributeName)\r\n }\r\n }\r\n}\r\n\r\nclass EnumEncoder(val valuesMap : Map) : AttributeEncoder {\r\n override fun encode(attributeName: String, value: T): String = value.realValue\r\n override fun decode(attributeName: String, value: String): T = valuesMap[value] ?: throw IllegalArgumentException(\"Unknown value $value for $attributeName\")\r\n}\r\n\r\nfun AttributeEnum.enumEncode() : String = realValue\r\nclass EnumAttribute(val values : Map) : Attribute(EnumEncoder(values))\r\n\r\nfun stringSetDecode(value: String?): Set? = value?.split(\"\\\\s+\".toRegex())?.filterNot {it.isEmpty()}?.toSet()\r\nfun Set.stringSetEncode() = joinToString(\" \")\r\nobject StringSetEncoder : AttributeEncoder> {\r\n override fun encode(attributeName: String, value: Set): String = value.joinToString(\" \")\r\n override fun decode(attributeName: String, value: String): Set = stringSetDecode(value)!!\r\n override fun empty(attributeName: String, tag: Tag) = emptySet()\r\n}\r\nclass StringSetAttribute : Attribute>(StringSetEncoder)","package kotlinx.html.impl\r\n\r\nimport kotlinx.html.*\r\n\r\nclass DelegatingMap(initialValues : Map, private val tag : Tag, private val consumer : () -> TagConsumer<*>) : MutableMap {\r\n private var backing: Map = initialValues\r\n private var backingMutable = false\r\n\r\n override val size: Int\r\n get() = backing.size\r\n\r\n override fun isEmpty(): Boolean = backing.isEmpty()\r\n\r\n override fun containsKey(key: String): Boolean = backing.containsKey(key)\r\n override fun containsValue(value: String): Boolean = backing.containsValue(value)\r\n override fun get(key: String): String? = backing[key]\r\n\r\n override fun put(key: String, value: String): String? {\r\n val mutable = switchToMutable()\r\n\r\n val old = mutable.put(key, value)\r\n if (old != value) {\r\n consumer().onTagAttributeChange(tag, key, value)\r\n }\r\n\r\n return old\r\n }\r\n\r\n override fun remove(key: String): String? {\r\n val mutable = switchToMutable()\r\n\r\n return mutable.remove(key)?.let { removed ->\r\n consumer().onTagAttributeChange(tag, key, null)\r\n removed\r\n }\r\n }\r\n\r\n override fun putAll(from: Map) {\r\n if (from.isEmpty()) return\r\n\r\n val consumer = consumer()\r\n val mutable = switchToMutable()\r\n\r\n from.entries.forEach { e ->\r\n if (mutable.put(e.key, e.value) != e.value) {\r\n consumer.onTagAttributeChange(tag, e.key, e.value)\r\n }\r\n }\r\n }\r\n\r\n override fun clear() {\r\n backing.forEach { e -> consumer().onTagAttributeChange(tag, e.key, null) }\r\n backing = emptyMap()\r\n backingMutable = false\r\n }\r\n\r\n val immutableEntries: Collection>\r\n get() = backing.entries\r\n\r\n private fun switchToMutable(): MutableMap = if (backingMutable) {\r\n backing\r\n } else {\r\n backingMutable = true\r\n backing = LinkedHashMap(backing)\r\n backing\r\n } as MutableMap\r\n\r\n override val keys: MutableSet\r\n get() = switchToMutable().keys // TODO we need to handle changes too\r\n\r\n override val values: MutableCollection\r\n get() = switchToMutable().values // TODO we need to handle changes too\r\n\r\n override val entries: MutableSet>\r\n get() = switchToMutable().entries // TODO we need to handle changes too\r\n}\r\n","package kotlinx.html\r\n\r\nimport kotlinx.html.*\r\n\r\n/*******************************************************************************\r\n DO NOT EDIT\r\n This file was generated by module generate\r\n*******************************************************************************/\r\n\r\n@Suppress(\"unused\")\r\nenum class Dir(override val realValue : String) : AttributeEnum {\r\n ltr(\"ltr\"),\r\n rtl(\"rtl\")\r\n}\r\n\r\ninternal val dirValues : Map = Dir.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nenum class Draggable(override val realValue : String) : AttributeEnum {\r\n htmlTrue(\"true\"),\r\n htmlFalse(\"false\"),\r\n auto(\"auto\")\r\n}\r\n\r\ninternal val draggableValues : Map = Draggable.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nenum class RunAt(override val realValue : String) : AttributeEnum {\r\n server(\"server\")\r\n}\r\n\r\ninternal val runAtValues : Map = RunAt.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nobject ATarget {\r\n val blank : String = \"_blank\"\r\n val parent : String = \"_parent\"\r\n val self : String = \"_self\"\r\n val top : String = \"_top\"\r\n\r\n val values : List = listOf(\"blank\", \"parent\", \"self\", \"top\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nobject ARel {\r\n val alternate : String = \"Alternate\"\r\n val appEndIx : String = \"Appendix\"\r\n val bookmark : String = \"Bookmark\"\r\n val chapter : String = \"Chapter\"\r\n val contentS : String = \"Contents\"\r\n val copyright : String = \"Copyright\"\r\n val glossary : String = \"Glossary\"\r\n val help : String = \"Help\"\r\n val index : String = \"Index\"\r\n val next : String = \"Next\"\r\n val prev : String = \"Prev\"\r\n val section : String = \"Section\"\r\n val start : String = \"Start\"\r\n val stylesheet : String = \"Stylesheet\"\r\n val subsection : String = \"Subsection\"\r\n\r\n val values : List = listOf(\"alternate\", \"appEndIx\", \"bookmark\", \"chapter\", \"contentS\", \"copyright\", \"glossary\", \"help\", \"index\", \"next\", \"prev\", \"section\", \"start\", \"stylesheet\", \"subsection\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nobject AType {\r\n val textAsp : String = \"text/asp\"\r\n val textAsa : String = \"text/asa\"\r\n val textCss : String = \"text/css\"\r\n val textHtml : String = \"text/html\"\r\n val textJavaScript : String = \"text/javascript\"\r\n val textPlain : String = \"text/plain\"\r\n val textScriptLet : String = \"text/scriptlet\"\r\n val textXComponent : String = \"text/x-component\"\r\n val textXHtmlInsertion : String = \"text/x-html-insertion\"\r\n val textXml : String = \"text/xml\"\r\n\r\n val values : List = listOf(\"textAsp\", \"textAsa\", \"textCss\", \"textHtml\", \"textJavaScript\", \"textPlain\", \"textScriptLet\", \"textXComponent\", \"textXHtmlInsertion\", \"textXml\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nenum class AreaShape(override val realValue : String) : AttributeEnum {\r\n rect(\"rect\"),\r\n circle(\"circle\"),\r\n poly(\"poly\"),\r\n default(\"default\")\r\n}\r\n\r\ninternal val areaShapeValues : Map = AreaShape.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nobject AreaTarget {\r\n val blank : String = \"_blank\"\r\n val parent : String = \"_parent\"\r\n val self : String = \"_self\"\r\n val top : String = \"_top\"\r\n\r\n val values : List = listOf(\"blank\", \"parent\", \"self\", \"top\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nobject AreaRel {\r\n val alternate : String = \"Alternate\"\r\n val appEndIx : String = \"Appendix\"\r\n val bookmark : String = \"Bookmark\"\r\n val chapter : String = \"Chapter\"\r\n val contentS : String = \"Contents\"\r\n val copyright : String = \"Copyright\"\r\n val glossary : String = \"Glossary\"\r\n val help : String = \"Help\"\r\n val index : String = \"Index\"\r\n val next : String = \"Next\"\r\n val prev : String = \"Prev\"\r\n val section : String = \"Section\"\r\n val start : String = \"Start\"\r\n val stylesheet : String = \"Stylesheet\"\r\n val subsection : String = \"Subsection\"\r\n\r\n val values : List = listOf(\"alternate\", \"appEndIx\", \"bookmark\", \"chapter\", \"contentS\", \"copyright\", \"glossary\", \"help\", \"index\", \"next\", \"prev\", \"section\", \"start\", \"stylesheet\", \"subsection\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nobject BaseTarget {\r\n val blank : String = \"_blank\"\r\n val parent : String = \"_parent\"\r\n val self : String = \"_self\"\r\n val top : String = \"_top\"\r\n\r\n val values : List = listOf(\"blank\", \"parent\", \"self\", \"top\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nenum class ButtonFormEncType(override val realValue : String) : AttributeEnum {\r\n multipartFormData(\"multipart/form-data\"),\r\n applicationXWwwFormUrlEncoded(\"application/x-www-form-urlencoded\"),\r\n textPlain(\"text/plain\")\r\n}\r\n\r\ninternal val buttonFormEncTypeValues : Map = ButtonFormEncType.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nenum class ButtonFormMethod(override val realValue : String) : AttributeEnum {\r\n get(\"get\"),\r\n post(\"post\"),\r\n @Deprecated(\"method is not allowed in browsers\") put(\"put\"),\r\n @Deprecated(\"method is not allowed in browsers\") delete(\"delete\"),\r\n @Deprecated(\"method is not allowed in browsers\") patch(\"patch\")\r\n}\r\n\r\ninternal val buttonFormMethodValues : Map = ButtonFormMethod.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nobject ButtonFormTarget {\r\n val blank : String = \"_blank\"\r\n val parent : String = \"_parent\"\r\n val self : String = \"_self\"\r\n val top : String = \"_top\"\r\n\r\n val values : List = listOf(\"blank\", \"parent\", \"self\", \"top\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nenum class ButtonType(override val realValue : String) : AttributeEnum {\r\n button(\"button\"),\r\n reset(\"reset\"),\r\n submit(\"submit\")\r\n}\r\n\r\ninternal val buttonTypeValues : Map = ButtonType.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nenum class CommandType(override val realValue : String) : AttributeEnum {\r\n command(\"command\"),\r\n checkBox(\"checkbox\"),\r\n radio(\"radio\")\r\n}\r\n\r\ninternal val commandTypeValues : Map = CommandType.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nenum class FormEncType(override val realValue : String) : AttributeEnum {\r\n multipartFormData(\"multipart/form-data\"),\r\n applicationXWwwFormUrlEncoded(\"application/x-www-form-urlencoded\"),\r\n textPlain(\"text/plain\")\r\n}\r\n\r\ninternal val formEncTypeValues : Map = FormEncType.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nenum class FormMethod(override val realValue : String) : AttributeEnum {\r\n get(\"get\"),\r\n post(\"post\"),\r\n @Deprecated(\"method is not allowed in browsers\") put(\"put\"),\r\n @Deprecated(\"method is not allowed in browsers\") delete(\"delete\"),\r\n @Deprecated(\"method is not allowed in browsers\") patch(\"patch\")\r\n}\r\n\r\ninternal val formMethodValues : Map = FormMethod.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nobject FormTarget {\r\n val blank : String = \"_blank\"\r\n val parent : String = \"_parent\"\r\n val self : String = \"_self\"\r\n val top : String = \"_top\"\r\n\r\n val values : List = listOf(\"blank\", \"parent\", \"self\", \"top\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nobject IframeName {\r\n val blank : String = \"_blank\"\r\n val parent : String = \"_parent\"\r\n val self : String = \"_self\"\r\n val top : String = \"_top\"\r\n\r\n val values : List = listOf(\"blank\", \"parent\", \"self\", \"top\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nenum class IframeSandbox(override val realValue : String) : AttributeEnum {\r\n allowSameOrigin(\"allow-same-origin\"),\r\n allowFormS(\"allow-forms\"),\r\n allowScripts(\"allow-scripts\")\r\n}\r\n\r\ninternal val iframeSandboxValues : Map = IframeSandbox.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nenum class InputType(override val realValue : String) : AttributeEnum {\r\n button(\"button\"),\r\n checkBox(\"checkbox\"),\r\n color(\"color\"),\r\n date(\"date\"),\r\n dateTime(\"datetime\"),\r\n dateTimeLocal(\"datetime-local\"),\r\n email(\"email\"),\r\n file(\"file\"),\r\n hidden(\"hidden\"),\r\n image(\"image\"),\r\n month(\"month\"),\r\n number(\"number\"),\r\n password(\"password\"),\r\n radio(\"radio\"),\r\n range(\"range\"),\r\n reset(\"reset\"),\r\n search(\"search\"),\r\n submit(\"submit\"),\r\n text(\"text\"),\r\n tel(\"tel\"),\r\n time(\"time\"),\r\n url(\"url\"),\r\n week(\"week\")\r\n}\r\n\r\ninternal val inputTypeValues : Map = InputType.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nenum class InputFormEncType(override val realValue : String) : AttributeEnum {\r\n multipartFormData(\"multipart/form-data\"),\r\n applicationXWwwFormUrlEncoded(\"application/x-www-form-urlencoded\"),\r\n textPlain(\"text/plain\")\r\n}\r\n\r\ninternal val inputFormEncTypeValues : Map = InputFormEncType.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nenum class InputFormMethod(override val realValue : String) : AttributeEnum {\r\n get(\"get\"),\r\n post(\"post\"),\r\n @Deprecated(\"method is not allowed in browsers\") put(\"put\"),\r\n @Deprecated(\"method is not allowed in browsers\") delete(\"delete\"),\r\n @Deprecated(\"method is not allowed in browsers\") patch(\"patch\")\r\n}\r\n\r\ninternal val inputFormMethodValues : Map = InputFormMethod.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nobject InputFormTarget {\r\n val blank : String = \"_blank\"\r\n val parent : String = \"_parent\"\r\n val self : String = \"_self\"\r\n val top : String = \"_top\"\r\n\r\n val values : List = listOf(\"blank\", \"parent\", \"self\", \"top\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nenum class KeyGenKeyType(override val realValue : String) : AttributeEnum {\r\n rsa(\"rsa\")\r\n}\r\n\r\ninternal val keyGenKeyTypeValues : Map = KeyGenKeyType.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nobject LinkRel {\r\n val alternate : String = \"Alternate\"\r\n val appEndIx : String = \"Appendix\"\r\n val bookmark : String = \"Bookmark\"\r\n val chapter : String = \"Chapter\"\r\n val contentS : String = \"Contents\"\r\n val copyright : String = \"Copyright\"\r\n val glossary : String = \"Glossary\"\r\n val help : String = \"Help\"\r\n val index : String = \"Index\"\r\n val next : String = \"Next\"\r\n val prev : String = \"Prev\"\r\n val section : String = \"Section\"\r\n val start : String = \"Start\"\r\n val stylesheet : String = \"Stylesheet\"\r\n val subsection : String = \"Subsection\"\r\n\r\n val values : List = listOf(\"alternate\", \"appEndIx\", \"bookmark\", \"chapter\", \"contentS\", \"copyright\", \"glossary\", \"help\", \"index\", \"next\", \"prev\", \"section\", \"start\", \"stylesheet\", \"subsection\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nobject LinkMedia {\r\n val screen : String = \"screen\"\r\n val print : String = \"print\"\r\n val tty : String = \"tty\"\r\n val tv : String = \"tv\"\r\n val projection : String = \"projection\"\r\n val handheld : String = \"handheld\"\r\n val braille : String = \"braille\"\r\n val aural : String = \"aural\"\r\n val all : String = \"all\"\r\n\r\n val values : List = listOf(\"screen\", \"print\", \"tty\", \"tv\", \"projection\", \"handheld\", \"braille\", \"aural\", \"all\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nobject LinkType {\r\n val textAsp : String = \"text/asp\"\r\n val textAsa : String = \"text/asa\"\r\n val textCss : String = \"text/css\"\r\n val textHtml : String = \"text/html\"\r\n val textJavaScript : String = \"text/javascript\"\r\n val textPlain : String = \"text/plain\"\r\n val textScriptLet : String = \"text/scriptlet\"\r\n val textXComponent : String = \"text/x-component\"\r\n val textXHtmlInsertion : String = \"text/x-html-insertion\"\r\n val textXml : String = \"text/xml\"\r\n\r\n val values : List = listOf(\"textAsp\", \"textAsa\", \"textCss\", \"textHtml\", \"textJavaScript\", \"textPlain\", \"textScriptLet\", \"textXComponent\", \"textXHtmlInsertion\", \"textXml\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nobject MetaHttpEquiv {\r\n val contentLanguage : String = \"content-language\"\r\n val contentType : String = \"content-type\"\r\n val defaultStyle : String = \"default-style\"\r\n val refresh : String = \"refresh\"\r\n\r\n val values : List = listOf(\"contentLanguage\", \"contentType\", \"defaultStyle\", \"refresh\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nobject ObjectName {\r\n val blank : String = \"_blank\"\r\n val parent : String = \"_parent\"\r\n val self : String = \"_self\"\r\n val top : String = \"_top\"\r\n\r\n val values : List = listOf(\"blank\", \"parent\", \"self\", \"top\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nobject ScriptType {\r\n val textEcmaScript : String = \"text/ecmascript\"\r\n val textJavaScript : String = \"text/javascript\"\r\n val textJavaScript10 : String = \"text/javascript1.0\"\r\n val textJavaScript11 : String = \"text/javascript1.1\"\r\n val textJavaScript12 : String = \"text/javascript1.2\"\r\n val textJavaScript13 : String = \"text/javascript1.3\"\r\n val textJavaScript14 : String = \"text/javascript1.4\"\r\n val textJavaScript15 : String = \"text/javascript1.5\"\r\n val textJScript : String = \"text/jscript\"\r\n val textXJavaScript : String = \"text/x-javascript\"\r\n val textXEcmaScript : String = \"text/x-ecmascript\"\r\n val textVbScript : String = \"text/vbscript\"\r\n\r\n val values : List = listOf(\"textEcmaScript\", \"textJavaScript\", \"textJavaScript10\", \"textJavaScript11\", \"textJavaScript12\", \"textJavaScript13\", \"textJavaScript14\", \"textJavaScript15\", \"textJScript\", \"textXJavaScript\", \"textXEcmaScript\", \"textVbScript\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nobject StyleType {\r\n val textCss : String = \"text/css\"\r\n\r\n val values : List = listOf(\"textCss\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nobject StyleMedia {\r\n val screen : String = \"screen\"\r\n val print : String = \"print\"\r\n val tty : String = \"tty\"\r\n val tv : String = \"tv\"\r\n val projection : String = \"projection\"\r\n val handheld : String = \"handheld\"\r\n val braille : String = \"braille\"\r\n val aural : String = \"aural\"\r\n val all : String = \"all\"\r\n\r\n val values : List = listOf(\"screen\", \"print\", \"tty\", \"tv\", \"projection\", \"handheld\", \"braille\", \"aural\", \"all\")\r\n}\r\n\r\n@Suppress(\"unused\")\r\nenum class TextAreaWrap(override val realValue : String) : AttributeEnum {\r\n hard(\"hard\"),\r\n soft(\"soft\")\r\n}\r\n\r\ninternal val textAreaWrapValues : Map = TextAreaWrap.values().associateBy { it.realValue }\r\n@Suppress(\"unused\")\r\nenum class ThScope(override val realValue : String) : AttributeEnum {\r\n col(\"col\"),\r\n colGroup(\"colgroup\"),\r\n row(\"row\"),\r\n rowGroup(\"rowgroup\")\r\n}\r\n\r\ninternal val thScopeValues : Map = ThScope.values().associateBy { it.realValue }\r\n","package kotlinx.html\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.impl.*\r\nimport kotlinx.html.attributes.*\r\n\r\n/*******************************************************************************\r\n DO NOT EDIT\r\n This file was generated by module generate\r\n*******************************************************************************/\r\n\r\n@Suppress(\"unused\")\r\nopen class A(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"a\", consumer, initialAttributes, null, true, false), CommonAttributeGroupFacadeFlowInteractivePhrasingContent {\r\n var href : String\r\n get() = attributeStringString.get(this, \"href\")\r\n set(newValue) {attributeStringString.set(this, \"href\", newValue)}\r\n\r\n var target : String\r\n get() = attributeStringString.get(this, \"target\")\r\n set(newValue) {attributeStringString.set(this, \"target\", newValue)}\r\n\r\n var ping : String\r\n get() = attributeStringString.get(this, \"ping\")\r\n set(newValue) {attributeStringString.set(this, \"ping\", newValue)}\r\n\r\n var rel : String\r\n get() = attributeStringString.get(this, \"rel\")\r\n set(newValue) {attributeStringString.set(this, \"rel\", newValue)}\r\n\r\n var hrefLang : String\r\n get() = attributeStringString.get(this, \"hreflang\")\r\n set(newValue) {attributeStringString.set(this, \"hreflang\", newValue)}\r\n\r\n var type : String\r\n get() = attributeStringString.get(this, \"type\")\r\n set(newValue) {attributeStringString.set(this, \"type\", newValue)}\r\n\r\n\r\n}\r\nval A.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval A.asInteractiveContent : InteractiveContent\r\n get() = this\r\n\r\nval A.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class ABBR(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"abbr\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval ABBR.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval ABBR.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class ADDRESS(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"address\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class AREA(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"area\", consumer, initialAttributes, null, true, true), HtmlBlockInlineTag {\r\n var coords : String\r\n get() = attributeStringString.get(this, \"coords\")\r\n set(newValue) {attributeStringString.set(this, \"coords\", newValue)}\r\n\r\n var href : String\r\n get() = attributeStringString.get(this, \"href\")\r\n set(newValue) {attributeStringString.set(this, \"href\", newValue)}\r\n\r\n var hrefLang : String\r\n get() = attributeStringString.get(this, \"hreflang\")\r\n set(newValue) {attributeStringString.set(this, \"hreflang\", newValue)}\r\n\r\n var alt : String\r\n get() = attributeStringString.get(this, \"alt\")\r\n set(newValue) {attributeStringString.set(this, \"alt\", newValue)}\r\n\r\n var target : String\r\n get() = attributeStringString.get(this, \"target\")\r\n set(newValue) {attributeStringString.set(this, \"target\", newValue)}\r\n\r\n var media : String\r\n get() = attributeStringString.get(this, \"media\")\r\n set(newValue) {attributeStringString.set(this, \"media\", newValue)}\r\n\r\n var rel : String\r\n get() = attributeStringString.get(this, \"rel\")\r\n set(newValue) {attributeStringString.set(this, \"rel\", newValue)}\r\n\r\n var ping : String\r\n get() = attributeStringString.get(this, \"ping\")\r\n set(newValue) {attributeStringString.set(this, \"ping\", newValue)}\r\n\r\n var type : String\r\n get() = attributeStringString.get(this, \"type\")\r\n set(newValue) {attributeStringString.set(this, \"type\", newValue)}\r\n\r\n\r\n}\r\nval AREA.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval AREA.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class ARTICLE(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"article\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowSectioningContent {\r\n\r\n}\r\nval ARTICLE.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval ARTICLE.asSectioningContent : SectioningContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class ASIDE(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"aside\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowSectioningContent {\r\n\r\n}\r\nval ASIDE.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval ASIDE.asSectioningContent : SectioningContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class AUDIO(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"audio\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowInteractivePhrasingContent {\r\n var src : String\r\n get() = attributeStringString.get(this, \"src\")\r\n set(newValue) {attributeStringString.set(this, \"src\", newValue)}\r\n\r\n var autoBuffer : Boolean\r\n get() = attributeBooleanTicker.get(this, \"autobuffer\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"autobuffer\", newValue)}\r\n\r\n var autoPlay : Boolean\r\n get() = attributeBooleanTicker.get(this, \"autoplay\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"autoplay\", newValue)}\r\n\r\n var loop : Boolean\r\n get() = attributeBooleanTicker.get(this, \"loop\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"loop\", newValue)}\r\n\r\n var controls : Boolean\r\n get() = attributeBooleanTicker.get(this, \"controls\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"controls\", newValue)}\r\n\r\n\r\n}\r\n/**\r\n * Media source for \r\n */\r\n@HtmlTagMarker\r\ninline fun AUDIO.source(classes : String? = null, crossinline block : SOURCE.() -> Unit = {}) : Unit = SOURCE(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\nval AUDIO.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval AUDIO.asInteractiveContent : InteractiveContent\r\n get() = this\r\n\r\nval AUDIO.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n","package kotlinx.html\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.impl.*\r\nimport kotlinx.html.attributes.*\r\n\r\n/*******************************************************************************\r\n DO NOT EDIT\r\n This file was generated by module generate\r\n*******************************************************************************/\r\n\r\n@Suppress(\"unused\")\r\nopen class B(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"b\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval B.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval B.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class BASE(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"base\", consumer, initialAttributes, null, true, true), HtmlHeadTag {\r\n var href : String\r\n get() = attributeStringString.get(this, \"href\")\r\n set(newValue) {attributeStringString.set(this, \"href\", newValue)}\r\n\r\n var target : String\r\n get() = attributeStringString.get(this, \"target\")\r\n set(newValue) {attributeStringString.set(this, \"target\", newValue)}\r\n\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class BDI(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"bdi\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval BDI.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval BDI.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class BDO(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"bdo\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval BDO.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval BDO.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class BLOCKQUOTE(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"blockquote\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n var cite : String\r\n get() = attributeStringString.get(this, \"cite\")\r\n set(newValue) {attributeStringString.set(this, \"cite\", newValue)}\r\n\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class BODY(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"body\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n var onAfterprint : String\r\n get() = attributeStringString.get(this, \"onafterprint\")\r\n set(newValue) {attributeStringString.set(this, \"onafterprint\", newValue)}\r\n\r\n var onBeforeprint : String\r\n get() = attributeStringString.get(this, \"onbeforeprint\")\r\n set(newValue) {attributeStringString.set(this, \"onbeforeprint\", newValue)}\r\n\r\n var onBeforeunLoad : String\r\n get() = attributeStringString.get(this, \"onbeforeunload\")\r\n set(newValue) {attributeStringString.set(this, \"onbeforeunload\", newValue)}\r\n\r\n var onHashChange : String\r\n get() = attributeStringString.get(this, \"onhashchange\")\r\n set(newValue) {attributeStringString.set(this, \"onhashchange\", newValue)}\r\n\r\n var onMessage : String\r\n get() = attributeStringString.get(this, \"onmessage\")\r\n set(newValue) {attributeStringString.set(this, \"onmessage\", newValue)}\r\n\r\n var onOffline : String\r\n get() = attributeStringString.get(this, \"onoffline\")\r\n set(newValue) {attributeStringString.set(this, \"onoffline\", newValue)}\r\n\r\n var onOnline : String\r\n get() = attributeStringString.get(this, \"ononline\")\r\n set(newValue) {attributeStringString.set(this, \"ononline\", newValue)}\r\n\r\n var onPopstate : String\r\n get() = attributeStringString.get(this, \"onpopstate\")\r\n set(newValue) {attributeStringString.set(this, \"onpopstate\", newValue)}\r\n\r\n var onRedo : String\r\n get() = attributeStringString.get(this, \"onredo\")\r\n set(newValue) {attributeStringString.set(this, \"onredo\", newValue)}\r\n\r\n var onResize : String\r\n get() = attributeStringString.get(this, \"onresize\")\r\n set(newValue) {attributeStringString.set(this, \"onresize\", newValue)}\r\n\r\n var onStorage : String\r\n get() = attributeStringString.get(this, \"onstorage\")\r\n set(newValue) {attributeStringString.set(this, \"onstorage\", newValue)}\r\n\r\n var onUndo : String\r\n get() = attributeStringString.get(this, \"onundo\")\r\n set(newValue) {attributeStringString.set(this, \"onundo\", newValue)}\r\n\r\n var onUnLoad : String\r\n get() = attributeStringString.get(this, \"onunload\")\r\n set(newValue) {attributeStringString.set(this, \"onunload\", newValue)}\r\n\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class BR(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"br\", consumer, initialAttributes, null, true, true), HtmlBlockInlineTag {\r\n\r\n}\r\nval BR.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval BR.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class BUTTON(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"button\", consumer, initialAttributes, null, true, false), CommonAttributeGroupFacadeFlowInteractivePhrasingContent {\r\n var autoFocus : Boolean\r\n get() = attributeBooleanTicker.get(this, \"autofocus\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"autofocus\", newValue)}\r\n\r\n var disabled : Boolean\r\n get() = attributeBooleanTicker.get(this, \"disabled\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"disabled\", newValue)}\r\n\r\n var form : String\r\n get() = attributeStringString.get(this, \"form\")\r\n set(newValue) {attributeStringString.set(this, \"form\", newValue)}\r\n\r\n var formAction : String\r\n get() = attributeStringString.get(this, \"formaction\")\r\n set(newValue) {attributeStringString.set(this, \"formaction\", newValue)}\r\n\r\n var formEncType : ButtonFormEncType\r\n get() = attributeButtonFormEncTypeEnumButtonFormEncTypeValues.get(this, \"formenctype\")\r\n set(newValue) {attributeButtonFormEncTypeEnumButtonFormEncTypeValues.set(this, \"formenctype\", newValue)}\r\n\r\n var formMethod : ButtonFormMethod\r\n get() = attributeButtonFormMethodEnumButtonFormMethodValues.get(this, \"formmethod\")\r\n set(newValue) {attributeButtonFormMethodEnumButtonFormMethodValues.set(this, \"formmethod\", newValue)}\r\n\r\n var formNovalidate : Boolean\r\n get() = attributeBooleanTicker.get(this, \"formnovalidate\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"formnovalidate\", newValue)}\r\n\r\n var formTarget : String\r\n get() = attributeStringString.get(this, \"formtarget\")\r\n set(newValue) {attributeStringString.set(this, \"formtarget\", newValue)}\r\n\r\n var name : String\r\n get() = attributeStringString.get(this, \"name\")\r\n set(newValue) {attributeStringString.set(this, \"name\", newValue)}\r\n\r\n var value : String\r\n get() = attributeStringString.get(this, \"value\")\r\n set(newValue) {attributeStringString.set(this, \"value\", newValue)}\r\n\r\n var type : ButtonType\r\n get() = attributeButtonTypeEnumButtonTypeValues.get(this, \"type\")\r\n set(newValue) {attributeButtonTypeEnumButtonTypeValues.set(this, \"type\", newValue)}\r\n\r\n\r\n}\r\nval BUTTON.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval BUTTON.asInteractiveContent : InteractiveContent\r\n get() = this\r\n\r\nval BUTTON.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n","package kotlinx.html\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.impl.*\r\nimport kotlinx.html.attributes.*\r\n\r\n/*******************************************************************************\r\n DO NOT EDIT\r\n This file was generated by module generate\r\n*******************************************************************************/\r\n\r\n@Suppress(\"unused\")\r\nopen class DATALIST(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"datalist\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\n/**\r\n * Selectable choice\r\n */\r\n@HtmlTagMarker\r\ninline fun DATALIST.option(classes : String? = null, crossinline block : OPTION.() -> Unit = {}) : Unit = OPTION(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n/**\r\n * Selectable choice\r\n */\r\n@HtmlTagMarker\r\nfun DATALIST.option(classes : String? = null, content : String = \"\") : Unit = OPTION(attributesMapOf(\"class\", classes), consumer).visit({+content})\r\n\r\nval DATALIST.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval DATALIST.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class DD(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"dd\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class DEL(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"del\", consumer, initialAttributes, null, false, false), HtmlBlockInlineTag {\r\n var cite : String\r\n get() = attributeStringString.get(this, \"cite\")\r\n set(newValue) {attributeStringString.set(this, \"cite\", newValue)}\r\n\r\n var dateTime : String\r\n get() = attributeStringString.get(this, \"datetime\")\r\n set(newValue) {attributeStringString.set(this, \"datetime\", newValue)}\r\n\r\n\r\n}\r\nval DEL.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval DEL.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class DETAILS(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"details\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowInteractiveContent {\r\n var open : Boolean\r\n get() = attributeBooleanTicker.get(this, \"open\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"open\", newValue)}\r\n\r\n\r\n}\r\n/**\r\n * Fieldset legend\r\n */\r\n@HtmlTagMarker\r\ninline fun DETAILS.legend(classes : String? = null, crossinline block : LEGEND.() -> Unit = {}) : Unit = LEGEND(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\nval DETAILS.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval DETAILS.asInteractiveContent : InteractiveContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class DFN(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"dfn\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval DFN.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval DFN.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class DIALOG(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"dialog\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class DIV(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"div\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class DL(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"dl\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n\r\n}\r\n/**\r\n * Definition description\r\n */\r\n@HtmlTagMarker\r\ninline fun DL.dd(classes : String? = null, crossinline block : DD.() -> Unit = {}) : Unit = DD(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\n/**\r\n * Definition term\r\n */\r\n@HtmlTagMarker\r\ninline fun DL.dt(classes : String? = null, crossinline block : DT.() -> Unit = {}) : Unit = DT(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class DT(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"dt\", consumer, initialAttributes, null, false, false), HtmlInlineTag {\r\n\r\n}\r\n\r\n","package kotlinx.html\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.impl.*\r\nimport kotlinx.html.attributes.*\r\n\r\n/*******************************************************************************\r\n DO NOT EDIT\r\n This file was generated by module generate\r\n*******************************************************************************/\r\n\r\n@Suppress(\"unused\")\r\nopen class FIELDSET(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"fieldset\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n var disabled : Boolean\r\n get() = attributeBooleanTicker.get(this, \"disabled\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"disabled\", newValue)}\r\n\r\n var form : String\r\n get() = attributeStringString.get(this, \"form\")\r\n set(newValue) {attributeStringString.set(this, \"form\", newValue)}\r\n\r\n var name : String\r\n get() = attributeStringString.get(this, \"name\")\r\n set(newValue) {attributeStringString.set(this, \"name\", newValue)}\r\n\r\n\r\n}\r\n/**\r\n * Fieldset legend\r\n */\r\n@HtmlTagMarker\r\ninline fun FIELDSET.legend(classes : String? = null, crossinline block : LEGEND.() -> Unit = {}) : Unit = LEGEND(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class FIGCAPTION(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"figcaption\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class FIGURE(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"figure\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n\r\n}\r\n/**\r\n * Fieldset legend\r\n */\r\n@HtmlTagMarker\r\ninline fun FIGURE.legend(classes : String? = null, crossinline block : LEGEND.() -> Unit = {}) : Unit = LEGEND(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\n/**\r\n * Caption for \r\n */\r\n@HtmlTagMarker\r\ninline fun FIGURE.figcaption(classes : String? = null, crossinline block : FIGCAPTION.() -> Unit = {}) : Unit = FIGCAPTION(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class FOOTER(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"footer\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class FORM(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"form\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n var acceptCharset : String\r\n get() = attributeStringString.get(this, \"accept-charset\")\r\n set(newValue) {attributeStringString.set(this, \"accept-charset\", newValue)}\r\n\r\n var action : String\r\n get() = attributeStringString.get(this, \"action\")\r\n set(newValue) {attributeStringString.set(this, \"action\", newValue)}\r\n\r\n var autoComplete : Boolean\r\n get() = attributeBooleanBooleanOnOff.get(this, \"autocomplete\")\r\n set(newValue) {attributeBooleanBooleanOnOff.set(this, \"autocomplete\", newValue)}\r\n\r\n var encType : FormEncType\r\n get() = attributeFormEncTypeEnumFormEncTypeValues.get(this, \"enctype\")\r\n set(newValue) {attributeFormEncTypeEnumFormEncTypeValues.set(this, \"enctype\", newValue)}\r\n\r\n var method : FormMethod\r\n get() = attributeFormMethodEnumFormMethodValues.get(this, \"method\")\r\n set(newValue) {attributeFormMethodEnumFormMethodValues.set(this, \"method\", newValue)}\r\n\r\n var name : String\r\n get() = attributeStringString.get(this, \"name\")\r\n set(newValue) {attributeStringString.set(this, \"name\", newValue)}\r\n\r\n var novalidate : Boolean\r\n get() = attributeBooleanTicker.get(this, \"novalidate\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"novalidate\", newValue)}\r\n\r\n var target : String\r\n get() = attributeStringString.get(this, \"target\")\r\n set(newValue) {attributeStringString.set(this, \"target\", newValue)}\r\n\r\n\r\n}\r\n\r\n","package kotlinx.html\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.impl.*\r\nimport kotlinx.html.attributes.*\r\n\r\n/*******************************************************************************\r\n DO NOT EDIT\r\n This file was generated by module generate\r\n*******************************************************************************/\r\n\r\n@Suppress(\"unused\")\r\nopen class H1(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"h1\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowHeadingPhrasingContent {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class H2(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"h2\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowHeadingPhrasingContent {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class H3(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"h3\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowHeadingPhrasingContent {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class H4(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"h4\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowHeadingPhrasingContent {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class H5(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"h5\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowHeadingPhrasingContent {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class H6(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"h6\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowHeadingPhrasingContent {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class HEAD(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"head\", consumer, initialAttributes, null, false, false), HtmlHeadTag {\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override operator fun Entities.unaryPlus() : Unit {\r\n @Suppress(\"DEPRECATION\") entity(this)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override operator fun String.unaryPlus() : Unit {\r\n @Suppress(\"DEPRECATION\") text(this)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override fun text(s : String) : Unit {\r\n super.text(s)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override fun text(n : Number) : Unit {\r\n super.text(n)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override fun entity(e : Entities) : Unit {\r\n super.entity(e)\r\n }\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class HEADER(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"header\", consumer, initialAttributes, null, false, false), HtmlBlockTag {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class HGROUP(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"hgroup\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowHeadingContent {\r\n\r\n}\r\n/**\r\n * Heading\r\n */\r\n@HtmlTagMarker\r\ninline fun HGROUP.h1(classes : String? = null, crossinline block : H1.() -> Unit = {}) : Unit = H1(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\n/**\r\n * Heading\r\n */\r\n@HtmlTagMarker\r\ninline fun HGROUP.h2(classes : String? = null, crossinline block : H2.() -> Unit = {}) : Unit = H2(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\n/**\r\n * Heading\r\n */\r\n@HtmlTagMarker\r\ninline fun HGROUP.h3(classes : String? = null, crossinline block : H3.() -> Unit = {}) : Unit = H3(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\n/**\r\n * Heading\r\n */\r\n@HtmlTagMarker\r\ninline fun HGROUP.h4(classes : String? = null, crossinline block : H4.() -> Unit = {}) : Unit = H4(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\n/**\r\n * Heading\r\n */\r\n@HtmlTagMarker\r\ninline fun HGROUP.h5(classes : String? = null, crossinline block : H5.() -> Unit = {}) : Unit = H5(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\n/**\r\n * Heading\r\n */\r\n@HtmlTagMarker\r\ninline fun HGROUP.h6(classes : String? = null, crossinline block : H6.() -> Unit = {}) : Unit = H6(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\nval HGROUP.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval HGROUP.asHeadingContent : HeadingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class HR(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"hr\", consumer, initialAttributes, null, false, true), HtmlBlockTag {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class HTML(initialAttributes : Map, override val consumer : TagConsumer<*>, namespace : String? = null) : HTMLTag(\"html\", consumer, initialAttributes, namespace, false, false), CommonAttributeGroupFacade {\r\n var manifest : String\r\n get() = attributeStringString.get(this, \"manifest\")\r\n set(newValue) {attributeStringString.set(this, \"manifest\", newValue)}\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override operator fun Entities.unaryPlus() : Unit {\r\n @Suppress(\"DEPRECATION\") entity(this)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override operator fun String.unaryPlus() : Unit {\r\n @Suppress(\"DEPRECATION\") text(this)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override fun text(s : String) : Unit {\r\n super.text(s)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override fun text(n : Number) : Unit {\r\n super.text(n)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override fun entity(e : Entities) : Unit {\r\n super.entity(e)\r\n }\r\n\r\n}\r\n/**\r\n * Document body\r\n */\r\n@HtmlTagMarker\r\ninline fun HTML.body(classes : String? = null, crossinline block : BODY.() -> Unit = {}) : Unit = BODY(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n\r\n/**\r\n * Document head\r\n */\r\n@HtmlTagMarker\r\ninline fun HTML.head(crossinline block : HEAD.() -> Unit = {}) : Unit = HEAD(emptyMap, consumer).visit(block)\r\n@Deprecated(\"This tag doesn't support content or requires unsafe (try unsafe {})\")\r\n@Suppress(\"DEPRECATION\")\r\n/**\r\n * Document head\r\n */\r\n@HtmlTagMarker\r\nfun HTML.head(content : String = \"\") : Unit = HEAD(emptyMap, consumer).visit({+content})\r\n\r\n\r\n","package kotlinx.html\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.impl.*\r\nimport kotlinx.html.attributes.*\r\n\r\n/*******************************************************************************\r\n DO NOT EDIT\r\n This file was generated by module generate\r\n*******************************************************************************/\r\n\r\n@Suppress(\"unused\")\r\nopen class I(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"i\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval I.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval I.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class IFRAME(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"iframe\", consumer, initialAttributes, null, true, false), CommonAttributeGroupFacadeFlowInteractivePhrasingContent {\r\n var name : String\r\n get() = attributeStringString.get(this, \"name\")\r\n set(newValue) {attributeStringString.set(this, \"name\", newValue)}\r\n\r\n var src : String\r\n get() = attributeStringString.get(this, \"src\")\r\n set(newValue) {attributeStringString.set(this, \"src\", newValue)}\r\n\r\n var height : String\r\n get() = attributeStringString.get(this, \"height\")\r\n set(newValue) {attributeStringString.set(this, \"height\", newValue)}\r\n\r\n var width : String\r\n get() = attributeStringString.get(this, \"width\")\r\n set(newValue) {attributeStringString.set(this, \"width\", newValue)}\r\n\r\n var sandbox : IframeSandbox\r\n get() = attributeIframeSandboxEnumIframeSandboxValues.get(this, \"sandbox\")\r\n set(newValue) {attributeIframeSandboxEnumIframeSandboxValues.set(this, \"sandbox\", newValue)}\r\n\r\n var seamless : Boolean\r\n get() = attributeBooleanTicker.get(this, \"seamless\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"seamless\", newValue)}\r\n\r\n\r\n}\r\nval IFRAME.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval IFRAME.asInteractiveContent : InteractiveContent\r\n get() = this\r\n\r\nval IFRAME.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class IMG(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"img\", consumer, initialAttributes, null, true, true), CommonAttributeGroupFacadeFlowInteractivePhrasingContent {\r\n var alt : String\r\n get() = attributeStringString.get(this, \"alt\")\r\n set(newValue) {attributeStringString.set(this, \"alt\", newValue)}\r\n\r\n var src : String\r\n get() = attributeStringString.get(this, \"src\")\r\n set(newValue) {attributeStringString.set(this, \"src\", newValue)}\r\n\r\n var height : String\r\n get() = attributeStringString.get(this, \"height\")\r\n set(newValue) {attributeStringString.set(this, \"height\", newValue)}\r\n\r\n var width : String\r\n get() = attributeStringString.get(this, \"width\")\r\n set(newValue) {attributeStringString.set(this, \"width\", newValue)}\r\n\r\n var usemap : String\r\n get() = attributeStringString.get(this, \"usemap\")\r\n set(newValue) {attributeStringString.set(this, \"usemap\", newValue)}\r\n\r\n var ismap : Boolean\r\n get() = attributeBooleanTicker.get(this, \"ismap\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"ismap\", newValue)}\r\n\r\n\r\n}\r\nval IMG.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval IMG.asInteractiveContent : InteractiveContent\r\n get() = this\r\n\r\nval IMG.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class INPUT(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"input\", consumer, initialAttributes, null, true, true), CommonAttributeGroupFacadeFlowInteractivePhrasingContent {\r\n var type : InputType\r\n get() = attributeInputTypeEnumInputTypeValues.get(this, \"type\")\r\n set(newValue) {attributeInputTypeEnumInputTypeValues.set(this, \"type\", newValue)}\r\n\r\n var accept : String\r\n get() = attributeStringString.get(this, \"accept\")\r\n set(newValue) {attributeStringString.set(this, \"accept\", newValue)}\r\n\r\n var alt : String\r\n get() = attributeStringString.get(this, \"alt\")\r\n set(newValue) {attributeStringString.set(this, \"alt\", newValue)}\r\n\r\n var autoFocus : Boolean\r\n get() = attributeBooleanTicker.get(this, \"autofocus\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"autofocus\", newValue)}\r\n\r\n var autoComplete : Boolean\r\n get() = attributeBooleanBooleanOnOff.get(this, \"autocomplete\")\r\n set(newValue) {attributeBooleanBooleanOnOff.set(this, \"autocomplete\", newValue)}\r\n\r\n var checked : Boolean\r\n get() = attributeBooleanTicker.get(this, \"checked\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"checked\", newValue)}\r\n\r\n var disabled : Boolean\r\n get() = attributeBooleanTicker.get(this, \"disabled\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"disabled\", newValue)}\r\n\r\n var form : String\r\n get() = attributeStringString.get(this, \"form\")\r\n set(newValue) {attributeStringString.set(this, \"form\", newValue)}\r\n\r\n var formAction : String\r\n get() = attributeStringString.get(this, \"formaction\")\r\n set(newValue) {attributeStringString.set(this, \"formaction\", newValue)}\r\n\r\n var formEncType : InputFormEncType\r\n get() = attributeInputFormEncTypeEnumInputFormEncTypeValues.get(this, \"formenctype\")\r\n set(newValue) {attributeInputFormEncTypeEnumInputFormEncTypeValues.set(this, \"formenctype\", newValue)}\r\n\r\n var formMethod : InputFormMethod\r\n get() = attributeInputFormMethodEnumInputFormMethodValues.get(this, \"formmethod\")\r\n set(newValue) {attributeInputFormMethodEnumInputFormMethodValues.set(this, \"formmethod\", newValue)}\r\n\r\n var formNovalidate : Boolean\r\n get() = attributeBooleanTicker.get(this, \"formnovalidate\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"formnovalidate\", newValue)}\r\n\r\n var formTarget : String\r\n get() = attributeStringString.get(this, \"formtarget\")\r\n set(newValue) {attributeStringString.set(this, \"formtarget\", newValue)}\r\n\r\n var height : String\r\n get() = attributeStringString.get(this, \"height\")\r\n set(newValue) {attributeStringString.set(this, \"height\", newValue)}\r\n\r\n var list : String\r\n get() = attributeStringString.get(this, \"list\")\r\n set(newValue) {attributeStringString.set(this, \"list\", newValue)}\r\n\r\n var max : String\r\n get() = attributeStringString.get(this, \"max\")\r\n set(newValue) {attributeStringString.set(this, \"max\", newValue)}\r\n\r\n var maxLength : String\r\n get() = attributeStringString.get(this, \"maxlength\")\r\n set(newValue) {attributeStringString.set(this, \"maxlength\", newValue)}\r\n\r\n var minLength : String\r\n get() = attributeStringString.get(this, \"minlength\")\r\n set(newValue) {attributeStringString.set(this, \"minlength\", newValue)}\r\n\r\n var min : String\r\n get() = attributeStringString.get(this, \"min\")\r\n set(newValue) {attributeStringString.set(this, \"min\", newValue)}\r\n\r\n var multiple : Boolean\r\n get() = attributeBooleanTicker.get(this, \"multiple\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"multiple\", newValue)}\r\n\r\n var pattern : String\r\n get() = attributeStringString.get(this, \"pattern\")\r\n set(newValue) {attributeStringString.set(this, \"pattern\", newValue)}\r\n\r\n var placeholder : String\r\n get() = attributeStringString.get(this, \"placeholder\")\r\n set(newValue) {attributeStringString.set(this, \"placeholder\", newValue)}\r\n\r\n var readonly : Boolean\r\n get() = attributeBooleanTicker.get(this, \"readonly\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"readonly\", newValue)}\r\n\r\n var required : Boolean\r\n get() = attributeBooleanTicker.get(this, \"required\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"required\", newValue)}\r\n\r\n var size : String\r\n get() = attributeStringString.get(this, \"size\")\r\n set(newValue) {attributeStringString.set(this, \"size\", newValue)}\r\n\r\n var src : String\r\n get() = attributeStringString.get(this, \"src\")\r\n set(newValue) {attributeStringString.set(this, \"src\", newValue)}\r\n\r\n var step : String\r\n get() = attributeStringString.get(this, \"step\")\r\n set(newValue) {attributeStringString.set(this, \"step\", newValue)}\r\n\r\n var width : String\r\n get() = attributeStringString.get(this, \"width\")\r\n set(newValue) {attributeStringString.set(this, \"width\", newValue)}\r\n\r\n var files : String\r\n get() = attributeStringString.get(this, \"files\")\r\n set(newValue) {attributeStringString.set(this, \"files\", newValue)}\r\n\r\n var value : String\r\n get() = attributeStringString.get(this, \"value\")\r\n set(newValue) {attributeStringString.set(this, \"value\", newValue)}\r\n\r\n var name : String\r\n get() = attributeStringString.get(this, \"name\")\r\n set(newValue) {attributeStringString.set(this, \"name\", newValue)}\r\n\r\n\r\n}\r\nval INPUT.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval INPUT.asInteractiveContent : InteractiveContent\r\n get() = this\r\n\r\nval INPUT.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class INS(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"ins\", consumer, initialAttributes, null, false, false), HtmlBlockInlineTag {\r\n var cite : String\r\n get() = attributeStringString.get(this, \"cite\")\r\n set(newValue) {attributeStringString.set(this, \"cite\", newValue)}\r\n\r\n var dateTime : String\r\n get() = attributeStringString.get(this, \"datetime\")\r\n set(newValue) {attributeStringString.set(this, \"datetime\", newValue)}\r\n\r\n\r\n}\r\nval INS.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval INS.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n","package kotlinx.html\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.impl.*\r\nimport kotlinx.html.attributes.*\r\n\r\n/*******************************************************************************\r\n DO NOT EDIT\r\n This file was generated by module generate\r\n*******************************************************************************/\r\n\r\n@Suppress(\"unused\")\r\nopen class NAV(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"nav\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowSectioningContent {\r\n\r\n}\r\nval NAV.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval NAV.asSectioningContent : SectioningContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class NOSCRIPT(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"noscript\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowMetaDataPhrasingContent {\r\n\r\n}\r\nval NOSCRIPT.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval NOSCRIPT.asMetaDataContent : MetaDataContent\r\n get() = this\r\n\r\nval NOSCRIPT.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n","package kotlinx.html\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.impl.*\r\nimport kotlinx.html.attributes.*\r\n\r\n/*******************************************************************************\r\n DO NOT EDIT\r\n This file was generated by module generate\r\n*******************************************************************************/\r\n\r\n@Suppress(\"unused\")\r\nopen class SAMP(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"samp\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval SAMP.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval SAMP.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class SCRIPT(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"script\", consumer, initialAttributes, null, false, false), FlowMetaDataPhrasingContent {\r\n var charset : String\r\n get() = attributeStringString.get(this, \"charset\")\r\n set(newValue) {attributeStringString.set(this, \"charset\", newValue)}\r\n\r\n var type : String\r\n get() = attributeStringString.get(this, \"type\")\r\n set(newValue) {attributeStringString.set(this, \"type\", newValue)}\r\n\r\n var src : String\r\n get() = attributeStringString.get(this, \"src\")\r\n set(newValue) {attributeStringString.set(this, \"src\", newValue)}\r\n\r\n var defer : Boolean\r\n get() = attributeBooleanTicker.get(this, \"defer\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"defer\", newValue)}\r\n\r\n var async : Boolean\r\n get() = attributeBooleanTicker.get(this, \"async\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"async\", newValue)}\r\n\r\n var nonce : String\r\n get() = attributeStringString.get(this, \"nonce\")\r\n set(newValue) {attributeStringString.set(this, \"nonce\", newValue)}\r\n\r\n var integrity : String\r\n get() = attributeStringString.get(this, \"integrity\")\r\n set(newValue) {attributeStringString.set(this, \"integrity\", newValue)}\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override operator fun Entities.unaryPlus() : Unit {\r\n @Suppress(\"DEPRECATION\") entity(this)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override operator fun String.unaryPlus() : Unit {\r\n @Suppress(\"DEPRECATION\") text(this)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override fun text(s : String) : Unit {\r\n super.text(s)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override fun text(n : Number) : Unit {\r\n super.text(n)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override fun entity(e : Entities) : Unit {\r\n super.entity(e)\r\n }\r\n\r\n}\r\nval SCRIPT.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval SCRIPT.asMetaDataContent : MetaDataContent\r\n get() = this\r\n\r\nval SCRIPT.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class SECTION(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"section\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowSectioningContent {\r\n\r\n}\r\nval SECTION.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval SECTION.asSectioningContent : SectioningContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class SELECT(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"select\", consumer, initialAttributes, null, true, false), CommonAttributeGroupFacadeFlowInteractivePhrasingContent {\r\n var autoFocus : Boolean\r\n get() = attributeBooleanTicker.get(this, \"autofocus\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"autofocus\", newValue)}\r\n\r\n var disabled : Boolean\r\n get() = attributeBooleanTicker.get(this, \"disabled\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"disabled\", newValue)}\r\n\r\n var form : String\r\n get() = attributeStringString.get(this, \"form\")\r\n set(newValue) {attributeStringString.set(this, \"form\", newValue)}\r\n\r\n var multiple : Boolean\r\n get() = attributeBooleanTicker.get(this, \"multiple\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"multiple\", newValue)}\r\n\r\n var name : String\r\n get() = attributeStringString.get(this, \"name\")\r\n set(newValue) {attributeStringString.set(this, \"name\", newValue)}\r\n\r\n var size : String\r\n get() = attributeStringString.get(this, \"size\")\r\n set(newValue) {attributeStringString.set(this, \"size\", newValue)}\r\n\r\n var required : Boolean\r\n get() = attributeBooleanTicker.get(this, \"required\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"required\", newValue)}\r\n\r\n\r\n}\r\n/**\r\n * Selectable choice\r\n */\r\n@HtmlTagMarker\r\ninline fun SELECT.option(classes : String? = null, crossinline block : OPTION.() -> Unit = {}) : Unit = OPTION(attributesMapOf(\"class\", classes), consumer).visit(block)\r\n/**\r\n * Selectable choice\r\n */\r\n@HtmlTagMarker\r\nfun SELECT.option(classes : String? = null, content : String = \"\") : Unit = OPTION(attributesMapOf(\"class\", classes), consumer).visit({+content})\r\n\r\n/**\r\n * Option group\r\n */\r\n@HtmlTagMarker\r\ninline fun SELECT.optGroup(label : String? = null, classes : String? = null, crossinline block : OPTGROUP.() -> Unit = {}) : Unit = OPTGROUP(attributesMapOf(\"label\", label,\"class\", classes), consumer).visit(block)\r\n\r\nval SELECT.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval SELECT.asInteractiveContent : InteractiveContent\r\n get() = this\r\n\r\nval SELECT.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class SMALL(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"small\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval SMALL.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval SMALL.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class SOURCE(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"source\", consumer, initialAttributes, null, true, true), CommonAttributeGroupFacade {\r\n var src : String\r\n get() = attributeStringString.get(this, \"src\")\r\n set(newValue) {attributeStringString.set(this, \"src\", newValue)}\r\n\r\n var type : String\r\n get() = attributeStringString.get(this, \"type\")\r\n set(newValue) {attributeStringString.set(this, \"type\", newValue)}\r\n\r\n var media : String\r\n get() = attributeStringString.get(this, \"media\")\r\n set(newValue) {attributeStringString.set(this, \"media\", newValue)}\r\n\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class SPAN(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"span\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval SPAN.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval SPAN.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class STRONG(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"strong\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval STRONG.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval STRONG.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class STYLE(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"style\", consumer, initialAttributes, null, false, false), CommonAttributeGroupFacadeFlowMetaDataContent {\r\n var type : String\r\n get() = attributeStringString.get(this, \"type\")\r\n set(newValue) {attributeStringString.set(this, \"type\", newValue)}\r\n\r\n var media : String\r\n get() = attributeStringString.get(this, \"media\")\r\n set(newValue) {attributeStringString.set(this, \"media\", newValue)}\r\n\r\n var scoped : Boolean\r\n get() = attributeBooleanTicker.get(this, \"scoped\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"scoped\", newValue)}\r\n\r\n var nonce : String\r\n get() = attributeStringString.get(this, \"nonce\")\r\n set(newValue) {attributeStringString.set(this, \"nonce\", newValue)}\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override operator fun Entities.unaryPlus() : Unit {\r\n @Suppress(\"DEPRECATION\") entity(this)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override operator fun String.unaryPlus() : Unit {\r\n @Suppress(\"DEPRECATION\") text(this)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override fun text(s : String) : Unit {\r\n super.text(s)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override fun text(n : Number) : Unit {\r\n super.text(n)\r\n }\r\n\r\n @Deprecated(\"This tag most likely doesn't support text content or requires unsafe content (try unsafe {}\")\r\n override fun entity(e : Entities) : Unit {\r\n super.entity(e)\r\n }\r\n\r\n}\r\nval STYLE.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval STYLE.asMetaDataContent : MetaDataContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class SUB(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"sub\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval SUB.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval SUB.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class SUMMARY(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"summary\", consumer, initialAttributes, null, true, false), CommonAttributeGroupFacadeFlowHeadingPhrasingContent {\r\n\r\n}\r\n\r\n@Suppress(\"unused\")\r\nopen class SUP(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"sup\", consumer, initialAttributes, null, true, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval SUP.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval SUP.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n@Suppress(\"unused\")\r\nopen class SVG(initialAttributes : Map, override val consumer : TagConsumer<*>) : HTMLTag(\"svg\", consumer, initialAttributes, \"http://www.w3.org/2000/svg\", false, false), HtmlBlockInlineTag {\r\n\r\n}\r\nval SVG.asFlowContent : FlowContent\r\n get() = this\r\n\r\nval SVG.asPhrasingContent : PhrasingContent\r\n get() = this\r\n\r\n\r\n","package kotlinx.html\r\n\r\nimport kotlinx.html.impl.*\r\n\r\nopen class HTMLTag(\r\n override val tagName : String,\r\n override val consumer : TagConsumer<*>,\r\n initialAttributes : Map,\r\n override val namespace : String? = null,\r\n override val inlineTag: Boolean,\r\n override val emptyTag: Boolean) : Tag {\r\n\r\n override val attributes : DelegatingMap = DelegatingMap(initialAttributes, this) { consumer }\r\n\r\n override val attributesEntries: Collection>\r\n get() = attributes.immutableEntries\r\n}\r\n","package kotlinx.html.stream\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.consumers.*\r\nimport org.w3c.dom.events.*\r\n\r\nclass HTMLStreamBuilder(val out : O, val prettyPrint : Boolean, val xhtmlCompatible: Boolean) : TagConsumer {\r\n private var level = 0\r\n private var ln = true\r\n\r\n override fun onTagStart(tag: Tag) {\r\n if (prettyPrint && !tag.inlineTag) {\r\n indent()\r\n }\r\n level++\r\n\r\n out.append(\"<\")\r\n out.append(tag.tagName)\r\n\r\n if (tag.namespace != null) {\r\n out.append(\" xmlns=\\\"\")\r\n out.append(tag.namespace)\r\n out.append(\"\\\"\")\r\n }\r\n\r\n if (tag.attributes.isNotEmpty()) {\r\n tag.attributesEntries.forEachIndexed { _, e ->\r\n if (!e.key.isValidXmlAttributeName()) {\r\n throw IllegalArgumentException(\"Tag ${tag.tagName} has invalid attribute name ${e.key}\")\r\n }\r\n\r\n out.append(' ')\r\n out.append(e.key)\r\n out.append(\"=\\\"\")\r\n out.escapeAppend(e.value)\r\n out.append('\\\"')\r\n }\r\n }\r\n\r\n if (xhtmlCompatible && tag.emptyTag) {\r\n out.append(\"/\")\r\n }\r\n\r\n out.append(\">\")\r\n ln = false\r\n }\r\n\r\n override fun onTagAttributeChange(tag : Tag, attribute: String, value: String?) {\r\n throw UnsupportedOperationException(\"tag attribute can't be changed as it was already written to the stream. Use with DelayedConsumer to be able to modify attributes\")\r\n }\r\n\r\n override fun onTagEvent(tag: Tag, event: String, value: (Event) -> Unit) {\r\n throw UnsupportedOperationException(\"you can't assign lambda event handler when building text\")\r\n }\r\n\r\n override fun onTagEnd(tag: Tag) {\r\n level--\r\n if (ln) {\r\n indent()\r\n }\r\n\r\n if (!tag.emptyTag) {\r\n out.append(\"\")\r\n }\r\n\r\n if (prettyPrint && !tag.inlineTag) {\r\n appendln()\r\n }\r\n }\r\n\r\n override fun onTagContent(content: CharSequence) {\r\n out.escapeAppend(content)\r\n ln = false\r\n }\r\n\r\n override fun onTagContentEntity(entity: Entities) {\r\n out.append(entity.text)\r\n ln = false\r\n }\r\n\r\n override fun finalize(): O = out\r\n\r\n override fun onTagContentUnsafe(block: Unsafe.() -> Unit) {\r\n UnsafeImpl.block()\r\n }\r\n\r\n override fun onTagComment(content: CharSequence) {\r\n if (prettyPrint) {\r\n indent()\r\n }\r\n\r\n out.append(\"\")\r\n\r\n ln = false\r\n }\r\n\r\n val UnsafeImpl = object : Unsafe {\r\n override operator fun String.unaryPlus() {\r\n out.append(this)\r\n }\r\n }\r\n\r\n private fun appendln() {\r\n if (prettyPrint && !ln) {\r\n out.append(\"\\n\")\r\n ln = true\r\n }\r\n }\r\n\r\n private fun indent() {\r\n if (prettyPrint) {\r\n if (!ln) {\r\n out.append(\"\\n\")\r\n }\r\n var remaining = level\r\n while (remaining >= 4) {\r\n out.append(\" \")\r\n remaining -= 4\r\n }\r\n while (remaining >= 2) {\r\n out.append(\" \")\r\n remaining -= 2\r\n }\r\n if (remaining > 0) {\r\n out.append(\" \")\r\n }\r\n ln = false\r\n }\r\n }\r\n}\r\n\r\nprivate val AVERAGE_PAGE_SIZE = 32768\r\n\r\nfun createHTML(prettyPrint: Boolean = true, xhtmlCompatible: Boolean = false): TagConsumer =\r\n HTMLStreamBuilder(StringBuilder(AVERAGE_PAGE_SIZE), prettyPrint, xhtmlCompatible).onFinalizeMap { sb, _ -> sb.toString() }.delayed()\r\n\r\nfun O.appendHTML(prettyPrint: Boolean = true, xhtmlCompatible: Boolean = false): TagConsumer =\r\n HTMLStreamBuilder(this, prettyPrint, xhtmlCompatible).delayed()\r\n\r\n@Deprecated(\"Should be resolved to the previous implementation\", level = DeprecationLevel.HIDDEN)\r\nfun O.appendHTML(prettyPrint: Boolean = true): TagConsumer =\r\n appendHTML(prettyPrint, false)\r\n\r\nprivate val escapeMap = mapOf(\r\n '<' to \"<\",\r\n '>' to \">\",\r\n '&' to \"&\",\r\n '\\\"' to \""\"\r\n).let { mappings ->\r\n val maxCode = mappings.keys.map { it.toInt() }.max() ?: -1\r\n\r\n Array(maxCode + 1) { mappings[it.toChar()] }\r\n}\r\n\r\nprivate val letterRangeLowerCase = 'a' .. 'z'\r\nprivate val letterRangeUpperCase = 'A' .. 'Z'\r\nprivate val digitRange = '0' .. '9'\r\n\r\nprivate fun Char._isLetter() = this in letterRangeLowerCase || this in letterRangeUpperCase\r\nprivate fun Char._isDigit() = this in digitRange\r\n\r\nprivate fun String.isValidXmlAttributeName() =\r\n !startsWithXml()\r\n && this.isNotEmpty()\r\n && (this[0]._isLetter() || this[0] == '_')\r\n && this.all { it._isLetter() || it._isDigit() || it in \"._:-\" }\r\n\r\nprivate fun String.startsWithXml() = length >= 3\r\n && (this[0].let { it == 'x' || it == 'X' })\r\n && (this[1].let { it == 'm' || it == 'M' })\r\n && (this[2].let { it == 'l' || it == 'L' })\r\n\r\nprivate fun Appendable.escapeAppend(s : CharSequence) {\r\n var lastIndex = 0\r\n val mappings = escapeMap\r\n val size = mappings.size\r\n\r\n for (idx in 0 .. s.length - 1) {\r\n val ch = s[idx].toInt()\r\n if (ch < 0 || ch >= size) continue\r\n val escape = mappings[ch]\r\n if (escape != null) {\r\n append(s.substring(lastIndex, idx))\r\n append(escape)\r\n lastIndex = idx + 1\r\n }\r\n }\r\n\r\n if (lastIndex < s.length) {\r\n append(s.substring(lastIndex, s.length))\r\n }\r\n}\r\n\r\nprivate fun Appendable.escapeComment(s: CharSequence) {\r\n var start = 0\r\n while (start < s.length) {\r\n val index = s.indexOf(\"--\")\r\n if (index == -1) {\r\n if (start == 0) {\r\n append(s)\r\n } else {\r\n append(s, start, s.length)\r\n }\r\n break\r\n }\r\n\r\n append(s, start, index)\r\n start += 2\r\n }\r\n}","package kotlinx.html.dom\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.consumers.*\r\nimport org.w3c.dom.*\r\nimport org.w3c.dom.events.*\r\n\r\n@Suppress(\"NOTHING_TO_INLINE\")\r\nprivate inline fun HTMLElement.setEvent(name: String, noinline callback : (Event) -> Unit) : Unit {\r\n asDynamic()[name] = callback\r\n}\r\n\r\nclass JSDOMBuilder(val document : Document) : TagConsumer {\r\n private val path = arrayListOf()\r\n private var lastLeaved : HTMLElement? = null\r\n\r\n override fun onTagStart(tag: Tag) {\r\n val element: HTMLElement = when {\r\n tag.namespace != null -> document.createElementNS(tag.namespace!!, tag.tagName).asDynamic()\r\n else -> document.createElement(tag.tagName) as HTMLElement\r\n }\r\n\r\n tag.attributesEntries.forEach {\r\n element.setAttribute(it.key, it.value)\r\n }\r\n\r\n if (path.isNotEmpty()) {\r\n path.last().appendChild(element)\r\n }\r\n\r\n path.add(element)\r\n }\r\n\r\n override fun onTagAttributeChange(tag: Tag, attribute: String, value: String?) {\r\n when {\r\n path.isEmpty() -> throw IllegalStateException(\"No current tag\")\r\n path.last().tagName.toLowerCase() != tag.tagName.toLowerCase() -> throw IllegalStateException(\"Wrong current tag\")\r\n else -> path.last().let { node ->\r\n if (value == null) {\r\n node.removeAttribute(attribute)\r\n } else {\r\n node.setAttribute(attribute, value)\r\n }\r\n }\r\n }\r\n }\r\n\r\n override fun onTagEvent(tag: Tag, event: String, value: (Event) -> Unit) {\r\n when {\r\n path.isEmpty() -> throw IllegalStateException(\"No current tag\")\r\n path.last().tagName.toLowerCase() != tag.tagName.toLowerCase() -> throw IllegalStateException(\"Wrong current tag\")\r\n else -> path.last().setEvent(event, value)\r\n }\r\n }\r\n\r\n override fun onTagEnd(tag: Tag) {\r\n if (path.isEmpty() || path.last().tagName.toLowerCase() != tag.tagName.toLowerCase()) {\r\n throw IllegalStateException(\"We haven't entered tag ${tag.tagName} but trying to leave\")\r\n }\r\n\r\n lastLeaved = path.removeAt(path.lastIndex)\r\n }\r\n\r\n override fun onTagContent(content: CharSequence) {\r\n if (path.isEmpty()) {\r\n throw IllegalStateException(\"No current DOM node\")\r\n }\r\n\r\n path.last().appendChild(document.createTextNode(content.toString()))\r\n }\r\n\r\n override fun onTagContentEntity(entity: Entities) {\r\n if (path.isEmpty()) {\r\n throw IllegalStateException(\"No current DOM node\")\r\n }\r\n\r\n // stupid hack as browsers doesn't support createEntityReference\r\n val s = document.createElement(\"span\") as HTMLElement\r\n s.innerHTML = entity.text\r\n path.last().appendChild(s.childNodes.asList().filter { it.nodeType == Node.TEXT_NODE }.first())\r\n\r\n // other solution would be\r\n// pathLast().innerHTML += entity.text\r\n }\r\n\r\n override fun onTagContentUnsafe(block: Unsafe.() -> Unit) {\r\n with(DefaultUnsafe()) {\r\n block()\r\n\r\n path.last().innerHTML += toString()\r\n }\r\n }\r\n\r\n\r\n override fun onTagComment(content: CharSequence) {\r\n if (path.isEmpty()) {\r\n throw IllegalStateException(\"No current DOM node\")\r\n }\r\n\r\n path.last().appendChild(document.createComment(content.toString()))\r\n }\r\n\r\n override fun finalize(): R = lastLeaved?.asR() ?: throw IllegalStateException(\"We can't finalize as there was no tags\")\r\n\r\n @Suppress(\"UNCHECKED_CAST\")\r\n private fun HTMLElement.asR(): R = this.asDynamic()\r\n\r\n}\r\n\r\n\r\n fun Document.createTree() : TagConsumer = JSDOMBuilder(this)\r\n val Document.create : TagConsumer\r\n get() = JSDOMBuilder(this)\r\n\r\nfun Node.append(block: TagConsumer.() -> Unit): List =\r\n ArrayList().let { result ->\r\n ownerDocumentExt.createTree().onFinalize { it, partial ->\r\n if (!partial) {\r\n result.add(it); appendChild(it)\r\n }\r\n }.block()\r\n\r\n result\r\n }\r\n\r\nfun Node.prepend(block: TagConsumer.() -> Unit): List =\r\n ArrayList().let { result ->\r\n ownerDocumentExt.createTree().onFinalize { it, partial ->\r\n if (!partial) {\r\n result.add(it)\r\n insertBefore(it, firstChild)\r\n }\r\n }.block()\r\n\r\n result\r\n }\r\n\r\nval HTMLElement.append: TagConsumer\r\n get() = ownerDocumentExt.createTree().onFinalize { element, partial ->\r\n if (!partial) {\r\n this@append.appendChild(element)\r\n }\r\n }\r\n\r\nval HTMLElement.prepend: TagConsumer\r\n get() = ownerDocumentExt.createTree().onFinalize { element, partial ->\r\n if (!partial) {\r\n this@prepend.insertBefore(element, this@prepend.firstChild)\r\n }\r\n }\r\n\r\nprivate val Node.ownerDocumentExt: Document\r\n get() = when {\r\n this is Document -> this\r\n else -> ownerDocument ?: throw IllegalStateException(\"Node has no ownerDocument\")\r\n }\r\n","package kotlinx.html\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.impl.*\r\n\r\n/*******************************************************************************\r\n DO NOT EDIT\r\n This file was generated by module generate\r\n*******************************************************************************/\r\n\r\ninterface CommonAttributeGroupFacade : Tag {\r\n}\r\nvar CommonAttributeGroupFacade.enableTheming : Boolean\r\n get() = attributeBooleanBoolean.get(this, \"EnableTheming\")\r\n set(newValue) {attributeBooleanBoolean.set(this, \"EnableTheming\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.enableViewState : Boolean\r\n get() = attributeBooleanBoolean.get(this, \"EnableViewState\")\r\n set(newValue) {attributeBooleanBoolean.set(this, \"EnableViewState\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.skinID : String\r\n get() = attributeStringString.get(this, \"SkinID\")\r\n set(newValue) {attributeStringString.set(this, \"SkinID\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.visible : Boolean\r\n get() = attributeBooleanBoolean.get(this, \"Visible\")\r\n set(newValue) {attributeBooleanBoolean.set(this, \"Visible\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.accessKey : String\r\n get() = attributeStringString.get(this, \"accesskey\")\r\n set(newValue) {attributeStringString.set(this, \"accesskey\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.classes : Set\r\n get() = attributeSetStringStringSet.get(this, \"class\")\r\n set(newValue) {attributeSetStringStringSet.set(this, \"class\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.contentEditable : Boolean\r\n get() = attributeBooleanBoolean.get(this, \"contenteditable\")\r\n set(newValue) {attributeBooleanBoolean.set(this, \"contenteditable\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.contextMenu : String\r\n get() = attributeStringString.get(this, \"contextmenu\")\r\n set(newValue) {attributeStringString.set(this, \"contextmenu\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.dataFolderName : String\r\n get() = attributeStringString.get(this, \"data-FolderName\")\r\n set(newValue) {attributeStringString.set(this, \"data-FolderName\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.dataMsgId : String\r\n get() = attributeStringString.get(this, \"data-MsgId\")\r\n set(newValue) {attributeStringString.set(this, \"data-MsgId\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.dir : Dir\r\n get() = attributeDirEnumDirValues.get(this, \"dir\")\r\n set(newValue) {attributeDirEnumDirValues.set(this, \"dir\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.draggable : Draggable\r\n get() = attributeDraggableEnumDraggableValues.get(this, \"draggable\")\r\n set(newValue) {attributeDraggableEnumDraggableValues.set(this, \"draggable\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.hidden : Boolean\r\n get() = attributeBooleanTicker.get(this, \"hidden\")\r\n set(newValue) {attributeBooleanTicker.set(this, \"hidden\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.id : String\r\n get() = attributeStringString.get(this, \"id\")\r\n set(newValue) {attributeStringString.set(this, \"id\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.itemProp : String\r\n get() = attributeStringString.get(this, \"itemprop\")\r\n set(newValue) {attributeStringString.set(this, \"itemprop\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.lang : String\r\n get() = attributeStringString.get(this, \"lang\")\r\n set(newValue) {attributeStringString.set(this, \"lang\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onAbort : String\r\n get() = attributeStringString.get(this, \"onabort\")\r\n set(newValue) {attributeStringString.set(this, \"onabort\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onBlur : String\r\n get() = attributeStringString.get(this, \"onblur\")\r\n set(newValue) {attributeStringString.set(this, \"onblur\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onCanPlay : String\r\n get() = attributeStringString.get(this, \"oncanplay\")\r\n set(newValue) {attributeStringString.set(this, \"oncanplay\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onCanPlayThrough : String\r\n get() = attributeStringString.get(this, \"oncanplaythrough\")\r\n set(newValue) {attributeStringString.set(this, \"oncanplaythrough\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onChange : String\r\n get() = attributeStringString.get(this, \"onchange\")\r\n set(newValue) {attributeStringString.set(this, \"onchange\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onClick : String\r\n get() = attributeStringString.get(this, \"onclick\")\r\n set(newValue) {attributeStringString.set(this, \"onclick\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onContextMenu : String\r\n get() = attributeStringString.get(this, \"oncontextmenu\")\r\n set(newValue) {attributeStringString.set(this, \"oncontextmenu\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDoubleClick : String\r\n get() = attributeStringString.get(this, \"ondblclick\")\r\n set(newValue) {attributeStringString.set(this, \"ondblclick\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDrag : String\r\n get() = attributeStringString.get(this, \"ondrag\")\r\n set(newValue) {attributeStringString.set(this, \"ondrag\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDragEnd : String\r\n get() = attributeStringString.get(this, \"ondragend\")\r\n set(newValue) {attributeStringString.set(this, \"ondragend\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDragEnter : String\r\n get() = attributeStringString.get(this, \"ondragenter\")\r\n set(newValue) {attributeStringString.set(this, \"ondragenter\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDragLeave : String\r\n get() = attributeStringString.get(this, \"ondragleave\")\r\n set(newValue) {attributeStringString.set(this, \"ondragleave\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDragOver : String\r\n get() = attributeStringString.get(this, \"ondragover\")\r\n set(newValue) {attributeStringString.set(this, \"ondragover\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDragStart : String\r\n get() = attributeStringString.get(this, \"ondragstart\")\r\n set(newValue) {attributeStringString.set(this, \"ondragstart\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDrop : String\r\n get() = attributeStringString.get(this, \"ondrop\")\r\n set(newValue) {attributeStringString.set(this, \"ondrop\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDurationChange : String\r\n get() = attributeStringString.get(this, \"ondurationchange\")\r\n set(newValue) {attributeStringString.set(this, \"ondurationchange\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onEmptied : String\r\n get() = attributeStringString.get(this, \"onemptied\")\r\n set(newValue) {attributeStringString.set(this, \"onemptied\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onEnded : String\r\n get() = attributeStringString.get(this, \"onended\")\r\n set(newValue) {attributeStringString.set(this, \"onended\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onError : String\r\n get() = attributeStringString.get(this, \"onerror\")\r\n set(newValue) {attributeStringString.set(this, \"onerror\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onFocus : String\r\n get() = attributeStringString.get(this, \"onfocus\")\r\n set(newValue) {attributeStringString.set(this, \"onfocus\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onFocusIn : String\r\n get() = attributeStringString.get(this, \"onfocusin\")\r\n set(newValue) {attributeStringString.set(this, \"onfocusin\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onFocusOut : String\r\n get() = attributeStringString.get(this, \"onfocusout\")\r\n set(newValue) {attributeStringString.set(this, \"onfocusout\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onFormChange : String\r\n get() = attributeStringString.get(this, \"onformchange\")\r\n set(newValue) {attributeStringString.set(this, \"onformchange\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onFormInput : String\r\n get() = attributeStringString.get(this, \"onforminput\")\r\n set(newValue) {attributeStringString.set(this, \"onforminput\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onInput : String\r\n get() = attributeStringString.get(this, \"oninput\")\r\n set(newValue) {attributeStringString.set(this, \"oninput\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onInvalid : String\r\n get() = attributeStringString.get(this, \"oninvalid\")\r\n set(newValue) {attributeStringString.set(this, \"oninvalid\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onKeyDown : String\r\n get() = attributeStringString.get(this, \"onkeydown\")\r\n set(newValue) {attributeStringString.set(this, \"onkeydown\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onKeyPress : String\r\n get() = attributeStringString.get(this, \"onkeypress\")\r\n set(newValue) {attributeStringString.set(this, \"onkeypress\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onKeyUp : String\r\n get() = attributeStringString.get(this, \"onkeyup\")\r\n set(newValue) {attributeStringString.set(this, \"onkeyup\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onLoad : String\r\n get() = attributeStringString.get(this, \"onload\")\r\n set(newValue) {attributeStringString.set(this, \"onload\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onLoadedData : String\r\n get() = attributeStringString.get(this, \"onloadeddata\")\r\n set(newValue) {attributeStringString.set(this, \"onloadeddata\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onLoadedMetaData : String\r\n get() = attributeStringString.get(this, \"onloadedmetadata\")\r\n set(newValue) {attributeStringString.set(this, \"onloadedmetadata\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onLoadStart : String\r\n get() = attributeStringString.get(this, \"onloadstart\")\r\n set(newValue) {attributeStringString.set(this, \"onloadstart\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onMouseDown : String\r\n get() = attributeStringString.get(this, \"onmousedown\")\r\n set(newValue) {attributeStringString.set(this, \"onmousedown\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onMouseMove : String\r\n get() = attributeStringString.get(this, \"onmousemove\")\r\n set(newValue) {attributeStringString.set(this, \"onmousemove\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onMouseOut : String\r\n get() = attributeStringString.get(this, \"onmouseout\")\r\n set(newValue) {attributeStringString.set(this, \"onmouseout\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onMouseOver : String\r\n get() = attributeStringString.get(this, \"onmouseover\")\r\n set(newValue) {attributeStringString.set(this, \"onmouseover\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onMouseUp : String\r\n get() = attributeStringString.get(this, \"onmouseup\")\r\n set(newValue) {attributeStringString.set(this, \"onmouseup\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onMouseWheel : String\r\n get() = attributeStringString.get(this, \"onmousewheel\")\r\n set(newValue) {attributeStringString.set(this, \"onmousewheel\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onPause : String\r\n get() = attributeStringString.get(this, \"onpause\")\r\n set(newValue) {attributeStringString.set(this, \"onpause\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onPlay : String\r\n get() = attributeStringString.get(this, \"onplay\")\r\n set(newValue) {attributeStringString.set(this, \"onplay\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onPlaying : String\r\n get() = attributeStringString.get(this, \"onplaying\")\r\n set(newValue) {attributeStringString.set(this, \"onplaying\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onProgress : String\r\n get() = attributeStringString.get(this, \"onprogress\")\r\n set(newValue) {attributeStringString.set(this, \"onprogress\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onRateChange : String\r\n get() = attributeStringString.get(this, \"onratechange\")\r\n set(newValue) {attributeStringString.set(this, \"onratechange\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onReadyStateChange : String\r\n get() = attributeStringString.get(this, \"onreadystatechange\")\r\n set(newValue) {attributeStringString.set(this, \"onreadystatechange\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onScroll : String\r\n get() = attributeStringString.get(this, \"onscroll\")\r\n set(newValue) {attributeStringString.set(this, \"onscroll\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onSearch : String\r\n get() = attributeStringString.get(this, \"onsearch\")\r\n set(newValue) {attributeStringString.set(this, \"onsearch\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onSeeked : String\r\n get() = attributeStringString.get(this, \"onseeked\")\r\n set(newValue) {attributeStringString.set(this, \"onseeked\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onSeeking : String\r\n get() = attributeStringString.get(this, \"onseeking\")\r\n set(newValue) {attributeStringString.set(this, \"onseeking\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onSelect : String\r\n get() = attributeStringString.get(this, \"onselect\")\r\n set(newValue) {attributeStringString.set(this, \"onselect\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onShow : String\r\n get() = attributeStringString.get(this, \"onshow\")\r\n set(newValue) {attributeStringString.set(this, \"onshow\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onStalled : String\r\n get() = attributeStringString.get(this, \"onstalled\")\r\n set(newValue) {attributeStringString.set(this, \"onstalled\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onSubmit : String\r\n get() = attributeStringString.get(this, \"onsubmit\")\r\n set(newValue) {attributeStringString.set(this, \"onsubmit\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onSuspend : String\r\n get() = attributeStringString.get(this, \"onsuspend\")\r\n set(newValue) {attributeStringString.set(this, \"onsuspend\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onTimeUpdate : String\r\n get() = attributeStringString.get(this, \"ontimeupdate\")\r\n set(newValue) {attributeStringString.set(this, \"ontimeupdate\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onTouchCancel : String\r\n get() = attributeStringString.get(this, \"ontouchcancel\")\r\n set(newValue) {attributeStringString.set(this, \"ontouchcancel\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onTouchEnd : String\r\n get() = attributeStringString.get(this, \"ontouchend\")\r\n set(newValue) {attributeStringString.set(this, \"ontouchend\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onTouchMove : String\r\n get() = attributeStringString.get(this, \"ontouchmove\")\r\n set(newValue) {attributeStringString.set(this, \"ontouchmove\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onTouchStart : String\r\n get() = attributeStringString.get(this, \"ontouchstart\")\r\n set(newValue) {attributeStringString.set(this, \"ontouchstart\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onVolumeChange : String\r\n get() = attributeStringString.get(this, \"onvolumechange\")\r\n set(newValue) {attributeStringString.set(this, \"onvolumechange\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onWaiting : String\r\n get() = attributeStringString.get(this, \"onwaiting\")\r\n set(newValue) {attributeStringString.set(this, \"onwaiting\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onWheel : String\r\n get() = attributeStringString.get(this, \"onwheel\")\r\n set(newValue) {attributeStringString.set(this, \"onwheel\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.role : String\r\n get() = attributeStringString.get(this, \"role\")\r\n set(newValue) {attributeStringString.set(this, \"role\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.runAt : RunAt\r\n get() = attributeRunAtEnumRunAtValues.get(this, \"runat\")\r\n set(newValue) {attributeRunAtEnumRunAtValues.set(this, \"runat\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.spellCheck : Boolean\r\n get() = attributeBooleanBoolean.get(this, \"spellcheck\")\r\n set(newValue) {attributeBooleanBoolean.set(this, \"spellcheck\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.style : String\r\n get() = attributeStringString.get(this, \"style\")\r\n set(newValue) {attributeStringString.set(this, \"style\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.subject : String\r\n get() = attributeStringString.get(this, \"subject\")\r\n set(newValue) {attributeStringString.set(this, \"subject\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.tabIndex : String\r\n get() = attributeStringString.get(this, \"tabIndex\")\r\n set(newValue) {attributeStringString.set(this, \"tabIndex\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.title : String\r\n get() = attributeStringString.get(this, \"title\")\r\n set(newValue) {attributeStringString.set(this, \"title\", newValue)}\r\n\r\n\r\ninterface FormServerAttributeGroupFacade : Tag {\r\n}\r\nvar FormServerAttributeGroupFacade.defaultButton : String\r\n get() = attributeStringString.get(this, \"DefaultButton\")\r\n set(newValue) {attributeStringString.set(this, \"DefaultButton\", newValue)}\r\n\r\nvar FormServerAttributeGroupFacade.defaultFocus : String\r\n get() = attributeStringString.get(this, \"DefaultFocus\")\r\n set(newValue) {attributeStringString.set(this, \"DefaultFocus\", newValue)}\r\n\r\nvar FormServerAttributeGroupFacade.submitDisabledControls : Boolean\r\n get() = attributeBooleanBoolean.get(this, \"SubmitDisabledControls\")\r\n set(newValue) {attributeBooleanBoolean.set(this, \"SubmitDisabledControls\", newValue)}\r\n\r\n\r\ninterface InputServerAttributeGroupFacade : Tag {\r\n}\r\nvar InputServerAttributeGroupFacade.causesValidation : Boolean\r\n get() = attributeBooleanBoolean.get(this, \"CausesValidation\")\r\n set(newValue) {attributeBooleanBoolean.set(this, \"CausesValidation\", newValue)}\r\n\r\nvar InputServerAttributeGroupFacade.validationGroup : String\r\n get() = attributeStringString.get(this, \"ValidationGroup\")\r\n set(newValue) {attributeStringString.set(this, \"ValidationGroup\", newValue)}\r\n\r\n\r\ninterface SelectServerAttributeGroupFacade : Tag {\r\n}\r\nvar SelectServerAttributeGroupFacade.dataSourceID : String\r\n get() = attributeStringString.get(this, \"DataSourceID\")\r\n set(newValue) {attributeStringString.set(this, \"DataSourceID\", newValue)}\r\n\r\nvar SelectServerAttributeGroupFacade.dataTextField : String\r\n get() = attributeStringString.get(this, \"DataTextField\")\r\n set(newValue) {attributeStringString.set(this, \"DataTextField\", newValue)}\r\n\r\nvar SelectServerAttributeGroupFacade.dataValueField : String\r\n get() = attributeStringString.get(this, \"DataValueField\")\r\n set(newValue) {attributeStringString.set(this, \"DataValueField\", newValue)}\r\n\r\n\r\n","package kotlinx.html.js\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.attributes.*\r\nimport kotlinx.html.dom.*\r\nimport org.w3c.dom.events.*\r\n\r\n/*******************************************************************************\r\n DO NOT EDIT\r\n This file was generated by module generate\r\n*******************************************************************************/\r\n\r\nvar CommonAttributeGroupFacade.onAbortFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onAbort\")\r\n set(newValue) {consumer.onTagEvent(this, \"onabort\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onBlurFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onBlur\")\r\n set(newValue) {consumer.onTagEvent(this, \"onblur\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onCanPlayFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onCanPlay\")\r\n set(newValue) {consumer.onTagEvent(this, \"oncanplay\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onCanPlayThroughFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onCanPlayThrough\")\r\n set(newValue) {consumer.onTagEvent(this, \"oncanplaythrough\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onChangeFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onChange\")\r\n set(newValue) {consumer.onTagEvent(this, \"onchange\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onClickFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onClick\")\r\n set(newValue) {consumer.onTagEvent(this, \"onclick\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onContextMenuFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onContextMenu\")\r\n set(newValue) {consumer.onTagEvent(this, \"oncontextmenu\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDoubleClickFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onDoubleClick\")\r\n set(newValue) {consumer.onTagEvent(this, \"ondblclick\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDragFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onDrag\")\r\n set(newValue) {consumer.onTagEvent(this, \"ondrag\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDragEndFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onDragEnd\")\r\n set(newValue) {consumer.onTagEvent(this, \"ondragend\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDragEnterFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onDragEnter\")\r\n set(newValue) {consumer.onTagEvent(this, \"ondragenter\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDragLeaveFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onDragLeave\")\r\n set(newValue) {consumer.onTagEvent(this, \"ondragleave\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDragOverFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onDragOver\")\r\n set(newValue) {consumer.onTagEvent(this, \"ondragover\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDragStartFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onDragStart\")\r\n set(newValue) {consumer.onTagEvent(this, \"ondragstart\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDropFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onDrop\")\r\n set(newValue) {consumer.onTagEvent(this, \"ondrop\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onDurationChangeFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onDurationChange\")\r\n set(newValue) {consumer.onTagEvent(this, \"ondurationchange\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onEmptiedFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onEmptied\")\r\n set(newValue) {consumer.onTagEvent(this, \"onemptied\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onEndedFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onEnded\")\r\n set(newValue) {consumer.onTagEvent(this, \"onended\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onErrorFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onError\")\r\n set(newValue) {consumer.onTagEvent(this, \"onerror\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onFocusFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onFocus\")\r\n set(newValue) {consumer.onTagEvent(this, \"onfocus\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onFocusInFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onFocusIn\")\r\n set(newValue) {consumer.onTagEvent(this, \"onfocusin\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onFocusOutFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onFocusOut\")\r\n set(newValue) {consumer.onTagEvent(this, \"onfocusout\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onFormChangeFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onFormChange\")\r\n set(newValue) {consumer.onTagEvent(this, \"onformchange\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onFormInputFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onFormInput\")\r\n set(newValue) {consumer.onTagEvent(this, \"onforminput\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onInputFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onInput\")\r\n set(newValue) {consumer.onTagEvent(this, \"oninput\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onInvalidFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onInvalid\")\r\n set(newValue) {consumer.onTagEvent(this, \"oninvalid\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onKeyDownFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onKeyDown\")\r\n set(newValue) {consumer.onTagEvent(this, \"onkeydown\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onKeyPressFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onKeyPress\")\r\n set(newValue) {consumer.onTagEvent(this, \"onkeypress\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onKeyUpFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onKeyUp\")\r\n set(newValue) {consumer.onTagEvent(this, \"onkeyup\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onLoadFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onLoad\")\r\n set(newValue) {consumer.onTagEvent(this, \"onload\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onLoadedDataFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onLoadedData\")\r\n set(newValue) {consumer.onTagEvent(this, \"onloadeddata\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onLoadedMetaDataFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onLoadedMetaData\")\r\n set(newValue) {consumer.onTagEvent(this, \"onloadedmetadata\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onLoadStartFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onLoadStart\")\r\n set(newValue) {consumer.onTagEvent(this, \"onloadstart\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onMouseDownFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onMouseDown\")\r\n set(newValue) {consumer.onTagEvent(this, \"onmousedown\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onMouseMoveFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onMouseMove\")\r\n set(newValue) {consumer.onTagEvent(this, \"onmousemove\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onMouseOutFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onMouseOut\")\r\n set(newValue) {consumer.onTagEvent(this, \"onmouseout\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onMouseOverFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onMouseOver\")\r\n set(newValue) {consumer.onTagEvent(this, \"onmouseover\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onMouseUpFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onMouseUp\")\r\n set(newValue) {consumer.onTagEvent(this, \"onmouseup\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onMouseWheelFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onMouseWheel\")\r\n set(newValue) {consumer.onTagEvent(this, \"onmousewheel\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onPauseFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onPause\")\r\n set(newValue) {consumer.onTagEvent(this, \"onpause\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onPlayFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onPlay\")\r\n set(newValue) {consumer.onTagEvent(this, \"onplay\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onPlayingFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onPlaying\")\r\n set(newValue) {consumer.onTagEvent(this, \"onplaying\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onProgressFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onProgress\")\r\n set(newValue) {consumer.onTagEvent(this, \"onprogress\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onRateChangeFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onRateChange\")\r\n set(newValue) {consumer.onTagEvent(this, \"onratechange\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onReadyStateChangeFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onReadyStateChange\")\r\n set(newValue) {consumer.onTagEvent(this, \"onreadystatechange\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onScrollFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onScroll\")\r\n set(newValue) {consumer.onTagEvent(this, \"onscroll\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onSearchFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onSearch\")\r\n set(newValue) {consumer.onTagEvent(this, \"onsearch\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onSeekedFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onSeeked\")\r\n set(newValue) {consumer.onTagEvent(this, \"onseeked\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onSeekingFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onSeeking\")\r\n set(newValue) {consumer.onTagEvent(this, \"onseeking\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onSelectFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onSelect\")\r\n set(newValue) {consumer.onTagEvent(this, \"onselect\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onShowFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onShow\")\r\n set(newValue) {consumer.onTagEvent(this, \"onshow\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onStalledFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onStalled\")\r\n set(newValue) {consumer.onTagEvent(this, \"onstalled\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onSubmitFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onSubmit\")\r\n set(newValue) {consumer.onTagEvent(this, \"onsubmit\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onSuspendFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onSuspend\")\r\n set(newValue) {consumer.onTagEvent(this, \"onsuspend\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onTimeUpdateFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onTimeUpdate\")\r\n set(newValue) {consumer.onTagEvent(this, \"ontimeupdate\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onTouchCancelFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onTouchCancel\")\r\n set(newValue) {consumer.onTagEvent(this, \"ontouchcancel\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onTouchEndFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onTouchEnd\")\r\n set(newValue) {consumer.onTagEvent(this, \"ontouchend\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onTouchMoveFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onTouchMove\")\r\n set(newValue) {consumer.onTagEvent(this, \"ontouchmove\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onTouchStartFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onTouchStart\")\r\n set(newValue) {consumer.onTagEvent(this, \"ontouchstart\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onVolumeChangeFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onVolumeChange\")\r\n set(newValue) {consumer.onTagEvent(this, \"onvolumechange\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onWaitingFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onWaiting\")\r\n set(newValue) {consumer.onTagEvent(this, \"onwaiting\", newValue)}\r\n\r\nvar CommonAttributeGroupFacade.onWheelFunction : (Event) -> Unit\r\n get() = throw UnsupportedOperationException(\"You can't read variable onWheel\")\r\n set(newValue) {consumer.onTagEvent(this, \"onwheel\", newValue)}\r\n\r\n","package kotlinx.html\r\n\r\nimport kotlinx.html.*\r\nimport kotlinx.html.attributes.*\r\n\r\n/*******************************************************************************\r\n DO NOT EDIT\r\n This file was generated by module generate\r\n*******************************************************************************/\r\n\r\ninternal val attributeStringString : Attribute = StringAttribute()\r\n\r\ninternal val attributeSetStringStringSet : Attribute> = StringSetAttribute()\r\n\r\ninternal val attributeBooleanBoolean : Attribute = BooleanAttribute()\r\n\r\ninternal val attributeBooleanBooleanOnOff : Attribute = BooleanAttribute(\"on\", \"off\")\r\n\r\ninternal val attributeBooleanTicker : Attribute = TickerAttribute()\r\n\r\ninternal val attributeButtonFormEncTypeEnumButtonFormEncTypeValues : Attribute = EnumAttribute(buttonFormEncTypeValues)\r\n\r\ninternal val attributeButtonFormMethodEnumButtonFormMethodValues : Attribute = EnumAttribute(buttonFormMethodValues)\r\n\r\ninternal val attributeButtonTypeEnumButtonTypeValues : Attribute = EnumAttribute(buttonTypeValues)\r\n\r\ninternal val attributeCommandTypeEnumCommandTypeValues : Attribute = EnumAttribute(commandTypeValues)\r\n\r\ninternal val attributeDirEnumDirValues : Attribute = EnumAttribute(dirValues)\r\n\r\ninternal val attributeDraggableEnumDraggableValues : Attribute = EnumAttribute(draggableValues)\r\n\r\ninternal val attributeFormEncTypeEnumFormEncTypeValues : Attribute = EnumAttribute(formEncTypeValues)\r\n\r\ninternal val attributeFormMethodEnumFormMethodValues : Attribute = EnumAttribute(formMethodValues)\r\n\r\ninternal val attributeIframeSandboxEnumIframeSandboxValues : Attribute = EnumAttribute(iframeSandboxValues)\r\n\r\ninternal val attributeInputFormEncTypeEnumInputFormEncTypeValues : Attribute = EnumAttribute(inputFormEncTypeValues)\r\n\r\ninternal val attributeInputFormMethodEnumInputFormMethodValues : Attribute = EnumAttribute(inputFormMethodValues)\r\n\r\ninternal val attributeInputTypeEnumInputTypeValues : Attribute = EnumAttribute(inputTypeValues)\r\n\r\ninternal val attributeKeyGenKeyTypeEnumKeyGenKeyTypeValues : Attribute = EnumAttribute(keyGenKeyTypeValues)\r\n\r\ninternal val attributeRunAtEnumRunAtValues : Attribute = EnumAttribute(runAtValues)\r\n\r\ninternal val attributeTextAreaWrapEnumTextAreaWrapValues : Attribute = EnumAttribute(textAreaWrapValues)\r\n\r\ninternal val attributeThScopeEnumThScopeValues : Attribute = EnumAttribute(thScopeValues)\r\n\r\n","/*\n * __ ___\n * _____/ /___ __/ (_)____\n * / ___/ __/ / / / / / ___/\n * (__ ) /_/ /_/ / / (__ )\n * /____/\\__/\\__, /_/_/____/\n * /____/\n *\n * light - weight css preprocessor @licence MIT\n */\n(function (factory) {/* eslint-disable */\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? (module['exports'] = factory(null)) :\n\t\ttypeof define === 'function' && define['amd'] ? define(factory(null)) :\n\t\t\t(window['stylis'] = factory(null))\n}(/** @param {*=} options */function factory (options) {/* eslint-disable */\n\n\t'use strict'\n\n\t/**\n\t * Notes\n\t *\n\t * The [''] pattern is used to support closure compiler\n\t * the jsdoc signatures are also used to the same effect\n\t *\n\t * ----\n\t *\n\t * int + int + int === n4 [faster]\n\t *\n\t * vs\n\t *\n\t * int === n1 && int === n2 && int === n3\n\t *\n\t * ----\n\t *\n\t * switch (int) { case ints...} [faster]\n\t *\n\t * vs\n\t *\n\t * if (int == 1 && int === 2 ...)\n\t *\n\t * ----\n\t *\n\t * The (first*n1 + second*n2 + third*n3) format used in the property parser\n\t * is a simple way to hash the sequence of characters\n\t * taking into account the index they occur in\n\t * since any number of 3 character sequences could produce duplicates.\n\t *\n\t * On the other hand sequences that are directly tied to the index of the character\n\t * resolve a far more accurate measure, it's also faster\n\t * to evaluate one condition in a switch statement\n\t * than three in an if statement regardless of the added math.\n\t *\n\t * This allows the vendor prefixer to be both small and fast.\n\t */\n\n\tvar nullptn = /^\\0+/g /* matches leading null characters */\n\tvar formatptn = /[\\0\\r\\f]/g /* matches new line, null and formfeed characters */\n\tvar colonptn = /: */g /* splits animation rules */\n\tvar cursorptn = /zoo|gra/ /* assert cursor varient */\n\tvar transformptn = /([,: ])(transform)/g /* vendor prefix transform, older webkit */\n\tvar animationptn = /,+\\s*(?![^(]*[)])/g /* splits multiple shorthand notation animations */\n\tvar propertiesptn = / +\\s*(?![^(]*[)])/g /* animation properties */\n\tvar elementptn = / *[\\0] */g /* selector elements */\n\tvar selectorptn = /,\\r+?/g /* splits selectors */\n\tvar andptn = /([\\t\\r\\n ])*\\f?&/g /* match & */\n\tvar escapeptn = /:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g /* matches :global(.*) */\n\tvar invalidptn = /\\W+/g /* removes invalid characters from keyframes */\n\tvar keyframeptn = /@(k\\w+)\\s*(\\S*)\\s*/ /* matches @keyframes $1 */\n\tvar plcholdrptn = /::(place)/g /* match ::placeholder varient */\n\tvar readonlyptn = /:(read-only)/g /* match :read-only varient */\n\tvar beforeptn = /\\s+(?=[{\\];=:>])/g /* matches \\s before ] ; = : */\n\tvar afterptn = /([[}=:>])\\s+/g /* matches \\s after characters [ } = : */\n\tvar tailptn = /(\\{[^{]+?);(?=\\})/g /* matches tail semi-colons ;} */\n\tvar whiteptn = /\\s{2,}/g /* matches repeating whitespace */\n\tvar pseudoptn = /([^\\(])(:+) */g /* pseudo element */\n\tvar writingptn = /[svh]\\w+-[tblr]{2}/ /* match writing mode property values */\n\tvar gradientptn = /([\\w-]+t\\()/g /* match *gradient property */\n\tvar supportsptn = /\\(\\s*(.*)\\s*\\)/g /* match supports (groups) */\n\tvar propertyptn = /([\\s\\S]*?);/g /* match properties leading semicolon */\n\tvar selfptn = /-self|flex-/g /* match flex- and -self in align-self: flex-*; */\n\tvar pseudofmt = /[^]*?(:[rp][el]a[\\w-]+)[^]*/ /* extrats :readonly or :placholder from selector */\n\tvar trimptn = /[ \\t]+$/ /* match tail whitspace */\n\tvar dimensionptn = /stretch|:\\s*\\w+\\-(?:conte|avail)/ /* match max/min/fit-content, fill-available */\n\tvar imgsrcptn = /([^-])(image-set\\()/\n\n\t/* vendors */\n\tvar webkit = '-webkit-'\n\tvar moz = '-moz-'\n\tvar ms = '-ms-'\n\n\t/* character codes */\n\tvar SEMICOLON = 59 /* ; */\n\tvar CLOSEBRACES = 125 /* } */\n\tvar OPENBRACES = 123 /* { */\n\tvar OPENPARENTHESES = 40 /* ( */\n\tvar CLOSEPARENTHESES = 41 /* ) */\n\tvar OPENBRACKET = 91 /* [ */\n\tvar CLOSEBRACKET = 93 /* ] */\n\tvar NEWLINE = 10 /* \\n */\n\tvar CARRIAGE = 13 /* \\r */\n\tvar TAB = 9 /* \\t */\n\tvar AT = 64 /* @ */\n\tvar SPACE = 32 /* */\n\tvar AND = 38 /* & */\n\tvar DASH = 45 /* - */\n\tvar UNDERSCORE = 95 /* _ */\n\tvar STAR = 42 /* * */\n\tvar COMMA = 44 /* , */\n\tvar COLON = 58 /* : */\n\tvar SINGLEQUOTE = 39 /* ' */\n\tvar DOUBLEQUOTE = 34 /* \" */\n\tvar FOWARDSLASH = 47 /* / */\n\tvar GREATERTHAN = 62 /* > */\n\tvar PLUS = 43 /* + */\n\tvar TILDE = 126 /* ~ */\n\tvar NULL = 0 /* \\0 */\n\tvar FORMFEED = 12 /* \\f */\n\tvar VERTICALTAB = 11 /* \\v */\n\n\t/* special identifiers */\n\tvar KEYFRAME = 107 /* k */\n\tvar MEDIA = 109 /* m */\n\tvar SUPPORTS = 115 /* s */\n\tvar PLACEHOLDER = 112 /* p */\n\tvar READONLY = 111 /* o */\n\tvar IMPORT = 105 /* i */\n\tvar CHARSET = 99 /* c */\n\tvar DOCUMENT = 100 /* d */\n\tvar PAGE = 112 /* p */\n\n\tvar column = 1 /* current column */\n\tvar line = 1 /* current line numebr */\n\tvar pattern = 0 /* :pattern */\n\n\tvar cascade = 1 /* #id h1 h2 vs h1#id h2#id */\n\tvar prefix = 1 /* vendor prefix */\n\tvar escape = 1 /* escape :global() pattern */\n\tvar compress = 0 /* compress output */\n\tvar semicolon = 0 /* no/semicolon option */\n\tvar preserve = 0 /* preserve empty selectors */\n\n\t/* empty reference */\n\tvar array = []\n\n\t/* plugins */\n\tvar plugins = []\n\tvar plugged = 0\n\tvar should = null\n\n\t/* plugin context */\n\tvar POSTS = -2\n\tvar PREPS = -1\n\tvar UNKWN = 0\n\tvar PROPS = 1\n\tvar BLCKS = 2\n\tvar ATRUL = 3\n\n\t/* plugin newline context */\n\tvar unkwn = 0\n\n\t/* keyframe animation */\n\tvar keyed = 1\n\tvar key = ''\n\n\t/* selector namespace */\n\tvar nscopealt = ''\n\tvar nscope = ''\n\n\t/**\n\t * Compile\n\t *\n\t * @param {Array} parent\n\t * @param {Array} current\n\t * @param {string} body\n\t * @param {number} id\n\t * @param {number} depth\n\t * @return {string}\n\t */\n\tfunction compile (parent, current, body, id, depth) {\n\t\tvar bracket = 0 /* brackets [] */\n\t\tvar comment = 0 /* comments /* // or /* */\n\t\tvar parentheses = 0 /* functions () */\n\t\tvar quote = 0 /* quotes '', \"\" */\n\n\t\tvar first = 0 /* first character code */\n\t\tvar second = 0 /* second character code */\n\t\tvar code = 0 /* current character code */\n\t\tvar tail = 0 /* previous character code */\n\t\tvar trail = 0 /* character before previous code */\n\t\tvar peak = 0 /* previous non-whitespace code */\n\n\t\tvar counter = 0 /* count sequence termination */\n\t\tvar context = 0 /* track current context */\n\t\tvar atrule = 0 /* track @at-rule context */\n\t\tvar pseudo = 0 /* track pseudo token index */\n\t\tvar caret = 0 /* current character index */\n\t\tvar format = 0 /* control character formating context */\n\t\tvar insert = 0 /* auto semicolon insertion */\n\t\tvar invert = 0 /* inverted selector pattern */\n\t\tvar length = 0 /* generic length address */\n\t\tvar eof = body.length /* end of file(length) */\n\t\tvar eol = eof - 1 /* end of file(characters) */\n\n\t\tvar char = '' /* current character */\n\t\tvar chars = '' /* current buffer of characters */\n\t\tvar child = '' /* next buffer of characters */\n\t\tvar out = '' /* compiled body */\n\t\tvar children = '' /* compiled children */\n\t\tvar flat = '' /* compiled leafs */\n\t\tvar selector /* generic selector address */\n\t\tvar result /* generic address */\n\n\t\t// ...build body\n\t\twhile (caret < eof) {\n\t\t\tcode = body.charCodeAt(caret)\n\n\t\t\t// eof varient\n\t\t\tif (caret === eol) {\n\t\t\t\t// last character + noop context, add synthetic padding for noop context to terminate\n\t\t\t\tif (comment + quote + parentheses + bracket !== 0) {\n\t\t\t\t\tif (comment !== 0) {\n\t\t\t\t\t\tcode = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH\n\t\t\t\t\t}\n\n\t\t\t\t\tquote = parentheses = bracket = 0\n\t\t\t\t\teof++\n\t\t\t\t\teol++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t// eof varient\n\t\t\t\tif (caret === eol) {\n\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chars.trim().length > 0) {\n\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchars += body.charAt(caret)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode = SEMICOLON\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// auto semicolon insertion\n\t\t\t\tif (insert === 1) {\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t// false flags\n\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\tcase OPENPARENTHESES:\n\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// valid\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\tfirst = code\n\t\t\t\t\t\t\tcaret--\n\t\t\t\t\t\t\tcode = SEMICOLON\n\n\t\t\t\t\t\t\twhile (length < eof) {\n\t\t\t\t\t\t\t\tswitch (body.charCodeAt(length++)) {\n\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\t\t\t\t\t++caret\n\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\t\t\t++caret\n\t\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// token varient\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\tchars = chars.trim()\n\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\tcounter = 1\n\t\t\t\t\t\tlength = ++caret\n\n\t\t\t\t\t\twhile (caret < eof) {\n\t\t\t\t\t\t\tswitch (code = body.charCodeAt(caret)) {\n\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\tcounter++\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\t\tcounter--\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\t\t\tswitch (second = body.charCodeAt(caret + 1)) {\n\t\t\t\t\t\t\t\t\t\t// /*, //\n\t\t\t\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\t\t\t\t\tcaret = delimited(second, caret, eol, body)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// given \"[\" === 91 & \"]\" === 93 hence forth 91 + 1 + 1 === 93\n\t\t\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\t\t\tcode++\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// given \"(\" === 40 & \")\" === 41 hence forth 40 + 1 === 41\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tcode++\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// quote tail delimiter is identical to the head delimiter hence noop,\n\t\t\t\t\t\t\t\t// fallthrough clauses have been shifted to the correct tail delimiter\n\t\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\t\t\twhile (caret++ < eol) {\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(caret) === code) {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (counter === 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcaret++\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchild = body.substring(length, caret)\n\n\t\t\t\t\t\tif (first === NULL) {\n\t\t\t\t\t\t\tfirst = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t// @at-rule\n\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\tcase SUPPORTS:\n\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\tselector = current\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tselector = array\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tchild = compile(current, selector, child, second, depth+1)\n\t\t\t\t\t\t\t\tlength = child.length\n\n\t\t\t\t\t\t\t\t// preserve empty @at-rule\n\t\t\t\t\t\t\t\tif (preserve > 0 && length === 0) {\n\t\t\t\t\t\t\t\t\tlength = chars.length\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// execute plugins, @at-rule context\n\t\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\t\tselector = select(array, chars, invert)\n\t\t\t\t\t\t\t\t\tresult = proxy(ATRUL, child, selector, current, line, column, length, second, depth, id)\n\t\t\t\t\t\t\t\t\tchars = selector.join('')\n\n\t\t\t\t\t\t\t\t\tif (result !== void 0) {\n\t\t\t\t\t\t\t\t\t\tif ((length = (child = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\t\tsecond = 0\n\t\t\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (length > 0) {\n\t\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\t\tcase SUPPORTS: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(supportsptn, supports)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase KEYFRAME: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : ''))\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\n\t\t\t\t\t\t\t\t\t\t\tif (prefix === 1 || (prefix === 2 && vendor('@'+child, 3))) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + webkit + child + '@' + child\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + child\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + child\n\n\t\t\t\t\t\t\t\t\t\t\tif (id === PAGE) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = (out += child, '')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// selector\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchild = compile(current, select(current, chars, invert), child, id, depth+1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchildren += child\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tatrule = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\tchars = (format > 0 ? chars.replace(formatptn, '') : chars).trim()\n\n\t\t\t\t\t\tif ((length = chars.length) > 1) {\n\t\t\t\t\t\t\t// monkey-patch missing colon\n\t\t\t\t\t\t\tif (pseudo === 0) {\n\t\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\n\t\t\t\t\t\t\t\t// first character is a letter or dash, buffer has a space character\n\t\t\t\t\t\t\t\tif ((first === DASH || first > 96 && first < 123)) {\n\t\t\t\t\t\t\t\t\tlength = (chars = chars.replace(' ', ':')).length\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// execute plugins, property context\n\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\tif ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth, id)) !== void 0) {\n\t\t\t\t\t\t\t\t\tif ((length = (chars = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\tchars = '\\0\\0'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\t\tif (second === IMPORT || second === CHARSET) {\n\t\t\t\t\t\t\t\t\t\tflat += chars + body.charAt(caret)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\tif (chars.charCodeAt(length-1) === COLON) {\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tout += property(chars, first, second, chars.charCodeAt(2))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// parse characters\n\t\t\tswitch (code) {\n\t\t\t\tcase CARRIAGE:\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t// auto insert semicolon\n\t\t\t\t\tif (comment + quote + parentheses + bracket + semicolon === 0) {\n\t\t\t\t\t\t// valid non-whitespace characters that\n\t\t\t\t\t\t// may precede a newline\n\t\t\t\t\t\tswitch (peak) {\n\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\tcase AT:\n\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\tcase FOWARDSLASH:\n\t\t\t\t\t\t\tcase DASH:\n\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t// current buffer has a colon\n\t\t\t\t\t\t\t\tif (pseudo > 0) {\n\t\t\t\t\t\t\t\t\tinsert = 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// terminate line comment\n\t\t\t\t\tif (comment === FOWARDSLASH) {\n\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t} else if (cascade + context === 0 && id !== KEYFRAME && chars.length > 0) {\n\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\tchars += '\\0'\n\t\t\t\t\t}\n\n\t\t\t\t\t// execute plugins, newline context\n\t\t\t\t\tif (plugged * unkwn > 0) {\n\t\t\t\t\t\tproxy(UNKWN, chars, current, parent, line, column, out.length, id, depth, id)\n\t\t\t\t\t}\n\n\t\t\t\t\t// next line, reset column position\n\t\t\t\t\tcolumn = 1\n\t\t\t\t\tline++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase SEMICOLON:\n\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t\t\tcolumn++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\t// increment column position\n\t\t\t\t\tcolumn++\n\n\t\t\t\t\t// current character\n\t\t\t\t\tchar = body.charAt(caret)\n\n\t\t\t\t\t// remove comments, escape functions, strings, attributes and prepare selectors\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tif (quote + bracket + comment === 0) {\n\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tif (code !== SPACE) {\n\t\t\t\t\t\t\t\t\t\t\tchar = ' '\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// escape breaking control characters\n\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\tchar = '\\\\0'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase FORMFEED: {\n\t\t\t\t\t\t\tchar = '\\\\f'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase VERTICALTAB: {\n\t\t\t\t\t\t\tchar = '\\\\v'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// &\n\t\t\t\t\t\tcase AND: {\n\t\t\t\t\t\t\t// inverted selector pattern i.e html &\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0 && cascade > 0) {\n\t\t\t\t\t\t\t\tinvert = 1\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar = '\\f' + char\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ::paceholder, l\n\t\t\t\t\t\t// :read-ony, l\n\t\t\t\t\t\tcase 108: {\n\t\t\t\t\t\t\tif (quote + comment + bracket + pattern === 0 && pseudo > 0) {\n\t\t\t\t\t\t\t\tswitch (caret - pseudo) {\n\t\t\t\t\t\t\t\t\t// ::placeholder\n\t\t\t\t\t\t\t\t\tcase 2: {\n\t\t\t\t\t\t\t\t\t\tif (tail === PLACEHOLDER && body.charCodeAt(caret-3) === COLON) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = tail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// :read-only\n\t\t\t\t\t\t\t\t\tcase 8: {\n\t\t\t\t\t\t\t\t\t\tif (trail === READONLY) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = trail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tpseudo = caret\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectors\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket === 0) {\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar += '\\r'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// quotes\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t\t\tquote = quote === code ? 0 : (quote === 0 ? code : quote)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// attributes\n\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase CLOSEBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// functions\n\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tparentheses--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\tswitch (tail*2 + trail*3) {\n\t\t\t\t\t\t\t\t\t\t// :matches\n\t\t\t\t\t\t\t\t\t\tcase 533: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// :global, :not, :nth-child etc...\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tcounter = 0\n\t\t\t\t\t\t\t\t\t\t\tcontext = 1\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tparentheses++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket + pseudo + atrule === 0) {\n\t\t\t\t\t\t\t\tatrule = 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// block/line comments\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\tif (quote + bracket + parentheses > 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tswitch (comment) {\n\t\t\t\t\t\t\t\t// initialize line/block comment context\n\t\t\t\t\t\t\t\tcase 0: {\n\t\t\t\t\t\t\t\t\tswitch (code*2 + body.charCodeAt(caret+1)*3) {\n\t\t\t\t\t\t\t\t\t\t// //\n\t\t\t\t\t\t\t\t\t\tcase 235: {\n\t\t\t\t\t\t\t\t\t\t\tcomment = FOWARDSLASH\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// /*\n\t\t\t\t\t\t\t\t\t\tcase 220: {\n\t\t\t\t\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\t\t\t\t\tcomment = STAR\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// end block comment context\n\t\t\t\t\t\t\t\tcase STAR: {\n\t\t\t\t\t\t\t\t\tif (code === FOWARDSLASH && tail === STAR && length + 2 !== caret) {\n\t\t\t\t\t\t\t\t\t\t// /* ... */, !\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(length+2) === 33) {\n\t\t\t\t\t\t\t\t\t\t\tout += body.substring(length, caret+1)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ignore comment blocks\n\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t// aggressive isolation mode, divide each individual selector\n\t\t\t\t\t\t// including selectors in :not function but excluding selectors in :global function\n\t\t\t\t\t\tif (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) {\n\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t// outside of an isolated context i.e nth-child(<...>)\n\t\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = char + '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = '\\0' + char + (code === COMMA ? '' : '\\0')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// within an isolated context, sleep untill it's terminated\n\t\t\t\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\t// :globa(\n\t\t\t\t\t\t\t\t\t\t\t\tif (pseudo + 7 === caret && tail === 108) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tcontext = ++counter\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\tif ((context = --counter) === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\tcase NULL:\n\t\t\t\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\t\tcase FORMFEED:\n\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t// ignore in isolated contexts\n\t\t\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// concat buffer of characters\n\t\t\t\t\t\tchars += char\n\n\t\t\t\t\t\t// previous non-whitespace character code\n\t\t\t\t\t\tif (code !== SPACE && code !== TAB) {\n\t\t\t\t\t\t\tpeak = code\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// tail character codes\n\t\t\ttrail = tail\n\t\t\ttail = code\n\n\t\t\t// visit every character\n\t\t\tcaret++\n\t\t}\n\n\t\tlength = out.length\n\n\t\t// preserve empty selector\n \t\tif (preserve > 0) {\n \t\t\tif (length === 0 && children.length === 0 && (current[0].length === 0) === false) {\n \t\t\t\tif (id !== MEDIA || (current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0])) {\n\t\t\t\t\tlength = current.join(',').length + 2\n \t\t\t\t}\n \t\t\t}\n\t\t}\n\n\t\tif (length > 0) {\n\t\t\t// cascade isolation mode?\n\t\t\tselector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current\n\n\t\t\t// execute plugins, block context\n\t\t\tif (plugged > 0) {\n\t\t\t\tresult = proxy(BLCKS, out, selector, parent, line, column, length, id, depth, id)\n\n\t\t\t\tif (result !== void 0 && (out = result).length === 0) {\n\t\t\t\t\treturn flat + out + children\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tout = selector.join(',') + '{' + out + '}'\n\n\t\t\tif (prefix*pattern !== 0) {\n\t\t\t\tif (prefix === 2 && !vendor(out, 2))\n\t\t\t\t\tpattern = 0\n\n\t\t\t\tswitch (pattern) {\n\t\t\t\t\t// ::read-only\n\t\t\t\t\tcase READONLY: {\n\t\t\t\t\t\tout = out.replace(readonlyptn, ':'+moz+'$1')+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// ::placeholder\n\t\t\t\t\tcase PLACEHOLDER: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + webkit + 'input-$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + moz + '$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, ':' + ms + 'input-$1') + out\n\t\t\t\t\t\t)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpattern = 0\n\t\t\t}\n\t\t}\n\n\t\treturn flat + out + children\n\t}\n\n\t/**\n\t * Select\n\t *\n\t * @param {Array} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @return {Array}\n\t */\n\tfunction select (parent, current, invert) {\n\t\tvar selectors = current.trim().split(selectorptn)\n\t\tvar out = selectors\n\n\t\tvar length = selectors.length\n\t\tvar l = parent.length\n\n\t\tswitch (l) {\n\t\t\t// 0-1 parent selectors\n\t\t\tcase 0:\n\t\t\tcase 1: {\n\t\t\t\tfor (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) {\n\t\t\t\t\tout[i] = scope(selector, out[i], invert, l).trim()\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// >2 parent selectors, nested\n\t\t\tdefault: {\n\t\t\t\tfor (var i = 0, j = 0, out = []; i < length; ++i) {\n\t\t\t\t\tfor (var k = 0; k < l; ++k) {\n\t\t\t\t\t\tout[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Scope\n\t *\n\t * @param {string} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @param {number} level\n\t * @return {string}\n\t */\n\tfunction scope (parent, current, invert, level) {\n\t\tvar selector = current\n\t\tvar code = selector.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (selector = selector.trim()).charCodeAt(0)\n\t\t}\n\n\t\tswitch (code) {\n\t\t\t// &\n\t\t\tcase AND: {\n\t\t\t\tswitch (cascade + level) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\tcase 1: {\n\t\t\t\t\t\tif (parent.trim().length === 0) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// :\n\t\t\tcase COLON: {\n\t\t\t\tswitch (selector.charCodeAt(1)) {\n\t\t\t\t\t// g in :global\n\t\t\t\t\tcase 103: {\n\t\t\t\t\t\tif (escape > 0 && cascade > 0) {\n\t\t\t\t\t\t\treturn selector.replace(escapeptn, '$1').replace(andptn, '$1'+nscope)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\t// :hover\n\t\t\t\t\t\treturn parent.trim() + selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\t// html &\n\t\t\t\tif (invert*cascade > 0 && selector.indexOf('\\f') > 0) {\n\t\t\t\t\treturn selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1')+parent.trim())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn parent + selector\n\t}\n\n\t/**\n\t * Property\n\t *\n\t * @param {string} input\n\t * @param {number} first\n\t * @param {number} second\n\t * @param {number} third\n\t * @return {string}\n\t */\n\tfunction property (input, first, second, third) {\n\t\tvar index = 0\n\t\tvar out = input + ';'\n\t\tvar hash = (first*2) + (second*3) + (third*4)\n\t\tvar cache\n\n\t\t// animation: a, n, i characters\n\t\tif (hash === 944) {\n\t\t\treturn animation(out)\n\t\t} else if (prefix === 0 || (prefix === 2 && !vendor(out, 1))) {\n\t\t\treturn out\n\t\t}\n\n\t\t// vendor prefix\n\t\tswitch (hash) {\n\t\t\t// text-decoration/text-size-adjust/text-shadow/text-align/text-transform: t, e, x\n\t\t\tcase 1015: {\n\t\t\t\t// text-shadow/text-align/text-transform, a\n\t\t\t\treturn out.charCodeAt(10) === 97 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// filter/fill f, i, l\n\t\t\tcase 951: {\n\t\t\t\t// filter, t\n\t\t\t\treturn out.charCodeAt(3) === 116 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// color/column, c, o, l\n\t\t\tcase 963: {\n\t\t\t\t// column, n\n\t\t\t\treturn out.charCodeAt(5) === 110 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// box-decoration-break, b, o, x\n\t\t\tcase 1009: {\n\t\t\t\tif (out.charCodeAt(4) !== 100) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// mask, m, a, s\n\t\t\t// clip-path, c, l, i\n\t\t\tcase 969:\n\t\t\tcase 942: {\n\t\t\t\treturn webkit + out + out\n\t\t\t}\n\t\t\t// appearance: a, p, p\n\t\t\tcase 978: {\n\t\t\t\treturn webkit + out + moz + out + out\n\t\t\t}\n\t\t\t// hyphens: h, y, p\n\t\t\t// user-select: u, s, e\n\t\t\tcase 1019:\n\t\t\tcase 983: {\n\t\t\t\treturn webkit + out + moz + out + ms + out + out\n\t\t\t}\n\t\t\t// background/backface-visibility, b, a, c\n\t\t\tcase 883: {\n\t\t\t\t// backface-visibility, -\n\t\t\t\tif (out.charCodeAt(8) === DASH) {\n\t\t\t\t\treturn webkit + out + out\n\t\t\t\t}\n\n\t\t\t\t// image-set(...)\n\t\t\t\tif (out.indexOf('image-set(', 11) > 0) {\n\t\t\t\t\treturn out.replace(imgsrcptn, '$1'+webkit+'$2') + out\n\t\t\t\t}\n\n\t\t\t\treturn out\n\t\t\t}\n\t\t\t// flex: f, l, e\n\t\t\tcase 932: {\n\t\t\t\tif (out.charCodeAt(4) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(5)) {\n\t\t\t\t\t\t// flex-grow, g\n\t\t\t\t\t\tcase 103: {\n\t\t\t\t\t\t\treturn webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-shrink, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('shrink', 'negative') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-basis, b\n\t\t\t\t\t\tcase 98: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('basis', 'preferred-size') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + out + out\n\t\t\t}\n\t\t\t// order: o, r, d\n\t\t\tcase 964: {\n\t\t\t\treturn webkit + out + ms + 'flex' + '-' + out + out\n\t\t\t}\n\t\t\t// justify-items/justify-content, j, u, s\n\t\t\tcase 1023: {\n\t\t\t\t// justify-content, c\n\t\t\t\tif (out.charCodeAt(8) !== 99) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify')\n\t\t\t\treturn webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out\n\t\t\t}\n\t\t\t// cursor, c, u, r\n\t\t\tcase 1005: {\n\t\t\t\treturn cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out\n\t\t\t}\n\t\t\t// writing-mode, w, r, i\n\t\t\tcase 1000: {\n\t\t\t\tcache = out.substring(13).trim()\n\t\t\t\tindex = cache.indexOf('-') + 1\n\n\t\t\t\tswitch (cache.charCodeAt(0)+cache.charCodeAt(index)) {\n\t\t\t\t\t// vertical-lr\n\t\t\t\t\tcase 226: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// vertical-rl\n\t\t\t\t\tcase 232: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb-rl')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// horizontal-tb\n\t\t\t\t\tcase 220: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'lr')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn out\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + cache + out\n\t\t\t}\n\t\t\t// position: sticky\n\t\t\tcase 1017: {\n\t\t\t\tif (out.indexOf('sticky', 9) === -1) {\n\t\t\t\t\treturn out\n\t\t\t\t}\n\t\t\t}\n\t\t\t// display(flex/inline-flex/inline-box): d, i, s\n\t\t\tcase 975: {\n\t\t\t\tindex = (out = input).length - 10\n\t\t\t\tcache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim()\n\n\t\t\t\tswitch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7)|0)) {\n\t\t\t\t\t// inline-\n\t\t\t\t\tcase 203: {\n\t\t\t\t\t\t// inline-box\n\t\t\t\t\t\tif (cache.charCodeAt(8) < 111) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// inline-box/sticky\n\t\t\t\t\tcase 115: {\n\t\t\t\t\t\tout = out.replace(cache, webkit+cache)+';'+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// inline-flex\n\t\t\t\t\t// flex\n\t\t\t\t\tcase 207:\n\t\t\t\t\tcase 102: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(cache, webkit+(hash > 102 ? 'inline-' : '')+'box')+';'+\n\t\t\t\t\t\t\tout.replace(cache, webkit+cache)+';'+\n\t\t\t\t\t\t\tout.replace(cache, ms+cache+'box')+';'+\n\t\t\t\t\t\t\tout\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn out + ';'\n\t\t\t}\n\t\t\t// align-items, align-center, align-self: a, l, i, -\n\t\t\tcase 938: {\n\t\t\t\tif (out.charCodeAt(5) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(6)) {\n\t\t\t\t\t\t// align-items, i\n\t\t\t\t\t\tcase 105: {\n\t\t\t\t\t\t\tcache = out.replace('-items', '')\n\t\t\t\t\t\t\treturn webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-self, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-content\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '').replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// min/max\n\t\t\tcase 973:\n\t\t\tcase 989: {\n\t\t\t\t// min-/max- height/width/block-size/inline-size\n\t\t\t\tif (out.charCodeAt(3) !== DASH || out.charCodeAt(4) === 122) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// height/width: min-content / width: max-content\n\t\t\tcase 931:\n\t\t\tcase 953: {\n\t\t\t\tif (dimensionptn.test(input) === true) {\n\t\t\t\t\t// stretch\n\t\t\t\t\tif ((cache = input.substring(input.indexOf(':') + 1)).charCodeAt(0) === 115)\n\t\t\t\t\t\treturn property(input.replace('stretch', 'fill-available'), first, second, third).replace(':fill-available', ':stretch')\n\t\t\t\t\telse\n\t\t\t\t\t\treturn out.replace(cache, webkit + cache) + out.replace(cache, moz + cache.replace('fill-', '')) + out\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// transform, transition: t, r, a\n\t\t\tcase 962: {\n\t\t\t\tout = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out\n\n\t\t\t\t// transitions\n\t\t\t\tif (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) {\n\t\t\t\t\treturn out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out\n\t\t\t\t}\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Vendor\n\t *\n\t * @param {string} content\n\t * @param {number} context\n\t * @return {boolean}\n\t */\n\tfunction vendor (content, context) {\n\t\tvar index = content.indexOf(context === 1 ? ':' : '{')\n\t\tvar key = content.substring(0, context !== 3 ? index : 10)\n\t\tvar value = content.substring(index + 1, content.length - 1)\n\n\t\treturn should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context)\n\t}\n\n\t/**\n\t * Supports\n\t *\n\t * @param {string} match\n\t * @param {string} group\n\t * @return {string}\n\t */\n\tfunction supports (match, group) {\n\t\tvar out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2))\n\n\t\treturn out !== group+';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '('+group+')'\n\t}\n\n\t/**\n\t * Animation\n\t *\n\t * @param {string} input\n\t * @return {string}\n\t */\n\tfunction animation (input) {\n\t\tvar length = input.length\n\t\tvar index = input.indexOf(':', 9) + 1\n\t\tvar declare = input.substring(0, index).trim()\n\t\tvar out = input.substring(index, length-1).trim()\n\n\t\tswitch (input.charCodeAt(9)*keyed) {\n\t\t\tcase 0: {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// animation-*, -\n\t\t\tcase DASH: {\n\t\t\t\t// animation-name, n\n\t\t\t\tif (input.charCodeAt(10) !== 110) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// animation/animation-name\n\t\t\tdefault: {\n\t\t\t\t// split in case of multiple animations\n\t\t\t\tvar list = out.split((out = '', animationptn))\n\n\t\t\t\tfor (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) {\n\t\t\t\t\tvar value = list[i]\n\t\t\t\t\tvar items = value.split(propertiesptn)\n\n\t\t\t\t\twhile (value = items[index]) {\n\t\t\t\t\t\tvar peak = value.charCodeAt(0)\n\n\t\t\t\t\t\tif (keyed === 1 && (\n\t\t\t\t\t\t\t// letters\n\t\t\t\t\t\t\t(peak > AT && peak < 90) || (peak > 96 && peak < 123) || peak === UNDERSCORE ||\n\t\t\t\t\t\t\t// dash but not in sequence i.e --\n\t\t\t\t\t\t\t(peak === DASH && value.charCodeAt(1) !== DASH)\n\t\t\t\t\t\t)) {\n\t\t\t\t\t\t\t// not a number/function\n\t\t\t\t\t\t\tswitch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) {\n\t\t\t\t\t\t\t\tcase 1: {\n\t\t\t\t\t\t\t\t\tswitch (value) {\n\t\t\t\t\t\t\t\t\t\t// not a valid reserved keyword\n\t\t\t\t\t\t\t\t\t\tcase 'infinite': case 'alternate': case 'backwards': case 'running':\n\t\t\t\t\t\t\t\t\t\tcase 'normal': case 'forwards': case 'both': case 'none': case 'linear':\n\t\t\t\t\t\t\t\t\t\tcase 'ease': case 'ease-in': case 'ease-out': case 'ease-in-out':\n\t\t\t\t\t\t\t\t\t\tcase 'paused': case 'reverse': case 'alternate-reverse': case 'inherit':\n\t\t\t\t\t\t\t\t\t\tcase 'initial': case 'unset': case 'step-start': case 'step-end': {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tvalue += key\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titems[index++] = value\n\t\t\t\t\t}\n\n\t\t\t\t\tout += (i === 0 ? '' : ',') + items.join(' ')\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tout = declare + out + ';'\n\n\t\tif (prefix === 1 || (prefix === 2 && vendor(out, 1)))\n\t\t\treturn webkit + out + out\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Isolate\n\t *\n\t * @param {Array} current\n\t */\n\tfunction isolate (current) {\n\t\tfor (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) {\n\t\t\t// split individual elements in a selector i.e h1 h2 === [h1, h2]\n\t\t\tvar elements = current[i].split(elementptn)\n\t\t\tvar out = ''\n\n\t\t\tfor (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) {\n\t\t\t\t// empty element\n\t\t\t\tif ((size = (element = elements[j]).length) === 0 && l > 1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\ttail = out.charCodeAt(out.length-1)\n\t\t\t\tcode = element.charCodeAt(0)\n\t\t\t\tpadding = ''\n\n\t\t\t\tif (j !== 0) {\n\t\t\t\t\t// determine if we need padding\n\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tpadding = ' '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase AND: {\n\t\t\t\t\t\telement = padding + nscopealt\n\t\t\t\t\t}\n\t\t\t\t\tcase TILDE:\n\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\tcase PLUS:\n\t\t\t\t\tcase SPACE:\n\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\tswitch (element.charCodeAt(1)*2 + element.charCodeAt(2)*3) {\n\t\t\t\t\t\t\t// :global\n\t\t\t\t\t\t\tcase 530: {\n\t\t\t\t\t\t\t\tif (escape > 0) {\n\t\t\t\t\t\t\t\t\telement = padding + element.substring(8, size - 1)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// :hover, :nth-child(), ...\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tif (j < 1 || elements[j-1].length < 1) {\n\t\t\t\t\t\t\t\t\telement = padding + nscopealt + element\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\tpadding = ''\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tif (size > 1 && element.indexOf(':') > 0) {\n\t\t\t\t\t\t\telement = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tout += element\n\t\t\t}\n\n\t\t\tselector[i] = out.replace(formatptn, '').trim()\n\t\t}\n\n\t\treturn selector\n\t}\n\n\t/**\n\t * Proxy\n\t *\n\t * @param {number} context\n\t * @param {string} content\n\t * @param {Array} selectors\n\t * @param {Array} parents\n\t * @param {number} line\n\t * @param {number} column\n\t * @param {number} length\n\t * @param {number} id\n\t * @param {number} depth\n\t * @param {number} at\n\t * @return {(string|void|*)}\n\t */\n\tfunction proxy (context, content, selectors, parents, line, column, length, id, depth, at) {\n\t\tfor (var i = 0, out = content, next; i < plugged; ++i) {\n\t\t\tswitch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth, at)) {\n\t\t\t\tcase void 0:\n\t\t\t\tcase false:\n\t\t\t\tcase true:\n\t\t\t\tcase null: {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tout = next\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (out !== content) {\n\t\t return out\n\t\t}\n\t}\n\n\t/**\n\t * @param {number} code\n\t * @param {number} index\n\t * @param {number} length\n\t * @param {string} body\n\t * @return {number}\n\t */\n\tfunction delimited (code, index, length, body) {\n\t\tfor (var i = index + 1; i < length; ++i) {\n\t\t\tswitch (body.charCodeAt(i)) {\n\t\t\t\t// /*\n\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\tif (code === STAR) {\n\t\t\t\t\t\tif (body.charCodeAt(i - 1) === STAR && index + 2 !== i) {\n\t\t\t\t\t\t\treturn i + 1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// //\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\tif (code === FOWARDSLASH) {\n\t\t\t\t\t\treturn i + 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn i\n\t}\n\n\t/**\n\t * @param {number} type\n\t * @param {number} index\n\t * @param {number} length\n\t * @param {number} find\n\t * @param {string} body\n\t * @return {number}\n\t */\n\tfunction match (type, index, length, body) {\n\t\tfor (var i = index + 1; i < length; ++i) {\n\t\t\tswitch (body.charCodeAt(i)) {\n\t\t\t\tcase type: {\n\t\t\t\t\treturn i\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn i\n\t}\n\n\t/**\n\t * Minify\n\t *\n\t * @param {(string|*)} output\n\t * @return {string}\n\t */\n\tfunction minify (output) {\n\t\treturn output\n\t\t\t.replace(formatptn, '')\n\t\t\t.replace(beforeptn, '')\n\t\t\t.replace(afterptn, '$1')\n\t\t\t.replace(tailptn, '$1')\n\t\t\t.replace(whiteptn, ' ')\n\t}\n\n\t/**\n\t * Use\n\t *\n\t * @param {(Array|function(...?)|number|void)?} plugin\n\t */\n\tfunction use (plugin) {\n\t\tswitch (plugin) {\n\t\t\tcase void 0:\n\t\t\tcase null: {\n\t\t\t\tplugged = plugins.length = 0\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tif (typeof plugin === 'function') {\n\t\t\t\t\tplugins[plugged++] = plugin\n\t\t\t\t}\telse if (typeof plugin === 'object') {\n\t\t\t\t\tfor (var i = 0, length = plugin.length; i < length; ++i) {\n\t\t\t\t\t\tuse(plugin[i])\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tunkwn = !!plugin|0\n\t\t\t\t}\n\t\t\t}\n \t\t}\n\n \t\treturn use\n\t}\n\n\t/**\n\t * Set\n\t *\n\t * @param {*} options\n\t */\n\tfunction set (options) {\n\t\tfor (var name in options) {\n\t\t\tvar value = options[name]\n\t\t\tswitch (name) {\n\t\t\t\tcase 'keyframe': keyed = value|0; break\n\t\t\t\tcase 'global': escape = value|0; break\n\t\t\t\tcase 'cascade': cascade = value|0; break\n\t\t\t\tcase 'compress': compress = value|0; break\n\t\t\t\tcase 'semicolon': semicolon = value|0; break\n\t\t\t\tcase 'preserve': preserve = value|0; break\n\t\t\t\tcase 'prefix':\n\t\t\t\t\tshould = null\n\n\t\t\t\t\tif (!value) {\n\t\t\t\t\t\tprefix = 0\n\t\t\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\t\t\tprefix = 1\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprefix = 2\n\t\t\t\t\t\tshould = value\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn set\n\t}\n\n\t/**\n\t * Stylis\n\t *\n\t * @param {string} selector\n\t * @param {string} input\n\t * @return {*}\n\t */\n\tfunction stylis (selector, input) {\n\t\tif (this !== void 0 && this.constructor === stylis) {\n\t\t\treturn factory(selector)\n\t\t}\n\n\t\t// setup\n\t\tvar ns = selector\n\t\tvar code = ns.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (ns = ns.trim()).charCodeAt(0)\n\t\t}\n\n\t\t// keyframe/animation namespace\n\t\tif (keyed > 0) {\n\t\t\tkey = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-')\n\t\t}\n\n\t\t// reset, used to assert if a plugin is moneky-patching the return value\n\t\tcode = 1\n\n\t\t// cascade/isolate\n\t\tif (cascade === 1) {\n\t\t\tnscope = ns\n\t\t} else {\n\t\t\tnscopealt = ns\n\t\t}\n\n\t\tvar selectors = [nscope]\n\t\tvar result\n\n\t\t// execute plugins, pre-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0, 0)\n\n\t\t\tif (result !== void 0 && typeof result === 'string') {\n\t\t\t\tinput = result\n\t\t\t}\n\t\t}\n\n\t\t// build\n\t\tvar output = compile(array, selectors, input, 0, 0)\n\n\t\t// execute plugins, post-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0, 0)\n\n\t\t\t// bypass minification\n\t\t\tif (result !== void 0 && typeof(output = result) !== 'string') {\n\t\t\t\tcode = 0\n\t\t\t}\n\t\t}\n\n\t\t// reset\n\t\tkey = ''\n\t\tnscope = ''\n\t\tnscopealt = ''\n\t\tpattern = 0\n\t\tline = 1\n\t\tcolumn = 1\n\n\t\treturn compress*code === 0 ? output : minify(output)\n\t}\n\n\tstylis['use'] = use\n\tstylis['set'] = set\n\n\tif (options !== void 0) {\n\t\tset(options)\n\t}\n\n\treturn stylis\n}));\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","package com.arkivanov.mvikotlin.rx.internal\n\nimport com.arkivanov.mvikotlin.rx.Observer\nimport com.arkivanov.mvikotlin.utils.internal.atomic\nimport com.arkivanov.mvikotlin.utils.internal.getValue\nimport com.arkivanov.mvikotlin.utils.internal.setValue\n\ninterface BehaviorSubject : Subject {\n\n val value: T\n}\n\n@Suppress(\"FunctionName\")\nfun BehaviorSubject(initialValue: T): BehaviorSubject = BehaviorSubjectImpl(initialValue)\n\nprivate class BehaviorSubjectImpl(initialValue: T) : ThreadLocalSubject(), BehaviorSubject {\n\n override var value: T by atomic(initialValue)\n private set\n\n override fun onSubscribed(observer: Observer) {\n super.onSubscribed(observer)\n\n observer.onNext(value)\n }\n\n override fun onNext(value: T) {\n this.value = value\n\n super.onNext(value)\n }\n}\n","package com.arkivanov.mvikotlin.rx.internal\n\ninterface PublishSubject : Subject\n\n@Suppress(\"FunctionName\")\nfun PublishSubject(): PublishSubject = PublishSubjectImpl()\n\nprivate class PublishSubjectImpl : ThreadLocalSubject(), PublishSubject\n","package com.arkivanov.mvikotlin.rx.internal\n\nimport com.arkivanov.mvikotlin.rx.Disposable\nimport com.arkivanov.mvikotlin.utils.internal.atomic\nimport com.arkivanov.mvikotlin.utils.internal.getValue\nimport com.arkivanov.mvikotlin.utils.internal.setValue\n\n@Suppress(\"FunctionName\")\ninline fun Disposable(crossinline onDispose: Disposable.() -> Unit = {}): Disposable =\n object : Disposable {\n @Suppress(\"ObjectPropertyName\")\n override var isDisposed: Boolean by atomic(false)\n\n override fun dispose() {\n isDisposed = true\n onDispose()\n }\n }\n","package com.arkivanov.mvikotlin.rx.internal\n\nimport com.arkivanov.mvikotlin.rx.Disposable\nimport com.arkivanov.mvikotlin.rx.Observer\nimport com.arkivanov.mvikotlin.utils.internal.assertOnMainThread\nimport kotlin.native.concurrent.ThreadLocal\n\ninternal open class ThreadLocalSubject : Subject {\n\n init {\n @Suppress(\"ReplacePutWithAssignment\", \"LeakingThis\") // This is safe in this particular case\n state[this] = MutableState()\n }\n\n override val isActive: Boolean get() = state.containsKey(this)\n\n override fun subscribe(observer: Observer): Disposable {\n val mutableState: MutableState? = getMutableState()\n\n return if (mutableState == null) {\n observer.onComplete()\n Disposable().also(Disposable::dispose)\n } else {\n val disposable = disposable()\n mutableState.map += disposable to observer\n onSubscribed(observer)\n disposable\n }\n }\n\n private fun disposable(): Disposable =\n Disposable {\n assertOnMainThread()\n getMutableState()?.also { it.map -= this }\n }\n\n protected open fun onSubscribed(observer: Observer) {\n }\n\n override fun onNext(value: T) {\n val mutableState = getMutableState() ?: return\n mutableState.queue += value\n mutableState.drainIfNeeded()\n }\n\n override fun onComplete() {\n val mutableState = removeMutableState() ?: return\n mutableState.isCompleted = true\n mutableState.drainIfNeeded()\n }\n\n private fun MutableState.drainIfNeeded() {\n if (!isDraining) {\n isDraining = true\n try {\n drain()\n } finally {\n isDraining = false\n }\n }\n }\n\n private fun MutableState.drain() {\n while (queue.isNotEmpty()) {\n val value = queue.removeAt(0)\n map.values.forEach { it.onNext(value) }\n }\n\n if (isCompleted) {\n map.forEach { (disposable, observer) ->\n disposable.dispose()\n observer.onComplete()\n }\n }\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n private fun getMutableState(): MutableState? = state[this] as MutableState?\n\n @Suppress(\"UNCHECKED_CAST\")\n private fun removeMutableState(): MutableState? = state.remove(this) as MutableState?\n\n @ThreadLocal\n private companion object {\n private val state: MutableMap, MutableState<*>> = HashMap()\n }\n\n private class MutableState {\n var map = mapOf>()\n val queue = ArrayList()\n var isCompleted = false\n var isDraining = false\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,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else if (process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","\"use strict\";\n\n// ref: https://github.com/tc39/proposal-global\nvar getGlobal = function () {\n\t// the only reliable means to get the global object is\n\t// `Function('return this')()`\n\t// However, this causes CSP violations in Chrome apps.\n\tif (typeof self !== 'undefined') { return self; }\n\tif (typeof window !== 'undefined') { return window; }\n\tif (typeof global !== 'undefined') { return global; }\n\tthrow new Error('unable to locate global object');\n}\n\nvar global = getGlobal();\n\nmodule.exports = exports = global.fetch;\n\n// Needed for TypeScript and Webpack.\nexports.default = global.fetch.bind(global);\n\nexports.Headers = global.Headers;\nexports.Request = global.Request;\nexports.Response = global.Response;","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.database\n\nimport co.touchlab.kermit.CommonLogger\nimport co.touchlab.kermit.Logger\nimport com.shabinder.database.Database\n\nactual fun createDatabase(): Database? = null\nactual fun getLogger(): Logger = CommonLogger()\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features.json\n\nimport io.ktor.http.*\n\ninternal class JsonContentTypeMatcher : ContentTypeMatcher {\n override fun contains(contentType: ContentType): Boolean {\n if (ContentType.Application.Json.match(contentType)) {\n return true\n }\n\n val value = contentType.withoutParameters().toString()\n return value.startsWith(\"application/\") && value.endsWith(\"+json\")\n }\n}\n","/*\n * Copyright 2014-2020 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features.json\n\nimport io.ktor.client.*\nimport io.ktor.client.features.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.client.utils.*\nimport io.ktor.http.*\nimport io.ktor.util.*\nimport io.ktor.utils.io.*\n\n/**\n * Platform default serializer.\n *\n * Uses service loader on jvm.\n * Consider to add one of the following dependencies:\n * - ktor-client-gson\n * - ktor-client-json\n */\npublic expect fun defaultSerializer(): JsonSerializer\n\n/**\n * [HttpClient] feature that serializes/de-serializes as JSON custom objects\n * to request and from response bodies using a [serializer].\n *\n * The default [serializer] is [GsonSerializer].\n *\n * The default [acceptContentTypes] is a list which contains [ContentType.Application.Json]\n *\n * Note: It will de-serialize the body response if the specified type is a public accessible class\n * and the Content-Type is one of [acceptContentTypes] list (`application/json` by default).\n *\n * @property serializer that is used to serialize and deserialize request/response bodies\n * @property acceptContentTypes that are allowed when receiving content\n */\npublic class JsonFeature internal constructor(\n public val serializer: JsonSerializer,\n public val acceptContentTypes: List = listOf(ContentType.Application.Json),\n private val receiveContentTypeMatchers: List = listOf(JsonContentTypeMatcher()),\n) {\n @Deprecated(\"Install feature properly instead of direct instantiation.\", level = DeprecationLevel.ERROR)\n public constructor(serializer: JsonSerializer) : this(serializer, listOf(ContentType.Application.Json))\n\n internal constructor(config: Config) : this(\n config.serializer ?: defaultSerializer(),\n config.acceptContentTypes,\n config.receiveContentTypeMatchers\n )\n\n /**\n * [JsonFeature] configuration that is used during installation\n */\n public class Config {\n /**\n * Serializer that will be used for serializing requests and deserializing response bodies.\n *\n * Default value for [serializer] is [defaultSerializer].\n */\n public var serializer: JsonSerializer? = null\n\n /**\n * Backing field with mutable list of content types that are handled by this feature.\n */\n private val _acceptContentTypes: MutableList = mutableListOf(ContentType.Application.Json)\n private val _receiveContentTypeMatchers: MutableList =\n mutableListOf(JsonContentTypeMatcher())\n\n /**\n * List of content types that are handled by this feature.\n * It also affects `Accept` request header value.\n * Please note that wildcard content types are supported but no quality specification provided.\n */\n public var acceptContentTypes: List\n set(value) {\n require(value.isNotEmpty()) { \"At least one content type should be provided to acceptContentTypes\" }\n\n _acceptContentTypes.clear()\n _acceptContentTypes.addAll(value)\n }\n get() = _acceptContentTypes\n\n /**\n * List of content type matchers that are handled by this feature.\n * Please note that wildcard content types are supported but no quality specification provided.\n */\n public var receiveContentTypeMatchers: List\n set(value) {\n require(value.isNotEmpty()) { \"At least one content type should be provided to acceptContentTypes\" }\n _receiveContentTypeMatchers.clear()\n _receiveContentTypeMatchers.addAll(value)\n }\n get() = _receiveContentTypeMatchers\n\n /**\n * Adds accepted content types. Be aware that [ContentType.Application.Json] accepted by default is removed from\n * the list if you use this function to provide accepted content types.\n * It also affects `Accept` request header value.\n */\n public fun accept(vararg contentTypes: ContentType) {\n _acceptContentTypes += contentTypes\n }\n\n /**\n * Adds accepted content types. Existing content types will not be removed.\n */\n public fun receive(matcher: ContentTypeMatcher) {\n _receiveContentTypeMatchers += matcher\n }\n }\n\n internal fun canHandle(contentType: ContentType): Boolean {\n val accepted = acceptContentTypes.any { contentType.match(it) }\n val matchers = receiveContentTypeMatchers\n\n return accepted || matchers.any { matcher -> matcher.contains(contentType) }\n }\n\n /**\n * Companion object for feature installation\n */\n public companion object Feature : HttpClientFeature {\n override val key: AttributeKey = AttributeKey(\"Json\")\n\n override fun prepare(block: Config.() -> Unit): JsonFeature {\n val config = Config().apply(block)\n val serializer = config.serializer ?: defaultSerializer()\n val allowedContentTypes = config.acceptContentTypes.toList()\n val receiveContentTypeMatchers = config.receiveContentTypeMatchers\n\n return JsonFeature(serializer, allowedContentTypes, receiveContentTypeMatchers)\n }\n\n override fun install(feature: JsonFeature, scope: HttpClient) {\n scope.requestPipeline.intercept(HttpRequestPipeline.Transform) { payload ->\n feature.acceptContentTypes.forEach { context.accept(it) }\n\n val contentType = context.contentType() ?: return@intercept\n if (!feature.canHandle(contentType)) return@intercept\n\n context.headers.remove(HttpHeaders.ContentType)\n\n val serializedContent = when (payload) {\n Unit -> EmptyContent\n is EmptyContent -> EmptyContent\n else -> feature.serializer.write(payload, contentType)\n }\n\n proceedWith(serializedContent)\n }\n\n scope.responsePipeline.intercept(HttpResponsePipeline.Transform) { (info, body) ->\n if (body !is ByteReadChannel) return@intercept\n\n val contentType = context.response.contentType() ?: return@intercept\n if (!feature.canHandle(contentType)) return@intercept\n\n val parsedBody = feature.serializer.read(info, body.readRemaining())\n val response = HttpResponseContainer(info, parsedBody)\n proceedWith(response)\n }\n }\n }\n}\n\n/**\n * Install [JsonFeature].\n */\npublic fun HttpClientConfig<*>.Json(block: JsonFeature.Config.() -> Unit) {\n install(JsonFeature, block)\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features.json\n\nimport io.ktor.client.call.*\nimport io.ktor.http.*\nimport io.ktor.http.content.*\nimport io.ktor.utils.io.core.*\n\n/**\n * Client json serializer.\n */\npublic interface JsonSerializer {\n /**\n * Convert data object to [OutgoingContent].\n */\n public fun write(data: Any, contentType: ContentType): OutgoingContent\n\n /**\n * Convert data object to [OutgoingContent].\n */\n public fun write(data: Any): OutgoingContent = write(data, ContentType.Application.Json)\n\n /**\n * Read content from response using information specified in [type].\n */\n public fun read(type: TypeInfo, body: Input): Any\n}\n","/*\n * Copyright 2014-2019 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.\n */\n\npackage io.ktor.client.features.json\n\nimport io.ktor.util.*\n\n/**\n * Platform default serializer.\n */\npublic actual fun defaultSerializer(): JsonSerializer =\n serializersStore.first()\n\n@Suppress(\"KDocMissingDocumentation\")\n@InternalAPI\npublic val serializersStore: MutableList = mutableListOf()\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.main\n\nimport com.arkivanov.decompose.ComponentContext\nimport com.arkivanov.mvikotlin.core.store.StoreFactory\nimport com.shabinder.common.di.Dir\nimport com.shabinder.common.di.Picture\nimport com.shabinder.common.main.integration.SpotiFlyerMainImpl\nimport com.shabinder.common.models.Consumer\nimport com.shabinder.common.models.DownloadRecord\nimport com.shabinder.database.Database\nimport kotlinx.coroutines.flow.Flow\n\ninterface SpotiFlyerMain {\n\n val models: Flow\n\n /*\n * We Intend to Move to List Screen\n * Note: Implementation in Root\n * */\n fun onLinkSearch(link: String)\n\n /*\n * Update TextBox's Text\n * */\n fun onInputLinkChanged(link: String)\n\n /*\n * change TabBar Selected Category\n * */\n fun selectCategory(category: HomeCategory)\n\n /*\n * Load Image from cache/Internet and cache it\n * */\n suspend fun loadImage(url: String): Picture\n\n interface Dependencies {\n val mainOutput: Consumer\n val storeFactory: StoreFactory\n val database: Database?\n val dir: Dir\n val showPopUpMessage: (String) -> Unit\n }\n\n sealed class Output {\n data class Search(val link: String) : Output()\n }\n\n data class State(\n val records: List = emptyList(),\n val link: String = \"\",\n val selectedCategory: HomeCategory = HomeCategory.About\n )\n enum class HomeCategory {\n About, History\n }\n}\n\n@Suppress(\"FunctionName\") // Factory function\nfun SpotiFlyerMain(componentContext: ComponentContext, dependencies: SpotiFlyerMain.Dependencies): SpotiFlyerMain =\n SpotiFlyerMainImpl(componentContext, dependencies)\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.main.integration\n\nimport com.arkivanov.decompose.ComponentContext\nimport com.arkivanov.mvikotlin.extensions.coroutines.states\nimport com.shabinder.common.di.Picture\nimport com.shabinder.common.di.isInternetAvailable\nimport com.shabinder.common.main.SpotiFlyerMain\nimport com.shabinder.common.main.SpotiFlyerMain.Dependencies\nimport com.shabinder.common.main.SpotiFlyerMain.HomeCategory\nimport com.shabinder.common.main.SpotiFlyerMain.Output\nimport com.shabinder.common.main.SpotiFlyerMain.State\nimport com.shabinder.common.main.store.SpotiFlyerMainStore.Intent\nimport com.shabinder.common.main.store.SpotiFlyerMainStoreProvider\nimport com.shabinder.common.main.store.getStore\nimport kotlinx.coroutines.flow.Flow\n\ninternal class SpotiFlyerMainImpl(\n componentContext: ComponentContext,\n dependencies: Dependencies\n) : SpotiFlyerMain, ComponentContext by componentContext, Dependencies by dependencies {\n\n private val store =\n instanceKeeper.getStore {\n SpotiFlyerMainStoreProvider(\n storeFactory = storeFactory,\n database = database,\n showPopUpMessage = showPopUpMessage\n ).provide()\n }\n\n override val models: Flow = store.states\n\n override fun onLinkSearch(link: String) {\n if (isInternetAvailable) mainOutput.callback(Output.Search(link = link))\n else showPopUpMessage(\"Check Network Connection Please\")\n }\n\n override fun onInputLinkChanged(link: String) {\n store.accept(Intent.SetLink(link))\n }\n\n override fun selectCategory(category: HomeCategory) {\n store.accept(Intent.SelectCategory(category))\n }\n\n override suspend fun loadImage(url: String): Picture = dir.loadImage(url)\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.main.store\n\nimport com.arkivanov.decompose.instancekeeper.InstanceKeeper\nimport com.arkivanov.decompose.instancekeeper.getOrCreate\nimport com.arkivanov.mvikotlin.core.store.Store\n\nfun > InstanceKeeper.getStore(key: Any, factory: () -> T): T =\n getOrCreate(key) { StoreHolder(factory()) }\n .store\n\ninline fun > InstanceKeeper.getStore(noinline factory: () -> T): T =\n getStore(T::class, factory)\n\nprivate class StoreHolder>(\n val store: T\n) : InstanceKeeper.Instance {\n override fun onDestroy() {\n store.dispose()\n }\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.main.store\n\nimport com.arkivanov.mvikotlin.core.store.Store\nimport com.shabinder.common.main.SpotiFlyerMain\nimport com.shabinder.common.main.store.SpotiFlyerMainStore.Intent\n\ninternal interface SpotiFlyerMainStore : Store {\n sealed class Intent {\n data class OpenPlatform(val platformID: String, val platformLink: String) : Intent()\n data class SetLink(val link: String) : Intent()\n data class SelectCategory(val category: SpotiFlyerMain.HomeCategory) : Intent()\n object GiveDonation : Intent()\n object ShareApp : Intent()\n }\n}\n","/*\n * * Copyright (c) 2021 Shabinder Singh\n * * This program is free software: you can redistribute it and/or modify\n * * it under the terms of the GNU General Public License as published by\n * * the Free Software Foundation, either version 3 of the License, or\n * * (at your option) any later version.\n * *\n * * This program is distributed in the hope that it will be useful,\n * * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * * GNU General Public License for more details.\n * *\n * * You should have received a copy of the GNU General Public License\n * * along with this program. If not, see .\n */\n\npackage com.shabinder.common.main.store\n\nimport com.arkivanov.mvikotlin.core.store.Reducer\nimport com.arkivanov.mvikotlin.core.store.SimpleBootstrapper\nimport com.arkivanov.mvikotlin.core.store.Store\nimport com.arkivanov.mvikotlin.core.store.StoreFactory\nimport com.arkivanov.mvikotlin.extensions.coroutines.SuspendExecutor\nimport com.shabinder.common.di.giveDonation\nimport com.shabinder.common.di.openPlatform\nimport com.shabinder.common.di.shareApp\nimport com.shabinder.common.main.SpotiFlyerMain\nimport com.shabinder.common.main.SpotiFlyerMain.State\nimport com.shabinder.common.main.store.SpotiFlyerMainStore.Intent\nimport com.shabinder.common.models.DownloadRecord\nimport com.shabinder.database.Database\nimport com.squareup.sqldelight.runtime.coroutines.asFlow\nimport com.squareup.sqldelight.runtime.coroutines.mapToList\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.flow.Flow\nimport kotlinx.coroutines.flow.collect\nimport kotlinx.coroutines.flow.map\n\ninternal class SpotiFlyerMainStoreProvider(\n private val storeFactory: StoreFactory,\n private val showPopUpMessage: (String) -> Unit,\n private val database: Database?\n) {\n\n fun provide(): SpotiFlyerMainStore =\n object :\n SpotiFlyerMainStore,\n Store by storeFactory.create(\n name = \"SpotiFlyerHomeStore\",\n initialState = State(),\n bootstrapper = SimpleBootstrapper(Unit),\n executorFactory = ::ExecutorImpl,\n reducer = ReducerImpl\n ) {}\n\n val updates: Flow>? =\n database?.downloadRecordDatabaseQueries\n ?.selectAll()\n ?.asFlow()\n ?.mapToList(Dispatchers.Default)\n ?.map {\n it.map { record ->\n record.run {\n DownloadRecord(id, type, name, link, coverUrl, totalFiles)\n }\n }\n }\n\n private sealed class Result {\n data class ItemsLoaded(val items: List) : Result()\n data class CategoryChanged(val category: SpotiFlyerMain.HomeCategory) : Result()\n data class LinkChanged(val link: String) : Result()\n }\n\n private inner class ExecutorImpl : SuspendExecutor() {\n override suspend fun executeAction(action: Unit, getState: () -> State) {\n updates?.collect {\n dispatch(Result.ItemsLoaded(it))\n }\n }\n\n override suspend fun executeIntent(intent: Intent, getState: () -> State) {\n when (intent) {\n is Intent.OpenPlatform -> openPlatform(intent.platformID, intent.platformLink)\n is Intent.GiveDonation -> giveDonation()\n is Intent.ShareApp -> shareApp()\n is Intent.SetLink -> dispatch(Result.LinkChanged(link = intent.link))\n is Intent.SelectCategory -> dispatch(Result.CategoryChanged(intent.category))\n }\n }\n }\n\n private object ReducerImpl : Reducer {\n override fun State.reduce(result: Result): State =\n when (result) {\n is Result.ItemsLoaded -> copy(records = result.items)\n is Result.LinkChanged -> copy(link = result.link)\n is Result.CategoryChanged -> copy(selectedCategory = result.category)\n }\n }\n}\n","package com.arkivanov.mvikotlin.extensions.coroutines\n\nimport com.arkivanov.mvikotlin.rx.Disposable\nimport com.arkivanov.mvikotlin.rx.Observer\nimport com.arkivanov.mvikotlin.rx.observer\nimport kotlinx.coroutines.ExperimentalCoroutinesApi\nimport kotlinx.coroutines.channels.awaitClose\nimport kotlinx.coroutines.flow.Flow\nimport kotlinx.coroutines.flow.callbackFlow\n\n@ExperimentalCoroutinesApi\ninternal inline fun T.toFlow(\n crossinline subscribe: T.(Observer) -> Disposable\n): Flow =\n callbackFlow {\n val disposable =\n subscribe(\n observer(\n onComplete = { channel.close() },\n onNext = { channel.offer(it) }\n )\n )\n\n awaitClose(disposable::dispose)\n }\n","package com.arkivanov.mvikotlin.extensions.coroutines\n\nimport com.arkivanov.mvikotlin.core.annotations.MainThread\nimport com.arkivanov.mvikotlin.core.store.Bootstrapper\nimport com.arkivanov.mvikotlin.core.store.Executor\nimport com.arkivanov.mvikotlin.core.store.Executor.Callbacks\nimport com.arkivanov.mvikotlin.core.store.Reducer\nimport com.arkivanov.mvikotlin.core.store.Store\nimport com.arkivanov.mvikotlin.utils.internal.atomic\nimport com.arkivanov.mvikotlin.utils.internal.initialize\nimport com.arkivanov.mvikotlin.utils.internal.requireValue\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.cancel\nimport kotlinx.coroutines.launch\nimport kotlin.coroutines.CoroutineContext\n\n/**\n * An abstract implementation of the [Executor] that provides interoperability with coroutines.\n * All coroutines are launched in a scope which closes when the [Executor] is disposed.\n */\nopen class SuspendExecutor(\n mainContext: CoroutineContext = Dispatchers.Main\n) : Executor {\n\n private val callbacks = atomic>()\n private val getState: () -> State = { callbacks.requireValue().state }\n private val scope = CoroutineScope(mainContext)\n\n final override fun init(callbacks: Callbacks) {\n this.callbacks.initialize(callbacks)\n }\n\n final override fun handleIntent(intent: Intent) {\n scope.launch {\n executeIntent(intent, getState)\n }\n }\n\n /**\n * A suspending variant of the [Executor.handleIntent] method.\n * The coroutine is launched in a scope which closes when the [Executor] is disposed.\n *\n * @param intent an `Intent` received by the [Store]\n * @param getState a `State` supplier that returns the *current* `State` of the [Store]\n */\n @MainThread\n protected open suspend fun executeIntent(intent: Intent, getState: () -> State) {\n }\n\n final override fun handleAction(action: Action) {\n scope.launch {\n executeAction(action, getState)\n }\n }\n\n /**\n * Called for every `Action` produced by the [Executor]\n * The coroutine is launched in a scope which closes when the [Executor] is disposed.\n *\n * @param action an `Action` produced by the [Bootstrapper]\n * @param getState a `State` supplier that returns the *current* `State` of the [Store]\n */\n @MainThread\n protected open suspend fun executeAction(action: Action, getState: () -> State) {\n }\n\n override fun dispose() {\n scope.cancel()\n }\n\n /**\n * Dispatches the provided `Result` to the [Reducer].\n * The updated `State` will be available immediately after this method returns.\n *\n * @param result a `Result` to be dispatched to the `Reducer`\n */\n @MainThread\n protected fun dispatch(result: Result) {\n callbacks.requireValue().onResult(result)\n }\n\n /**\n * Sends the provided `Label` to the [Store] for publication\n *\n * @param label a `Label` to be published\n */\n @MainThread\n protected fun publish(label: Label) {\n callbacks.requireValue().onLabel(label)\n }\n}\n","package com.arkivanov.mvikotlin.extensions.coroutines\n\nimport com.arkivanov.mvikotlin.core.store.Store\nimport kotlinx.coroutines.ExperimentalCoroutinesApi\nimport kotlinx.coroutines.flow.Flow\nimport kotlin.coroutines.CoroutineContext\n\n/**\n * Returns a [Flow] that emits [Store] `States`.\n * The first emission with the current `State` will be performed synchronously on collection.\n * Please not that the actual collection of the [Flow] may not be synchronous depending on [CoroutineContext] being used.\n */\n@ExperimentalCoroutinesApi\nval Store<*, State, *>.states: Flow\n get() = toFlow(Store<*, State, *>::states)\n\n/**\n * Returns a [Flow] that emits [Store] `Labels`\n */\n@ExperimentalCoroutinesApi\nval