Build Information
Successful build of swift-log-elk, reference develop (335687), with Swift 6.4 for Linux on 18 Sep 2026 11:56:02 UTC.
Swift 6 data race errors: 0
Build Command
bash -c docker run --pull=always --rm -v "checkouts-53886769-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:basic-6.4-latest swift build --triple x86_64-unknown-linux-gnu 2>&1Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/Apodini/swift-log-elk.git
Reference: develop
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/Apodini/swift-log-elk
* branch develop -> FETCH_HEAD
* [new branch] develop -> origin/develop
HEAD is now at 3356875 Adapt Swift tools
Cloned https://github.com/Apodini/swift-log-elk.git
Revision (git rev-parse @):
33568756dd46d00b7b3da63f11bd16c909df633b
SUCCESS checkout https://github.com/Apodini/swift-log-elk.git at develop
========================================
Build
========================================
Selected platform: linux
Swift version: 6.4
Building package at path: $PWD
https://github.com/Apodini/swift-log-elk.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-53886769-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:basic-6.4-latest swift build --triple x86_64-unknown-linux-gnu 2>&1
basic-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:c77fcce225e223ac0fafed844619173fc6de8d62dd560eeb28db3182af6a282b
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:basic-6.4-latest
Fetching https://github.com/apple/swift-log.git
Fetching https://github.com/swift-server/async-http-client.git
[1/8096] Fetching swift-log
Fetched https://github.com/apple/swift-log.git (0.54s)
[1/16197] Fetching async-http-client
Fetched https://github.com/swift-server/async-http-client.git (0.90s)
Computing version for https://github.com/swift-server/async-http-client.git
Computed https://github.com/swift-server/async-http-client.git at 1.5.1 (1.09s)
Fetching https://github.com/apple/swift-nio.git
Fetching https://github.com/apple/swift-nio-extras.git
Fetching https://github.com/apple/swift-nio-transport-services.git
Fetching https://github.com/apple/swift-nio-ssl.git
[1/16065] Fetching swift-nio-ssl
[965/18928] Fetching swift-nio-ssl, swift-nio-transport-services
[16680/25609] Fetching swift-nio-ssl, swift-nio-transport-services, swift-nio-extras
[25610/111642] Fetching swift-nio-ssl, swift-nio-transport-services, swift-nio-extras, swift-nio
Fetched https://github.com/apple/swift-nio-transport-services.git (1.04s)
Fetched https://github.com/apple/swift-nio-extras.git (1.04s)
[23808/102098] Fetching swift-nio-ssl, swift-nio
Fetched https://github.com/apple/swift-nio-ssl.git (1.05s)
[8604/86033] Fetching swift-nio
Fetched https://github.com/apple/swift-nio.git (2.86s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.4.4 (3.05s)
Computing version for https://github.com/apple/swift-nio-transport-services.git
Computed https://github.com/apple/swift-nio-transport-services.git at 1.28.0 (0.20s)
Fetching https://github.com/apple/swift-atomics.git
[1/1875] Fetching swift-atomics
Fetched https://github.com/apple/swift-atomics.git (0.56s)
Computing version for https://github.com/apple/swift-atomics.git
Computed https://github.com/apple/swift-atomics.git at 1.3.1 (0.72s)
Computing version for https://github.com/apple/swift-nio.git
Computed https://github.com/apple/swift-nio.git at 2.103.0 (0.33s)
Fetching https://github.com/apple/swift-system.git
Fetching https://github.com/apple/swift-collections.git
[1/6898] Fetching swift-system
[2/34177] Fetching swift-system, swift-collections
Fetched https://github.com/apple/swift-system.git (1.12s)
Fetched https://github.com/apple/swift-collections.git (1.13s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.6.0 (1.42s)
Computing version for https://github.com/apple/swift-system.git
Computed https://github.com/apple/swift-system.git at 1.8.1 (0.21s)
Computing version for https://github.com/apple/swift-nio-extras.git
Computed https://github.com/apple/swift-nio-extras.git at 1.26.0 (0.22s)
Fetching https://github.com/apple/swift-http-structured-headers.git
Fetching https://github.com/apple/swift-http-types.git
Fetching https://github.com/apple/swift-algorithms.git
Fetching https://github.com/apple/swift-nio-http2.git
[1/6145] Fetching swift-algorithms
[370/8080] Fetching swift-algorithms, swift-http-types
[8023/20332] Fetching swift-algorithms, swift-http-types, swift-nio-http2
Fetched https://github.com/apple/swift-http-types.git (0.89s)
Fetched https://github.com/apple/swift-algorithms.git (0.90s)
Fetched https://github.com/apple/swift-nio-http2.git (0.90s)
[1/1253] Fetching swift-http-structured-headers
Fetched https://github.com/apple/swift-http-structured-headers.git (1.04s)
Computing version for https://github.com/apple/swift-algorithms.git
Computed https://github.com/apple/swift-algorithms.git at 1.2.1 (1.23s)
Fetching https://github.com/apple/swift-numerics.git
[1/6636] Fetching swift-numerics
Fetched https://github.com/apple/swift-numerics.git (0.72s)
Computing version for https://github.com/apple/swift-numerics.git
Computed https://github.com/apple/swift-numerics.git at 1.1.1 (0.89s)
Computing version for https://github.com/apple/swift-http-structured-headers.git
Computed https://github.com/apple/swift-http-structured-headers.git at 1.7.0 (0.18s)
Computing version for https://github.com/apple/swift-http-types.git
Computed https://github.com/apple/swift-http-types.git at 1.8.0 (0.21s)
Computing version for https://github.com/apple/swift-nio-http2.git
Computed https://github.com/apple/swift-nio-http2.git at 1.46.0 (0.19s)
Computing version for https://github.com/apple/swift-nio-ssl.git
Computed https://github.com/apple/swift-nio-ssl.git at 2.37.5 (0.22s)
Creating working copy for https://github.com/apple/swift-numerics.git
Working copy of https://github.com/apple/swift-numerics.git resolved at 1.1.1
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.4.4
Creating working copy for https://github.com/apple/swift-algorithms.git
Working copy of https://github.com/apple/swift-algorithms.git resolved at 1.2.1
Creating working copy for https://github.com/apple/swift-nio-transport-services.git
Working copy of https://github.com/apple/swift-nio-transport-services.git resolved at 1.28.0
Creating working copy for https://github.com/apple/swift-nio-http2.git
Working copy of https://github.com/apple/swift-nio-http2.git resolved at 1.46.0
Creating working copy for https://github.com/swift-server/async-http-client.git
Working copy of https://github.com/swift-server/async-http-client.git resolved at 1.5.1
Creating working copy for https://github.com/apple/swift-http-types.git
Working copy of https://github.com/apple/swift-http-types.git resolved at 1.8.0
Creating working copy for https://github.com/apple/swift-nio-extras.git
Working copy of https://github.com/apple/swift-nio-extras.git resolved at 1.26.0
Creating working copy for https://github.com/apple/swift-nio-ssl.git
Working copy of https://github.com/apple/swift-nio-ssl.git resolved at 2.37.5
Creating working copy for https://github.com/apple/swift-system.git
Working copy of https://github.com/apple/swift-system.git resolved at 1.8.1
Creating working copy for https://github.com/apple/swift-atomics.git
Working copy of https://github.com/apple/swift-atomics.git resolved at 1.3.1
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.6.0
Creating working copy for https://github.com/apple/swift-http-structured-headers.git
Working copy of https://github.com/apple/swift-http-structured-headers.git resolved at 1.7.0
Creating working copy for https://github.com/apple/swift-nio.git
Working copy of https://github.com/apple/swift-nio.git resolved at 2.103.0
Building for debugging...
[Computing dependencies]
[Constructing description]
[Pre-planning 1 / 1079]
[Planning deferred tasks]
[Starting]
[105 / 775] LoggingELK
[210 / 806] InternalCollectionsUtilities
[211 / 806] _NIOBase64
[222 / 806] NIOConcurrencyHelpers
[223 / 806] _NIODataStructures
[225 / 806] _NIODataStructures
[239 / 806] NIOConcurrencyHelpers-product
[241 / 807] NIOConcurrencyHelpers-product
[246 / 807] Logging-product
[247 / 807] Logging-product
[248 / 807] InternalCollectionsUtilities
[254 / 808] InternalCollectionsUtilities
[262 / 808] CNIOPosix
[269 / 809] ContainersPreview
[280 / 820] Logging
[299 / 821]
[305 / 830] CNIOBoringSSL
[307 / 831] CNIOBoringSSL
[308 / 832] CNIOBoringSSL
[311 / 832] CNIOBoringSSL
[314 / 832] CNIOBoringSSL
[316 / 832] CNIOBoringSSL
[319 / 832] CNIOBoringSSL
[325 / 832] CNIOBoringSSL
[326 / 832] CNIOBoringSSL
[330 / 832] CNIOBoringSSL
[334 / 832] CNIOBoringSSL
[337 / 832] CNIOBoringSSL
[339 / 832] CNIOBoringSSL
[343 / 832] CNIOBoringSSL
[345 / 832] CNIOBoringSSL
[353 / 832] CNIOBoringSSL
[356 / 832] CNIOBoringSSL
[357 / 832] CNIOBoringSSL
[359 / 832] CNIOBoringSSL
[369 / 832] CNIOBoringSSL
[370 / 832] CNIOBoringSSL
[372 / 832] CNIOBoringSSL
[376 / 832] CNIOBoringSSL
[377 / 832] CNIOBoringSSL
[382 / 832] CNIOBoringSSL
[385 / 832] CNIOBoringSSL
[387 / 832] CNIOBoringSSL
[390 / 832] CNIOBoringSSL
[391 / 832] CNIOBoringSSL
[392 / 832] CNIOBoringSSL
[394 / 832] CNIOBoringSSL
[396 / 832] CNIOBoringSSL
[401 / 832] CNIOBoringSSL
[404 / 832] CNIOBoringSSL
[405 / 832] CNIOBoringSSL
[408 / 832] CNIOBoringSSL
[411 / 832] CNIOBoringSSL
[412 / 832] CNIOBoringSSL
[415 / 832] CNIOBoringSSL
[416 / 832] CNIOBoringSSL
[418 / 832] CNIOBoringSSL
[420 / 832] CNIOBoringSSL
[422 / 832] CNIOBoringSSL
[423 / 832] CNIOBoringSSL
[426 / 832] CNIOBoringSSL
[431 / 832] CNIOBoringSSL
[442 / 832] CNIOBoringSSL
[457 / 832] CNIOBoringSSL
[463 / 832] CNIOBoringSSL
[464 / 832] CNIOBoringSSL
[467 / 832] CNIOBoringSSL
[469 / 832] CNIOBoringSSL
[473 / 832] CNIOBoringSSL
[476 / 832] CNIOBoringSSL
[478 / 832] CNIOBoringSSL
[483 / 832] CNIOBoringSSL
[486 / 832] CNIOBoringSSL
[489 / 832] CNIOBoringSSL
[493 / 832] CNIOBoringSSL
[494 / 832] CNIOBoringSSL
[497 / 832] CNIOBoringSSL
[499 / 832] CNIOBoringSSL
[505 / 832] CNIOBoringSSL
[508 / 832] CNIOBoringSSL
[513 / 832] CNIOBoringSSL
[524 / 832] CNIOBoringSSL
[526 / 832] CNIOBoringSSL
[531 / 832] CNIOBoringSSL
[536 / 832] CNIOBoringSSL
[538 / 832] CNIOBoringSSL
[542 / 832] CNIOBoringSSL
[544 / 832] CNIOBoringSSL
[550 / 832] CNIOBoringSSL
[562 / 832] CNIOBoringSSL
[563 / 832] CNIOBoringSSL
[569 / 832] CNIOBoringSSL
[573 / 832] CNIOBoringSSL
[576 / 832] CNIOBoringSSL
[580 / 832] CNIOBoringSSL
[582 / 832] CNIOBoringSSL
[586 / 832] CNIOBoringSSL
[589 / 832] CNIOBoringSSL
[590 / 832] CNIOBoringSSL
[594 / 832] CNIOBoringSSL
[597 / 832] CNIOBoringSSL
[599 / 832] CNIOBoringSSL
[602 / 832] CNIOBoringSSL
[603 / 832] CNIOBoringSSL
[606 / 832] CNIOBoringSSL
[610 / 832] CNIOBoringSSL
[612 / 832] CNIOBoringSSL
[614 / 832] CNIOBoringSSL
[618 / 832] CNIOBoringSSL
[622 / 832] CNIOBoringSSL
[628 / 832] CNIOBoringSSL
[640 / 832] CNIOBoringSSL
[644 / 832] CNIOBoringSSL
[651 / 832] CNIOBoringSSL
[653 / 832] CNIOBoringSSL
[658 / 832] CNIOBoringSSL
[660 / 832] CNIOBoringSSL
[664 / 832] CNIOBoringSSL
[675 / 832] CNIOBoringSSL
[683 / 832] CNIOBoringSSL
[690 / 832] CNIOBoringSSL
[691 / 832] CNIOBoringSSL
[692 / 832] CNIOBoringSSL
[696 / 832] CNIOBoringSSL
[698 / 832] CNIOBoringSSL
[700 / 832] CNIOBoringSSL
[704 / 832] CNIOBoringSSL
[707 / 832] CNIOBoringSSL
[711 / 832] CNIOBoringSSL
[716 / 832] ContainersPreview
[720 / 842] Atomics
[722 / 842] Atomics
[725 / 842] Atomics
[727 / 842] Atomics
[728 / 842] CNIOAtomics
[730 / 842] InternalCollectionsUtilities
[732 / 842] Atomics
[734 / 842] Atomics
[749 / 853] NIOCore
[749 / 854] NIOCore
[750 / 854] NIOCore
[754 / 854]
[755 / 854] NIOCore
[755 / 855] NIOCore
[773 / 874] NIOEmbedded
[776 / 874] NIOEmbedded
[783 / 874] NIOPosix
[784 / 875] NIOPosix
[785 / 875] NIOFoundationEssentialsCompat
[790 / 875] NIOFoundationEssentialsCompat
[792 / 876] NIOFoundationEssentialsCompat
[803 / 879] NIOPosix
[806 / 879] NIOFoundationEssentialsCompat
[816 / 887] NIOTLS
[823 / 887] NIOTLS
[825 / 887] NIOTLS-product
[829 / 907] NIOHTTP1
[831 / 907] NIOSOCKS
[833 / 907] NIOSOCKS
[836 / 908] NIOSOCKS
[844 / 908] NIOTLS
[848 / 908] NIOHTTP1
[850 / 908] NIOHTTP1
[852 / 909] NIOHTTP1
[858 / 909] NIOSOCKS
[859 / 909] NIOHTTP1-product
[866 / 934] NIOSSL
[868 / 934] NIOTransportServices
[875 / 934] NIOTransportServices
[877 / 934] NIOTransportServices-product
[887 / 935] NIOTransportServices
[888 / 935] NIOHTTP1
[891 / 935] NIOSSL
[893 / 936] NIOSSL
[895 / 936] NIOHTTP1
[899 / 937] NIOSSL
[904 / 937] NIOHTTP1
[905 / 937] NIOSSL-product
[914 / 946] NIOHTTPCompression
[921 / 946] NIOHTTPCompression
[923 / 947] NIOHTTPCompression
[930 / 956] AsyncHTTPClient
[932 / 956] AsyncHTTPClient
[934 / 957] NIOHTTPCompression
[935 / 957] NIOSSL
[938 / 958] NIOSSL
[941 / 958] NIOTransportServices
[943 / 958] AsyncHTTPClient
[954 / 968] LoggingELK
[956 / 968] LoggingELK
/host/spi-builder-workspace/Sources/LoggingELK/LogstashLogHandler+HTTPFormatting.swift:113:1: [1;33mwarning: [1;39mextension declares a conformance of imported type 'MetadataValue' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'Logging' introduce this conformance in the future[0;0m
[0;36m111 |[0;0m
[0;36m112 |[0;0m /// Make `Logger.MetadataValue` conform to `Encodable` and `Decodable`, so it can be sent to Logstash
[0;36m113 |[0;0m extension Logger.MetadataValue: Codable {
[0;36m|[0;0m |- [1;33mwarning: [1;39mextension declares a conformance of imported type 'MetadataValue' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'Logging' introduce this conformance in the future[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd '@retroactive' to silence this warning[0;0m
[0;36m114 |[0;0m public func encode(to encoder: Encoder) throws {
[0;36m115 |[0;0m var container = encoder.singleValueContainer()
/host/spi-builder-workspace/Sources/LoggingELK/LogstashLogHandler+HTTPFormatting.swift:150:1: [1;33mwarning: [1;39mextension declares a conformance of imported type 'Message' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'Logging' introduce this conformance in the future[0;0m
[0;36m148 |[0;0m
[0;36m149 |[0;0m /// Make `Logger.Message` conform to `Encodable` and `Decodable`, so it can be sent to Logstash
[0;36m150 |[0;0m extension Logger.Message: Codable {
[0;36m|[0;0m |- [1;33mwarning: [1;39mextension declares a conformance of imported type 'Message' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'Logging' introduce this conformance in the future[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd '@retroactive' to silence this warning[0;0m
[0;36m151 |[0;0m public func encode(to encoder: Encoder) throws {
[0;36m152 |[0;0m var container = encoder.singleValueContainer()
/host/spi-builder-workspace/Sources/LoggingELK/LogstashLogHandler+Uploading.swift:26:17: [1;33mwarning: [1;39mconverting non-Sendable function value to '@Sendable (RepeatedTask) throws -> Void' may introduce data races[0;0m
[0;36m24 |[0;0m delay: uploadInterval,
[0;36m25 |[0;0m notifying: nil,
[0;36m26 |[0;0m uploadLogData
[0;36m|[0;0m `- [1;33mwarning: [1;39mconverting non-Sendable function value to '@Sendable (RepeatedTask) throws -> Void' may introduce data races[0;0m
[0;36m27 |[0;0m )
[0;36m28 |[0;0m }
[960 / 968] LoggingELK
[963 / 968] LoggingELK
/host/spi-builder-workspace/Sources/LoggingELK/LogstashLogHandler+HTTPFormatting.swift:113:1: [1;33mwarning: [1;39mextension declares a conformance of imported type 'MetadataValue' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'Logging' introduce this conformance in the future[0;0m
[0;36m111 |[0;0m
[0;36m112 |[0;0m /// Make `Logger.MetadataValue` conform to `Encodable` and `Decodable`, so it can be sent to Logstash
[0;36m113 |[0;0m extension Logger.MetadataValue: Codable {
[0;36m|[0;0m |- [1;33mwarning: [1;39mextension declares a conformance of imported type 'MetadataValue' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'Logging' introduce this conformance in the future[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd '@retroactive' to silence this warning[0;0m
[0;36m114 |[0;0m public func encode(to encoder: Encoder) throws {
[0;36m115 |[0;0m var container = encoder.singleValueContainer()
/host/spi-builder-workspace/Sources/LoggingELK/LogstashLogHandler+HTTPFormatting.swift:150:1: [1;33mwarning: [1;39mextension declares a conformance of imported type 'Message' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'Logging' introduce this conformance in the future[0;0m
[0;36m148 |[0;0m
[0;36m149 |[0;0m /// Make `Logger.Message` conform to `Encodable` and `Decodable`, so it can be sent to Logstash
[0;36m150 |[0;0m extension Logger.Message: Codable {
[0;36m|[0;0m |- [1;33mwarning: [1;39mextension declares a conformance of imported type 'Message' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'Logging' introduce this conformance in the future[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd '@retroactive' to silence this warning[0;0m
[0;36m151 |[0;0m public func encode(to encoder: Encoder) throws {
[0;36m152 |[0;0m var container = encoder.singleValueContainer()
[965 / 969] AsyncHTTPClient
[970 / 970] LoggingELK-product
Build complete! (42.91 secs)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-log",
"requirement" : {
"range" : [
{
"lower_bound" : "1.4.0",
"upper_bound" : "1.5.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-log.git"
},
{
"identity" : "async-http-client",
"requirement" : {
"range" : [
{
"lower_bound" : "1.5.0",
"upper_bound" : "1.6.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/swift-server/async-http-client.git"
}
],
"manifest_display_name" : "swift-log-elk",
"name" : "swift-log-elk",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "ios",
"version" : "13.0"
}
],
"products" : [
{
"name" : "LoggingELK",
"targets" : [
"LoggingELK"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "LoggingELKTests",
"module_type" : "SwiftTarget",
"name" : "LoggingELKTests",
"path" : "Tests/LoggingELKTests",
"sources" : [
"LoggingELKTests.swift",
"Util/XCTestCase+FatalError.swift"
],
"target_dependencies" : [
"LoggingELK"
],
"type" : "test"
},
{
"c99name" : "LoggingELK",
"module_type" : "SwiftTarget",
"name" : "LoggingELK",
"path" : "Sources/LoggingELK",
"product_dependencies" : [
"Logging",
"AsyncHTTPClient"
],
"product_memberships" : [
"LoggingELK"
],
"sources" : [
"LogstashLogHandler+Error.swift",
"LogstashLogHandler+HTTPFormatting.swift",
"LogstashLogHandler+LogFormatting.swift",
"LogstashLogHandler+Uploading.swift",
"LogstashLogHandler.swift",
"Utils/Boxed.swift",
"Utils/FatalErrorUtil.swift",
"Utils/FixedWidthInteger+RoundUp.swift",
"Utils/TimeAmout+Seconds.swift"
],
"type" : "library"
}
],
"tools_version" : "5.5"
}
basic-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:c77fcce225e223ac0fafed844619173fc6de8d62dd560eeb28db3182af6a282b
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:basic-6.4-latest
Done.