From 9d13de10e1ab7ebacd5426ba7dee1005a93c5e55 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Fri, 27 Sep 2024 15:31:01 +0100 Subject: [PATCH 01/26] CORE-4594 Playlist API integration - Fixed wrong Playback and BitmovinPlayerView name casing across the code, example and documentation - Changed getVideoDetails in order to support multiple Subscriber calls for playlist API returning a Publisher of Result so if an entryId got an error the Publisher continues getting details for others entryIDs - Making PlaybackResponseModel public so we can use video details to fill the playback API media info - Removing mediaTitle from loadPlayer function and BitmovinPlayerView because now the title will be taken from getVideoDetails API automatically even from single entryID - Manage the PlaybackUIView to get a list of PlaybackAPIError for the playlist API as well as a single PlaybackAPIError for loading a single entryID --- README.md | 6 +- .../InstallPlayerPluginTutorial.swift | 2 +- .../Resources/LoadPlayerViewTutorial.swift | 2 +- .../Resources/PlayBackDemoApp.swift | 6 +- .../PlayBackDemoAppWithUserAgent.swift | 6 +- .../Resources/PlayerTestView.swift | 2 +- .../Tutorial/GetStarted.tutorial | 6 +- .../Tutorial/Table Of Contents.tutorial | 4 +- Sources/PlaybackSDK/Folder Structure.md | 8 +- .../{PlayBackAPI.swift => PlaybackAPI.swift} | 8 +- ...Service.swift => PlaybackAPIService.swift} | 32 +++-- .../PlayBack API/PlaybackResponseModel.swift | 63 ++++---- .../PlayerInformationAPIService.swift | 8 +- ...Manager.swift => PlaybackSDKManager.swift} | 134 ++++++++++++++---- .../BitMovinPlugin/BitmovinPlayerPlugin.swift | 13 +- ...yerView.swift => BitmovinPlayerView.swift} | 89 ++++++++---- .../Player Plugin/VideoPlayerPlugin.swift | 2 +- .../PlayerUIView/PlaybackUIView.swift | 64 ++++++--- ...ts.swift => PlaybackSDKManagerTests.swift} | 8 +- .../tutorials/playbacksdk/getstarted.json | 2 +- docs/data/tutorials/table-of-contents.json | 2 +- 21 files changed, 301 insertions(+), 166 deletions(-) rename Sources/PlaybackSDK/PlayBack API/{PlayBackAPI.swift => PlaybackAPI.swift} (65%) rename Sources/PlaybackSDK/PlayBack API/{PlayBackAPIService.swift => PlaybackAPIService.swift} (65%) rename Sources/PlaybackSDK/{PlayBackSDKManager.swift => PlaybackSDKManager.swift} (62%) rename Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/{BitMovinPlayerView.swift => BitmovinPlayerView.swift} (68%) rename Tests/PlaybackSDKTests/{PlayBackSDKManagerTests.swift => PlaybackSDKManagerTests.swift} (97%) diff --git a/README.md b/README.md index 994f7fe..6fce273 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ To load the player UI in your application, use the `loadPlayer` method of the `P Example: ```swift -PlayBackSDKManager.shared.loadPlayer(entryID: entryId, authorizationToken: authorizationToken) { error in +PlaybackSDKManager.shared.loadPlayer(entryID: entryId, authorizationToken: authorizationToken) { error in // Handle player UI error  }  ``` @@ -88,7 +88,7 @@ To play on-demand and live videos that require authorization, at some point befo ```swift "\(baseURL)/sso/start?token=\(authorizationToken)" ``` -Then the same token should be passed into the `loadPlayer(entryID:, authorizationToken:)` method of `PlayBackSDkManager`. +Then the same token should be passed into the `loadPlayer(entryID:, authorizationToken:)` method of `PlaybackSDkManager`. For the free videos that user should be able to watch without logging in, starting the session is not required and `authorizationToken` can be set to an empty string. > [!NOTE] @@ -100,7 +100,7 @@ Sometimes a custom `user-agent` header is automatically set for the requests on Example: ```swift -PlayBackSDKManager.shared.initialize( +PlaybackSDKManager.shared.initialize( apiKey: apiKey, baseURL: baseURL, userAgent: customUserAgent diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/InstallPlayerPluginTutorial.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/InstallPlayerPluginTutorial.swift index 196268b..3fc3815 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Resources/InstallPlayerPluginTutorial.swift +++ b/Sources/PlaybackSDK/Documentation.docc/Resources/InstallPlayerPluginTutorial.swift @@ -1,6 +1,6 @@ import Foundation -PlayBackSDKManager.shared.initialize(apiKey: settingsManager.apiKey, baseURL: settingsManager.baseURL) { result in +PlaybackSDKManager.shared.initialize(apiKey: settingsManager.apiKey, baseURL: settingsManager.baseURL) { result in switch result { case .success(let license): print("SDK initialized with license: \(license)") diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/LoadPlayerViewTutorial.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/LoadPlayerViewTutorial.swift index 42046f3..75079fa 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Resources/LoadPlayerViewTutorial.swift +++ b/Sources/PlaybackSDK/Documentation.docc/Resources/LoadPlayerViewTutorial.swift @@ -1,6 +1,6 @@ import Foundation -PlayBackSDKManager.shared.loadPlayer(entryID: settingsManager.entryId, authorizationToken: settingsManager.authorizationToken, onError: { error in +PlaybackSDKManager.shared.loadPlayer(entryID: settingsManager.entryId, authorizationToken: settingsManager.authorizationToken, onError: { error in // Handle the error here switch error { case .apiError(let statusCode, _): diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoApp.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoApp.swift index dc1847a..4cfe637 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoApp.swift +++ b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoApp.swift @@ -2,9 +2,9 @@ import SwiftUI import PlaybackSDK @main -struct PlayBackDemoApp: App { +struct PlaybackDemoApp: App { - let sdkManager = PlayBackSDKManager() + let sdkManager = PlaybackSDKManager() let apiKey = "API_KEY" var body: some Scene { WindowGroup { @@ -14,7 +14,7 @@ struct PlayBackDemoApp: App { init() { // Initialize the Playback SDK with the provided API key and base URL - PlayBackSDKManager.shared.initialize(apiKey: apiKey) { result in + PlaybackSDKManager.shared.initialize(apiKey: apiKey) { result in switch result { case .success(let license): // Obtained license upon successful initialization diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoAppWithUserAgent.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoAppWithUserAgent.swift index 8a04146..8d7cb0b 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoAppWithUserAgent.swift +++ b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoAppWithUserAgent.swift @@ -3,9 +3,9 @@ import PlaybackSDK import Alamofire @main -struct PlayBackDemoApp: App { +struct PlaybackDemoApp: App { - let sdkManager = PlayBackSDKManager() + let sdkManager = PlaybackSDKManager() let apiKey = "API_KEY" var body: some Scene { WindowGroup { @@ -18,7 +18,7 @@ struct PlayBackDemoApp: App { let userAgent = AF.session.configuration.httpAdditionalHeaders?["User-Agent"] // Initialize the Playback SDK with the provided API key and custom user-agent - PlayBackSDKManager.shared.initialize(apiKey: apiKey, userAgent: userAgent) { result in + PlaybackSDKManager.shared.initialize(apiKey: apiKey, userAgent: userAgent) { result in switch result { case .success(let license): // Obtained license upon successful initialization diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestView.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestView.swift index 07f1700..28451b3 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestView.swift +++ b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestView.swift @@ -9,7 +9,7 @@ struct PlayerTestView: View { var body: some View { VStack { // Load player with the playback SDK - PlayBackSDKManager.shared.loadPlayer(entryID: entryID, authorizationToken: authorizationToken) { error in + PlaybackSDKManager.shared.loadPlayer(entryID: entryID, authorizationToken: authorizationToken) { error in handlePlaybackError(error) } .onDisappear { diff --git a/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial b/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial index 75f5176..ddc4496 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial +++ b/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial @@ -20,14 +20,14 @@ **Make sure this step is done when the app starts.** - @Code(name: "PlayBackDemoApp.swift", file: PlayBackDemoApp.swift) + @Code(name: "PlaybackDemoApp.swift", file: PlaybackDemoApp.swift) } @Step { Add custom `user-agent` header. This step is only required for content that needs a token, when using Alamofire or other 3rd party frameworks that overwrite the standard `user-agent` header with their own. If the content requires starting a CloudPay session, it's important that the request to start the session has the same `user-agent` header as the video loading requests from the player. This can be achieved either by disabling the overwriting behaviour in the 3rd party networking framework you're using, or by passing a `userAgent` parameter to the `initialize` method, like in this example with Alamofire. - @Code(name: "PlayBackDemoAppWithUserAgent.swift", file: PlayBackDemoAppWithUserAgent.swift, previousFile: PlayBackDemoApp.swift) + @Code(name: "PlaybackDemoAppWithUserAgent.swift", file: PlaybackDemoAppWithUserAgent.swift, previousFile: PlaybackDemoApp.swift) } @Step { Load the player using the Playback SDK and handle any playback errors. @@ -44,7 +44,7 @@ Handle the playback errors from Playback SDK. This step describes enum for error handling. Above is the error enum returned by the SDK, where the apiError also has the reason code and message for the API error. The playback API is returning the reason code in the response. For the list of the error codes and reasons, please refer to [Get Video Playback Data | Playback](https://streamamg.stoplight.io/docs/playback-documentation-portal/ec642e6dcbb13-get-video-playback-data) - @Code(name: "PlayBackAPIError.swift", file: PlayBackAPIError.swift) + @Code(name: "PlaybackAPIError.swift", file: PlaybackAPIError.swift) } } } diff --git a/Sources/PlaybackSDK/Documentation.docc/Tutorial/Table Of Contents.tutorial b/Sources/PlaybackSDK/Documentation.docc/Tutorial/Table Of Contents.tutorial index b6ca568..ea6c0b1 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Tutorial/Table Of Contents.tutorial +++ b/Sources/PlaybackSDK/Documentation.docc/Tutorial/Table Of Contents.tutorial @@ -4,7 +4,7 @@ } @Chapter(name: "Getting Started") { - In this chapter, we'll start by setting up the PlaybackSDK from the initialisation to load the PlayBack Player Plugin. + In this chapter, we'll start by setting up the PlaybackSDK from the initialisation to load the Playback Player Plugin. @Image(source: "ios-marketing.png", alt: "Getting Started with PlaybackSDK") @@ -26,7 +26,7 @@ Browse and search the PlaybackSDK documentation. - [GitHub Repository](https://github.com/StreamAMG/playback-sdk-ios/tree/main) - - [Stoplight PlayBack API](https://streamamg.stoplight.io) + - [Stoplight Playback API](https://streamamg.stoplight.io) } } } diff --git a/Sources/PlaybackSDK/Folder Structure.md b/Sources/PlaybackSDK/Folder Structure.md index 8234506..fe3c985 100644 --- a/Sources/PlaybackSDK/Folder Structure.md +++ b/Sources/PlaybackSDK/Folder Structure.md @@ -2,11 +2,11 @@ PlaybackSDK/ -├── PlayBackAPI/ +├── PlaybackAPI/ -│   ├── PlayBackAPI.h +│   ├── PlaybackAPI.h -│   ├── PlayBackAPIService.h +│   ├── PlaybackAPIService.h │   └── PlaybackResponseModel.h @@ -38,4 +38,4 @@ PlaybackSDK/     └── BitMovinPlayerView.h -PlayBackSDKManager.h +PlaybackSDKManager.h diff --git a/Sources/PlaybackSDK/PlayBack API/PlayBackAPI.swift b/Sources/PlaybackSDK/PlayBack API/PlaybackAPI.swift similarity index 65% rename from Sources/PlaybackSDK/PlayBack API/PlayBackAPI.swift rename to Sources/PlaybackSDK/PlayBack API/PlaybackAPI.swift index bedec15..187b1ef 100644 --- a/Sources/PlaybackSDK/PlayBack API/PlayBackAPI.swift +++ b/Sources/PlaybackSDK/PlayBack API/PlaybackAPI.swift @@ -1,5 +1,5 @@ // -// PlayBackAPIError.swift +// PlaybackAPIError.swift // // // Created by Franco Driansetti on 19/02/2024. @@ -11,7 +11,7 @@ import Combine /** Protocol defining the methods required to interact with the Playback API. */ -internal protocol PlayBackAPI { +internal protocol PlaybackAPI { /** Retrieves video details for a given entry ID. @@ -19,9 +19,9 @@ internal protocol PlayBackAPI { - Parameters: - entryId: The unique identifier of the video entry. - andAuthorizationToken: Optional authorization token, can be nil for free videos. - - Returns: A publisher emitting the response model or an error. + - Returns: A publisher emitting a result with a response model with an error or a critical error. */ - func getVideoDetails(forEntryId entryId: String, andAuthorizationToken: String?, userAgent: String?) -> AnyPublisher + func getVideoDetails(forEntryId entryId: String, andAuthorizationToken: String?, userAgent: String?) -> AnyPublisher, Error> } #endif diff --git a/Sources/PlaybackSDK/PlayBack API/PlayBackAPIService.swift b/Sources/PlaybackSDK/PlayBack API/PlaybackAPIService.swift similarity index 65% rename from Sources/PlaybackSDK/PlayBack API/PlayBackAPIService.swift rename to Sources/PlaybackSDK/PlayBack API/PlaybackAPIService.swift index 0fa7ac7..c01f546 100644 --- a/Sources/PlaybackSDK/PlayBack API/PlayBackAPIService.swift +++ b/Sources/PlaybackSDK/PlayBack API/PlaybackAPIService.swift @@ -1,5 +1,5 @@ // -// PlayBackAPIService.swift +// PlaybackAPIService.swift // // // Created by Franco Driansetti on 19/02/2024. @@ -11,8 +11,8 @@ import Combine /** A service class responsible for handling playback API requests. */ -internal class PlayBackAPIService: PlayBackAPI { - +internal class PlaybackAPIService: PlaybackAPI { + /// The API key required for authentication. private let apiKey: String @@ -31,15 +31,15 @@ internal class PlayBackAPIService: PlayBackAPI { - Parameters: - entryId: The unique identifier of the video entry. - andAuthorizationToken: Optional authorization token, can be nil for free videos. - - Returns: A publisher emitting the response model or an error. + - Returns: A publisher emitting a result with a response model with an error or a critical error. */ func getVideoDetails( forEntryId entryId: String, andAuthorizationToken: String?, userAgent: String? - ) -> AnyPublisher { - guard let url = URL(string: "\(PlayBackSDKManager.shared.baseURL)/entry/\(entryId)") else { - return Fail(error: PlayBackAPIError.invalidPlaybackDataURL).eraseToAnyPublisher() + ) -> AnyPublisher, Error> { + guard let url = URL(string: "\(PlaybackSDKManager.shared.baseURL)/entry/\(entryId)") else { + return Fail(error: PlaybackAPIError.invalidPlaybackDataURL).eraseToAnyPublisher() } var request = URLRequest(url: url) @@ -59,34 +59,36 @@ internal class PlayBackAPIService: PlayBackAPI { return URLSession.shared.dataTaskPublisher(for: request) .tryMap { data, response in guard let httpResponse = response as? HTTPURLResponse else { - throw PlayBackAPIError.invalidResponsePlaybackData + return .failure(PlaybackAPIError.invalidResponsePlaybackData) } switch httpResponse.statusCode { case 200...299: - return data + if let response = try? JSONDecoder().decode(PlaybackResponseModel.self, from: data) { + return .success(response) + } else { + return .failure(PlaybackAPIError.invalidResponsePlaybackData) + } default: let decoder = JSONDecoder() if let errorResponse = try? decoder.decode(PlaybackResponseModel.self, from: data) { let errorReason = errorResponse.reason ?? "Unknown authentication error reason" - throw PlayBackAPIError.apiError(statusCode: httpResponse.statusCode, message: errorResponse.message ?? "Unknown authentication error message", reason: PlaybackErrorReason(fromString: errorReason)) + return .failure(PlaybackAPIError.apiError(statusCode: httpResponse.statusCode, message: errorResponse.message ?? "Unknown authentication error message", reason: PlaybackErrorReason(fromString: errorReason))) } else { let errorReason = "Unknown authentication error reason" - throw PlayBackAPIError.apiError(statusCode: httpResponse.statusCode, message: "Unknown authentication error", reason: PlaybackErrorReason(fromString: errorReason)) + return .failure(PlaybackAPIError.apiError(statusCode: httpResponse.statusCode, message: "Unknown authentication error", reason: PlaybackErrorReason(fromString: errorReason))) } } } - .decode(type: PlaybackResponseModel.self, decoder: JSONDecoder()) .mapError { error in - if let apiError = error as? PlayBackAPIError { + if let apiError = error as? PlaybackAPIError { return apiError } else { - return PlayBackAPIError.networkError(error) + return PlaybackAPIError.networkError(error) } } .eraseToAnyPublisher() } - } diff --git a/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift b/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift index f47db43..4b748b7 100644 --- a/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift +++ b/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift @@ -8,42 +8,43 @@ import Foundation // Struct representing the response model for playback data, conforming to the Decodable protocol. -internal struct PlaybackResponseModel: Decodable { - let message: String? - let reason: String? - let id: String? - let name: String? - let description: String? - let thumbnail: URL? - let duration: String? - let media: Media? - let playFrom: Int? - let adverts: [Advert]? - let coverImg: CoverImages? +public struct PlaybackResponseModel: Decodable { - struct Media: Decodable { - let hls: String? - let mpegdash: String? - let applehttp: String? + public let message: String? + public let reason: String? + public let id: String? + public let name: String? + public let description: String? + public let thumbnail: URL? + public let duration: String? + public let media: Media? + public let playFrom: Int? + public let adverts: [Advert]? + public let coverImg: CoverImages? + + public struct Media: Decodable { + public let hls: String? + public let mpegdash: String? + public let applehttp: String? } - struct Advert: Decodable { - let adType: String? - let id: String? - let position: String? - let persistent: Bool? - let discardAfterPlayback: Bool? - let url: URL? - let preloadOffset: Int? - let skippableAfter: Int? + public struct Advert: Decodable { + public let adType: String? + public let id: String? + public let position: String? + public let persistent: Bool? + public let discardAfterPlayback: Bool? + public let url: URL? + public let preloadOffset: Int? + public let skippableAfter: Int? } - struct CoverImages: Decodable { - let _360: URL? - let _720: URL? - let _1080: URL? + public struct CoverImages: Decodable { + public let _360: URL? + public let _720: URL? + public let _1080: URL? - enum CodingKeys: String, CodingKey { + public enum CodingKeys: String, CodingKey { case _360 = "360" case _720 = "720" case _1080 = "1080" @@ -53,7 +54,7 @@ internal struct PlaybackResponseModel: Decodable { - Parameter decoder: The decoder to read data from. */ - init(from decoder: Decoder) throws { + public init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) _360 = try container.decodeIfPresent(String.self, forKey: ._360).flatMap { URL(string: $0) } _720 = try container.decodeIfPresent(String.self, forKey: ._720).flatMap { URL(string: $0) } diff --git a/Sources/PlaybackSDK/Playback Configuration API/PlayerInformationAPIService.swift b/Sources/PlaybackSDK/Playback Configuration API/PlayerInformationAPIService.swift index 73ce44b..4b5cc9a 100644 --- a/Sources/PlaybackSDK/Playback Configuration API/PlayerInformationAPIService.swift +++ b/Sources/PlaybackSDK/Playback Configuration API/PlayerInformationAPIService.swift @@ -17,8 +17,8 @@ internal class PlayerInformationAPIService: PlayerInformationAPI { } func getPlayerInformation(userAgent: String?) -> AnyPublisher { - guard let url = URL(string: "\(PlayBackSDKManager.shared.baseURL)/player") else { - return Fail(error: PlayBackAPIError.invalidPlayerInformationURL).eraseToAnyPublisher() + guard let url = URL(string: "\(PlaybackSDKManager.shared.baseURL)/player") else { + return Fail(error: PlaybackAPIError.invalidPlayerInformationURL).eraseToAnyPublisher() } var request = URLRequest(url: url) @@ -32,10 +32,10 @@ internal class PlayerInformationAPIService: PlayerInformationAPI { .map { $0.data } .decode(type: PlayerInformationResponseModel.self, decoder: JSONDecoder()) .mapError { error in - if let apiError = error as? PlayBackAPIError { + if let apiError = error as? PlaybackAPIError { return apiError } else { - return PlayBackAPIError.networkError(error) + return PlaybackAPIError.networkError(error) } } .eraseToAnyPublisher() diff --git a/Sources/PlaybackSDK/PlayBackSDKManager.swift b/Sources/PlaybackSDK/PlaybackSDKManager.swift similarity index 62% rename from Sources/PlaybackSDK/PlayBackSDKManager.swift rename to Sources/PlaybackSDK/PlaybackSDKManager.swift index 43cf317..90e784f 100644 --- a/Sources/PlaybackSDK/PlayBackSDKManager.swift +++ b/Sources/PlaybackSDK/PlaybackSDKManager.swift @@ -1,5 +1,5 @@ // -// PlayBackSDKManager.swift +// PlaybackSDKManager.swift // // // Created by Franco Driansetti on 20/02/2024. @@ -68,13 +68,14 @@ public enum PlaybackErrorReason: Equatable { /** Define the errors that can occur during API interactions */ -public enum PlayBackAPIError: Error { +public enum PlaybackAPIError: Error { case invalidResponsePlaybackData case invalidPlaybackDataURL case invalidPlayerInformationURL case initializationError case loadHLSStreamError + case unknown case networkError(Error) case apiError(statusCode: Int, message: String, reason: PlaybackErrorReason) @@ -82,15 +83,15 @@ public enum PlayBackAPIError: Error { /// Singleton responsible for initializing the SDK and managing player information -public class PlayBackSDKManager { +public class PlaybackSDKManager { //MARK: Piblic Properties - /// Singleton instance of the `PlayBackSDKManager`. - public static let shared = PlayBackSDKManager() + /// Singleton instance of the `PlaybackSDKManager`. + public static let shared = PlaybackSDKManager() // MARK: Private properties private var playerInfoAPI: PlayerInformationAPI? - private var playBackAPI: PlayBackAPI? + private var playbackAPI: PlaybackAPI? private var userAgentHeader: String? private var cancellables = Set() @@ -102,7 +103,7 @@ public class PlayBackSDKManager { // MARK: Public fuctions - /// Initializes the `PlayBackSDKManager`. + /// Initializes the `PlaybackSDKManager`. public init() {} /// Initializes the SDK with the provided API key. @@ -127,8 +128,8 @@ public class PlayBackSDKManager { amgAPIKey = apiKey userAgentHeader = userAgent playerInfoAPI = PlayerInformationAPIService(apiKey: apiKey) - let playBackAPIService = PlayBackAPIService(apiKey: apiKey) - self.playBackAPI = playBackAPIService + let playbackAPIService = PlaybackAPIService(apiKey: apiKey) + self.playbackAPI = playbackAPIService /// Fetching Bitmovin license fetchPlayerInfo(completion: completion) } @@ -149,19 +150,44 @@ public class PlayBackSDKManager { public func loadPlayer( entryID: String, authorizationToken: String? = nil, - mediaTitle: String? = nil, - onError: ((PlayBackAPIError) -> Void)? + onError: ((PlaybackAPIError) -> Void)? ) -> some View { PlaybackUIView( - entryId: entryID, + entryId: [entryID], authorizationToken: authorizationToken, - mediaTitle: mediaTitle, onError: onError ) .id(entryID) } + /** + Loads a video player with the specified entry ID and authorization token. + + - Parameters: + - entryIDs: A list of the videos to be loaded. + - authorizationToken: The token used for authorization to access the video content. + + - Returns: A view representing the video player configured with the provided entry ID and authorization token. + + Example usage: + ```swift + let playerView = loadPlayer(entryIDs: ["exampleEntryID1", "exampleEntryID2"], authorizationToken: "exampleToken") + */ + public func loadPlaylist( + entryIDs: [String], + authorizationToken: String? = nil, + onErrors: (([PlaybackAPIError]) -> Void)? + ) -> some View { + + PlaybackUIView( + entryId: entryIDs, + authorizationToken: authorizationToken, + onErrors: onErrors + ) + .id(entryIDs.first) + } + // MARK: Private fuctions /// Fetches player information from the player information API. @@ -203,20 +229,69 @@ public class PlayBackSDKManager { .store(in: &cancellables) } + internal func loadAllHLSStream(forEntryIds listEntryId: [String], andAuthorizationToken: String?, completion: @escaping (Result<([PlaybackResponseModel], [PlaybackAPIError]), PlaybackAPIError>) -> Void) { + + var videoDetails: [PlaybackResponseModel] = [] + var playbackErrors: [PlaybackAPIError] = [] + + guard let playbackAPIExist = playbackAPI else { + completion(.failure(PlaybackAPIError.initializationError)) + return + } + + let publishers = listEntryId.compactMap { entryId in + return playbackAPIExist.getVideoDetails(forEntryId: entryId, andAuthorizationToken: andAuthorizationToken, userAgent: userAgentHeader) + } + + _ = Publishers.MergeMany(publishers) + .sink(receiveCompletion: { result in + switch result { + case .failure(let error): + print("Error getting details") + if let apiError = error as? PlaybackAPIError { + playbackErrors.append(apiError) + } else { + playbackErrors.append(.networkError(error)) + } + case .finished: + print("Video details fetched successfully.") + completion(.success((videoDetails, playbackErrors))) +// break + } + }, receiveValue: { details in + // Print the received video details + print("Received video details...") + switch details { + case .failure(let error): + print("Error getting video details \(error)") + if let apiError = error as? PlaybackAPIError { + playbackErrors.append(apiError) + } else { + playbackErrors.append(.networkError(error)) + } + case .success(let response): + print("Video details fetched successfully \(response)") + videoDetails.append(response) + } + }) + .store(in: &cancellables) + } + /// Loads an HLS stream for the given entry ID. /// - Parameters: /// - entryId: The ID of the video entry. /// - authorizationToken: Authorization token for accessing the video entry. /// - completion: A closure to be called after loading the HLS stream. /// It receives a result containing the HLS stream URL or an error. - internal func loadHLSStream(forEntryId entryId: String, andAuthorizationToken: String?, completion: @escaping (Result) -> Void) { - guard let playBackAPIExist = playBackAPI else { - completion(.failure(PlayBackAPIError.initializationError)) + internal func loadHLSStream(forEntryId entryId: String, andAuthorizationToken: String?, completion: @escaping (Result) -> Void) { + + guard let playbackAPIExist = playbackAPI else { + completion(.failure(PlaybackAPIError.initializationError)) return } // Call the /entry endpoint for the given entry ID - playBackAPIExist.getVideoDetails( + playbackAPIExist.getVideoDetails( forEntryId: entryId, andAuthorizationToken: andAuthorizationToken, userAgent: userAgentHeader @@ -224,7 +299,7 @@ public class PlayBackSDKManager { .sink(receiveCompletion: { result in switch result { case .failure(let error): - if let playbackAPIError = error as? PlayBackAPIError { + if let playbackAPIError = error as? PlaybackAPIError { completion(.failure(playbackAPIError)) } else { completion(.failure(.networkError(error))) @@ -233,19 +308,20 @@ public class PlayBackSDKManager { print("Video details fetched successfully.") break } - }, receiveValue: { videoDetails in + }, receiveValue: { result in // Print the received video details - print("Received video details: \(videoDetails)") - - // Extract the HLS stream URL from video details - guard let hlsURLString = videoDetails.media?.hls, - let hlsURL = URL(string: hlsURLString) else { - completion(.failure(PlayBackAPIError.loadHLSStreamError)) - return + print("Received video details: \(result)") + switch result { + case .failure(let error): + if let playbackAPIError = error as? PlaybackAPIError { + completion(.failure(playbackAPIError)) + } else { + completion(.failure(.networkError(error))) + } + case .success(let details): + // Call the completion handler with the HLS stream URL + completion(.success(details)) } - - // Call the completion handler with the HLS stream URL - completion(.success(hlsURL)) }) .store(in: &cancellables) } diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift index 4a89aec..93385a9 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift @@ -23,10 +23,10 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin { playerConfig.playbackConfig.isAutoplayEnabled = true playerConfig.playbackConfig.isBackgroundPlaybackEnabled = true - playerConfig.key = PlayBackSDKManager.shared.bitmovinLicense + playerConfig.key = PlaybackSDKManager.shared.bitmovinLicense self.playerConfig = playerConfig self.name = "BitmovinPlayerPlugin" - self.version = "1.0.1" + self.version = "1.0.1" // TODO: Get the version from Bundle } // MARK: VideoPlayerPlugin protocol implementation @@ -39,7 +39,7 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin { playerConfig.styleConfig.userInterfaceConfig = uiConfig } - public func playerView(hlsURLString: String, title: String = "") -> AnyView { + public func playerView(videoDetails: [PlaybackResponseModel]) -> AnyView { // Create player based on player and analytics configurations let player = PlayerFactory.createPlayer( @@ -49,10 +49,9 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin { self.player = player return AnyView( - BitMovinPlayerView( - hlsURLString: hlsURLString, - player: player, - title: title + BitmovinPlayerView( + videoDetails: videoDetails, + player: player ) ) } diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitMovinPlayerView.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift similarity index 68% rename from Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitMovinPlayerView.swift rename to Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift index 2d11fa6..689b3e3 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitMovinPlayerView.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift @@ -1,5 +1,5 @@ // -// BitMovinPlayerView.swift +// BitmovinPlayerView.swift // // // Created by Franco Driansetti on 19/02/2024. @@ -8,41 +8,39 @@ import SwiftUI import BitmovinPlayer import MediaPlayer +import Combine -public struct BitMovinPlayerView: View { +public struct BitmovinPlayerView: View { // These targets are used by the MPRemoteCommandCenter, // to remove the command event handlers from memory. @State private var playEventTarget: Any? @State private var pauseEventTarget: Any? private let player: Player - private let playerViewConfig = PlayerViewConfig() - private let hlsURLString: String - - private var sourceConfig: SourceConfig? { - guard let hlsURL = URL(string: hlsURLString) else { - return nil - } - let sConfig = SourceConfig(url: hlsURL, type: .hls) - - return sConfig - } + private var playerViewConfig = PlayerViewConfig() + private var sources: [Source] = [] + private var playlistConfig: PlaylistConfig? /// Initializes the view with the player passed from outside. /// /// This version of the initializer does not modify the `player`'s configuration, so any additional configuration steps /// like setting `userInterfaceConfig` should be performed externally. /// - /// - parameter hlsURLString: Full URL of the HLS video stream that will be loaded by the player as the video source + /// - parameter videoDetails: Full videos details containing name, description, thumbnail, duration as well as URL of the HLS video stream that will be loaded by the player as the video source /// - parameter player: Instance of the player that was created and configured outside of this view. - /// - parameter title: Video source title that will be set in playback metadata for the "now playing" source - public init(hlsURLString: String, player: Player, title: String) { - - self.hlsURLString = hlsURLString + public init(videoDetails: [PlaybackResponseModel], player: Player) { self.player = player + + sources = createPlaylist(from: videoDetails) + + let playlistOptions = PlaylistOptions(preloadAllSources: false) + + playlistConfig = PlaylistConfig(sources: sources, options: playlistOptions) + + playerViewConfig = PlayerViewConfig() - setup(title: title) + setup(title: videoDetails.first?.name ?? "") } /// Initializes the view with an instance of player created inside of it, upon initialization. @@ -52,12 +50,11 @@ public struct BitMovinPlayerView: View { /// - Note: If the player config had `userInterfaceConfig` already modified before passing into this `init`, /// those changes will take no effect sicne they will get overwritten here. /// - /// - parameter hlsURLString: Full URL of the HLS video stream that will be loaded by the player as the video source + /// - parameter hlsURLString: Full videos details containing name, description, thumbnail, duration as well as URL of the HLS video stream that will be loaded by the player as the video source /// - parameter playerConfig: Configuration that will be passed into the player upon creation, with an additional update in this initializer. - /// - parameter title: Video source title that will be set in playback metadata for the "now playing" source - public init(hlsURLString: String, playerConfig: PlayerConfig, title: String) { + public init(videoDetails: [PlaybackResponseModel], playerConfig: PlayerConfig) { - self.hlsURLString = hlsURLString +// self.hlsURLArrayString = [hlsURLString] let uiConfig = BitmovinUserInterfaceConfig() uiConfig.hideFirstFrame = true @@ -67,8 +64,16 @@ public struct BitMovinPlayerView: View { self.player = PlayerFactory.createPlayer( playerConfig: playerConfig ) + + sources = createPlaylist(from: videoDetails) + + let playlistOptions = PlaylistOptions(preloadAllSources: false) + + playlistConfig = PlaylistConfig(sources: sources, options: playlistOptions) + + playerViewConfig = PlayerViewConfig() - setup(title: title) + setup(title: videoDetails.first?.name ?? "") } public var body: some View { @@ -85,16 +90,48 @@ public struct BitMovinPlayerView: View { .onReceive(player.events.on(SourceEvent.self)) { (event: SourceEvent) in dump(event, name: "[Source Event]", maxDepth: 1) } + .onReceive(Publishers.MergeMany(sources.map { source in + source.events.on(SourceEvent.self).map { event in (event, source) } + })) { (event: SourceEvent, source: Source) in + let sourceIdentifier = source.sourceConfig.title ?? source.sourceConfig.url.absoluteString + dump(event, name: "[Source Event] - \(sourceIdentifier)", maxDepth: 1) + } } .onAppear { - if let sourceConfig = self.sourceConfig { - player.load(sourceConfig: sourceConfig) + if let playlistConfig = playlistConfig { + player.load(playlistConfig: playlistConfig) } } .onDisappear { removeRemoteTransportControlsAndAudioSession() } } + + func createPlaylist(from videoDetails: [PlaybackResponseModel]) -> [Source] { + var sources: [Source] = [] + for details in videoDetails { + + if let videoSource = createSource(from: details) { + sources.append(videoSource) + } + } + + return sources + } + + func createSource(from details: PlaybackResponseModel) -> Source? { + + guard let hlsURLString = details.media?.hls, let hlsURL = URL(string: hlsURLString) else { + return nil + } + + let sourceConfig = SourceConfig(url: hlsURL, type: .hls) + sourceConfig.title = details.name + sourceConfig.posterSource = details.coverImg?._360 + sourceConfig.sourceDescription = details.description + + return SourceFactory.createSource(from: sourceConfig) + } func setupRemoteTransportControls() { // Get the shared MPRemoteCommandCenter diff --git a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift index aee1388..e9aae80 100644 --- a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift @@ -19,7 +19,7 @@ public protocol VideoPlayerPlugin: AnyObject { // TODO: add event /// func handleEvent(event: BitmovinPlayerCore.PlayerEvent) - func playerView(hlsURLString: String, title: String) -> AnyView + func playerView(videoDetails: [PlaybackResponseModel]) -> AnyView func play() diff --git a/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift b/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift index fe5f2d1..5e92af5 100644 --- a/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift +++ b/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift @@ -13,11 +13,8 @@ import SwiftUI */ internal struct PlaybackUIView: View { - /// The entry ID of the video to be played. - private var entryId: String - - /// The title of the video to be played. - private var mediaTitle: String? + /// The entry ID or a list of the videos to be played. + private var entryId: [String] /// Optional authorization token if required to fetch the video details. private var authorizationToken: String? @@ -28,23 +25,39 @@ internal struct PlaybackUIView: View { /// State variable to track whether video details have been fetched or not. @State private var hasFetchedVideoDetails = false - /// State variable to store the HLS stream URL. - @State private var videoURL: URL? + /// The fetched video details of the entryIDs + @State private var videoDetails: [PlaybackResponseModel]? + @State private var playlistErrors: [PlaybackAPIError]? + + /// Closure to handle errors during a single HLS stream loading. + private var onError: ((PlaybackAPIError) -> Void)? + /// Closure to handle multiple errors during Playlist stream loading. + private var onErrors: (([PlaybackAPIError]) -> Void)? + + /** + Initializes the `PlaybackUIView` with the provided list of entry ID and authorization token. + + - Parameters: + - entryId: A list of entry ID of the video to be played. + - authorizationToken: Optional authorization token if required to fetch the video details. + */ + internal init(entryId: [String], authorizationToken: String?, onErrors: (([PlaybackAPIError]) -> Void)?) { + self.entryId = entryId + self.authorizationToken = authorizationToken + self.onErrors = onErrors + } - /// Closure to handle errors during HLS stream loading. - private var onError: ((PlayBackAPIError) -> Void)? /** - Initializes the `PlaybackUIView` with the provided entry ID and authorization token. + Initializes the `PlaybackUIView` with the provided list of entry ID and authorization token. - Parameters: - - entryId: The entry ID of the video to be played. + - entryId: A list of entry ID of the video to be played. - authorizationToken: Optional authorization token if required to fetch the video details. */ - internal init(entryId: String, authorizationToken: String?, mediaTitle: String?, onError: ((PlayBackAPIError) -> Void)?) { + internal init(entryId: [String], authorizationToken: String?, onError: ((PlaybackAPIError) -> Void)?) { self.entryId = entryId self.authorizationToken = authorizationToken self.onError = onError - self.mediaTitle = mediaTitle } /// The body of the view. @@ -56,15 +69,15 @@ internal struct PlaybackUIView: View { loadHLSStream() } } else { - if let videoURL = videoURL { + if let videoDetails = videoDetails { if let plugin = pluginManager.selectedPlugin { - plugin.playerView(hlsURLString: videoURL.absoluteString, title: self.mediaTitle ?? "") + plugin.playerView(videoDetails: videoDetails) } else { ErrorUIView(errorMessage: "No plugin selected") .background(Color.white) } } else { - ErrorUIView(errorMessage: "Invalid Video URL") + ErrorUIView(errorMessage: "Invalid Video Details") .background(Color.white) } } @@ -74,21 +87,28 @@ internal struct PlaybackUIView: View { /** Loads the HLS stream for the provided entry ID and authorization token. - This method asynchronously fetches the HLS stream URL using the `PlayBackSDKManager` and updates the `videoURL` state variable accordingly. + This method asynchronously fetches the HLS stream URL using the `PlaybackSDKManager` and updates the `videoURL` state variable accordingly. */ private func loadHLSStream() { - PlayBackSDKManager.shared.loadHLSStream(forEntryId: entryId, andAuthorizationToken: authorizationToken) { result in + + //TO-DO Fetch all HLS urls from the entryID array + PlaybackSDKManager.shared.loadAllHLSStream(forEntryIds: entryId, andAuthorizationToken: authorizationToken) { result in switch result { - case .success(let hlsURL): - print("HLS URL: \(hlsURL)") + case .success(let videoDetails): DispatchQueue.main.async { - self.videoURL = hlsURL + self.videoDetails = videoDetails.0 + self.playlistErrors = videoDetails.1 self.hasFetchedVideoDetails = true + if (!(self.playlistErrors?.isEmpty ?? false)) { + onError?(self.playlistErrors?.last ?? .unknown) + onErrors?(self.playlistErrors ?? []) + } } case .failure(let error): // Trow error to the app onError?(error) - print("Error loading HLS stream: \(error)") + onErrors?([error]) + print("Error loading videos details: \(error)") } } } diff --git a/Tests/PlaybackSDKTests/PlayBackSDKManagerTests.swift b/Tests/PlaybackSDKTests/PlaybackSDKManagerTests.swift similarity index 97% rename from Tests/PlaybackSDKTests/PlayBackSDKManagerTests.swift rename to Tests/PlaybackSDKTests/PlaybackSDKManagerTests.swift index 6ab902c..0103e0f 100644 --- a/Tests/PlaybackSDKTests/PlayBackSDKManagerTests.swift +++ b/Tests/PlaybackSDKTests/PlaybackSDKManagerTests.swift @@ -1,5 +1,5 @@ // -// PlayBackSDKManagerTests.swift.swift +// PlaybackSDKManagerTests.swift.swift // // // Created by Franco Driansetti on 29/02/2024. @@ -9,16 +9,16 @@ import XCTest import Combine @testable import PlaybackSDK -class PlayBackSDKManagerTests: XCTestCase { +class PlaybackSDKManagerTests: XCTestCase { var cancellables = Set() - var manager: PlayBackSDKManager! + var manager: PlaybackSDKManager! var apiKey: String! var entryID: String! override func setUpWithError() throws { try super.setUpWithError() - manager = PlayBackSDKManager() + manager = PlaybackSDKManager() apiKey = TestConfig.testAPIKey XCTAssertNotNil(apiKey, "API key should be provided via environment variable") entryID = TestConfig.testEntryID diff --git a/docs/data/tutorials/playbacksdk/getstarted.json b/docs/data/tutorials/playbacksdk/getstarted.json index 3497103..4503bd3 100644 --- a/docs/data/tutorials/playbacksdk/getstarted.json +++ b/docs/data/tutorials/playbacksdk/getstarted.json @@ -1 +1 @@ -{"identifier":{"url":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","interfaceLanguage":"swift"},"kind":"project","sections":[{"kind":"hero","title":"Playback SDK Overview","chapter":"Getting Started","estimatedTimeInMinutes":30,"content":[{"type":"paragraph","inlineContent":[{"text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic.","type":"text"}]},{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Key Features:"}]}],"type":"paragraph"},{"type":"unorderedList","items":[{"content":[{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Abstraction:"}]},{"type":"text","text":" Hides the complexities of underlying video APIs, allowing you to focus on the core playback experience."}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"inlineContent":[{"type":"text","text":"Flexibility:"}],"type":"strong"},{"text":" Supports different video providers and allows the creation of custom playback plugins for extended functionalities.","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Error Handling:","type":"text"}]},{"type":"text","text":" Provides mechanisms to handle potential issues during playback and notify your application."}]}]}]}]},{"kind":"tasks","tasks":[{"title":"Playback SDK","anchor":"Playback-SDK","stepsSection":[{"content":[{"type":"paragraph","inlineContent":[{"text":"Initialize the Playback SDK by providing your API key and register the default player plugin.","type":"text"},{"text":" ","type":"text"},{"type":"strong","inlineContent":[{"text":"Make sure this step is done when the app starts.","type":"text"}]}]}],"code":"PlayBackDemoApp.swift","type":"step","media":null,"runtimePreview":null,"caption":[]},{"media":null,"content":[{"inlineContent":[{"text":"Add custom ","type":"text"},{"type":"codeVoice","code":"user-agent"},{"type":"text","text":" header."}],"type":"paragraph"}],"runtimePreview":null,"code":"PlayBackDemoAppWithUserAgent.swift","type":"step","caption":[{"type":"paragraph","inlineContent":[{"type":"text","text":"This step is only required for content that needs a token, when using Alamofire or other 3rd party frameworks that overwrite the standard "},{"type":"codeVoice","code":"user-agent"},{"type":"text","text":" header with their own."},{"text":"\n","type":"text"},{"text":"If the content requires starting a CloudPay session, it’s important that the request to start the session has the same ","type":"text"},{"code":"user-agent","type":"codeVoice"},{"type":"text","text":" header as the video loading requests from the player. This can be achieved either by disabling the overwriting behaviour in the 3rd party networking framework you’re using, or by passing a "},{"code":"userAgent","type":"codeVoice"},{"type":"text","text":" parameter to the "},{"type":"codeVoice","code":"initialize"},{"text":" method, like in this example with Alamofire.","type":"text"}]}]},{"code":"PlayerTestView.swift","media":null,"caption":[{"inlineContent":[{"type":"text","text":"In this step, the code utilizes the "},{"type":"strong","inlineContent":[{"text":"loadPlayer","type":"text"}]},{"text":" function provided by the Playback SDK to initialize and load the video player. The function takes the entry ID and authorization token as parameters. Additionally, it includes a closure to handle any potential playback errors that may occur during the loading process.","type":"text"},{"type":"text","text":" "},{"text":"The ","type":"text"},{"type":"strong","inlineContent":[{"text":"handlePlaybackError","type":"text"}]},{"type":"text","text":" function is called within the closure to handle the playback errors. It switches on the type of error received and provides appropriate error handling based on the type of error encountered."},{"text":" ","type":"text"},{"text":"The code also includes a placeholder comment to indicate where the removal of the player could be implemented in the ","type":"text"},{"inlineContent":[{"type":"text","text":"onDisappear"}],"type":"strong"},{"text":" modifier.","type":"text"},{"type":"text","text":" "},{"type":"text","text":"If you want to allow users to access free content or if you’re implementing a guest mode, you can pass an empty string or "},{"type":"strong","inlineContent":[{"type":"text","text":"nil"}]},{"text":" value as the ","type":"text"},{"inlineContent":[{"text":"authorizationToken","type":"text"}],"type":"strong"},{"text":" when calling the ","type":"text"},{"type":"strong","inlineContent":[{"type":"text","text":"loadPlayer"}]},{"type":"text","text":" function. This will bypass the need for authentication, enabling unrestricted access to the specified content."}],"type":"paragraph"}],"type":"step","runtimePreview":null,"content":[{"inlineContent":[{"text":"Load the player using the Playback SDK and handle any playback errors.","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"Handle the playback errors from Playback SDK.","type":"text"}]}],"caption":[{"type":"paragraph","inlineContent":[{"text":"This step describes enum for error handling. Above is the error enum returned by the SDK, where the apiError also has the reason code and message for the API error. The playback API is returning the reason code in the response. For the list of the error codes and reasons, please refer to ","type":"text"},{"type":"reference","identifier":"https:\/\/streamamg.stoplight.io\/docs\/playback-documentation-portal\/ec642e6dcbb13-get-video-playback-data","isActive":true}]}],"runtimePreview":null,"type":"step","code":"PlayBackAPIError.swift","media":null}],"contentSection":[{"kind":"fullWidth","content":[{"type":"paragraph","inlineContent":[{"inlineContent":[{"type":"text","text":"Explore how to use StreamAMG Playback SDK."}],"type":"strong"}]}]}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/tutorials\/playbacksdk\/getstarted"]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"category":"PlaybackSDK Tutorial","title":"Playback SDK Overview","role":"project","categoryPathComponent":"Table-Of-Contents"},"hierarchy":{"modules":[{"reference":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/Getting-Started","projects":[{"sections":[{"kind":"task","reference":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted#Playback-SDK"}],"reference":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted"}]}],"paths":[["doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/$volume","doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/Getting-Started"]],"reference":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents"},"references":{"doc://PlaybackSDK/tutorials/Table-Of-Contents":{"abstract":[{"text":"Welcome to the PlaybackSDK tutorial! In this tutorial, you will learn how to integrate and use the PlaybackSDK in your iOS applications.","type":"text"}],"url":"\/tutorials\/table-of-contents","identifier":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","title":"Introduction to PlaybackSDK","role":"overview","kind":"overview","type":"topic"},"PlayBackDemoAppWithUserAgent.swift":{"syntax":"swift","content":["import SwiftUI","import PlaybackSDK","import Alamofire","","@main","struct PlayBackDemoApp: App {",""," let sdkManager = PlayBackSDKManager()"," let apiKey = \"API_KEY\""," var body: some Scene {"," WindowGroup {"," HomeView()"," }"," }",""," init() {"," \/\/ Get the user-agent set by Alamofire"," let userAgent = AF.session.configuration.httpAdditionalHeaders?[\"User-Agent\"]",""," \/\/ Initialize the Playback SDK with the provided API key and custom user-agent"," PlayBackSDKManager.shared.initialize(apiKey: apiKey, userAgent: userAgent) { result in"," switch result {"," case .success(let license):"," \/\/ Obtained license upon successful initialization"," print(\"SDK initialized with license: \\(license)\")",""," \/\/ Register the video player plugin"," let bitmovinPlugin = BitmovinPlayerPlugin()"," VideoPlayerPluginManager.shared.registerPlugin(bitmovinPlugin)",""," case .failure(let error):"," \/\/ Print an error message and set initializationError flag upon initialization failure"," print(\"SDK initialization failed with error: \\(error)\")",""," }"," }"," }","}"],"identifier":"PlayBackDemoAppWithUserAgent.swift","fileName":"PlayBackDemoAppWithUserAgent.swift","highlights":[{"line":3},{"line":17},{"line":18},{"line":19},{"line":20},{"line":21}],"type":"file","fileType":"swift"},"https://streamamg.stoplight.io/docs/playback-documentation-portal/ec642e6dcbb13-get-video-playback-data":{"url":"https:\/\/streamamg.stoplight.io\/docs\/playback-documentation-portal\/ec642e6dcbb13-get-video-playback-data","type":"link","identifier":"https:\/\/streamamg.stoplight.io\/docs\/playback-documentation-portal\/ec642e6dcbb13-get-video-playback-data","title":"Get Video Playback Data | Playback","titleInlineContent":[{"type":"text","text":"Get Video Playback Data | Playback"}]},"PlayerTestView.swift":{"syntax":"swift","content":["import SwiftUI","import PlaybackSDK","","struct PlayerTestView: View {"," "," private let entryID = \"ENTRY_ID\""," private let authorizationToken = \"JWT_TOKEN\""," "," var body: some View {"," VStack {"," \/\/ Load player with the playback SDK"," PlayBackSDKManager.shared.loadPlayer(entryID: entryID, authorizationToken: authorizationToken) { error in"," handlePlaybackError(error)"," }"," .onDisappear {"," \/\/ Remove the player here"," }"," Spacer()"," }"," .padding()"," }"," "," private func handlePlaybackError(_ error: PlaybackError) {"," switch error {"," case .apiError(let statusCode, let errorMessage, let reason):"," print(\"\\(errorMessage) Status Code \\(statusCode)\")"," errorMessage = \"\\(errorMessage) Status Code \\(statusCode) Reason \\(reason)\""," default:"," print(\"Error loading HLS stream in PlaybackUIView: \\(error.localizedDescription)\")"," errorMessage = \"Error code and errorrMessage not found: \\(error.localizedDescription)\""," }"," }"," ","}"],"fileName":"PlayerTestView.swift","identifier":"PlayerTestView.swift","highlights":[],"type":"file","fileType":"swift"},"PlayBackAPIError.swift":{"identifier":"PlayBackAPIError.swift","syntax":"swift","fileType":"swift","fileName":"PlayBackAPIError.swift","type":"file","content":["import Foundation","","\/\/ Define reason codes returned by Playback SDK","public enum PlaybackErrorReason: Equatable {"," \/\/ Http error 400"," case headerError"," case badRequestError"," case siteNotFound"," case configurationError"," case apiKeyError"," case mpPartnerError"," "," \/\/ Http error 401"," case tokenError"," case tooManyDevices"," case tooManyRequests"," case noEntitlement"," case noSubscription"," case noActiveSession"," case notAuthenticated"," "," \/\/ Http error 404"," case noEntityExist"," "," \/\/ Unknown error with associated custom message"," case unknownError(String)",""," init(fromString value: String) {"," switch value.uppercased() {"," case \"HEADER_ERROR\": self = .headerError"," case \"BAD_REQUEST_ERROR\": self = .badRequestError"," case \"SITE_NOT_FOUND\": self = .siteNotFound"," case \"CONFIGURATION_ERROR\": self = .configurationError"," case \"API_KEY_ERROR\": self = .apiKeyError"," case \"MP_PARTNER_ERROR\": self = .mpPartnerError"," case \"TOKEN_ERROR\": self = .tokenError"," case \"TOO_MANY_DEVICES\": self = .tooManyDevices"," case \"TOO_MANY_REQUESTS\": self = .tooManyRequests"," case \"NO_ENTITLEMENT\": self = .noEntitlement"," case \"NO_SUBSCRIPTION\": self = .noSubscription"," case \"NO_ACTIVE_SESSION\": self = .noActiveSession"," case \"NOT_AUTHENTICATED\": self = .notAuthenticated"," case \"NO_ENTITY_EXIST\": self = .noEntityExist"," default: self = .unknownError(value)"," }"," }","}"],"highlights":[]},"doc://PlaybackSDK/tutorials/Table-Of-Contents/Getting-Started":{"url":"\/tutorials\/table-of-contents\/getting-started","type":"topic","role":"article","title":"Getting Started","identifier":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/Getting-Started","kind":"article","abstract":[]},"doc://PlaybackSDK/tutorials/PlaybackSDK/GetStarted":{"abstract":[{"text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic.","type":"text"}],"role":"project","kind":"project","identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","title":"Playback SDK Overview","estimatedTime":"30min","type":"topic","url":"\/tutorials\/playbacksdk\/getstarted"},"doc://PlaybackSDK/tutorials/PlaybackSDK/GetStarted#Playback-SDK":{"abstract":[{"type":"text","text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic."}],"title":"Playback SDK","type":"section","kind":"section","url":"\/tutorials\/playbacksdk\/getstarted#Playback-SDK","identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted#Playback-SDK","role":"pseudoSymbol"},"PlayBackDemoApp.swift":{"identifier":"PlayBackDemoApp.swift","syntax":"swift","type":"file","fileName":"PlayBackDemoApp.swift","content":["import SwiftUI","import PlaybackSDK","","@main","struct PlayBackDemoApp: App {",""," let sdkManager = PlayBackSDKManager()"," let apiKey = \"API_KEY\""," var body: some Scene {"," WindowGroup {"," HomeView()"," }"," }",""," init() {"," \/\/ Initialize the Playback SDK with the provided API key and base URL"," PlayBackSDKManager.shared.initialize(apiKey: apiKey) { result in"," switch result {"," case .success(let license):"," \/\/ Obtained license upon successful initialization"," print(\"SDK initialized with license: \\(license)\")",""," \/\/ Register the video player plugin"," let bitmovinPlugin = BitmovinPlayerPlugin()"," VideoPlayerPluginManager.shared.registerPlugin(bitmovinPlugin)",""," case .failure(let error):"," \/\/ Print an error message and set initializationError flag upon initialization failure"," print(\"SDK initialization failed with error: \\(error)\")",""," }"," }"," }","}",""],"fileType":"swift","highlights":[]}}} \ No newline at end of file +{"identifier":{"url":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","interfaceLanguage":"swift"},"kind":"project","sections":[{"kind":"hero","title":"Playback SDK Overview","chapter":"Getting Started","estimatedTimeInMinutes":30,"content":[{"type":"paragraph","inlineContent":[{"text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic.","type":"text"}]},{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Key Features:"}]}],"type":"paragraph"},{"type":"unorderedList","items":[{"content":[{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Abstraction:"}]},{"type":"text","text":" Hides the complexities of underlying video APIs, allowing you to focus on the core playback experience."}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"inlineContent":[{"type":"text","text":"Flexibility:"}],"type":"strong"},{"text":" Supports different video providers and allows the creation of custom playback plugins for extended functionalities.","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Error Handling:","type":"text"}]},{"type":"text","text":" Provides mechanisms to handle potential issues during playback and notify your application."}]}]}]}]},{"kind":"tasks","tasks":[{"title":"Playback SDK","anchor":"Playback-SDK","stepsSection":[{"content":[{"type":"paragraph","inlineContent":[{"text":"Initialize the Playback SDK by providing your API key and register the default player plugin.","type":"text"},{"text":" ","type":"text"},{"type":"strong","inlineContent":[{"text":"Make sure this step is done when the app starts.","type":"text"}]}]}],"code":"PlaybackDemoApp.swift","type":"step","media":null,"runtimePreview":null,"caption":[]},{"media":null,"content":[{"inlineContent":[{"text":"Add custom ","type":"text"},{"type":"codeVoice","code":"user-agent"},{"type":"text","text":" header."}],"type":"paragraph"}],"runtimePreview":null,"code":"PlaybackDemoAppWithUserAgent.swift","type":"step","caption":[{"type":"paragraph","inlineContent":[{"type":"text","text":"This step is only required for content that needs a token, when using Alamofire or other 3rd party frameworks that overwrite the standard "},{"type":"codeVoice","code":"user-agent"},{"type":"text","text":" header with their own."},{"text":"\n","type":"text"},{"text":"If the content requires starting a CloudPay session, it’s important that the request to start the session has the same ","type":"text"},{"code":"user-agent","type":"codeVoice"},{"type":"text","text":" header as the video loading requests from the player. This can be achieved either by disabling the overwriting behaviour in the 3rd party networking framework you’re using, or by passing a "},{"code":"userAgent","type":"codeVoice"},{"type":"text","text":" parameter to the "},{"type":"codeVoice","code":"initialize"},{"text":" method, like in this example with Alamofire.","type":"text"}]}]},{"code":"PlayerTestView.swift","media":null,"caption":[{"inlineContent":[{"type":"text","text":"In this step, the code utilizes the "},{"type":"strong","inlineContent":[{"text":"loadPlayer","type":"text"}]},{"text":" function provided by the Playback SDK to initialize and load the video player. The function takes the entry ID and authorization token as parameters. Additionally, it includes a closure to handle any potential playback errors that may occur during the loading process.","type":"text"},{"type":"text","text":" "},{"text":"The ","type":"text"},{"type":"strong","inlineContent":[{"text":"handlePlaybackError","type":"text"}]},{"type":"text","text":" function is called within the closure to handle the playback errors. It switches on the type of error received and provides appropriate error handling based on the type of error encountered."},{"text":" ","type":"text"},{"text":"The code also includes a placeholder comment to indicate where the removal of the player could be implemented in the ","type":"text"},{"inlineContent":[{"type":"text","text":"onDisappear"}],"type":"strong"},{"text":" modifier.","type":"text"},{"type":"text","text":" "},{"type":"text","text":"If you want to allow users to access free content or if you’re implementing a guest mode, you can pass an empty string or "},{"type":"strong","inlineContent":[{"type":"text","text":"nil"}]},{"text":" value as the ","type":"text"},{"inlineContent":[{"text":"authorizationToken","type":"text"}],"type":"strong"},{"text":" when calling the ","type":"text"},{"type":"strong","inlineContent":[{"type":"text","text":"loadPlayer"}]},{"type":"text","text":" function. This will bypass the need for authentication, enabling unrestricted access to the specified content."}],"type":"paragraph"}],"type":"step","runtimePreview":null,"content":[{"inlineContent":[{"text":"Load the player using the Playback SDK and handle any playback errors.","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"Handle the playback errors from Playback SDK.","type":"text"}]}],"caption":[{"type":"paragraph","inlineContent":[{"text":"This step describes enum for error handling. Above is the error enum returned by the SDK, where the apiError also has the reason code and message for the API error. The playback API is returning the reason code in the response. For the list of the error codes and reasons, please refer to ","type":"text"},{"type":"reference","identifier":"https:\/\/streamamg.stoplight.io\/docs\/playback-documentation-portal\/ec642e6dcbb13-get-video-playback-data","isActive":true}]}],"runtimePreview":null,"type":"step","code":"PlaybackAPIError.swift","media":null}],"contentSection":[{"kind":"fullWidth","content":[{"type":"paragraph","inlineContent":[{"inlineContent":[{"type":"text","text":"Explore how to use StreamAMG Playback SDK."}],"type":"strong"}]}]}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/tutorials\/playbacksdk\/getstarted"]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"category":"PlaybackSDK Tutorial","title":"Playback SDK Overview","role":"project","categoryPathComponent":"Table-Of-Contents"},"hierarchy":{"modules":[{"reference":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/Getting-Started","projects":[{"sections":[{"kind":"task","reference":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted#Playback-SDK"}],"reference":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted"}]}],"paths":[["doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/$volume","doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/Getting-Started"]],"reference":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents"},"references":{"doc://PlaybackSDK/tutorials/Table-Of-Contents":{"abstract":[{"text":"Welcome to the PlaybackSDK tutorial! In this tutorial, you will learn how to integrate and use the PlaybackSDK in your iOS applications.","type":"text"}],"url":"\/tutorials\/table-of-contents","identifier":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","title":"Introduction to PlaybackSDK","role":"overview","kind":"overview","type":"topic"},"PlaybackDemoAppWithUserAgent.swift":{"syntax":"swift","content":["import SwiftUI","import PlaybackSDK","import Alamofire","","@main","struct PlaybackDemoApp: App {",""," let sdkManager = PlaybackSDKManager()"," let apiKey = \"API_KEY\""," var body: some Scene {"," WindowGroup {"," HomeView()"," }"," }",""," init() {"," \/\/ Get the user-agent set by Alamofire"," let userAgent = AF.session.configuration.httpAdditionalHeaders?[\"User-Agent\"]",""," \/\/ Initialize the Playback SDK with the provided API key and custom user-agent"," PlaybackSDKManager.shared.initialize(apiKey: apiKey, userAgent: userAgent) { result in"," switch result {"," case .success(let license):"," \/\/ Obtained license upon successful initialization"," print(\"SDK initialized with license: \\(license)\")",""," \/\/ Register the video player plugin"," let bitmovinPlugin = BitmovinPlayerPlugin()"," VideoPlayerPluginManager.shared.registerPlugin(bitmovinPlugin)",""," case .failure(let error):"," \/\/ Print an error message and set initializationError flag upon initialization failure"," print(\"SDK initialization failed with error: \\(error)\")",""," }"," }"," }","}"],"identifier":"PlaybackDemoAppWithUserAgent.swift","fileName":"PlaybackDemoAppWithUserAgent.swift","highlights":[{"line":3},{"line":17},{"line":18},{"line":19},{"line":20},{"line":21}],"type":"file","fileType":"swift"},"https://streamamg.stoplight.io/docs/playback-documentation-portal/ec642e6dcbb13-get-video-playback-data":{"url":"https:\/\/streamamg.stoplight.io\/docs\/playback-documentation-portal\/ec642e6dcbb13-get-video-playback-data","type":"link","identifier":"https:\/\/streamamg.stoplight.io\/docs\/playback-documentation-portal\/ec642e6dcbb13-get-video-playback-data","title":"Get Video Playback Data | Playback","titleInlineContent":[{"type":"text","text":"Get Video Playback Data | Playback"}]},"PlayerTestView.swift":{"syntax":"swift","content":["import SwiftUI","import PlaybackSDK","","struct PlayerTestView: View {"," "," private let entryID = \"ENTRY_ID\""," private let authorizationToken = \"JWT_TOKEN\""," "," var body: some View {"," VStack {"," \/\/ Load player with the playback SDK"," PlaybackSDKManager.shared.loadPlayer(entryID: entryID, authorizationToken: authorizationToken) { error in"," handlePlaybackError(error)"," }"," .onDisappear {"," \/\/ Remove the player here"," }"," Spacer()"," }"," .padding()"," }"," "," private func handlePlaybackError(_ error: PlaybackError) {"," switch error {"," case .apiError(let statusCode, let errorMessage, let reason):"," print(\"\\(errorMessage) Status Code \\(statusCode)\")"," errorMessage = \"\\(errorMessage) Status Code \\(statusCode) Reason \\(reason)\""," default:"," print(\"Error loading HLS stream in PlaybackUIView: \\(error.localizedDescription)\")"," errorMessage = \"Error code and errorrMessage not found: \\(error.localizedDescription)\""," }"," }"," ","}"],"fileName":"PlayerTestView.swift","identifier":"PlayerTestView.swift","highlights":[],"type":"file","fileType":"swift"},"PlaybackAPIError.swift":{"identifier":"PlaybackAPIError.swift","syntax":"swift","fileType":"swift","fileName":"PlaybackAPIError.swift","type":"file","content":["import Foundation","","\/\/ Define reason codes returned by Playback SDK","public enum PlaybackErrorReason: Equatable {"," \/\/ Http error 400"," case headerError"," case badRequestError"," case siteNotFound"," case configurationError"," case apiKeyError"," case mpPartnerError"," "," \/\/ Http error 401"," case tokenError"," case tooManyDevices"," case tooManyRequests"," case noEntitlement"," case noSubscription"," case noActiveSession"," case notAuthenticated"," "," \/\/ Http error 404"," case noEntityExist"," "," \/\/ Unknown error with associated custom message"," case unknownError(String)",""," init(fromString value: String) {"," switch value.uppercased() {"," case \"HEADER_ERROR\": self = .headerError"," case \"BAD_REQUEST_ERROR\": self = .badRequestError"," case \"SITE_NOT_FOUND\": self = .siteNotFound"," case \"CONFIGURATION_ERROR\": self = .configurationError"," case \"API_KEY_ERROR\": self = .apiKeyError"," case \"MP_PARTNER_ERROR\": self = .mpPartnerError"," case \"TOKEN_ERROR\": self = .tokenError"," case \"TOO_MANY_DEVICES\": self = .tooManyDevices"," case \"TOO_MANY_REQUESTS\": self = .tooManyRequests"," case \"NO_ENTITLEMENT\": self = .noEntitlement"," case \"NO_SUBSCRIPTION\": self = .noSubscription"," case \"NO_ACTIVE_SESSION\": self = .noActiveSession"," case \"NOT_AUTHENTICATED\": self = .notAuthenticated"," case \"NO_ENTITY_EXIST\": self = .noEntityExist"," default: self = .unknownError(value)"," }"," }","}"],"highlights":[]},"doc://PlaybackSDK/tutorials/Table-Of-Contents/Getting-Started":{"url":"\/tutorials\/table-of-contents\/getting-started","type":"topic","role":"article","title":"Getting Started","identifier":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/Getting-Started","kind":"article","abstract":[]},"doc://PlaybackSDK/tutorials/PlaybackSDK/GetStarted":{"abstract":[{"text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic.","type":"text"}],"role":"project","kind":"project","identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","title":"Playback SDK Overview","estimatedTime":"30min","type":"topic","url":"\/tutorials\/playbacksdk\/getstarted"},"doc://PlaybackSDK/tutorials/PlaybackSDK/GetStarted#Playback-SDK":{"abstract":[{"type":"text","text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic."}],"title":"Playback SDK","type":"section","kind":"section","url":"\/tutorials\/playbacksdk\/getstarted#Playback-SDK","identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted#Playback-SDK","role":"pseudoSymbol"},"PlaybackDemoApp.swift":{"identifier":"PlaybackDemoApp.swift","syntax":"swift","type":"file","fileName":"PlaybackDemoApp.swift","content":["import SwiftUI","import PlaybackSDK","","@main","struct PlaybackDemoApp: App {",""," let sdkManager = PlaybackSDKManager()"," let apiKey = \"API_KEY\""," var body: some Scene {"," WindowGroup {"," HomeView()"," }"," }",""," init() {"," \/\/ Initialize the Playback SDK with the provided API key and base URL"," PlaybackSDKManager.shared.initialize(apiKey: apiKey) { result in"," switch result {"," case .success(let license):"," \/\/ Obtained license upon successful initialization"," print(\"SDK initialized with license: \\(license)\")",""," \/\/ Register the video player plugin"," let bitmovinPlugin = BitmovinPlayerPlugin()"," VideoPlayerPluginManager.shared.registerPlugin(bitmovinPlugin)",""," case .failure(let error):"," \/\/ Print an error message and set initializationError flag upon initialization failure"," print(\"SDK initialization failed with error: \\(error)\")",""," }"," }"," }","}",""],"fileType":"swift","highlights":[]}}} diff --git a/docs/data/tutorials/table-of-contents.json b/docs/data/tutorials/table-of-contents.json index 118d233..5803c35 100644 --- a/docs/data/tutorials/table-of-contents.json +++ b/docs/data/tutorials/table-of-contents.json @@ -1 +1 @@ -{"kind":"overview","identifier":{"url":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"minor":3,"major":0},"hierarchy":{"reference":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","paths":[]},"sections":[{"action":{"identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","isActive":true,"overridingTitleInlineContent":[{"type":"text","text":"Get started"}],"type":"reference","overridingTitle":"Get started"},"kind":"hero","title":"Introduction to PlaybackSDK","content":[{"inlineContent":[{"text":"Welcome to the PlaybackSDK tutorial! In this tutorial, you will learn how to integrate and use the PlaybackSDK in your iOS applications.","type":"text"}],"type":"paragraph"}]},{"content":[],"kind":"volume","name":null,"chapters":[{"image":"ios-marketing.png","name":"Getting Started","tutorials":["doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted"],"content":[{"inlineContent":[{"type":"text","text":"In this chapter, we’ll start by setting up the PlaybackSDK from the initialisation to load the PlayBack Player Plugin."}],"type":"paragraph"}]}],"image":null},{"kind":"resources","tiles":[{"title":"Documentation","identifier":"documentation","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Browse and search the PlaybackSDK documentation."}]},{"type":"unorderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"reference","identifier":"https:\/\/github.com\/StreamAMG\/playback-sdk-ios\/tree\/main","isActive":true}]}]},{"content":[{"inlineContent":[{"type":"reference","isActive":true,"identifier":"https:\/\/streamamg.stoplight.io"}],"type":"paragraph"}]}]}]}],"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Explore more resources for learning about PlaybackSDK."}]}]}],"metadata":{"estimatedTime":"30min","role":"overview","title":"Introduction to PlaybackSDK","categoryPathComponent":"Table-Of-Contents","category":"PlaybackSDK Tutorial"},"variants":[{"paths":["\/tutorials\/table-of-contents"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"ios-marketing.png":{"alt":"Getting Started with PlaybackSDK","variants":[{"url":"\/images\/ios-marketing.png","traits":["1x","light"]}],"type":"image","identifier":"ios-marketing.png"},"https://github.com/StreamAMG/playback-sdk-ios/tree/main":{"type":"link","titleInlineContent":[{"text":"GitHub Repository","type":"text"}],"url":"https:\/\/github.com\/StreamAMG\/playback-sdk-ios\/tree\/main","title":"GitHub Repository","identifier":"https:\/\/github.com\/StreamAMG\/playback-sdk-ios\/tree\/main"},"doc://PlaybackSDK/tutorials/PlaybackSDK/GetStarted":{"abstract":[{"text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic.","type":"text"}],"role":"project","kind":"project","identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","title":"Playback SDK Overview","estimatedTime":"30min","type":"topic","url":"\/tutorials\/playbacksdk\/getstarted"},"doc://PlaybackSDK/tutorials/Table-Of-Contents":{"abstract":[{"text":"Welcome to the PlaybackSDK tutorial! In this tutorial, you will learn how to integrate and use the PlaybackSDK in your iOS applications.","type":"text"}],"url":"\/tutorials\/table-of-contents","identifier":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","title":"Introduction to PlaybackSDK","role":"overview","kind":"overview","type":"topic"},"https://streamamg.stoplight.io":{"type":"link","identifier":"https:\/\/streamamg.stoplight.io","title":"Stoplight PlayBack API","url":"https:\/\/streamamg.stoplight.io","titleInlineContent":[{"text":"Stoplight PlayBack API","type":"text"}]}}} \ No newline at end of file +{"kind":"overview","identifier":{"url":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"minor":3,"major":0},"hierarchy":{"reference":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","paths":[]},"sections":[{"action":{"identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","isActive":true,"overridingTitleInlineContent":[{"type":"text","text":"Get started"}],"type":"reference","overridingTitle":"Get started"},"kind":"hero","title":"Introduction to PlaybackSDK","content":[{"inlineContent":[{"text":"Welcome to the PlaybackSDK tutorial! In this tutorial, you will learn how to integrate and use the PlaybackSDK in your iOS applications.","type":"text"}],"type":"paragraph"}]},{"content":[],"kind":"volume","name":null,"chapters":[{"image":"ios-marketing.png","name":"Getting Started","tutorials":["doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted"],"content":[{"inlineContent":[{"type":"text","text":"In this chapter, we’ll start by setting up the PlaybackSDK from the initialisation to load the Playback Player Plugin."}],"type":"paragraph"}]}],"image":null},{"kind":"resources","tiles":[{"title":"Documentation","identifier":"documentation","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Browse and search the PlaybackSDK documentation."}]},{"type":"unorderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"reference","identifier":"https:\/\/github.com\/StreamAMG\/playback-sdk-ios\/tree\/main","isActive":true}]}]},{"content":[{"inlineContent":[{"type":"reference","isActive":true,"identifier":"https:\/\/streamamg.stoplight.io"}],"type":"paragraph"}]}]}]}],"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Explore more resources for learning about PlaybackSDK."}]}]}],"metadata":{"estimatedTime":"30min","role":"overview","title":"Introduction to PlaybackSDK","categoryPathComponent":"Table-Of-Contents","category":"PlaybackSDK Tutorial"},"variants":[{"paths":["\/tutorials\/table-of-contents"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"ios-marketing.png":{"alt":"Getting Started with PlaybackSDK","variants":[{"url":"\/images\/ios-marketing.png","traits":["1x","light"]}],"type":"image","identifier":"ios-marketing.png"},"https://github.com/StreamAMG/playback-sdk-ios/tree/main":{"type":"link","titleInlineContent":[{"text":"GitHub Repository","type":"text"}],"url":"https:\/\/github.com\/StreamAMG\/playback-sdk-ios\/tree\/main","title":"GitHub Repository","identifier":"https:\/\/github.com\/StreamAMG\/playback-sdk-ios\/tree\/main"},"doc://PlaybackSDK/tutorials/PlaybackSDK/GetStarted":{"abstract":[{"text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic.","type":"text"}],"role":"project","kind":"project","identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","title":"Playback SDK Overview","estimatedTime":"30min","type":"topic","url":"\/tutorials\/playbacksdk\/getstarted"},"doc://PlaybackSDK/tutorials/Table-Of-Contents":{"abstract":[{"text":"Welcome to the PlaybackSDK tutorial! In this tutorial, you will learn how to integrate and use the PlaybackSDK in your iOS applications.","type":"text"}],"url":"\/tutorials\/table-of-contents","identifier":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","title":"Introduction to PlaybackSDK","role":"overview","kind":"overview","type":"topic"},"https://streamamg.stoplight.io":{"type":"link","identifier":"https:\/\/streamamg.stoplight.io","title":"Stoplight Playback API","url":"https:\/\/streamamg.stoplight.io","titleInlineContent":[{"text":"Stoplight Playback API","type":"text"}]}}} From 5327ff7d7856e5ef1b392a1257744d00918a44f7 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Tue, 1 Oct 2024 12:57:38 +0200 Subject: [PATCH 02/26] CORE-4594 Playlist API integration - Using playlistConfig for multiple videos and sourceConfig for single video - Disable player touch in case no video or playlist loaded - Renamed setup to setupRemoteCommandCenter - Load playlistConfig for playlist or load sourceConfig for single video - Detailed error handling --- Sources/PlaybackSDK/PlaybackSDKManager.swift | 12 +++-- .../BitMovinPlugin/BitmovinPlayerView.swift | 47 +++++++++++-------- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/Sources/PlaybackSDK/PlaybackSDKManager.swift b/Sources/PlaybackSDK/PlaybackSDKManager.swift index 90e784f..585525a 100644 --- a/Sources/PlaybackSDK/PlaybackSDKManager.swift +++ b/Sources/PlaybackSDK/PlaybackSDKManager.swift @@ -247,19 +247,19 @@ public class PlaybackSDKManager { .sink(receiveCompletion: { result in switch result { case .failure(let error): - print("Error getting details") + print("Error API call getting details") if let apiError = error as? PlaybackAPIError { playbackErrors.append(apiError) } else { playbackErrors.append(.networkError(error)) } case .finished: - print("Video details fetched successfully.") + print("All video details fetched successfully.") completion(.success((videoDetails, playbackErrors))) // break } }, receiveValue: { details in - // Print the received video details + // Print the received single video details print("Received video details...") switch details { case .failure(let error): @@ -270,7 +270,7 @@ public class PlaybackSDKManager { playbackErrors.append(.networkError(error)) } case .success(let response): - print("Video details fetched successfully \(response)") + print("Single video details fetched successfully \(response)") videoDetails.append(response) } }) @@ -299,6 +299,7 @@ public class PlaybackSDKManager { .sink(receiveCompletion: { result in switch result { case .failure(let error): + // API call failure if let playbackAPIError = error as? PlaybackAPIError { completion(.failure(playbackAPIError)) } else { @@ -309,10 +310,11 @@ public class PlaybackSDKManager { break } }, receiveValue: { result in - // Print the received video details + // Print the received single video details print("Received video details: \(result)") switch result { case .failure(let error): + // Getting video details error if let playbackAPIError = error as? PlaybackAPIError { completion(.failure(playbackAPIError)) } else { diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift index 689b3e3..d6591ba 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift @@ -19,7 +19,22 @@ public struct BitmovinPlayerView: View { private let player: Player private var playerViewConfig = PlayerViewConfig() private var sources: [Source] = [] - private var playlistConfig: PlaylistConfig? + + private var playlistConfig: PlaylistConfig? { + if sources.isEmpty || sources.count == 1 { + return nil + } + let playlistOptions = PlaylistOptions(preloadAllSources: false) + return PlaylistConfig(sources: sources, options: playlistOptions) + } + + private var sourceConfig: SourceConfig? { + if sources.isEmpty || sources.count > 1 { + return nil + } + let sConfig = sources.first!.sourceConfig + return sConfig + } /// Initializes the view with the player passed from outside. /// @@ -32,15 +47,11 @@ public struct BitmovinPlayerView: View { self.player = player - sources = createPlaylist(from: videoDetails) - - let playlistOptions = PlaylistOptions(preloadAllSources: false) + playerViewConfig = PlayerViewConfig() - playlistConfig = PlaylistConfig(sources: sources, options: playlistOptions) + sources = createPlaylist(from: videoDetails) - playerViewConfig = PlayerViewConfig() - - setup(title: videoDetails.first?.name ?? "") + setupRemoteCommandCenter(title: videoDetails.first?.name ?? "") } /// Initializes the view with an instance of player created inside of it, upon initialization. @@ -54,8 +65,6 @@ public struct BitmovinPlayerView: View { /// - parameter playerConfig: Configuration that will be passed into the player upon creation, with an additional update in this initializer. public init(videoDetails: [PlaybackResponseModel], playerConfig: PlayerConfig) { -// self.hlsURLArrayString = [hlsURLString] - let uiConfig = BitmovinUserInterfaceConfig() uiConfig.hideFirstFrame = true playerConfig.styleConfig.userInterfaceConfig = uiConfig @@ -67,13 +76,7 @@ public struct BitmovinPlayerView: View { sources = createPlaylist(from: videoDetails) - let playlistOptions = PlaylistOptions(preloadAllSources: false) - - playlistConfig = PlaylistConfig(sources: sources, options: playlistOptions) - - playerViewConfig = PlayerViewConfig() - - setup(title: videoDetails.first?.name ?? "") + setupRemoteCommandCenter(title: videoDetails.first?.name ?? "") } public var body: some View { @@ -96,10 +99,16 @@ public struct BitmovinPlayerView: View { let sourceIdentifier = source.sourceConfig.title ?? source.sourceConfig.url.absoluteString dump(event, name: "[Source Event] - \(sourceIdentifier)", maxDepth: 1) } + // Disable player touch in case video or playlist not been loaded + .allowsHitTesting(self.sourceConfig != nil || self.playlistConfig != nil) } .onAppear { - if let playlistConfig = playlistConfig { + if let playlistConfig = self.playlistConfig { + // Multiple videos with playlist available so load player with playlistConfig player.load(playlistConfig: playlistConfig) + } else if let sourceConfig = self.sourceConfig { + // Single video available so load player with sourceConfig + player.load(sourceConfig: sourceConfig) } } .onDisappear { @@ -202,7 +211,7 @@ public struct BitmovinPlayerView: View { } } - private func setup(title: String) { + private func setupRemoteCommandCenter(title: String) { // Setup remote control commands to be able to control playback from Control Center setupRemoteTransportControls() From 90577b5d33db45fa46daf69e354b11e95e4c0efa Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Thu, 3 Oct 2024 11:57:31 +0200 Subject: [PATCH 03/26] CORE-4594 Playlist API integration - Created localised descriptions for PlaybackAPI errors - Fixed small typo - Ordered playlist items as requested - Improved displayed errors --- Sources/PlaybackSDK/PlaybackSDKManager.swift | 69 ++++++++++++++----- .../PlayerUIView/PlaybackUIView.swift | 8 +++ 2 files changed, 59 insertions(+), 18 deletions(-) diff --git a/Sources/PlaybackSDK/PlaybackSDKManager.swift b/Sources/PlaybackSDK/PlaybackSDKManager.swift index 585525a..1a86ff2 100644 --- a/Sources/PlaybackSDK/PlaybackSDKManager.swift +++ b/Sources/PlaybackSDK/PlaybackSDKManager.swift @@ -81,11 +81,33 @@ public enum PlaybackAPIError: Error { case apiError(statusCode: Int, message: String, reason: PlaybackErrorReason) } +extension PlaybackAPIError: LocalizedError { + public var errorDescription: String? { + switch self { + case .invalidResponsePlaybackData: + return NSLocalizedString("Invalid Response Playback data", comment: "") + case .invalidPlaybackDataURL: + return NSLocalizedString("Invalid Playback data URL", comment: "") + case .invalidPlayerInformationURL: + return NSLocalizedString("Invalid Player Information URL", comment: "") + case .initializationError: + return NSLocalizedString("Initialization error", comment: "") + case .loadHLSStreamError: + return NSLocalizedString("Load HLS Stream error", comment: "") + case .unknown: + return NSLocalizedString("Unknown", comment: "") + case .networkError(let error): + return NSLocalizedString("Network error \(error.localizedDescription)", comment: "") + case .apiError(statusCode: let statusCode, message: let message, reason: let reason): + return NSLocalizedString("API error: [\(statusCode)] \(message)", comment: "") + } + } +} /// Singleton responsible for initializing the SDK and managing player information public class PlaybackSDKManager { - //MARK: Piblic Properties + //MARK: Public Properties /// Singleton instance of the `PlaybackSDKManager`. public static let shared = PlaybackSDKManager() @@ -242,36 +264,38 @@ public class PlaybackSDKManager { let publishers = listEntryId.compactMap { entryId in return playbackAPIExist.getVideoDetails(forEntryId: entryId, andAuthorizationToken: andAuthorizationToken, userAgent: userAgentHeader) } - - _ = Publishers.MergeMany(publishers) + + combineOrder(publishers) .sink(receiveCompletion: { result in switch result { case .failure(let error): print("Error API call getting details") if let apiError = error as? PlaybackAPIError { - playbackErrors.append(apiError) + completion(.failure(apiError)) } else { - playbackErrors.append(.networkError(error)) + completion(.failure(.networkError(error))) } case .finished: print("All video details fetched successfully.") completion(.success((videoDetails, playbackErrors))) -// break } }, receiveValue: { details in - // Print the received single video details - print("Received video details...") - switch details { - case .failure(let error): - print("Error getting video details \(error)") - if let apiError = error as? PlaybackAPIError { - playbackErrors.append(apiError) - } else { - playbackErrors.append(.networkError(error)) + // Received all sorted video details in an array of Result + print("Received all sorted video details...") + + for result in details { + switch result { + case .failure(let error): + print("Error getting video details \(error)") + if let apiError = error as? PlaybackAPIError { + playbackErrors.append(apiError) + } else { + playbackErrors.append(.networkError(error)) + } + case .success(let response): + print("Single video details fetched successfully \(response)") + videoDetails.append(response) } - case .success(let response): - print("Single video details fetched successfully \(response)") - videoDetails.append(response) } }) .store(in: &cancellables) @@ -327,6 +351,15 @@ public class PlaybackSDKManager { }) .store(in: &cancellables) } + + func combineOrder(_ pubs: [Pub]) -> AnyPublisher<[Pub.Output], Pub.Failure> where Pub: Publisher { + guard !pubs.isEmpty else { return Empty().eraseToAnyPublisher() } + return pubs.dropFirst().reduce(pubs[0].map { [$0] }.eraseToAnyPublisher()) { partial, next in + partial.combineLatest(next) + .map { $0 + [$1] } + .eraseToAnyPublisher() + } + } } diff --git a/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift b/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift index 5e92af5..a76019a 100644 --- a/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift +++ b/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift @@ -27,7 +27,10 @@ internal struct PlaybackUIView: View { /// The fetched video details of the entryIDs @State private var videoDetails: [PlaybackResponseModel]? + /// Array of errors for fetching playlist details @State private var playlistErrors: [PlaybackAPIError]? + /// Error of failed API call for loading video details + @State private var failureError: PlaybackAPIError? /// Closure to handle errors during a single HLS stream loading. private var onError: ((PlaybackAPIError) -> Void)? @@ -76,6 +79,9 @@ internal struct PlaybackUIView: View { ErrorUIView(errorMessage: "No plugin selected") .background(Color.white) } + } else if let locDesc = self.failureError?.localizedDescription { + ErrorUIView(errorMessage: locDesc) + .background(Color.white) } else { ErrorUIView(errorMessage: "Invalid Video Details") .background(Color.white) @@ -108,6 +114,8 @@ internal struct PlaybackUIView: View { // Trow error to the app onError?(error) onErrors?([error]) + self.failureError = error + self.hasFetchedVideoDetails = true print("Error loading videos details: \(error)") } } From ea0c7d9b4d15c22ab5f59271fdbfc7626bc20b88 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Wed, 9 Oct 2024 15:10:39 +0200 Subject: [PATCH 04/26] CORE-4594 Playlist API integration - Implemented playlist next, previous, last, first, seek and activeEntryId - Add entryId as metadata source --- .../BitMovinPlugin/BitmovinPlayerPlugin.swift | 46 +++++++++++++++++++ .../BitMovinPlugin/BitmovinPlayerView.swift | 9 +++- .../Player Plugin/VideoPlayerPlugin.swift | 14 +++++- 3 files changed, 67 insertions(+), 2 deletions(-) diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift index 93385a9..138dcec 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift @@ -63,6 +63,52 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin { public func pause() { player?.pause() } + + public func next() { + if let index = player?.playlist.sources.firstIndex(where: { $0.isActive }) { + if index < (player?.playlist.sources.count ?? 0) - 1, let nextSource = player?.playlist.sources[(index) + 1] { + player?.playlist.seek(source: nextSource, time: 0) + } + } + } + + public func previous() { + if let index = player?.playlist.sources.firstIndex(where: { $0.isActive }) { + if index > 0, let prevSource = player?.playlist.sources[(index) - 1] { + player?.playlist.seek(source: prevSource, time: 0) + } + } + } + + public func last() { + if let lastSource = player?.playlist.sources.last { + player?.playlist.seek(source: lastSource, time: 0) + } + } + + public func first() { + if let firstSource = player?.playlist.sources.first { + player?.playlist.seek(source: firstSource, time: 0) + } + } + + public func seek(to entryId: String) { + if let index = player?.playlist.sources.firstIndex(where: { $0.metadata?["entryId"] as? String == entryId }) { + if let source = player?.playlist.sources[index] { + player?.playlist.seek(source: source, time: 0) + player?.play() + } + } + } + + public func activeEntryId() -> String? { + if let index = player?.playlist.sources.firstIndex(where: { $0.isActive }) { + if let entryId = player?.playlist.sources[index].metadata?["entryId"] as? String { + return entryId + } + } + return nil + } public func unload() { player?.unload() diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift index d6591ba..059e814 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift @@ -138,7 +138,14 @@ public struct BitmovinPlayerView: View { sourceConfig.title = details.name sourceConfig.posterSource = details.coverImg?._360 sourceConfig.sourceDescription = details.description - + let regex = try! NSRegularExpression(pattern: "/entryId/(.+?)/") + let range = NSRange(location: 0, length: hlsURLString.count) + if let match = regex.firstMatch(in: hlsURLString, options: [], range: range) { + if let swiftRange = Range(match.range(at: 1), in: hlsURLString) { + let entryId = hlsURLString[swiftRange] + sourceConfig.metadata["entryId"] = String(entryId) + } + } return SourceFactory.createSource(from: sourceConfig) } diff --git a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift index e9aae80..8117ed3 100644 --- a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift @@ -23,7 +23,19 @@ public protocol VideoPlayerPlugin: AnyObject { func play() - func pause() + func pause() + + func next() + + func previous() + + func last() + + func first() + + func seek(to entryId: String) + + func activeEntryId() -> String? func removePlayer() } From 906752f0e7477ca30b284f20401ea49ece2c33e3 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Wed, 23 Oct 2024 14:10:55 +0200 Subject: [PATCH 05/26] CORE-4594 Playlist API integration - Optimized code for next, previous and seek - Bitmovin player and playlist event listener - Fixed an issue that recreated the player every UI refresh - Removed unused event listener from BitmovinPlayerView - Added event, seek return value for plugin protocol --- .../BitMovinPlugin/BitmovinPlayerPlugin.swift | 100 ++++++++++++++---- .../BitMovinPlugin/BitmovinPlayerView.swift | 12 --- .../Player Plugin/VideoPlayerPlugin.swift | 6 +- 3 files changed, 81 insertions(+), 37 deletions(-) diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift index 138dcec..5c72895 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift @@ -7,16 +7,27 @@ #if !os(macOS) import BitmovinPlayer import SwiftUI +import Combine -public class BitmovinPlayerPlugin: VideoPlayerPlugin { +public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { private let playerConfig: PlayerConfig - private weak var player: Player? + private weak var player: Player? { + didSet { + if self.player != nil { + listenPlayerEvents() + } + } + } + private var cancellables = Set() // Required properties public let name: String public let version: String + public let event: AnyPublisher + private let subject = PassthroughSubject() + public init() { let playerConfig = PlayerConfig() @@ -27,6 +38,8 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin { self.playerConfig = playerConfig self.name = "BitmovinPlayerPlugin" self.version = "1.0.1" // TODO: Get the version from Bundle + + self.event = subject.eraseToAnyPublisher() } // MARK: VideoPlayerPlugin protocol implementation @@ -40,21 +53,52 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin { } public func playerView(videoDetails: [PlaybackResponseModel]) -> AnyView { - // Create player based on player and analytics configurations - let player = PlayerFactory.createPlayer( - playerConfig: playerConfig - ) - - self.player = player + // Check if player already loaded in order to avoid multiple pending player in memory + if self.player == nil { + let player = PlayerFactory.createPlayer( + playerConfig: playerConfig + ) + self.player = player + + return AnyView( + BitmovinPlayerView( + videoDetails: videoDetails, + player: player + ) + ) + } return AnyView( BitmovinPlayerView( videoDetails: videoDetails, - player: player + player: self.player! ) ) } + + public func listenPlayerEvents() { + + // Player Events + player?.events + .on(PlayerEvent.self) + .sink { event in + DispatchQueue.main.asyncAfter(deadline: .now()) { [weak self] in + self?.subject.send(event) + } + } + .store(in: &cancellables) + + // Source Events + player?.events + .on(SourceEvent.self) + .sink { event in + DispatchQueue.main.asyncAfter(deadline: .now()) { [weak self] in + self?.subject.send(event) + } + } + .store(in: &cancellables) + } public func play() { player?.play() @@ -65,17 +109,23 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin { } public func next() { - if let index = player?.playlist.sources.firstIndex(where: { $0.isActive }) { - if index < (player?.playlist.sources.count ?? 0) - 1, let nextSource = player?.playlist.sources[(index) + 1] { - player?.playlist.seek(source: nextSource, time: 0) + if let sources = player?.playlist.sources { + if let index = sources.firstIndex(where: { $0.isActive }) { + if index < (sources.count ?? 0) - 1 { + let nextSource = sources[(index) + 1] + player?.playlist.seek(source: nextSource, time: 0) + } } } } public func previous() { - if let index = player?.playlist.sources.firstIndex(where: { $0.isActive }) { - if index > 0, let prevSource = player?.playlist.sources[(index) - 1] { - player?.playlist.seek(source: prevSource, time: 0) + if let sources = player?.playlist.sources { + if let index = sources.firstIndex(where: { $0.isActive }) { + if index > 0 { + let prevSource = sources[(index) - 1] + player?.playlist.seek(source: prevSource, time: 0) + } } } } @@ -92,21 +142,25 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin { } } - public func seek(to entryId: String) { - if let index = player?.playlist.sources.firstIndex(where: { $0.metadata?["entryId"] as? String == entryId }) { - if let source = player?.playlist.sources[index] { - player?.playlist.seek(source: source, time: 0) - player?.play() + public func seek(to entryId: String) -> Bool { + if let sources = player?.playlist.sources { + if let index = sources.firstIndex(where: { $0.metadata?["entryId"] as? String == entryId }) { + player?.playlist.seek(source: sources[index], time: 0) + return true } } + return false } public func activeEntryId() -> String? { - if let index = player?.playlist.sources.firstIndex(where: { $0.isActive }) { - if let entryId = player?.playlist.sources[index].metadata?["entryId"] as? String { - return entryId + if let sources = player?.playlist.sources { + if let index = sources.firstIndex(where: { $0.isActive }) { + if let entryId = sources[index].metadata?["entryId"] as? String { + return entryId + } } } + return nil } diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift index 059e814..d48f6a1 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift @@ -87,18 +87,6 @@ public struct BitmovinPlayerView: View { player: player, playerViewConfig: playerViewConfig ) - .onReceive(player.events.on(PlayerEvent.self)) { (event: PlayerEvent) in - dump(event, name: "[Player Event]", maxDepth: 1) - } - .onReceive(player.events.on(SourceEvent.self)) { (event: SourceEvent) in - dump(event, name: "[Source Event]", maxDepth: 1) - } - .onReceive(Publishers.MergeMany(sources.map { source in - source.events.on(SourceEvent.self).map { event in (event, source) } - })) { (event: SourceEvent, source: Source) in - let sourceIdentifier = source.sourceConfig.title ?? source.sourceConfig.url.absoluteString - dump(event, name: "[Source Event] - \(sourceIdentifier)", maxDepth: 1) - } // Disable player touch in case video or playlist not been loaded .allowsHitTesting(self.sourceConfig != nil || self.playlistConfig != nil) } diff --git a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift index 8117ed3..b2a7cb1 100644 --- a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift @@ -7,12 +7,14 @@ #if !os(macOS) import AVFoundation import SwiftUI +import Combine // Protocol for defining a video player plugin public protocol VideoPlayerPlugin: AnyObject { var name: String { get } var version: String { get } + var event: AnyPublisher { get } func setup(config: VideoPlayerConfig) @@ -33,10 +35,10 @@ public protocol VideoPlayerPlugin: AnyObject { func first() - func seek(to entryId: String) + func seek(to entryId: String) -> Bool func activeEntryId() -> String? - func removePlayer() + func removePlayer() } #endif From 0f6505a83e01b087322c82ecacbc34882c5edf18 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Fri, 25 Oct 2024 12:35:14 +0200 Subject: [PATCH 06/26] CORE-4594 Fixing test Fixing loadHLSStream test as @artem-y-pamediagroup mentioned in PR #26 --- Tests/PlaybackSDKTests/TestConfig.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/PlaybackSDKTests/TestConfig.swift b/Tests/PlaybackSDKTests/TestConfig.swift index 7d5e217..2975275 100644 --- a/Tests/PlaybackSDKTests/TestConfig.swift +++ b/Tests/PlaybackSDKTests/TestConfig.swift @@ -9,5 +9,5 @@ import Foundation internal struct TestConfig { static let testAPIKey = "EJEZPIezBkaf0EQ7ey5Iu2MDA2ARUkgc79eyDOnG" - static let testEntryID = "0_qt9cy11s" + static let testEntryID = "0_cmk35zei" } From 0365480ca26c0752015c95a1bb763777a3d6759e Mon Sep 17 00:00:00 2001 From: Stefano <80751983+StefanoStream@users.noreply.github.com> Date: Mon, 28 Oct 2024 12:43:20 +0100 Subject: [PATCH 07/26] Update Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift Applying @artem-y-pamediagroup suggestion regarding entryIds naming Co-authored-by: Artem Y. <160732886+artem-y-pamediagroup@users.noreply.github.com> --- Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift b/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift index a76019a..031f848 100644 --- a/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift +++ b/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift @@ -14,7 +14,7 @@ import SwiftUI internal struct PlaybackUIView: View { /// The entry ID or a list of the videos to be played. - private var entryId: [String] + private var entryIds: [String] /// Optional authorization token if required to fetch the video details. private var authorizationToken: String? From 6d2286b636df2a7e026f3f5a54e0b415a37e68c2 Mon Sep 17 00:00:00 2001 From: Stefano <80751983+StefanoStream@users.noreply.github.com> Date: Mon, 28 Oct 2024 13:00:08 +0100 Subject: [PATCH 08/26] Update Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift Applying @artem-y-pamediagroup suggestion regarding readable coding on next() function Co-authored-by: Artem Y. <160732886+artem-y-pamediagroup@users.noreply.github.com> --- .../Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift index 5c72895..754fc94 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift @@ -111,8 +111,9 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { public func next() { if let sources = player?.playlist.sources { if let index = sources.firstIndex(where: { $0.isActive }) { - if index < (sources.count ?? 0) - 1 { - let nextSource = sources[(index) + 1] + let nextIndex = index + 1 + if nextIndex < (sources.count ?? 0) { + let nextSource = sources[nextIndex] player?.playlist.seek(source: nextSource, time: 0) } } From 96f282bfdc0abd7229d1141ca6d85a3e0b68b4ce Mon Sep 17 00:00:00 2001 From: Stefano <80751983+StefanoStream@users.noreply.github.com> Date: Mon, 28 Oct 2024 13:05:51 +0100 Subject: [PATCH 09/26] Update Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift Applying @artem-y-pamediagroup suggestion regarding align plugin version with SDK version Co-authored-by: Artem Y. <160732886+artem-y-pamediagroup@users.noreply.github.com> --- .../Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift index 754fc94..f6fd260 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift @@ -37,7 +37,7 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { playerConfig.key = PlaybackSDKManager.shared.bitmovinLicense self.playerConfig = playerConfig self.name = "BitmovinPlayerPlugin" - self.version = "1.0.1" // TODO: Get the version from Bundle + self.version = "1.3.0" // TODO: Get the version from Bundle self.event = subject.eraseToAnyPublisher() } From c177c247de8e285ed367c6b94a7a567db9764120 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Mon, 28 Oct 2024 13:42:28 +0100 Subject: [PATCH 10/26] Playlist unit test cases - Added tests for new playlist feature - Fixed testLoadHLSStream checking the right HLS url - Fixed a comment on PlaybackSDKManager --- Sources/PlaybackSDK/PlaybackSDKManager.swift | 2 +- .../PlaybackSDKManagerTests.swift | 69 ++++++++++++++++++- Tests/PlaybackSDKTests/TestConfig.swift | 1 + 3 files changed, 68 insertions(+), 4 deletions(-) diff --git a/Sources/PlaybackSDK/PlaybackSDKManager.swift b/Sources/PlaybackSDK/PlaybackSDKManager.swift index 1a86ff2..f73f76e 100644 --- a/Sources/PlaybackSDK/PlaybackSDKManager.swift +++ b/Sources/PlaybackSDK/PlaybackSDKManager.swift @@ -345,7 +345,7 @@ public class PlaybackSDKManager { completion(.failure(.networkError(error))) } case .success(let details): - // Call the completion handler with the HLS stream URL + // Call the completion handler with the video details completion(.success(details)) } }) diff --git a/Tests/PlaybackSDKTests/PlaybackSDKManagerTests.swift b/Tests/PlaybackSDKTests/PlaybackSDKManagerTests.swift index 0103e0f..cbcd687 100644 --- a/Tests/PlaybackSDKTests/PlaybackSDKManagerTests.swift +++ b/Tests/PlaybackSDKTests/PlaybackSDKManagerTests.swift @@ -15,6 +15,7 @@ class PlaybackSDKManagerTests: XCTestCase { var manager: PlaybackSDKManager! var apiKey: String! var entryID: String! + var playlistEntryID: [String]! override func setUpWithError() throws { try super.setUpWithError() @@ -23,6 +24,7 @@ class PlaybackSDKManagerTests: XCTestCase { XCTAssertNotNil(apiKey, "API key should be provided via environment variable") entryID = TestConfig.testEntryID XCTAssertNotNil(entryID, "Entry ID should be provided via environment variable") + playlistEntryID = TestConfig.testPlaylistEntryID } override func tearDownWithError() throws { @@ -68,6 +70,61 @@ class PlaybackSDKManagerTests: XCTestCase { waitForExpectations(timeout: 5, handler: nil) } + + func testLoadAllHLSStreams() { + let initializationExpectation = expectation(description: "SDK initialization") + manager.initialize(apiKey: apiKey) { result in + switch result { + case .success: + initializationExpectation.fulfill() + case .failure(let error): + XCTFail("SDK initialization failed with error: \(error.localizedDescription)") + } + } + waitForExpectations(timeout: 5, handler: nil) + + let videoDetailsExpectation = expectation(description: "Video details loading expectation") + manager.loadAllHLSStream(forEntryIds: playlistEntryID, andAuthorizationToken: nil) { result in + switch result { + case .success(let videoDetails): + XCTAssertNotNil(videoDetails.0, "Video details should not be nil") + XCTAssertTrue(videoDetails.1.isEmpty, "Playlist errors should be void") + videoDetailsExpectation.fulfill() + case .failure(let error): + XCTFail("Loading Playlist video details failed with error: \(error.localizedDescription)") + } + } + waitForExpectations(timeout: 5, handler: nil) + } + + func testLoadAllHLSStreamsWithError() { + let initializationExpectation = expectation(description: "SDK initialization") + manager.initialize(apiKey: apiKey) { result in + switch result { + case .success: + initializationExpectation.fulfill() + case .failure(let error): + XCTFail("SDK initialization failed with error: \(error.localizedDescription)") + } + } + waitForExpectations(timeout: 5, handler: nil) + + let videoDetailsExpectation = expectation(description: "Video details loading expectation") + var playlistEntryIDwithError: [String] = playlistEntryID + // Adding a fake entryId to check that the error callback works + playlistEntryIDwithError.append("0_xxxxxxxx") + manager.loadAllHLSStream(forEntryIds: playlistEntryIDwithError, andAuthorizationToken: nil) { result in + switch result { + case .success(let videoDetails): + XCTAssertNotNil(videoDetails.0, "Video details should not be nil") + XCTAssertTrue(videoDetails.1.isEmpty == false, "Playlist errors should be not empty") + videoDetailsExpectation.fulfill() + case .failure(let error): + XCTFail("Loading Playlist video details failed with error: \(error.localizedDescription)") + } + } + waitForExpectations(timeout: 5, handler: nil) + } func testLoadHLSStream() { let initializationExpectation = expectation(description: "SDK initialization") @@ -84,8 +141,8 @@ class PlaybackSDKManagerTests: XCTestCase { let hlsExpectation = expectation(description: "HLS stream loading expectation") manager.loadHLSStream(forEntryId: entryID, andAuthorizationToken: nil) { result in switch result { - case .success(let hlsURL): - XCTAssertNotNil(hlsURL, "HLS stream URL should not be nil") + case .success(let videoDetail): + XCTAssertNotNil(videoDetail.media?.hls, "HLS stream URL should not be nil") hlsExpectation.fulfill() case .failure(let error): XCTFail("Loading HLS stream failed with error: \(error.localizedDescription)") @@ -126,7 +183,7 @@ class PlaybackSDKManagerTests: XCTestCase { let hlsExpectation = expectation(description: "Empty entry id loading expectation") manager.loadHLSStream(forEntryId: "", andAuthorizationToken: nil) { result in switch result { - case .success(let hlsURL): + case .success(_): XCTFail("Empty entry id provided but got HLS stream") case .failure(let error): switch error { @@ -147,4 +204,10 @@ class PlaybackSDKManagerTests: XCTestCase { // Assert that playerView is not nil or do further UI testing if possible XCTAssertNotNil(playerView) } + + func testLoadPlaylist() { + let playerView = manager.loadPlaylist(entryIDs: playlistEntryID, authorizationToken: nil, onErrors: { _ in }) + // Assert that playerView is not nil or do further UI testing if possible + XCTAssertNotNil(playerView) + } } diff --git a/Tests/PlaybackSDKTests/TestConfig.swift b/Tests/PlaybackSDKTests/TestConfig.swift index 2975275..ecb615f 100644 --- a/Tests/PlaybackSDKTests/TestConfig.swift +++ b/Tests/PlaybackSDKTests/TestConfig.swift @@ -10,4 +10,5 @@ import Foundation internal struct TestConfig { static let testAPIKey = "EJEZPIezBkaf0EQ7ey5Iu2MDA2ARUkgc79eyDOnG" static let testEntryID = "0_cmk35zei" + static let testPlaylistEntryID = ["0_cmk35zei", "0_xv365lyn"] } From 349ce61f87f595c58332212e072b1e540bcf5592 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Mon, 28 Oct 2024 14:05:11 +0100 Subject: [PATCH 11/26] CORE-4594 Playlist API integration - Renaming next and previous protocol function with playNext and playPrevious as @artem-y-pamediagroup suggested on #26 - Fixing entryIds naming as @artem-y-pamediagroup suggested on #26 - Fixing a warning issue on playNext function --- .../Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift | 6 +++--- Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift | 4 ++-- Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift index f6fd260..eeace36 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift @@ -108,11 +108,11 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { player?.pause() } - public func next() { + public func playNext() { if let sources = player?.playlist.sources { if let index = sources.firstIndex(where: { $0.isActive }) { let nextIndex = index + 1 - if nextIndex < (sources.count ?? 0) { + if nextIndex < sources.count { let nextSource = sources[nextIndex] player?.playlist.seek(source: nextSource, time: 0) } @@ -120,7 +120,7 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { } } - public func previous() { + public func playPrevious() { if let sources = player?.playlist.sources { if let index = sources.firstIndex(where: { $0.isActive }) { if index > 0 { diff --git a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift index b2a7cb1..b920635 100644 --- a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift @@ -27,9 +27,9 @@ public protocol VideoPlayerPlugin: AnyObject { func pause() - func next() + func playNext() - func previous() + func playPrevious() func last() diff --git a/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift b/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift index 031f848..1b2bc72 100644 --- a/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift +++ b/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift @@ -45,7 +45,7 @@ internal struct PlaybackUIView: View { - authorizationToken: Optional authorization token if required to fetch the video details. */ internal init(entryId: [String], authorizationToken: String?, onErrors: (([PlaybackAPIError]) -> Void)?) { - self.entryId = entryId + self.entryIds = entryId self.authorizationToken = authorizationToken self.onErrors = onErrors } @@ -58,7 +58,7 @@ internal struct PlaybackUIView: View { - authorizationToken: Optional authorization token if required to fetch the video details. */ internal init(entryId: [String], authorizationToken: String?, onError: ((PlaybackAPIError) -> Void)?) { - self.entryId = entryId + self.entryIds = entryId self.authorizationToken = authorizationToken self.onError = onError } @@ -98,7 +98,7 @@ internal struct PlaybackUIView: View { private func loadHLSStream() { //TO-DO Fetch all HLS urls from the entryID array - PlaybackSDKManager.shared.loadAllHLSStream(forEntryIds: entryId, andAuthorizationToken: authorizationToken) { result in + PlaybackSDKManager.shared.loadAllHLSStream(forEntryIds: entryIds, andAuthorizationToken: authorizationToken) { result in switch result { case .success(let videoDetails): DispatchQueue.main.async { From be5c99b5a59315650ef8faff5bbbd6b971ae0518 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Fri, 1 Nov 2024 13:10:33 +0100 Subject: [PATCH 12/26] CORE-5100 CORE-5085 Playlist documentation - Added example how to toggle autoplay and background playback - Fixed readme discrepancies - Improved readme example - Renamed PlaybackError to PlaybackAPIError --- README.md | 9 ++++++++- .../Documentation.docc/Resources/PlayBackDemoApp.swift | 7 +++++++ .../Resources/PlayBackDemoAppWithUserAgent.swift | 7 +++++++ .../Documentation.docc/Resources/PlayerTestView.swift | 2 +- .../Documentation.docc/Tutorial/GetStarted.tutorial | 2 +- 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6fce273..d80e9b7 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,14 @@ Example: switch result { case .success(let license): - val customPlugin = BitmovinVideoPlayerPlugin() + let customPlugin = BitmovinPlayerPlugin() + + // Setting up player plugin + var config = VideoPlayerConfig() + config.playbackConfig.autoplayEnabled = true // Toggle autoplay + config.playbackConfig.backgroundPlaybackEnabled = true // Toggle background playback + customPlugin.setup(config: config) + VideoPlayerPluginManager.shared.registerPlugin(customPlugin) case .failure(let error): // Handle error diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoApp.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoApp.swift index 4cfe637..bac55fe 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoApp.swift +++ b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoApp.swift @@ -22,6 +22,13 @@ struct PlaybackDemoApp: App { // Register the video player plugin let bitmovinPlugin = BitmovinPlayerPlugin() + + // Setting up player plugin + var config = VideoPlayerConfig() + config.playbackConfig.autoplayEnabled = true // Toggle autoplay + config.playbackConfig.backgroundPlaybackEnabled = true // Toggle background playback + bitmovinPlugin.setup(config: config) + VideoPlayerPluginManager.shared.registerPlugin(bitmovinPlugin) case .failure(let error): diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoAppWithUserAgent.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoAppWithUserAgent.swift index 8d7cb0b..1fe1c39 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoAppWithUserAgent.swift +++ b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoAppWithUserAgent.swift @@ -26,6 +26,13 @@ struct PlaybackDemoApp: App { // Register the video player plugin let bitmovinPlugin = BitmovinPlayerPlugin() + + // Setting up player plugin + var config = VideoPlayerConfig() + config.playbackConfig.autoplayEnabled = true // Toggle autoplay + config.playbackConfig.backgroundPlaybackEnabled = true // Toggle background playback + bitmovinPlugin.setup(config: config) + VideoPlayerPluginManager.shared.registerPlugin(bitmovinPlugin) case .failure(let error): diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestView.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestView.swift index 28451b3..89141f9 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestView.swift +++ b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestView.swift @@ -20,7 +20,7 @@ struct PlayerTestView: View { .padding() } - private func handlePlaybackError(_ error: PlaybackError) { + private func handlePlaybackError(_ error: PlaybackAPIError) { switch error { case .apiError(let statusCode, let errorMessage, let reason): print("\(errorMessage) Status Code \(statusCode)") diff --git a/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial b/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial index ddc4496..4f46384 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial +++ b/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial @@ -16,7 +16,7 @@ @Steps { @Step { - Initialize the Playback SDK by providing your API key and register the default player plugin. + Initialize the Playback SDK by providing your API key, setup and register the default player plugin. **Make sure this step is done when the app starts.** From c576a85b4e42a163c600d481d66cef4e0f31e0ae Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Wed, 13 Nov 2024 14:26:19 +0100 Subject: [PATCH 13/26] CORE-4594 Playlist API integration - Adding new playlist logic fetching video details every playing video - Load playlist passing the starting entryId (entryIDToPlay) - Seek entryId with completion --- Sources/PlaybackSDK/PlaybackSDKManager.swift | 33 +++++++++- .../BitMovinPlugin/BitmovinPlayerPlugin.swift | 66 ++++++++++++++++--- .../BitMovinPlugin/BitmovinPlayerView.swift | 39 +++++------ .../Player Plugin/VideoPlayerPlugin.swift | 4 +- .../PlayerUIView/PlaybackUIView.swift | 16 +++-- 5 files changed, 115 insertions(+), 43 deletions(-) diff --git a/Sources/PlaybackSDK/PlaybackSDKManager.swift b/Sources/PlaybackSDK/PlaybackSDKManager.swift index f73f76e..32b70db 100644 --- a/Sources/PlaybackSDK/PlaybackSDKManager.swift +++ b/Sources/PlaybackSDK/PlaybackSDKManager.swift @@ -8,6 +8,7 @@ import Foundation import Combine import SwiftUI +import BitmovinPlayer // Errors.swift @@ -176,7 +177,7 @@ public class PlaybackSDKManager { ) -> some View { PlaybackUIView( - entryId: [entryID], + entryId: entryID, authorizationToken: authorizationToken, onError: onError ) @@ -198,12 +199,14 @@ public class PlaybackSDKManager { */ public func loadPlaylist( entryIDs: [String], + entryIDToPlay: String? = nil, authorizationToken: String? = nil, onErrors: (([PlaybackAPIError]) -> Void)? ) -> some View { PlaybackUIView( - entryId: entryIDs, + entryIds: entryIDs, + entryIDToPlay: entryIDToPlay, authorizationToken: authorizationToken, onErrors: onErrors ) @@ -360,6 +363,32 @@ public class PlaybackSDKManager { .eraseToAnyPublisher() } } + + func createSource(from details: PlaybackResponseModel, authorizationToken: String?) -> Source? { + + guard let hlsURLString = details.media?.hls, let hlsURL = URL(string: hlsURLString) else { + return nil + } + + let sourceConfig = SourceConfig(url: hlsURL, type: .hls) + // Avoiding to fill all the details (title, thumbnail and description) for now + // Because when the initial video is not the first one and we have to seek the first source + // Bitmovin SDK has a bug/glitch that show the title/thumbnail of the first video for a short time before changing to the new one +// sourceConfig.title = details.name +// sourceConfig.posterSource = details.coverImg?._360 +// sourceConfig.sourceDescription = details.description + let regex = try! NSRegularExpression(pattern: "/entryId/(.+?)/") + let range = NSRange(location: 0, length: hlsURLString.count) + if let match = regex.firstMatch(in: hlsURLString, options: [], range: range) { + if let swiftRange = Range(match.range(at: 1), in: hlsURLString) { + let entryId = hlsURLString[swiftRange] + sourceConfig.metadata["entryId"] = String(entryId) + sourceConfig.metadata["details"] = details + sourceConfig.metadata["authorizationToken"] = authorizationToken + } + } + return SourceFactory.createSource(from: sourceConfig) + } } diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift index eeace36..cda08d9 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift @@ -20,6 +20,8 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { } } private var cancellables = Set() + private var authorizationToken: String? = nil + private var entryIDToPlay: String? // Required properties public let name: String @@ -52,7 +54,9 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { playerConfig.styleConfig.userInterfaceConfig = uiConfig } - public func playerView(videoDetails: [PlaybackResponseModel]) -> AnyView { + public func playerView(videoDetails: [PlaybackResponseModel], entryIDToPlay: String?, authorizationToken: String?) -> AnyView { + self.authorizationToken = authorizationToken + self.entryIDToPlay = entryIDToPlay // Create player based on player and analytics configurations // Check if player already loaded in order to avoid multiple pending player in memory if self.player == nil { @@ -64,6 +68,8 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { return AnyView( BitmovinPlayerView( videoDetails: videoDetails, + entryIDToPlay: entryIDToPlay, + authorizationToken: self.authorizationToken, player: player ) ) @@ -72,6 +78,8 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { return AnyView( BitmovinPlayerView( videoDetails: videoDetails, + entryIDToPlay: entryIDToPlay, + authorizationToken: self.authorizationToken, player: self.player! ) ) @@ -114,7 +122,7 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { let nextIndex = index + 1 if nextIndex < sources.count { let nextSource = sources[nextIndex] - player?.playlist.seek(source: nextSource, time: 0) + seekSource(to: nextSource) } } } @@ -125,7 +133,7 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { if let index = sources.firstIndex(where: { $0.isActive }) { if index > 0 { let prevSource = sources[(index) - 1] - player?.playlist.seek(source: prevSource, time: 0) + seekSource(to: prevSource) } } } @@ -133,24 +141,64 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { public func last() { if let lastSource = player?.playlist.sources.last { - player?.playlist.seek(source: lastSource, time: 0) + seekSource(to: lastSource) } } public func first() { if let firstSource = player?.playlist.sources.first { - player?.playlist.seek(source: firstSource, time: 0) + seekSource(to: firstSource) } } - public func seek(to entryId: String) -> Bool { + public func seek(to entryId: String, completion: @escaping (Bool) -> Void) { if let sources = player?.playlist.sources { if let index = sources.firstIndex(where: { $0.metadata?["entryId"] as? String == entryId }) { - player?.playlist.seek(source: sources[index], time: 0) - return true + seekSource(to: sources[index]) { success in + completion(success) + } + } else { + completion(false) + } + } else { + completion(false) + } + } + + private func seekSource(to source: Source, completion: ( (Bool) -> (Void))? = nil) { + if let sources = player?.playlist.sources { + if let index = sources.firstIndex(where: { $0 === source }) { + updateSource(for: sources[index]) { updatedSource in + if let updatedSource = updatedSource { + self.player?.playlist.remove(sourceAt: index) + self.player?.playlist.add(source: updatedSource, at: index) + self.player?.playlist.seek(source: updatedSource, time: 0) + completion?(true) + } else { + completion?(false) + } + } + } + } + } + + private func updateSource(for source: Source, completion: @escaping (Source?) -> Void) { + + let entryId = source.metadata?["entryId"] as? String + let authorizationToken = source.metadata?["authorizationToken"] as? String + + if let entryId = entryId { + PlaybackSDKManager.shared.loadHLSStream(forEntryId: entryId, andAuthorizationToken: authorizationToken) { result in + switch result { + case .success(let videoDetails): + let newSource = PlaybackSDKManager.shared.createSource(from: videoDetails, authorizationToken: authorizationToken) + completion(newSource) + case .failure: + break + completion(nil) + } } } - return false } public func activeEntryId() -> String? { diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift index d48f6a1..dae4735 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift @@ -19,6 +19,8 @@ public struct BitmovinPlayerView: View { private let player: Player private var playerViewConfig = PlayerViewConfig() private var sources: [Source] = [] + private var entryIDToPlay: String? + private var authorizationToken: String? private var playlistConfig: PlaylistConfig? { if sources.isEmpty || sources.count == 1 { @@ -43,9 +45,11 @@ public struct BitmovinPlayerView: View { /// /// - parameter videoDetails: Full videos details containing name, description, thumbnail, duration as well as URL of the HLS video stream that will be loaded by the player as the video source /// - parameter player: Instance of the player that was created and configured outside of this view. - public init(videoDetails: [PlaybackResponseModel], player: Player) { + public init(videoDetails: [PlaybackResponseModel], entryIDToPlay: String?, authorizationToken: String?, player: Player) { self.player = player + self.authorizationToken = authorizationToken + self.entryIDToPlay = entryIDToPlay playerViewConfig = PlayerViewConfig() @@ -63,7 +67,7 @@ public struct BitmovinPlayerView: View { /// /// - parameter hlsURLString: Full videos details containing name, description, thumbnail, duration as well as URL of the HLS video stream that will be loaded by the player as the video source /// - parameter playerConfig: Configuration that will be passed into the player upon creation, with an additional update in this initializer. - public init(videoDetails: [PlaybackResponseModel], playerConfig: PlayerConfig) { + public init(videoDetails: [PlaybackResponseModel], entryIDToPlay: String?, authorizationToken: String?, playerConfig: PlayerConfig) { let uiConfig = BitmovinUserInterfaceConfig() uiConfig.hideFirstFrame = true @@ -73,6 +77,8 @@ public struct BitmovinPlayerView: View { self.player = PlayerFactory.createPlayer( playerConfig: playerConfig ) + self.authorizationToken = authorizationToken + self.entryIDToPlay = entryIDToPlay sources = createPlaylist(from: videoDetails) @@ -94,6 +100,12 @@ public struct BitmovinPlayerView: View { if let playlistConfig = self.playlistConfig { // Multiple videos with playlist available so load player with playlistConfig player.load(playlistConfig: playlistConfig) + if let entryIDToPlay = self.entryIDToPlay { + if let index = player.playlist.sources.firstIndex(where: { $0.sourceConfig.metadata["entryId"] as? String == entryIDToPlay }) { + player.playlist.seek(source: sources[index], time: .zero) + player.seek(time: .zero) + } + } } else if let sourceConfig = self.sourceConfig { // Single video available so load player with sourceConfig player.load(sourceConfig: sourceConfig) @@ -108,34 +120,13 @@ public struct BitmovinPlayerView: View { var sources: [Source] = [] for details in videoDetails { - if let videoSource = createSource(from: details) { + if let videoSource = PlaybackSDKManager.shared.createSource(from: details, authorizationToken: self.authorizationToken) { sources.append(videoSource) } } return sources } - - func createSource(from details: PlaybackResponseModel) -> Source? { - - guard let hlsURLString = details.media?.hls, let hlsURL = URL(string: hlsURLString) else { - return nil - } - - let sourceConfig = SourceConfig(url: hlsURL, type: .hls) - sourceConfig.title = details.name - sourceConfig.posterSource = details.coverImg?._360 - sourceConfig.sourceDescription = details.description - let regex = try! NSRegularExpression(pattern: "/entryId/(.+?)/") - let range = NSRange(location: 0, length: hlsURLString.count) - if let match = regex.firstMatch(in: hlsURLString, options: [], range: range) { - if let swiftRange = Range(match.range(at: 1), in: hlsURLString) { - let entryId = hlsURLString[swiftRange] - sourceConfig.metadata["entryId"] = String(entryId) - } - } - return SourceFactory.createSource(from: sourceConfig) - } func setupRemoteTransportControls() { // Get the shared MPRemoteCommandCenter diff --git a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift index b920635..abaf75f 100644 --- a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift @@ -21,7 +21,7 @@ public protocol VideoPlayerPlugin: AnyObject { // TODO: add event /// func handleEvent(event: BitmovinPlayerCore.PlayerEvent) - func playerView(videoDetails: [PlaybackResponseModel]) -> AnyView + func playerView(videoDetails: [PlaybackResponseModel], entryIDToPlay: String?, authorizationToken: String?) -> AnyView func play() @@ -35,7 +35,7 @@ public protocol VideoPlayerPlugin: AnyObject { func first() - func seek(to entryId: String) -> Bool + func seek(to entryId: String, completion: @escaping (Bool) -> Void) func activeEntryId() -> String? diff --git a/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift b/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift index 1b2bc72..2b44ecd 100644 --- a/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift +++ b/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift @@ -16,6 +16,9 @@ internal struct PlaybackUIView: View { /// The entry ID or a list of the videos to be played. private var entryIds: [String] + /// The entryID to play at the beginning + private var entryIDToPlay: String? + /// Optional authorization token if required to fetch the video details. private var authorizationToken: String? @@ -44,8 +47,9 @@ internal struct PlaybackUIView: View { - entryId: A list of entry ID of the video to be played. - authorizationToken: Optional authorization token if required to fetch the video details. */ - internal init(entryId: [String], authorizationToken: String?, onErrors: (([PlaybackAPIError]) -> Void)?) { - self.entryIds = entryId + internal init(entryIds: [String], entryIDToPlay: String?, authorizationToken: String?, onErrors: (([PlaybackAPIError]) -> Void)?) { + self.entryIds = entryIds + self.entryIDToPlay = entryIDToPlay ?? entryIds.first self.authorizationToken = authorizationToken self.onErrors = onErrors } @@ -54,11 +58,11 @@ internal struct PlaybackUIView: View { Initializes the `PlaybackUIView` with the provided list of entry ID and authorization token. - Parameters: - - entryId: A list of entry ID of the video to be played. + - entryId: An entry ID of the video to be played. - authorizationToken: Optional authorization token if required to fetch the video details. */ - internal init(entryId: [String], authorizationToken: String?, onError: ((PlaybackAPIError) -> Void)?) { - self.entryIds = entryId + internal init(entryId: String, authorizationToken: String?, onError: ((PlaybackAPIError) -> Void)?) { + self.entryIds = [entryId] self.authorizationToken = authorizationToken self.onError = onError } @@ -74,7 +78,7 @@ internal struct PlaybackUIView: View { } else { if let videoDetails = videoDetails { if let plugin = pluginManager.selectedPlugin { - plugin.playerView(videoDetails: videoDetails) + plugin.playerView(videoDetails: videoDetails, entryIDToPlay: entryIDToPlay, authorizationToken: authorizationToken) } else { ErrorUIView(errorMessage: "No plugin selected") .background(Color.white) From 72807756d5872886710a4280e0d556426d852354 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Thu, 21 Nov 2024 14:43:49 +0100 Subject: [PATCH 14/26] CORE-5100 Playlist documentation - Playlist documentation on README file - Added example of loadPlaylist on Tutorial - Example of playlist controls and events on Tutorial - Preview Swift DocC command added to test tutorial locally --- README.md | 20 ++++++ ...kAPIError.swift => PlaybackAPIError.swift} | 0 ...ackDemoApp.swift => PlaybackDemoApp.swift} | 0 ...ift => PlaybackDemoAppWithUserAgent.swift} | 0 ...yerTestPlaylistControlsAndEventsView.swift | 65 +++++++++++++++++++ .../Resources/PlayerTestPlaylistView.swift | 37 +++++++++++ .../Tutorial/GetStarted.tutorial | 20 ++++++ preview_docc | 6 ++ 8 files changed, 148 insertions(+) rename Sources/PlaybackSDK/Documentation.docc/Resources/{PlayBackAPIError.swift => PlaybackAPIError.swift} (100%) rename Sources/PlaybackSDK/Documentation.docc/Resources/{PlayBackDemoApp.swift => PlaybackDemoApp.swift} (100%) rename Sources/PlaybackSDK/Documentation.docc/Resources/{PlayBackDemoAppWithUserAgent.swift => PlaybackDemoAppWithUserAgent.swift} (100%) create mode 100644 Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistControlsAndEventsView.swift create mode 100644 Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistView.swift create mode 100644 preview_docc diff --git a/README.md b/README.md index d80e9b7..60ef98c 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,26 @@ PlaybackSDKManager.shared.loadPlayer(entryID: entryId, authorizationToken: autho }  ``` +# Loading a Playlist + +To load a sequential list of videos into the player UI, use the `loadPlaylist` method of the `PlaybackSDKManager` singleton object. This method is a Composable function that you can use to load and render the player UI. +`entryIDs`: an array of Strings containing the unique identifiers of all the videos in the playlist. +`entryIDToPlay`: specifies the unique video identifier that will be played first in the playlist. Optional parameter + +Example: + +```swift +PlaybackSDKManager.shared.loadPlayer(entryIDs: listEntryId, entryIDToPlay: "0_xxxxxxxx", authorizationToken: authorizationToken) { errors in + // Handle player UI playlist errors +}  +``` + +## Control playlist +xxx + +## Playlist events +xxx + # Playing Access-Controlled Content To play on-demand and live videos that require authorization, at some point before loading the player your app must call CloudPay to start session, passing the authorization token: ```swift diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackAPIError.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlaybackAPIError.swift similarity index 100% rename from Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackAPIError.swift rename to Sources/PlaybackSDK/Documentation.docc/Resources/PlaybackAPIError.swift diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoApp.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlaybackDemoApp.swift similarity index 100% rename from Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoApp.swift rename to Sources/PlaybackSDK/Documentation.docc/Resources/PlaybackDemoApp.swift diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoAppWithUserAgent.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlaybackDemoAppWithUserAgent.swift similarity index 100% rename from Sources/PlaybackSDK/Documentation.docc/Resources/PlayBackDemoAppWithUserAgent.swift rename to Sources/PlaybackSDK/Documentation.docc/Resources/PlaybackDemoAppWithUserAgent.swift diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistControlsAndEventsView.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistControlsAndEventsView.swift new file mode 100644 index 0000000..971d6b4 --- /dev/null +++ b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistControlsAndEventsView.swift @@ -0,0 +1,65 @@ +import SwiftUI +import PlaybackSDK + +struct PlayerTestPlaylistControlsAndEventsView: View { + + @StateObject private var pluginManager = VideoPlayerPluginManager.shared + private let entryIDs = ["ENTRY_ID1", "ENTRY_ID_2", "ENTRY_ID_3"] + private let entryIDToPlay = "ENTRY_ID_2" // Optional parameter + private let entryIdToSeek = "ENTRY_ID_TO_SEEK" + private let authorizationToken = "JWT_TOKEN" + + var body: some View { + VStack { + // Load playlist with the playback SDK + PlaybackSDKManager.shared.loadPlaylist(entryIDs: entryIDs, entryIDToPlay: entryIDToPlay, authorizationToken: authorizationToken) { errors in + handlePlaybackError(errors) + } + .onReceive(pluginManager.selectedPlugin!.event) { event in + if let event = event as? PlaylistTransitionEvent { // Playlist Event + if let from = event.from.metadata?["entryId"], let to = event.to.metadata?["entryId"] { + print("Playlist event changed from \(from) to \(to)") + } + } + } + .onDisappear { + // Remove the player here + } + + Spacer() + + Button { + // You can use the following playlist controls + pluginManager.selectedPlugin?.first() // Play the first video + pluginManager.selectedPlugin?.playPrevious() // Play the previous video + pluginManager.selectedPlugin?.playNext() // Play the next video + pluginManager.selectedPlugin?.last() // Play the last video + pluginManager.selectedPlugin?.seek(to: entryIdToSeek) { success in // Seek to a specific video + if (!success) { + let errorMessage = "Unable to seek to \(entryIdToSeek)" + } + } + pluginManager.selectedPlugin?.activeEntryId() // Get the active video Id + } label: { + Image(systemName: "list.triangle") + } + + Spacer() + } + .padding() + } + + private func handlePlaybackErrors(_ errors: [PlaybackAPIError]) { + + for error in errors { + switch error { + case .apiError(let statusCode, let message, let reason): + let message = "\(message) Status Code \(statusCode), Reason: \(reason)" + print(message) + default: + print("Error code and errorrMessage not found: \(error.localizedDescription)") + } + } + } + +} diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistView.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistView.swift new file mode 100644 index 0000000..39f6889 --- /dev/null +++ b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistView.swift @@ -0,0 +1,37 @@ +import SwiftUI +import PlaybackSDK + +struct PlayerTestPlaylistView: View { + + private let entryIDs = ["ENTRY_ID1", "ENTRY_ID_2", "ENTRY_ID_3"] + private let entryIDToPlay = "ENTRY_ID_2" // Optional parameter + private let authorizationToken = "JWT_TOKEN" + + var body: some View { + VStack { + // Load playlist with the playback SDK + PlaybackSDKManager.shared.loadPlaylist(entryIDs: entryIDs, entryIDToPlay: entryIDToPlay, authorizationToken: authorizationToken) { errors in + handlePlaybackError(errors) + } + .onDisappear { + // Remove the player here + } + Spacer() + } + .padding() + } + + private func handlePlaybackErrors(_ errors: [PlaybackAPIError]) { + + for error in errors { + switch error { + case .apiError(let statusCode, let message, let reason): + let message = "\(message) Status Code \(statusCode), Reason: \(reason)" + print(message) + default: + print("Error code and errorrMessage not found: \(error.localizedDescription)") + } + } + } + +} diff --git a/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial b/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial index 4f46384..d993dda 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial +++ b/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial @@ -40,6 +40,26 @@ @Code(name: "PlayerTestView.swift", file: PlayerTestView.swift) } + @Step { + Load the player passing a playlist using the Playback SDK and handle any playlist errors. + + In this step, the code utilizes the **loadPlaylist** function provided by the Playback SDK to initialize and load the video player. The function takes an array of entry ID, the starting entry ID to play and an authorization token as parameters. Additionally, it includes a closure to handle any potential playlist errors that may occur during the loading process. + The **handlePlaybackErrors** function is called within the closure to handle the playlist errors. + It's an array of PlaybackError and for every error it switches on the type of error received and provides appropriate error handling based on the type of error encountered. + The code also includes a placeholder comment to indicate where the removal of the player could be implemented in the **onDisappear** modifier. + If you want to allow users to access free content or if you're implementing a guest mode, you can pass an empty string or **nil** value as the **authorizationToken** when calling the **loadPlaylist** function. This will bypass the need for authentication, enabling unrestricted access to the specified contents. + + @Code(name: "PlayerTestPlaylistView.swift", file: PlayerTestPlaylistView.swift) + } + @Step { + Playlist controls and events + + Declaring the **VideoPlayerPluginManager** singleton instance as **@StateObject** variable like in the example, allow you to access to the playlist controls as well as the playlist events + In the **onReceive** modifier, you can listen to the player events such as the **PlaylistTransitionEvent** that gives you information regarding the transition between a video to another + Through the **pluginManager.selectedPlugin** is possible to interact with playlist controls like in the example and get to know the current video that is playing with **activeEntryId** function. + + @Code(name: "PlayerTestPlaylistControlsAndEventsView.swift", file: PlayerTestPlaylistControlsAndEventsView.swift, previousFile: PlayerTestPlaylistView.swift) + } @Step { Handle the playback errors from Playback SDK. diff --git a/preview_docc b/preview_docc new file mode 100644 index 0000000..63e762e --- /dev/null +++ b/preview_docc @@ -0,0 +1,6 @@ +#!/bin/bash + +# This is a convenience script to preview Swift DocC documentation to prepare for GitHub Pages publishing +# Source: https://swiftlang.github.io/swift-docc-plugin/documentation/swiftdoccplugin/previewing-documentation + +swift package --disable-sandbox preview-documentation --target PlaybackSDK \ No newline at end of file From be2019b41b5bfe395e13c4dec94f53afb2e2a20f Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Thu, 21 Nov 2024 14:46:34 +0100 Subject: [PATCH 15/26] CORE-4594 Playlist API integration - Added entryId to the PlaybackResponseModel - Fixing entryId on sourceConfig metadata field - Fixing issue mixing Live with VOD --- .../PlayBack API/PlaybackAPIService.swift | 3 ++- .../PlayBack API/PlaybackResponseModel.swift | 1 + Sources/PlaybackSDK/PlaybackSDKManager.swift | 25 ++++++++++++------ .../BitMovinPlugin/BitmovinPlayerPlugin.swift | 26 ++++++++++++++----- 4 files changed, 40 insertions(+), 15 deletions(-) diff --git a/Sources/PlaybackSDK/PlayBack API/PlaybackAPIService.swift b/Sources/PlaybackSDK/PlayBack API/PlaybackAPIService.swift index c01f546..083d9d6 100644 --- a/Sources/PlaybackSDK/PlayBack API/PlaybackAPIService.swift +++ b/Sources/PlaybackSDK/PlayBack API/PlaybackAPIService.swift @@ -64,7 +64,8 @@ internal class PlaybackAPIService: PlaybackAPI { switch httpResponse.statusCode { case 200...299: - if let response = try? JSONDecoder().decode(PlaybackResponseModel.self, from: data) { + if var response = try? JSONDecoder().decode(PlaybackResponseModel.self, from: data) { + response.entryId = entryId return .success(response) } else { return .failure(PlaybackAPIError.invalidResponsePlaybackData) diff --git a/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift b/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift index 4b748b7..0a3ccd5 100644 --- a/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift +++ b/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift @@ -21,6 +21,7 @@ public struct PlaybackResponseModel: Decodable { public let playFrom: Int? public let adverts: [Advert]? public let coverImg: CoverImages? + public var entryId: String? public struct Media: Decodable { public let hls: String? diff --git a/Sources/PlaybackSDK/PlaybackSDKManager.swift b/Sources/PlaybackSDK/PlaybackSDKManager.swift index 32b70db..aab902a 100644 --- a/Sources/PlaybackSDK/PlaybackSDKManager.swift +++ b/Sources/PlaybackSDK/PlaybackSDKManager.swift @@ -377,16 +377,25 @@ public class PlaybackSDKManager { // sourceConfig.title = details.name // sourceConfig.posterSource = details.coverImg?._360 // sourceConfig.sourceDescription = details.description - let regex = try! NSRegularExpression(pattern: "/entryId/(.+?)/") - let range = NSRange(location: 0, length: hlsURLString.count) - if let match = regex.firstMatch(in: hlsURLString, options: [], range: range) { - if let swiftRange = Range(match.range(at: 1), in: hlsURLString) { - let entryId = hlsURLString[swiftRange] - sourceConfig.metadata["entryId"] = String(entryId) - sourceConfig.metadata["details"] = details - sourceConfig.metadata["authorizationToken"] = authorizationToken + + if details.entryId?.isEmpty == false { + sourceConfig.metadata["entryId"] = details.entryId + } else { + // Recover entryId from hls url (not working for live url) + let regex = try! NSRegularExpression(pattern: "/entryId/(.+?)/") + let range = NSRange(location: 0, length: hlsURLString.count) + if let match = regex.firstMatch(in: hlsURLString, options: [], range: range) { + if let swiftRange = Range(match.range(at: 1), in: hlsURLString) { + let entryId = hlsURLString[swiftRange] + sourceConfig.metadata["entryId"] = String(entryId) + + } } } + + sourceConfig.metadata["details"] = details + sourceConfig.metadata["authorizationToken"] = authorizationToken + return SourceFactory.createSource(from: sourceConfig) } } diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift index cda08d9..a387a74 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift @@ -153,7 +153,7 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { public func seek(to entryId: String, completion: @escaping (Bool) -> Void) { if let sources = player?.playlist.sources { - if let index = sources.firstIndex(where: { $0.metadata?["entryId"] as? String == entryId }) { + if let index = sources.firstIndex(where: { $0.sourceConfig.metadata["entryId"] as? String == entryId }) { seekSource(to: sources[index]) { success in completion(success) } @@ -167,12 +167,26 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { private func seekSource(to source: Source, completion: ( (Bool) -> (Void))? = nil) { if let sources = player?.playlist.sources { - if let index = sources.firstIndex(where: { $0 === source }) { + if let index = sources.firstIndex(where: { $0.sourceConfig.metadata["entryId"] as? String == source.sourceConfig.metadata["entryId"] as? String }) { updateSource(for: sources[index]) { updatedSource in if let updatedSource = updatedSource { self.player?.playlist.remove(sourceAt: index) self.player?.playlist.add(source: updatedSource, at: index) - self.player?.playlist.seek(source: updatedSource, time: 0) + + if let sources = self.player?.playlist.sources { + DispatchQueue.main.asyncAfter(deadline: .now()) { [weak self] in + + let playlistOptions = PlaylistOptions(preloadAllSources: false) + let pConfig = PlaylistConfig(sources: sources, options: playlistOptions) + + self?.player?.load(playlistConfig: pConfig) + self?.player?.playlist.seek(source: updatedSource, time: .zero) + self?.player?.seek(time: .zero) + } + } else { + self.player?.playlist.seek(source: updatedSource, time: .zero) + } + completion?(true) } else { completion?(false) @@ -184,8 +198,8 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { private func updateSource(for source: Source, completion: @escaping (Source?) -> Void) { - let entryId = source.metadata?["entryId"] as? String - let authorizationToken = source.metadata?["authorizationToken"] as? String + let entryId = source.sourceConfig.metadata["entryId"] as? String + let authorizationToken = source.sourceConfig.metadata["authorizationToken"] as? String if let entryId = entryId { PlaybackSDKManager.shared.loadHLSStream(forEntryId: entryId, andAuthorizationToken: authorizationToken) { result in @@ -204,7 +218,7 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { public func activeEntryId() -> String? { if let sources = player?.playlist.sources { if let index = sources.firstIndex(where: { $0.isActive }) { - if let entryId = sources[index].metadata?["entryId"] as? String { + if let entryId = sources[index].sourceConfig.metadata["entryId"] as? String { return entryId } } From 858ba2eb13cd4f55b7814b4d491d4aa3adda9c88 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Wed, 27 Nov 2024 10:38:19 +0100 Subject: [PATCH 16/26] CORE-5100 Playlist documentation - Fixed Tutorial controls and events - Control and Events on Readme with examples --- README.md | 59 +++++++++++++++++-- .../Tutorial/GetStarted.tutorial | 15 +++-- 2 files changed, 60 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 60ef98c..d305628 100644 --- a/README.md +++ b/README.md @@ -93,8 +93,8 @@ PlaybackSDKManager.shared.loadPlayer(entryID: entryId, authorizationToken: autho # Loading a Playlist To load a sequential list of videos into the player UI, use the `loadPlaylist` method of the `PlaybackSDKManager` singleton object. This method is a Composable function that you can use to load and render the player UI. -`entryIDs`: an array of Strings containing the unique identifiers of all the videos in the playlist. -`entryIDToPlay`: specifies the unique video identifier that will be played first in the playlist. Optional parameter +`entryIDs`: An array of Strings containing the unique identifiers of all the videos in the playlist. +`entryIDToPlay`: (Optional) Specifies the unique video identifier that will be played first in the playlist. If not provided, the first video in the `entryIDs` array will be played. Example: @@ -104,11 +104,58 @@ PlaybackSDKManager.shared.loadPlayer(entryIDs: listEntryId, entryIDToPlay: "0_xx }  ``` -## Control playlist -xxx +## Controlling Playlist Playback +To control playlist playback, declare a VideoPlayerPluginManager singleton instance as a @StateObject variable. This allows you to access various control functions and retrieve information about the current playback state. -## Playlist events -xxx +Here are some of the key functions you can utilize: + +`first()`: Plays the first video in the playlist. +`playPrevious()`: Plays the previous video in the playlist. +`playNext()`: Plays the next video in the playlist. +`last()`: Plays the last video in the playlist. +`seek(to: entryIdToSeek)`: Seek to a specific video Id +`activeEntryId()`: Returns the unique identifier of the currently playing video. + +By effectively leveraging these functions, you can create dynamic and interactive video player experiences. + +Example: + +```swift +@StateObject private var pluginManager = VideoPlayerPluginManager.shared +... +// You can use the following playlist controls +pluginManager.selectedPlugin?.first() // Play the first video +pluginManager.selectedPlugin?.playPrevious() // Play the previous video +pluginManager.selectedPlugin?.playNext() // Play the next video +pluginManager.selectedPlugin?.last() // Play the last video +pluginManager.selectedPlugin?.seek(to: entryIdToSeek) { success in // Seek to a specific video + if (!success) { + let errorMessage = "Unable to seek to \(entryIdToSeek)" + } +} +pluginManager.selectedPlugin?.activeEntryId() // Get the active video Id +``` + +## Receiving Playlist Events +To receive playlist events, declare a VideoPlayerPluginManager singleton instance, similar to how you did in the Controlling Playlist Playback section. +Utilize the `onReceive` modifier to listen for player events, such as the `PlaylistTransitionEvent`. This event provides information about the transition from one video to another. + +Example: + +```swift +@StateObject private var pluginManager = VideoPlayerPluginManager.shared +... +PlaybackSDKManager.shared.loadPlaylist(entryIDs: entryIDs, entryIDToPlay: entryIDToPlay, authorizationToken: authorizationToken) { errors in + ... + } + .onReceive(pluginManager.selectedPlugin!.event) { event in + if let event = event as? PlaylistTransitionEvent { // Playlist Event + if let from = event.from.metadata?["entryId"], let to = event.to.metadata?["entryId"] { + print("Playlist event changed from \(from) to \(to)") + } + } + } +``` # Playing Access-Controlled Content To play on-demand and live videos that require authorization, at some point before loading the player your app must call CloudPay to start session, passing the authorization token: diff --git a/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial b/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial index d993dda..d11b8c2 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial +++ b/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial @@ -43,20 +43,19 @@ @Step { Load the player passing a playlist using the Playback SDK and handle any playlist errors. - In this step, the code utilizes the **loadPlaylist** function provided by the Playback SDK to initialize and load the video player. The function takes an array of entry ID, the starting entry ID to play and an authorization token as parameters. Additionally, it includes a closure to handle any potential playlist errors that may occur during the loading process. - The **handlePlaybackErrors** function is called within the closure to handle the playlist errors. - It's an array of PlaybackError and for every error it switches on the type of error received and provides appropriate error handling based on the type of error encountered. - The code also includes a placeholder comment to indicate where the removal of the player could be implemented in the **onDisappear** modifier. - If you want to allow users to access free content or if you're implementing a guest mode, you can pass an empty string or **nil** value as the **authorizationToken** when calling the **loadPlaylist** function. This will bypass the need for authentication, enabling unrestricted access to the specified contents. + To load a playlist and handle errors, use the **loadPlaylist** function provided by the Playback SDK to initialize and load the video player. This function takes an array of entry IDs, the starting entry ID, and an authorization token as parameters. Additionally, it includes a closure to handle any potential playlist errors that may occur during the loading process. + The **handlePlaybackErrors** function is called within the closure to handle the playlist errors. It iterates through an array of **PlaybackError** objects and, for each error, switches on the error type to provide appropriate error handling. + The code also includes a placeholder comment to indicate where the removal of the player can be implemented in the **onDisappear** modifier. + f you want to allow users to access free content or implement a guest mode, you can pass an empty string or **nil** value as the **authorizationToken** when calling the **loadPlaylist** function. This will bypass the need for authentication, enabling unrestricted access to the specified content. @Code(name: "PlayerTestPlaylistView.swift", file: PlayerTestPlaylistView.swift) } @Step { Playlist controls and events - Declaring the **VideoPlayerPluginManager** singleton instance as **@StateObject** variable like in the example, allow you to access to the playlist controls as well as the playlist events - In the **onReceive** modifier, you can listen to the player events such as the **PlaylistTransitionEvent** that gives you information regarding the transition between a video to another - Through the **pluginManager.selectedPlugin** is possible to interact with playlist controls like in the example and get to know the current video that is playing with **activeEntryId** function. + To control playlist playback and events, declare a **VideoPlayerPluginManager** singleton instance as a **@StateObject** variable. This allows you to access playlist controls and listen to player events. + In the **onReceive** modifier, you can listen to player events such as the **PlaylistTransitionEvent**, which provides information about transitions between videos. + Through the **pluginManager.selectedPlugin**, you can interact with playlist controls and retrieve the current video ID using the **activeEntryId** function. @Code(name: "PlayerTestPlaylistControlsAndEventsView.swift", file: PlayerTestPlaylistControlsAndEventsView.swift, previousFile: PlayerTestPlaylistView.swift) } From 2ab5b3c31cc4747a941e4195cd8eaf68476e878f Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Thu, 28 Nov 2024 14:12:24 +0100 Subject: [PATCH 17/26] CORE-4594 Playlist API integration - Apply @artem-y-pamediagroup suggestions on PR #26 - Refresh playlist when switching between live to VOD only --- Sources/PlaybackSDK/PlaybackSDKManager.swift | 5 +- .../BitMovinPlugin/BitmovinPlayerPlugin.swift | 55 ++++++++++++++----- .../BitMovinPlugin/BitmovinPlayerView.swift | 2 +- .../Player Plugin/VideoPlayerPlugin.swift | 6 +- 4 files changed, 49 insertions(+), 19 deletions(-) diff --git a/Sources/PlaybackSDK/PlaybackSDKManager.swift b/Sources/PlaybackSDK/PlaybackSDKManager.swift index aab902a..81f4da5 100644 --- a/Sources/PlaybackSDK/PlaybackSDKManager.swift +++ b/Sources/PlaybackSDK/PlaybackSDKManager.swift @@ -163,6 +163,7 @@ public class PlaybackSDKManager { - Parameters: - entryID: The unique identifier of the video entry to be loaded. - authorizationToken: The token used for authorization to access the video content. + - onError: Return potential playback errors that may occur during the loading process. - Returns: A view representing the video player configured with the provided entry ID and authorization token. @@ -189,7 +190,9 @@ public class PlaybackSDKManager { - Parameters: - entryIDs: A list of the videos to be loaded. + - entryIDToPlay: The first video Id to be played. If not provided, the first video in the entryIDs array will be played. - authorizationToken: The token used for authorization to access the video content. + - onErrors: Return a list of potential playback errors that may occur during the loading process for single entryId. - Returns: A view representing the video player configured with the provided entry ID and authorization token. @@ -210,7 +213,7 @@ public class PlaybackSDKManager { authorizationToken: authorizationToken, onErrors: onErrors ) - .id(entryIDs.first) +// .id(entryIDs.first) } // MARK: Private fuctions diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift index a387a74..91377ab 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift @@ -15,7 +15,7 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { private weak var player: Player? { didSet { if self.player != nil { - listenPlayerEvents() + listenToPlayerEvents() } } } @@ -85,7 +85,7 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { ) } - public func listenPlayerEvents() { + private func listenToPlayerEvents() { // Player Events player?.events @@ -139,19 +139,19 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { } } - public func last() { + public func playLast() { if let lastSource = player?.playlist.sources.last { seekSource(to: lastSource) } } - public func first() { + public func playFirst() { if let firstSource = player?.playlist.sources.first { seekSource(to: firstSource) } } - public func seek(to entryId: String, completion: @escaping (Bool) -> Void) { + public func seek(_ entryId: String, completion: @escaping (Bool) -> Void) { if let sources = player?.playlist.sources { if let index = sources.firstIndex(where: { $0.sourceConfig.metadata["entryId"] as? String == entryId }) { seekSource(to: sources[index]) { success in @@ -173,15 +173,22 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { self.player?.playlist.remove(sourceAt: index) self.player?.playlist.add(source: updatedSource, at: index) - if let sources = self.player?.playlist.sources { - DispatchQueue.main.asyncAfter(deadline: .now()) { [weak self] in - - let playlistOptions = PlaylistOptions(preloadAllSources: false) - let pConfig = PlaylistConfig(sources: sources, options: playlistOptions) - - self?.player?.load(playlistConfig: pConfig) - self?.player?.playlist.seek(source: updatedSource, time: .zero) - self?.player?.seek(time: .zero) + // Due to a Bitmovin playlist issue, if the current video is live, we need to reload the playlist in order to change the media + let refreshPlaylist = self.player?.isLive ?? false + + if refreshPlaylist { + if let sources = self.player?.playlist.sources { + DispatchQueue.main.asyncAfter(deadline: .now()) { [weak self] in + self?.player?.pause() + self?.player?.unload() + + let playlistOptions = PlaylistOptions(preloadAllSources: false) + let pConfig = PlaylistConfig(sources: sources, options: playlistOptions) + + self?.player?.load(playlistConfig: pConfig) + self?.player?.playlist.seek(source: updatedSource, time: .zero) + self?.player?.seek(time: .zero) // Player seek to avoid black screen + } } } else { self.player?.playlist.seek(source: updatedSource, time: .zero) @@ -226,6 +233,26 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { return nil } + + private func activeSource() -> Source? { + if let sources = player?.playlist.sources { + if let index = sources.firstIndex(where: { $0.isActive }) { + return sources[index] + } + } + + return nil + } + + private func isLiveSource(source: Source) -> Bool { + if source.sourceConfig.type == .hls && source.sourceConfig.url.absoluteString.contains("/live/") { + return true + } else if source.sourceConfig.type == .dash { + return true + } + + return false + } public func unload() { player?.unload() diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift index dae4735..26ed9fd 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift @@ -103,7 +103,7 @@ public struct BitmovinPlayerView: View { if let entryIDToPlay = self.entryIDToPlay { if let index = player.playlist.sources.firstIndex(where: { $0.sourceConfig.metadata["entryId"] as? String == entryIDToPlay }) { player.playlist.seek(source: sources[index], time: .zero) - player.seek(time: .zero) + player.seek(time: .zero) // Player seek to avoid black screen } } } else if let sourceConfig = self.sourceConfig { diff --git a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift index abaf75f..c0de974 100644 --- a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift @@ -31,11 +31,11 @@ public protocol VideoPlayerPlugin: AnyObject { func playPrevious() - func last() + func playLast() - func first() + func playFirst() - func seek(to entryId: String, completion: @escaping (Bool) -> Void) + func seek(_ entryId: String, completion: @escaping (Bool) -> Void) func activeEntryId() -> String? From f224ab963d2618321ec930046ce56b85c5163dfa Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Thu, 28 Nov 2024 14:16:21 +0100 Subject: [PATCH 18/26] CORE-5100 Playlist documentation - Apply @artem-y-pamediagroup suggestion on PR #26 to the documentation and Readme --- README.md | 12 ++++++------ .../PlayerTestPlaylistControlsAndEventsView.swift | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index d305628..2187119 100644 --- a/README.md +++ b/README.md @@ -109,11 +109,11 @@ To control playlist playback, declare a VideoPlayerPluginManager singleton insta Here are some of the key functions you can utilize: -`first()`: Plays the first video in the playlist. +`playFirst()`: Plays the first video in the playlist. `playPrevious()`: Plays the previous video in the playlist. `playNext()`: Plays the next video in the playlist. -`last()`: Plays the last video in the playlist. -`seek(to: entryIdToSeek)`: Seek to a specific video Id +`playLast()`: Plays the last video in the playlist. +`seek(entryIdToSeek)`: Seek a specific video Id `activeEntryId()`: Returns the unique identifier of the currently playing video. By effectively leveraging these functions, you can create dynamic and interactive video player experiences. @@ -124,11 +124,11 @@ Example: @StateObject private var pluginManager = VideoPlayerPluginManager.shared ... // You can use the following playlist controls -pluginManager.selectedPlugin?.first() // Play the first video +pluginManager.selectedPlugin?.playFirst() // Play the first video pluginManager.selectedPlugin?.playPrevious() // Play the previous video pluginManager.selectedPlugin?.playNext() // Play the next video -pluginManager.selectedPlugin?.last() // Play the last video -pluginManager.selectedPlugin?.seek(to: entryIdToSeek) { success in // Seek to a specific video +pluginManager.selectedPlugin?.playLast() // Play the last video +pluginManager.selectedPlugin?.seek(entryIdToSeek) { success in // Seek a specific video if (!success) { let errorMessage = "Unable to seek to \(entryIdToSeek)" } diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistControlsAndEventsView.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistControlsAndEventsView.swift index 971d6b4..0081747 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistControlsAndEventsView.swift +++ b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistControlsAndEventsView.swift @@ -30,11 +30,11 @@ struct PlayerTestPlaylistControlsAndEventsView: View { Button { // You can use the following playlist controls - pluginManager.selectedPlugin?.first() // Play the first video + pluginManager.selectedPlugin?.playFirst() // Play the first video pluginManager.selectedPlugin?.playPrevious() // Play the previous video pluginManager.selectedPlugin?.playNext() // Play the next video - pluginManager.selectedPlugin?.last() // Play the last video - pluginManager.selectedPlugin?.seek(to: entryIdToSeek) { success in // Seek to a specific video + pluginManager.selectedPlugin?.playLast() // Play the last video + pluginManager.selectedPlugin?.seek(entryIdToSeek) { success in // Seek a specific video if (!success) { let errorMessage = "Unable to seek to \(entryIdToSeek)" } From ad6d29e9726980a51b53cb5d506af7343e42e1a0 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Fri, 29 Nov 2024 10:17:56 +0100 Subject: [PATCH 19/26] CORE-4594 Playlist API integration - Making PlaybackResponseModel internal --- .../PlayBack API/PlaybackResponseModel.swift | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift b/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift index 0a3ccd5..d7743ec 100644 --- a/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift +++ b/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift @@ -8,44 +8,44 @@ import Foundation // Struct representing the response model for playback data, conforming to the Decodable protocol. -public struct PlaybackResponseModel: Decodable { +internal struct PlaybackResponseModel: Decodable { - public let message: String? - public let reason: String? - public let id: String? - public let name: String? - public let description: String? - public let thumbnail: URL? - public let duration: String? - public let media: Media? - public let playFrom: Int? - public let adverts: [Advert]? - public let coverImg: CoverImages? - public var entryId: String? + let message: String? + let reason: String? + let id: String? + let name: String? + let description: String? + let thumbnail: URL? + let duration: String? + let media: Media? + let playFrom: Int? + let adverts: [Advert]? + let coverImg: CoverImages? + var entryId: String? - public struct Media: Decodable { - public let hls: String? - public let mpegdash: String? - public let applehttp: String? + struct Media: Decodable { + let hls: String? + let mpegdash: String? + let applehttp: String? } - public struct Advert: Decodable { - public let adType: String? - public let id: String? - public let position: String? - public let persistent: Bool? - public let discardAfterPlayback: Bool? - public let url: URL? - public let preloadOffset: Int? - public let skippableAfter: Int? + struct Advert: Decodable { + let adType: String? + let id: String? + let position: String? + let persistent: Bool? + let discardAfterPlayback: Bool? + let url: URL? + let preloadOffset: Int? + let skippableAfter: Int? } - public struct CoverImages: Decodable { - public let _360: URL? - public let _720: URL? - public let _1080: URL? + struct CoverImages: Decodable { + let _360: URL? + let _720: URL? + let _1080: URL? - public enum CodingKeys: String, CodingKey { + enum CodingKeys: String, CodingKey { case _360 = "360" case _720 = "720" case _1080 = "1080" @@ -55,7 +55,7 @@ public struct PlaybackResponseModel: Decodable { - Parameter decoder: The decoder to read data from. */ - public init(from decoder: Decoder) throws { + init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) _360 = try container.decodeIfPresent(String.self, forKey: ._360).flatMap { URL(string: $0) } _720 = try container.decodeIfPresent(String.self, forKey: ._720).flatMap { URL(string: $0) } From c7c2b4a844f4e03e77418021122cc2dfa756ec50 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Fri, 29 Nov 2024 10:25:22 +0100 Subject: [PATCH 20/26] CORE-5100 Playlist documentation Applying @artem-y-pamediagroup suggestions on PR #29 - Fix Typo on GetStarted tutorial - Example multiline improving readability --- README.md | 29 +++++++++++++------ .../Tutorial/GetStarted.tutorial | 2 +- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 2187119..12f2957 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,10 @@ To load the player UI in your application, use the `loadPlayer` method of the `P Example: ```swift -PlaybackSDKManager.shared.loadPlayer(entryID: entryId, authorizationToken: authorizationToken) { error in +PlaybackSDKManager.shared.loadPlayer( + entryID: entryId, + authorizationToken: authorizationToken +) { error in // Handle player UI error  }  ``` @@ -99,7 +102,11 @@ To load a sequential list of videos into the player UI, use the `loadPlaylist` m Example: ```swift -PlaybackSDKManager.shared.loadPlayer(entryIDs: listEntryId, entryIDToPlay: "0_xxxxxxxx", authorizationToken: authorizationToken) { errors in +PlaybackSDKManager.shared.loadPlayer( + entryIDs: listEntryId, + entryIDToPlay: "0_xxxxxxxx", + authorizationToken: authorizationToken +) { errors in // Handle player UI playlist errors }  ``` @@ -145,16 +152,20 @@ Example: ```swift @StateObject private var pluginManager = VideoPlayerPluginManager.shared ... -PlaybackSDKManager.shared.loadPlaylist(entryIDs: entryIDs, entryIDToPlay: entryIDToPlay, authorizationToken: authorizationToken) { errors in +PlaybackSDKManager.shared.loadPlaylist( + entryIDs: entryIDs, + entryIDToPlay: entryIDToPlay, + authorizationToken: authorizationToken +) { errors in ... - } - .onReceive(pluginManager.selectedPlugin!.event) { event in - if let event = event as? PlaylistTransitionEvent { // Playlist Event - if let from = event.from.metadata?["entryId"], let to = event.to.metadata?["entryId"] { - print("Playlist event changed from \(from) to \(to)") - } +} +.onReceive(pluginManager.selectedPlugin!.event) { event in + if let event = event as? PlaylistTransitionEvent { // Playlist Event + if let from = event.from.metadata?["entryId"], let to = event.to.metadata?["entryId"] { + print("Playlist event changed from \(from) to \(to)") } } +} ``` # Playing Access-Controlled Content diff --git a/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial b/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial index d11b8c2..6e47dad 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial +++ b/Sources/PlaybackSDK/Documentation.docc/Tutorial/GetStarted.tutorial @@ -46,7 +46,7 @@ To load a playlist and handle errors, use the **loadPlaylist** function provided by the Playback SDK to initialize and load the video player. This function takes an array of entry IDs, the starting entry ID, and an authorization token as parameters. Additionally, it includes a closure to handle any potential playlist errors that may occur during the loading process. The **handlePlaybackErrors** function is called within the closure to handle the playlist errors. It iterates through an array of **PlaybackError** objects and, for each error, switches on the error type to provide appropriate error handling. The code also includes a placeholder comment to indicate where the removal of the player can be implemented in the **onDisappear** modifier. - f you want to allow users to access free content or implement a guest mode, you can pass an empty string or **nil** value as the **authorizationToken** when calling the **loadPlaylist** function. This will bypass the need for authentication, enabling unrestricted access to the specified content. + If you want to allow users to access free content or implement a guest mode, you can pass an empty string or **nil** value as the **authorizationToken** when calling the **loadPlaylist** function. This will bypass the need for authentication, enabling unrestricted access to the specified content. @Code(name: "PlayerTestPlaylistView.swift", file: PlayerTestPlaylistView.swift) } From 7a2b39f64aeae6b08d8927cb334489f597d4f1e4 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Fri, 29 Nov 2024 10:39:19 +0100 Subject: [PATCH 21/26] CORE-4594 Playlist API integration - Fixed typo on Readme (loadPlaylist instead of loadPlayer) - Right comment on seek callback --- README.md | 4 ++-- .../Resources/PlayerTestPlaylistControlsAndEventsView.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 12f2957..7059063 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ To load a sequential list of videos into the player UI, use the `loadPlaylist` m Example: ```swift -PlaybackSDKManager.shared.loadPlayer( +PlaybackSDKManager.shared.loadPlaylist( entryIDs: listEntryId, entryIDToPlay: "0_xxxxxxxx", authorizationToken: authorizationToken @@ -137,7 +137,7 @@ pluginManager.selectedPlugin?.playNext() // Play the next video pluginManager.selectedPlugin?.playLast() // Play the last video pluginManager.selectedPlugin?.seek(entryIdToSeek) { success in // Seek a specific video if (!success) { - let errorMessage = "Unable to seek to \(entryIdToSeek)" + let errorMessage = "Unable to seek video Id \(entryIdToSeek)" } } pluginManager.selectedPlugin?.activeEntryId() // Get the active video Id diff --git a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistControlsAndEventsView.swift b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistControlsAndEventsView.swift index 0081747..17a8fe9 100644 --- a/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistControlsAndEventsView.swift +++ b/Sources/PlaybackSDK/Documentation.docc/Resources/PlayerTestPlaylistControlsAndEventsView.swift @@ -36,7 +36,7 @@ struct PlayerTestPlaylistControlsAndEventsView: View { pluginManager.selectedPlugin?.playLast() // Play the last video pluginManager.selectedPlugin?.seek(entryIdToSeek) { success in // Seek a specific video if (!success) { - let errorMessage = "Unable to seek to \(entryIdToSeek)" + let errorMessage = "Unable to seek video Id \(entryIdToSeek)" } } pluginManager.selectedPlugin?.activeEntryId() // Get the active video Id From 0029ac40bd855795b29e2af659c60c0dbda778e1 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Mon, 2 Dec 2024 13:24:39 +0100 Subject: [PATCH 22/26] CORE-4594 Playlist API integration - New public PlaybackVideoDetails class as @artem-y-pamediagroup suggested on PR #26 - Rollback PlaybackResponseModel to internal struct - Renaming PlayBack API folder to Playback API - Added userAgent param comment on PlaybackAPI and PlaybackAPIService - Fixed indentation on parameters comments --- .../PlaybackAPI.swift | 5 +- .../PlaybackAPIService.swift | 1 + .../PlaybackResponseModel.swift | 11 ++++ .../Playback API/PlaybackVideoDetails.swift | 28 +++++++++ Sources/PlaybackSDK/PlaybackSDKManager.swift | 61 +++++++++++-------- .../BitMovinPlugin/BitmovinPlayerPlugin.swift | 12 ++-- .../BitMovinPlugin/BitmovinPlayerView.swift | 52 +++++++++------- .../Player Plugin/VideoPlayerPlugin.swift | 5 +- .../PlayerUIView/PlaybackUIView.swift | 21 ++++--- 9 files changed, 131 insertions(+), 65 deletions(-) rename Sources/PlaybackSDK/{PlayBack API => Playback API}/PlaybackAPI.swift (66%) rename Sources/PlaybackSDK/{PlayBack API => Playback API}/PlaybackAPIService.swift (95%) rename Sources/PlaybackSDK/{PlayBack API => Playback API}/PlaybackResponseModel.swift (82%) create mode 100644 Sources/PlaybackSDK/Playback API/PlaybackVideoDetails.swift diff --git a/Sources/PlaybackSDK/PlayBack API/PlaybackAPI.swift b/Sources/PlaybackSDK/Playback API/PlaybackAPI.swift similarity index 66% rename from Sources/PlaybackSDK/PlayBack API/PlaybackAPI.swift rename to Sources/PlaybackSDK/Playback API/PlaybackAPI.swift index 187b1ef..f76ffe6 100644 --- a/Sources/PlaybackSDK/PlayBack API/PlaybackAPI.swift +++ b/Sources/PlaybackSDK/Playback API/PlaybackAPI.swift @@ -17,8 +17,9 @@ internal protocol PlaybackAPI { Retrieves video details for a given entry ID. - Parameters: - - entryId: The unique identifier of the video entry. - - andAuthorizationToken: Optional authorization token, can be nil for free videos. + - entryId: The unique identifier of the video entry. + - andAuthorizationToken: Optional authorization token, can be nil for free videos. + - userAgent: Custom `User-Agent` header to use with playback requests. Can be used if there was a custom header set to start session request. Defaults to `nil` - Returns: A publisher emitting a result with a response model with an error or a critical error. */ func getVideoDetails(forEntryId entryId: String, andAuthorizationToken: String?, userAgent: String?) -> AnyPublisher, Error> diff --git a/Sources/PlaybackSDK/PlayBack API/PlaybackAPIService.swift b/Sources/PlaybackSDK/Playback API/PlaybackAPIService.swift similarity index 95% rename from Sources/PlaybackSDK/PlayBack API/PlaybackAPIService.swift rename to Sources/PlaybackSDK/Playback API/PlaybackAPIService.swift index 083d9d6..65ac20e 100644 --- a/Sources/PlaybackSDK/PlayBack API/PlaybackAPIService.swift +++ b/Sources/PlaybackSDK/Playback API/PlaybackAPIService.swift @@ -31,6 +31,7 @@ internal class PlaybackAPIService: PlaybackAPI { - Parameters: - entryId: The unique identifier of the video entry. - andAuthorizationToken: Optional authorization token, can be nil for free videos. + - userAgent: Custom `User-Agent` header to use with playback requests. Can be used if there was a custom header set to start session request. Defaults to `nil` - Returns: A publisher emitting a result with a response model with an error or a critical error. */ func getVideoDetails( diff --git a/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift b/Sources/PlaybackSDK/Playback API/PlaybackResponseModel.swift similarity index 82% rename from Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift rename to Sources/PlaybackSDK/Playback API/PlaybackResponseModel.swift index d7743ec..874904c 100644 --- a/Sources/PlaybackSDK/PlayBack API/PlaybackResponseModel.swift +++ b/Sources/PlaybackSDK/Playback API/PlaybackResponseModel.swift @@ -64,4 +64,15 @@ internal struct PlaybackResponseModel: Decodable { } } + +extension PlaybackResponseModel { + func toVideoDetails() -> PlaybackVideoDetails? { + if let entryId = self.entryId { + let videoDetails = PlaybackVideoDetails(videoId: entryId, url: self.media?.hls, title: self.name, thumbnail: self.coverImg?._360?.absoluteString, description: self.description) + return videoDetails + } + return nil + } +} + #endif diff --git a/Sources/PlaybackSDK/Playback API/PlaybackVideoDetails.swift b/Sources/PlaybackSDK/Playback API/PlaybackVideoDetails.swift new file mode 100644 index 0000000..dfdf764 --- /dev/null +++ b/Sources/PlaybackSDK/Playback API/PlaybackVideoDetails.swift @@ -0,0 +1,28 @@ +// +// PlaybackVideoDetails.swift +// PlaybackSDK +// +// Created by Stefano Russello on 29/11/24. +// + +#if !os(macOS) +import Foundation + +public class PlaybackVideoDetails { + + public var videoId: String + public var url: String? + public var title: String? + public var thumbnail: String? + public var description: String? + + public init(videoId: String, url: String? = nil, title: String? = nil, thumbnail: String? = nil, description: String? = nil) { + self.videoId = videoId + self.url = url + self.title = title + self.thumbnail = thumbnail + self.description = description + } +} + +#endif diff --git a/Sources/PlaybackSDK/PlaybackSDKManager.swift b/Sources/PlaybackSDK/PlaybackSDKManager.swift index 81f4da5..e22563e 100644 --- a/Sources/PlaybackSDK/PlaybackSDKManager.swift +++ b/Sources/PlaybackSDK/PlaybackSDKManager.swift @@ -129,15 +129,16 @@ public class PlaybackSDKManager { /// Initializes the `PlaybackSDKManager`. public init() {} - /// Initializes the SDK with the provided API key. - /// This fuction must be called in the AppDelegate - /// - /// - Parameters: - /// - apiKey: The API key for initializing the SDK. - /// - baseURL: The base URL for API endpoints. Defaults to `nil`. - /// - userAgent: Custom `User-Agent` header to use with playback requests. Can be used if there was a custom header set to start session request. Defaults to `nil` - /// - completion: A closure to be called after initialization. - /// It receives a result indicating success or failure. + /** + Initializes the SDK with the provided API key. + This fuction must be called in the AppDelegate + + - Parameters: + - apiKey: The API key for initializing the SDK. + - baseURL: The base URL for API endpoints. Defaults to `nil`. + - userAgent: Custom `User-Agent` header to use with playback requests. Can be used if there was a custom header set to start session request. Defaults to `nil` + - completion: A closure to be called after initialization. It receives a result indicating success or failure. + */ public func initialize(apiKey: String, baseURL: String? = nil, userAgent: String? = nil, completion: @escaping (Result) -> Void) { guard !apiKey.isEmpty else { completion(.failure(SDKError.initializationError)) @@ -161,15 +162,16 @@ public class PlaybackSDKManager { Loads a video player with the specified entry ID and authorization token. - Parameters: - - entryID: The unique identifier of the video entry to be loaded. - - authorizationToken: The token used for authorization to access the video content. - - onError: Return potential playback errors that may occur during the loading process. + - entryID: The unique identifier of the video entry to be loaded. + - authorizationToken: The token used for authorization to access the video content. + - onError: Return potential playback errors that may occur during the loading process. - Returns: A view representing the video player configured with the provided entry ID and authorization token. Example usage: ```swift let playerView = loadPlayer(entryID: "exampleEntryID", authorizationToken: "exampleToken") + ``` */ public func loadPlayer( entryID: String, @@ -189,16 +191,17 @@ public class PlaybackSDKManager { Loads a video player with the specified entry ID and authorization token. - Parameters: - - entryIDs: A list of the videos to be loaded. - - entryIDToPlay: The first video Id to be played. If not provided, the first video in the entryIDs array will be played. - - authorizationToken: The token used for authorization to access the video content. - - onErrors: Return a list of potential playback errors that may occur during the loading process for single entryId. + - entryIDs: A list of the videos to be loaded. + - entryIDToPlay: The first video Id to be played. If not provided, the first video in the entryIDs array will be played. + - authorizationToken: The token used for authorization to access the video content. + - onErrors: Return a list of potential playback errors that may occur during the loading process for single entryId. - Returns: A view representing the video player configured with the provided entry ID and authorization token. Example usage: ```swift let playerView = loadPlayer(entryIDs: ["exampleEntryID1", "exampleEntryID2"], authorizationToken: "exampleToken") + ``` */ public func loadPlaylist( entryIDs: [String], @@ -367,40 +370,44 @@ public class PlaybackSDKManager { } } - func createSource(from details: PlaybackResponseModel, authorizationToken: String?) -> Source? { - - guard let hlsURLString = details.media?.hls, let hlsURL = URL(string: hlsURLString) else { + func createSource(from details: PlaybackVideoDetails, authorizationToken: String?) -> Source? { + + guard let hlsURLString = details.url, let hlsURL = URL(string: hlsURLString) else { return nil } let sourceConfig = SourceConfig(url: hlsURL, type: .hls) + // Avoiding to fill all the details (title, thumbnail and description) for now // Because when the initial video is not the first one and we have to seek the first source // Bitmovin SDK has a bug/glitch that show the title/thumbnail of the first video for a short time before changing to the new one -// sourceConfig.title = details.name -// sourceConfig.posterSource = details.coverImg?._360 +// sourceConfig.title = details.title +// if let thumb = details.thumbnail, let thumbUrl = URL(string: thumb) { +// sourceConfig.posterSource = thumbUrl +// } // sourceConfig.sourceDescription = details.description - if details.entryId?.isEmpty == false { - sourceConfig.metadata["entryId"] = details.entryId + if details.videoId.isEmpty == false { + sourceConfig.metadata["entryId"] = details.videoId } else { - // Recover entryId from hls url (not working for live url) + // If entryId is null, get the entryId from HLS url (not working for live url) let regex = try! NSRegularExpression(pattern: "/entryId/(.+?)/") let range = NSRange(location: 0, length: hlsURLString.count) if let match = regex.firstMatch(in: hlsURLString, options: [], range: range) { if let swiftRange = Range(match.range(at: 1), in: hlsURLString) { - let entryId = hlsURLString[swiftRange] - sourceConfig.metadata["entryId"] = String(entryId) - + let entryIdFromUrl = hlsURLString[swiftRange] + sourceConfig.metadata["entryId"] = String(entryIdFromUrl) } } } + // Adding extra details sourceConfig.metadata["details"] = details sourceConfig.metadata["authorizationToken"] = authorizationToken return SourceFactory.createSource(from: sourceConfig) } + } diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift index 91377ab..a35f16c 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerPlugin.swift @@ -54,7 +54,7 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { playerConfig.styleConfig.userInterfaceConfig = uiConfig } - public func playerView(videoDetails: [PlaybackResponseModel], entryIDToPlay: String?, authorizationToken: String?) -> AnyView { + public func playerView(videoDetails: [PlaybackVideoDetails], entryIDToPlay: String?, authorizationToken: String?) -> AnyView { self.authorizationToken = authorizationToken self.entryIDToPlay = entryIDToPlay // Create player based on player and analytics configurations @@ -211,9 +211,13 @@ public class BitmovinPlayerPlugin: VideoPlayerPlugin, ObservableObject { if let entryId = entryId { PlaybackSDKManager.shared.loadHLSStream(forEntryId: entryId, andAuthorizationToken: authorizationToken) { result in switch result { - case .success(let videoDetails): - let newSource = PlaybackSDKManager.shared.createSource(from: videoDetails, authorizationToken: authorizationToken) - completion(newSource) + case .success(let response): + if let videoDetails = response.toVideoDetails() { + let newSource = PlaybackSDKManager.shared.createSource(from: videoDetails, authorizationToken: authorizationToken) + completion(newSource) + } else { + completion(nil) + } case .failure: break completion(nil) diff --git a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift index 26ed9fd..e4ea3eb 100644 --- a/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift +++ b/Sources/PlaybackSDK/Player Plugin/BitMovinPlugin/BitmovinPlayerView.swift @@ -38,14 +38,19 @@ public struct BitmovinPlayerView: View { return sConfig } - /// Initializes the view with the player passed from outside. - /// - /// This version of the initializer does not modify the `player`'s configuration, so any additional configuration steps - /// like setting `userInterfaceConfig` should be performed externally. - /// - /// - parameter videoDetails: Full videos details containing name, description, thumbnail, duration as well as URL of the HLS video stream that will be loaded by the player as the video source - /// - parameter player: Instance of the player that was created and configured outside of this view. - public init(videoDetails: [PlaybackResponseModel], entryIDToPlay: String?, authorizationToken: String?, player: Player) { + /** + Initializes the view with the player passed from outside. + + This version of the initializer does not modify the `player`'s configuration, so any additional configuration steps + like setting `userInterfaceConfig` should be performed externally. + + - Parameters: + - videoDetails: Full videos details containing title, description, thumbnail, duration as well as URL of the HLS video stream that will be loaded by the player as the video source + - entryIDToPlay: (Optional) The first video Id to be played. If not provided, the first video in the entryIDs array will be played. + - authorizationToken: (Optional) The token used for authorization to access the video content. + - player: Instance of the player that was created and configured outside of this view. + */ + public init(videoDetails: [PlaybackVideoDetails], entryIDToPlay: String?, authorizationToken: String?, player: Player) { self.player = player self.authorizationToken = authorizationToken @@ -55,19 +60,24 @@ public struct BitmovinPlayerView: View { sources = createPlaylist(from: videoDetails) - setupRemoteCommandCenter(title: videoDetails.first?.name ?? "") + setupRemoteCommandCenter(title: videoDetails.first?.title ?? "") } - /// Initializes the view with an instance of player created inside of it, upon initialization. - /// - /// In this version of the initializer, a `userInterfaceConfig` is being added to the `playerConfig`'s style configuration. - /// - /// - Note: If the player config had `userInterfaceConfig` already modified before passing into this `init`, - /// those changes will take no effect sicne they will get overwritten here. - /// - /// - parameter hlsURLString: Full videos details containing name, description, thumbnail, duration as well as URL of the HLS video stream that will be loaded by the player as the video source - /// - parameter playerConfig: Configuration that will be passed into the player upon creation, with an additional update in this initializer. - public init(videoDetails: [PlaybackResponseModel], entryIDToPlay: String?, authorizationToken: String?, playerConfig: PlayerConfig) { + /** + Initializes the view with an instance of player created inside of it, upon initialization. + + In this version of the initializer, a `userInterfaceConfig` is being added to the `playerConfig`'s style configuration. + + - Note: If the player config had `userInterfaceConfig` already modified before passing into this `init`, + those changes will take no effect since they will get overwritten here. + + - Parameters: + - videoDetails: Full videos details containing title, description, thumbnail, duration as well as URL of the HLS video stream that will be loaded by the player as the video source + - entryIDToPlay: (Optional) The first video Id to be played. If not provided, the first video in the entryIDs array will be played. + - authorizationToken: (Optional) The token used for authorization to access the video content. + - playerConfig: Configuration that will be passed into the player upon creation, with an additional update in this initializer. + */ + public init(videoDetails: [PlaybackVideoDetails], entryIDToPlay: String?, authorizationToken: String?, playerConfig: PlayerConfig) { let uiConfig = BitmovinUserInterfaceConfig() uiConfig.hideFirstFrame = true @@ -82,7 +92,7 @@ public struct BitmovinPlayerView: View { sources = createPlaylist(from: videoDetails) - setupRemoteCommandCenter(title: videoDetails.first?.name ?? "") + setupRemoteCommandCenter(title: videoDetails.first?.title ?? "") } public var body: some View { @@ -116,7 +126,7 @@ public struct BitmovinPlayerView: View { } } - func createPlaylist(from videoDetails: [PlaybackResponseModel]) -> [Source] { + func createPlaylist(from videoDetails: [PlaybackVideoDetails]) -> [Source] { var sources: [Source] = [] for details in videoDetails { diff --git a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift index c0de974..b81da2e 100644 --- a/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift +++ b/Sources/PlaybackSDK/Player Plugin/VideoPlayerPlugin.swift @@ -18,10 +18,7 @@ public protocol VideoPlayerPlugin: AnyObject { func setup(config: VideoPlayerConfig) - // TODO: add event - /// func handleEvent(event: BitmovinPlayerCore.PlayerEvent) - - func playerView(videoDetails: [PlaybackResponseModel], entryIDToPlay: String?, authorizationToken: String?) -> AnyView + func playerView(videoDetails: [PlaybackVideoDetails], entryIDToPlay: String?, authorizationToken: String?) -> AnyView func play() diff --git a/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift b/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift index 2b44ecd..894eb52 100644 --- a/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift +++ b/Sources/PlaybackSDK/PlayerUIView/PlaybackUIView.swift @@ -29,7 +29,7 @@ internal struct PlaybackUIView: View { @State private var hasFetchedVideoDetails = false /// The fetched video details of the entryIDs - @State private var videoDetails: [PlaybackResponseModel]? + @State private var videoDetails: [PlaybackVideoDetails]? /// Array of errors for fetching playlist details @State private var playlistErrors: [PlaybackAPIError]? /// Error of failed API call for loading video details @@ -44,8 +44,10 @@ internal struct PlaybackUIView: View { Initializes the `PlaybackUIView` with the provided list of entry ID and authorization token. - Parameters: - - entryId: A list of entry ID of the video to be played. - - authorizationToken: Optional authorization token if required to fetch the video details. + - entryIds: A list of entry ID of the video to be played. + - entryIDToPlay: (Optional) The first video Id to be played. If not provided, the first video in the entryIDs array will be played. + - authorizationToken: (Optional) Authorization token if required to fetch the video details. + - onErrors: Return a list of potential playback errors that may occur during the loading process for single entryId. */ internal init(entryIds: [String], entryIDToPlay: String?, authorizationToken: String?, onErrors: (([PlaybackAPIError]) -> Void)?) { self.entryIds = entryIds @@ -58,8 +60,9 @@ internal struct PlaybackUIView: View { Initializes the `PlaybackUIView` with the provided list of entry ID and authorization token. - Parameters: - - entryId: An entry ID of the video to be played. - - authorizationToken: Optional authorization token if required to fetch the video details. + - entryId: An entry ID of the video to be played. + - authorizationToken: Optional authorization token if required to fetch the video details. + - onError: Return potential playback errors that may occur during the loading process. */ internal init(entryId: String, authorizationToken: String?, onError: ((PlaybackAPIError) -> Void)?) { self.entryIds = [entryId] @@ -101,12 +104,16 @@ internal struct PlaybackUIView: View { */ private func loadHLSStream() { - //TO-DO Fetch all HLS urls from the entryID array PlaybackSDKManager.shared.loadAllHLSStream(forEntryIds: entryIds, andAuthorizationToken: authorizationToken) { result in switch result { case .success(let videoDetails): DispatchQueue.main.async { - self.videoDetails = videoDetails.0 + self.videoDetails = [] + for details in videoDetails.0 { + if let videoDetails = details.toVideoDetails() { + self.videoDetails?.append(videoDetails) + } + } self.playlistErrors = videoDetails.1 self.hasFetchedVideoDetails = true if (!(self.playlistErrors?.isEmpty ?? false)) { From 7dcebf712e421392b691269a65725fd6ce96f589 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Mon, 2 Dec 2024 14:25:04 +0100 Subject: [PATCH 23/26] CORE-4594 Playback API integration - Updated Swift DocC tutorial --- docs/css/523.e9a069b0.css | 9 --------- docs/css/675.40c3bcb2.css | 9 --------- docs/css/866.60f074fd.css | 9 +++++++++ docs/css/989.4f123103.css | 9 +++++++++ docs/css/documentation-topic.91c07ba9.css | 9 +++++++++ docs/css/documentation-topic.b186e79f.css | 9 --------- docs/css/index.3a335429.css | 9 +++++++++ docs/css/index.ff036a9e.css | 9 --------- docs/css/topic.4be8f56d.css | 9 +++++++++ docs/css/topic.672a9049.css | 9 --------- docs/css/tutorials-overview.6eb589ed.css | 9 --------- docs/css/tutorials-overview.7942d777.css | 9 +++++++++ docs/data/documentation/playbacksdk.json | 2 +- .../documentation/playbacksdk/playbackconfig.json | 2 +- .../playbacksdk/playbackconfig/autoplayenabled.json | 2 +- .../playbackconfig/backgroundplaybackenabled.json | 2 +- .../playbacksdk/videoplayerconfig.json | 2 +- .../playbacksdk/videoplayerconfig/init().json | 2 +- .../videoplayerconfig/playbackconfig.json | 2 +- docs/data/tutorials/playbacksdk/getstarted.json | 2 +- docs/data/tutorials/table-of-contents.json | 2 +- docs/documentation/playbacksdk/index.html | 2 +- .../playbackconfig/autoplayenabled/index.html | 2 +- .../backgroundplaybackenabled/index.html | 2 +- .../playbacksdk/playbackconfig/index.html | 2 +- .../playbacksdk/videoplayerconfig/index.html | 2 +- .../playbacksdk/videoplayerconfig/init()/index.html | 2 +- .../videoplayerconfig/playbackconfig/index.html | 2 +- docs/images/{ => PlaybackSDK}/ios-marketing.png | Bin docs/index.html | 2 +- docs/index/index.json | 2 +- docs/js/104.fe5974d0.js | 10 ++++++++++ docs/js/37.3cabdf6d.js | 10 ---------- docs/js/523.3af1b2ef.js | 10 ---------- docs/js/842.49774dc9.js | 10 ++++++++++ docs/js/866.eea4607d.js | 10 ++++++++++ docs/js/903.b3710a74.js | 10 ---------- docs/js/documentation-topic.09a6ef86.js | 10 ++++++++++ docs/js/documentation-topic.f9ef3692.js | 10 ---------- docs/js/index.2871ffbd.js | 9 --------- docs/js/index.a08b31d0.js | 9 +++++++++ docs/js/topic.2687cdff.js | 10 ---------- docs/js/topic.37e71576.js | 10 ++++++++++ docs/js/tutorials-overview.2eff1231.js | 10 ---------- docs/js/tutorials-overview.acb09e8a.js | 10 ++++++++++ docs/metadata.json | 2 +- docs/tutorials/playbacksdk/getstarted/index.html | 2 +- docs/tutorials/table-of-contents/index.html | 2 +- 48 files changed, 144 insertions(+), 144 deletions(-) delete mode 100644 docs/css/523.e9a069b0.css delete mode 100644 docs/css/675.40c3bcb2.css create mode 100644 docs/css/866.60f074fd.css create mode 100644 docs/css/989.4f123103.css create mode 100644 docs/css/documentation-topic.91c07ba9.css delete mode 100644 docs/css/documentation-topic.b186e79f.css create mode 100644 docs/css/index.3a335429.css delete mode 100644 docs/css/index.ff036a9e.css create mode 100644 docs/css/topic.4be8f56d.css delete mode 100644 docs/css/topic.672a9049.css delete mode 100644 docs/css/tutorials-overview.6eb589ed.css create mode 100644 docs/css/tutorials-overview.7942d777.css rename docs/images/{ => PlaybackSDK}/ios-marketing.png (100%) create mode 100644 docs/js/104.fe5974d0.js delete mode 100644 docs/js/37.3cabdf6d.js delete mode 100644 docs/js/523.3af1b2ef.js create mode 100644 docs/js/842.49774dc9.js create mode 100644 docs/js/866.eea4607d.js delete mode 100644 docs/js/903.b3710a74.js create mode 100644 docs/js/documentation-topic.09a6ef86.js delete mode 100644 docs/js/documentation-topic.f9ef3692.js delete mode 100644 docs/js/index.2871ffbd.js create mode 100644 docs/js/index.a08b31d0.js delete mode 100644 docs/js/topic.2687cdff.js create mode 100644 docs/js/topic.37e71576.js delete mode 100644 docs/js/tutorials-overview.2eff1231.js create mode 100644 docs/js/tutorials-overview.acb09e8a.js diff --git a/docs/css/523.e9a069b0.css b/docs/css/523.e9a069b0.css deleted file mode 100644 index 1b2d801..0000000 --- a/docs/css/523.e9a069b0.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */aside[data-v-3ccce809]{-moz-column-break-inside:avoid;break-inside:avoid;border-radius:var(--aside-border-radius,var(--border-radius,4px));border-style:var(--aside-border-style,solid);border-width:var(--aside-border-width,0 0 0 6px);padding:.9411764706rem;text-align:start}aside .label[data-v-3ccce809]{font-size:1rem;line-height:1.5294117647;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}aside .label+[data-v-3ccce809]{margin-top:var(--spacing-stacked-margin-small)}aside.deprecated[data-v-3ccce809]{background-color:var(--color-aside-deprecated-background);border-color:var(--color-aside-deprecated-border);box-shadow:0 0 0 0 var(--color-aside-deprecated-border) inset,0 0 0 0 var(--color-aside-deprecated-border)}aside.deprecated .label[data-v-3ccce809]{color:var(--color-aside-deprecated)}aside.experiment[data-v-3ccce809]{background-color:var(--color-aside-experiment-background);border-color:var(--color-aside-experiment-border);box-shadow:0 0 0 0 var(--color-aside-experiment-border) inset,0 0 0 0 var(--color-aside-experiment-border)}aside.experiment .label[data-v-3ccce809]{color:var(--color-aside-experiment)}aside.important[data-v-3ccce809]{background-color:var(--color-aside-important-background);border-color:var(--color-aside-important-border);box-shadow:0 0 0 0 var(--color-aside-important-border) inset,0 0 0 0 var(--color-aside-important-border)}aside.important .label[data-v-3ccce809]{color:var(--color-aside-important)}aside.note[data-v-3ccce809]{background-color:var(--color-aside-note-background);border-color:var(--color-aside-note-border);box-shadow:0 0 0 0 var(--color-aside-note-border) inset,0 0 0 0 var(--color-aside-note-border)}aside.note .label[data-v-3ccce809]{color:var(--color-aside-note)}aside.tip[data-v-3ccce809]{background-color:var(--color-aside-tip-background);border-color:var(--color-aside-tip-border);box-shadow:0 0 0 0 var(--color-aside-tip-border) inset,0 0 0 0 var(--color-aside-tip-border)}aside.tip .label[data-v-3ccce809]{color:var(--color-aside-tip)}aside.warning[data-v-3ccce809]{background-color:var(--color-aside-warning-background);border-color:var(--color-aside-warning-border);box-shadow:0 0 0 0 var(--color-aside-warning-border) inset,0 0 0 0 var(--color-aside-warning-border)}aside.warning .label[data-v-3ccce809]{color:var(--color-aside-warning)}code[data-v-08295b2f]:before{content:attr(data-before-code)}code[data-v-08295b2f]:after{content:attr(data-after-code)}code[data-v-08295b2f]:after,code[data-v-08295b2f]:before{display:block;position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}.swift-file-icon.file-icon[data-v-c01a6890]{height:1rem}.file-icon[data-v-7c381064]{position:relative;align-items:flex-end;height:24px;margin:0 .5rem 0 1rem}.filename[data-v-c8c40662]{color:var(--text,var(--colors-secondary-label,var(--color-secondary-label)));font-size:.9411764706rem;line-height:1.1875;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-top:1rem}@media only screen and (max-width:735px){.filename[data-v-c8c40662]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-top:0}}.filename>a[data-v-c8c40662],.filename>span[data-v-c8c40662]{display:flex;align-items:center;line-height:normal}a[data-v-c8c40662]{color:var(--url,var(--color-link))}.code-line-container[data-v-570d1ba0]{display:inline-block;width:100%;box-sizing:border-box}.code-number[data-v-570d1ba0]{display:inline-block;padding:0 1rem 0 8px;text-align:right;min-width:2em;color:#666;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-number[data-v-570d1ba0]:before{content:attr(data-line-number)}.highlighted[data-v-570d1ba0]{background:var(--line-highlight,var(--color-code-line-highlight));border-left:4px solid var(--color-code-line-highlight-border)}.highlighted .code-number[data-v-570d1ba0]{padding-left:4px}pre[data-v-570d1ba0]{padding:14px 0;display:flex;overflow:unset;-webkit-overflow-scrolling:touch;white-space:pre;word-wrap:normal;height:100%}@media only screen and (max-width:735px){pre[data-v-570d1ba0]{padding-top:.8235294118rem}}code[data-v-570d1ba0]{white-space:pre;word-wrap:normal;flex-grow:9999}.code-listing[data-v-570d1ba0],.container-general[data-v-570d1ba0]{display:flex}.code-listing[data-v-570d1ba0]{flex-direction:column;border-radius:var(--code-border-radius,var(--border-radius,4px));overflow:hidden;filter:blur(0)}.code-listing.single-line[data-v-570d1ba0]{border-radius:var(--border-radius,4px)}.container-general[data-v-570d1ba0]{overflow:auto}.container-general[data-v-570d1ba0],pre[data-v-570d1ba0]{flex-grow:1}.header-anchor[data-v-24fddf6a]{color:inherit;text-decoration:none;position:relative;padding-right:23px;display:inline-block}.header-anchor[data-v-24fddf6a]:after{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0;content:attr(data-after-text)}.header-anchor .icon[data-v-24fddf6a]{position:absolute;right:0;bottom:.2em;display:none;height:16px;margin-left:7px}.header-anchor:focus .icon[data-v-24fddf6a],.header-anchor:hover .icon[data-v-24fddf6a]{display:inline}code[data-v-05f4a5b7]{speak-punctuation:code}.container-general[data-v-25a17a0e]{display:flex;flex-flow:row wrap}.container-general .code-line[data-v-25a17a0e]{flex:1 0 auto}.code-line-container[data-v-25a17a0e]{width:100%;align-items:center;display:flex;border-left:4px solid transparent;counter-increment:linenumbers;padding-right:14px}.code-number[data-v-25a17a0e]{font-size:.7058823529rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace);padding:0 1rem 0 8px;text-align:right;min-width:2.01em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-number[data-v-25a17a0e]:before{content:counter(linenumbers)}.code-line[data-v-25a17a0e]{display:flex}pre[data-v-25a17a0e]{padding:14px 0;display:flex;flex-flow:row wrap;overflow:auto;-webkit-overflow-scrolling:touch;white-space:pre;word-wrap:normal}@media only screen and (max-width:735px){pre[data-v-25a17a0e]{padding-top:.8235294118rem}}.collapsible-code-listing[data-v-25a17a0e]{background:var(--background,var(--color-code-background));border-color:var(--colors-grid,var(--color-grid));color:var(--text,var(--color-code-plain));border-radius:var(--border-radius,4px);border-style:solid;border-width:1px;counter-reset:linenumbers;font-size:15px}.collapsible-code-listing.single-line[data-v-25a17a0e]{border-radius:var(--border-radius,4px)}.collapsible[data-v-25a17a0e]{background:var(--color-code-collapsible-background);color:var(--color-code-collapsible-text)}.collapsed[data-v-25a17a0e]:before{content:"⋯";display:inline-block;font-family:monospace;font-weight:700;height:100%;line-height:1;text-align:right;width:2.3rem}.collapsed .code-line-container[data-v-25a17a0e]{height:0;visibility:hidden}.row[data-v-be73599c]{box-sizing:border-box;display:flex;flex-flow:row wrap}.col[data-v-2ee3ad8b]{box-sizing:border-box;flex:none}.xlarge-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.xlarge-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.xlarge-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.xlarge-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.xlarge-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.xlarge-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.xlarge-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.xlarge-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.xlarge-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.xlarge-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.xlarge-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.xlarge-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.xlarge-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.xlarge-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}.large-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.large-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.large-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.large-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.large-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.large-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.large-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.large-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.large-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.large-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.large-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.large-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.large-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.large-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}@media only screen and (max-width:1250px){.medium-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.medium-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.medium-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.medium-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.medium-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.medium-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.medium-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.medium-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.medium-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.medium-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.medium-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.medium-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.medium-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.medium-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}@media only screen and (max-width:735px){.small-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.small-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.small-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.small-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.small-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.small-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.small-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.small-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.small-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.small-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.small-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.small-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.small-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.small-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}@media only screen and (max-width:320px){.xsmall-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.xsmall-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.xsmall-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.xsmall-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.xsmall-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.xsmall-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.xsmall-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.xsmall-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.xsmall-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.xsmall-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.xsmall-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.xsmall-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.xsmall-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.xsmall-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}.tabnav[data-v-5572fe1d]{margin:0 0 1.4705882353rem 0;display:flex}.tabnav--center[data-v-5572fe1d]{justify-content:center}.tabnav--end[data-v-5572fe1d]{justify-content:flex-end}.tabnav--vertical[data-v-5572fe1d]{flex-flow:column wrap}.tabnav--vertical .tabnav-items[data-v-5572fe1d]{flex-flow:column;overflow:hidden}.tabnav--vertical[data-v-5572fe1d] .tabnav-item{padding-left:0}.tabnav--vertical[data-v-5572fe1d] .tabnav-item .tabnav-link{padding-top:8px}.tabnav-items[data-v-5572fe1d]{display:flex;margin:0;text-align:center}.tabnav-item[data-v-6aa9882a]{border-bottom:1px solid;border-color:var(--colors-tabnav-item-border-color,var(--color-tabnav-item-border-color));display:flex;list-style:none;padding-left:1.7647058824rem;margin:0;outline:none}.tabnav-item[data-v-6aa9882a]:first-child{padding-left:0}.tabnav-item[data-v-6aa9882a]:nth-child(n+1){margin:0}.tabnav-link[data-v-6aa9882a]{color:var(--colors-secondary-label,var(--color-secondary-label));font-size:.8235294118rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding:6px 0;margin-top:4px;margin-bottom:4px;text-align:left;text-decoration:none;display:block;position:relative;z-index:0;width:100%}.tabnav-link[data-v-6aa9882a]:hover{text-decoration:none}.tabnav-link[data-v-6aa9882a]:focus{outline-offset:-1px}.tabnav-link[data-v-6aa9882a]:after{content:"";position:absolute;bottom:-5px;left:0;width:100%;border:1px solid transparent}.tabnav-link.active[data-v-6aa9882a]{color:var(--colors-text,var(--color-text));cursor:default;z-index:10}.tabnav-link.active[data-v-6aa9882a]:after{border-bottom-color:var(--colors-text,var(--color-text))}.controls[data-v-c84e62a6]{margin-top:5px;font-size:14px;display:flex;justify-content:flex-end}.controls a[data-v-c84e62a6]{color:var(--colors-text,var(--color-text));display:flex;align-items:center}.controls .control-icon[data-v-c84e62a6]{width:1.05em;margin-right:.3em}.caption[data-v-869c6f6e]{font-size:.8235294118rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin:0 0 var(--spacing-stacked-margin-large) 0}.caption.trailing[data-v-869c6f6e]{margin:var(--spacing-stacked-margin-large) 0 0 0;text-align:center}caption.trailing[data-v-869c6f6e]{caption-side:bottom}[data-v-869c6f6e] p{display:inline-block}[data-v-bf997940] img{max-width:100%}.table-wrapper[data-v-f3322390]{overflow:auto;-webkit-overflow-scrolling:touch}*+.table-wrapper[data-v-f3322390],.table-wrapper[data-v-f3322390]+*{margin-top:var(--spacing-stacked-margin-xlarge)}table[data-v-f3322390]{border-style:hidden}[data-v-f3322390] th{font-weight:600;word-break:keep-all;-webkit-hyphens:auto;hyphens:auto}[data-v-f3322390] td,[data-v-f3322390] th{border-color:var(--color-fill-gray-tertiary);border-style:solid;border-width:var(--table-border-width,1px 1px);padding:.5882352941rem}[data-v-f3322390] td.left-cell,[data-v-f3322390] th.left-cell{text-align:left}[data-v-f3322390] td.right-cell,[data-v-f3322390] th.right-cell{text-align:right}[data-v-f3322390] td.center-cell,[data-v-f3322390] th.center-cell{text-align:center}s[data-v-7fc51673]:before{content:attr(data-before-text)}s[data-v-7fc51673]:after{content:attr(data-after-text)}s[data-v-7fc51673]:after,s[data-v-7fc51673]:before{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}small[data-v-77035f61]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray)}.device-frame[data-v-c2eac128]{position:relative;width:var(--frame-width);aspect-ratio:var(--frame-aspect);max-width:100%;margin-left:auto;margin-right:auto;overflow:hidden}*+.device-frame[data-v-c2eac128],.device-frame[data-v-c2eac128]+*{margin-top:40px}.device[data-v-c2eac128]{background-image:var(--device-light-url);background-repeat:no-repeat;background-size:100%;width:100%;height:100%;position:relative;pointer-events:none}@media screen{[data-color-scheme=dark] .device[data-v-c2eac128]{background-image:var(--device-dark-url,var(--device-light-url))}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .device[data-v-c2eac128]{background-image:var(--device-dark-url,var(--device-light-url))}}.no-device .device[data-v-c2eac128]{display:none}.device-screen.with-device[data-v-c2eac128]{position:absolute;left:var(--screen-left);top:var(--screen-top);height:var(--screen-height);width:var(--screen-width);display:flex}.device-screen.with-device>[data-v-c2eac128]{flex:1}.device-screen.with-device[data-v-c2eac128] img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:top;object-position:top;margin:0}.device-screen.with-device[data-v-c2eac128] video{-o-object-fit:contain;object-fit:contain;-o-object-position:top;object-position:top;width:100%;height:auto}.video-replay-container .control-button[data-v-7653dfd0]{display:flex;align-items:center;justify-content:center;cursor:pointer;margin-top:.5rem;-webkit-tap-highlight-color:rgba(0,0,0,0)}.video-replay-container .control-button svg.control-icon[data-v-7653dfd0]{height:12px;width:12px;margin-left:.3em}[data-v-2d8333c8] img,[data-v-2d8333c8] video{display:block;margin-left:auto;margin-right:auto;-o-object-fit:contain;object-fit:contain;max-width:100%}.asset[data-v-5e8ea0de]{margin-left:auto;margin-right:auto}*+.asset[data-v-5e8ea0de],.asset[data-v-5e8ea0de]+*{margin-top:var(--spacing-stacked-margin-xlarge)}[data-v-5e8ea0de] video{display:block;margin-left:auto;margin-right:auto;-o-object-fit:contain;object-fit:contain;max-width:100%}.column[data-v-0f654188]{grid-column:span var(--col-span);min-width:0}@media only screen and (max-width:735px){.column[data-v-0f654188]{grid-column:span 1}}.row[data-v-1bcb2d0f]{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;grid-gap:var(--col-gap,20px)}@media only screen and (max-width:735px){.row[data-v-1bcb2d0f]{grid-template-columns:1fr;grid-auto-flow:row}}.row.with-columns[data-v-1bcb2d0f]{--col-count:var(--col-count-large);grid-template-columns:repeat(var(--col-count),1fr);grid-auto-flow:row}@media only screen and (max-width:1250px){.row.with-columns[data-v-1bcb2d0f]{--col-count:var(--col-count-medium,var(--col-count-large))}}@media only screen and (max-width:735px){.row.with-columns[data-v-1bcb2d0f]{--col-count:var(--col-count-small)}}*+.TabNavigator[data-v-e671a734],*+.row[data-v-1bcb2d0f],.TabNavigator[data-v-e671a734]+*,.row[data-v-1bcb2d0f]+*{margin-top:var(--spacing-stacked-margin-xlarge)}.TabNavigator .tabnav[data-v-e671a734]{overflow:auto;white-space:nowrap}.TabNavigator .tabs-content-container[data-v-e671a734]{position:relative;overflow:hidden}.tabs--vertical[data-v-e671a734]{display:flex;flex-flow:row-reverse}@media only screen and (max-width:735px){.tabs--vertical[data-v-e671a734]{flex-flow:column-reverse}}.tabs--vertical .tabnav[data-v-e671a734]{width:30%;flex:0 0 auto;white-space:normal;margin:0}@media only screen and (max-width:735px){.tabs--vertical .tabnav[data-v-e671a734]{width:100%}}.tabs--vertical .tabs-content[data-v-e671a734]{flex:1 1 auto;min-width:0;padding-right:var(--spacing-stacked-margin-xlarge)}@media only screen and (max-width:735px){.tabs--vertical .tabs-content[data-v-e671a734]{padding-right:0;padding-bottom:var(--spacing-stacked-margin-large)}}.fade-enter-active[data-v-e671a734],.fade-leave-active[data-v-e671a734]{transition:opacity .2s ease-in-out}.fade-enter[data-v-e671a734],.fade-leave-to[data-v-e671a734]{opacity:0}.fade-leave-active[data-v-e671a734]{position:absolute;top:0;left:0;right:0}.tasklist[data-v-6a56a858]{--checkbox-width:1rem;--indent-width:calc(var(--checkbox-width)/2);--content-margin:var(--indent-width);list-style-type:none;margin-left:var(--indent-width)}p[data-v-6a56a858]{margin-left:var(--content-margin)}p[data-v-6a56a858]:only-child{--content-margin:calc(var(--checkbox-width) + var(--indent-width))}input[type=checkbox]+p[data-v-6a56a858]{display:inline-block}.button-cta[data-v-c9c81868]{background:var(--colors-button-light-background,var(--color-button-background));border-color:var(--color-button-border,currentcolor);border-radius:var(--button-border-radius,var(--border-radius,4px));border-style:var(--button-border-style,none);border-width:var(--button-border-width,medium);color:var(--colors-button-text,var(--color-button-text));cursor:pointer;min-width:1.7647058824rem;padding:.2352941176rem .8823529412rem;text-align:center;white-space:nowrap;display:inline-block;font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.button-cta[data-v-c9c81868]:active{background:var(--colors-button-light-backgroundActive,var(--color-button-background-active));outline:none}.button-cta[data-v-c9c81868]:hover:not([disabled]){background:var(--colors-button-light-backgroundHover,var(--color-button-background-hover));text-decoration:none}.button-cta[data-v-c9c81868]:disabled{opacity:.32;cursor:default}.fromkeyboard .button-cta[data-v-c9c81868]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.button-cta.is-dark[data-v-c9c81868]{background:var(--colors-button-dark-background,#06f)}.button-cta.is-dark[data-v-c9c81868]:active{background:var(--colors-button-dark-backgroundActive,var(--color-button-background-active))}.button-cta.is-dark[data-v-c9c81868]:hover:not([disabled]){background:var(--colors-button-dark-backgroundHover,var(--color-button-background-hover))}.card-cover-wrap.rounded[data-v-28b14a83]{border-radius:var(--border-radius,4px);overflow:hidden}.card-cover[data-v-28b14a83]{background-color:var(--color-card-background);display:block;height:var(--card-cover-height,180px)}.card-cover.fallback[data-v-28b14a83],.card-cover[data-v-28b14a83] img{width:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;display:block;margin:0}.card-cover[data-v-28b14a83] img{height:100%}.card[data-v-1651529a]{overflow:hidden;display:block;transition:box-shadow,transform .16s ease-out;will-change:box-shadow,transform;backface-visibility:hidden;height:var(--card-height);border-radius:var(--border-radius,4px)}.card[data-v-1651529a]:hover{text-decoration:none}.card:hover .link[data-v-1651529a]{text-decoration:underline;text-underline-position:under}.card[data-v-1651529a]:hover{box-shadow:0 5px 10px var(--color-card-shadow);transform:scale(1.007)}@media(prefers-reduced-motion:reduce){.card[data-v-1651529a]:hover{box-shadow:none;transform:none}}.card.small[data-v-1651529a]{--card-height:408px;--card-details-height:139px;--card-cover-height:235px}@media only screen and (max-width:1250px){.card.small[data-v-1651529a]{--card-height:341px;--card-details-height:144px;--card-cover-height:163px}}.card.large[data-v-1651529a]{--card-height:556px;--card-details-height:163px;--card-cover-height:359px}@media only screen and (max-width:1250px){.card.large[data-v-1651529a]{--card-height:420px;--card-details-height:137px;--card-cover-height:249px}}.card.floating-style[data-v-1651529a]{--color-card-shadow:transparent;--card-height:auto;--card-details-height:auto}.details[data-v-1651529a]{background-color:var(--color-card-background);padding:17px;position:relative;height:var(--card-details-height);font-size:.8235294118rem;line-height:1.2857142857}.details[data-v-1651529a],.large .details[data-v-1651529a]{font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.large .details[data-v-1651529a]{font-size:1rem;line-height:1.4705882353}@media only screen and (max-width:1250px){.large .details[data-v-1651529a]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.floating-style .details[data-v-1651529a]{--color-card-background:transparent;padding:17px 0}.eyebrow[data-v-1651529a]{color:var(--color-card-eyebrow);display:block;margin-bottom:4px;font-size:.8235294118rem;line-height:1.2857142857}.eyebrow[data-v-1651529a],.large .eyebrow[data-v-1651529a]{font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.large .eyebrow[data-v-1651529a]{font-size:1rem;line-height:1.2352941176}@media only screen and (max-width:1250px){.large .eyebrow[data-v-1651529a]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title[data-v-1651529a]{color:var(--color-card-content-text);font-size:1rem;line-height:1.2352941176;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){.title[data-v-1651529a]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-1651529a]{font-size:1rem;line-height:1.2352941176;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.large .title[data-v-1651529a]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){.large .title[data-v-1651529a]{font-size:1rem;line-height:1.2352941176;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.card-content[data-v-1651529a]{color:var(--color-card-content-text);margin-top:4px}.link[data-v-1651529a]{bottom:17px;display:flex;align-items:center;position:absolute}.link .link-icon[data-v-1651529a]{height:.6em;width:.6em;margin-left:.3em}.floating-style .link[data-v-1651529a]{bottom:unset;margin-top:var(--spacing-stacked-margin-large);position:relative}@media only screen and (max-width:735px){.card[data-v-1651529a]{margin-left:auto;margin-right:auto}.card+.card[data-v-1651529a]{margin-bottom:20px;margin-top:20px}.card.large[data-v-1651529a],.card.small[data-v-1651529a]{--card-height:auto;--card-details-height:auto;min-width:280px;max-width:300px;--card-cover-height:227px}.card.large .link[data-v-1651529a],.card.small .link[data-v-1651529a]{bottom:unset;margin-top:7px;position:relative}}.nav-menu-items[data-v-67c1c0a5]{display:flex;justify-content:flex-end}.nav--in-breakpoint-range .nav-menu-items[data-v-67c1c0a5]{display:block;opacity:0;padding:1rem 1.8823529412rem 1.6470588235rem 1.8823529412rem;transform:translate3d(0,-50px,0);transition:transform 1s cubic-bezier(.07,1.06,.27,.95) .5s,opacity .7s cubic-bezier(.07,1.06,.27,.95) .2s}.nav--is-open.nav--in-breakpoint-range .nav-menu-items[data-v-67c1c0a5]{opacity:1;transform:translateZ(0);transition-delay:.2s,.4s}.nav--in-breakpoint-range .nav-menu-items[data-v-67c1c0a5]:not(:only-child):not(:last-child){padding-bottom:0}.nav--in-breakpoint-range .nav-menu-items[data-v-67c1c0a5]:not(:only-child):last-child{padding-top:0}.TopicTypeIcon[data-v-0c843792]{width:1em;height:1em;flex:0 0 auto;color:var(--icon-color,var(--color-figure-gray-secondary))}.TopicTypeIcon[data-v-0c843792] picture{flex:1}.TopicTypeIcon svg[data-v-0c843792],.TopicTypeIcon[data-v-0c843792] img{display:block;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.nav[data-v-c7b655d6]{position:sticky;top:0;width:100%;height:3.0588235294rem;z-index:9997;--nav-padding:1.2941176471rem;color:var(--color-nav-color)}@media print{.nav[data-v-c7b655d6]{position:relative}}@media only screen and (max-width:767px){.nav[data-v-c7b655d6]{min-width:320px;height:2.8235294118rem}}.theme-dark.nav[data-v-c7b655d6]{background:none;color:var(--color-nav-dark-color)}.nav__wrapper[data-v-c7b655d6]{position:absolute;top:0;left:0;width:100%;height:auto;min-height:100%;z-index:1}.nav__background[data-v-c7b655d6]{position:absolute;left:0;top:0;width:100%;height:100%;z-index:1;transition:background-color 0s ease-in}.nav__background[data-v-c7b655d6]:after{background-color:var(--color-nav-keyline)}.nav--no-bg-transition .nav__background[data-v-c7b655d6]{transition:none!important}.nav--solid-background .nav__background[data-v-c7b655d6]{background-color:var(--color-nav-solid-background);-webkit-backdrop-filter:none;backdrop-filter:none}.nav--is-open.nav--solid-background .nav__background[data-v-c7b655d6],.nav--is-sticking.nav--solid-background .nav__background[data-v-c7b655d6]{background-color:var(--color-nav-solid-background)}.nav--is-open.theme-dark.nav--solid-background .nav__background[data-v-c7b655d6],.nav--is-sticking.theme-dark.nav--solid-background .nav__background[data-v-c7b655d6],.theme-dark.nav--solid-background .nav__background[data-v-c7b655d6]{background-color:var(--color-nav-dark-solid-background)}.nav--in-breakpoint-range .nav__background[data-v-c7b655d6]{min-height:2.8235294118rem;transition:background-color 0s ease .7s}.nav--is-sticking .nav__background[data-v-c7b655d6]{background-color:var(--color-nav-expanded);max-height:none;transition:background-color 0s ease;transition-property:background-color,-webkit-backdrop-filter;transition-property:background-color,backdrop-filter;transition-property:background-color,backdrop-filter,-webkit-backdrop-filter}.nav--is-sticking .nav__background[data-v-c7b655d6]:after{background-color:var(--color-nav-sticking-expanded-keyline)}@supports((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.nav--is-sticking .nav__background[data-v-c7b655d6]{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:var(--color-nav-uiblur-stuck)}}.theme-dark.nav--is-sticking .nav__background[data-v-c7b655d6]{background-color:var(--color-nav-dark-stuck)}@supports((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.theme-dark.nav--is-sticking .nav__background[data-v-c7b655d6]{background-color:var(--color-nav-dark-uiblur-stuck)}}.nav--is-open .nav__background[data-v-c7b655d6]{background-color:var(--color-nav-expanded);max-height:none;transition:background-color 0s ease;transition-property:background-color,-webkit-backdrop-filter;transition-property:background-color,backdrop-filter;transition-property:background-color,backdrop-filter,-webkit-backdrop-filter}.nav--is-open .nav__background[data-v-c7b655d6]:after{background-color:var(--color-nav-sticking-expanded-keyline)}@supports((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.nav--is-open .nav__background[data-v-c7b655d6]{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:var(--color-nav-uiblur-expanded)}}.theme-dark.nav--is-open .nav__background[data-v-c7b655d6]{background-color:var(--color-nav-dark-expanded)}@supports((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.theme-dark.nav--is-open .nav__background[data-v-c7b655d6]{background-color:var(--color-nav-dark-uiblur-expanded)}}.theme-dark .nav__background[data-v-c7b655d6]:after{background-color:var(--color-nav-dark-keyline)}.nav--is-open.theme-dark .nav__background[data-v-c7b655d6]:after,.nav--is-sticking.theme-dark .nav__background[data-v-c7b655d6]:after{background-color:var(--color-nav-dark-sticking-expanded-keyline)}.nav__background[data-v-c7b655d6]:after{content:"";display:block;position:absolute;top:100%;left:50%;transform:translateX(-50%);width:980px;height:1px;z-index:1}@media only screen and (max-width:1023px){.nav__background[data-v-c7b655d6]:after{width:100%}}.nav--noborder .nav__background[data-v-c7b655d6]:after{display:none}.nav--is-sticking.nav--noborder .nav__background[data-v-c7b655d6]:after{display:block}.nav--fullwidth-border .nav__background[data-v-c7b655d6]:after,.nav--is-open .nav__background[data-v-c7b655d6]:after,.nav--is-sticking .nav__background[data-v-c7b655d6]:after,.nav--solid-background .nav__background[data-v-c7b655d6]:after{width:100%}.nav-overlay[data-v-c7b655d6]{position:fixed;left:0;right:0;top:0;display:block;opacity:0}.nav--is-open .nav-overlay[data-v-c7b655d6]{background-color:rgba(51,51,51,.4);transition:opacity .7s cubic-bezier(.07,1.06,.27,.95) .2s;bottom:0;opacity:1}.nav-wrapper[data-v-c7b655d6]{position:absolute;top:0;left:0;width:100%;height:auto;min-height:100%;z-index:1}.pre-title[data-v-c7b655d6]{display:flex;overflow:hidden;padding-left:1.2941176471rem;margin-left:-1.2941176471rem}.pre-title[data-v-c7b655d6]:empty{display:none}.nav--in-breakpoint-range .pre-title[data-v-c7b655d6]{overflow:visible;padding:0;margin-left:0}.nav-content[data-v-c7b655d6]{display:flex;padding:0 var(--nav-padding);max-width:980px;margin:0 auto;position:relative;z-index:2;justify-content:space-between}.nav--is-wide-format .nav-content[data-v-c7b655d6]{box-sizing:border-box;max-width:1920px;margin-left:auto;margin-right:auto}@supports(padding:calc(max(0px))){.nav-content[data-v-c7b655d6]{padding-left:max(var(--nav-padding),env(safe-area-inset-left));padding-right:max(var(--nav-padding),env(safe-area-inset-right))}}@media only screen and (max-width:767px){.nav-content[data-v-c7b655d6]{padding:0 0 0 .9411764706rem}}.nav--in-breakpoint-range .nav-content[data-v-c7b655d6]{display:grid;grid-template-columns:auto 1fr auto;grid-auto-rows:minmax(min-content,max-content);grid-template-areas:"pre-title title actions" "menu menu menu"}.nav-menu[data-v-c7b655d6]{font-size:.7058823529rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);flex:1 1 auto;display:flex;min-width:0}@media only screen and (max-width:767px){.nav-menu[data-v-c7b655d6]{font-size:.8235294118rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.nav--in-breakpoint-range .nav-menu[data-v-c7b655d6]{font-size:.8235294118rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);grid-area:menu}.nav-menu-tray[data-v-c7b655d6]{width:100%;max-width:100%;align-items:center;display:flex;justify-content:space-between}.nav--in-breakpoint-range .nav-menu-tray[data-v-c7b655d6]{display:block;overflow:hidden;pointer-events:none;visibility:hidden;max-height:0;transition:max-height .4s ease-in 0s,visibility 0s linear 1s}.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-c7b655d6]{max-height:calc(100vh - 5.64706rem);overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:auto;visibility:visible;transition-delay:.2s,0s}.nav--is-transitioning.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-c7b655d6]{overflow-y:hidden}.nav--is-sticking.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-c7b655d6]{max-height:calc(100vh - 2.82353rem)}.nav-actions[data-v-c7b655d6]{display:flex;align-items:center}.nav--in-breakpoint-range .nav-actions[data-v-c7b655d6]{grid-area:actions;justify-content:flex-end}@media only screen and (max-width:767px){.nav-actions[data-v-c7b655d6]{padding-right:.9411764706rem}}.nav--in-breakpoint-range .pre-title+.nav-title[data-v-c7b655d6]{grid-area:title}.nav--is-wide-format.nav--in-breakpoint-range .pre-title+.nav-title[data-v-c7b655d6]{width:100%;justify-content:center}.nav-title[data-v-c7b655d6]{height:3.0588235294rem;font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);cursor:default;display:flex;align-items:center;white-space:nowrap;box-sizing:border-box}@media only screen and (max-width:767px){.nav-title[data-v-c7b655d6]{padding-top:0;height:2.8235294118rem;width:90%}}.nav-title[data-v-c7b655d6] span{height:100%;line-height:normal}.nav-title a[data-v-c7b655d6]{display:inline-block;letter-spacing:inherit;line-height:normal;margin:0;text-decoration:none;white-space:nowrap}.nav-title a[data-v-c7b655d6]:hover{text-decoration:none}@media only screen and (max-width:767px){.nav-title a[data-v-c7b655d6]{display:flex}}.nav-title a[data-v-c7b655d6],.nav-title[data-v-c7b655d6]{color:var(--color-figure-gray);transition:color 0s ease-in}.nav--is-open.theme-dark .nav-title a[data-v-c7b655d6],.nav--is-open.theme-dark .nav-title[data-v-c7b655d6],.nav--is-sticking.theme-dark .nav-title a[data-v-c7b655d6],.nav--is-sticking.theme-dark .nav-title[data-v-c7b655d6],.theme-dark .nav-title a[data-v-c7b655d6],.theme-dark .nav-title[data-v-c7b655d6]{color:var(--color-nav-dark-link-color)}.nav-ax-toggle[data-v-c7b655d6]{display:none;position:absolute;top:0;left:0;width:1px;height:1px;z-index:10}.nav-ax-toggle[data-v-c7b655d6]:focus{outline-offset:-6px;width:100%;height:100%}.nav--in-breakpoint-range .nav-ax-toggle[data-v-c7b655d6]{display:block}.nav-menucta[data-v-c7b655d6]{cursor:pointer;display:none;align-items:center;overflow:hidden;width:1.1764705882rem;-webkit-tap-highlight-color:rgba(0,0,0,0);height:2.8235294118rem}.nav--in-breakpoint-range .nav-menucta[data-v-c7b655d6]{display:flex}.nav-menucta-chevron[data-v-c7b655d6]{display:block;position:relative;width:100%;height:.7058823529rem;transition:transform .3s linear}.nav-menucta-chevron[data-v-c7b655d6]:after,.nav-menucta-chevron[data-v-c7b655d6]:before{content:"";display:block;position:absolute;top:.5882352941rem;width:.7058823529rem;height:.0588235294rem;transition:transform .3s linear;background:var(--color-figure-gray)}.nav-menucta-chevron[data-v-c7b655d6]:before{right:50%;border-radius:.5px 0 0 .5px}.nav-menucta-chevron[data-v-c7b655d6]:after{left:50%;border-radius:0 .5px .5px 0}.nav-menucta-chevron[data-v-c7b655d6]:before{transform-origin:100% 100%;transform:rotate(40deg) scaleY(1.5)}.nav-menucta-chevron[data-v-c7b655d6]:after{transform-origin:0 100%;transform:rotate(-40deg) scaleY(1.5)}.nav--is-open .nav-menucta-chevron[data-v-c7b655d6]{transform:scaleY(-1)}.theme-dark .nav-menucta-chevron[data-v-c7b655d6]:after,.theme-dark .nav-menucta-chevron[data-v-c7b655d6]:before{background:var(--color-nav-dark-link-color)}[data-v-c7b655d6] .nav-menu-link{color:var(--color-nav-link-color)}[data-v-c7b655d6] .nav-menu-link:hover{color:var(--color-nav-link-color-hover);text-decoration:none}.theme-dark[data-v-c7b655d6] .nav-menu-link{color:var(--color-nav-dark-link-color)}.theme-dark[data-v-c7b655d6] .nav-menu-link:hover{color:var(--color-nav-dark-link-color-hover)}[data-v-c7b655d6] .nav-menu-link.current{color:var(--color-nav-current-link);cursor:default}[data-v-c7b655d6] .nav-menu-link.current:hover{color:var(--color-nav-current-link)}.theme-dark[data-v-c7b655d6] .nav-menu-link.current,.theme-dark[data-v-c7b655d6] .nav-menu-link.current:hover{color:var(--color-nav-dark-current-link)}.reference-card-grid-item[data-v-87dd3302]{--card-cover-height:auto}.reference-card-grid-item.card.large[data-v-87dd3302]{--card-cover-height:auto;min-width:0;max-width:none}.reference-card-grid-item[data-v-87dd3302] .card-cover{aspect-ratio:16/9}.reference-card-grid-item[data-v-87dd3302] .card-cover-wrap{border:1px solid var(--color-link-block-card-border)}.reference-card-grid-item__image[data-v-87dd3302]{display:flex;align-items:center;justify-content:center;font-size:80px;background-color:var(--color-fill-gray-quaternary)}.reference-card-grid-item__icon[data-v-87dd3302]{margin:0;display:flex;justify-content:center}.reference-card-grid-item__icon[data-v-87dd3302] .icon-inline{flex:1 1 auto}.nav-menu-item[data-v-58ee2996]{margin-left:1.4117647059rem;list-style:none;min-width:0}.nav--in-breakpoint-range .nav-menu-item[data-v-58ee2996]{margin-left:0;width:100%;min-height:2.4705882353rem}.nav--in-breakpoint-range .nav-menu-item[data-v-58ee2996]:first-child .nav-menu-link{border-top:0}.nav--in-breakpoint-range .nav-menu-item--animated[data-v-58ee2996]{opacity:0;transform:none;transition:.5s ease;transition-property:transform,opacity}.nav--is-open.nav--in-breakpoint-range .nav-menu-item--animated[data-v-58ee2996]{opacity:1;transform:translateZ(0);transition-delay:0s}.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-58ee2996]:nth-child(7){transition-delay:0s}.links-block[data-v-4e94ea62]+*{margin-top:var(--spacing-stacked-margin-xlarge)}.topic-link-block[data-v-4e94ea62]{margin-top:15px} \ No newline at end of file diff --git a/docs/css/675.40c3bcb2.css b/docs/css/675.40c3bcb2.css deleted file mode 100644 index 9910395..0000000 --- a/docs/css/675.40c3bcb2.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */.badge[data-v-8d6893ae]{--badge-color:var(--color-badge-default);--badge-dark-color:var(--color-badge-dark-default);font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:inline-block;padding:2px 10px;white-space:nowrap;background:none;border-radius:var(--badge-border-radius,calc(var(--border-radius, 4px) - 1px));border-style:var(--badge-border-style,solid);border-width:var(--badge-border-width,1px);margin-left:10px;color:var(--badge-color)}.theme-dark .badge[data-v-8d6893ae]{--badge-color:var(--badge-dark-color)}.badge-deprecated[data-v-8d6893ae]{--badge-color:var(--color-badge-deprecated);--badge-dark-color:var(--color-badge-dark-deprecated)}.badge-beta[data-v-8d6893ae]{--badge-color:var(--color-badge-beta);--badge-dark-color:var(--color-badge-dark-beta)}[data-v-3a32ffd0] .code-listing{background:var(--background,var(--color-code-background));color:var(--text,var(--color-code-plain));border-color:var(--colors-grid,var(--color-grid));border-width:var(--code-border-width,1px);border-style:var(--code-border-style,solid)}[data-v-3a32ffd0] .code-listing pre{padding:var(--code-block-style-elements-padding)}[data-v-3a32ffd0] .code-listing pre>code{font-size:.8823529412rem;line-height:1.6666666667;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}[data-v-3a32ffd0] *+.code-listing,[data-v-3a32ffd0] *+.endpoint-example,[data-v-3a32ffd0] *+.inline-image-container,[data-v-3a32ffd0] *+aside,[data-v-3a32ffd0] *+figure,[data-v-3a32ffd0] .code-listing+*,[data-v-3a32ffd0] .endpoint-example+*,[data-v-3a32ffd0] .inline-image-container+*,[data-v-3a32ffd0] aside+*,[data-v-3a32ffd0] figure+*{margin-top:var(--spacing-stacked-margin-xlarge)}[data-v-3a32ffd0] *+dl,[data-v-3a32ffd0] dl+*{margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] img{display:block;margin:auto;max-width:100%}[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ol li:not(:first-child),[data-v-3a32ffd0] ul,[data-v-3a32ffd0] ul li:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}@media only screen and (max-width:735px){[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ul{margin-left:1.25rem}}[data-v-3a32ffd0] dt:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] dd{margin-left:2em}.topic-icon-wrapper[data-v-44dade98]{display:flex;align-items:center;justify-content:center;height:1.4705882353rem;flex:0 0 1.294rem;width:1.294rem;margin-right:1rem}.topic-icon[data-v-44dade98]{height:.8823529412rem;transform:scale(1);-webkit-transform:scale(1);overflow:visible}.topic-icon[data-v-44dade98] img{margin:0;display:block;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.topic-icon.curly-brackets-icon[data-v-44dade98]{height:1rem}.token-method[data-v-3fd63d6c]{font-weight:700}.token-keyword[data-v-3fd63d6c]{color:var(--syntax-keyword,var(--color-syntax-keywords))}.token-number[data-v-3fd63d6c]{color:var(--syntax-number,var(--color-syntax-numbers))}.token-string[data-v-3fd63d6c]{color:var(--syntax-string,var(--color-syntax-strings))}.attribute-link[data-v-3fd63d6c],.token-attribute[data-v-3fd63d6c]{color:var(--syntax-attribute,var(--color-syntax-keywords))}.token-internalParam[data-v-3fd63d6c]{color:var(--color-syntax-param-internal-name)}.type-identifier-link[data-v-3fd63d6c]{color:var(--syntax-type,var(--color-syntax-other-type-names))}.token-removed[data-v-3fd63d6c]{background-color:var(--color-highlight-red)}.token-added[data-v-3fd63d6c]{background-color:var(--color-highlight-green)}.decorator[data-v-06ec7395],.label[data-v-06ec7395]{color:var(--colors-secondary-label,var(--color-secondary-label))}.label[data-v-06ec7395]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.empty-token[data-v-06ec7395]{font-size:0}.empty-token[data-v-06ec7395]:after{content:" ";font-size:1rem}.conditional-constraints[data-v-4c6f3ed1] code{color:var(--colors-secondary-label,var(--color-secondary-label))}.abstract[data-v-63be6b46],.link-block[data-v-63be6b46] .badge{margin-left:2.294rem}.link-block .badge+.badge[data-v-63be6b46]{margin-left:1rem}.link[data-v-63be6b46]{display:flex}.link-block .badge[data-v-63be6b46]{margin-top:.5rem}.link-block.has-inline-element[data-v-63be6b46]{display:flex;align-items:flex-start;flex-flow:row wrap}.link-block.has-inline-element .badge[data-v-63be6b46]{margin-left:1rem;margin-top:0}.link-block .has-adjacent-elements[data-v-63be6b46]{padding-top:5px;padding-bottom:5px;display:inline-flex}.link-block[data-v-63be6b46],.link[data-v-63be6b46]{box-sizing:inherit}.link-block.changed[data-v-63be6b46],.link.changed[data-v-63be6b46]{padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.link-block.changed.changed[data-v-63be6b46],.link.changed.changed[data-v-63be6b46]{padding-right:1rem}@media only screen and (max-width:735px){.link-block.changed[data-v-63be6b46],.link.changed[data-v-63be6b46]{padding-left:0;padding-right:0}.link-block.changed.changed[data-v-63be6b46],.link.changed.changed[data-v-63be6b46]{padding-right:17px;padding-left:2.1764705882rem}.link-block.changed[data-v-63be6b46],.link.changed[data-v-63be6b46]{padding-left:0;padding-right:0}}.abstract .topic-required[data-v-63be6b46]:not(:first-child){margin-top:4px}.topic-required[data-v-63be6b46]{font-size:.8em}.deprecated[data-v-63be6b46]{text-decoration:line-through}.conditional-constraints[data-v-63be6b46]{font-size:.8235294118rem;margin-top:4px} \ No newline at end of file diff --git a/docs/css/866.60f074fd.css b/docs/css/866.60f074fd.css new file mode 100644 index 0000000..1d28cc7 --- /dev/null +++ b/docs/css/866.60f074fd.css @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */aside[data-v-3ccce809]{-moz-column-break-inside:avoid;break-inside:avoid;border-radius:var(--aside-border-radius,var(--border-radius,4px));border-style:var(--aside-border-style,solid);border-width:var(--aside-border-width,0 0 0 6px);padding:.9411764706rem;text-align:start}aside .label[data-v-3ccce809]{font-size:1rem;line-height:1.5294117647;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}aside .label+[data-v-3ccce809]{margin-top:var(--spacing-stacked-margin-small)}aside.deprecated[data-v-3ccce809]{background-color:var(--color-aside-deprecated-background);border-color:var(--color-aside-deprecated-border);box-shadow:0 0 0 0 var(--color-aside-deprecated-border) inset,0 0 0 0 var(--color-aside-deprecated-border)}aside.deprecated .label[data-v-3ccce809]{color:var(--color-aside-deprecated)}aside.experiment[data-v-3ccce809]{background-color:var(--color-aside-experiment-background);border-color:var(--color-aside-experiment-border);box-shadow:0 0 0 0 var(--color-aside-experiment-border) inset,0 0 0 0 var(--color-aside-experiment-border)}aside.experiment .label[data-v-3ccce809]{color:var(--color-aside-experiment)}aside.important[data-v-3ccce809]{background-color:var(--color-aside-important-background);border-color:var(--color-aside-important-border);box-shadow:0 0 0 0 var(--color-aside-important-border) inset,0 0 0 0 var(--color-aside-important-border)}aside.important .label[data-v-3ccce809]{color:var(--color-aside-important)}aside.note[data-v-3ccce809]{background-color:var(--color-aside-note-background);border-color:var(--color-aside-note-border);box-shadow:0 0 0 0 var(--color-aside-note-border) inset,0 0 0 0 var(--color-aside-note-border)}aside.note .label[data-v-3ccce809]{color:var(--color-aside-note)}aside.tip[data-v-3ccce809]{background-color:var(--color-aside-tip-background);border-color:var(--color-aside-tip-border);box-shadow:0 0 0 0 var(--color-aside-tip-border) inset,0 0 0 0 var(--color-aside-tip-border)}aside.tip .label[data-v-3ccce809]{color:var(--color-aside-tip)}aside.warning[data-v-3ccce809]{background-color:var(--color-aside-warning-background);border-color:var(--color-aside-warning-border);box-shadow:0 0 0 0 var(--color-aside-warning-border) inset,0 0 0 0 var(--color-aside-warning-border)}aside.warning .label[data-v-3ccce809]{color:var(--color-aside-warning)}code[data-v-08295b2f]:before{content:attr(data-before-code)}code[data-v-08295b2f]:after{content:attr(data-after-code)}code[data-v-08295b2f]:after,code[data-v-08295b2f]:before{display:block;position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}.swift-file-icon.file-icon[data-v-c01a6890]{height:1rem}.file-icon[data-v-7c381064]{position:relative;align-items:flex-end;height:24px;margin:0 .5rem 0 1rem}.filename[data-v-c8c40662]{color:var(--text,var(--colors-secondary-label,var(--color-secondary-label)));font-size:.9411764706rem;line-height:1.1875;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-top:1rem}@media only screen and (max-width:735px){.filename[data-v-c8c40662]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-top:0}}.filename>a[data-v-c8c40662],.filename>span[data-v-c8c40662]{display:flex;align-items:center;line-height:normal}a[data-v-c8c40662]{color:var(--url,var(--color-link))}.code-line-container[data-v-13e6923e]{display:inline-block;width:100%;box-sizing:border-box}.code-number[data-v-13e6923e]{display:inline-block;padding:0 1rem 0 8px;text-align:right;min-width:2em;color:#666;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-number[data-v-13e6923e]:before{content:attr(data-line-number)}.highlighted[data-v-13e6923e]{background:var(--line-highlight,var(--color-code-line-highlight));border-left:4px solid var(--color-code-line-highlight-border)}.highlighted .code-number[data-v-13e6923e]{padding-left:4px}pre[data-v-13e6923e]{padding:14px 0;display:flex;overflow:unset;-webkit-overflow-scrolling:touch;white-space:pre;word-wrap:normal;height:100%;-moz-tab-size:var(--code-indentationWidth,4);-o-tab-size:var(--code-indentationWidth,4);tab-size:var(--code-indentationWidth,4)}@media only screen and (max-width:735px){pre[data-v-13e6923e]{padding-top:.8235294118rem}}code[data-v-13e6923e]{white-space:pre;word-wrap:normal;flex-grow:9999}.code-listing[data-v-13e6923e],.container-general[data-v-13e6923e]{display:flex}.code-listing[data-v-13e6923e]{flex-direction:column;border-radius:var(--code-border-radius,var(--border-radius,4px));overflow:hidden;filter:blur(0)}.code-listing.single-line[data-v-13e6923e]{border-radius:var(--border-radius,4px)}.container-general[data-v-13e6923e]{overflow:auto}.container-general[data-v-13e6923e],pre[data-v-13e6923e]{flex-grow:1}.header-anchor[data-v-24fddf6a]{color:inherit;text-decoration:none;position:relative;padding-right:23px;display:inline-block}.header-anchor[data-v-24fddf6a]:after{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0;content:attr(data-after-text)}.header-anchor .icon[data-v-24fddf6a]{position:absolute;right:0;bottom:.2em;display:none;height:16px;margin-left:7px}.header-anchor:focus .icon[data-v-24fddf6a],.header-anchor:hover .icon[data-v-24fddf6a]{display:inline}code[data-v-05f4a5b7]{speak-punctuation:code}.container-general[data-v-25a17a0e]{display:flex;flex-flow:row wrap}.container-general .code-line[data-v-25a17a0e]{flex:1 0 auto}.code-line-container[data-v-25a17a0e]{width:100%;align-items:center;display:flex;border-left:4px solid transparent;counter-increment:linenumbers;padding-right:14px}.code-number[data-v-25a17a0e]{font-size:.7058823529rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace);padding:0 1rem 0 8px;text-align:right;min-width:2.01em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-number[data-v-25a17a0e]:before{content:counter(linenumbers)}.code-line[data-v-25a17a0e]{display:flex}pre[data-v-25a17a0e]{padding:14px 0;display:flex;flex-flow:row wrap;overflow:auto;-webkit-overflow-scrolling:touch;white-space:pre;word-wrap:normal}@media only screen and (max-width:735px){pre[data-v-25a17a0e]{padding-top:.8235294118rem}}.collapsible-code-listing[data-v-25a17a0e]{background:var(--background,var(--color-code-background));border-color:var(--colors-grid,var(--color-grid));color:var(--text,var(--color-code-plain));border-radius:var(--border-radius,4px);border-style:solid;border-width:1px;counter-reset:linenumbers;font-size:15px}.collapsible-code-listing.single-line[data-v-25a17a0e]{border-radius:var(--border-radius,4px)}.collapsible[data-v-25a17a0e]{background:var(--color-code-collapsible-background);color:var(--color-code-collapsible-text)}.collapsed[data-v-25a17a0e]:before{content:"⋯";display:inline-block;font-family:monospace;font-weight:700;height:100%;line-height:1;text-align:right;width:2.3rem}.collapsed .code-line-container[data-v-25a17a0e]{height:0;visibility:hidden}.row[data-v-be73599c]{box-sizing:border-box;display:flex;flex-flow:row wrap}.col[data-v-2ee3ad8b]{box-sizing:border-box;flex:none}.xlarge-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.xlarge-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.xlarge-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.xlarge-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.xlarge-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.xlarge-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.xlarge-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.xlarge-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.xlarge-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.xlarge-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.xlarge-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.xlarge-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.xlarge-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.xlarge-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}.large-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.large-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.large-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.large-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.large-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.large-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.large-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.large-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.large-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.large-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.large-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.large-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.large-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.large-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}@media only screen and (max-width:1250px){.medium-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.medium-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.medium-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.medium-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.medium-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.medium-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.medium-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.medium-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.medium-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.medium-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.medium-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.medium-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.medium-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.medium-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}@media only screen and (max-width:735px){.small-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.small-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.small-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.small-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.small-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.small-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.small-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.small-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.small-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.small-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.small-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.small-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.small-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.small-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}@media only screen and (max-width:320px){.xsmall-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.xsmall-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.xsmall-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.xsmall-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.xsmall-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.xsmall-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.xsmall-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.xsmall-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.xsmall-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.xsmall-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.xsmall-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.xsmall-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.xsmall-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.xsmall-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}.tabnav[data-v-5572fe1d]{margin:0 0 1.4705882353rem 0;display:flex}.tabnav--center[data-v-5572fe1d]{justify-content:center}.tabnav--end[data-v-5572fe1d]{justify-content:flex-end}.tabnav--vertical[data-v-5572fe1d]{flex-flow:column wrap}.tabnav--vertical .tabnav-items[data-v-5572fe1d]{flex-flow:column;overflow:hidden}.tabnav--vertical[data-v-5572fe1d] .tabnav-item{padding-left:0}.tabnav--vertical[data-v-5572fe1d] .tabnav-item .tabnav-link{padding-top:8px}.tabnav-items[data-v-5572fe1d]{display:flex;margin:0;text-align:center}.tabnav-item[data-v-6aa9882a]{border-bottom:1px solid;border-color:var(--colors-tabnav-item-border-color,var(--color-tabnav-item-border-color));display:flex;list-style:none;padding-left:1.7647058824rem;margin:0;outline:none}.tabnav-item[data-v-6aa9882a]:first-child{padding-left:0}.tabnav-item[data-v-6aa9882a]:nth-child(n+1){margin:0}.tabnav-link[data-v-6aa9882a]{color:var(--colors-secondary-label,var(--color-secondary-label));font-size:.8235294118rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding:6px 0;margin-top:4px;margin-bottom:4px;text-align:left;text-decoration:none;display:block;position:relative;z-index:0;width:100%}.tabnav-link[data-v-6aa9882a]:hover{text-decoration:none}.tabnav-link[data-v-6aa9882a]:focus{outline-offset:-1px}.tabnav-link[data-v-6aa9882a]:after{content:"";position:absolute;bottom:-5px;left:0;width:100%;border:1px solid transparent}.tabnav-link.active[data-v-6aa9882a]{color:var(--colors-text,var(--color-text));cursor:default;z-index:10}.tabnav-link.active[data-v-6aa9882a]:after{border-bottom-color:var(--colors-text,var(--color-text))}.controls[data-v-c84e62a6]{margin-top:5px;font-size:14px;display:flex;justify-content:flex-end}.controls a[data-v-c84e62a6]{color:var(--colors-text,var(--color-text));display:flex;align-items:center}.controls .control-icon[data-v-c84e62a6]{width:1.05em;margin-right:.3em}.caption[data-v-869c6f6e]{font-size:.8235294118rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin:0 0 var(--spacing-stacked-margin-large) 0}.caption.trailing[data-v-869c6f6e]{margin:var(--spacing-stacked-margin-large) 0 0 0;text-align:center}caption.trailing[data-v-869c6f6e]{caption-side:bottom}[data-v-869c6f6e] p{display:inline-block}[data-v-bf997940] img{max-width:100%}.table-wrapper[data-v-f3322390]{overflow:auto;-webkit-overflow-scrolling:touch}*+.table-wrapper[data-v-f3322390],.table-wrapper[data-v-f3322390]+*{margin-top:var(--spacing-stacked-margin-xlarge)}table[data-v-f3322390]{border-style:hidden}[data-v-f3322390] th{font-weight:600;word-break:keep-all;-webkit-hyphens:auto;hyphens:auto}[data-v-f3322390] td,[data-v-f3322390] th{border-color:var(--color-fill-gray-tertiary);border-style:solid;border-width:var(--table-border-width,1px 1px);padding:.5882352941rem}[data-v-f3322390] td.left-cell,[data-v-f3322390] th.left-cell{text-align:left}[data-v-f3322390] td.right-cell,[data-v-f3322390] th.right-cell{text-align:right}[data-v-f3322390] td.center-cell,[data-v-f3322390] th.center-cell{text-align:center}s[data-v-7fc51673]:before{content:attr(data-before-text)}s[data-v-7fc51673]:after{content:attr(data-after-text)}s[data-v-7fc51673]:after,s[data-v-7fc51673]:before{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}small[data-v-77035f61]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray)}.device-frame[data-v-c2eac128]{position:relative;width:var(--frame-width);aspect-ratio:var(--frame-aspect);max-width:100%;margin-left:auto;margin-right:auto;overflow:hidden}*+.device-frame[data-v-c2eac128],.device-frame[data-v-c2eac128]+*{margin-top:40px}.device[data-v-c2eac128]{background-image:var(--device-light-url);background-repeat:no-repeat;background-size:100%;width:100%;height:100%;position:relative;pointer-events:none}@media screen{[data-color-scheme=dark] .device[data-v-c2eac128]{background-image:var(--device-dark-url,var(--device-light-url))}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .device[data-v-c2eac128]{background-image:var(--device-dark-url,var(--device-light-url))}}.no-device .device[data-v-c2eac128]{display:none}.device-screen.with-device[data-v-c2eac128]{position:absolute;left:var(--screen-left);top:var(--screen-top);height:var(--screen-height);width:var(--screen-width);display:flex}.device-screen.with-device>[data-v-c2eac128]{flex:1}.device-screen.with-device[data-v-c2eac128] img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:top;object-position:top;margin:0}.device-screen.with-device[data-v-c2eac128] video{-o-object-fit:contain;object-fit:contain;-o-object-position:top;object-position:top;width:100%;height:auto}.video-replay-container .control-button[data-v-3fb37a97]{display:flex;align-items:center;justify-content:center;cursor:pointer;margin-top:.5rem;-webkit-tap-highlight-color:rgba(0,0,0,0)}.video-replay-container .control-button svg.control-icon[data-v-3fb37a97]{height:12px;width:12px;margin-left:.3em}[data-v-6ab0b718] img,[data-v-6ab0b718] video{display:block;margin-left:auto;margin-right:auto;-o-object-fit:contain;object-fit:contain;max-width:100%}.asset[data-v-4f18340d]{margin-left:auto;margin-right:auto}*+.asset[data-v-4f18340d],.asset[data-v-4f18340d]+*{margin-top:var(--spacing-stacked-margin-xlarge)}[data-v-4f18340d] video{display:block;margin-left:auto;margin-right:auto;-o-object-fit:contain;object-fit:contain;max-width:100%}.column[data-v-0f654188]{grid-column:span var(--col-span);min-width:0}@media only screen and (max-width:735px){.column[data-v-0f654188]{grid-column:span 1}}.row[data-v-1bcb2d0f]{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;grid-gap:var(--col-gap,20px)}@media only screen and (max-width:735px){.row[data-v-1bcb2d0f]{grid-template-columns:1fr;grid-auto-flow:row}}.row.with-columns[data-v-1bcb2d0f]{--col-count:var(--col-count-large);grid-template-columns:repeat(var(--col-count),1fr);grid-auto-flow:row}@media only screen and (max-width:1250px){.row.with-columns[data-v-1bcb2d0f]{--col-count:var(--col-count-medium,var(--col-count-large))}}@media only screen and (max-width:735px){.row.with-columns[data-v-1bcb2d0f]{--col-count:var(--col-count-small)}}*+.TabNavigator[data-v-e671a734],*+.row[data-v-1bcb2d0f],.TabNavigator[data-v-e671a734]+*,.row[data-v-1bcb2d0f]+*{margin-top:var(--spacing-stacked-margin-xlarge)}.TabNavigator .tabnav[data-v-e671a734]{overflow:auto;white-space:nowrap}.TabNavigator .tabs-content-container[data-v-e671a734]{position:relative;overflow:hidden}.tabs--vertical[data-v-e671a734]{display:flex;flex-flow:row-reverse}@media only screen and (max-width:735px){.tabs--vertical[data-v-e671a734]{flex-flow:column-reverse}}.tabs--vertical .tabnav[data-v-e671a734]{width:30%;flex:0 0 auto;white-space:normal;margin:0}@media only screen and (max-width:735px){.tabs--vertical .tabnav[data-v-e671a734]{width:100%}}.tabs--vertical .tabs-content[data-v-e671a734]{flex:1 1 auto;min-width:0;padding-right:var(--spacing-stacked-margin-xlarge)}@media only screen and (max-width:735px){.tabs--vertical .tabs-content[data-v-e671a734]{padding-right:0;padding-bottom:var(--spacing-stacked-margin-large)}}.fade-enter-active[data-v-e671a734],.fade-leave-active[data-v-e671a734]{transition:opacity .2s ease-in-out}.fade-enter[data-v-e671a734],.fade-leave-to[data-v-e671a734]{opacity:0}.fade-leave-active[data-v-e671a734]{position:absolute;top:0;left:0;right:0}.tasklist[data-v-6a56a858]{--checkbox-width:1rem;--indent-width:calc(var(--checkbox-width)/2);--content-margin:var(--indent-width);list-style-type:none;margin-left:var(--indent-width)}p[data-v-6a56a858]{margin-left:var(--content-margin)}p[data-v-6a56a858]:only-child{--content-margin:calc(var(--checkbox-width) + var(--indent-width))}input[type=checkbox]+p[data-v-6a56a858]{display:inline-block}.pager-control[data-v-58c8390a]{align-items:center;background:var(--control-color-fill,var(--color-fill));border:1px solid var(--control-color-fill,var(--color-grid));border-radius:50%;display:flex;height:var(--control-size,1rem);justify-content:center;opacity:1;transition:opacity .15s ease-in-out;width:var(--control-size,1rem)}.pager-control[disabled][data-v-58c8390a]{opacity:.6}@media only screen and (min-width:1251px){.pager-control[disabled][data-v-58c8390a]{opacity:0}.with-compact-controls .pager-control[disabled][data-v-58c8390a]{opacity:.6}}.icon[data-v-58c8390a]{height:var(--control-icon-size,50%);width:var(--control-icon-size,50%)}.pager-control.next .icon[data-v-58c8390a]{transform:scale(1)}.pager-control.previous .icon[data-v-58c8390a]{transform:scaleX(-1)}.pager[data-v-1ed6aae0]{--control-size:3em;--control-color-fill:var(--color-fill-tertiary);--control-color-figure:currentColor;--indicator-size:0.65em;--indicator-color-fill-active:currentColor;--indicator-color-fill-inactive:var(--color-fill-tertiary);--color-svg-icon:currentColor;--gutter-width:80px}.viewport[data-v-1ed6aae0]{display:flex;overflow-x:auto;scroll-behavior:smooth;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}.viewport[data-v-1ed6aae0]::-webkit-scrollbar{height:0;width:0}.container[data-v-1ed6aae0]{position:relative}.gutter[data-v-1ed6aae0]{align-items:center;display:flex;justify-content:center;position:absolute;height:100%;top:0;width:var(--gutter-width);z-index:42}.with-compact-controls .gutter[data-v-1ed6aae0]{display:none}.gutter.left[data-v-1ed6aae0]{left:calc(var(--gutter-width)*-1)}.gutter.right[data-v-1ed6aae0]{right:calc(var(--gutter-width)*-1)}.page[data-v-1ed6aae0]{flex-shrink:0;margin-right:var(--gutter-width);position:relative;scroll-snap-align:start;transform:scale(1);transform-origin:center center;transition:transform .5s ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}@media(prefers-reduced-motion){.page[data-v-1ed6aae0]{transition:none}}.page.active[data-v-1ed6aae0]{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.gutter .pager-control[data-v-1ed6aae0]{margin-top:calc(var(--control-size)*-1)}.indicators[data-v-1ed6aae0]{display:flex;flex-wrap:wrap;gap:1em;justify-content:center;margin-top:1rem}.with-compact-controls .indicators[data-v-1ed6aae0]{display:none}.indicator[data-v-1ed6aae0]{background:var(--indicator-color-fill-inactive);border:1px solid var(--indicator-color-fill-inactive);border-radius:50%;color:currentColor;display:block;flex:0 0 auto;height:var(--indicator-size);width:var(--indicator-size)}.indicator.active[data-v-1ed6aae0]{background:var(--indicator-color-fill-active);border-color:var(--indicator-color-fill-active)}.compact-controls[data-v-1ed6aae0]{display:none;gap:1em;justify-content:flex-end}.with-compact-controls .compact-controls[data-v-1ed6aae0]{display:flex}.button-cta[data-v-c9c81868]{background:var(--colors-button-light-background,var(--color-button-background));border-color:var(--color-button-border,currentcolor);border-radius:var(--button-border-radius,var(--border-radius,4px));border-style:var(--button-border-style,none);border-width:var(--button-border-width,medium);color:var(--colors-button-text,var(--color-button-text));cursor:pointer;min-width:1.7647058824rem;padding:.2352941176rem .8823529412rem;text-align:center;white-space:nowrap;display:inline-block;font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.button-cta[data-v-c9c81868]:active{background:var(--colors-button-light-backgroundActive,var(--color-button-background-active));outline:none}.button-cta[data-v-c9c81868]:hover:not([disabled]){background:var(--colors-button-light-backgroundHover,var(--color-button-background-hover));text-decoration:none}.button-cta[data-v-c9c81868]:disabled{opacity:.32;cursor:default}.fromkeyboard .button-cta[data-v-c9c81868]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.button-cta.is-dark[data-v-c9c81868]{background:var(--colors-button-dark-background,#06f)}.button-cta.is-dark[data-v-c9c81868]:active{background:var(--colors-button-dark-backgroundActive,var(--color-button-background-active))}.button-cta.is-dark[data-v-c9c81868]:hover:not([disabled]){background:var(--colors-button-dark-backgroundHover,var(--color-button-background-hover))}.card-cover-wrap.rounded[data-v-28b14a83]{border-radius:var(--border-radius,4px);overflow:hidden}.card-cover[data-v-28b14a83]{background-color:var(--color-card-background);display:block;height:var(--card-cover-height,180px)}.card-cover.fallback[data-v-28b14a83],.card-cover[data-v-28b14a83] img{width:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;display:block;margin:0}.card-cover[data-v-28b14a83] img{height:100%}.card[data-v-0f7a4f31]{--margin-link:17px;overflow:hidden;display:flex;flex-direction:column;transition:box-shadow,transform .16s ease-out;will-change:box-shadow,transform;backface-visibility:hidden;border-radius:var(--border-radius,4px)}.card.large[data-v-0f7a4f31]{--margin-link:25.5px}.card.large.floating-style[data-v-0f7a4f31]{--margin-link:var(--spacing-stacked-margin-large)}.card[data-v-0f7a4f31]:hover{text-decoration:none}.card:hover .link[data-v-0f7a4f31]{text-decoration:underline}.card[data-v-0f7a4f31]:hover{transform:scale(1.007)}@media(prefers-reduced-motion:reduce){.card[data-v-0f7a4f31]:hover{transform:none}}.card.small[data-v-0f7a4f31]{--card-cover-height:235px}@media only screen and (max-width:1250px){.card.small[data-v-0f7a4f31]{--card-cover-height:163px}}.card.large[data-v-0f7a4f31]{--card-cover-height:359px}@media only screen and (max-width:1250px){.card.large[data-v-0f7a4f31]{--card-cover-height:249px}}.card.floating-style[data-v-0f7a4f31]{--color-card-shadow:transparent}.details[data-v-0f7a4f31]{flex-grow:1;display:flex;flex-direction:column;background-color:var(--color-card-background);padding:17px;position:relative;font-size:.8235294118rem;line-height:1.2857142857}.details[data-v-0f7a4f31],.large .details[data-v-0f7a4f31]{font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.large .details[data-v-0f7a4f31]{font-size:1rem;line-height:1.4705882353}@media only screen and (max-width:1250px){.large .details[data-v-0f7a4f31]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.floating-style .details[data-v-0f7a4f31]{--color-card-background:transparent;padding:17px 0}.eyebrow[data-v-0f7a4f31]{color:var(--color-card-eyebrow);display:block;margin-bottom:4px;font-size:.8235294118rem;line-height:1.2857142857}.eyebrow[data-v-0f7a4f31],.large .eyebrow[data-v-0f7a4f31]{font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.large .eyebrow[data-v-0f7a4f31]{font-size:1rem;line-height:1.2352941176}@media only screen and (max-width:1250px){.large .eyebrow[data-v-0f7a4f31]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title[data-v-0f7a4f31]{color:var(--color-card-content-text);font-size:1rem;line-height:1.2352941176;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){.title[data-v-0f7a4f31]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-0f7a4f31]{font-size:1rem;line-height:1.2352941176;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.large .title[data-v-0f7a4f31]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){.large .title[data-v-0f7a4f31]{font-size:1rem;line-height:1.2352941176;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.card-content[data-v-0f7a4f31]{flex-grow:1;color:var(--color-card-content-text);margin-top:4px}.link[data-v-0f7a4f31]{margin-top:var(--margin-link);display:flex;align-items:center}.link .link-icon[data-v-0f7a4f31]{height:.6em;width:.6em;margin-left:.3em}@media only screen and (max-width:735px){.card[data-v-0f7a4f31]{margin-left:auto;margin-right:auto}.card+.card[data-v-0f7a4f31]{margin-bottom:20px;margin-top:20px}.card.large[data-v-0f7a4f31],.card.small[data-v-0f7a4f31]{min-width:280px;--card-cover-height:227px}.card.large .link[data-v-0f7a4f31],.card.small .link[data-v-0f7a4f31]{margin-top:7px;position:relative}}.TopicTypeIcon[data-v-3b1b4787]{width:1em;height:1em;flex:0 0 auto;color:var(--icon-color,var(--color-figure-gray-secondary))}.TopicTypeIcon[data-v-3b1b4787] picture{flex:1}.TopicTypeIcon svg[data-v-3b1b4787],.TopicTypeIcon[data-v-3b1b4787] img{display:block;width:100%;height:100%}.nav-menu-items[data-v-a101abb4]{display:flex;justify-content:flex-end}.nav--in-breakpoint-range .nav-menu-items[data-v-a101abb4]{display:block;opacity:0;padding:1rem 1.8823529412rem 1.6470588235rem 1.8823529412rem;transform:translate3d(0,-50px,0);transition:transform 1s cubic-bezier(.07,1.06,.27,.95) .5s,opacity .7s cubic-bezier(.07,1.06,.27,.95) .2s}.nav--is-open.nav--in-breakpoint-range .nav-menu-items[data-v-a101abb4]{opacity:1;transform:translateZ(0);transition-delay:.2s,.4s}.nav--in-breakpoint-range .nav-menu-items[data-v-a101abb4]:not(:only-child):not(:last-child){padding-bottom:0}.nav--in-breakpoint-range .nav-menu-items[data-v-a101abb4]:not(:only-child):last-child{padding-top:0}.reference-card-grid-item[data-v-87dd3302]{--card-cover-height:auto}.reference-card-grid-item.card.large[data-v-87dd3302]{--card-cover-height:auto;min-width:0;max-width:none}.reference-card-grid-item[data-v-87dd3302] .card-cover{aspect-ratio:16/9}.reference-card-grid-item[data-v-87dd3302] .card-cover-wrap{border:1px solid var(--color-link-block-card-border)}.reference-card-grid-item__image[data-v-87dd3302]{display:flex;align-items:center;justify-content:center;font-size:80px;background-color:var(--color-fill-gray-quaternary)}.reference-card-grid-item__icon[data-v-87dd3302]{margin:0;display:flex;justify-content:center}.reference-card-grid-item__icon[data-v-87dd3302] .icon-inline{flex:1 1 auto}*+.links-block[data-v-b1a75c1c],.links-block[data-v-b1a75c1c]+*{margin-top:var(--spacing-stacked-margin-xlarge)}.topic-link-block[data-v-b1a75c1c]{margin-top:15px}.nav[data-v-40ae4336]{position:sticky;top:0;width:100%;height:3.0588235294rem;z-index:9997;--nav-padding:1.2941176471rem;color:var(--color-nav-color)}@media print{.nav[data-v-40ae4336]{position:relative}}@media only screen and (max-width:767px){.nav[data-v-40ae4336]{--nav-padding:0.9411764706rem;min-width:320px;height:2.8235294118rem}}.theme-dark.nav[data-v-40ae4336]{background:none;color:var(--color-nav-dark-color)}.nav__wrapper[data-v-40ae4336]{position:absolute;top:0;left:0;width:100%;height:auto;min-height:100%;z-index:1}.nav__background[data-v-40ae4336]{position:absolute;left:0;top:0;width:100%;height:100%;z-index:1;transition:background-color 0s ease-in;background-color:var(--color-nav-background,none)}.nav__background[data-v-40ae4336]:after{background-color:var(--color-nav-keyline)}.nav--is-sticking.nav__background[data-v-40ae4336]{background-color:none}.nav--no-bg-transition .nav__background[data-v-40ae4336]{transition:none!important}.nav--solid-background .nav__background[data-v-40ae4336]{background-color:var(--color-nav-solid-background);-webkit-backdrop-filter:none;backdrop-filter:none}.nav--is-open.nav--solid-background .nav__background[data-v-40ae4336],.nav--is-sticking.nav--solid-background .nav__background[data-v-40ae4336]{background-color:var(--color-nav-solid-background)}.nav--is-open.theme-dark.nav--solid-background .nav__background[data-v-40ae4336],.nav--is-sticking.theme-dark.nav--solid-background .nav__background[data-v-40ae4336],.theme-dark.nav--solid-background .nav__background[data-v-40ae4336]{background-color:var(--color-nav-dark-solid-background)}.nav--in-breakpoint-range .nav__background[data-v-40ae4336]{min-height:2.8235294118rem;transition:background-color 0s ease .7s}.nav--is-sticking .nav__background[data-v-40ae4336]{background-color:var(--color-nav-expanded);max-height:none;transition:background-color 0s ease;transition-property:background-color,-webkit-backdrop-filter;transition-property:background-color,backdrop-filter;transition-property:background-color,backdrop-filter,-webkit-backdrop-filter}.nav--is-sticking .nav__background[data-v-40ae4336]:after{background-color:var(--color-nav-sticking-expanded-keyline)}@supports((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.nav--is-sticking .nav__background[data-v-40ae4336]{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:var(--color-nav-uiblur-stuck)}}.theme-dark.nav--is-sticking .nav__background[data-v-40ae4336]{background-color:var(--color-nav-dark-stuck)}@supports((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.theme-dark.nav--is-sticking .nav__background[data-v-40ae4336]{background-color:var(--color-nav-dark-uiblur-stuck)}}.nav--is-open .nav__background[data-v-40ae4336]{background-color:var(--color-nav-expanded);max-height:none;transition:background-color 0s ease;transition-property:background-color,-webkit-backdrop-filter;transition-property:background-color,backdrop-filter;transition-property:background-color,backdrop-filter,-webkit-backdrop-filter}.nav--is-open .nav__background[data-v-40ae4336]:after{background-color:var(--color-nav-sticking-expanded-keyline)}@supports((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.nav--is-open .nav__background[data-v-40ae4336]{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:var(--color-nav-uiblur-expanded)}}.theme-dark.nav--is-open .nav__background[data-v-40ae4336]{background-color:var(--color-nav-dark-expanded)}@supports((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.theme-dark.nav--is-open .nav__background[data-v-40ae4336]{background-color:var(--color-nav-dark-uiblur-expanded)}}.theme-dark .nav__background[data-v-40ae4336]:after{background-color:var(--color-nav-dark-keyline)}.nav--is-open.theme-dark .nav__background[data-v-40ae4336]:after,.nav--is-sticking.theme-dark .nav__background[data-v-40ae4336]:after{background-color:var(--color-nav-dark-sticking-expanded-keyline)}.nav__background[data-v-40ae4336]:after{content:"";display:block;position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:980px;height:1px;z-index:1}@media only screen and (max-width:1023px){.nav__background[data-v-40ae4336]:after{width:100%}}.nav--noborder .nav__background[data-v-40ae4336]:after{display:none}.nav--is-sticking.nav--noborder .nav__background[data-v-40ae4336]:after{display:block}.nav--fullwidth-border .nav__background[data-v-40ae4336]:after,.nav--is-open .nav__background[data-v-40ae4336]:after,.nav--is-sticking .nav__background[data-v-40ae4336]:after,.nav--solid-background .nav__background[data-v-40ae4336]:after{width:100%}.nav-overlay[data-v-40ae4336]{position:fixed;left:0;right:0;top:0;display:block;opacity:0}.nav--is-open .nav-overlay[data-v-40ae4336]{background-color:rgba(51,51,51,.4);transition:opacity .7s cubic-bezier(.07,1.06,.27,.95) .2s;bottom:0;opacity:1}.nav-wrapper[data-v-40ae4336]{position:absolute;top:0;left:0;width:100%;height:auto;min-height:100%;z-index:1}.pre-title[data-v-40ae4336]{display:flex}.nav-content[data-v-40ae4336]{display:flex;padding:0 var(--nav-padding);max-width:980px;margin:0 auto;position:relative;z-index:2;justify-content:space-between}.nav--is-wide-format .nav-content[data-v-40ae4336]{box-sizing:border-box;max-width:1920px;margin-left:auto;margin-right:auto}@supports(padding:calc(max(0px))){.nav-content[data-v-40ae4336]{padding-left:max(var(--nav-padding),env(safe-area-inset-left));padding-right:max(var(--nav-padding),env(safe-area-inset-right))}}.nav--in-breakpoint-range .nav-content[data-v-40ae4336]{display:grid;grid-template-columns:auto 1fr auto;grid-auto-rows:minmax(min-content,max-content);grid-template-areas:"pre-title title actions" "menu menu menu"}.nav-menu[data-v-40ae4336]{font-size:.7058823529rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);flex:1 1 auto;display:flex;justify-content:flex-end;min-width:0}@media only screen and (max-width:767px){.nav-menu[data-v-40ae4336]{font-size:.8235294118rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.nav--in-breakpoint-range .nav-menu[data-v-40ae4336]{font-size:.8235294118rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);grid-area:menu}.nav-menu-tray[data-v-40ae4336]{align-items:center;display:flex;justify-content:space-between}.nav--in-breakpoint-range .nav-menu-tray[data-v-40ae4336]{display:block;overflow:hidden;pointer-events:none;visibility:hidden;max-height:0;transition:max-height .4s ease-in 0s,visibility 0s linear 1s;width:100%}.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-40ae4336]{max-height:calc(100vh - 5.64706rem);overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:auto;visibility:visible;transition-delay:.2s,0s}.nav--is-transitioning.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-40ae4336]{overflow-y:hidden}.nav--is-sticking.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-40ae4336]{max-height:calc(100vh - 2.82353rem)}.nav-actions[data-v-40ae4336]{display:flex;align-items:center}.nav--in-breakpoint-range .nav-actions[data-v-40ae4336]{grid-area:actions;justify-content:flex-end}.nav--in-breakpoint-range .pre-title+.nav-title[data-v-40ae4336]{grid-area:title}.nav--is-wide-format.nav--in-breakpoint-range .pre-title+.nav-title[data-v-40ae4336]{width:100%}.nav-title[data-v-40ae4336]{height:3.0588235294rem;font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;align-items:center;white-space:nowrap;box-sizing:border-box}@media only screen and (max-width:767px){.nav-title[data-v-40ae4336]{padding-top:0;height:2.8235294118rem;width:90%}}.nav-title[data-v-40ae4336] span{line-height:normal}.nav-title a[data-v-40ae4336]{letter-spacing:inherit;line-height:normal;margin:0;text-decoration:none;white-space:nowrap}.nav-title a[data-v-40ae4336]:hover{text-decoration:none}@media only screen and (max-width:767px){.nav-title a[data-v-40ae4336]{display:flex}}.nav-title a[data-v-40ae4336],.nav-title[data-v-40ae4336]{color:var(--color-figure-gray);transition:color 0s ease-in}.nav--is-open.theme-dark .nav-title a[data-v-40ae4336],.nav--is-open.theme-dark .nav-title[data-v-40ae4336],.nav--is-sticking.theme-dark .nav-title a[data-v-40ae4336],.nav--is-sticking.theme-dark .nav-title[data-v-40ae4336],.theme-dark .nav-title a[data-v-40ae4336],.theme-dark .nav-title[data-v-40ae4336]{color:var(--color-nav-dark-link-color)}.nav-ax-toggle[data-v-40ae4336]{display:none;position:absolute;top:0;left:0;width:1px;height:1px;z-index:10}.nav-ax-toggle[data-v-40ae4336]:focus{outline-offset:-6px;width:100%;height:100%}.nav--in-breakpoint-range .nav-ax-toggle[data-v-40ae4336]{display:block}.nav-menucta[data-v-40ae4336]{cursor:pointer;display:none;align-items:center;overflow:hidden;width:1.1764705882rem;-webkit-tap-highlight-color:rgba(0,0,0,0);height:2.8235294118rem}.nav--in-breakpoint-range .nav-menucta[data-v-40ae4336]{display:flex}.nav-menucta-chevron[data-v-40ae4336]{display:block;position:relative;width:100%;height:.7058823529rem;transition:transform .3s linear}.nav-menucta-chevron[data-v-40ae4336]:after,.nav-menucta-chevron[data-v-40ae4336]:before{content:"";display:block;position:absolute;top:.5882352941rem;width:.7058823529rem;height:.0588235294rem;transition:transform .3s linear;background:var(--color-figure-gray)}.nav-menucta-chevron[data-v-40ae4336]:before{right:50%;border-radius:.5px 0 0 .5px}.nav-menucta-chevron[data-v-40ae4336]:after{left:50%;border-radius:0 .5px .5px 0}.nav-menucta-chevron[data-v-40ae4336]:before{transform-origin:100% 100%;transform:rotate(40deg) scaleY(1.5)}.nav-menucta-chevron[data-v-40ae4336]:after{transform-origin:0 100%;transform:rotate(-40deg) scaleY(1.5)}.nav--is-open .nav-menucta-chevron[data-v-40ae4336]{transform:scaleY(-1)}.theme-dark .nav-menucta-chevron[data-v-40ae4336]:after,.theme-dark .nav-menucta-chevron[data-v-40ae4336]:before{background:var(--color-nav-dark-link-color)}[data-v-40ae4336] .nav-menu-link{color:var(--color-nav-link-color)}[data-v-40ae4336] .nav-menu-link:hover{color:var(--color-nav-link-color-hover);text-decoration:none}.theme-dark[data-v-40ae4336] .nav-menu-link{color:var(--color-nav-dark-link-color)}.theme-dark[data-v-40ae4336] .nav-menu-link:hover{color:var(--color-nav-dark-link-color-hover)}[data-v-40ae4336] .nav-menu-link.current{color:var(--color-nav-current-link);cursor:default}[data-v-40ae4336] .nav-menu-link.current:hover{color:var(--color-nav-current-link)}.theme-dark[data-v-40ae4336] .nav-menu-link.current,.theme-dark[data-v-40ae4336] .nav-menu-link.current:hover{color:var(--color-nav-dark-current-link)}.nav-menu-item[data-v-296e4e0c]{margin-left:1.4117647059rem;list-style:none;min-width:0}.nav--in-breakpoint-range .nav-menu-item[data-v-296e4e0c]{margin-left:0;width:100%;min-height:2.4705882353rem}.nav--in-breakpoint-range .nav-menu-item[data-v-296e4e0c]:first-child .nav-menu-link{border-top:0}.nav--in-breakpoint-range .nav-menu-item--animated[data-v-296e4e0c]{opacity:0;transform:none;transition:.5s ease;transition-property:transform,opacity}.nav--is-open.nav--in-breakpoint-range .nav-menu-item--animated[data-v-296e4e0c]{opacity:1;transform:translateZ(0);transition-delay:0s}.thematic-break[data-v-62d2922a]{border-top-color:var(--color-grid,currentColor);border-top-style:solid;border-width:1px 0 0 0}*+.thematic-break[data-v-62d2922a],.thematic-break[data-v-62d2922a]+*{margin-top:var(--spacing-stacked-margin-xlarge)} \ No newline at end of file diff --git a/docs/css/989.4f123103.css b/docs/css/989.4f123103.css new file mode 100644 index 0000000..cced45b --- /dev/null +++ b/docs/css/989.4f123103.css @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */.badge[data-v-04624022]{--badge-color:var(--color-badge-default);--badge-dark-color:var(--color-badge-dark-default);font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:inline-block;padding:2px 4px;white-space:nowrap;border-radius:var(--badge-border-radius,1px);border-style:var(--badge-border-style,none);border-width:var(--badge-border-width,1px);margin:auto;margin-left:5px;color:var(--colors-badge-text,var(--color-badge-text));background-color:var(--badge-color)}@media screen{[data-color-scheme=dark] .badge[data-v-04624022]{background-color:var(--badge-dark-color)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .badge[data-v-04624022]{background-color:var(--badge-dark-color)}}.badge-deprecated[data-v-04624022]{--badge-color:var(--color-badge-deprecated);--badge-dark-color:var(--color-badge-dark-deprecated)}.badge-beta[data-v-04624022]{--badge-color:var(--color-badge-beta);--badge-dark-color:var(--color-badge-dark-beta)}[data-v-3a32ffd0] .code-listing{background:var(--background,var(--color-code-background));color:var(--text,var(--color-code-plain));border-color:var(--colors-grid,var(--color-grid));border-width:var(--code-border-width,1px);border-style:var(--code-border-style,solid)}[data-v-3a32ffd0] .code-listing pre{padding:var(--code-block-style-elements-padding)}[data-v-3a32ffd0] .code-listing pre>code{font-size:.8823529412rem;line-height:1.6666666667;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}[data-v-3a32ffd0] *+.code-listing,[data-v-3a32ffd0] *+.endpoint-example,[data-v-3a32ffd0] *+.inline-image-container,[data-v-3a32ffd0] *+aside,[data-v-3a32ffd0] *+figure,[data-v-3a32ffd0] .code-listing+*,[data-v-3a32ffd0] .endpoint-example+*,[data-v-3a32ffd0] .inline-image-container+*,[data-v-3a32ffd0] aside+*,[data-v-3a32ffd0] figure+*{margin-top:var(--spacing-stacked-margin-xlarge)}[data-v-3a32ffd0] *+dl,[data-v-3a32ffd0] dl+*{margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] img{display:block;margin:auto;max-width:100%}[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ol li:not(:first-child),[data-v-3a32ffd0] ul,[data-v-3a32ffd0] ul li:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}@media only screen and (max-width:735px){[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ul{margin-left:1.25rem}}[data-v-3a32ffd0] dt:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] dd{margin-left:2em}.topic-icon-wrapper[data-v-55f9d05d]{display:flex;align-items:center;justify-content:center;height:1.4705882353rem;flex:0 0 1.294rem;width:1.294rem;margin-right:1rem}.topic-icon[data-v-55f9d05d]{height:.8823529412rem;transform:scale(1);-webkit-transform:scale(1);overflow:visible}.topic-icon[data-v-55f9d05d] img{margin:0;display:block;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.topic-icon.curly-brackets-icon[data-v-55f9d05d]{height:1rem}.token-method[data-v-295ad0ff]{font-weight:700}.token-keyword[data-v-295ad0ff]{color:var(--syntax-keyword,var(--color-syntax-keywords))}.token-number[data-v-295ad0ff]{color:var(--syntax-number,var(--color-syntax-numbers))}.token-string[data-v-295ad0ff]{color:var(--syntax-string,var(--color-syntax-strings))}.attribute-link[data-v-295ad0ff],.token-attribute[data-v-295ad0ff]{color:var(--syntax-attribute,var(--color-syntax-keywords))}.token-internalParam[data-v-295ad0ff]{color:var(--color-syntax-param-internal-name)}.type-identifier-link[data-v-295ad0ff]{color:var(--syntax-type,var(--color-syntax-other-type-names))}.token-removed[data-v-295ad0ff]{background-color:var(--color-highlight-red)}.token-added[data-v-295ad0ff]{background-color:var(--color-highlight-green)}.decorator[data-v-17c84f82],.label[data-v-17c84f82]{color:var(--colors-secondary-label,var(--color-secondary-label))}.label[data-v-17c84f82]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.empty-token[data-v-17c84f82]{font-size:0}.empty-token[data-v-17c84f82]:after{content:" ";font-size:1rem}.abstract[data-v-0d9c6bcc],.link-block[data-v-0d9c6bcc] .badge{margin-left:2.294rem}.link-block .badge+.badge[data-v-0d9c6bcc]{margin-left:1rem}.link[data-v-0d9c6bcc]{display:flex}.link-block .badge[data-v-0d9c6bcc]{margin-top:.5rem}.link-block.has-inline-element[data-v-0d9c6bcc]{display:flex;align-items:flex-start;flex-flow:row wrap}.link-block.has-inline-element .badge[data-v-0d9c6bcc]{margin-left:1rem;margin-top:0}.link-block .has-adjacent-elements[data-v-0d9c6bcc]{padding-top:5px;padding-bottom:5px;display:inline-flex}.link-block[data-v-0d9c6bcc],.link[data-v-0d9c6bcc]{box-sizing:inherit}.link-block.changed[data-v-0d9c6bcc],.link.changed[data-v-0d9c6bcc]{padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.link-block.changed.changed[data-v-0d9c6bcc],.link.changed.changed[data-v-0d9c6bcc]{padding-right:1rem}@media only screen and (max-width:735px){.link-block.changed[data-v-0d9c6bcc],.link.changed[data-v-0d9c6bcc]{padding-left:0;padding-right:0}.link-block.changed.changed[data-v-0d9c6bcc],.link.changed.changed[data-v-0d9c6bcc]{padding-right:17px;padding-left:2.1764705882rem}.link-block.changed[data-v-0d9c6bcc],.link.changed[data-v-0d9c6bcc]{padding-left:0;padding-right:0}}.abstract .topic-required[data-v-0d9c6bcc]:not(:first-child){margin-top:4px}.topic-required[data-v-0d9c6bcc]{font-size:.8em}.deprecated[data-v-0d9c6bcc]{text-decoration:line-through} \ No newline at end of file diff --git a/docs/css/documentation-topic.91c07ba9.css b/docs/css/documentation-topic.91c07ba9.css new file mode 100644 index 0000000..87fa981 --- /dev/null +++ b/docs/css/documentation-topic.91c07ba9.css @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */.betainfo[data-v-ba3b3cc0]{font-size:.9411764706rem;padding:3rem 0;background-color:var(--color-fill-secondary)}.full-width-container .betainfo-container[data-v-ba3b3cc0]{max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .betainfo-container[data-v-ba3b3cc0]{padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .betainfo-container[data-v-ba3b3cc0]{max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .betainfo-container[data-v-ba3b3cc0]{max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .betainfo-container[data-v-ba3b3cc0]{width:auto;padding-left:20px;padding-right:20px}}.static-width-container .betainfo-container[data-v-ba3b3cc0]{margin-left:auto;margin-right:auto;width:1536px;width:980px}@media only screen and (max-width:1250px){.static-width-container .betainfo-container[data-v-ba3b3cc0]{width:692px}}@media only screen and (max-width:735px){.static-width-container .betainfo-container[data-v-ba3b3cc0]{width:87.5%}}@media only screen and (max-width:320px){.static-width-container .betainfo-container[data-v-ba3b3cc0]{width:215px}}.betainfo-label[data-v-ba3b3cc0]{font-weight:600;font-size:.9411764706rem}.betainfo-content[data-v-ba3b3cc0] p{margin-bottom:10px}a[data-v-2ca5e993]{text-decoration:underline;color:inherit;font-weight:600}.summary-section[data-v-3aa6f694]:last-of-type{margin-right:0}@media only screen and (max-width:735px){.summary-section[data-v-3aa6f694]{margin-right:0}}.title[data-v-246c819c]{color:var(--colors-text,var(--color-text));font-size:.8235294118rem;margin-right:.5rem;text-rendering:optimizeLegibility}.language[data-v-0e39c0ba]{padding-bottom:10px;justify-content:flex-end}.language-list[data-v-0e39c0ba],.language[data-v-0e39c0ba]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-top:0;display:flex;align-items:center}.language-option.swift[data-v-0e39c0ba]{padding-right:10px;border-right:1px solid var(--colors-secondary-label,var(--color-secondary-label))}.language-option.objc[data-v-0e39c0ba]{padding-left:10px}.view-more-link[data-v-3f54e653]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;flex-flow:row-reverse;margin-bottom:1.3rem}.documentation-hero[data-v-283b44ff]{color:var(--color-documentation-intro-figure,var(--color-figure-gray));overflow:hidden;text-align:left;position:relative;padding-right:var(--doc-hero-right-offset)}.documentation-hero[data-v-283b44ff]:before{content:"";background:var(--standard-accent-color,var(--color-documentation-intro-fill,var(--color-fill-tertiary)));position:absolute;width:100%;height:100%}.documentation-hero[data-v-283b44ff]:after{background:transparent;opacity:.85;width:100%;position:absolute;content:"";height:100%;left:0;top:0}@media screen{[data-color-scheme=dark] .documentation-hero[data-v-283b44ff]:after{opacity:.55}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .documentation-hero[data-v-283b44ff]:after{opacity:.55}}.documentation-hero .icon[data-v-283b44ff]{position:absolute;margin-top:10px;margin-right:25px;right:0;width:250px;height:calc(100% - 20px);box-sizing:border-box}@media only screen and (max-width:735px){.documentation-hero .icon[data-v-283b44ff]{display:none}}.documentation-hero .background-icon[data-v-283b44ff]{color:var(--color-documentation-intro-accent,var(--color-figure-gray-secondary));display:block;width:250px;height:auto;opacity:.15;mix-blend-mode:normal;position:absolute;top:50%;left:0;transform:translateY(-50%);max-height:100%}.documentation-hero .background-icon[data-v-283b44ff] img,.documentation-hero .background-icon[data-v-283b44ff] svg{width:100%;height:100%}@media screen{[data-color-scheme=dark] .documentation-hero .background-icon[data-v-283b44ff]{mix-blend-mode:normal;opacity:.15}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .documentation-hero .background-icon[data-v-283b44ff]{mix-blend-mode:normal;opacity:.15}}.documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){padding-top:2.3529411765rem;padding-bottom:2.3529411765rem;position:relative;z-index:1}.full-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){width:auto;padding-left:20px;padding-right:20px}}.static-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){margin-left:auto;margin-right:auto;width:1536px;width:980px}@media only screen and (max-width:1250px){.static-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){width:692px}}@media only screen and (max-width:735px){.static-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){width:87.5%}}@media only screen and (max-width:320px){.static-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){width:215px}}.documentation-hero .minimized-hero[data-v-283b44ff]{padding:1.3em 1.4em;position:relative;z-index:1}.documentation-hero__above-content[data-v-283b44ff]{position:relative;z-index:1}.documentation-hero--disabled[data-v-283b44ff]{background:none;color:var(--colors-text,var(--color-text))}.documentation-hero--disabled[data-v-283b44ff]:after,.documentation-hero--disabled[data-v-283b44ff]:before{content:none}.short-hero[data-v-283b44ff]{padding-top:3.5294117647rem;padding-bottom:3.5294117647rem}.extra-bottom-padding[data-v-283b44ff]{padding-bottom:3.8235294118rem}ul[data-v-068842ec]{list-style-type:none;margin:0}ul li:first-child .base-link[data-v-068842ec]{margin-top:0}.parent-item .base-link[data-v-068842ec]{font-weight:700}.base-link[data-v-068842ec]{color:var(--color-figure-gray-secondary);font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:inline-block;margin:5px 0;transition:color .15s ease-in;max-width:100%}.active .base-link[data-v-068842ec]{color:var(--color-text)}[data-v-3a32ffd0] .code-listing{background:var(--background,var(--color-code-background));color:var(--text,var(--color-code-plain));border-color:var(--colors-grid,var(--color-grid));border-width:var(--code-border-width,1px);border-style:var(--code-border-style,solid)}[data-v-3a32ffd0] .code-listing pre{padding:var(--code-block-style-elements-padding)}[data-v-3a32ffd0] .code-listing pre>code{font-size:.8823529412rem;line-height:1.6666666667;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}[data-v-3a32ffd0] *+.code-listing,[data-v-3a32ffd0] *+.endpoint-example,[data-v-3a32ffd0] *+.inline-image-container,[data-v-3a32ffd0] *+aside,[data-v-3a32ffd0] *+figure,[data-v-3a32ffd0] .code-listing+*,[data-v-3a32ffd0] .endpoint-example+*,[data-v-3a32ffd0] .inline-image-container+*,[data-v-3a32ffd0] aside+*,[data-v-3a32ffd0] figure+*{margin-top:var(--spacing-stacked-margin-xlarge)}[data-v-3a32ffd0] *+dl,[data-v-3a32ffd0] dl+*{margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] img{display:block;margin:auto;max-width:100%}[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ol li:not(:first-child),[data-v-3a32ffd0] ul,[data-v-3a32ffd0] ul li:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}@media only screen and (max-width:735px){[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ul{margin-left:1.25rem}}[data-v-3a32ffd0] dt:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] dd{margin-left:2em}.conditional-constraints[data-v-4c6f3ed1] code{color:var(--colors-secondary-label,var(--color-secondary-label))}.token-method[data-v-295ad0ff]{font-weight:700}.token-keyword[data-v-295ad0ff]{color:var(--syntax-keyword,var(--color-syntax-keywords))}.token-number[data-v-295ad0ff]{color:var(--syntax-number,var(--color-syntax-numbers))}.token-string[data-v-295ad0ff]{color:var(--syntax-string,var(--color-syntax-strings))}.attribute-link[data-v-295ad0ff],.token-attribute[data-v-295ad0ff]{color:var(--syntax-attribute,var(--color-syntax-keywords))}.token-internalParam[data-v-295ad0ff]{color:var(--color-syntax-param-internal-name)}.type-identifier-link[data-v-295ad0ff]{color:var(--syntax-type,var(--color-syntax-other-type-names))}.token-removed[data-v-295ad0ff]{background-color:var(--color-highlight-red)}.token-added[data-v-295ad0ff]{background-color:var(--color-highlight-green)}.source[data-v-dc9cfb3a]{background:var(--background,var(--color-code-background));border-color:var(--color-grid);color:var(--text,var(--color-code-plain));border-style:solid;border-width:1px;padding:var(--code-block-style-elements-padding);speak:literal-punctuation;line-height:25px;filter:blur(0)}.source.displays-multiple-lines[data-v-dc9cfb3a],.source[data-v-dc9cfb3a]{border-radius:var(--border-radius,4px)}.source>code[data-v-dc9cfb3a]{font-size:.8823529412rem;line-height:1.6666666667;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace);display:block}.platforms[data-v-f961f3da]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-bottom:.45rem;margin-top:var(--spacing-stacked-margin-xlarge)}.changed .platforms[data-v-f961f3da]{padding-left:.588rem}.platforms[data-v-f961f3da]:first-of-type{margin-top:1rem}.source[data-v-f961f3da]{transition:margin .3s linear}.platforms+.source[data-v-f961f3da]{margin:0}.declaration-pill:not(.declaration-pill--expanded) .source[data-v-f961f3da] .highlighted{background:unset;font-weight:400}.declaration-pill--expanded .source[data-v-f961f3da]{border-width:1px}.declaration-pill--expanded .source[data-v-f961f3da] a{pointer-events:none}.declaration-pill--expanded.selected-declaration .source[data-v-f961f3da]{border-color:var(--color-focus-border-color,var(--color-focus-border-color))}.declaration-pill--expanded:not(.selected-declaration) .source[data-v-f961f3da]{background:none}.changed .source[data-v-f961f3da]{background:none;border:none;margin-top:0;margin-bottom:0;margin-left:2.1764705882rem;padding-left:0}.expand-enter-active,.expand-leave-active{transition:height .3s ease-in-out;overflow:hidden}.expand-enter,.expand-leave-to{height:0}.declaration-pill--expanded[data-v-18e7c20c]{transition-timing-function:linear;transition-property:opacity,height;margin:var(--declaration-code-listing-margin)}.declaration-pill--expanded>button[data-v-18e7c20c]{display:block;width:100%}.declaration-pill--expanded.expand-enter[data-v-18e7c20c],.declaration-pill--expanded.expand-leave-to[data-v-18e7c20c]{opacity:0}.declaration-pill--expanded.expand-enter .source[data-v-18e7c20c],.declaration-pill--expanded.expand-leave-to .source[data-v-18e7c20c]{margin:0}.declaration-pill--expanded[data-v-18e7c20c] .highlighted{background:var(--color-syntax-highlighted,mark);font-weight:600;transition:background .3s linear,font-weight .3s linear}.changed.selected-declaration[data-v-18e7c20c],.declaration-diff[data-v-0c2301a5]{background:var(--background,var(--color-code-background))}.declaration-diff-version[data-v-0c2301a5]{padding-left:.588rem;padding-left:2.1764705882rem;font-size:1rem;line-height:1.5294117647;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray-secondary);margin:0}.declaration-diff-current[data-v-0c2301a5]{padding-top:8px;padding-bottom:5px}.declaration-diff-previous[data-v-0c2301a5]{padding-top:5px;padding-bottom:8px;background-color:var(--color-changes-modified-previous-background);border-radius:0 0 var(--border-radius,4px) var(--border-radius,4px);position:relative}.declaration-source-link[data-v-5863919c]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;align-items:center;margin-top:var(--declaration-source-link-margin,var(--spacing-stacked-margin-large))}.declaration-icon[data-v-5863919c]{width:1em;margin-right:5px}.conditional-constraints[data-v-722d45cf],.declaration-list[data-v-722d45cf]:not(:first-child){margin-top:var(--declaration-conditional-constraints-margin,20px)}.abstract[data-v-f3f57cbe]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){.abstract[data-v-f3f57cbe]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-f3f57cbe] p:last-child{margin-bottom:0}.full-width-container .container[data-v-0e6b292c]:not(.minimized-container){max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .container[data-v-0e6b292c]:not(.minimized-container){padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .container[data-v-0e6b292c]:not(.minimized-container){max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .container[data-v-0e6b292c]:not(.minimized-container){max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .container[data-v-0e6b292c]:not(.minimized-container){width:auto;padding-left:20px;padding-right:20px}}.static-width-container .container[data-v-0e6b292c]:not(.minimized-container){margin-left:auto;margin-right:auto;width:1536px;width:980px}@media only screen and (max-width:1250px){.static-width-container .container[data-v-0e6b292c]:not(.minimized-container){width:692px}}@media only screen and (max-width:735px){.static-width-container .container[data-v-0e6b292c]:not(.minimized-container){width:87.5%}}@media only screen and (max-width:320px){.static-width-container .container[data-v-0e6b292c]:not(.minimized-container){width:215px}}.container[data-v-0e6b292c]{--section-spacing-single-side:40px;padding-bottom:var(--section-spacing-single-side)}.container.minimized-container[data-v-0e6b292c]{--section-spacing-single-side:1.5em}.container.minimized-container .contenttable-section[data-v-0e6b292c],.title[data-v-0e6b292c]{padding-top:var(--section-spacing-single-side)}.title[data-v-0e6b292c]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);border-top-color:var(--color-grid);border-top-style:solid;border-top-width:var(--content-table-title-border-width,1px)}@media only screen and (max-width:1250px){.title[data-v-0e6b292c]{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-0e6b292c]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title+.contenttable-section[data-v-1b0546d9]{margin-top:0}.contenttable-section[data-v-1b0546d9]{align-items:baseline;padding-top:2.353rem}.contenttable-section[data-v-1b0546d9]:last-child{margin-bottom:0}[data-v-1b0546d9] .contenttable-title{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-1b0546d9] .contenttable-title{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.contenttable-section[data-v-1b0546d9]{align-items:unset;border-top:none;display:inherit;margin:0}.section-content[data-v-1b0546d9],.section-title[data-v-1b0546d9]{padding:0}[data-v-1b0546d9] .contenttable-title{margin:0 0 2.353rem 0;padding-bottom:.5rem}}.badge[data-v-04624022]{--badge-color:var(--color-badge-default);--badge-dark-color:var(--color-badge-dark-default);font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:inline-block;padding:2px 4px;white-space:nowrap;border-radius:var(--badge-border-radius,1px);border-style:var(--badge-border-style,none);border-width:var(--badge-border-width,1px);margin:auto;margin-left:5px;color:var(--colors-badge-text,var(--color-badge-text));background-color:var(--badge-color)}@media screen{[data-color-scheme=dark] .badge[data-v-04624022]{background-color:var(--badge-dark-color)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .badge[data-v-04624022]{background-color:var(--badge-dark-color)}}.badge-deprecated[data-v-04624022]{--badge-color:var(--color-badge-deprecated);--badge-dark-color:var(--color-badge-dark-deprecated)}.badge-beta[data-v-04624022]{--badge-color:var(--color-badge-beta);--badge-dark-color:var(--color-badge-dark-beta)}.topic-icon-wrapper[data-v-55f9d05d]{display:flex;align-items:center;justify-content:center;height:1.4705882353rem;flex:0 0 1.294rem;width:1.294rem;margin-right:1rem}.topic-icon[data-v-55f9d05d]{height:.8823529412rem;transform:scale(1);-webkit-transform:scale(1);overflow:visible}.topic-icon[data-v-55f9d05d] img{margin:0;display:block;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.topic-icon.curly-brackets-icon[data-v-55f9d05d]{height:1rem}.decorator[data-v-17c84f82],.label[data-v-17c84f82]{color:var(--colors-secondary-label,var(--color-secondary-label))}.label[data-v-17c84f82]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.empty-token[data-v-17c84f82]{font-size:0}.empty-token[data-v-17c84f82]:after{content:" ";font-size:1rem}.abstract[data-v-0d9c6bcc],.link-block[data-v-0d9c6bcc] .badge{margin-left:2.294rem}.link-block .badge+.badge[data-v-0d9c6bcc]{margin-left:1rem}.link[data-v-0d9c6bcc]{display:flex}.link-block .badge[data-v-0d9c6bcc]{margin-top:.5rem}.link-block.has-inline-element[data-v-0d9c6bcc]{display:flex;align-items:flex-start;flex-flow:row wrap}.link-block.has-inline-element .badge[data-v-0d9c6bcc]{margin-left:1rem;margin-top:0}.link-block .has-adjacent-elements[data-v-0d9c6bcc]{padding-top:5px;padding-bottom:5px;display:inline-flex}.link-block[data-v-0d9c6bcc],.link[data-v-0d9c6bcc]{box-sizing:inherit}.link-block.changed[data-v-0d9c6bcc],.link.changed[data-v-0d9c6bcc]{padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.link-block.changed.changed[data-v-0d9c6bcc],.link.changed.changed[data-v-0d9c6bcc]{padding-right:1rem}@media only screen and (max-width:735px){.link-block.changed[data-v-0d9c6bcc],.link.changed[data-v-0d9c6bcc]{padding-left:0;padding-right:0}.link-block.changed.changed[data-v-0d9c6bcc],.link.changed.changed[data-v-0d9c6bcc]{padding-right:17px;padding-left:2.1764705882rem}.link-block.changed[data-v-0d9c6bcc],.link.changed[data-v-0d9c6bcc]{padding-left:0;padding-right:0}}.abstract .topic-required[data-v-0d9c6bcc]:not(:first-child){margin-top:4px}.topic-required[data-v-0d9c6bcc]{font-size:.8em}.deprecated[data-v-0d9c6bcc]{text-decoration:line-through}.section-content>.content[data-v-1c2724f5],.topic[data-v-1c2724f5]{margin-top:15px}.no-title .section-content>.content[data-v-1c2724f5]:first-child,.no-title .topic[data-v-1c2724f5]:first-child{margin-top:0}.property-metadata[data-v-f911f232]{color:var(--color-figure-gray-secondary)}.parameter-attributes[data-v-c0edcb84]{margin-left:1rem}[data-v-c0edcb84] .property-metadata{color:currentColor}.datalist dd{padding-left:2rem}.datalist dt{font-weight:600;padding-left:1rem;padding-top:var(--spacing-param)}.datalist dt:first-of-type{padding-top:0}.type[data-v-791bac44]:first-letter{text-transform:capitalize}.detail-type[data-v-d66cd00c]{font-weight:600;padding-left:1rem;padding-top:var(--spacing-param)}.detail-type[data-v-d66cd00c]:first-child{padding-top:0}@media only screen and (max-width:735px){.detail-type[data-v-d66cd00c]{padding-left:0}}.detail-content[data-v-d66cd00c]{padding-left:2rem}@media only screen and (max-width:735px){.detail-content[data-v-d66cd00c]{padding-left:0}}.param-name[data-v-5ef1227e]{font-weight:600;padding-left:1rem;padding-top:var(--spacing-param)}.param-name[data-v-5ef1227e]:first-child{padding-top:0}@media only screen and (max-width:735px){.param-name[data-v-5ef1227e]{padding-left:0}}.param-content[data-v-5ef1227e]{padding-left:2rem}@media only screen and (max-width:735px){.param-content[data-v-5ef1227e]{padding-left:0}}.param-content[data-v-5ef1227e] dt{font-weight:600}.param-content[data-v-5ef1227e] dd{margin-left:1em}.parameters-table[data-v-eee7e94e] .change-added,.parameters-table[data-v-eee7e94e] .change-removed{display:inline-block;max-width:100%}.parameters-table[data-v-eee7e94e] .change-removed,.parameters-table[data-v-eee7e94e] .token-removed{text-decoration:line-through}.param[data-v-eee7e94e]{font-size:.8823529412rem;box-sizing:border-box}.param.changed[data-v-eee7e94e]{display:flex;flex-flow:row wrap;padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.param.changed.changed[data-v-eee7e94e]{padding-right:1rem}@media only screen and (max-width:735px){.param.changed[data-v-eee7e94e]{padding-left:0;padding-right:0}.param.changed.changed[data-v-eee7e94e]{padding-right:17px;padding-left:2.1764705882rem}.param.changed[data-v-eee7e94e]{padding-left:0;padding-right:0}}.param.changed.changed[data-v-eee7e94e]{padding-left:0;padding-right:0}.param.changed+.param.changed[data-v-eee7e94e]{margin-top:calc(var(--spacing-param)/2)}.changed .param-content[data-v-eee7e94e],.changed .param-symbol[data-v-eee7e94e]{padding-top:2px;padding-bottom:2px}@media only screen and (max-width:735px){.changed .param-content[data-v-eee7e94e]{padding-top:0}.changed .param-symbol[data-v-eee7e94e]{padding-bottom:0}}.param-symbol[data-v-eee7e94e]{text-align:right}.changed .param-symbol[data-v-eee7e94e]{padding-left:2.1764705882rem}@media only screen and (max-width:735px){.param-symbol[data-v-eee7e94e]{text-align:left}.changed .param-symbol[data-v-eee7e94e]{padding-left:0}}.param-symbol[data-v-eee7e94e] .type-identifier-link{color:var(--color-link)}.param+.param[data-v-eee7e94e]{margin-top:var(--spacing-param)}.param+.param[data-v-eee7e94e]:first-child{margin-top:0}.param-content[data-v-eee7e94e]{padding-left:1rem;padding-left:2.1764705882rem}.changed .param-content[data-v-eee7e94e]{padding-right:1rem}@media only screen and (max-width:735px){.param-content[data-v-eee7e94e]{padding-left:0;padding-right:0}}.property-text{font-weight:700}.property-metadata[data-v-549ed0a8]{color:var(--color-figure-gray-secondary)}.property-name[data-v-39899ccf]{font-weight:700}.property-name.deprecated[data-v-39899ccf]{text-decoration:line-through}.property-deprecated[data-v-39899ccf]{margin-left:0}.content[data-v-39899ccf],.content[data-v-39899ccf] p:first-child{display:inline}.response-mimetype[data-v-18890a0f]{color:var(--color-figure-gray-secondary)}.part-name[data-v-68facc94]{font-weight:700}.content[data-v-68facc94],.content[data-v-68facc94] p:first-child{display:inline}.param-name[data-v-0d9b752e]{font-weight:700}.param-name.deprecated[data-v-0d9b752e]{text-decoration:line-through}.param-deprecated[data-v-0d9b752e]{margin-left:0}.content[data-v-0d9b752e],.content[data-v-0d9b752e] p:first-child{display:inline}.response-name[data-v-362f5b54],.response-reason[data-v-362f5b54]{font-weight:700}@media only screen and (max-width:735px){.response-reason[data-v-362f5b54]{display:none}}.response-name>code>.reason[data-v-362f5b54]{display:none}@media only screen and (max-width:735px){.response-name>code>.reason[data-v-362f5b54]{display:initial}}.link[data-v-241f4141]{display:flex;margin-bottom:.5rem}.link-block[data-v-241f4141],.link[data-v-241f4141]{box-sizing:inherit}.link-block.changed[data-v-241f4141],.link.changed[data-v-241f4141]{padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.link-block.changed.changed[data-v-241f4141],.link.changed.changed[data-v-241f4141]{padding-right:1rem}@media only screen and (max-width:735px){.link-block.changed[data-v-241f4141],.link.changed[data-v-241f4141]{padding-left:0;padding-right:0}.link-block.changed.changed[data-v-241f4141],.link.changed.changed[data-v-241f4141]{padding-right:17px;padding-left:2.1764705882rem}.link-block.changed[data-v-241f4141],.link.changed[data-v-241f4141]{padding-left:0;padding-right:0}}.mention-icon[data-v-241f4141]{margin-right:.25rem}.primary-content.with-border[data-v-65c116be]:before{border-top-color:var(--colors-grid,var(--color-grid));border-top-style:solid;border-top-width:var(--content-table-title-border-width,1px);content:"";display:block}.primary-content[data-v-65c116be]>*{margin-bottom:40px;margin-top:40px}.primary-content[data-v-65c116be]>:first-child{margin-top:2.353rem}.relationships-list[data-v-ba5cad92]{list-style:none}.relationships-list.column[data-v-ba5cad92]{margin-left:0;margin-top:15px}.relationships-list.inline[data-v-ba5cad92]{display:flex;flex-direction:row;flex-wrap:wrap;margin-top:15px;margin-left:0}.relationships-list.inline li[data-v-ba5cad92]:not(:last-child):after{content:", "}.relationships-list.changed[data-v-ba5cad92]{padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.relationships-list.changed.changed[data-v-ba5cad92]{padding-right:1rem}@media only screen and (max-width:735px){.relationships-list.changed[data-v-ba5cad92]{padding-left:0;padding-right:0}.relationships-list.changed.changed[data-v-ba5cad92]{padding-right:17px;padding-left:2.1764705882rem}.relationships-list.changed[data-v-ba5cad92]{padding-left:0;padding-right:0}}.relationships-list.changed[data-v-ba5cad92]:after{margin-top:.6176470588rem}.relationships-list.changed.column[data-v-ba5cad92]{display:block;box-sizing:border-box}.relationships-item[data-v-ba5cad92],.relationships-list[data-v-ba5cad92]{box-sizing:inherit}.conditional-constraints[data-v-ba5cad92]{font-size:.8235294118rem;margin:.1764705882rem 0 .5882352941rem 1.1764705882rem}.platform[data-v-3da26baa],.technology[data-v-3da26baa]{display:inline-flex;align-items:center}.tech-icon[data-v-3da26baa]{height:12px;padding-right:5px;--color-svg-icon:var(--color-figure-gray)}.changed[data-v-3da26baa]{padding-left:17px;border:none}.changed[data-v-3da26baa]:after{all:unset}.changed[data-v-3da26baa]:before{background-image:url(../img/modified-icon.efb2697d.svg);background-repeat:no-repeat;bottom:0;content:" ";margin:auto;margin-right:8px;position:absolute;top:0;width:20px;height:20px;margin:0;left:-5px}@media screen{[data-color-scheme=dark] .changed[data-v-3da26baa]:before{background-image:url(../img/modified-icon.efb2697d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed[data-v-3da26baa]:before{background-image:url(../img/modified-icon.efb2697d.svg)}}.changed-added[data-v-3da26baa]:before{background-image:url(../img/added-icon.832a5d2c.svg)}@media screen{[data-color-scheme=dark] .changed-added[data-v-3da26baa]:before{background-image:url(../img/added-icon.832a5d2c.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-added[data-v-3da26baa]:before{background-image:url(../img/added-icon.832a5d2c.svg)}}.changed-deprecated[data-v-3da26baa]:before{background-image:url(../img/deprecated-icon.7bf1740a.svg)}@media screen{[data-color-scheme=dark] .changed-deprecated[data-v-3da26baa]:before{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-deprecated[data-v-3da26baa]:before{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}.availability[data-v-3da26baa]{display:flex;flex-flow:row wrap;gap:10px;margin-top:.8823529412rem;font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.availability>[data-v-3da26baa]:after{content:"";display:inline-block;width:1px;height:1em;background:currentColor;margin-left:10px}.availability>[data-v-3da26baa]:last-child:after{content:none}.topictitle[data-v-6630a012]{margin-bottom:.7058823529rem}.topictitle[data-v-6630a012]:last-child{margin-bottom:0}@media only screen and (max-width:735px){.topictitle[data-v-6630a012]{margin:0}}.eyebrow[data-v-6630a012]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-documentation-intro-eyebrow,var(--colors-secondary-label,var(--color-secondary-label)));display:block;margin-bottom:.8823529412rem}@media only screen and (max-width:735px){.eyebrow[data-v-6630a012]{font-size:1.1176470588rem;line-height:1.2105263158;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title[data-v-6630a012]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-documentation-intro-title,var(--colors-header-text,var(--color-header-text)))}@media only screen and (max-width:1250px){.title[data-v-6630a012]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-6630a012]{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}small[data-v-6630a012]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding-left:10px}@media only screen and (max-width:1250px){small[data-v-6630a012]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}small[data-v-6630a012]:before{content:attr(data-tag-name)}small.Beta[data-v-6630a012]{color:var(--color-badge-beta)}@media screen{[data-color-scheme=dark] small.Beta[data-v-6630a012]{color:var(--color-badge-dark-beta)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] small.Beta[data-v-6630a012]{color:var(--color-badge-dark-beta)}}small.Deprecated[data-v-6630a012]{color:var(--color-badge-deprecated)}@media screen{[data-color-scheme=dark] small.Deprecated[data-v-6630a012]{color:var(--color-badge-dark-deprecated)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] small.Deprecated[data-v-6630a012]{color:var(--color-badge-dark-deprecated)}}.OnThisPageStickyContainer[data-v-39ac6ed0]{margin-top:2.353rem;position:sticky;top:3.8235294118rem;align-self:flex-start;flex:0 0 auto;width:192px;padding-right:1.2941176471rem;box-sizing:border-box;padding-bottom:var(--spacing-stacked-margin-small);max-height:calc(100vh - 3.82353rem);overflow:auto}@media print{.OnThisPageStickyContainer[data-v-39ac6ed0]{display:none}}@media only screen and (max-width:735px){.OnThisPageStickyContainer[data-v-39ac6ed0]{display:none}}.nav-menu-link[data-v-2ad31daf]{display:inline-block;line-height:22px;white-space:nowrap}.nav--in-breakpoint-range .nav-menu-link[data-v-2ad31daf]{line-height:42px;border-top:1px solid;border-color:var(--color-nav-rule);display:flex;flex:1 0 100%;height:100%;align-items:center}.theme-dark.nav--in-breakpoint-range .nav-menu-link[data-v-2ad31daf]{border-color:var(--color-nav-dark-rule)}.hierarchy-collapsed-items[data-v-7b701104]{position:relative;display:inline-flex;align-items:center}.hierarchy-collapsed-items[data-v-7b701104]:before{content:"/";width:.2941176471rem;margin:0 .2941176471rem}.nav--in-breakpoint-range .hierarchy-collapsed-items[data-v-7b701104],:root.no-js .hierarchy-collapsed-items[data-v-7b701104]{display:none}.hierarchy-collapsed-items .toggle[data-v-7b701104]{background:var(--color-nav-hierarchy-collapse-background);border-color:var(--color-nav-hierarchy-collapse-borders);border-radius:var(--border-radius,4px);border-style:solid;border-width:0;font-weight:600;height:1.1176470588rem;text-align:center;width:2.1176470588rem;display:flex;align-items:center;justify-content:center}.theme-dark .hierarchy-collapsed-items .toggle[data-v-7b701104]{background:var(--color-nav-dark-hierarchy-collapse-background)}.hierarchy-collapsed-items .toggle.focused[data-v-7b701104],.hierarchy-collapsed-items .toggle[data-v-7b701104]:active,.hierarchy-collapsed-items .toggle[data-v-7b701104]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.indicator[data-v-7b701104]{width:1em;height:1em;display:flex;align-items:center}.indicator .toggle-icon[data-v-7b701104]{width:100%}.dropdown[data-v-7b701104]{background:var(--color-nav-hierarchy-collapse-background);margin:0;list-style-type:none;border-color:var(--color-nav-hierarchy-collapse-borders);border-radius:var(--border-radius,4px);border-style:solid;box-shadow:0 1px 4px -1px var(--color-figure-gray-secondary);border-width:0;padding:0 .5rem;position:absolute;z-index:42;top:calc(100% + .41176rem)}.theme-dark .dropdown[data-v-7b701104]{background:var(--color-nav-dark-hierarchy-collapse-background);border-color:var(--color-nav-dark-hierarchy-collapse-borders)}.dropdown.collapsed[data-v-7b701104]{opacity:0;transform:translate3d(0,-.4117647059rem,0);transition:opacity .25s ease,transform .25s ease,visibility 0s linear .25s;visibility:hidden}.dropdown[data-v-7b701104]:not(.collapsed){opacity:1;transform:none;transition:opacity .25s ease,transform .25s ease,visibility 0s linear 0s;visibility:visible}.nav--in-breakpoint-range .dropdown[data-v-7b701104]:not(.collapsed){display:none}.dropdown[data-v-7b701104]:before{border-bottom-color:var(--color-nav-hierarchy-collapse-background);border-bottom-style:solid;border-bottom-width:.5rem;border-left-color:transparent;border-left-style:solid;border-left-width:.5rem;border-right-color:transparent;border-right-style:solid;border-right-width:.5rem;content:"";left:1.4411764706rem;position:absolute;top:-.4411764706rem}.theme-dark .dropdown[data-v-7b701104]:before{border-bottom-color:var(--color-nav-dark-hierarchy-collapse-background)}.dropdown-item[data-v-7b701104]{border-top-color:var(--color-nav-hierarchy-collapse-borders);border-top-style:solid;border-top-width:1px}.theme-dark .dropdown-item[data-v-7b701104]{border-top-color:var(--color-nav-dark-hierarchy-collapse-borders)}.dropdown-item[data-v-7b701104]:first-child{border-top:none}.nav-menu-link[data-v-7b701104]{max-width:57.6470588235rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;padding:.75rem 1rem}.hierarchy-item[data-v-13293168]{display:flex;align-items:center;margin-left:0}.hierarchy-item[data-v-13293168]:not(:first-child):before{content:"/";width:.2941176471rem;margin:0 .2941176471rem}.nav--in-breakpoint-range .hierarchy-item[data-v-13293168]{border-top:1px solid var(--color-nav-hierarchy-item-borders);display:flex;align-items:center}.theme-dark.nav--in-breakpoint-range .hierarchy-item[data-v-13293168]{border-top-color:var(--color-nav-dark-hierarchy-item-borders)}.nav--in-breakpoint-range .hierarchy-item[data-v-13293168]:first-of-type{border-top:none}.hierarchy-item.collapsed[data-v-13293168]{display:none}:root.no-js .hierarchy-item.collapsed[data-v-13293168]{display:flex}.nav--in-breakpoint-range .hierarchy-item.collapsed[data-v-13293168]{display:inline-block}.item[data-v-13293168]{display:inline-block;vertical-align:middle}.nav--in-breakpoint-range .item[data-v-13293168]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:100%;line-height:2.4705882353rem}@media only screen and (min-width:768px){.hierarchy-item:first-child:last-child .item[data-v-13293168],.hierarchy-item:first-child:last-child~.hierarchy-item .item[data-v-13293168]{max-width:45rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:last-child .item[data-v-13293168],.has-badge .hierarchy-item:first-child:last-child~.hierarchy-item .item[data-v-13293168],.hierarchy-item:first-child:nth-last-child(2) .item[data-v-13293168],.hierarchy-item:first-child:nth-last-child(2)~.hierarchy-item .item[data-v-13293168]{max-width:36rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(2) .item[data-v-13293168],.has-badge .hierarchy-item:first-child:nth-last-child(2)~.hierarchy-item .item[data-v-13293168]{max-width:28.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(3) .item[data-v-13293168],.hierarchy-item:first-child:nth-last-child(3)~.hierarchy-item .item[data-v-13293168]{max-width:27rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(3) .item[data-v-13293168],.has-badge .hierarchy-item:first-child:nth-last-child(3)~.hierarchy-item .item[data-v-13293168]{max-width:21.6rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(4) .item[data-v-13293168],.hierarchy-item:first-child:nth-last-child(4)~.hierarchy-item .item[data-v-13293168]{max-width:18rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(4) .item[data-v-13293168],.has-badge .hierarchy-item:first-child:nth-last-child(4)~.hierarchy-item .item[data-v-13293168]{max-width:14.4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(5) .item[data-v-13293168],.hierarchy-item:first-child:nth-last-child(5)~.hierarchy-item .item[data-v-13293168]{max-width:9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(5) .item[data-v-13293168],.has-badge .hierarchy-item:first-child:nth-last-child(5)~.hierarchy-item .item[data-v-13293168]{max-width:7.2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-collapsed-items~.hierarchy-item .item[data-v-13293168]{max-width:10.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-collapsed-items~.hierarchy-item:last-child .item[data-v-13293168]{max-width:none}.has-badge .hierarchy-collapsed-items~.hierarchy-item .item[data-v-13293168]{max-width:8.64rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.hierarchy[data-v-d54f3438]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);justify-content:flex-start;align-items:center;margin:0 0 1.1764705882rem 0;min-width:0}.nav--in-breakpoint-range .hierarchy[data-v-d54f3438]{margin:0}.hierarchy .root-hierarchy .item[data-v-d54f3438]{max-width:10rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-v-d54f3438] a.nav-menu-link{color:inherit;text-decoration:underline}.declaration-list-menu[data-v-7ebd4fcd]{position:relative;width:100%}.declaration-list-menu .declaration-list-toggle[data-v-7ebd4fcd]{display:flex;flex-direction:row;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--color-other-decl-button);padding:5px 15px;color:var(--colors-link,var(--color-link));z-index:1;gap:5px;white-space:nowrap;align-items:center}.declaration-list-menu .icon[data-v-7ebd4fcd]{display:flex}.declaration-list-menu .icon svg[data-v-7ebd4fcd]{transition-duration:.4s;transition-timing-function:linear;transition-property:transform;width:15px;height:15px;fill:var(--colors-link,var(--color-link))}.declaration-list-menu .icon svg.expand[data-v-7ebd4fcd]{transform:rotate(45deg)}.doc-topic[data-v-7ebd4fcd]{display:flex;flex-direction:column;height:100%}.doc-topic.with-on-this-page[data-v-7ebd4fcd]{--doc-hero-right-offset:192px}#app-main[data-v-7ebd4fcd]{outline-style:none;height:100%}[data-v-7ebd4fcd] .minimized-title{margin-bottom:.833rem}[data-v-7ebd4fcd] .minimized-title .title{font-size:1.416rem;font-weight:700}[data-v-7ebd4fcd] .minimized-title small{font-size:1rem;padding-left:.416rem}.minimized-abstract[data-v-7ebd4fcd]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.container[data-v-7ebd4fcd]:not(.minimized-container){outline-style:none}.full-width-container .container[data-v-7ebd4fcd]:not(.minimized-container){max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .container[data-v-7ebd4fcd]:not(.minimized-container){padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .container[data-v-7ebd4fcd]:not(.minimized-container){max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .container[data-v-7ebd4fcd]:not(.minimized-container){max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .container[data-v-7ebd4fcd]:not(.minimized-container){width:auto;padding-left:20px;padding-right:20px}}.static-width-container .container[data-v-7ebd4fcd]:not(.minimized-container){margin-left:auto;margin-right:auto;width:1536px;width:980px}@media only screen and (max-width:1250px){.static-width-container .container[data-v-7ebd4fcd]:not(.minimized-container){width:692px}}@media only screen and (max-width:735px){.static-width-container .container[data-v-7ebd4fcd]:not(.minimized-container){width:87.5%}}@media only screen and (max-width:320px){.static-width-container .container[data-v-7ebd4fcd]:not(.minimized-container){width:215px}}[data-v-7ebd4fcd] .minimized-container{outline-style:none;--spacing-stacked-margin-large:0.667em;--spacing-stacked-margin-xlarge:1em;--declaration-code-listing-margin:1em 0 0 0;--declaration-conditional-constraints-margin:1em;--declaration-source-link-margin:0.833em;--code-block-style-elements-padding:7px 12px;--spacing-param:var(--spacing-stacked-margin-large);--aside-border-radius:6px;--code-border-radius:6px}[data-v-7ebd4fcd] .minimized-container:not(.declarations-container){padding-left:1.4rem;padding-right:1.4rem}[data-v-7ebd4fcd] .minimized-container .description{margin-bottom:1.5em}[data-v-7ebd4fcd] .minimized-container>.primary-content>*{margin-top:1.5em;margin-bottom:1.5em}[data-v-7ebd4fcd] .minimized-container .description{margin-top:0}[data-v-7ebd4fcd] .minimized-container h1,[data-v-7ebd4fcd] .minimized-container h2,[data-v-7ebd4fcd] .minimized-container h3,[data-v-7ebd4fcd] .minimized-container h4,[data-v-7ebd4fcd] .minimized-container h5,[data-v-7ebd4fcd] .minimized-container h6{font-size:1rem;font-weight:700}[data-v-7ebd4fcd] .minimized-container h2{font-size:1.083rem}[data-v-7ebd4fcd] .minimized-container h1{font-size:1.416rem}[data-v-7ebd4fcd] .minimized-container aside{padding:.667rem 1rem}[data-v-7ebd4fcd] .minimized-container .source{border-radius:var(--code-border-radius);margin:var(--declaration-code-listing-margin)}[data-v-7ebd4fcd] .minimized-container .single-line{border-radius:var(--code-border-radius)}.description[data-v-7ebd4fcd]{margin-bottom:2.353rem}.description[data-v-7ebd4fcd]:empty{display:none}.description.after-enhanced-hero[data-v-7ebd4fcd]{margin-top:2.353rem}.description[data-v-7ebd4fcd] .content+*{margin-top:var(--spacing-stacked-margin-large)}[data-v-7ebd4fcd] .no-primary-content{--content-table-title-border-width:0px}.sample-download[data-v-7ebd4fcd]{margin-top:20px}.declarations-container[data-v-7ebd4fcd]{margin-top:40px}.declarations-container.minimized-container[data-v-7ebd4fcd]{margin-top:0}[data-v-7ebd4fcd] h1{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-7ebd4fcd] h1{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-7ebd4fcd] h1{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-7ebd4fcd] h2{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-7ebd4fcd] h2{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-7ebd4fcd] h2{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-7ebd4fcd] h3{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-7ebd4fcd] h3{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-7ebd4fcd] h3{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-7ebd4fcd] h4{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-7ebd4fcd] h4{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-7ebd4fcd] h5{font-size:1.2941176471rem;line-height:1.1818181818;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-7ebd4fcd] h5{font-size:1.1764705882rem;line-height:1.2;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-7ebd4fcd] h5{font-size:1.0588235294rem;line-height:1.4444444444;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-7ebd4fcd] h6{font-size:1rem;line-height:1.4705882353;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.doc-content-wrapper[data-v-7ebd4fcd]{display:flex;justify-content:center}.doc-content-wrapper .doc-content[data-v-7ebd4fcd]{min-width:0;width:100%}.doc-content-wrapper .doc-content .container:only-child .declaration-list-menu[data-v-7ebd4fcd]:last-child:before{border-top-color:var(--colors-grid,var(--color-grid));border-top-style:solid;border-top-width:var(--content-table-title-border-width,1px);content:"";display:block;margin-bottom:40px}.with-on-this-page .doc-content-wrapper .doc-content[data-v-7ebd4fcd]{max-width:820px}@media only screen and (min-width:1251px){.with-on-this-page .doc-content-wrapper .doc-content[data-v-7ebd4fcd]{max-width:980px}}@media only screen and (min-width:1500px){.with-on-this-page .doc-content-wrapper .doc-content[data-v-7ebd4fcd]{max-width:1080px}}.quick-navigation-open[data-v-96c35eb8]{display:flex;align-items:center;justify-content:center;width:16px;border:1px solid var(--color-grid);height:100%;border-radius:var(--border-radius,4px);transition:background-color .15s;box-sizing:border-box}.quick-navigation-open[data-v-96c35eb8]:hover{background-color:var(--color-fill-tertiary)}@media only screen and (max-width:1023px){.quick-navigation-open[data-v-96c35eb8]{display:none}}.fromkeyboard .quick-navigation-open[data-v-96c35eb8]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.tag[data-v-7e76f326]{display:inline-block;padding-right:.5882352941rem}.tag[data-v-7e76f326]:focus{outline:none}.tag button[data-v-7e76f326]{color:var(--color-figure-gray);background-color:var(--color-fill-tertiary);font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);border-radius:.8235294118rem;padding:.2352941176rem .5882352941rem;white-space:nowrap;border:1px solid transparent}@media(hover:hover){.tag button[data-v-7e76f326]:hover{transition:background-color .2s,color .2s;background-color:var(--color-fill-blue);color:#fff}}.tag button[data-v-7e76f326]:focus:active{background-color:var(--color-fill-blue);color:#fff}.fromkeyboard .tag button[data-v-7e76f326]:focus,.tag button.focus[data-v-7e76f326],.tag button[data-v-7e76f326]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.tags[data-v-1f2bd813]{position:relative;margin:0;list-style:none;box-sizing:border-box;transition:padding-right .8s,padding-bottom .8s,max-height 1s,opacity 1s;padding:0}.tags .scroll-wrapper[data-v-1f2bd813]{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:none;scrollbar-color:var(--color-figure-gray-tertiary) transparent;scrollbar-width:thin}.tags .scroll-wrapper[data-v-1f2bd813]::-webkit-scrollbar{height:0}@supports not ((-webkit-touch-callout:none) or (scrollbar-width:none) or (-ms-overflow-style:none)){.tags .scroll-wrapper.scrolling[data-v-1f2bd813]{--scrollbar-height:11px;padding-top:var(--scrollbar-height);height:calc(var(--scroll-target-height) - var(--scrollbar-height));display:flex;align-items:center}}.tags .scroll-wrapper.scrolling[data-v-1f2bd813]::-webkit-scrollbar{height:11px}.tags .scroll-wrapper.scrolling[data-v-1f2bd813]::-webkit-scrollbar-thumb{border-radius:10px;background-color:var(--color-figure-gray-tertiary);border:2px solid transparent;background-clip:padding-box}.tags .scroll-wrapper.scrolling[data-v-1f2bd813]::-webkit-scrollbar-track-piece:end{margin-right:8px}.tags .scroll-wrapper.scrolling[data-v-1f2bd813]::-webkit-scrollbar-track-piece:start{margin-left:8px}.tags ul[data-v-1f2bd813]{margin:0;padding:0;display:flex}.filter[data-v-9ad1ed4c]{--input-vertical-padding:0.7647058824rem;--input-horizontal-spacing:0.5882352941rem;--input-height:1.6470588235rem;--input-border-color:var(--color-fill-gray-secondary);--input-text:var(--color-fill-gray-secondary);position:relative;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:calc(var(--border-radius, 4px) + 1px)}.fromkeyboard .filter[data-v-9ad1ed4c]:focus{outline:none}.filter__top-wrapper[data-v-9ad1ed4c]{display:flex}.filter__filter-button[data-v-9ad1ed4c]{position:relative;z-index:1;cursor:text;margin-left:var(--input-horizontal-spacing);margin-right:.1764705882rem}@media only screen and (max-width:735px){.filter__filter-button[data-v-9ad1ed4c]{margin-right:.4117647059rem}}.filter__filter-button .svg-icon[data-v-9ad1ed4c]{fill:var(--input-text);display:block;height:21px}.filter__filter-button.blue[data-v-9ad1ed4c]>*{fill:var(--color-figure-blue);color:var(--color-figure-blue)}.filter.focus .filter__wrapper[data-v-9ad1ed4c]{box-shadow:0 0 0 3pt var(--color-focus-color);--input-border-color:var(--color-fill-blue)}.filter__wrapper[data-v-9ad1ed4c]{border:1px solid var(--input-border-color);background:var(--color-fill);border-radius:var(--border-radius,4px)}.filter__wrapper--reversed[data-v-9ad1ed4c]{display:flex;flex-direction:column-reverse}.filter__wrapper--no-border-style[data-v-9ad1ed4c]{border:none}.filter__suggested-tags[data-v-9ad1ed4c]{border-top:1px solid var(--color-fill-gray-tertiary);z-index:1;overflow:hidden}.filter__suggested-tags[data-v-9ad1ed4c] ul{padding:var(--input-vertical-padding) .5294117647rem;border:1px solid transparent;border-bottom-left-radius:calc(var(--border-radius, 4px) - 1px);border-bottom-right-radius:calc(var(--border-radius, 4px) - 1px)}.fromkeyboard .filter__suggested-tags[data-v-9ad1ed4c] ul:focus{outline:none;box-shadow:0 0 0 5px var(--color-focus-color)}.filter__wrapper--reversed .filter__suggested-tags[data-v-9ad1ed4c]{border-bottom:1px solid var(--color-fill-gray-tertiary);border-top:none}.filter__selected-tags[data-v-9ad1ed4c]{z-index:1;padding-left:4px;margin:-4px 0}@media only screen and (max-width:735px){.filter__selected-tags[data-v-9ad1ed4c]{padding-left:0}}.filter__selected-tags[data-v-9ad1ed4c] ul{padding:4px}@media only screen and (max-width:735px){.filter__selected-tags[data-v-9ad1ed4c] ul{padding-right:.4117647059rem}}.filter__selected-tags[data-v-9ad1ed4c] ul .tag:last-child{padding-right:0}.filter__delete-button[data-v-9ad1ed4c]{position:relative;margin:0;z-index:1;border-radius:100%}.fromkeyboard .filter__delete-button[data-v-9ad1ed4c]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.filter__delete-button .clear-rounded-icon[data-v-9ad1ed4c]{height:.7058823529rem;width:.7058823529rem;fill:var(--input-text);display:block}.filter__delete-button-wrapper[data-v-9ad1ed4c]{display:flex;align-items:center;padding-right:var(--input-horizontal-spacing);padding-left:.1764705882rem;border-top-right-radius:var(--border-radius,4px);border-bottom-right-radius:var(--border-radius,4px)}.filter__input-label[data-v-9ad1ed4c]{position:relative;flex-grow:1;height:var(--input-height);padding:var(--input-vertical-padding) 0}.filter__input-label[data-v-9ad1ed4c]:after{content:attr(data-value);visibility:hidden;width:auto;white-space:nowrap;min-width:130px;display:block;text-indent:.4117647059rem}@media only screen and (max-width:735px){.filter__input-label[data-v-9ad1ed4c]:after{text-indent:.1764705882rem}}.filter__input-box-wrapper[data-v-9ad1ed4c]{overflow-y:hidden;-ms-overflow-style:none;scrollbar-color:var(--color-figure-gray-tertiary) transparent;scrollbar-width:thin;display:flex;overflow-x:auto;align-items:center;cursor:text;flex:1}.filter__input-box-wrapper[data-v-9ad1ed4c]::-webkit-scrollbar{height:0}@supports not ((-webkit-touch-callout:none) or (scrollbar-width:none) or (-ms-overflow-style:none)){.filter__input-box-wrapper.scrolling[data-v-9ad1ed4c]{--scrollbar-height:11px;padding-top:var(--scrollbar-height);height:calc(var(--scroll-target-height) - var(--scrollbar-height));display:flex;align-items:center}}.filter__input-box-wrapper.scrolling[data-v-9ad1ed4c]::-webkit-scrollbar{height:11px}.filter__input-box-wrapper.scrolling[data-v-9ad1ed4c]::-webkit-scrollbar-thumb{border-radius:10px;background-color:var(--color-figure-gray-tertiary);border:2px solid transparent;background-clip:padding-box}.filter__input-box-wrapper.scrolling[data-v-9ad1ed4c]::-webkit-scrollbar-track-piece:end{margin-right:8px}.filter__input-box-wrapper.scrolling[data-v-9ad1ed4c]::-webkit-scrollbar-track-piece:start{margin-left:8px}.filter__input[data-v-9ad1ed4c]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-text);height:var(--input-height);border:none;width:100%;position:absolute;background:transparent;z-index:1;text-indent:.4117647059rem}@media only screen and (max-width:735px){.filter__input[data-v-9ad1ed4c]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);text-indent:.1764705882rem}}.filter__input[data-v-9ad1ed4c]:focus{outline:none}.filter__input[placeholder][data-v-9ad1ed4c]::-moz-placeholder{color:var(--input-text);opacity:1}.filter__input[placeholder][data-v-9ad1ed4c]::placeholder{color:var(--input-text);opacity:1}.filter__input[placeholder][data-v-9ad1ed4c]:-ms-input-placeholder{color:var(--input-text)}.filter__input[placeholder][data-v-9ad1ed4c]::-ms-input-placeholder{color:var(--input-text)}.generic-modal[data-v-795f7b59]{position:fixed;top:0;left:0;right:0;bottom:0;margin:0;z-index:11000;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;background:none;overflow:auto}.modal-fullscreen[data-v-795f7b59]{align-items:stretch}.modal-fullscreen .container[data-v-795f7b59]{margin:0;flex:1;width:100%;height:100%;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.modal-standard[data-v-795f7b59]{padding:20px}.modal-standard .container[data-v-795f7b59]{padding:60px;border-radius:var(--border-radius,4px)}@media screen{[data-color-scheme=dark] .modal-standard .container[data-v-795f7b59]{background:#1d1d1f}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .modal-standard .container[data-v-795f7b59]{background:#1d1d1f}}@media only screen and (max-width:735px){.modal-standard[data-v-795f7b59]{padding:0;align-items:stretch}.modal-standard .container[data-v-795f7b59]{margin:20px 0 0;padding:50px 30px;flex:1;width:100%;border-bottom-left-radius:0;border-bottom-right-radius:0}}.backdrop[data-v-795f7b59]{overflow:auto;background:var(--backdrop-background,rgba(0,0,0,.4));-webkit-overflow-scrolling:touch;width:100%;height:100%;position:fixed}.container[data-v-795f7b59]{margin-left:auto;margin-right:auto;width:1536px;width:980px;background:var(--colors-generic-modal-background,var(--color-generic-modal-background));z-index:1;position:relative;overflow:auto;max-width:100%}@media only screen and (max-width:1250px){.container[data-v-795f7b59]{width:692px}}@media only screen and (max-width:735px){.container[data-v-795f7b59]{width:87.5%}}@media only screen and (max-width:320px){.container[data-v-795f7b59]{width:215px}}.close[data-v-795f7b59]{position:absolute;z-index:9999;top:22px;left:22px;width:17px;height:17px;color:#666;cursor:pointer;background:none;border:0;display:flex;align-items:center}.close .close-icon[data-v-795f7b59]{fill:currentColor;width:100%;height:100%}.theme-dark .container[data-v-795f7b59]{background:#000}.theme-dark .container .close[data-v-795f7b59]{color:#b0b0b0}.theme-code .container[data-v-795f7b59]{background-color:var(--code-background,var(--color-code-background))}.highlight[data-v-4a2ce75d]{display:inline}.highlight[data-v-4a2ce75d] .match{font-weight:600;background:var(--color-fill-light-blue-secondary)}@media only screen and (max-width:735px){.preview[data-v-779b8b01]{display:none}}.unavailable[data-v-779b8b01]{align-items:center;display:flex;height:100%;justify-content:center}.loading[data-v-779b8b01]{padding:20px}.loading-row[data-v-779b8b01]{animation:pulse 2.5s ease;animation-delay:calc(1s + .3s*var(--index));animation-fill-mode:forwards;animation-iteration-count:infinite;background-color:var(--color-fill-gray-tertiary);border-radius:4px;height:12px;margin:20px 0;opacity:0}.loading-row[data-v-779b8b01]:first-of-type{margin-top:0}.loading-row[data-v-779b8b01]:last-of-type{margin-bottom:0}.quick-navigation[data-v-2f89fac2]{--input-border-color:var(--color-grid)}.quick-navigation input[type=text][data-v-2f89fac2]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){.quick-navigation input[type=text][data-v-2f89fac2]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.quick-navigation__filter[data-v-2f89fac2]{--input-horizontal-spacing:0.8823529412rem}.quick-navigation[data-v-2f89fac2] .filter__wrapper{background-color:var(--color-fill-secondary)}.quick-navigation__container[data-v-2f89fac2]{background-color:var(--color-fill-secondary);border:solid 1px var(--input-border-color);border-radius:var(--border-radius,4px);margin:0 .9411764706rem}.quick-navigation__container>[data-v-2f89fac2]{--input-text:var(--color-figure-gray-secondary)}.quick-navigation__container.focus[data-v-2f89fac2]{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.quick-navigation__container[data-v-2f89fac2] .declaration-list-toggle{background-color:var(--color-fill-secondary)}.quick-navigation__magnifier-icon-container[data-v-2f89fac2]{width:1rem}.quick-navigation__magnifier-icon-container>[data-v-2f89fac2]{width:100%}.quick-navigation__magnifier-icon-container.blue .magnifier-icon[data-v-2f89fac2]{fill:var(--color-figure-blue);color:var(--color-figure-blue)}.quick-navigation__match-list[data-v-2f89fac2]{display:flex;max-height:26.4705882353rem;height:0}.quick-navigation__match-list>[data-v-2f89fac2]{min-width:0}.quick-navigation__match-list.active[data-v-2f89fac2]{height:auto;border-top:1px solid var(--input-border-color)}.quick-navigation__match-list .no-results[data-v-2f89fac2]{margin:.8823529412rem auto;width:-moz-fit-content;width:fit-content}.quick-navigation__refs[data-v-2f89fac2]{flex:1;overflow:auto}.quick-navigation__preview[data-v-2f89fac2]{border-left:1px solid var(--color-grid);flex:0 0 61.8%;overflow:auto;position:sticky;top:0}.quick-navigation__reference[data-v-2f89fac2]{display:block;padding:.5882352941rem .8823529412rem}.quick-navigation__reference[data-v-2f89fac2]:hover{text-decoration:none;background-color:var(--color-navigator-item-hover)}.quick-navigation__reference[data-v-2f89fac2]:focus{margin:0 .2941176471rem;padding:.5882352941rem .5882352941rem;background-color:var(--color-navigator-item-hover)}.quick-navigation__symbol-match[data-v-2f89fac2]{display:flex;height:2.3529411765rem;color:var(--color-figure-gray)}.quick-navigation__symbol-match .symbol-info[data-v-2f89fac2]{margin:auto;width:100%}.quick-navigation__symbol-match .symbol-info .navigator-icon[data-v-2f89fac2]{margin-right:.5882352941rem}.quick-navigation__symbol-match .symbol-info .symbol-name[data-v-2f89fac2]{display:flex}.quick-navigation__symbol-match .symbol-info .symbol-name .symbol-title[data-v-2f89fac2]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-navigation__symbol-match .symbol-info .symbol-path[data-v-2f89fac2]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray-secondary);display:flex;margin-left:1.5882352941rem;overflow:hidden;white-space:nowrap}.quick-navigation__symbol-match .symbol-info .symbol-path .parent-path[data-v-2f89fac2]{padding-right:.2941176471rem}@media print{.sidebar[data-v-1a55f7f5]{display:none}}.adjustable-sidebar-width[data-v-1a55f7f5]{display:flex}@media only screen and (max-width:1023px){.adjustable-sidebar-width[data-v-1a55f7f5]{display:block;position:relative}}.adjustable-sidebar-width.dragging[data-v-1a55f7f5] *{cursor:col-resize!important}.adjustable-sidebar-width.sidebar-hidden.dragging[data-v-1a55f7f5] *{cursor:e-resize!important}.sidebar[data-v-1a55f7f5]{position:relative}@media only screen and (max-width:1023px){.sidebar[data-v-1a55f7f5]{position:static}}.aside[data-v-1a55f7f5]{width:250px;position:relative;height:100%;max-width:100vw}.aside.no-transition[data-v-1a55f7f5]{transition:none!important}@media only screen and (min-width:1024px){.aside[data-v-1a55f7f5]{transition:width .3s ease-in,visibility 0s linear var(--visibility-transition-time,0s)}.aside.dragging[data-v-1a55f7f5]:not(.is-opening-on-large):not(.hide-on-large){transition:none}.aside.hide-on-large[data-v-1a55f7f5]{width:0!important;visibility:hidden;pointer-events:none;--visibility-transition-time:0.3s}}@media only screen and (max-width:1023px){.aside[data-v-1a55f7f5]{width:100%!important;overflow:hidden;min-width:0;max-width:100%;height:calc(var(--app-height) - var(--top-offset-mobile));position:fixed;top:var(--top-offset-mobile);bottom:0;z-index:9998;transform:translateX(-100%);transition:transform .15s ease-in;left:0}.aside[data-v-1a55f7f5] .aside-animated-child{opacity:0}.aside.show-on-mobile[data-v-1a55f7f5]{transform:translateX(0)}.aside.show-on-mobile[data-v-1a55f7f5] .aside-animated-child{--index:0;opacity:1;transition:opacity .15s linear;transition-delay:calc(var(--index)*.15s + .15s)}.aside.has-mobile-top-offset[data-v-1a55f7f5]{border-top:1px solid var(--color-fill-gray-tertiary)}}.content[data-v-1a55f7f5]{display:flex;flex-flow:column;min-width:0;flex:1 1 auto;height:100%}.resize-handle[data-v-1a55f7f5]{position:absolute;cursor:col-resize;top:0;bottom:0;right:0;width:5px;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1;transition:background-color .15s;transform:translateX(50%)}@media only screen and (max-width:1023px){.resize-handle[data-v-1a55f7f5]{display:none}}.resize-handle[data-v-1a55f7f5]:hover{background:var(--color-fill-gray-tertiary)}.navigator-card-item[data-v-5e71f320]{--nav-head-wrapper-left-space:20px;--nav-head-wrapper-right-space:20px;--head-wrapper-vertical-space:5px;--nav-depth-spacer:20px;--nesting-index:0;display:flex;align-items:stretch;min-height:32px;box-sizing:border-box;padding:0 var(--nav-head-wrapper-right-space) 0 var(--nav-head-wrapper-left-space)}.navigator-card-item.active .head-wrapper[data-v-5e71f320]{background:var(--color-fill-gray-quaternary)}.hover .navigator-card-item:not(.is-group) .head-wrapper[data-v-5e71f320]{background:var(--color-navigator-item-hover)}.depth-spacer[data-v-5e71f320]{width:calc(var(--nesting-index)*15px + var(--nav-depth-spacer));height:100%;position:relative;flex:0 0 auto}.title-container[data-v-5e71f320]{width:100%;min-width:0;display:flex;align-items:center}.navigator-icon-wrapper[data-v-5e71f320]{margin-right:7px}.head-wrapper[data-v-5e71f320]{position:relative;display:flex;align-items:center;flex:1;min-width:0;border-radius:var(--border-radius,4px);padding:var(--head-wrapper-vertical-space) 0}.fromkeyboard .head-wrapper[data-v-5e71f320]:focus-within{outline:4px solid var(--color-focus-color);outline-offset:-4px}@supports(padding:max(0px)){.head-wrapper[data-v-5e71f320]{padding-right:max(var(--nav-head-wrapper-right-space),env(safe-area-inset-right))}}.highlight[data-v-7b81ca08]{display:inline}.highlight[data-v-7b81ca08] .match{font-weight:600;background:var(--color-fill-light-blue-secondary)}.is-group .leaf-link[data-v-5148de22]{color:var(--color-figure-gray-tertiary);font-weight:600}.is-group .leaf-link[data-v-5148de22]:after{display:none}.navigator-icon[data-v-5148de22]{display:flex;flex:0 0 auto}.navigator-icon.changed[data-v-5148de22]{border:none;width:1em;height:1em;z-index:0}.navigator-icon.changed[data-v-5148de22]:after{top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%,-50%);background-image:url(../img/modified-icon.efb2697d.svg);margin:0}@media screen{[data-color-scheme=dark] .navigator-icon.changed[data-v-5148de22]:after{background-image:url(../img/modified-icon.efb2697d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .navigator-icon.changed[data-v-5148de22]:after{background-image:url(../img/modified-icon.efb2697d.svg)}}.navigator-icon.changed-added[data-v-5148de22]:after{background-image:url(../img/added-icon.832a5d2c.svg)}@media screen{[data-color-scheme=dark] .navigator-icon.changed-added[data-v-5148de22]:after{background-image:url(../img/added-icon.832a5d2c.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .navigator-icon.changed-added[data-v-5148de22]:after{background-image:url(../img/added-icon.832a5d2c.svg)}}.navigator-icon.changed-deprecated[data-v-5148de22]:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}@media screen{[data-color-scheme=dark] .navigator-icon.changed-deprecated[data-v-5148de22]:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .navigator-icon.changed-deprecated[data-v-5148de22]:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}.leaf-link[data-v-5148de22]{color:var(--color-figure-gray);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:inline;vertical-align:middle;font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.fromkeyboard .leaf-link[data-v-5148de22]:focus{outline:none}.leaf-link[data-v-5148de22]:hover{text-decoration:none}.leaf-link.bolded[data-v-5148de22]{font-weight:600}.leaf-link[data-v-5148de22]:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0}.extended-content[data-v-5148de22]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-toggle[data-v-5148de22]{overflow:hidden;position:absolute;width:100%;height:100%;padding-right:5px;box-sizing:border-box;z-index:1;display:flex;align-items:center;justify-content:flex-end}.chevron[data-v-5148de22]{width:10px}.chevron.animating[data-v-5148de22]{transition:transform .15s ease-in}.chevron.rotate[data-v-5148de22]{transform:rotate(90deg)}.navigator-card[data-v-584a744a]{--card-vertical-spacing:10px;--card-horizontal-spacing:20px;--nav-filter-horizontal-padding:20px;--visibility-delay:1s;display:flex;flex-direction:column;min-height:0;height:calc(var(--app-height) - 3.05882rem);position:sticky;top:3.0588235294rem}@media only screen and (max-width:1023px){.navigator-card[data-v-584a744a]{height:100%;position:static;background:var(--color-fill)}}.navigator-card .navigator-card-full-height[data-v-584a744a]{min-height:0;flex:1 1 auto}.navigator-card .head-inner[data-v-584a744a]{display:none;width:100%;font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);height:2.8235294118rem}@media only screen and (max-width:767px){.navigator-card .head-inner[data-v-584a744a]{font-size:1rem;line-height:1;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:1023px){.navigator-card .head-inner[data-v-584a744a]{display:flex;justify-content:flex-end;align-items:center}}.navigator-card .head-inner span[data-v-584a744a],.navigator-card .head-inner>a[data-v-584a744a]{color:var(--color-figure-gray);width:100%}.navigator-card .head-wrapper[data-v-584a744a]{display:flex;justify-content:space-between;flex:1 0 auto}@supports(padding:max(0px)){.navigator-card .head-wrapper[data-v-584a744a]{margin-left:max(var(--card-horizontal-spacing),env(safe-area-inset-left));margin-right:max(var(--card-horizontal-spacing),env(safe-area-inset-right))}}.close-card[data-v-584a744a]{margin:0}.close-card .close-icon[data-v-584a744a]{width:19px;height:19px}[data-v-584a744a] .card-body{display:flex;flex-direction:column;padding-right:0;flex:1 1 auto;min-height:0;height:100%}@media only screen and (max-width:1023px){[data-v-584a744a] .card-body{--card-vertical-spacing:0px}}.navigator-card-inner[data-v-584a744a]{display:flex;flex-flow:column;height:100%;padding-top:10px;box-sizing:border-box}@media only screen and (max-width:1023px){.navigator-card-inner[data-v-584a744a]{padding-top:0}}.filter-on-top .navigator-card-inner[data-v-584a744a]{padding-top:0}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.vue-recycle-scroller__slot{-webkit-box-flex:1;-ms-flex:auto 0 0px;flex:auto 0 0}.vue-recycle-scroller__item-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{border:none;background-color:transparent;opacity:0}.resize-observer[data-v-b329ee4c],.resize-observer[data-v-b329ee4c] object{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;pointer-events:none;display:block;overflow:hidden}.navigator-card.filter-on-top .filter-wrapper[data-v-4fc101dd]{order:1;position:static}.navigator-card.filter-on-top .card-body[data-v-4fc101dd]{order:2}.no-items-wrapper[data-v-4fc101dd]{overflow:hidden;color:var(--color-figure-gray-tertiary)}.no-items-wrapper .no-items[data-v-4fc101dd]:not(:empty){font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding:var(--card-vertical-spacing) var(--card-horizontal-spacing);min-width:200px;box-sizing:border-box}.technology-title[data-v-4fc101dd]{padding:8px 10px;padding-left:20px;background:var(--color-fill);border-radius:var(--border-radius,4px);display:flex;white-space:nowrap}@supports(padding:max(0px)){.technology-title[data-v-4fc101dd]{margin-left:max(var(--card-horizontal-spacing),env(safe-area-inset-left));margin-right:max(var(--card-horizontal-spacing),env(safe-area-inset-right))}}@media only screen and (max-width:767px){.technology-title[data-v-4fc101dd]{margin-top:0}}.technology-title .card-link[data-v-4fc101dd]{color:var(--color-text);font-size:1.1176470588rem;line-height:1.2105263158;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);font-weight:600;overflow:hidden;text-overflow:ellipsis}.technology-title.router-link-exact-active[data-v-4fc101dd]{background:var(--color-fill-gray-quaternary)}.technology-title[data-v-4fc101dd]:hover{background:var(--color-navigator-item-hover);text-decoration:none}.navigator-filter[data-v-4fc101dd]{box-sizing:border-box;padding:15px var(--nav-filter-horizontal-padding);border-top:1px solid var(--color-grid);height:71px;display:flex;align-items:flex-end}.filter-on-top .navigator-filter[data-v-4fc101dd]{border-top:none;align-items:flex-start}@supports(padding:max(0px)){.navigator-filter[data-v-4fc101dd]{padding-left:max(var(--nav-filter-horizontal-padding),env(safe-area-inset-left));padding-right:max(var(--nav-filter-horizontal-padding),env(safe-area-inset-right))}}@media only screen and (max-width:1023px){.navigator-filter[data-v-4fc101dd]{--nav-filter-horizontal-padding:20px;border:none;padding-top:10px;padding-bottom:10px;height:60px}}.navigator-filter .input-wrapper[data-v-4fc101dd]{position:relative;flex:1;min-width:0}.navigator-filter .filter-component[data-v-4fc101dd]{--input-vertical-padding:8px;--input-height:22px;--input-border-color:var(--color-grid);--input-text:var(--color-figure-gray-secondary)}.navigator-filter .filter-component[data-v-4fc101dd] .filter__input{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.navigator-filter .filter-component[data-v-4fc101dd] .filter__input-label:after{min-width:70px}.scroller[data-v-4fc101dd]{height:100%;box-sizing:border-box;padding-bottom:calc(var(--top-offset, 0px) + var(--card-vertical-spacing));transition:padding-bottom .15s ease-in}@media only screen and (max-width:1023px){.scroller[data-v-4fc101dd]{padding-bottom:10em}}.scroller[data-v-4fc101dd] .vue-recycle-scroller__item-wrapper{transform:translateZ(0)}.filter-wrapper[data-v-4fc101dd]{position:sticky;bottom:0;background:var(--color-fill)}.sidebar-transitioning .filter-wrapper[data-v-4fc101dd]{flex:1 0 71px;overflow:hidden}@media only screen and (max-width:1023px){.sidebar-transitioning .filter-wrapper[data-v-4fc101dd]{flex-basis:60px}}.loader[data-v-0de29914]{height:.7058823529rem;background-color:var(--color-fill-gray-tertiary);border-radius:4px}.navigator-icon[data-v-0de29914]{width:16px;height:16px;border-radius:2px;background-color:var(--color-fill-gray-tertiary)}.loading-navigator-item[data-v-0de29914]{animation:pulse 2.5s ease;animation-iteration-count:infinite;animation-fill-mode:forwards;opacity:0;animation-delay:calc(var(--visibility-delay) + .3s*var(--index))}.delay-visibility-enter-active[data-v-3b7cf3a4]{transition:visibility var(--visibility-delay);visibility:hidden}.loading-navigator[data-v-3b7cf3a4]{padding-top:10px}.navigator[data-v-7c66a058]{height:100%;display:flex;flex-flow:column}@media only screen and (max-width:1023px){.navigator[data-v-7c66a058]{position:static;transition:none}}[data-v-7c66a058] .nav-title{font-size:inherit;font-weight:inherit;flex-grow:1}.nav-menu-setting-label[data-v-4323807e]{display:inline-block;margin-right:.2941176471rem;white-space:nowrap}.language-container[data-v-4323807e]{flex:1 0 auto}.language-dropdown[data-v-4323807e]{-webkit-text-size-adjust:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background-color:transparent;box-sizing:inherit;padding:0 11px 0 4px;margin-left:-4px;font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);cursor:pointer;position:relative;z-index:1}@media only screen and (max-width:1023px){.language-dropdown[data-v-4323807e]{font-size:.8235294118rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.language-dropdown[data-v-4323807e]:focus{outline:none}.fromkeyboard .language-dropdown[data-v-4323807e]:focus{outline:4px solid var(--color-focus-color);outline-offset:1px}.language-sizer[data-v-4323807e]{position:absolute;opacity:0;pointer-events:none;padding:0}.language-toggle-container[data-v-4323807e]{display:flex;align-items:center;padding-right:.1764705882rem;position:relative}.nav--in-breakpoint-range .language-toggle-container[data-v-4323807e]{display:none}.language-toggle-container .toggle-icon[data-v-4323807e]{width:.6em;height:.6em;position:absolute;right:7px}.language-toggle-label[data-v-4323807e]{margin-right:2px}.language-toggle.nav-menu-toggle-label[data-v-4323807e]{margin-right:6px}.language-list[data-v-4323807e]{display:inline-block;margin-top:0}.language-list-container[data-v-4323807e]{display:none}.language-list-item[data-v-4323807e],.nav--in-breakpoint-range .language-list-container[data-v-4323807e]{display:inline-block}.language-list-item[data-v-4323807e]:not(:first-child){border-left:1px solid var(--color-grid);margin-left:6px;padding-left:6px}[data-v-5e58283e] .nav-menu{line-height:1.5}[data-v-5e58283e] .nav-menu,[data-v-5e58283e] .nav-menu-settings{font-size:.8235294118rem;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}[data-v-5e58283e] .nav-menu-settings{min-width:0;line-height:1.2857142857}@media only screen and (max-width:1023px){[data-v-5e58283e] .nav-menu-settings{font-size:.8235294118rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (min-width:1024px){[data-v-5e58283e] .nav-menu-settings{margin-left:.5882352941rem}}[data-v-5e58283e] .nav-menu-settings .nav-menu-setting{display:flex;align-items:center;color:var(--color-nav-current-link);margin-left:0;min-width:0}[data-v-5e58283e] .nav-menu-settings .nav-menu-setting .nav-menu-link{font-weight:600;text-decoration:underline}[data-v-5e58283e] .nav-menu-settings .nav-menu-setting:first-child:not(:only-child){margin-right:.5882352941rem}.nav--in-breakpoint-range[data-v-5e58283e] .nav-menu-settings .nav-menu-setting:first-child:not(:only-child){margin-right:0}.theme-dark[data-v-5e58283e] .nav-menu-settings .nav-menu-setting{color:var(--color-nav-dark-current-link)}.nav--in-breakpoint-range[data-v-5e58283e] .nav-menu-settings .nav-menu-setting:not(:first-child){border-top:1px solid var(--color-fill-gray-tertiary)}.documentation-nav[data-v-5e58283e]{--color-nav-background:var(--color-fill)}.documentation-nav[data-v-5e58283e] .nav-title{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:767px){.documentation-nav[data-v-5e58283e] .nav-title{font-size:1rem;line-height:1;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.sidenav-toggle-wrapper[data-v-5e58283e]{display:flex;margin-top:1px;margin-right:.6470588235rem}.nav--in-breakpoint-range .sidenav-toggle-wrapper[data-v-5e58283e]{display:flex!important}@media only screen and (min-width:1024px){.sidenav-toggle-enter-active[data-v-5e58283e],.sidenav-toggle-leave-active[data-v-5e58283e]{transition:margin .3s ease-in 0s}.sidenav-toggle-enter[data-v-5e58283e],.sidenav-toggle-leave-to[data-v-5e58283e]{margin-left:-3.7647058824rem}}.sidenav-toggle[data-v-5e58283e]{align-self:center;color:var(--color-nav-link-color);position:relative;margin:0 -5px;border-radius:var(--border-radius,4px)}.theme-dark .sidenav-toggle[data-v-5e58283e]{color:var(--color-nav-dark-link-color)}.sidenav-toggle:hover .sidenav-icon-wrapper[data-v-5e58283e]{background:var(--color-fill-gray-quaternary)}.theme-dark .sidenav-toggle:hover .sidenav-icon-wrapper[data-v-5e58283e]{background:#424242}.sidenav-toggle__separator[data-v-5e58283e]{height:.8em;width:1px;background:var(--color-nav-color);align-self:center;margin:0 1.2941176471rem}.nav--in-breakpoint-range .sidenav-toggle__separator[data-v-5e58283e]{display:none}.sidenav-icon-wrapper[data-v-5e58283e]{padding:5px;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius,4px)}.sidenav-icon[data-v-5e58283e]{display:flex;width:19px;height:19px}[data-v-8aa6db48] .generic-modal{overflow-y:overlay}[data-v-8aa6db48] .modal-fullscreen>.container{background-color:transparent;height:-moz-fit-content;height:fit-content;flex:auto;margin:9.4117647059rem 0;max-width:47.0588235294rem;overflow:visible}[data-v-8aa6db48] .navigator-filter .quick-navigation-open{margin-left:var(--nav-filter-horizontal-padding);width:calc(var(--nav-filter-horizontal-padding)*2)}.documentation-layout[data-v-8aa6db48]{--delay:1s;display:flex;flex-flow:column;background:var(--colors-text-background,var(--color-text-background))}.documentation-layout .delay-hiding-leave-active[data-v-8aa6db48]{transition:display var(--delay)}.documentation-layout-aside[data-v-8aa6db48]{height:100%;box-sizing:border-box;border-right:1px solid var(--color-grid)}@media only screen and (max-width:1023px){.documentation-layout-aside[data-v-8aa6db48]{background:var(--color-fill);border-right:none}.sidebar-transitioning .documentation-layout-aside[data-v-8aa6db48]{border-right:1px solid var(--color-grid)}}.topic-wrapper[data-v-8aa6db48]{flex:1 1 auto;width:100%}:root.no-js .topic-wrapper[data-v-8aa6db48] .sidebar{display:none}.full-width-container[data-v-8aa6db48]{max-width:1920px;margin-left:auto;margin-right:auto}@media only screen and (min-width:1920px){.full-width-container[data-v-8aa6db48]{border-left:1px solid var(--color-grid);border-right:1px solid var(--color-grid);box-sizing:border-box}} \ No newline at end of file diff --git a/docs/css/documentation-topic.b186e79f.css b/docs/css/documentation-topic.b186e79f.css deleted file mode 100644 index 118f436..0000000 --- a/docs/css/documentation-topic.b186e79f.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */.betainfo[data-v-ba3b3cc0]{font-size:.9411764706rem;padding:3rem 0;background-color:var(--color-fill-secondary)}.full-width-container .betainfo-container[data-v-ba3b3cc0]{max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .betainfo-container[data-v-ba3b3cc0]{padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .betainfo-container[data-v-ba3b3cc0]{max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .betainfo-container[data-v-ba3b3cc0]{max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .betainfo-container[data-v-ba3b3cc0]{width:auto;padding-left:20px;padding-right:20px}}.static-width-container .betainfo-container[data-v-ba3b3cc0]{margin-left:auto;margin-right:auto;width:980px}@media only screen and (max-width:1250px){.static-width-container .betainfo-container[data-v-ba3b3cc0]{width:692px}}@media only screen and (max-width:735px){.static-width-container .betainfo-container[data-v-ba3b3cc0]{width:87.5%}}@media only screen and (max-width:320px){.static-width-container .betainfo-container[data-v-ba3b3cc0]{width:215px}}.betainfo-label[data-v-ba3b3cc0]{font-weight:600;font-size:.9411764706rem}.betainfo-content[data-v-ba3b3cc0] p{margin-bottom:10px}.summary-section[data-v-3aa6f694]:last-of-type{margin-right:0}@media only screen and (max-width:735px){.summary-section[data-v-3aa6f694]{margin-right:0}}.title[data-v-6796f6ea]{color:#fff;font-size:.8235294118rem;margin-right:.5rem;text-rendering:optimizeLegibility}.documentation-hero--disabled .title[data-v-6796f6ea]{color:var(--colors-text,var(--color-text))}.language[data-v-1a36493d]{padding-bottom:10px;justify-content:flex-end}.language-list[data-v-1a36493d],.language[data-v-1a36493d]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-top:0;display:flex;align-items:center}.language-option.swift[data-v-1a36493d]{padding-right:10px;border-right:1px solid var(--color-fill-gray-tertiary)}.language-option.objc[data-v-1a36493d]{padding-left:10px}.language-option.active[data-v-1a36493d],.language-option.router-link-exact-active[data-v-1a36493d]{color:#ccc}.documentation-hero--disabled .language-option.active[data-v-1a36493d],.documentation-hero--disabled .language-option.router-link-exact-active[data-v-1a36493d]{color:var(--colors-secondary-label,var(--color-secondary-label))}.view-more-link[data-v-3f54e653]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;flex-flow:row-reverse;margin-bottom:1.3rem}.documentation-hero[data-v-0a9cf53e]{background:#000;color:var(--color-documentation-intro-figure,#fff);overflow:hidden;text-align:left;position:relative;padding-right:var(--doc-hero-right-offset)}.documentation-hero[data-v-0a9cf53e]:before{content:"";background:var(--standard-accent-color,var(--color-documentation-intro-fill,#2a2a2a));position:absolute;width:100%;left:0;top:-50%;height:150%;right:0}.documentation-hero[data-v-0a9cf53e]:after{background:transparent;opacity:.7;width:100%;position:absolute;content:"";height:100%;left:0;top:0}.documentation-hero .icon[data-v-0a9cf53e]{position:absolute;margin-top:10px;margin-right:25px;right:0;width:250px;height:calc(100% - 20px);box-sizing:border-box}@media only screen and (max-width:735px){.documentation-hero .icon[data-v-0a9cf53e]{display:none}}.documentation-hero .background-icon[data-v-0a9cf53e]{color:var(--color-documentation-intro-accent,#161616);display:block;width:250px;height:auto;opacity:1;position:absolute;top:50%;left:0;transform:translateY(-50%);max-height:100%}.documentation-hero .background-icon[data-v-0a9cf53e] img,.documentation-hero .background-icon[data-v-0a9cf53e] svg{width:100%;height:100%}.documentation-hero__content[data-v-0a9cf53e]:not(.minimized-hero){padding-top:2.3529411765rem;padding-bottom:40px;position:relative;z-index:1}.full-width-container .documentation-hero__content[data-v-0a9cf53e]:not(.minimized-hero){max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .documentation-hero__content[data-v-0a9cf53e]:not(.minimized-hero){padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .documentation-hero__content[data-v-0a9cf53e]:not(.minimized-hero){max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .documentation-hero__content[data-v-0a9cf53e]:not(.minimized-hero){max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .documentation-hero__content[data-v-0a9cf53e]:not(.minimized-hero){width:auto;padding-left:20px;padding-right:20px}}.static-width-container .documentation-hero__content[data-v-0a9cf53e]:not(.minimized-hero){margin-left:auto;margin-right:auto;width:980px}@media only screen and (max-width:1250px){.static-width-container .documentation-hero__content[data-v-0a9cf53e]:not(.minimized-hero){width:692px}}@media only screen and (max-width:735px){.static-width-container .documentation-hero__content[data-v-0a9cf53e]:not(.minimized-hero){width:87.5%}}@media only screen and (max-width:320px){.static-width-container .documentation-hero__content[data-v-0a9cf53e]:not(.minimized-hero){width:215px}}.documentation-hero .minimized-hero[data-v-0a9cf53e]{padding:1.3em 1.4em;position:relative;z-index:1}.documentation-hero__above-content[data-v-0a9cf53e]{position:relative;z-index:1}.documentation-hero--disabled[data-v-0a9cf53e]{background:none;color:var(--colors-text,var(--color-text))}.documentation-hero--disabled[data-v-0a9cf53e]:after,.documentation-hero--disabled[data-v-0a9cf53e]:before{content:none}.short-hero[data-v-0a9cf53e]{padding-top:3.5294117647rem;padding-bottom:3.5294117647rem}.extra-bottom-padding[data-v-0a9cf53e]{padding-bottom:3.8235294118rem}.theme-dark[data-v-0a9cf53e] a:not(.button-cta){color:#09f}ul[data-v-068842ec]{list-style-type:none;margin:0}ul li:first-child .base-link[data-v-068842ec]{margin-top:0}.parent-item .base-link[data-v-068842ec]{font-weight:700}.base-link[data-v-068842ec]{color:var(--color-figure-gray-secondary);font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:inline-block;margin:5px 0;transition:color .15s ease-in;max-width:100%}.active .base-link[data-v-068842ec]{color:var(--color-text)}[data-v-3a32ffd0] .code-listing{background:var(--background,var(--color-code-background));color:var(--text,var(--color-code-plain));border-color:var(--colors-grid,var(--color-grid));border-width:var(--code-border-width,1px);border-style:var(--code-border-style,solid)}[data-v-3a32ffd0] .code-listing pre{padding:var(--code-block-style-elements-padding)}[data-v-3a32ffd0] .code-listing pre>code{font-size:.8823529412rem;line-height:1.6666666667;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}[data-v-3a32ffd0] *+.code-listing,[data-v-3a32ffd0] *+.endpoint-example,[data-v-3a32ffd0] *+.inline-image-container,[data-v-3a32ffd0] *+aside,[data-v-3a32ffd0] *+figure,[data-v-3a32ffd0] .code-listing+*,[data-v-3a32ffd0] .endpoint-example+*,[data-v-3a32ffd0] .inline-image-container+*,[data-v-3a32ffd0] aside+*,[data-v-3a32ffd0] figure+*{margin-top:var(--spacing-stacked-margin-xlarge)}[data-v-3a32ffd0] *+dl,[data-v-3a32ffd0] dl+*{margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] img{display:block;margin:auto;max-width:100%}[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ol li:not(:first-child),[data-v-3a32ffd0] ul,[data-v-3a32ffd0] ul li:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}@media only screen and (max-width:735px){[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ul{margin-left:1.25rem}}[data-v-3a32ffd0] dt:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] dd{margin-left:2em}.conditional-constraints[data-v-4c6f3ed1] code{color:var(--colors-secondary-label,var(--color-secondary-label))}.token-method[data-v-3fd63d6c]{font-weight:700}.token-keyword[data-v-3fd63d6c]{color:var(--syntax-keyword,var(--color-syntax-keywords))}.token-number[data-v-3fd63d6c]{color:var(--syntax-number,var(--color-syntax-numbers))}.token-string[data-v-3fd63d6c]{color:var(--syntax-string,var(--color-syntax-strings))}.attribute-link[data-v-3fd63d6c],.token-attribute[data-v-3fd63d6c]{color:var(--syntax-attribute,var(--color-syntax-keywords))}.token-internalParam[data-v-3fd63d6c]{color:var(--color-syntax-param-internal-name)}.type-identifier-link[data-v-3fd63d6c]{color:var(--syntax-type,var(--color-syntax-other-type-names))}.token-removed[data-v-3fd63d6c]{background-color:var(--color-highlight-red)}.token-added[data-v-3fd63d6c]{background-color:var(--color-highlight-green)}.source[data-v-d22a3f50]{background:var(--background,var(--color-code-background));border-color:var(--color-grid);color:var(--text,var(--color-code-plain));border-style:solid;border-width:1px;padding:var(--code-block-style-elements-padding);speak:literal-punctuation;line-height:25px;filter:blur(0)}.source.displays-multiple-lines[data-v-d22a3f50],.source[data-v-d22a3f50]{border-radius:var(--border-radius,4px)}.source>code[data-v-d22a3f50]{font-size:.8823529412rem;line-height:1.6666666667;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace);display:block}.platforms[data-v-4f51d8d2]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-bottom:.45rem;margin-top:var(--spacing-stacked-margin-xlarge)}.changed .platforms[data-v-4f51d8d2]{padding-left:.588rem}.platforms[data-v-4f51d8d2]:first-of-type{margin-top:1rem}.source[data-v-4f51d8d2]{margin:var(--declaration-code-listing-margin)}.platforms+.source[data-v-4f51d8d2]{margin:0}.changed.declaration-group[data-v-4f51d8d2]{background:var(--background,var(--color-code-background))}.changed .source[data-v-4f51d8d2]{background:none;border:none;margin-top:0;margin-bottom:0;margin-left:2.1764705882rem;padding-left:0}.declaration-diff[data-v-b3e21c4a]{background:var(--background,var(--color-code-background))}.declaration-diff-version[data-v-b3e21c4a]{padding-left:.588rem;padding-left:2.1764705882rem;font-size:1rem;line-height:1.5294117647;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray-secondary);margin:0}.declaration-diff-current[data-v-b3e21c4a]{padding-top:8px;padding-bottom:5px}.declaration-diff-previous[data-v-b3e21c4a]{padding-top:5px;padding-bottom:8px;background-color:var(--color-changes-modified-previous-background);border-radius:0 0 var(--border-radius,4px) var(--border-radius,4px);position:relative}.declaration-source-link[data-v-5863919c]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;align-items:center;margin-top:var(--declaration-source-link-margin,var(--spacing-stacked-margin-large))}.declaration-icon[data-v-5863919c]{width:1em;margin-right:5px}.conditional-constraints[data-v-2ab6251b]{margin-top:var(--declaration-conditional-constraints-margin,20px)}.abstract[data-v-cdcaacd2]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){.abstract[data-v-cdcaacd2]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-cdcaacd2] p:last-child{margin-bottom:0}.container[data-v-6e075935]{padding-bottom:40px}.full-width-container .container[data-v-6e075935]{max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .container[data-v-6e075935]{padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .container[data-v-6e075935]{max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .container[data-v-6e075935]{max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .container[data-v-6e075935]{width:auto;padding-left:20px;padding-right:20px}}.static-width-container .container[data-v-6e075935]{margin-left:auto;margin-right:auto;width:980px}@media only screen and (max-width:1250px){.static-width-container .container[data-v-6e075935]{width:692px}}@media only screen and (max-width:735px){.static-width-container .container[data-v-6e075935]{width:87.5%}}@media only screen and (max-width:320px){.static-width-container .container[data-v-6e075935]{width:215px}}.title[data-v-6e075935]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding-top:40px;border-top-color:var(--color-grid);border-top-style:solid;border-top-width:var(--content-table-title-border-width,1px)}@media only screen and (max-width:1250px){.title[data-v-6e075935]{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-6e075935]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title+.contenttable-section[data-v-1b0546d9]{margin-top:0}.contenttable-section[data-v-1b0546d9]{align-items:baseline;padding-top:2.353rem}.contenttable-section[data-v-1b0546d9]:last-child{margin-bottom:0}[data-v-1b0546d9] .contenttable-title{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-1b0546d9] .contenttable-title{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.contenttable-section[data-v-1b0546d9]{align-items:unset;border-top:none;display:inherit;margin:0}.section-content[data-v-1b0546d9],.section-title[data-v-1b0546d9]{padding:0}[data-v-1b0546d9] .contenttable-title{margin:0 0 2.353rem 0;padding-bottom:.5rem}}.badge[data-v-8d6893ae]{--badge-color:var(--color-badge-default);--badge-dark-color:var(--color-badge-dark-default);font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:inline-block;padding:2px 10px;white-space:nowrap;background:none;border-radius:var(--badge-border-radius,calc(var(--border-radius, 4px) - 1px));border-style:var(--badge-border-style,solid);border-width:var(--badge-border-width,1px);margin-left:10px;color:var(--badge-color)}.theme-dark .badge[data-v-8d6893ae]{--badge-color:var(--badge-dark-color)}.badge-deprecated[data-v-8d6893ae]{--badge-color:var(--color-badge-deprecated);--badge-dark-color:var(--color-badge-dark-deprecated)}.badge-beta[data-v-8d6893ae]{--badge-color:var(--color-badge-beta);--badge-dark-color:var(--color-badge-dark-beta)}.topic-icon-wrapper[data-v-44dade98]{display:flex;align-items:center;justify-content:center;height:1.4705882353rem;flex:0 0 1.294rem;width:1.294rem;margin-right:1rem}.topic-icon[data-v-44dade98]{height:.8823529412rem;transform:scale(1);-webkit-transform:scale(1);overflow:visible}.topic-icon[data-v-44dade98] img{margin:0;display:block;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.topic-icon.curly-brackets-icon[data-v-44dade98]{height:1rem}.decorator[data-v-06ec7395],.label[data-v-06ec7395]{color:var(--colors-secondary-label,var(--color-secondary-label))}.label[data-v-06ec7395]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.empty-token[data-v-06ec7395]{font-size:0}.empty-token[data-v-06ec7395]:after{content:" ";font-size:1rem}.abstract[data-v-63be6b46],.link-block[data-v-63be6b46] .badge{margin-left:2.294rem}.link-block .badge+.badge[data-v-63be6b46]{margin-left:1rem}.link[data-v-63be6b46]{display:flex}.link-block .badge[data-v-63be6b46]{margin-top:.5rem}.link-block.has-inline-element[data-v-63be6b46]{display:flex;align-items:flex-start;flex-flow:row wrap}.link-block.has-inline-element .badge[data-v-63be6b46]{margin-left:1rem;margin-top:0}.link-block .has-adjacent-elements[data-v-63be6b46]{padding-top:5px;padding-bottom:5px;display:inline-flex}.link-block[data-v-63be6b46],.link[data-v-63be6b46]{box-sizing:inherit}.link-block.changed[data-v-63be6b46],.link.changed[data-v-63be6b46]{padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.link-block.changed.changed[data-v-63be6b46],.link.changed.changed[data-v-63be6b46]{padding-right:1rem}@media only screen and (max-width:735px){.link-block.changed[data-v-63be6b46],.link.changed[data-v-63be6b46]{padding-left:0;padding-right:0}.link-block.changed.changed[data-v-63be6b46],.link.changed.changed[data-v-63be6b46]{padding-right:17px;padding-left:2.1764705882rem}.link-block.changed[data-v-63be6b46],.link.changed[data-v-63be6b46]{padding-left:0;padding-right:0}}.abstract .topic-required[data-v-63be6b46]:not(:first-child){margin-top:4px}.topic-required[data-v-63be6b46]{font-size:.8em}.deprecated[data-v-63be6b46]{text-decoration:line-through}.conditional-constraints[data-v-63be6b46]{font-size:.8235294118rem;margin-top:4px}.section-content>.content[data-v-1c2724f5],.topic[data-v-1c2724f5]{margin-top:15px}.no-title .section-content>.content[data-v-1c2724f5]:first-child,.no-title .topic[data-v-1c2724f5]:first-child{margin-top:0}.datalist dd{padding-left:2rem}.datalist dt{font-weight:600;padding-left:1rem;padding-top:var(--spacing-param)}.datalist dt:first-of-type{padding-top:0}.type[data-v-791bac44]:first-letter{text-transform:capitalize}.detail-type[data-v-d66cd00c]{font-weight:600;padding-left:1rem;padding-top:var(--spacing-param)}.detail-type[data-v-d66cd00c]:first-child{padding-top:0}@media only screen and (max-width:735px){.detail-type[data-v-d66cd00c]{padding-left:0}}.detail-content[data-v-d66cd00c]{padding-left:2rem}@media only screen and (max-width:735px){.detail-content[data-v-d66cd00c]{padding-left:0}}.param-name[data-v-5ef1227e]{font-weight:600;padding-left:1rem;padding-top:var(--spacing-param)}.param-name[data-v-5ef1227e]:first-child{padding-top:0}@media only screen and (max-width:735px){.param-name[data-v-5ef1227e]{padding-left:0}}.param-content[data-v-5ef1227e]{padding-left:2rem}@media only screen and (max-width:735px){.param-content[data-v-5ef1227e]{padding-left:0}}.param-content[data-v-5ef1227e] dt{font-weight:600}.param-content[data-v-5ef1227e] dd{margin-left:1em}.parameters-table[data-v-eee7e94e] .change-added,.parameters-table[data-v-eee7e94e] .change-removed{display:inline-block;max-width:100%}.parameters-table[data-v-eee7e94e] .change-removed,.parameters-table[data-v-eee7e94e] .token-removed{text-decoration:line-through}.param[data-v-eee7e94e]{font-size:.8823529412rem;box-sizing:border-box}.param.changed[data-v-eee7e94e]{display:flex;flex-flow:row wrap;padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.param.changed.changed[data-v-eee7e94e]{padding-right:1rem}@media only screen and (max-width:735px){.param.changed[data-v-eee7e94e]{padding-left:0;padding-right:0}.param.changed.changed[data-v-eee7e94e]{padding-right:17px;padding-left:2.1764705882rem}.param.changed[data-v-eee7e94e]{padding-left:0;padding-right:0}}.param.changed.changed[data-v-eee7e94e]{padding-left:0;padding-right:0}.param.changed+.param.changed[data-v-eee7e94e]{margin-top:calc(var(--spacing-param)/2)}.changed .param-content[data-v-eee7e94e],.changed .param-symbol[data-v-eee7e94e]{padding-top:2px;padding-bottom:2px}@media only screen and (max-width:735px){.changed .param-content[data-v-eee7e94e]{padding-top:0}.changed .param-symbol[data-v-eee7e94e]{padding-bottom:0}}.param-symbol[data-v-eee7e94e]{text-align:right}.changed .param-symbol[data-v-eee7e94e]{padding-left:2.1764705882rem}@media only screen and (max-width:735px){.param-symbol[data-v-eee7e94e]{text-align:left}.changed .param-symbol[data-v-eee7e94e]{padding-left:0}}.param-symbol[data-v-eee7e94e] .type-identifier-link{color:var(--color-link)}.param+.param[data-v-eee7e94e]{margin-top:var(--spacing-param)}.param+.param[data-v-eee7e94e]:first-child{margin-top:0}.param-content[data-v-eee7e94e]{padding-left:1rem;padding-left:2.1764705882rem}.changed .param-content[data-v-eee7e94e]{padding-right:1rem}@media only screen and (max-width:735px){.param-content[data-v-eee7e94e]{padding-left:0;padding-right:0}}.property-metadata[data-v-f911f232]{color:var(--color-figure-gray-secondary)}.property-text{font-weight:700}.property-metadata[data-v-549ed0a8]{color:var(--color-figure-gray-secondary)}.property-name[data-v-39899ccf]{font-weight:700}.property-name.deprecated[data-v-39899ccf]{text-decoration:line-through}.property-deprecated[data-v-39899ccf]{margin-left:0}.content[data-v-39899ccf],.content[data-v-39899ccf] p:first-child{display:inline}.response-mimetype[data-v-18890a0f]{color:var(--color-figure-gray-secondary)}.part-name[data-v-68facc94]{font-weight:700}.content[data-v-68facc94],.content[data-v-68facc94] p:first-child{display:inline}.param-name[data-v-0d9b752e]{font-weight:700}.param-name.deprecated[data-v-0d9b752e]{text-decoration:line-through}.param-deprecated[data-v-0d9b752e]{margin-left:0}.content[data-v-0d9b752e],.content[data-v-0d9b752e] p:first-child{display:inline}.response-name[data-v-ee5b05cc],.response-reason[data-v-ee5b05cc]{font-weight:700}@media only screen and (max-width:735px){.response-reason[data-v-ee5b05cc]{display:none}}.response-name>code>.reason[data-v-ee5b05cc]{display:none}@media only screen and (max-width:735px){.response-name>code>.reason[data-v-ee5b05cc]{display:initial}}.primary-content.with-border[data-v-56ef0742]:before{border-top-color:var(--colors-grid,var(--color-grid));border-top-style:solid;border-top-width:1px;content:"";display:block}.primary-content[data-v-56ef0742]>*{margin-bottom:40px;margin-top:40px}.primary-content[data-v-56ef0742]>:first-child{margin-top:2.353rem}.relationships-list[data-v-ba5cad92]{list-style:none}.relationships-list.column[data-v-ba5cad92]{margin-left:0;margin-top:15px}.relationships-list.inline[data-v-ba5cad92]{display:flex;flex-direction:row;flex-wrap:wrap;margin-top:15px;margin-left:0}.relationships-list.inline li[data-v-ba5cad92]:not(:last-child):after{content:", "}.relationships-list.changed[data-v-ba5cad92]{padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.relationships-list.changed.changed[data-v-ba5cad92]{padding-right:1rem}@media only screen and (max-width:735px){.relationships-list.changed[data-v-ba5cad92]{padding-left:0;padding-right:0}.relationships-list.changed.changed[data-v-ba5cad92]{padding-right:17px;padding-left:2.1764705882rem}.relationships-list.changed[data-v-ba5cad92]{padding-left:0;padding-right:0}}.relationships-list.changed[data-v-ba5cad92]:after{margin-top:.6176470588rem}.relationships-list.changed.column[data-v-ba5cad92]{display:block;box-sizing:border-box}.relationships-item[data-v-ba5cad92],.relationships-list[data-v-ba5cad92]{box-sizing:inherit}.conditional-constraints[data-v-ba5cad92]{font-size:.8235294118rem;margin:.1764705882rem 0 .5882352941rem 1.1764705882rem}.availability[data-v-602d8130]{display:flex;flex-flow:row wrap;gap:10px;margin-top:25px}.badge[data-v-602d8130]{margin:0}.technology[data-v-602d8130]{display:inline-flex;align-items:center}.tech-icon[data-v-602d8130]{height:12px;padding-right:5px;fill:var(--badge-color)}.theme-dark .tech-icon[data-v-602d8130]{fill:var(--badge-color)}.beta[data-v-602d8130]{color:var(--color-badge-beta)}.theme-dark .beta[data-v-602d8130]{color:var(--color-badge-dark-beta)}.deprecated[data-v-602d8130]{color:var(--color-badge-deprecated)}.theme-dark .deprecated[data-v-602d8130]{color:var(--color-badge-dark-deprecated)}.changed[data-v-602d8130]{padding-left:26px}.changed[data-v-602d8130]:after{content:none}.changed[data-v-602d8130]:before{background-image:url(../img/modified-icon.efb2697d.svg);background-repeat:no-repeat;bottom:0;content:" ";margin:auto;margin-right:8px;position:absolute;top:0;width:16px;height:16px;left:5px}@media screen{[data-color-scheme=dark] .changed[data-v-602d8130]:before{background-image:url(../img/modified-icon.efb2697d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed[data-v-602d8130]:before{background-image:url(../img/modified-icon.efb2697d.svg)}}.theme-dark .changed[data-v-602d8130]:before{background-image:url(../img/modified-icon.efb2697d.svg)}.changed-added[data-v-602d8130]{border-color:var(--color-changes-added)}.changed-added[data-v-602d8130]:before{background-image:url(../img/added-icon.832a5d2c.svg)}@media screen{[data-color-scheme=dark] .changed-added[data-v-602d8130]:before{background-image:url(../img/added-icon.832a5d2c.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-added[data-v-602d8130]:before{background-image:url(../img/added-icon.832a5d2c.svg)}}.theme-dark .changed-added[data-v-602d8130]:before{background-image:url(../img/added-icon.832a5d2c.svg)}.changed-deprecated[data-v-602d8130]{border-color:var(--color-changes-deprecated)}.changed-deprecated[data-v-602d8130]:before{background-image:url(../img/deprecated-icon.7bf1740a.svg)}@media screen{[data-color-scheme=dark] .changed-deprecated[data-v-602d8130]:before{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-deprecated[data-v-602d8130]:before{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}.theme-dark .changed-deprecated[data-v-602d8130]:before{background-image:url(../img/deprecated-icon.7bf1740a.svg)}.changed-modified[data-v-602d8130]{border-color:var(--color-changes-modified)}.eyebrow[data-v-4492c658]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-documentation-intro-eyebrow,#ccc);display:block;margin-bottom:1.1764705882rem}@media only screen and (max-width:735px){.eyebrow[data-v-4492c658]{font-size:1.1176470588rem;line-height:1.2105263158;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.documentation-hero--disabled .eyebrow[data-v-4492c658]{color:var(--colors-secondary-label,var(--color-secondary-label))}.title[data-v-4492c658]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-documentation-intro-title,#fff);margin-bottom:.7058823529rem}@media only screen and (max-width:1250px){.title[data-v-4492c658]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-4492c658]{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.documentation-hero--disabled .title[data-v-4492c658]{color:var(--colors-header-text,var(--color-header-text))}small[data-v-4492c658]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding-left:10px}@media only screen and (max-width:1250px){small[data-v-4492c658]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}small[data-v-4492c658]:before{content:attr(data-tag-name)}small.Beta[data-v-4492c658]{color:var(--color-badge-beta)}.theme-dark small.Beta[data-v-4492c658]{color:var(--color-badge-dark-beta)}small.Deprecated[data-v-4492c658]{color:var(--color-badge-deprecated)}.theme-dark small.Deprecated[data-v-4492c658]{color:var(--color-badge-dark-deprecated)}.OnThisPageStickyContainer[data-v-39ac6ed0]{margin-top:2.353rem;position:sticky;top:3.8235294118rem;align-self:flex-start;flex:0 0 auto;width:192px;padding-right:1.2941176471rem;box-sizing:border-box;padding-bottom:var(--spacing-stacked-margin-small);max-height:calc(100vh - 3.82353rem);overflow:auto}@media print{.OnThisPageStickyContainer[data-v-39ac6ed0]{display:none}}@media only screen and (max-width:735px){.OnThisPageStickyContainer[data-v-39ac6ed0]{display:none}}.doc-topic[data-v-2ff03362]{display:flex;flex-direction:column;height:100%}.doc-topic.with-on-this-page[data-v-2ff03362]{--doc-hero-right-offset:192px}#main[data-v-2ff03362]{outline-style:none;height:100%}[data-v-2ff03362] .minimized-title{margin-bottom:.833rem}[data-v-2ff03362] .minimized-title .title{font-size:1.416rem;font-weight:700}[data-v-2ff03362] .minimized-title small{font-size:1rem;padding-left:.416rem}.minimized-abstract[data-v-2ff03362]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.container[data-v-2ff03362]:not(.minimized-container){outline-style:none}.full-width-container .container[data-v-2ff03362]:not(.minimized-container){max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .container[data-v-2ff03362]:not(.minimized-container){padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .container[data-v-2ff03362]:not(.minimized-container){max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .container[data-v-2ff03362]:not(.minimized-container){max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .container[data-v-2ff03362]:not(.minimized-container){width:auto;padding-left:20px;padding-right:20px}}.static-width-container .container[data-v-2ff03362]:not(.minimized-container){margin-left:auto;margin-right:auto;width:980px}@media only screen and (max-width:1250px){.static-width-container .container[data-v-2ff03362]:not(.minimized-container){width:692px}}@media only screen and (max-width:735px){.static-width-container .container[data-v-2ff03362]:not(.minimized-container){width:87.5%}}@media only screen and (max-width:320px){.static-width-container .container[data-v-2ff03362]:not(.minimized-container){width:215px}}[data-v-2ff03362] .minimized-container{outline-style:none;--spacing-stacked-margin-large:0.667em;--spacing-stacked-margin-xlarge:1em;--declaration-code-listing-margin:1em 0 0 0;--declaration-conditional-constraints-margin:1em;--declaration-source-link-margin:0.833em;--code-block-style-elements-padding:7px 12px;--spacing-param:var(--spacing-stacked-margin-large);--aside-border-radius:6px;--code-border-radius:6px}[data-v-2ff03362] .minimized-container .description{margin-bottom:1.5em}[data-v-2ff03362] .minimized-container>.primary-content>*{margin-top:1.5em;margin-bottom:1.5em}[data-v-2ff03362] .minimized-container .description{margin-top:0}[data-v-2ff03362] .minimized-container h1,[data-v-2ff03362] .minimized-container h2,[data-v-2ff03362] .minimized-container h3,[data-v-2ff03362] .minimized-container h4,[data-v-2ff03362] .minimized-container h5,[data-v-2ff03362] .minimized-container h6{font-size:1rem;font-weight:700}[data-v-2ff03362] .minimized-container h2{font-size:1.083rem}[data-v-2ff03362] .minimized-container h1{font-size:1.416rem}[data-v-2ff03362] .minimized-container aside{padding:.667rem 1rem}[data-v-2ff03362] .minimized-container .single-line,[data-v-2ff03362] .minimized-container .source{border-radius:var(--code-border-radius)}.description[data-v-2ff03362]{margin-bottom:2.353rem}.description[data-v-2ff03362]:empty{display:none}.description.after-enhanced-hero[data-v-2ff03362]{margin-top:2.353rem}.description[data-v-2ff03362] .content+*{margin-top:var(--spacing-stacked-margin-large)}.full-width-container .doc-content .minimized-container[data-v-2ff03362]{padding-left:1.4rem;padding-right:1.4rem}[data-v-2ff03362] .no-primary-content{--content-table-title-border-width:0px}.sample-download[data-v-2ff03362]{margin-top:20px}.declarations-container[data-v-2ff03362]{margin-top:30px}.declarations-container.minimized-container[data-v-2ff03362]{margin-top:0}[data-v-2ff03362] h1{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-2ff03362] h1{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-2ff03362] h1{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-2ff03362] h2{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-2ff03362] h2{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-2ff03362] h2{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-2ff03362] h3{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-2ff03362] h3{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-2ff03362] h3{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-2ff03362] h4{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-2ff03362] h4{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-2ff03362] h5{font-size:1.2941176471rem;line-height:1.1818181818;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-2ff03362] h5{font-size:1.1764705882rem;line-height:1.2;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-2ff03362] h5{font-size:1.0588235294rem;line-height:1.4444444444;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-2ff03362] h6{font-size:1rem;line-height:1.4705882353;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.doc-content-wrapper[data-v-2ff03362]{display:flex;justify-content:center}.doc-content-wrapper .doc-content[data-v-2ff03362]{min-width:0;width:100%}.with-on-this-page .doc-content-wrapper .doc-content[data-v-2ff03362]{max-width:820px}@media only screen and (min-width:1251px){.with-on-this-page .doc-content-wrapper .doc-content[data-v-2ff03362]{max-width:980px}}@media only screen and (min-width:1500px){.with-on-this-page .doc-content-wrapper .doc-content[data-v-2ff03362]{max-width:1080px}}.quick-navigation-open[data-v-53faf852]{display:flex;align-items:center;justify-content:center;width:16px;border:1px solid var(--color-grid);height:100%;border-radius:var(--border-radius,4px);transition:background-color .15s;box-sizing:border-box}.quick-navigation-open[data-v-53faf852]:hover{background-color:var(--color-fill-tertiary)}@media only screen and (max-width:1023px){.quick-navigation-open[data-v-53faf852]{display:none}}.fromkeyboard .quick-navigation-open[data-v-53faf852]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.tag[data-v-7e76f326]{display:inline-block;padding-right:.5882352941rem}.tag[data-v-7e76f326]:focus{outline:none}.tag button[data-v-7e76f326]{color:var(--color-figure-gray);background-color:var(--color-fill-tertiary);font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);border-radius:.8235294118rem;padding:.2352941176rem .5882352941rem;white-space:nowrap;border:1px solid transparent}@media(hover:hover){.tag button[data-v-7e76f326]:hover{transition:background-color .2s,color .2s;background-color:var(--color-fill-blue);color:#fff}}.tag button[data-v-7e76f326]:focus:active{background-color:var(--color-fill-blue);color:#fff}.fromkeyboard .tag button[data-v-7e76f326]:focus,.tag button.focus[data-v-7e76f326],.tag button[data-v-7e76f326]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.tags[data-v-1f2bd813]{position:relative;margin:0;list-style:none;box-sizing:border-box;transition:padding-right .8s,padding-bottom .8s,max-height 1s,opacity 1s;padding:0}.tags .scroll-wrapper[data-v-1f2bd813]{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:none;scrollbar-color:var(--color-figure-gray-tertiary) transparent;scrollbar-width:thin}.tags .scroll-wrapper[data-v-1f2bd813]::-webkit-scrollbar{height:0}@supports not ((-webkit-touch-callout:none) or (scrollbar-width:none) or (-ms-overflow-style:none)){.tags .scroll-wrapper.scrolling[data-v-1f2bd813]{--scrollbar-height:11px;padding-top:var(--scrollbar-height);height:calc(var(--scroll-target-height) - var(--scrollbar-height));display:flex;align-items:center}}.tags .scroll-wrapper.scrolling[data-v-1f2bd813]::-webkit-scrollbar{height:11px}.tags .scroll-wrapper.scrolling[data-v-1f2bd813]::-webkit-scrollbar-thumb{border-radius:10px;background-color:var(--color-figure-gray-tertiary);border:2px solid transparent;background-clip:padding-box}.tags .scroll-wrapper.scrolling[data-v-1f2bd813]::-webkit-scrollbar-track-piece:end{margin-right:8px}.tags .scroll-wrapper.scrolling[data-v-1f2bd813]::-webkit-scrollbar-track-piece:start{margin-left:8px}.tags ul[data-v-1f2bd813]{margin:0;padding:0;display:flex}.filter[data-v-7a79f6ea]{--input-vertical-padding:0.7647058824rem;--input-horizontal-spacing:0.5882352941rem;--input-height:1.6470588235rem;--input-border-color:var(--color-fill-gray-secondary);--input-text:var(--color-fill-gray-secondary);position:relative;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:calc(var(--border-radius, 4px) + 1px)}.fromkeyboard .filter[data-v-7a79f6ea]:focus{outline:none}.filter__top-wrapper[data-v-7a79f6ea]{display:flex}.filter__filter-button[data-v-7a79f6ea]{position:relative;z-index:1;cursor:text;margin-left:var(--input-horizontal-spacing);margin-right:.1764705882rem}@media only screen and (max-width:735px){.filter__filter-button[data-v-7a79f6ea]{margin-right:.4117647059rem}}.filter__filter-button .svg-icon[data-v-7a79f6ea]{fill:var(--input-text);display:block;height:21px}.filter__filter-button.blue[data-v-7a79f6ea]>*{fill:var(--color-figure-blue);color:var(--color-figure-blue)}.filter.focus .filter__wrapper[data-v-7a79f6ea]{box-shadow:0 0 0 3pt var(--color-focus-color);--input-border-color:var(--color-fill-blue)}.filter__wrapper[data-v-7a79f6ea]{border:1px solid var(--input-border-color);background:var(--color-fill);border-radius:var(--border-radius,4px)}.filter__wrapper--reversed[data-v-7a79f6ea]{display:flex;flex-direction:column-reverse}.filter__wrapper--no-border-style[data-v-7a79f6ea]{border:none}.filter__suggested-tags[data-v-7a79f6ea]{border-top:1px solid var(--color-fill-gray-tertiary);z-index:1;overflow:hidden}.filter__suggested-tags[data-v-7a79f6ea] ul{padding:var(--input-vertical-padding) .5294117647rem;border:1px solid transparent;border-bottom-left-radius:calc(var(--border-radius, 4px) - 1px);border-bottom-right-radius:calc(var(--border-radius, 4px) - 1px)}.fromkeyboard .filter__suggested-tags[data-v-7a79f6ea] ul:focus{outline:none;box-shadow:0 0 0 5px var(--color-focus-color)}.filter__wrapper--reversed .filter__suggested-tags[data-v-7a79f6ea]{border-bottom:1px solid var(--color-fill-gray-tertiary);border-top:none}.filter__selected-tags[data-v-7a79f6ea]{z-index:1;padding-left:4px;margin:-4px 0}@media only screen and (max-width:735px){.filter__selected-tags[data-v-7a79f6ea]{padding-left:0}}.filter__selected-tags[data-v-7a79f6ea] ul{padding:4px}@media only screen and (max-width:735px){.filter__selected-tags[data-v-7a79f6ea] ul{padding-right:.4117647059rem}}.filter__selected-tags[data-v-7a79f6ea] ul .tag:last-child{padding-right:0}.filter__delete-button[data-v-7a79f6ea]{position:relative;margin:0;z-index:1;border-radius:100%}.fromkeyboard .filter__delete-button[data-v-7a79f6ea]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.filter__delete-button .clear-rounded-icon[data-v-7a79f6ea]{height:.7058823529rem;width:.7058823529rem;fill:var(--input-text);display:block}.filter__delete-button-wrapper[data-v-7a79f6ea]{display:flex;align-items:center;padding-right:var(--input-horizontal-spacing);padding-left:.1764705882rem;border-top-right-radius:var(--border-radius,4px);border-bottom-right-radius:var(--border-radius,4px)}.filter__input-label[data-v-7a79f6ea]{position:relative;flex-grow:1;height:var(--input-height);padding:var(--input-vertical-padding) 0}.filter__input-label[data-v-7a79f6ea]:after{content:attr(data-value);visibility:hidden;width:auto;white-space:nowrap;min-width:130px;display:block;text-indent:.4117647059rem}@media only screen and (max-width:735px){.filter__input-label[data-v-7a79f6ea]:after{text-indent:.1764705882rem}}.filter__input-box-wrapper[data-v-7a79f6ea]{overflow-y:hidden;-ms-overflow-style:none;scrollbar-color:var(--color-figure-gray-tertiary) transparent;scrollbar-width:thin;display:flex;overflow-x:auto;align-items:center;cursor:text;flex:1}.filter__input-box-wrapper[data-v-7a79f6ea]::-webkit-scrollbar{height:0}@supports not ((-webkit-touch-callout:none) or (scrollbar-width:none) or (-ms-overflow-style:none)){.filter__input-box-wrapper.scrolling[data-v-7a79f6ea]{--scrollbar-height:11px;padding-top:var(--scrollbar-height);height:calc(var(--scroll-target-height) - var(--scrollbar-height));display:flex;align-items:center}}.filter__input-box-wrapper.scrolling[data-v-7a79f6ea]::-webkit-scrollbar{height:11px}.filter__input-box-wrapper.scrolling[data-v-7a79f6ea]::-webkit-scrollbar-thumb{border-radius:10px;background-color:var(--color-figure-gray-tertiary);border:2px solid transparent;background-clip:padding-box}.filter__input-box-wrapper.scrolling[data-v-7a79f6ea]::-webkit-scrollbar-track-piece:end{margin-right:8px}.filter__input-box-wrapper.scrolling[data-v-7a79f6ea]::-webkit-scrollbar-track-piece:start{margin-left:8px}.filter__input[data-v-7a79f6ea]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-text);height:var(--input-height);border:none;width:100%;position:absolute;background:transparent;z-index:1;text-indent:.4117647059rem}@media only screen and (max-width:735px){.filter__input[data-v-7a79f6ea]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);text-indent:.1764705882rem}}.filter__input[data-v-7a79f6ea]:focus{outline:none}.filter__input[placeholder][data-v-7a79f6ea]::-moz-placeholder{color:var(--input-text);opacity:1}.filter__input[placeholder][data-v-7a79f6ea]::placeholder{color:var(--input-text);opacity:1}.filter__input[placeholder][data-v-7a79f6ea]:-ms-input-placeholder{color:var(--input-text)}.filter__input[placeholder][data-v-7a79f6ea]::-ms-input-placeholder{color:var(--input-text)}.generic-modal[data-v-795f7b59]{position:fixed;top:0;left:0;right:0;bottom:0;margin:0;z-index:11000;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;background:none;overflow:auto}.modal-fullscreen[data-v-795f7b59]{align-items:stretch}.modal-fullscreen .container[data-v-795f7b59]{margin:0;flex:1;width:100%;height:100%;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.modal-standard[data-v-795f7b59]{padding:20px}.modal-standard .container[data-v-795f7b59]{padding:60px;border-radius:var(--border-radius,4px)}@media screen{[data-color-scheme=dark] .modal-standard .container[data-v-795f7b59]{background:#1d1d1f}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .modal-standard .container[data-v-795f7b59]{background:#1d1d1f}}@media only screen and (max-width:735px){.modal-standard[data-v-795f7b59]{padding:0;align-items:stretch}.modal-standard .container[data-v-795f7b59]{margin:20px 0 0;padding:50px 30px;flex:1;width:100%;border-bottom-left-radius:0;border-bottom-right-radius:0}}.backdrop[data-v-795f7b59]{overflow:auto;background:var(--backdrop-background,rgba(0,0,0,.4));-webkit-overflow-scrolling:touch;width:100%;height:100%;position:fixed}.container[data-v-795f7b59]{margin-left:auto;margin-right:auto;width:980px;background:var(--colors-generic-modal-background,var(--color-generic-modal-background));z-index:1;position:relative;overflow:auto;max-width:100%}@media only screen and (max-width:1250px){.container[data-v-795f7b59]{width:692px}}@media only screen and (max-width:735px){.container[data-v-795f7b59]{width:87.5%}}@media only screen and (max-width:320px){.container[data-v-795f7b59]{width:215px}}.close[data-v-795f7b59]{position:absolute;z-index:9999;top:22px;left:22px;width:17px;height:17px;color:#666;cursor:pointer;background:none;border:0;display:flex;align-items:center}.close .close-icon[data-v-795f7b59]{fill:currentColor;width:100%;height:100%}.theme-dark .container[data-v-795f7b59]{background:#000}.theme-dark .container .close[data-v-795f7b59]{color:#b0b0b0}.theme-code .container[data-v-795f7b59]{background-color:var(--code-background,var(--color-code-background))}.highlight[data-v-4a2ce75d]{display:inline}.highlight[data-v-4a2ce75d] .match{font-weight:600;background:var(--color-fill-light-blue-secondary)}@media only screen and (max-width:735px){.preview[data-v-779b8b01]{display:none}}.unavailable[data-v-779b8b01]{align-items:center;display:flex;height:100%;justify-content:center}.loading[data-v-779b8b01]{padding:20px}.loading-row[data-v-779b8b01]{animation:pulse 2.5s ease;animation-delay:calc(1s + .3s*var(--index));animation-fill-mode:forwards;animation-iteration-count:infinite;background-color:var(--color-fill-gray-tertiary);border-radius:4px;height:12px;margin:20px 0;opacity:0}.loading-row[data-v-779b8b01]:first-of-type{margin-top:0}.loading-row[data-v-779b8b01]:last-of-type{margin-bottom:0}.quick-navigation[data-v-479a2da8]{--input-border-color:var(--color-grid)}.quick-navigation input[type=text][data-v-479a2da8]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){.quick-navigation input[type=text][data-v-479a2da8]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.quick-navigation__filter[data-v-479a2da8]{--input-horizontal-spacing:0.8823529412rem}.quick-navigation[data-v-479a2da8] .filter__wrapper{background-color:var(--color-fill-secondary)}.quick-navigation__container[data-v-479a2da8]{background-color:var(--color-fill-secondary);border:solid 1px var(--input-border-color);border-radius:var(--border-radius,4px);margin:0 .9411764706rem}.quick-navigation__container>[data-v-479a2da8]{--input-text:var(--color-figure-gray-secondary)}.quick-navigation__container.focus[data-v-479a2da8]{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.quick-navigation__magnifier-icon-container[data-v-479a2da8]{width:1rem}.quick-navigation__magnifier-icon-container>[data-v-479a2da8]{width:100%}.quick-navigation__magnifier-icon-container.blue .magnifier-icon[data-v-479a2da8]{fill:var(--color-figure-blue);color:var(--color-figure-blue)}.quick-navigation__match-list[data-v-479a2da8]{display:flex;max-height:26.4705882353rem;height:0}.quick-navigation__match-list>[data-v-479a2da8]{min-width:0}.quick-navigation__match-list.active[data-v-479a2da8]{height:auto;border-top:1px solid var(--input-border-color)}.quick-navigation__match-list .no-results[data-v-479a2da8]{margin:.8823529412rem auto;width:-moz-fit-content;width:fit-content}.quick-navigation__refs[data-v-479a2da8]{flex:1;overflow:auto}.quick-navigation__preview[data-v-479a2da8]{border-left:1px solid var(--color-grid);flex:0 0 61.8%;overflow:auto;position:sticky;top:0}.quick-navigation__reference[data-v-479a2da8]{display:block;padding:.5882352941rem .8823529412rem}.quick-navigation__reference[data-v-479a2da8]:hover{text-decoration:none;background-color:var(--color-navigator-item-hover)}.quick-navigation__reference[data-v-479a2da8]:focus{margin:0 .2941176471rem;padding:.5882352941rem .5882352941rem;background-color:var(--color-navigator-item-hover)}.quick-navigation__symbol-match[data-v-479a2da8]{display:flex;height:2.3529411765rem;color:var(--color-figure-gray)}.quick-navigation__symbol-match .symbol-info[data-v-479a2da8]{margin:auto;width:100%}.quick-navigation__symbol-match .symbol-info .navigator-icon[data-v-479a2da8]{margin-right:.5882352941rem}.quick-navigation__symbol-match .symbol-info .symbol-name[data-v-479a2da8]{display:flex}.quick-navigation__symbol-match .symbol-info .symbol-name .symbol-title[data-v-479a2da8]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-navigation__symbol-match .symbol-info .symbol-path[data-v-479a2da8]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray-secondary);display:flex;margin-left:1.5882352941rem;overflow:hidden;white-space:nowrap}.quick-navigation__symbol-match .symbol-info .symbol-path .parent-path[data-v-479a2da8]{padding-right:.2941176471rem}@media print{.sidebar[data-v-5cd50784]{display:none}}.adjustable-sidebar-width[data-v-5cd50784]{display:flex}@media only screen and (max-width:1023px){.adjustable-sidebar-width[data-v-5cd50784]{display:block;position:relative}}.adjustable-sidebar-width.dragging[data-v-5cd50784] *{cursor:col-resize!important}.adjustable-sidebar-width.sidebar-hidden.dragging[data-v-5cd50784] *{cursor:e-resize!important}.sidebar[data-v-5cd50784]{position:relative}@media only screen and (max-width:1023px){.sidebar[data-v-5cd50784]{position:static}}.aside[data-v-5cd50784]{width:250px;position:relative;height:100%;max-width:100vw}.aside.no-transition[data-v-5cd50784]{transition:none!important}@media only screen and (min-width:1024px){.aside[data-v-5cd50784]{transition:width .3s ease-in,visibility 0s linear var(--visibility-transition-time,0s)}.aside.dragging[data-v-5cd50784]:not(.is-opening-on-large):not(.hide-on-large){transition:none}.aside.hide-on-large[data-v-5cd50784]{width:0!important;visibility:hidden;pointer-events:none;--visibility-transition-time:0.3s}}@media only screen and (max-width:1023px){.aside[data-v-5cd50784]{width:100%!important;overflow:hidden;min-width:0;max-width:100%;height:calc(var(--app-height) - var(--top-offset-mobile));position:fixed;top:var(--top-offset-mobile);bottom:0;z-index:9998;transform:translateX(-100%);transition:transform .15s ease-in;left:0}.aside[data-v-5cd50784] .aside-animated-child{opacity:0}.aside.show-on-mobile[data-v-5cd50784]{transform:translateX(0)}.aside.show-on-mobile[data-v-5cd50784] .aside-animated-child{--index:0;opacity:1;transition:opacity .15s linear;transition-delay:calc(var(--index)*.15s + .15s)}.aside.has-mobile-top-offset[data-v-5cd50784]{border-top:1px solid var(--color-fill-gray-tertiary)}}.content[data-v-5cd50784]{display:flex;flex-flow:column;min-width:0;flex:1 1 auto;height:100%}.resize-handle[data-v-5cd50784]{position:absolute;cursor:col-resize;top:0;bottom:0;right:0;width:5px;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1;transition:background-color .15s;transform:translateX(50%)}@media only screen and (max-width:1023px){.resize-handle[data-v-5cd50784]{display:none}}.resize-handle[data-v-5cd50784]:hover{background:var(--color-fill-gray-tertiary)}.navigator-card-item[data-v-41ab423b]{--nav-head-wrapper-left-space:10px;--nav-head-wrapper-right-space:20px;--head-wrapper-vertical-space:5px;--nav-depth-spacer:25px;--nesting-index:0;display:flex;align-items:stretch;min-height:32px;box-sizing:border-box}.fromkeyboard .navigator-card-item[data-v-41ab423b]:focus-within{outline:4px solid var(--color-focus-color);outline-offset:-4px}.fromkeyboard .navigator-card-item[data-v-41ab423b]:focus-within:not(.is-group){background:var(--color-navigator-item-hover)}.navigator-card-item.active[data-v-41ab423b]{background:var(--color-fill-gray-quaternary)}.hover .navigator-card-item[data-v-41ab423b]:not(.is-group){background:var(--color-navigator-item-hover)}.depth-spacer[data-v-41ab423b]{width:calc(var(--nesting-index)*15px + var(--nav-depth-spacer));height:100%;position:relative;flex:0 0 auto}.title-container[data-v-41ab423b]{width:100%;min-width:0;display:flex;align-items:center}.navigator-icon-wrapper[data-v-41ab423b]{margin-right:7px}.head-wrapper[data-v-41ab423b]{padding:var(--head-wrapper-vertical-space) var(--nav-head-wrapper-right-space) var(--head-wrapper-vertical-space) var(--nav-head-wrapper-left-space);position:relative;display:flex;align-items:center;flex:1;min-width:0}@supports(padding:max(0px)){.head-wrapper[data-v-41ab423b]{padding-left:max(var(--nav-head-wrapper-left-space),env(safe-area-inset-left));padding-right:max(var(--nav-head-wrapper-right-space),env(safe-area-inset-right))}}.highlight[data-v-7b81ca08]{display:inline}.highlight[data-v-7b81ca08] .match{font-weight:600;background:var(--color-fill-light-blue-secondary)}.is-group .leaf-link[data-v-c780f74c]{color:var(--color-figure-gray-secondary);font-weight:600}.is-group .leaf-link[data-v-c780f74c]:after{display:none}.navigator-icon[data-v-c780f74c]{display:flex;flex:0 0 auto}.navigator-icon.changed[data-v-c780f74c]{border:none;width:1em;height:1em;z-index:0}.navigator-icon.changed[data-v-c780f74c]:after{top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%,-50%);background-image:url(../img/modified-icon.efb2697d.svg);margin:0}@media screen{[data-color-scheme=dark] .navigator-icon.changed[data-v-c780f74c]:after{background-image:url(../img/modified-icon.efb2697d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .navigator-icon.changed[data-v-c780f74c]:after{background-image:url(../img/modified-icon.efb2697d.svg)}}.navigator-icon.changed-added[data-v-c780f74c]:after{background-image:url(../img/added-icon.832a5d2c.svg)}@media screen{[data-color-scheme=dark] .navigator-icon.changed-added[data-v-c780f74c]:after{background-image:url(../img/added-icon.832a5d2c.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .navigator-icon.changed-added[data-v-c780f74c]:after{background-image:url(../img/added-icon.832a5d2c.svg)}}.navigator-icon.changed-deprecated[data-v-c780f74c]:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}@media screen{[data-color-scheme=dark] .navigator-icon.changed-deprecated[data-v-c780f74c]:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .navigator-icon.changed-deprecated[data-v-c780f74c]:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}.leaf-link[data-v-c780f74c]{color:var(--color-figure-gray);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:inline;vertical-align:middle;font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.fromkeyboard .leaf-link[data-v-c780f74c]:focus{outline:none}.leaf-link[data-v-c780f74c]:hover{text-decoration:none}.leaf-link.bolded[data-v-c780f74c]{font-weight:600}.leaf-link[data-v-c780f74c]:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0}.extended-content[data-v-c780f74c]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-toggle[data-v-c780f74c]{overflow:hidden;position:absolute;width:100%;height:100%;padding-right:5px;box-sizing:border-box;z-index:1;display:flex;align-items:center;justify-content:flex-end}.chevron[data-v-c780f74c]{width:10px}.chevron.animating[data-v-c780f74c]{transition:transform .15s ease-in}.chevron.rotate[data-v-c780f74c]{transform:rotate(90deg)}.navigator-card[data-v-60246d6e]{--card-vertical-spacing:8px;--card-horizontal-spacing:20px;--nav-filter-horizontal-padding:20px;--visibility-delay:1s;display:flex;flex-direction:column;min-height:0;height:calc(var(--app-height) - var(--nav-height, 0px));position:sticky;top:var(--nav-height,0)}@media only screen and (max-width:1023px){.navigator-card[data-v-60246d6e]{height:100%;position:static;background:var(--color-fill)}}.navigator-card .navigator-card-full-height[data-v-60246d6e]{min-height:0;flex:1 1 auto}.navigator-card .head-inner[data-v-60246d6e]{overflow:hidden}.navigator-card .head-wrapper[data-v-60246d6e]{position:relative;flex:1 0 auto}.navigator-card .navigator-head[data-v-60246d6e]{--navigator-head-padding-right:calc(var(--card-horizontal-spacing)*2 + 19px);padding:0 var(--navigator-head-padding-right) 0 var(--card-horizontal-spacing);background:var(--color-fill);border-bottom:1px solid var(--color-grid);display:flex;align-items:center;height:3.0588235294rem;white-space:nowrap}.navigator-card .navigator-head .card-link[data-v-60246d6e]{color:var(--color-text);font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);font-weight:600;overflow:hidden;text-overflow:ellipsis}.navigator-card .navigator-head .badge[data-v-60246d6e]{margin-top:0}.navigator-card .navigator-head.router-link-exact-active[data-v-60246d6e]{background:var(--color-fill)}.navigator-card .navigator-head.router-link-exact-active .card-link[data-v-60246d6e]{font-weight:700}.navigator-card .navigator-head[data-v-60246d6e]:hover{background:var(--color-navigator-item-hover);text-decoration:none}.fromkeyboard .navigator-card .navigator-head:focus .card-link[data-v-60246d6e]{outline:4px solid var(--color-focus-color);outline-offset:1px}@supports(padding:max(0px)){.navigator-card .navigator-head[data-v-60246d6e]{padding-left:max(var(--card-horizontal-spacing),env(safe-area-inset-left));padding-right:max(var(--navigator-head-padding-right),env(safe-area-inset-right))}}@media only screen and (max-width:1023px){.navigator-card .navigator-head[data-v-60246d6e]{justify-content:center;--navigator-head-padding-right:var(--card-horizontal-spacing)}}@media only screen and (max-width:767px){.navigator-card .navigator-head[data-v-60246d6e]{height:2.8235294118rem;padding:0 20px}}.close-card[data-v-60246d6e]{display:flex;position:absolute;z-index:1;align-items:center;justify-content:center;right:1rem;padding:5px;margin-left:-5px;top:calc(50% - 14px);transition:transform .3s ease-in 0s,visibility 0s}@media only screen and (max-width:1023px){.close-card[data-v-60246d6e]{right:unset;top:0;left:0;margin:0;padding:0 1.2941176471rem 0 20px;height:100%}@supports(padding:max(0px)){.close-card[data-v-60246d6e]{padding-left:max(1.2941176471rem,env(safe-area-inset-left))}}}@media only screen and (max-width:767px){.close-card[data-v-60246d6e]{padding-left:.9411764706rem;padding-right:.9411764706rem}@supports(padding:max(0px)){.close-card[data-v-60246d6e]{padding-left:max(.9411764706rem,env(safe-area-inset-left))}}}.close-card .close-icon[data-v-60246d6e]{width:19px;height:19px}@media only screen and (min-width:1024px){.close-card.hide-on-large[data-v-60246d6e]{display:none}.close-card[data-v-60246d6e]:hover{border-radius:var(--border-radius,4px);background:var(--color-fill-gray-quaternary)}.sidebar-hidden .close-card[data-v-60246d6e]{transition:transform .3s ease-in 0s,visibility 0s linear .3s;visibility:hidden;transform:translateX(3.7647058824rem)}}[data-v-60246d6e] .card-body{padding-right:0;flex:1 1 auto;min-height:0;height:100%}@media only screen and (max-width:1023px){[data-v-60246d6e] .card-body{--card-vertical-spacing:0px}}.navigator-card-inner[data-v-60246d6e]{display:flex;flex-flow:column;height:100%}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.vue-recycle-scroller__slot{-webkit-box-flex:1;-ms-flex:auto 0 0px;flex:auto 0 0}.vue-recycle-scroller__item-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{border:none;background-color:transparent;opacity:0}.resize-observer[data-v-b329ee4c],.resize-observer[data-v-b329ee4c] object{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;pointer-events:none;display:block;overflow:hidden}.navigator-card.filter-on-top .filter-wrapper[data-v-66549638]{order:1;position:static}.navigator-card.filter-on-top .card-body[data-v-66549638]{order:2}.no-items-wrapper[data-v-66549638]{overflow:hidden;color:var(--color-figure-gray-tertiary)}.no-items-wrapper .no-items[data-v-66549638]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding:var(--card-vertical-spacing) var(--card-horizontal-spacing);min-width:200px;box-sizing:border-box}.navigator-filter[data-v-66549638]{box-sizing:border-box;padding:15px var(--nav-filter-horizontal-padding);border-top:1px solid var(--color-grid);height:71px;display:flex;align-items:flex-end}.filter-on-top .navigator-filter[data-v-66549638]{border-top:none;align-items:flex-start}@supports(padding:max(0px)){.navigator-filter[data-v-66549638]{padding-left:max(var(--nav-filter-horizontal-padding),env(safe-area-inset-left));padding-right:max(var(--nav-filter-horizontal-padding),env(safe-area-inset-right))}}@media only screen and (max-width:1023px){.navigator-filter[data-v-66549638]{--nav-filter-horizontal-padding:20px;border:none;padding-top:10px;padding-bottom:10px;height:60px}}.navigator-filter .input-wrapper[data-v-66549638]{position:relative;flex:1;min-width:0}.navigator-filter .filter-component[data-v-66549638]{--input-vertical-padding:8px;--input-height:22px;--input-border-color:var(--color-grid);--input-text:var(--color-figure-gray-secondary)}.navigator-filter .filter-component[data-v-66549638] .filter__input{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.navigator-filter .filter-component[data-v-66549638] .filter__input-label:after{min-width:70px}.scroller[data-v-66549638]{height:100%;box-sizing:border-box;padding:var(--card-vertical-spacing) 0;padding-bottom:calc(var(--top-offset, 0px) + var(--card-vertical-spacing));transition:padding-bottom .15s ease-in}@media only screen and (max-width:1023px){.scroller[data-v-66549638]{padding-bottom:10em}}.scroller[data-v-66549638] .vue-recycle-scroller__item-wrapper{transform:translateZ(0)}.filter-wrapper[data-v-66549638]{position:sticky;bottom:0;background:var(--color-fill)}.sidebar-transitioning .filter-wrapper[data-v-66549638]{flex:1 0 71px;overflow:hidden}@media only screen and (max-width:1023px){.sidebar-transitioning .filter-wrapper[data-v-66549638]{flex-basis:60px}}.loader[data-v-0de29914]{height:.7058823529rem;background-color:var(--color-fill-gray-tertiary);border-radius:4px}.navigator-icon[data-v-0de29914]{width:16px;height:16px;border-radius:2px;background-color:var(--color-fill-gray-tertiary)}.loading-navigator-item[data-v-0de29914]{animation:pulse 2.5s ease;animation-iteration-count:infinite;animation-fill-mode:forwards;opacity:0;animation-delay:calc(var(--visibility-delay) + .3s*var(--index))}.delay-visibility-enter-active[data-v-4b6d345f]{transition:visibility var(--visibility-delay);visibility:hidden}.loading-navigator[data-v-4b6d345f]{padding-top:var(--card-vertical-spacing)}.navigator[data-v-159b9764]{height:100%;display:flex;flex-flow:column}@media only screen and (max-width:1023px){.navigator[data-v-159b9764]{position:static;transition:none}}.hierarchy-collapsed-items[data-v-f4ced690]{position:relative;display:inline-flex;align-items:center;margin-left:.1764705882rem}.hierarchy-collapsed-items .hierarchy-item-icon[data-v-f4ced690]{width:9px;height:15px;margin-right:.1764705882rem;display:flex;justify-content:center;font-size:1em;align-self:baseline}.nav--in-breakpoint-range .hierarchy-collapsed-items[data-v-f4ced690]{display:none}.hierarchy-collapsed-items .toggle[data-v-f4ced690]{background:var(--color-nav-hierarchy-collapse-background);border-color:var(--color-nav-hierarchy-collapse-borders);border-radius:var(--border-radius,4px);border-style:solid;border-width:0;font-weight:600;height:1.1176470588rem;text-align:center;width:2.1176470588rem;display:flex;align-items:center;justify-content:center}.theme-dark .hierarchy-collapsed-items .toggle[data-v-f4ced690]{background:var(--color-nav-dark-hierarchy-collapse-background)}.hierarchy-collapsed-items .toggle.focused[data-v-f4ced690],.hierarchy-collapsed-items .toggle[data-v-f4ced690]:active,.hierarchy-collapsed-items .toggle[data-v-f4ced690]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.indicator[data-v-f4ced690]{width:1em;height:1em;display:flex;align-items:center}.indicator .toggle-icon[data-v-f4ced690]{width:100%}.dropdown[data-v-f4ced690]{background:var(--color-nav-hierarchy-collapse-background);border-color:var(--color-nav-hierarchy-collapse-borders);border-radius:var(--border-radius,4px);border-style:solid;box-shadow:0 1px 4px -1px var(--color-figure-gray-secondary);border-width:0;padding:0 .5rem;position:absolute;z-index:42;top:calc(100% + .41176rem)}.theme-dark .dropdown[data-v-f4ced690]{background:var(--color-nav-dark-hierarchy-collapse-background);border-color:var(--color-nav-dark-hierarchy-collapse-borders)}.dropdown.collapsed[data-v-f4ced690]{opacity:0;transform:translate3d(0,-.4117647059rem,0);transition:opacity .25s ease,transform .25s ease,visibility 0s linear .25s;visibility:hidden}.dropdown[data-v-f4ced690]:not(.collapsed){opacity:1;transform:none;transition:opacity .25s ease,transform .25s ease,visibility 0s linear 0s;visibility:visible}.nav--in-breakpoint-range .dropdown[data-v-f4ced690]:not(.collapsed){display:none}.dropdown[data-v-f4ced690]:before{border-bottom-color:var(--color-nav-hierarchy-collapse-background);border-bottom-style:solid;border-bottom-width:.5rem;border-left-color:transparent;border-left-style:solid;border-left-width:.5rem;border-right-color:transparent;border-right-style:solid;border-right-width:.5rem;content:"";left:1.2647058824rem;position:absolute;top:-.4411764706rem}.theme-dark .dropdown[data-v-f4ced690]:before{border-bottom-color:var(--color-nav-dark-hierarchy-collapse-background)}.dropdown-item[data-v-f4ced690]{border-top-color:var(--color-nav-hierarchy-collapse-borders);border-top-style:solid;border-top-width:1px}.theme-dark .dropdown-item[data-v-f4ced690]{border-top-color:var(--color-nav-dark-hierarchy-collapse-borders)}.dropdown-item[data-v-f4ced690]:first-child{border-top:none}.nav-menu-link[data-v-f4ced690]{max-width:57.6470588235rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;padding:.75rem 1rem}.hierarchy-item[data-v-6cf5f1d1]{display:flex;align-items:center;margin-left:.1764705882rem}.hierarchy-item[data-v-6cf5f1d1] .hierarchy-item-icon{width:9px;height:15px;margin-right:.1764705882rem;display:flex;justify-content:center;font-size:1em;align-self:baseline}.nav--in-breakpoint-range .hierarchy-item[data-v-6cf5f1d1] .hierarchy-item-icon{display:none}.nav--in-breakpoint-range .hierarchy-item[data-v-6cf5f1d1]{border-top:1px solid var(--color-nav-hierarchy-item-borders);display:flex;align-items:center}.theme-dark.nav--in-breakpoint-range .hierarchy-item[data-v-6cf5f1d1]{border-top-color:var(--color-nav-dark-hierarchy-item-borders)}.nav--in-breakpoint-range .hierarchy-item[data-v-6cf5f1d1]:first-of-type{border-top:none}.hierarchy-item.collapsed[data-v-6cf5f1d1]{display:none}.nav--in-breakpoint-range .hierarchy-item.collapsed[data-v-6cf5f1d1]{display:inline-block}.item[data-v-6cf5f1d1]{display:inline-block;vertical-align:middle}.nav--in-breakpoint-range .item[data-v-6cf5f1d1]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:100%;line-height:2.4705882353rem}@media only screen and (min-width:768px){.hierarchy-item:first-child:last-child .item[data-v-6cf5f1d1],.hierarchy-item:first-child:last-child~.hierarchy-item .item[data-v-6cf5f1d1]{max-width:45rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:last-child .item[data-v-6cf5f1d1],.has-badge .hierarchy-item:first-child:last-child~.hierarchy-item .item[data-v-6cf5f1d1],.hierarchy-item:first-child:nth-last-child(2) .item[data-v-6cf5f1d1],.hierarchy-item:first-child:nth-last-child(2)~.hierarchy-item .item[data-v-6cf5f1d1]{max-width:36rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(2) .item[data-v-6cf5f1d1],.has-badge .hierarchy-item:first-child:nth-last-child(2)~.hierarchy-item .item[data-v-6cf5f1d1]{max-width:28.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(3) .item[data-v-6cf5f1d1],.hierarchy-item:first-child:nth-last-child(3)~.hierarchy-item .item[data-v-6cf5f1d1]{max-width:27rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(3) .item[data-v-6cf5f1d1],.has-badge .hierarchy-item:first-child:nth-last-child(3)~.hierarchy-item .item[data-v-6cf5f1d1]{max-width:21.6rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(4) .item[data-v-6cf5f1d1],.hierarchy-item:first-child:nth-last-child(4)~.hierarchy-item .item[data-v-6cf5f1d1]{max-width:18rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(4) .item[data-v-6cf5f1d1],.has-badge .hierarchy-item:first-child:nth-last-child(4)~.hierarchy-item .item[data-v-6cf5f1d1]{max-width:14.4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(5) .item[data-v-6cf5f1d1],.hierarchy-item:first-child:nth-last-child(5)~.hierarchy-item .item[data-v-6cf5f1d1]{max-width:9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(5) .item[data-v-6cf5f1d1],.has-badge .hierarchy-item:first-child:nth-last-child(5)~.hierarchy-item .item[data-v-6cf5f1d1]{max-width:7.2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-collapsed-items~.hierarchy-item .item[data-v-6cf5f1d1]{max-width:10.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-collapsed-items~.hierarchy-item:last-child .item[data-v-6cf5f1d1]{max-width:none}.has-badge .hierarchy-collapsed-items~.hierarchy-item .item[data-v-6cf5f1d1]{max-width:8.64rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.hierarchy[data-v-069ffff2]{justify-content:flex-start;min-width:0;margin-right:80px}.nav--in-breakpoint-range .hierarchy[data-v-069ffff2]{margin-right:0}.hierarchy .root-hierarchy .item[data-v-069ffff2]{max-width:10rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-menu-setting-label[data-v-d12167e0]{margin-right:.3529411765rem;white-space:nowrap}.language-container[data-v-d12167e0]{flex:1 0 auto}.language-dropdown[data-v-d12167e0]{-webkit-text-size-adjust:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background-color:transparent;box-sizing:inherit;padding:0 11px 0 4px;margin-left:-4px;font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);cursor:pointer;position:relative;z-index:1}@media only screen and (max-width:1023px){.language-dropdown[data-v-d12167e0]{font-size:.8235294118rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.language-dropdown[data-v-d12167e0]:focus{outline:none}.fromkeyboard .language-dropdown[data-v-d12167e0]:focus{outline:4px solid var(--color-focus-color);outline-offset:1px}.language-sizer[data-v-d12167e0]{position:absolute;opacity:0;pointer-events:none;padding:0}.language-toggle-container[data-v-d12167e0]{display:flex;align-items:center;padding-right:.1764705882rem;position:relative}.nav--in-breakpoint-range .language-toggle-container[data-v-d12167e0]{display:none}.language-toggle-container .toggle-icon[data-v-d12167e0]{width:.6em;height:.6em;position:absolute;right:7px}.language-toggle-label[data-v-d12167e0]{margin-right:2px}.language-toggle.nav-menu-toggle-label[data-v-d12167e0]{margin-right:6px}.language-list[data-v-d12167e0]{display:inline-block;margin-top:0}.language-list-container[data-v-d12167e0]{display:none}.language-list-item[data-v-d12167e0],.nav--in-breakpoint-range .language-list-container[data-v-d12167e0]{display:inline-block}.language-list-item[data-v-d12167e0]:not(:first-child){border-left:1px solid #424242;margin-left:6px;padding-left:6px}[data-v-78ad19e0] .nav-menu{line-height:1.5}[data-v-78ad19e0] .nav-menu,[data-v-78ad19e0] .nav-menu-settings{font-size:.8235294118rem;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}[data-v-78ad19e0] .nav-menu-settings{min-width:0;line-height:1.2857142857}@media only screen and (max-width:1023px){[data-v-78ad19e0] .nav-menu-settings{font-size:.8235294118rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (min-width:1024px){[data-v-78ad19e0] .nav-menu-settings{margin-left:.5882352941rem}}.nav--in-breakpoint-range[data-v-78ad19e0] .nav-menu-settings:not([data-previous-menu-children-count="0"]) .nav-menu-setting:first-child{border-top:1px solid #b0b0b0;display:flex;align-items:center}[data-v-78ad19e0] .nav-menu-settings .nav-menu-setting{display:flex;align-items:center;color:var(--color-nav-current-link);margin-left:0;min-width:0}[data-v-78ad19e0] .nav-menu-settings .nav-menu-setting:first-child:not(:only-child){margin-right:.5882352941rem}.nav--in-breakpoint-range[data-v-78ad19e0] .nav-menu-settings .nav-menu-setting:first-child:not(:only-child){margin-right:0}.theme-dark[data-v-78ad19e0] .nav-menu-settings .nav-menu-setting{color:var(--color-nav-dark-current-link)}.nav--in-breakpoint-range[data-v-78ad19e0] .nav-menu-settings .nav-menu-setting:not(:first-child){border-top:1px solid #424242}.documentation-nav[data-v-78ad19e0] .nav-title{font-size:.8235294118rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.documentation-nav[data-v-78ad19e0] .nav-title .nav-title-link.inactive{height:auto;color:var(--color-figure-gray-secondary-alt)}.theme-dark.documentation-nav[data-v-78ad19e0] .nav-title .nav-title-link.inactive{color:#b0b0b0}.sidenav-toggle-wrapper[data-v-78ad19e0]{display:flex;margin-top:1px}.nav--in-breakpoint-range .sidenav-toggle-wrapper[data-v-78ad19e0]{display:flex!important}@media only screen and (min-width:1024px){.sidenav-toggle-enter-active[data-v-78ad19e0],.sidenav-toggle-leave-active[data-v-78ad19e0]{transition:margin .3s ease-in 0s}.sidenav-toggle-enter[data-v-78ad19e0],.sidenav-toggle-leave-to[data-v-78ad19e0]{margin-left:-3.7647058824rem}}.sidenav-toggle[data-v-78ad19e0]{align-self:center;color:var(--color-nav-link-color);position:relative;margin:0 -5px}.theme-dark .sidenav-toggle[data-v-78ad19e0]{color:var(--color-nav-dark-link-color)}.sidenav-toggle:hover .sidenav-icon-wrapper[data-v-78ad19e0]{background:var(--color-fill-gray-quaternary)}.theme-dark .sidenav-toggle:hover .sidenav-icon-wrapper[data-v-78ad19e0]{background:#424242}.sidenav-toggle__separator[data-v-78ad19e0]{height:.8em;width:1px;background:var(--color-nav-color);align-self:center;margin:0 1.2941176471rem}.nav--in-breakpoint-range .sidenav-toggle[data-v-78ad19e0]{margin-left:-14px;margin-right:-14px;padding-left:14px;padding-right:14px;align-self:stretch}.nav--in-breakpoint-range .sidenav-toggle__separator[data-v-78ad19e0]{display:none}.sidenav-icon-wrapper[data-v-78ad19e0]{padding:5px;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius,4px)}.sidenav-icon[data-v-78ad19e0]{display:flex;width:19px;height:19px}[data-v-14c47d72] .generic-modal{overflow-y:overlay}[data-v-14c47d72] .modal-fullscreen>.container{background-color:transparent;height:-moz-fit-content;height:fit-content;flex:auto;margin:9.4117647059rem 0;max-width:47.0588235294rem;overflow:visible}[data-v-14c47d72] .navigator-filter .quick-navigation-open{margin-left:var(--nav-filter-horizontal-padding);width:calc(var(--nav-filter-horizontal-padding)*2)}.doc-topic-view[data-v-14c47d72]{--delay:1s;display:flex;flex-flow:column;background:var(--colors-text-background,var(--color-text-background))}.doc-topic-view .delay-hiding-leave-active[data-v-14c47d72]{transition:display var(--delay)}.doc-topic-aside[data-v-14c47d72]{height:100%;box-sizing:border-box;border-right:1px solid var(--color-grid)}@media only screen and (max-width:1023px){.doc-topic-aside[data-v-14c47d72]{background:var(--color-fill);border-right:none}.sidebar-transitioning .doc-topic-aside[data-v-14c47d72]{border-right:1px solid var(--color-grid)}}.topic-wrapper[data-v-14c47d72]{flex:1 1 auto;width:100%}.full-width-container[data-v-14c47d72]{max-width:1920px;margin-left:auto;margin-right:auto}@media only screen and (min-width:1920px){.full-width-container[data-v-14c47d72]{border-left:1px solid var(--color-grid);border-right:1px solid var(--color-grid);box-sizing:border-box}} \ No newline at end of file diff --git a/docs/css/index.3a335429.css b/docs/css/index.3a335429.css new file mode 100644 index 0000000..07a87fc --- /dev/null +++ b/docs/css/index.3a335429.css @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */.color-scheme-toggle[data-v-0c0360ce]{--toggle-color-fill:var(--color-button-background);--toggle-color-text:var(--color-fill-blue);font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);border:1px solid var(--toggle-color-fill);border-radius:var(--toggle-border-radius-outer,var(--border-radius,4px));display:inline-flex;padding:1px}@media screen{[data-color-scheme=dark] .color-scheme-toggle[data-v-0c0360ce]{--toggle-color-text:var(--color-figure-blue)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .color-scheme-toggle[data-v-0c0360ce]{--toggle-color-text:var(--color-figure-blue)}}@media print{.color-scheme-toggle[data-v-0c0360ce]{display:none}}:root.no-js .color-scheme-toggle[data-v-0c0360ce]{visibility:hidden}input[data-v-0c0360ce]{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.fromkeyboard label[data-v-0c0360ce]:focus-within{outline:4px solid var(--color-focus-color);outline-offset:1px}.text[data-v-0c0360ce]{border:1px solid transparent;border-radius:var(--toggle-border-radius-inner,2px);color:var(--toggle-color-text);display:inline-block;text-align:center;padding:1px 6px;min-width:42px;box-sizing:border-box}.text[data-v-0c0360ce]:hover{cursor:pointer}input:checked+.text[data-v-0c0360ce]{--toggle-color-text:var(--color-button-text);background:var(--toggle-color-fill);border-color:var(--toggle-color-fill)}.footer[data-v-f1d65b2a]{border-top:1px solid var(--color-grid)}.row[data-v-f1d65b2a]{margin-left:auto;margin-right:auto;width:1536px;width:980px;display:flex;flex-direction:row-reverse;margin:20px auto}@media only screen and (max-width:1250px){.row[data-v-f1d65b2a]{width:692px}}@media only screen and (max-width:735px){.row[data-v-f1d65b2a]{width:87.5%}}@media only screen and (max-width:320px){.row[data-v-f1d65b2a]{width:215px}}@media only screen and (max-width:735px){.row[data-v-f1d65b2a]{width:100%;padding:0 .9411764706rem;box-sizing:border-box}}.InitialLoadingPlaceholder[data-v-35c356b6]{background:var(--colors-loading-placeholder-background,var(--color-loading-placeholder-background));height:100vh;width:100%}.svg-icon[data-v-3434f4d2]{fill:var(--colors-svg-icon-fill-light,var(--color-svg-icon));transform:scale(1);-webkit-transform:scale(1);overflow:visible}.theme-dark .svg-icon[data-v-3434f4d2]{fill:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}@media screen{[data-color-scheme=dark] .svg-icon[data-v-3434f4d2]{fill:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .svg-icon[data-v-3434f4d2]{fill:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}}.svg-icon.icon-inline[data-v-3434f4d2]{display:inline-block;vertical-align:middle;fill:currentColor}.svg-icon.icon-inline[data-v-3434f4d2] .svg-icon-stroke{stroke:currentColor}[data-v-3434f4d2] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-light,var(--color-svg-icon))}.theme-dark[data-v-3434f4d2] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}@media screen{[data-color-scheme=dark][data-v-3434f4d2] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto][data-v-3434f4d2] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}}.suggest-lang[data-v-c2dca0ae]{background:#000;color:#fff;display:flex;justify-content:center;border-bottom:1px solid var(--color-grid)}.suggest-lang__wrapper[data-v-c2dca0ae]{display:flex;align-items:center;width:100%;max-width:var(--wrapper-max-width,1920px);margin:0 .9411764706rem;position:relative;height:52px}.suggest-lang__link[data-v-c2dca0ae]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin:0 auto;color:#09f}.suggest-lang__close-icon-wrapper[data-v-c2dca0ae]{position:absolute;right:-.2352941176rem;top:0;height:100%;box-sizing:border-box;display:flex;align-items:center;z-index:1}.suggest-lang__close-icon-button[data-v-c2dca0ae]{padding:.2352941176rem}.suggest-lang__close-icon-button .close-icon[data-v-c2dca0ae]{width:8px;display:block}.suggest-lang .inline-chevron-right-icon[data-v-c2dca0ae]{padding-left:.2352941176rem;width:8px}select[data-v-d21858a2]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-fill-blue);padding-right:15px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;cursor:pointer}select[data-v-d21858a2]:hover{text-decoration:underline}.locale-selector[data-v-d21858a2]{position:relative}.svg-icon.icon-inline[data-v-d21858a2]{position:absolute;fill:var(--color-fill-blue);right:2px;bottom:7px;height:5px}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;background-color:var(--colors-text-background,var(--color-text-background));height:100%}abbr,blockquote,body,button,dd,dl,dt,fieldset,figure,form,h1,h2,h3,h4,h5,h6,hgroup,input,legend,li,ol,p,pre,ul{margin:0;padding:0}address,caption,code,figcaption,pre,th{font-size:1em;font-weight:400;font-style:normal}fieldset,iframe,img{border:0}caption,th{text-align:left}table{border-collapse:collapse;border-spacing:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}button{background:none;border:0;box-sizing:content-box;color:inherit;cursor:pointer;font:inherit;line-height:inherit;overflow:visible;vertical-align:inherit}button:disabled{cursor:default}:focus{outline:4px solid var(--color-focus-color);outline-offset:1px}::-moz-focus-inner{border:0;padding:0}@media print{#app-main,#content,body{color:#000}a,a:link,a:visited{color:#000;text-decoration:none}.hide,.noprint{display:none}}body{height:100%;min-width:320px}html{font:var(--typography-html-font,17px "Helvetica Neue","Helvetica","Arial",sans-serif);quotes:"“" "”"}html:lang(ja-JP){quotes:"「" "」"}body{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);background-color:var(--color-text-background);color:var(--colors-text,var(--color-text));font-style:normal;word-wrap:break-word;--spacing-stacked-margin-small:0.4em;--spacing-stacked-margin-large:0.8em;--spacing-stacked-margin-xlarge:calc(var(--spacing-stacked-margin-large)*2);--spacing-param:1.6470588235rem;--declaration-code-listing-margin:30px 0 0 0;--code-block-style-elements-padding:8px 14px}body,button,input,select,textarea{font-synthesis:none;-moz-font-feature-settings:"kern";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;direction:ltr;text-align:left}h1,h2,h3,h4,h5,h6{color:var(--colors-header-text,var(--color-header-text))}h1+*,h2+*,h3+*,h4+*,h5+*,h6+*{margin-top:var(--spacing-stacked-margin-large)}ol+h1,ol+h2,ol+h3,ol+h4,ol+h5,ol+h6,p+h1,p+h2,p+h3,p+h4,p+h5,p+h6,ul+h1,ul+h2,ul+h3,ul+h4,ul+h5,ul+h6{margin-top:1.6em}ol+*,p+*,ul+*{margin-top:var(--spacing-stacked-margin-large)}ol,ul{margin-left:1.1764705882em}ol ol,ol ul,ul ol,ul ul{margin-top:0;margin-bottom:0}nav ol,nav ul{margin:0;list-style:none}li li{font-size:1em}a{color:var(--colors-link,var(--color-link))}a:link,a:visited{text-decoration:none}a.inline-link,a:hover{text-decoration:underline}a:active{text-decoration:none}p+a{display:inline-block}b,strong{font-weight:600}cite,dfn,em,i{font-style:italic}sup{font-size:.6em;vertical-align:top;position:relative;bottom:-.2em}h1 sup,h2 sup,h3 sup{font-size:.4em}sup a{vertical-align:inherit;color:inherit}sup a:hover{color:var(--figure-blue);text-decoration:none}sub{line-height:1}abbr{border:0}pre{overflow:auto;-webkit-overflow-scrolling:auto;white-space:pre;word-wrap:normal}code{font-family:var(--typography-html-font-mono,Menlo,monospace);font-weight:inherit;letter-spacing:0}.syntax-addition{color:var(--syntax-addition,var(--color-syntax-addition))}.syntax-comment{color:var(--syntax-comment,var(--color-syntax-comments))}.syntax-quote{color:var(--syntax-quote,var(--color-syntax-comments))}.syntax-deletion{color:var(--syntax-deletion,var(--color-syntax-deletion))}.syntax-keyword{color:var(--syntax-keyword,var(--color-syntax-keywords))}.syntax-literal{color:var(--syntax-literal,var(--color-syntax-keywords))}.syntax-selector-tag{color:var(--syntax-selector-tag,var(--color-syntax-keywords))}.syntax-string{color:var(--syntax-string,var(--color-syntax-strings))}.syntax-bullet{color:var(--syntax-bullet,var(--color-syntax-characters))}.syntax-meta{color:var(--syntax-meta,var(--color-syntax-characters))}.syntax-number{color:var(--syntax-number,var(--color-syntax-characters))}.syntax-symbol{color:var(--syntax-symbol,var(--color-syntax-characters))}.syntax-tag{color:var(--syntax-tag,var(--color-syntax-characters))}.syntax-attr{color:var(--syntax-attr,var(--color-syntax-other-type-names))}.syntax-built_in{color:var(--syntax-built_in,var(--color-syntax-other-type-names))}.syntax-builtin-name{color:var(--syntax-builtin-name,var(--color-syntax-other-type-names))}.syntax-class{color:var(--syntax-class,var(--color-syntax-other-type-names))}.syntax-params{color:var(--syntax-params,var(--color-syntax-other-type-names))}.syntax-section{color:var(--syntax-section,var(--color-syntax-other-type-names))}.syntax-title{color:var(--syntax-title,var(--color-syntax-other-type-names))}.syntax-type{color:var(--syntax-type,var(--color-syntax-other-type-names))}.syntax-attribute{color:var(--syntax-attribute,var(--color-syntax-plain-text))}.syntax-identifier{color:var(--syntax-identifier,var(--color-syntax-plain-text))}.syntax-subst{color:var(--syntax-subst,var(--color-syntax-plain-text))}.syntax-doctag,.syntax-strong{font-weight:700}.syntax-emphasis,.syntax-link{font-style:italic}[data-syntax=swift] .syntax-meta{color:var(--syntax-meta,var(--color-syntax-keywords))}[data-syntax=swift] .syntax-class,[data-syntax=swift] .syntax-keyword+.syntax-params,[data-syntax=swift] .syntax-params+.syntax-params{color:unset}[data-syntax=json] .syntax-attr{color:var(--syntax-attr,var(--color-syntax-strings))}#skip-nav{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}#skip-nav:active,#skip-nav:focus{position:relative;float:left;width:-moz-fit-content;width:fit-content;color:var(--color-figure-blue);font-size:1em;padding:0 10px;z-index:100000;top:0;left:0;height:44px;line-height:44px;-webkit-clip-path:unset;clip-path:unset}.nav--in-breakpoint-range #skip-nav{display:none}.visuallyhidden{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}@keyframes pulse{0%{opacity:0}33%{opacity:1}66%{opacity:1}to{opacity:0}}.changed{border:1px solid var(--color-changes-modified);position:relative}.changed,.changed.displays-multiple-lines,.displays-multiple-lines .changed{border-radius:var(--border-radius,4px)}.changed:after{left:8px;background-image:url(../img/modified-icon.efb2697d.svg);background-repeat:no-repeat;bottom:0;content:" ";margin:auto;margin-right:8px;position:absolute;top:0;width:1.1764705882rem;height:1.1764705882rem;margin-top:.6176470588rem;z-index:2}@media screen{[data-color-scheme=dark] .changed:after{background-image:url(../img/modified-icon.efb2697d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed:after{background-image:url(../img/modified-icon.efb2697d.svg)}}.changed-added{border-color:var(--color-changes-added)}.changed-added:after{background-image:url(../img/added-icon.832a5d2c.svg)}@media screen{[data-color-scheme=dark] .changed-added:after{background-image:url(../img/added-icon.832a5d2c.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-added:after{background-image:url(../img/added-icon.832a5d2c.svg)}}.changed-deprecated{border-color:var(--color-changes-deprecated)}.changed-deprecated:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}@media screen{[data-color-scheme=dark] .changed-deprecated:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-deprecated:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}.changed.link-block:after,.changed.relationships-item:after,.link-block .changed:after{margin-top:10px}.change-added,.change-removed{padding:2px 0}.change-removed{background-color:var(--color-highlight-red)}.change-added{background-color:var(--color-highlight-green)}body{color-scheme:light dark}body[data-color-scheme=light]{color-scheme:light}body[data-color-scheme=dark]{color-scheme:dark}body{--color-fill:#fff;--color-fill-secondary:#f7f7f7;--color-fill-tertiary:#f0f0f0;--color-fill-quaternary:#282828;--color-fill-blue:#00f;--color-fill-light-blue-secondary:#d1d1ff;--color-fill-gray:#ccc;--color-fill-gray-secondary:#f5f5f5;--color-fill-gray-tertiary:#f0f0f0;--color-fill-gray-quaternary:#f0f0f0;--color-fill-green-secondary:#f0fff0;--color-fill-orange-secondary:#fffaf6;--color-fill-red-secondary:#fff0f5;--color-figure-blue:#36f;--color-figure-gray:#000;--color-figure-gray-secondary:#666;--color-figure-gray-secondary-alt:#666;--color-figure-gray-tertiary:#666;--color-figure-green:green;--color-figure-light-gray:#666;--color-figure-orange:#c30;--color-figure-red:red;--color-tutorials-teal:#000;--color-article-background:var(--color-fill-tertiary);--color-article-body-background:var(--color-fill);--color-aside-deprecated:var(--color-figure-gray);--color-aside-deprecated-background:var(--color-fill-orange-secondary);--color-aside-deprecated-border:var(--color-figure-orange);--color-aside-experiment:var(--color-figure-gray);--color-aside-experiment-background:var(--color-fill-gray-secondary);--color-aside-experiment-border:var(--color-figure-light-gray);--color-aside-important:var(--color-figure-gray);--color-aside-important-background:var(--color-fill-gray-secondary);--color-aside-important-border:var(--color-figure-light-gray);--color-aside-note:var(--color-figure-gray);--color-aside-note-background:var(--color-fill-gray-secondary);--color-aside-note-border:var(--color-figure-light-gray);--color-aside-tip:var(--color-figure-gray);--color-aside-tip-background:var(--color-fill-gray-secondary);--color-aside-tip-border:var(--color-figure-light-gray);--color-aside-warning:var(--color-figure-gray);--color-aside-warning-background:var(--color-fill-red-secondary);--color-aside-warning-border:var(--color-figure-red);--color-badge-text:#fff;--color-badge-default:var(--color-figure-gray);--color-badge-beta:var(--color-figure-gray-tertiary);--color-badge-deprecated:var(--color-figure-orange);--color-badge-dark-default:#fff;--color-badge-dark-beta:#b0b0b0;--color-badge-dark-deprecated:#f60;--color-button-background:var(--color-fill-blue);--color-button-background-active:#36f;--color-button-background-hover:var(--color-figure-blue);--color-button-text:#fff;--color-call-to-action-background:var(--color-fill-secondary);--color-changes-added:var(--color-figure-light-gray);--color-changes-added-hover:var(--color-figure-light-gray);--color-changes-deprecated:var(--color-figure-light-gray);--color-changes-deprecated-hover:var(--color-figure-light-gray);--color-changes-modified:var(--color-figure-light-gray);--color-changes-modified-hover:var(--color-figure-light-gray);--color-changes-modified-previous-background:var(--color-fill);--color-code-background:var(--color-fill-secondary);--color-code-collapsible-background:var(--color-fill-tertiary);--color-code-collapsible-text:var(--color-figure-gray-secondary-alt);--color-code-line-highlight:rgba(51,102,255,.08);--color-code-line-highlight-border:var(--color-figure-blue);--color-code-plain:var(--color-figure-gray);--color-dropdown-background:hsla(0,0%,100%,.8);--color-dropdown-border:#ccc;--color-dropdown-option-text:#666;--color-dropdown-text:#000;--color-dropdown-dark-background:hsla(0,0%,100%,.1);--color-dropdown-dark-border:hsla(0,0%,94%,.2);--color-dropdown-dark-option-text:#ccc;--color-dropdown-dark-text:#fff;--color-eyebrow:var(--color-figure-gray-secondary);--color-focus-border-color:var(--color-fill-blue);--color-focus-color:rgba(0,125,250,.6);--color-form-error:var(--color-figure-red);--color-form-error-background:var(--color-fill-red-secondary);--color-form-valid:var(--color-figure-green);--color-form-valid-background:var(--color-fill-green-secondary);--color-generic-modal-background:var(--color-fill);--color-grid:var(--color-fill-gray);--color-header-text:var(--color-figure-gray);--color-hero-eyebrow:#ccc;--color-link:var(--color-figure-blue);--color-loading-placeholder-background:var(--color-fill);--color-nav-color:#000;--color-nav-current-link:#000;--color-nav-expanded:#fff;--color-nav-hierarchy-collapse-background:#f0f0f0;--color-nav-hierarchy-collapse-borders:#ccc;--color-nav-hierarchy-item-borders:#ccc;--color-nav-keyline:rgba(0,0,0,.2);--color-nav-link-color:#000;--color-nav-link-color-hover:#36f;--color-nav-outlines:#ccc;--color-nav-rule:hsla(0,0%,94%,.5);--color-nav-solid-background:#fff;--color-nav-sticking-expanded-keyline:rgba(0,0,0,.1);--color-nav-stuck:hsla(0,0%,100%,.9);--color-nav-uiblur-expanded:hsla(0,0%,100%,.9);--color-nav-uiblur-stuck:hsla(0,0%,100%,.7);--color-nav-root-subhead:var(--color-tutorials-teal);--color-nav-dark-border-top-color:hsla(0,0%,100%,.4);--color-nav-dark-color:#fff;--color-nav-dark-current-link:#fff;--color-nav-dark-expanded:#2a2a2a;--color-nav-dark-hierarchy-collapse-background:#424242;--color-nav-dark-hierarchy-collapse-borders:#666;--color-nav-dark-hierarchy-item-borders:#424242;--color-nav-dark-keyline:rgba(66,66,66,.95);--color-nav-dark-link-color:#fff;--color-nav-dark-link-color-hover:#09f;--color-nav-dark-outlines:#575757;--color-nav-dark-rule:#575757;--color-nav-dark-solid-background:#000;--color-nav-dark-sticking-expanded-keyline:rgba(66,66,66,.7);--color-nav-dark-stuck:rgba(42,42,42,.9);--color-nav-dark-uiblur-expanded:rgba(42,42,42,.9);--color-nav-dark-uiblur-stuck:rgba(42,42,42,.7);--color-nav-dark-root-subhead:#fff;--color-other-decl-button:var(--color-text-background);--color-runtime-preview-background:var(--color-fill-tertiary);--color-runtime-preview-disabled-text:hsla(0,0%,40%,.6);--color-runtime-preview-text:var(--color-figure-gray-secondary);--color-secondary-label:var(--color-figure-gray-secondary);--color-step-background:var(--color-fill-secondary);--color-step-caption:var(--color-figure-gray-secondary);--color-step-focused:var(--color-figure-light-gray);--color-step-text:var(--color-figure-gray-secondary);--color-svg-icon:#666;--color-syntax-addition:var(--color-figure-green);--color-syntax-attributes:#947100;--color-syntax-characters:#272ad8;--color-syntax-comments:#707f8c;--color-syntax-deletion:var(--color-figure-red);--color-syntax-documentation-markup:#506375;--color-syntax-documentation-markup-keywords:#506375;--color-syntax-heading:#ba2da2;--color-syntax-highlighted:rgba(0,113,227,.2);--color-syntax-keywords:#ad3da4;--color-syntax-marks:#000;--color-syntax-numbers:#272ad8;--color-syntax-other-class-names:#703daa;--color-syntax-other-constants:#4b21b0;--color-syntax-other-declarations:#047cb0;--color-syntax-other-function-and-method-names:#4b21b0;--color-syntax-other-instance-variables-and-globals:#703daa;--color-syntax-other-preprocessor-macros:#78492a;--color-syntax-other-type-names:#703daa;--color-syntax-param-internal-name:#404040;--color-syntax-plain-text:#000;--color-syntax-preprocessor-statements:#78492a;--color-syntax-project-class-names:#3e8087;--color-syntax-project-constants:#2d6469;--color-syntax-project-function-and-method-names:#2d6469;--color-syntax-project-instance-variables-and-globals:#3e8087;--color-syntax-project-preprocessor-macros:#78492a;--color-syntax-project-type-names:#3e8087;--color-syntax-strings:#d12f1b;--color-syntax-type-declarations:#03638c;--color-syntax-urls:#1337ff;--color-tabnav-item-border-color:var(--color-fill-gray);--color-text:var(--color-figure-gray);--color-text-background:var(--color-fill);--color-tutorial-assessments-background:var(--color-fill-secondary);--color-tutorial-background:var(--color-fill);--color-tutorial-navbar-dropdown-background:var(--color-fill);--color-tutorial-navbar-dropdown-border:var(--color-fill-gray);--color-tutorial-quiz-border-active:var(--color-figure-blue);--color-tutorials-overview-background:#161616;--color-tutorials-overview-content:#fff;--color-tutorials-overview-content-alt:#fff;--color-tutorials-overview-eyebrow:#ccc;--color-tutorials-overview-icon:#b0b0b0;--color-tutorials-overview-link:#09f;--color-tutorials-overview-navigation-link:#ccc;--color-tutorials-overview-navigation-link-active:#fff;--color-tutorials-overview-navigation-link-hover:#fff;--color-tutorial-hero-text:#fff;--color-tutorial-hero-background:#000;--color-navigator-item-hover:rgba(0,0,255,.05);--color-card-background:var(--color-fill);--color-card-content-text:var(--color-figure-gray);--color-card-eyebrow:var(--color-figure-gray-secondary-alt);--color-card-shadow:rgba(0,0,0,.04);--color-link-block-card-border:rgba(0,0,0,.04);--color-standard-red:#ffc2c2;--color-standard-orange:#fc9;--color-standard-yellow:#ffe0a3;--color-standard-blue:#9cf;--color-standard-green:#9cc;--color-standard-purple:#ccf;--color-standard-gray:#f0f0f0}@media screen{body[data-color-scheme=dark]{--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-light-blue-secondary:#004ec4;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-gray-quaternary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-badge-text:#000;--color-badge-default:var(--color-badge-dark-default);--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-highlighted:rgba(0,113,227,.6);--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary);--color-navigator-item-hover:rgba(0,102,255,.5);--color-card-shadow:hsla(0,0%,100%,.04);--color-link-block-card-border:hsla(0,0%,100%,.25);--color-standard-red:#8b0000;--color-standard-orange:#8b4000;--color-standard-yellow:#8f7200;--color-standard-blue:#002d75;--color-standard-green:#023b2d;--color-standard-purple:#512b55;--color-standard-gray:#2a2a2a}}@media screen and (prefers-color-scheme:dark){body[data-color-scheme=auto]{--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-light-blue-secondary:#004ec4;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-gray-quaternary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-badge-text:#000;--color-badge-default:var(--color-badge-dark-default);--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-highlighted:rgba(0,113,227,.6);--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary);--color-navigator-item-hover:rgba(0,102,255,.5);--color-card-shadow:hsla(0,0%,100%,.04);--color-link-block-card-border:hsla(0,0%,100%,.25);--color-standard-red:#8b0000;--color-standard-orange:#8b4000;--color-standard-yellow:#8f7200;--color-standard-blue:#002d75;--color-standard-green:#023b2d;--color-standard-purple:#512b55;--color-standard-gray:#2a2a2a}}#app-main{outline-style:none}:root{--app-height:100vh}[data-v-1fc6db09] :focus:not(input):not(textarea):not(select){outline:none}.fromkeyboard[data-v-1fc6db09] :focus:not(input):not(textarea):not(select){outline:4px solid var(--color-focus-color);outline-offset:1px}#app[data-v-1fc6db09]{display:flex;flex-flow:column;min-height:100%}#app[data-v-1fc6db09]>*{min-width:0}#app .router-content[data-v-1fc6db09]{flex:1}.container[data-v-1f05d9ec]{margin-left:auto;margin-right:auto;width:1536px;width:980px;outline-style:none;margin-top:92px;margin-bottom:140px}@media only screen and (max-width:1250px){.container[data-v-1f05d9ec]{width:692px}}@media only screen and (max-width:735px){.container[data-v-1f05d9ec]{width:87.5%}}@media only screen and (max-width:320px){.container[data-v-1f05d9ec]{width:215px}}.error-content[data-v-1f05d9ec]{box-sizing:border-box;width:502px;margin-left:auto;margin-right:auto;margin-bottom:54px}@media only screen and (max-width:1250px){.error-content[data-v-1f05d9ec]{width:420px;margin-bottom:45px}}@media only screen and (max-width:735px){.error-content[data-v-1f05d9ec]{max-width:330px;width:auto;margin-bottom:35px}}.title[data-v-1f05d9ec]{text-align:center;font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){.title[data-v-1f05d9ec]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-1f05d9ec]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}} \ No newline at end of file diff --git a/docs/css/index.ff036a9e.css b/docs/css/index.ff036a9e.css deleted file mode 100644 index b26af9e..0000000 --- a/docs/css/index.ff036a9e.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */.color-scheme-toggle[data-v-78690df2]{--toggle-color-fill:var(--color-button-background);--toggle-color-text:var(--color-fill-blue);font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);border:1px solid var(--toggle-color-fill);border-radius:var(--toggle-border-radius-outer,var(--border-radius,4px));display:inline-flex;padding:1px}@media screen{[data-color-scheme=dark] .color-scheme-toggle[data-v-78690df2]{--toggle-color-text:var(--color-figure-blue)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .color-scheme-toggle[data-v-78690df2]{--toggle-color-text:var(--color-figure-blue)}}@media print{.color-scheme-toggle[data-v-78690df2]{display:none}}input[data-v-78690df2]{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.fromkeyboard label[data-v-78690df2]:focus-within{outline:4px solid var(--color-focus-color);outline-offset:1px}.text[data-v-78690df2]{border:1px solid transparent;border-radius:var(--toggle-border-radius-inner,2px);color:var(--toggle-color-text);display:inline-block;text-align:center;padding:1px 6px;min-width:42px;box-sizing:border-box}.text[data-v-78690df2]:hover{cursor:pointer}input:checked+.text[data-v-78690df2]{--toggle-color-text:var(--color-button-text);background:var(--toggle-color-fill);border-color:var(--toggle-color-fill)}.footer[data-v-4e049dbd]{border-top:1px solid var(--color-grid)}.row[data-v-4e049dbd]{margin-left:auto;margin-right:auto;width:980px;display:flex;flex-direction:row-reverse;margin:20px auto}@media only screen and (max-width:1250px){.row[data-v-4e049dbd]{width:692px}}@media only screen and (max-width:735px){.row[data-v-4e049dbd]{width:87.5%}}@media only screen and (max-width:320px){.row[data-v-4e049dbd]{width:215px}}@media only screen and (max-width:735px){.row[data-v-4e049dbd]{width:100%;padding:0 .9411764706rem;box-sizing:border-box}}.InitialLoadingPlaceholder[data-v-35c356b6]{background:var(--colors-loading-placeholder-background,var(--color-loading-placeholder-background));height:100vh;width:100%}.svg-icon[data-v-979a134a]{fill:var(--colors-svg-icon-fill-light,var(--color-svg-icon));transform:scale(1);-webkit-transform:scale(1);overflow:visible}.theme-dark .svg-icon[data-v-979a134a]{fill:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}.svg-icon.icon-inline[data-v-979a134a]{display:inline-block;vertical-align:middle;fill:currentColor}.svg-icon.icon-inline[data-v-979a134a] .svg-icon-stroke{stroke:currentColor}[data-v-979a134a] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-light,var(--color-svg-icon))}.theme-dark[data-v-979a134a] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}.suggest-lang[data-v-768a347b]{background:#000;color:#fff;display:flex;justify-content:center;border-bottom:1px solid var(--color-grid)}.suggest-lang__wrapper[data-v-768a347b]{display:flex;align-items:center;width:100%;max-width:var(--wrapper-max-width,1920px);margin:0 .9411764706rem;position:relative;height:52px}.suggest-lang__link[data-v-768a347b]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin:0 auto;color:#09f}.suggest-lang__close-icon-wrapper[data-v-768a347b]{position:absolute;right:-.2352941176rem;top:0;height:100%;box-sizing:border-box;display:flex;align-items:center;z-index:1}.suggest-lang__close-icon-button[data-v-768a347b]{padding:.2352941176rem}.suggest-lang__close-icon-button .close-icon[data-v-768a347b]{width:8px;display:block}.suggest-lang .inline-chevron-right-icon[data-v-768a347b]{padding-left:.2352941176rem;width:8px}select[data-v-d21858a2]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-fill-blue);padding-right:15px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;cursor:pointer}select[data-v-d21858a2]:hover{text-decoration:underline;text-underline-position:under}.locale-selector[data-v-d21858a2]{position:relative}.svg-icon.icon-inline[data-v-d21858a2]{position:absolute;fill:var(--color-fill-blue);right:2px;bottom:7px;height:5px}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;background-color:var(--colors-text-background,var(--color-text-background));height:100%}abbr,blockquote,body,button,dd,dl,dt,fieldset,figure,form,h1,h2,h3,h4,h5,h6,hgroup,input,legend,li,ol,p,pre,ul{margin:0;padding:0}address,caption,code,figcaption,pre,th{font-size:1em;font-weight:400;font-style:normal}fieldset,iframe,img{border:0}caption,th{text-align:left}table{border-collapse:collapse;border-spacing:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}button{background:none;border:0;box-sizing:content-box;color:inherit;cursor:pointer;font:inherit;line-height:inherit;overflow:visible;vertical-align:inherit}button:disabled{cursor:default}:focus{outline:4px solid var(--color-focus-color);outline-offset:1px}::-moz-focus-inner{border:0;padding:0}@media print{#content,#main,body{color:#000}a,a:link,a:visited{color:#000;text-decoration:none}.hide,.noprint{display:none}}body{height:100%;min-width:320px}html{font:var(--typography-html-font,17px "Helvetica Neue","Helvetica","Arial",sans-serif);quotes:"“" "”"}html:lang(ja-JP){quotes:"「" "」"}body{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);background-color:var(--color-text-background);color:var(--colors-text,var(--color-text));font-style:normal;word-wrap:break-word;--spacing-stacked-margin-small:0.4em;--spacing-stacked-margin-large:0.8em;--spacing-stacked-margin-xlarge:calc(var(--spacing-stacked-margin-large)*2);--spacing-param:1.6470588235rem;--declaration-code-listing-margin:30px 0 0 0;--code-block-style-elements-padding:8px 14px}body,button,input,select,textarea{font-synthesis:none;-moz-font-feature-settings:"kern";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;direction:ltr;text-align:left}h1,h2,h3,h4,h5,h6{color:var(--colors-header-text,var(--color-header-text))}h1+*,h2+*,h3+*,h4+*,h5+*,h6+*{margin-top:var(--spacing-stacked-margin-large)}ol+h1,ol+h2,ol+h3,ol+h4,ol+h5,ol+h6,p+h1,p+h2,p+h3,p+h4,p+h5,p+h6,ul+h1,ul+h2,ul+h3,ul+h4,ul+h5,ul+h6{margin-top:1.6em}ol+*,p+*,ul+*{margin-top:var(--spacing-stacked-margin-large)}ol,ul{margin-left:1.1764705882em}ol ol,ol ul,ul ol,ul ul{margin-top:0;margin-bottom:0}nav ol,nav ul{margin:0;list-style:none}li li{font-size:1em}a{color:var(--colors-link,var(--color-link))}a:link,a:visited{text-decoration:none}a.inline-link,a:hover{text-decoration:underline;text-underline-position:under}a:active{text-decoration:none}p+a{display:inline-block}b,strong{font-weight:600}cite,dfn,em,i{font-style:italic}sup{font-size:.6em;vertical-align:top;position:relative;bottom:-.2em}h1 sup,h2 sup,h3 sup{font-size:.4em}sup a{vertical-align:inherit;color:inherit}sup a:hover{color:var(--figure-blue);text-decoration:none}sub{line-height:1}abbr{border:0}pre{overflow:auto;-webkit-overflow-scrolling:auto;white-space:pre;word-wrap:normal}code{font-family:var(--typography-html-font-mono,Menlo,monospace);font-weight:inherit;letter-spacing:0}.syntax-addition{color:var(--syntax-addition,var(--color-syntax-addition))}.syntax-comment{color:var(--syntax-comment,var(--color-syntax-comments))}.syntax-quote{color:var(--syntax-quote,var(--color-syntax-comments))}.syntax-deletion{color:var(--syntax-deletion,var(--color-syntax-deletion))}.syntax-keyword{color:var(--syntax-keyword,var(--color-syntax-keywords))}.syntax-literal{color:var(--syntax-literal,var(--color-syntax-keywords))}.syntax-selector-tag{color:var(--syntax-selector-tag,var(--color-syntax-keywords))}.syntax-string{color:var(--syntax-string,var(--color-syntax-strings))}.syntax-bullet{color:var(--syntax-bullet,var(--color-syntax-characters))}.syntax-meta{color:var(--syntax-meta,var(--color-syntax-characters))}.syntax-number{color:var(--syntax-number,var(--color-syntax-characters))}.syntax-symbol{color:var(--syntax-symbol,var(--color-syntax-characters))}.syntax-tag{color:var(--syntax-tag,var(--color-syntax-characters))}.syntax-attr{color:var(--syntax-attr,var(--color-syntax-other-type-names))}.syntax-built_in{color:var(--syntax-built_in,var(--color-syntax-other-type-names))}.syntax-builtin-name{color:var(--syntax-builtin-name,var(--color-syntax-other-type-names))}.syntax-class{color:var(--syntax-class,var(--color-syntax-other-type-names))}.syntax-params{color:var(--syntax-params,var(--color-syntax-other-type-names))}.syntax-section{color:var(--syntax-section,var(--color-syntax-other-type-names))}.syntax-title{color:var(--syntax-title,var(--color-syntax-other-type-names))}.syntax-type{color:var(--syntax-type,var(--color-syntax-other-type-names))}.syntax-attribute{color:var(--syntax-attribute,var(--color-syntax-plain-text))}.syntax-identifier{color:var(--syntax-identifier,var(--color-syntax-plain-text))}.syntax-subst{color:var(--syntax-subst,var(--color-syntax-plain-text))}.syntax-doctag,.syntax-strong{font-weight:700}.syntax-emphasis,.syntax-link{font-style:italic}[data-syntax=swift] .syntax-meta{color:var(--syntax-meta,var(--color-syntax-keywords))}[data-syntax=swift] .syntax-class,[data-syntax=swift] .syntax-keyword+.syntax-params,[data-syntax=swift] .syntax-params+.syntax-params{color:unset}[data-syntax=json] .syntax-attr{color:var(--syntax-attr,var(--color-syntax-strings))}#skip-nav{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}#skip-nav:active,#skip-nav:focus{position:relative;float:left;width:-moz-fit-content;width:fit-content;color:var(--color-figure-blue);font-size:1em;padding:0 10px;z-index:100000;top:0;left:0;height:44px;line-height:44px;-webkit-clip-path:unset;clip-path:unset}.nav--in-breakpoint-range #skip-nav{display:none}.visuallyhidden{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}@keyframes pulse{0%{opacity:0}33%{opacity:1}66%{opacity:1}to{opacity:0}}.changed{border:1px solid var(--color-changes-modified);position:relative}.changed,.changed.displays-multiple-lines,.displays-multiple-lines .changed{border-radius:var(--border-radius,4px)}.changed:after{left:8px;background-image:url(../img/modified-icon.efb2697d.svg);background-repeat:no-repeat;bottom:0;content:" ";margin:auto;margin-right:8px;position:absolute;top:0;width:1.1764705882rem;height:1.1764705882rem;margin-top:.6176470588rem;z-index:2}@media screen{[data-color-scheme=dark] .changed:after{background-image:url(../img/modified-icon.efb2697d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed:after{background-image:url(../img/modified-icon.efb2697d.svg)}}.changed-added{border-color:var(--color-changes-added)}.changed-added:after{background-image:url(../img/added-icon.832a5d2c.svg)}@media screen{[data-color-scheme=dark] .changed-added:after{background-image:url(../img/added-icon.832a5d2c.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-added:after{background-image:url(../img/added-icon.832a5d2c.svg)}}.changed-deprecated{border-color:var(--color-changes-deprecated)}.changed-deprecated:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}@media screen{[data-color-scheme=dark] .changed-deprecated:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-deprecated:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}.changed.link-block:after,.changed.relationships-item:after,.link-block .changed:after{margin-top:10px}.change-added,.change-removed{padding:2px 0}.change-removed{background-color:var(--color-highlight-red)}.change-added{background-color:var(--color-highlight-green)}body{color-scheme:light dark}body[data-color-scheme=light]{color-scheme:light}body[data-color-scheme=dark]{color-scheme:dark}body{--color-fill:#fff;--color-fill-secondary:#f7f7f7;--color-fill-tertiary:#f0f0f0;--color-fill-quaternary:#282828;--color-fill-blue:#00f;--color-fill-light-blue-secondary:#d1d1ff;--color-fill-gray:#ccc;--color-fill-gray-secondary:#f5f5f5;--color-fill-gray-tertiary:#f0f0f0;--color-fill-gray-quaternary:#f0f0f0;--color-fill-green-secondary:#f0fff0;--color-fill-orange-secondary:#fffaf6;--color-fill-red-secondary:#fff0f5;--color-figure-blue:#36f;--color-figure-gray:#000;--color-figure-gray-secondary:#666;--color-figure-gray-secondary-alt:#666;--color-figure-gray-tertiary:#666;--color-figure-green:green;--color-figure-light-gray:#666;--color-figure-orange:#c30;--color-figure-red:red;--color-tutorials-teal:#000;--color-article-background:var(--color-fill-tertiary);--color-article-body-background:var(--color-fill);--color-aside-deprecated:var(--color-figure-gray);--color-aside-deprecated-background:var(--color-fill-orange-secondary);--color-aside-deprecated-border:var(--color-figure-orange);--color-aside-experiment:var(--color-figure-gray);--color-aside-experiment-background:var(--color-fill-gray-secondary);--color-aside-experiment-border:var(--color-figure-light-gray);--color-aside-important:var(--color-figure-gray);--color-aside-important-background:var(--color-fill-gray-secondary);--color-aside-important-border:var(--color-figure-light-gray);--color-aside-note:var(--color-figure-gray);--color-aside-note-background:var(--color-fill-gray-secondary);--color-aside-note-border:var(--color-figure-light-gray);--color-aside-tip:var(--color-figure-gray);--color-aside-tip-background:var(--color-fill-gray-secondary);--color-aside-tip-border:var(--color-figure-light-gray);--color-aside-warning:var(--color-figure-gray);--color-aside-warning-background:var(--color-fill-red-secondary);--color-aside-warning-border:var(--color-figure-red);--color-badge-default:var(--color-figure-light-gray);--color-badge-beta:var(--color-figure-gray-tertiary);--color-badge-deprecated:var(--color-figure-orange);--color-badge-dark-default:#fff;--color-badge-dark-beta:#b0b0b0;--color-badge-dark-deprecated:#f60;--color-button-background:var(--color-fill-blue);--color-button-background-active:#36f;--color-button-background-hover:var(--color-figure-blue);--color-button-text:#fff;--color-call-to-action-background:var(--color-fill-secondary);--color-changes-added:var(--color-figure-light-gray);--color-changes-added-hover:var(--color-figure-light-gray);--color-changes-deprecated:var(--color-figure-light-gray);--color-changes-deprecated-hover:var(--color-figure-light-gray);--color-changes-modified:var(--color-figure-light-gray);--color-changes-modified-hover:var(--color-figure-light-gray);--color-changes-modified-previous-background:var(--color-fill);--color-code-background:var(--color-fill-secondary);--color-code-collapsible-background:var(--color-fill-tertiary);--color-code-collapsible-text:var(--color-figure-gray-secondary-alt);--color-code-line-highlight:rgba(51,102,255,.08);--color-code-line-highlight-border:var(--color-figure-blue);--color-code-plain:var(--color-figure-gray);--color-dropdown-background:hsla(0,0%,100%,.8);--color-dropdown-border:#ccc;--color-dropdown-option-text:#666;--color-dropdown-text:#000;--color-dropdown-dark-background:hsla(0,0%,100%,.1);--color-dropdown-dark-border:hsla(0,0%,94%,.2);--color-dropdown-dark-option-text:#ccc;--color-dropdown-dark-text:#fff;--color-eyebrow:var(--color-figure-gray-secondary);--color-focus-border-color:var(--color-fill-blue);--color-focus-color:rgba(0,125,250,.6);--color-form-error:var(--color-figure-red);--color-form-error-background:var(--color-fill-red-secondary);--color-form-valid:var(--color-figure-green);--color-form-valid-background:var(--color-fill-green-secondary);--color-generic-modal-background:var(--color-fill);--color-grid:var(--color-fill-gray);--color-header-text:var(--color-figure-gray);--color-hero-eyebrow:#ccc;--color-link:var(--color-figure-blue);--color-loading-placeholder-background:var(--color-fill);--color-nav-color:#666;--color-nav-current-link:rgba(0,0,0,.6);--color-nav-expanded:#fff;--color-nav-hierarchy-collapse-background:#f0f0f0;--color-nav-hierarchy-collapse-borders:#ccc;--color-nav-hierarchy-item-borders:#ccc;--color-nav-keyline:rgba(0,0,0,.2);--color-nav-link-color:#000;--color-nav-link-color-hover:#36f;--color-nav-outlines:#ccc;--color-nav-rule:hsla(0,0%,94%,.5);--color-nav-solid-background:#fff;--color-nav-sticking-expanded-keyline:rgba(0,0,0,.1);--color-nav-stuck:hsla(0,0%,100%,.9);--color-nav-uiblur-expanded:hsla(0,0%,100%,.9);--color-nav-uiblur-stuck:hsla(0,0%,100%,.7);--color-nav-root-subhead:var(--color-tutorials-teal);--color-nav-dark-border-top-color:hsla(0,0%,100%,.4);--color-nav-dark-color:#b0b0b0;--color-nav-dark-current-link:hsla(0,0%,100%,.6);--color-nav-dark-expanded:#2a2a2a;--color-nav-dark-hierarchy-collapse-background:#424242;--color-nav-dark-hierarchy-collapse-borders:#666;--color-nav-dark-hierarchy-item-borders:#424242;--color-nav-dark-keyline:rgba(66,66,66,.95);--color-nav-dark-link-color:#fff;--color-nav-dark-link-color-hover:#09f;--color-nav-dark-outlines:#575757;--color-nav-dark-rule:#575757;--color-nav-dark-solid-background:#000;--color-nav-dark-sticking-expanded-keyline:rgba(66,66,66,.7);--color-nav-dark-stuck:rgba(42,42,42,.9);--color-nav-dark-uiblur-expanded:rgba(42,42,42,.9);--color-nav-dark-uiblur-stuck:rgba(42,42,42,.7);--color-nav-dark-root-subhead:#fff;--color-runtime-preview-background:var(--color-fill-tertiary);--color-runtime-preview-disabled-text:hsla(0,0%,40%,.6);--color-runtime-preview-text:var(--color-figure-gray-secondary);--color-secondary-label:var(--color-figure-gray-secondary);--color-step-background:var(--color-fill-secondary);--color-step-caption:var(--color-figure-gray-secondary);--color-step-focused:var(--color-figure-light-gray);--color-step-text:var(--color-figure-gray-secondary);--color-svg-icon:#666;--color-syntax-addition:var(--color-figure-green);--color-syntax-attributes:#947100;--color-syntax-characters:#272ad8;--color-syntax-comments:#707f8c;--color-syntax-deletion:var(--color-figure-red);--color-syntax-documentation-markup:#506375;--color-syntax-documentation-markup-keywords:#506375;--color-syntax-heading:#ba2da2;--color-syntax-keywords:#ad3da4;--color-syntax-marks:#000;--color-syntax-numbers:#272ad8;--color-syntax-other-class-names:#703daa;--color-syntax-other-constants:#4b21b0;--color-syntax-other-declarations:#047cb0;--color-syntax-other-function-and-method-names:#4b21b0;--color-syntax-other-instance-variables-and-globals:#703daa;--color-syntax-other-preprocessor-macros:#78492a;--color-syntax-other-type-names:#703daa;--color-syntax-param-internal-name:#404040;--color-syntax-plain-text:#000;--color-syntax-preprocessor-statements:#78492a;--color-syntax-project-class-names:#3e8087;--color-syntax-project-constants:#2d6469;--color-syntax-project-function-and-method-names:#2d6469;--color-syntax-project-instance-variables-and-globals:#3e8087;--color-syntax-project-preprocessor-macros:#78492a;--color-syntax-project-type-names:#3e8087;--color-syntax-strings:#d12f1b;--color-syntax-type-declarations:#03638c;--color-syntax-urls:#1337ff;--color-tabnav-item-border-color:var(--color-fill-gray);--color-text:var(--color-figure-gray);--color-text-background:var(--color-fill);--color-tutorial-assessments-background:var(--color-fill-secondary);--color-tutorial-background:var(--color-fill);--color-tutorial-navbar-dropdown-background:var(--color-fill);--color-tutorial-navbar-dropdown-border:var(--color-fill-gray);--color-tutorial-quiz-border-active:var(--color-figure-blue);--color-tutorials-overview-background:#161616;--color-tutorials-overview-content:#fff;--color-tutorials-overview-content-alt:#fff;--color-tutorials-overview-eyebrow:#ccc;--color-tutorials-overview-icon:#b0b0b0;--color-tutorials-overview-link:#09f;--color-tutorials-overview-navigation-link:#ccc;--color-tutorials-overview-navigation-link-active:#fff;--color-tutorials-overview-navigation-link-hover:#fff;--color-tutorial-hero-text:#fff;--color-tutorial-hero-background:#000;--color-navigator-item-hover:rgba(0,0,255,.05);--color-card-background:var(--color-fill);--color-card-content-text:var(--color-figure-gray);--color-card-eyebrow:var(--color-figure-gray-secondary-alt);--color-card-shadow:rgba(0,0,0,.04);--color-link-block-card-border:rgba(0,0,0,.04);--color-standard-red:#8b0000;--color-standard-orange:#8b4000;--color-standard-yellow:#8f7200;--color-standard-blue:#002d75;--color-standard-green:#023b2d;--color-standard-purple:#512b55;--color-standard-gray:#2a2a2a}@media screen{body[data-color-scheme=dark]{--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-light-blue-secondary:#004ec4;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-gray-quaternary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-badge-default:var(--color-badge-dark-default);--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary);--color-navigator-item-hover:rgba(0,102,255,.5);--color-card-shadow:hsla(0,0%,100%,.04);--color-link-block-card-border:hsla(0,0%,100%,.25)}}@media screen and (prefers-color-scheme:dark){body[data-color-scheme=auto]{--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-light-blue-secondary:#004ec4;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-gray-quaternary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-badge-default:var(--color-badge-dark-default);--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary);--color-navigator-item-hover:rgba(0,102,255,.5);--color-card-shadow:hsla(0,0%,100%,.04);--color-link-block-card-border:hsla(0,0%,100%,.25)}}#main{outline-style:none}:root{--app-height:100vh}[data-v-3742c1d7] :focus:not(input):not(textarea):not(select){outline:none}.fromkeyboard[data-v-3742c1d7] :focus:not(input):not(textarea):not(select){outline:4px solid var(--color-focus-color);outline-offset:1px}#app[data-v-3742c1d7]{display:flex;flex-flow:column;min-height:100%}#app[data-v-3742c1d7]>*{min-width:0}#app .router-content[data-v-3742c1d7]{flex:1}.container[data-v-1f05d9ec]{margin-left:auto;margin-right:auto;width:980px;outline-style:none;margin-top:92px;margin-bottom:140px}@media only screen and (max-width:1250px){.container[data-v-1f05d9ec]{width:692px}}@media only screen and (max-width:735px){.container[data-v-1f05d9ec]{width:87.5%}}@media only screen and (max-width:320px){.container[data-v-1f05d9ec]{width:215px}}.error-content[data-v-1f05d9ec]{box-sizing:border-box;width:502px;margin-left:auto;margin-right:auto;margin-bottom:54px}@media only screen and (max-width:1250px){.error-content[data-v-1f05d9ec]{width:420px;margin-bottom:45px}}@media only screen and (max-width:735px){.error-content[data-v-1f05d9ec]{max-width:330px;width:auto;margin-bottom:35px}}.title[data-v-1f05d9ec]{text-align:center;font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){.title[data-v-1f05d9ec]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-1f05d9ec]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}} \ No newline at end of file diff --git a/docs/css/topic.4be8f56d.css b/docs/css/topic.4be8f56d.css new file mode 100644 index 0000000..5530036 --- /dev/null +++ b/docs/css/topic.4be8f56d.css @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */.nav-title-content[data-v-854b4dd6]{max-width:100%}.title[data-v-854b4dd6]{color:var(--color-nav-root-title,currentColor);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;vertical-align:top;max-width:296px}@media only screen and (max-width:1023px){.title[data-v-854b4dd6]{max-width:205px}}@media only screen and (max-width:767px){.title[data-v-854b4dd6]{flex-basis:fill;display:initial;vertical-align:initial;max-width:none}}.subhead[data-v-854b4dd6]{color:var(--color-nav-root-subhead)}.theme-dark .subhead[data-v-854b4dd6]{color:var(--color-nav-dark-root-subhead)}.mobile-dropdown[data-v-2c27d339]{box-sizing:border-box}.nav--in-breakpoint-range .mobile-dropdown[data-v-2c27d339]{padding-left:.2352941176rem;padding-right:.2352941176rem}.mobile-dropdown ul[data-v-2c27d339]{list-style:none}.mobile-dropdown .option[data-v-2c27d339]{cursor:pointer;font-size:.7058823529rem;padding:.5rem 0;display:block;text-decoration:none;color:inherit}.mobile-dropdown .option[data-v-2c27d339]:focus{outline-offset:0}.mobile-dropdown .option.depth1[data-v-2c27d339]{padding-left:.4705882353rem}.active[data-v-2c27d339],.tutorial.router-link-active[data-v-2c27d339]{font-weight:600}.active[data-v-2c27d339]:focus,.tutorial.router-link-active[data-v-2c27d339]:focus{outline:none}.chapter-list[data-v-2c27d339]:not(:first-child){margin-top:1rem}.chapter-name[data-v-2c27d339],.tutorial[data-v-2c27d339]{padding:.5rem 0;font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.section-list[data-v-2c27d339],.tutorial-list[data-v-2c27d339]{padding:0 .5882352941rem}.chapter-list:last-child .tutorial-list[data-v-2c27d339]:last-child{padding-bottom:10em}.chapter-list[data-v-2c27d339]{display:inline-block}.form-element[data-v-f934959a]{position:relative}.form-dropdown[data-v-f934959a]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:block;box-sizing:border-box;width:100%;height:3.3em;color:var(--color-dropdown-text);padding:1.1176470588rem 2.3529411765rem 0 .9411764706rem;text-align:left;border:1px solid var(--color-dropdown-border);border-radius:var(--border-radius,4px);background-clip:padding-box;margin-bottom:.8235294118rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;min-height:32px}.form-dropdown[data-v-f934959a]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.form-dropdown.no-eyebrow[data-v-f934959a]{padding-top:0}.form-dropdown[data-v-f934959a]:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--color-dropdown-text)}.form-dropdown[data-v-f934959a]::-ms-expand{opacity:0}.form-dropdown~.form-icon[data-v-f934959a]{position:absolute;display:block;pointer-events:none;fill:var(--color-figure-gray-tertiary);right:14px;width:13px;height:auto;top:50%;transform:translateY(-50%)}.is-open .form-dropdown~.form-icon[data-v-f934959a]{transform:translateY(-50%) scale(-1)}@media only screen and (max-width:735px){.form-dropdown~.form-icon[data-v-f934959a]{right:14px}}.form-dropdown~.form-label[data-v-f934959a]{font-size:.7058823529rem;line-height:1.75;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);position:absolute;top:.4705882353rem;left:17px;color:var(--color-figure-gray-secondary);pointer-events:none;padding:0;z-index:1}.form-dropdown[data-v-f934959a] option{color:var(--color-dropdown-text)}.form-dropdown-selectnone[data-v-f934959a]{color:transparent}.form-dropdown-selectnone~.form-label[data-v-f934959a]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);top:19px;left:17px;color:var(--color-figure-gray-tertiary)}.form-dropdown-selectnone[data-v-f934959a]:-moz-focusring{text-shadow:none}.form-dropdown-selectnone[data-v-f934959a]::-ms-value{display:none}.theme-dark .form-dropdown[data-v-f934959a]{color:var(--color-dropdown-dark-text);background-color:var(--color-dropdown-dark-background);border-color:var(--color-dropdown-dark-border)}.theme-dark .form-dropdown~.form-label[data-v-f934959a]{color:#ccc}.theme-dark .form-dropdown[data-v-f934959a]:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--color-dropdown-dark-text)}.theme-dark .form-dropdown.form-dropdown-selectnone[data-v-f934959a]{color:transparent}.theme-dark .form-dropdown.form-dropdown-selectnone[data-v-f934959a]:-moz-focusring{text-shadow:none}.theme-dark .form-dropdown-selectnone~.form-label[data-v-f934959a]{color:#b0b0b0}.dropdown-small[data-v-6adda760]{height:30px;display:flex;align-items:center;position:relative;background:var(--color-fill)}.dropdown-small .form-dropdown-toggle[data-v-6adda760]{line-height:1.5;font-size:12px;padding-top:0;padding-bottom:0;padding-left:20px;min-height:unset;height:30px;display:flex;align-items:center}.dropdown-small .form-dropdown-toggle[data-v-6adda760]:focus{box-shadow:none;border-color:var(--color-dropdown-border)}.fromkeyboard .dropdown-small .form-dropdown-toggle[data-v-6adda760]:focus{box-shadow:0 0 0 2px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.form-dropdown-toggle[data-v-6adda760]{margin:0}.is-open .form-dropdown-toggle[data-v-6adda760]{border-radius:var(--border-radius,4px) var(--border-radius,4px) 0 0;border-bottom:none;padding-bottom:1px}.fromkeyboard .is-open .form-dropdown-toggle[data-v-6adda760]{box-shadow:1px -1px 0 1px var(--color-focus-color),-1px -1px 0 1px var(--color-focus-color);border-color:var(--color-focus-border-color)}.form-dropdown-title[data-v-6adda760]{margin:0;padding:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dropdown-custom[data-v-6adda760]{border-radius:var(--border-radius,4px)}.dropdown-custom.is-open[data-v-6adda760]{border-radius:var(--border-radius,4px) var(--border-radius,4px) 0 0}.dropdown-custom[data-v-6adda760] .form-dropdown-content{background:var(--color-fill);position:absolute;right:0;left:0;top:100%;border-bottom-left-radius:var(--border-radius,4px);border-bottom-right-radius:var(--border-radius,4px);border:1px solid var(--color-dropdown-border);border-top:none;display:none;overflow-y:auto}.dropdown-custom[data-v-6adda760] .form-dropdown-content.is-open{display:block}.fromkeyboard .dropdown-custom[data-v-6adda760] .form-dropdown-content.is-open{box-shadow:1px 1px 0 1px var(--color-focus-color),-1px 1px 0 1px var(--color-focus-color);border-color:var(--color-focus-border-color);border-top-color:transparent}.nav .dropdown-custom[data-v-6adda760] .form-dropdown-content{max-height:calc(100vh - 116px - 3.05882rem)}.nav--is-sticking.nav .dropdown-custom[data-v-6adda760] .form-dropdown-content{max-height:calc(100vh - 3.05882rem - 72px)}.dropdown-custom[data-v-6adda760] .options{list-style:none;margin:0;padding:0 0 20px}.dropdown-custom[data-v-6adda760] .option{cursor:pointer;padding:5px 20px;font-size:12px;line-height:20px;outline:none}.dropdown-custom[data-v-6adda760] .option:hover{background-color:var(--color-fill-tertiary)}.dropdown-custom[data-v-6adda760] .option.option-active{font-weight:600}.fromkeyboard .dropdown-custom[data-v-6adda760] .option:hover{background-color:transparent}.fromkeyboard .dropdown-custom[data-v-6adda760] .option:focus{background-color:var(--color-fill-tertiary);outline:none}.tutorial-dropdown[data-v-618ff780]{grid-column:3}.section-tracker[data-v-618ff780]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray-secondary);margin-left:15px}.tutorial-dropdown[data-v-03cbd7f7]{grid-column:1/2}.tutorial-dropdown .options[data-v-03cbd7f7]{padding-top:1rem;padding-bottom:0}.tutorial-dropdown .option[data-v-03cbd7f7]{padding:5px 20px 5px 30px}.chapter-list[data-v-03cbd7f7]{padding-bottom:20px}.chapter-name[data-v-03cbd7f7]{margin:0 20px 5px 20px;line-height:normal;color:var(--color-figure-gray-secondary)}.chevron-icon[data-v-1d3fe8ed]{padding:0;color:var(--color-nav-outlines);grid-column:2;height:20px;width:20px;margin:0 4px}@media only screen and (min-width:768px){.nav[data-v-1d3fe8ed] .nav-content{display:grid;grid-template-columns:auto auto 3fr;align-items:center}.nav[data-v-1d3fe8ed] .nav-menu{padding:0;justify-content:flex-start;grid-column:3/5}.nav[data-v-1d3fe8ed] .nav-menu-item{margin:0}}.dropdown-container[data-v-1d3fe8ed]{height:3.0588235294rem;display:grid;grid-template-columns:minmax(230px,285px) auto minmax(230px,1fr);align-items:center}@media only screen and (max-width:1023px){.dropdown-container[data-v-1d3fe8ed]{grid-template-columns:minmax(173px,216px) auto minmax(173px,1fr)}}@media(scripting:none){.dropdown-container[data-v-1d3fe8ed]{display:none}}.separator[data-v-1d3fe8ed]{height:20px;border-right:1px solid;border-color:var(--color-nav-outlines);margin:0 20px;grid-column:2}@media(scripting:none){.separator[data-v-1d3fe8ed]{display:none}}.mobile-dropdown-container[data-v-1d3fe8ed],.nav--in-breakpoint-range.nav .dropdown-container[data-v-1d3fe8ed],.nav--in-breakpoint-range.nav .separator[data-v-1d3fe8ed]{display:none}.nav--in-breakpoint-range.nav .mobile-dropdown-container[data-v-1d3fe8ed]{display:block}.nav--in-breakpoint-range.nav[data-v-1d3fe8ed] .nav-title{grid-area:title}.nav--in-breakpoint-range.nav[data-v-1d3fe8ed] .pre-title{display:none}.nav[data-v-1d3fe8ed] .nav-title{grid-column:1;width:90%;padding-top:0}.primary-dropdown[data-v-1d3fe8ed],.secondary-dropdown[data-v-1d3fe8ed]{background:var(--color-tutorial-navbar-dropdown-background);border-color:var(--color-tutorial-navbar-dropdown-border)}.primary-dropdown[data-v-1d3fe8ed] .form-dropdown,.primary-dropdown[data-v-1d3fe8ed] .form-dropdown:focus,.secondary-dropdown[data-v-1d3fe8ed] .form-dropdown,.secondary-dropdown[data-v-1d3fe8ed] .form-dropdown:focus{border-color:var(--color-tutorial-navbar-dropdown-border)}.primary-dropdown[data-v-1d3fe8ed] .options,.secondary-dropdown[data-v-1d3fe8ed] .options{background:var(--color-tutorial-navbar-dropdown-background);border-color:var(--color-tutorial-navbar-dropdown-border)}[data-v-0861b5be] .code-listing+*,[data-v-0861b5be] aside+*,[data-v-0861b5be] h2+*,[data-v-0861b5be] h3+*,[data-v-0861b5be] ol+*,[data-v-0861b5be] p+*,[data-v-0861b5be] ul+*{margin-top:20px}[data-v-0861b5be] ol ol,[data-v-0861b5be] ol ul,[data-v-0861b5be] ul ol,[data-v-0861b5be] ul ul{margin-top:0}[data-v-0861b5be] h2{font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-0861b5be] h2{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-0861b5be] h2{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-0861b5be] h3{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-0861b5be] h3{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-0861b5be] .code-listing{background:var(--color-code-background);border-color:var(--colors-grid,var(--color-grid));border-style:solid;border-width:1px}[data-v-0861b5be] .code-listing pre{font-size:.7058823529rem;line-height:1.8333333333;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace);padding:20px 0}.columns[data-v-30edf911]{display:grid;grid-template-rows:repeat(2,auto)}.columns.cols-2[data-v-30edf911]{gap:20px 8.3333333333%;grid-template-columns:repeat(2,1fr)}.columns.cols-3[data-v-30edf911]{gap:20px 4.1666666667%;grid-template-columns:repeat(3,1fr)}.asset[data-v-30edf911]{align-self:end;grid-row:1}.content[data-v-30edf911]{grid-row:2}@media only screen and (max-width:735px){.columns.cols-2[data-v-30edf911],.columns.cols-3[data-v-30edf911]{grid-template-columns:unset}.asset[data-v-30edf911],.content[data-v-30edf911]{grid-row:auto}}.content-and-media[data-v-3fa44f9e]{display:flex}.content-and-media.media-leading[data-v-3fa44f9e]{flex-direction:row-reverse}.content-and-media.media-trailing[data-v-3fa44f9e]{flex-direction:row}@media only screen and (min-width:736px){.content-and-media[data-v-3fa44f9e]{align-items:center;justify-content:center}}.content[data-v-3fa44f9e]{width:62.5%}.asset[data-v-3fa44f9e]{width:29.1666666667%}.media-leading .asset[data-v-3fa44f9e]{margin-right:8.3333333333%}.media-trailing .asset[data-v-3fa44f9e]{margin-left:8.3333333333%}@media only screen and (max-width:735px){.content-and-media.media-leading[data-v-3fa44f9e],.content-and-media.media-trailing[data-v-3fa44f9e]{flex-direction:column}.asset[data-v-3fa44f9e],.content[data-v-3fa44f9e]{width:100%}.media-leading .asset[data-v-3fa44f9e],.media-trailing .asset[data-v-3fa44f9e]{margin:20px 0 0 0}}.group[id][data-v-5b4a8b3c]{margin-top:20px;padding-top:20px}[data-v-5b4a8b3c] img,[data-v-5b4a8b3c] video{display:block;margin:0 auto;max-width:100%}.layout+[data-v-4d5a806e]{margin-top:40px}@media only screen and (max-width:735px){.layout[data-v-4d5a806e]:first-child>:not(.group[id]){margin-top:40px}}.body[data-v-20dca692]{background:var(--colors-text-background,var(--color-article-body-background));margin-left:auto;margin-right:auto;width:1536px;width:980px;border-radius:10px;transform:translateY(-120px)}@media only screen and (max-width:1250px){.body[data-v-20dca692]{width:692px}}@media only screen and (max-width:735px){.body[data-v-20dca692]{width:87.5%}}@media only screen and (max-width:320px){.body[data-v-20dca692]{width:215px}}@media only screen and (max-width:735px){.body[data-v-20dca692]{border-radius:0;transform:none}}.body[data-v-20dca692]~*{margin-top:-40px}.body-content[data-v-20dca692]{padding:40px 8.3333333333% 80px 8.3333333333%}@media only screen and (max-width:735px){.body-content[data-v-20dca692]{padding:0 0 40px 0}}.call-to-action[data-v-2bfdf182]{padding:65px 0;background:var(--color-call-to-action-background)}.theme-dark .call-to-action[data-v-2bfdf182]{--color-call-to-action-background:#424242}.row[data-v-2bfdf182]{margin-left:auto;margin-right:auto;width:1536px;width:980px;display:flex;align-items:center}@media only screen and (max-width:1250px){.row[data-v-2bfdf182]{width:692px}}@media only screen and (max-width:735px){.row[data-v-2bfdf182]{width:87.5%}}@media only screen and (max-width:320px){.row[data-v-2bfdf182]{width:215px}}[data-v-2bfdf182] img,[data-v-2bfdf182] video{max-height:560px}h2[data-v-2bfdf182]{font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){h2[data-v-2bfdf182]{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){h2[data-v-2bfdf182]{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.label[data-v-2bfdf182]{display:block;font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-bottom:var(--spacing-stacked-margin-small);color:var(--color-eyebrow)}@media only screen and (max-width:735px){.label[data-v-2bfdf182]{font-size:1.1176470588rem;line-height:1.2105263158;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content[data-v-2bfdf182]{margin-bottom:1.5rem}.right-column[data-v-2bfdf182]{margin-left:auto}@media only screen and (max-width:735px){.row[data-v-2bfdf182]{display:block}.col+.col[data-v-2bfdf182]{margin-top:40px}.call-to-action[data-v-426a965c]{margin-top:0}}.headline[data-v-d46a1474]{margin-bottom:var(--spacing-stacked-margin-large)}.heading[data-v-d46a1474]{font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-header-text)}@media only screen and (max-width:1250px){.heading[data-v-d46a1474]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.heading[data-v-d46a1474]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.dark .heading[data-v-d46a1474]{color:#fff}.eyebrow[data-v-d46a1474]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:block;margin-bottom:var(--spacing-stacked-margin-small);color:var(--color-eyebrow)}@media only screen and (max-width:1250px){.eyebrow[data-v-d46a1474]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.generic-modal[data-v-795f7b59]{position:fixed;top:0;left:0;right:0;bottom:0;margin:0;z-index:11000;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;background:none;overflow:auto}.modal-fullscreen[data-v-795f7b59]{align-items:stretch}.modal-fullscreen .container[data-v-795f7b59]{margin:0;flex:1;width:100%;height:100%;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.modal-standard[data-v-795f7b59]{padding:20px}.modal-standard .container[data-v-795f7b59]{padding:60px;border-radius:var(--border-radius,4px)}@media screen{[data-color-scheme=dark] .modal-standard .container[data-v-795f7b59]{background:#1d1d1f}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .modal-standard .container[data-v-795f7b59]{background:#1d1d1f}}@media only screen and (max-width:735px){.modal-standard[data-v-795f7b59]{padding:0;align-items:stretch}.modal-standard .container[data-v-795f7b59]{margin:20px 0 0;padding:50px 30px;flex:1;width:100%;border-bottom-left-radius:0;border-bottom-right-radius:0}}.backdrop[data-v-795f7b59]{overflow:auto;background:var(--backdrop-background,rgba(0,0,0,.4));-webkit-overflow-scrolling:touch;width:100%;height:100%;position:fixed}.container[data-v-795f7b59]{margin-left:auto;margin-right:auto;width:1536px;width:980px;background:var(--colors-generic-modal-background,var(--color-generic-modal-background));z-index:1;position:relative;overflow:auto;max-width:100%}@media only screen and (max-width:1250px){.container[data-v-795f7b59]{width:692px}}@media only screen and (max-width:735px){.container[data-v-795f7b59]{width:87.5%}}@media only screen and (max-width:320px){.container[data-v-795f7b59]{width:215px}}.close[data-v-795f7b59]{position:absolute;z-index:9999;top:22px;left:22px;width:17px;height:17px;color:#666;cursor:pointer;background:none;border:0;display:flex;align-items:center}.close .close-icon[data-v-795f7b59]{fill:currentColor;width:100%;height:100%}.theme-dark .container[data-v-795f7b59]{background:#000}.theme-dark .container .close[data-v-795f7b59]{color:#b0b0b0}.theme-code .container[data-v-795f7b59]{background-color:var(--code-background,var(--color-code-background))}.metadata[data-v-94ff76c0]{display:flex}.item[data-v-94ff76c0]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;flex-direction:column;justify-content:flex-end;align-items:center;border-right:1px solid #fff;padding:0 27.5px}@media only screen and (max-width:735px){.item[data-v-94ff76c0]{font-size:.6470588235rem;line-height:1.6363636364;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding:0 8px}}.item[data-v-94ff76c0]:first-of-type{padding-left:0}.item[data-v-94ff76c0]:last-of-type{border:none}@media only screen and (max-width:735px){.item[data-v-94ff76c0]:last-of-type{padding-right:0}}.content[data-v-94ff76c0]{color:#fff}.icon[data-v-94ff76c0]{font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){.icon[data-v-94ff76c0]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.icon[data-v-94ff76c0]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.small-icon[data-v-94ff76c0]{width:1em;height:1em;margin-left:.2rem}.small-icon.xcode-icon[data-v-94ff76c0]{width:.8em;height:.8em}.content-link[data-v-94ff76c0]{display:flex;align-items:center}a[data-v-94ff76c0]{color:var(--colors-link,var(--color-tutorials-overview-link))}.duration[data-v-94ff76c0]{display:flex;align-items:baseline;font-size:2.3529411765rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);line-height:1.8rem}@media only screen and (max-width:735px){.duration[data-v-94ff76c0]{font-size:1.6470588235rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);line-height:1.3rem}}.minutes[data-v-94ff76c0]{display:inline-block;font-size:1.6470588235rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);line-height:1.3rem}@media only screen and (max-width:735px){.minutes[data-v-94ff76c0]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);line-height:.8rem}}.item-large-icon[data-v-94ff76c0]{height:2.3rem;max-width:100%}@media only screen and (max-width:735px){.item-large-icon[data-v-94ff76c0]{height:1.5rem;max-width:100%}}.bottom[data-v-94ff76c0]{margin-top:13px}@media only screen and (max-width:735px){.bottom[data-v-94ff76c0]{margin-top:8px}}.hero[data-v-2a434750]{background-color:var(--color-tutorial-hero-background);color:var(--color-tutorial-hero-text);position:relative}@media screen{.hero.dark[data-v-2a434750]{--color-fill:#fff;--color-fill-secondary:#f7f7f7;--color-fill-tertiary:#f0f0f0;--color-fill-quaternary:#282828;--color-fill-blue:#00f;--color-fill-light-blue-secondary:#d1d1ff;--color-fill-gray:#ccc;--color-fill-gray-secondary:#f5f5f5;--color-fill-gray-tertiary:#f0f0f0;--color-fill-gray-quaternary:#f0f0f0;--color-fill-green-secondary:#f0fff0;--color-fill-orange-secondary:#fffaf6;--color-fill-red-secondary:#fff0f5;--color-figure-blue:#36f;--color-figure-gray:#000;--color-figure-gray-secondary:#666;--color-figure-gray-secondary-alt:#666;--color-figure-gray-tertiary:#666;--color-figure-green:green;--color-figure-light-gray:#666;--color-figure-orange:#c30;--color-figure-red:red;--color-tutorials-teal:#000;--color-article-background:var(--color-fill-tertiary);--color-article-body-background:var(--color-fill);--color-aside-deprecated:var(--color-figure-gray);--color-aside-deprecated-background:var(--color-fill-orange-secondary);--color-aside-deprecated-border:var(--color-figure-orange);--color-aside-experiment:var(--color-figure-gray);--color-aside-experiment-background:var(--color-fill-gray-secondary);--color-aside-experiment-border:var(--color-figure-light-gray);--color-aside-important:var(--color-figure-gray);--color-aside-important-background:var(--color-fill-gray-secondary);--color-aside-important-border:var(--color-figure-light-gray);--color-aside-note:var(--color-figure-gray);--color-aside-note-background:var(--color-fill-gray-secondary);--color-aside-note-border:var(--color-figure-light-gray);--color-aside-tip:var(--color-figure-gray);--color-aside-tip-background:var(--color-fill-gray-secondary);--color-aside-tip-border:var(--color-figure-light-gray);--color-aside-warning:var(--color-figure-gray);--color-aside-warning-background:var(--color-fill-red-secondary);--color-aside-warning-border:var(--color-figure-red);--color-badge-text:#fff;--color-badge-default:var(--color-figure-gray);--color-badge-beta:var(--color-figure-gray-tertiary);--color-badge-deprecated:var(--color-figure-orange);--color-badge-dark-default:#fff;--color-badge-dark-beta:#b0b0b0;--color-badge-dark-deprecated:#f60;--color-button-background:var(--color-fill-blue);--color-button-background-active:#36f;--color-button-background-hover:var(--color-figure-blue);--color-button-text:#fff;--color-call-to-action-background:var(--color-fill-secondary);--color-changes-added:var(--color-figure-light-gray);--color-changes-added-hover:var(--color-figure-light-gray);--color-changes-deprecated:var(--color-figure-light-gray);--color-changes-deprecated-hover:var(--color-figure-light-gray);--color-changes-modified:var(--color-figure-light-gray);--color-changes-modified-hover:var(--color-figure-light-gray);--color-changes-modified-previous-background:var(--color-fill);--color-code-background:var(--color-fill-secondary);--color-code-collapsible-background:var(--color-fill-tertiary);--color-code-collapsible-text:var(--color-figure-gray-secondary-alt);--color-code-line-highlight:rgba(51,102,255,.08);--color-code-line-highlight-border:var(--color-figure-blue);--color-code-plain:var(--color-figure-gray);--color-dropdown-background:hsla(0,0%,100%,.8);--color-dropdown-border:#ccc;--color-dropdown-option-text:#666;--color-dropdown-text:#000;--color-dropdown-dark-background:hsla(0,0%,100%,.1);--color-dropdown-dark-border:hsla(0,0%,94%,.2);--color-dropdown-dark-option-text:#ccc;--color-dropdown-dark-text:#fff;--color-eyebrow:var(--color-figure-gray-secondary);--color-focus-border-color:var(--color-fill-blue);--color-focus-color:rgba(0,125,250,.6);--color-form-error:var(--color-figure-red);--color-form-error-background:var(--color-fill-red-secondary);--color-form-valid:var(--color-figure-green);--color-form-valid-background:var(--color-fill-green-secondary);--color-generic-modal-background:var(--color-fill);--color-grid:var(--color-fill-gray);--color-header-text:var(--color-figure-gray);--color-hero-eyebrow:#ccc;--color-link:var(--color-figure-blue);--color-loading-placeholder-background:var(--color-fill);--color-nav-color:#000;--color-nav-current-link:#000;--color-nav-expanded:#fff;--color-nav-hierarchy-collapse-background:#f0f0f0;--color-nav-hierarchy-collapse-borders:#ccc;--color-nav-hierarchy-item-borders:#ccc;--color-nav-keyline:rgba(0,0,0,.2);--color-nav-link-color:#000;--color-nav-link-color-hover:#36f;--color-nav-outlines:#ccc;--color-nav-rule:hsla(0,0%,94%,.5);--color-nav-solid-background:#fff;--color-nav-sticking-expanded-keyline:rgba(0,0,0,.1);--color-nav-stuck:hsla(0,0%,100%,.9);--color-nav-uiblur-expanded:hsla(0,0%,100%,.9);--color-nav-uiblur-stuck:hsla(0,0%,100%,.7);--color-nav-root-subhead:var(--color-tutorials-teal);--color-nav-dark-border-top-color:hsla(0,0%,100%,.4);--color-nav-dark-color:#fff;--color-nav-dark-current-link:#fff;--color-nav-dark-expanded:#2a2a2a;--color-nav-dark-hierarchy-collapse-background:#424242;--color-nav-dark-hierarchy-collapse-borders:#666;--color-nav-dark-hierarchy-item-borders:#424242;--color-nav-dark-keyline:rgba(66,66,66,.95);--color-nav-dark-link-color:#fff;--color-nav-dark-link-color-hover:#09f;--color-nav-dark-outlines:#575757;--color-nav-dark-rule:#575757;--color-nav-dark-solid-background:#000;--color-nav-dark-sticking-expanded-keyline:rgba(66,66,66,.7);--color-nav-dark-stuck:rgba(42,42,42,.9);--color-nav-dark-uiblur-expanded:rgba(42,42,42,.9);--color-nav-dark-uiblur-stuck:rgba(42,42,42,.7);--color-nav-dark-root-subhead:#fff;--color-other-decl-button:var(--color-text-background);--color-runtime-preview-background:var(--color-fill-tertiary);--color-runtime-preview-disabled-text:hsla(0,0%,40%,.6);--color-runtime-preview-text:var(--color-figure-gray-secondary);--color-secondary-label:var(--color-figure-gray-secondary);--color-step-background:var(--color-fill-secondary);--color-step-caption:var(--color-figure-gray-secondary);--color-step-focused:var(--color-figure-light-gray);--color-step-text:var(--color-figure-gray-secondary);--color-svg-icon:#666;--color-syntax-addition:var(--color-figure-green);--color-syntax-attributes:#947100;--color-syntax-characters:#272ad8;--color-syntax-comments:#707f8c;--color-syntax-deletion:var(--color-figure-red);--color-syntax-documentation-markup:#506375;--color-syntax-documentation-markup-keywords:#506375;--color-syntax-heading:#ba2da2;--color-syntax-highlighted:rgba(0,113,227,.2);--color-syntax-keywords:#ad3da4;--color-syntax-marks:#000;--color-syntax-numbers:#272ad8;--color-syntax-other-class-names:#703daa;--color-syntax-other-constants:#4b21b0;--color-syntax-other-declarations:#047cb0;--color-syntax-other-function-and-method-names:#4b21b0;--color-syntax-other-instance-variables-and-globals:#703daa;--color-syntax-other-preprocessor-macros:#78492a;--color-syntax-other-type-names:#703daa;--color-syntax-param-internal-name:#404040;--color-syntax-plain-text:#000;--color-syntax-preprocessor-statements:#78492a;--color-syntax-project-class-names:#3e8087;--color-syntax-project-constants:#2d6469;--color-syntax-project-function-and-method-names:#2d6469;--color-syntax-project-instance-variables-and-globals:#3e8087;--color-syntax-project-preprocessor-macros:#78492a;--color-syntax-project-type-names:#3e8087;--color-syntax-strings:#d12f1b;--color-syntax-type-declarations:#03638c;--color-syntax-urls:#1337ff;--color-tabnav-item-border-color:var(--color-fill-gray);--color-text:var(--color-figure-gray);--color-text-background:var(--color-fill);--color-tutorial-assessments-background:var(--color-fill-secondary);--color-tutorial-background:var(--color-fill);--color-tutorial-navbar-dropdown-background:var(--color-fill);--color-tutorial-navbar-dropdown-border:var(--color-fill-gray);--color-tutorial-quiz-border-active:var(--color-figure-blue);--color-tutorials-overview-background:#161616;--color-tutorials-overview-content:#fff;--color-tutorials-overview-content-alt:#fff;--color-tutorials-overview-eyebrow:#ccc;--color-tutorials-overview-icon:#b0b0b0;--color-tutorials-overview-link:#09f;--color-tutorials-overview-navigation-link:#ccc;--color-tutorials-overview-navigation-link-active:#fff;--color-tutorials-overview-navigation-link-hover:#fff;--color-tutorial-hero-text:#fff;--color-tutorial-hero-background:#000;--color-navigator-item-hover:rgba(0,0,255,.05);--color-card-background:var(--color-fill);--color-card-content-text:var(--color-figure-gray);--color-card-eyebrow:var(--color-figure-gray-secondary-alt);--color-card-shadow:rgba(0,0,0,.04);--color-link-block-card-border:rgba(0,0,0,.04);--color-standard-red:#ffc2c2;--color-standard-orange:#fc9;--color-standard-yellow:#ffe0a3;--color-standard-blue:#9cf;--color-standard-green:#9cc;--color-standard-purple:#ccf;--color-standard-gray:#f0f0f0;--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-light-blue-secondary:#004ec4;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-gray-quaternary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-badge-text:#000;--color-badge-default:var(--color-badge-dark-default);--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-highlighted:rgba(0,113,227,.6);--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary);--color-navigator-item-hover:rgba(0,102,255,.5);--color-card-shadow:hsla(0,0%,100%,.04);--color-link-block-card-border:hsla(0,0%,100%,.25);--color-standard-red:#8b0000;--color-standard-orange:#8b4000;--color-standard-yellow:#8f7200;--color-standard-blue:#002d75;--color-standard-green:#023b2d;--color-standard-purple:#512b55;--color-standard-gray:#2a2a2a}}.bg[data-v-2a434750]{background-color:var(--color-tutorial-hero-background);background-position:top;background-repeat:no-repeat;background-size:cover;content:"";height:100%;left:0;opacity:.3;position:absolute;top:0;width:100%}.row[data-v-2a434750]{margin-left:auto;margin-right:auto;width:1536px;width:980px;padding:80px 0}@media only screen and (max-width:1250px){.row[data-v-2a434750]{width:692px}}@media only screen and (max-width:735px){.row[data-v-2a434750]{width:87.5%}}@media only screen and (max-width:320px){.row[data-v-2a434750]{width:215px}}.col[data-v-2a434750]{z-index:1}[data-v-2a434750] .eyebrow{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-hero-eyebrow)}@media only screen and (max-width:1250px){[data-v-2a434750] .eyebrow{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.headline[data-v-2a434750]{font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-bottom:2rem}@media only screen and (max-width:1250px){.headline[data-v-2a434750]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.headline[data-v-2a434750]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.intro[data-v-2a434750]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){.intro[data-v-2a434750]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content+p[data-v-2a434750]{margin-top:var(--spacing-stacked-margin-large)}@media only screen and (max-width:735px){.content+p[data-v-2a434750]{margin-top:8px}}.call-to-action[data-v-2a434750]{display:flex;align-items:center}.call-to-action .cta-icon[data-v-2a434750]{margin-left:.4rem;width:1em;height:1em}.metadata[data-v-2a434750]{margin-top:2rem}.video-asset[data-v-2a434750]{display:grid;height:100vh;margin:0;place-items:center center}.video-asset[data-v-2a434750] video{max-width:1280px;min-width:320px;width:100%}@media only screen and (max-width:735px){.headline[data-v-2a434750]{margin-bottom:19px}}.tutorial-hero[data-v-35a9482f]{margin-bottom:80px}@media only screen and (max-width:735px){.tutorial-hero[data-v-35a9482f]{margin-bottom:0}}.title[data-v-28135d78]{font-size:.7058823529rem;line-height:1.3333333333;color:var(--colors-secondary-label,var(--color-secondary-label))}.title[data-v-28135d78],.title[data-v-61b03ec2]{font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.title[data-v-61b03ec2]{font-size:1.1176470588rem;line-height:1.2105263158;color:var(--colors-header-text,var(--color-header-text));margin:25px 0}.question-content[data-v-61b03ec2] code{font-size:.7647058824rem;line-height:1.8461538462;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}.choices[data-v-61b03ec2]{display:flex;flex-direction:column;padding:0;list-style:none;margin:25px 0}.choice[data-v-61b03ec2]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);flex:1;border-radius:var(--border-radius,4px);margin:8px 0;padding:1.5rem 40px;cursor:pointer;background:var(--colors-text-background,var(--color-text-background));display:flex;flex-direction:column;justify-content:center;border-width:1px;border-style:solid;border-color:var(--colors-grid,var(--color-grid));position:relative}.choice[data-v-61b03ec2] img{max-height:23.5294117647rem}.choice[data-v-61b03ec2]:first-of-type{margin-top:0}.choice[data-v-61b03ec2] code{font-size:.7647058824rem;line-height:1.8461538462;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}.controls[data-v-61b03ec2]{text-align:center;margin-bottom:40px}.controls .button-cta[data-v-61b03ec2]{margin:.5rem;margin-top:0;padding:.3rem 3rem;min-width:8rem}input[type=radio][data-v-61b03ec2]{position:absolute;width:100%;left:0;height:100%;opacity:0;z-index:-1}.active[data-v-61b03ec2]{border-color:var(--color-tutorial-quiz-border-active);box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.active [data-v-61b03ec2]{color:var(--colors-text,var(--color-text))}.correct[data-v-61b03ec2]{background:var(--color-form-valid-background);border-color:var(--color-form-valid)}.correct .choice-icon[data-v-61b03ec2]{fill:var(--color-form-valid)}.incorrect[data-v-61b03ec2]{background:var(--color-form-error-background);border-color:var(--color-form-error)}.incorrect .choice-icon[data-v-61b03ec2]{fill:var(--color-form-error)}.correct[data-v-61b03ec2],.incorrect[data-v-61b03ec2]{position:relative}.correct .choice-icon[data-v-61b03ec2],.incorrect .choice-icon[data-v-61b03ec2]{position:absolute;top:11px;left:10px;font-size:20px;width:1.05em}.disabled[data-v-61b03ec2]{pointer-events:none}.answer[data-v-61b03ec2]{margin:.5rem 1.5rem .5rem 0;font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.answer[data-v-61b03ec2]:last-of-type{margin-bottom:0}[data-v-61b03ec2] .question>.code-listing{padding:unset;border-radius:0}[data-v-61b03ec2] pre{padding:0}[data-v-61b03ec2] img{display:block;margin-left:auto;margin-right:auto;max-width:100%}.title[data-v-65e3c02c]{font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--colors-header-text,var(--color-header-text))}@media only screen and (max-width:1250px){.title[data-v-65e3c02c]{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-65e3c02c]{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title p[data-v-65e3c02c]{color:var(--colors-text,var(--color-text))}.assessments[data-v-65e3c02c]{box-sizing:content-box;padding:0 1rem;background:var(--color-tutorial-assessments-background);margin-left:auto;margin-right:auto;width:1536px;width:980px;margin-bottom:80px}@media only screen and (max-width:1250px){.assessments[data-v-65e3c02c]{width:692px}}@media only screen and (max-width:735px){.assessments[data-v-65e3c02c]{width:87.5%}}@media only screen and (max-width:320px){.assessments[data-v-65e3c02c]{width:215px}}.banner[data-v-65e3c02c]{padding:40px 0;border-bottom:1px solid;margin-bottom:40px;border-color:var(--colors-grid,var(--color-grid));text-align:center}.success[data-v-65e3c02c]{text-align:center;padding-bottom:40px;font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--colors-text,var(--color-text))}@media only screen and (max-width:1250px){.success[data-v-65e3c02c]{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.success[data-v-65e3c02c]{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.assessments-wrapper[data-v-65e3c02c]{padding-top:80px}.assessments-wrapper[data-v-6db06128]{padding-bottom:40px;padding-top:0}@media only screen and (max-width:735px){.assessments-wrapper[data-v-6db06128]{padding-top:80px}}.article[data-v-9d2d5cc2]{background:var(--colors-article-background,var(--color-article-background))}@media only screen and (max-width:735px){.article[data-v-9d2d5cc2]{background:var(--colors-text-background,var(--color-article-body-background))}}.intro-container[data-v-7dcf2d10]{margin-bottom:80px}.intro[data-v-7dcf2d10]{display:flex;align-items:center}@media only screen and (max-width:735px){.intro[data-v-7dcf2d10]{padding-bottom:0;flex-direction:column}}.intro.ide .media[data-v-7dcf2d10] img{background-color:var(--colors-text-background,var(--color-text-background))}.col.left[data-v-7dcf2d10]{padding-right:40px}@media only screen and (max-width:1250px){.col.left[data-v-7dcf2d10]{padding-right:28px}}@media only screen and (max-width:735px){.col.left[data-v-7dcf2d10]{margin-left:auto;margin-right:auto;width:1536px;width:980px;padding-right:0}}@media only screen and (max-width:735px)and (max-width:1250px){.col.left[data-v-7dcf2d10]{width:692px}}@media only screen and (max-width:735px)and (max-width:735px){.col.left[data-v-7dcf2d10]{width:87.5%}}@media only screen and (max-width:735px)and (max-width:320px){.col.left[data-v-7dcf2d10]{width:215px}}.col.right[data-v-7dcf2d10]{padding-left:40px}@media only screen and (max-width:1250px){.col.right[data-v-7dcf2d10]{padding-left:28px}}@media only screen and (max-width:735px){.col.right[data-v-7dcf2d10]{padding-left:0}}.content[data-v-7dcf2d10]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.media[data-v-7dcf2d10] img{width:auto;max-height:560px;min-height:18.8235294118rem;-o-object-fit:scale-down;object-fit:scale-down}@media only screen and (max-width:735px){.media[data-v-7dcf2d10]{margin:0;margin-top:40px}.media[data-v-7dcf2d10] image,.media[data-v-7dcf2d10] video{max-height:80vh}}.media[data-v-7dcf2d10] .asset{padding:0 20px}.headline[data-v-7dcf2d10]{color:var(--colors-header-text,var(--color-header-text))}[data-v-7dcf2d10] .eyebrow{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){[data-v-7dcf2d10] .eyebrow{font-size:1.1176470588rem;line-height:1.2105263158;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-7dcf2d10] .eyebrow a{color:inherit}[data-v-7dcf2d10] .heading{font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-7dcf2d10] .heading{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-7dcf2d10] .heading{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.expanded-intro[data-v-7dcf2d10]{margin-left:auto;margin-right:auto;width:1536px;width:980px;margin-top:40px}@media only screen and (max-width:1250px){.expanded-intro[data-v-7dcf2d10]{width:692px}}@media only screen and (max-width:735px){.expanded-intro[data-v-7dcf2d10]{width:87.5%}}@media only screen and (max-width:320px){.expanded-intro[data-v-7dcf2d10]{width:215px}}[data-v-7dcf2d10] .cols-2{gap:20px 16.6666666667%}[data-v-7dcf2d10] .cols-3 .column{gap:20px 12.5%}.code-preview[data-v-395e30cd]{position:sticky;overflow-y:auto;-webkit-overflow-scrolling:touch;background-color:var(--background,var(--color-step-background));height:calc(100vh - 3.05882rem)}.code-preview.ide[data-v-395e30cd]{height:100vh}.code-preview[data-v-395e30cd] .code-listing{color:var(--text,var(--color-code-plain))}.code-preview[data-v-395e30cd] .code-listing .code-line-container{padding-right:14px}.code-preview[data-v-395e30cd] pre{font-size:.7058823529rem;line-height:1.8333333333;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}.header[data-v-395e30cd]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);position:relative;display:flex;justify-content:space-between;align-items:center;width:-webkit-fill-available;width:-moz-available;width:stretch;cursor:pointer;font-weight:600;padding:8px 12px;border-radius:var(--border-radius,4px) var(--border-radius,4px) 0 0;z-index:1;background:var(--color-runtime-preview-background);color:var(--colors-runtime-preview-text,var(--color-runtime-preview-text))}.header[data-v-395e30cd]:focus{outline-style:none}#app.fromkeyboard .header[data-v-395e30cd]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.runtime-preview[data-v-395e30cd]{--color-runtime-preview-shadow:rgba(0,0,0,.4);position:absolute;top:0;right:0;background:var(--color-runtime-preview-background);border-radius:var(--border-radius,4px);margin:1rem;margin-left:0;transition:width .2s ease-in;box-shadow:0 0 3px 0 var(--color-runtime-preview-shadow)}@media screen{[data-color-scheme=dark] .runtime-preview[data-v-395e30cd]{--color-runtime-preview-shadow:hsla(0,0%,100%,.4)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .runtime-preview[data-v-395e30cd]{--color-runtime-preview-shadow:hsla(0,0%,100%,.4)}}@supports not ((width:-webkit-fill-available) or (width:-moz-available) or (width:stretch)){.runtime-preview[data-v-395e30cd]{display:flex;flex-direction:column}}.runtime-preview .runtimve-preview__container[data-v-395e30cd]{border-radius:var(--border-radius,4px);overflow:hidden}.runtime-preview-ide[data-v-395e30cd]{top:0}.runtime-preview-ide .runtime-preview-asset[data-v-395e30cd] img{background-color:var(--color-runtime-preview-background)}.runtime-preview.collapsed[data-v-395e30cd]{box-shadow:0 0 3px 0 var(--color-runtime-preview-shadow);width:102px}.runtime-preview.collapsed .header[data-v-395e30cd]{border-radius:var(--border-radius,4px)}.runtime-preview.disabled[data-v-395e30cd]{box-shadow:0 0 3px 0 transparent}.runtime-preview.disabled .header[data-v-395e30cd]{color:var(--color-runtime-preview-disabled-text);cursor:auto}.runtime-preview-asset[data-v-395e30cd]{border-radius:0 0 var(--border-radius,4px) var(--border-radius,4px)}.runtime-preview-asset[data-v-395e30cd] img{border-bottom-left-radius:var(--border-radius,4px);border-bottom-right-radius:var(--border-radius,4px)}.preview-icon[data-v-395e30cd]{height:.8em;width:.8em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.preview-show[data-v-395e30cd]{transform:scale(-1)}[data-v-0bdf2f26] pre{padding:10px 0}.toggle-preview[data-v-78763c14]{color:var(--color-runtime-preview-disabled-text);display:flex;align-items:center}a[data-v-78763c14]{color:var(--url,var(--color-link))}.toggle-text[data-v-78763c14]{display:flex;align-items:center}svg.toggle-icon[data-v-78763c14]{width:1em;height:1em;margin-left:.5em}.mobile-code-preview[data-v-b1691954]{background-color:var(--background,var(--color-step-background));padding:14px 0}@media only screen and (max-width:735px){.mobile-code-preview[data-v-b1691954]{display:flex;flex-direction:column}}.runtime-preview-modal-content[data-v-b1691954]{padding:45px 60px 0 60px;min-width:200px}.runtime-preview-modal-content[data-v-b1691954] img:not(.file-icon){border-radius:var(--border-radius,4px);box-shadow:0 0 3px rgba(0,0,0,.4);max-height:80vh;width:auto;display:block;margin-bottom:1rem}.runtime-preview-modal-content .runtime-preview-label[data-v-b1691954]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-runtime-preview-text);display:block;text-align:center;padding:.5em}[data-v-b1691954] .code-listing{color:var(--text,var(--color-code-plain))}[data-v-b1691954] .full-code-listing{padding-top:60px;min-height:calc(100vh - 60px)}[data-v-b1691954] pre{font-size:.7058823529rem;line-height:1.8333333333;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}.preview-toggle-container[data-v-b1691954]{align-self:flex-end;margin-right:20px}.step-container[data-v-d0198556]{margin:0}.step-container[data-v-d0198556]:not(:last-child){margin-bottom:100px}@media only screen and (max-width:735px){.step-container[data-v-d0198556]:not(:last-child){margin-bottom:80px}}.step[data-v-d0198556]{position:relative;border-radius:var(--tutorial-step-border-radius,var(--border-radius,4px));padding:1rem 2rem;background-color:var(--color-step-background);overflow:hidden;filter:blur(0)}.step[data-v-d0198556]:before{content:"";position:absolute;top:0;left:0;border:1px solid var(--color-step-focused);background-color:var(--color-step-focused);height:calc(100% - 2px);width:4px;opacity:0;transition:opacity .15s ease-in}.step.focused[data-v-d0198556],.step[data-v-d0198556]:focus{outline:none}.step.focused[data-v-d0198556]:before,.step[data-v-d0198556]:focus:before{opacity:1}:root.no-js .step.focused[data-v-d0198556]:before,:root.no-js .step[data-v-d0198556]:focus:before{opacity:0}@media only screen and (max-width:735px){.step[data-v-d0198556]{padding-left:2rem}.step[data-v-d0198556]:before{opacity:1}}.step-label[data-v-d0198556]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--colors-text,var(--color-step-text));margin-bottom:var(--spacing-stacked-margin-small)}.caption[data-v-d0198556]{border-top:1px solid;border-color:var(--color-step-caption);padding:1rem 0 0 0;margin-top:1rem}.media-container[data-v-d0198556]{display:none}@media only screen and (max-width:735px){.step[data-v-d0198556]{margin:0 .5882352941rem 1.1764705882rem .5882352941rem}.step.focused[data-v-d0198556],.step[data-v-d0198556]:focus{outline:none}.media-container[data-v-d0198556]{display:block;position:relative}.media-container[data-v-d0198556] img,.media-container[data-v-d0198556] video{max-height:80vh}[data-v-d0198556] .asset{padding:0 20px}}.steps[data-v-e3061a7c]{position:relative;font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;color:var(--colors-text,var(--color-text))}@media only screen and (max-width:735px){.steps[data-v-e3061a7c]{padding-top:80px}.steps[data-v-e3061a7c]:before{position:absolute;top:0;border-top:1px solid var(--color-fill-gray-tertiary);content:"";width:calc(100% - 2.35294rem);margin:0 1.1764705882rem}}.steps[data-v-e3061a7c] aside{background:unset;border:unset;box-shadow:unset;-moz-column-break-inside:unset;break-inside:unset;padding:unset}.steps[data-v-e3061a7c] aside .label{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.steps[data-v-e3061a7c] aside+*{margin-top:var(--spacing-stacked-margin-large)}.content-container[data-v-e3061a7c]{flex:none;margin-right:4.1666666667%;width:37.5%;margin-top:140px;margin-bottom:94vh}@media only screen and (max-width:735px){.content-container[data-v-e3061a7c]{margin-top:0;margin-bottom:0;height:100%;margin-left:0;margin-right:0;position:relative;width:100%}}.asset-container[data-v-e3061a7c]{flex:none;height:calc(100vh - 3.05882rem);background-color:var(--background,var(--color-step-background));max-width:921px;width:calc(50vw + 8.33333%);position:sticky;top:3.0588235294rem;transition:margin .1s ease-in-out}@media only screen and (max-width:767px){.asset-container[data-v-e3061a7c]{top:2.8235294118rem;height:calc(100vh - 2.82353rem)}}.asset-container[data-v-e3061a7c]:not(.for-step-code){overflow-y:auto;-webkit-overflow-scrolling:touch}.asset-container.ide[data-v-e3061a7c]{height:100vh;top:0}@media only screen and (min-width:736px){.asset-container[data-v-e3061a7c]{display:grid}.asset-container>[data-v-e3061a7c]{grid-row:1;grid-column:1;height:calc(100vh - 3.05882rem)}.asset-container.ide>[data-v-e3061a7c]{height:100vh}}.asset-container .step-asset[data-v-e3061a7c]{box-sizing:border-box;padding:0;padding-left:40px;min-height:320px;height:100%}.asset-container .step-asset[data-v-e3061a7c],.asset-container .step-asset[data-v-e3061a7c] picture{height:100%;display:flex;align-items:center}.asset-container .step-asset[data-v-e3061a7c] .video-replay-container{height:100%;display:flex;flex-direction:column;justify-content:center}.asset-container .step-asset[data-v-e3061a7c] img,.asset-container .step-asset[data-v-e3061a7c] video{width:auto;max-height:calc(100vh - 3.05882rem - 80px);max-width:531.66667px;margin:0}@media only screen and (max-width:1250px){.asset-container .step-asset[data-v-e3061a7c] img,.asset-container .step-asset[data-v-e3061a7c] video{max-width:363.66667px}}.asset-container .step-asset[data-v-e3061a7c] .video-replay-container,.asset-container .step-asset[data-v-e3061a7c] img{min-height:320px}.asset-container .step-asset[data-v-e3061a7c] .video-replay-container video{min-height:280px}.asset-container .step-asset[data-v-e3061a7c] [data-orientation=landscape]{max-width:min(841px,calc(50vw + 8.33333% - 80px))}@media only screen and (max-width:735px){.asset-container[data-v-e3061a7c]{display:none}}.asset-wrapper[data-v-e3061a7c]{width:63.2%;align-self:center;transition:transform .25s ease-out;will-change:transform}.asset-wrapper.ide .step-asset[data-v-e3061a7c] img{background-color:var(--background,var(--color-step-background))}.asset-wrapper[data-v-e3061a7c]:has([data-orientation=landscape]){width:unset}[data-v-e3061a7c] .runtime-preview-asset{display:grid}[data-v-e3061a7c] .runtime-preview-asset>*{grid-row:1;grid-column:1}.interstitial[data-v-e3061a7c]{padding:0 2rem}.interstitial[data-v-e3061a7c]:not(:first-child){margin-top:5.8823529412rem}.interstitial[data-v-e3061a7c]:not(:last-child){margin-bottom:30px}@media only screen and (max-width:735px){.interstitial[data-v-e3061a7c]{margin-left:auto;margin-right:auto;width:1536px;width:980px;padding:0}}@media only screen and (max-width:735px)and (max-width:1250px){.interstitial[data-v-e3061a7c]{width:692px}}@media only screen and (max-width:735px)and (max-width:735px){.interstitial[data-v-e3061a7c]{width:87.5%}}@media only screen and (max-width:735px)and (max-width:320px){.interstitial[data-v-e3061a7c]{width:215px}}@media only screen and (max-width:735px){.interstitial[data-v-e3061a7c]:not(:first-child){margin-top:0}}.fade-enter-active[data-v-e3061a7c],.fade-leave-active[data-v-e3061a7c]{transition:opacity .3s ease-in-out}.fade-enter[data-v-e3061a7c],.fade-leave-to[data-v-e3061a7c]{opacity:0}.section[data-v-6b3a0b3a]{padding-top:80px}.sections[data-v-79a75e9e]{margin-left:auto;margin-right:auto;width:1536px;width:980px}@media only screen and (max-width:1250px){.sections[data-v-79a75e9e]{width:692px}}@media only screen and (max-width:735px){.sections[data-v-79a75e9e]{width:87.5%}}@media only screen and (max-width:320px){.sections[data-v-79a75e9e]{width:215px}}@media only screen and (max-width:735px){.sections[data-v-79a75e9e]{margin:0;width:100%}}.tutorial[data-v-1631abcb]{background-color:var(--colors-text-background,var(--color-tutorial-background))} \ No newline at end of file diff --git a/docs/css/topic.672a9049.css b/docs/css/topic.672a9049.css deleted file mode 100644 index 4ca31e0..0000000 --- a/docs/css/topic.672a9049.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */.nav-title-content[data-v-854b4dd6]{max-width:100%}.title[data-v-854b4dd6]{color:var(--color-nav-root-title,currentColor);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;vertical-align:top;max-width:296px}@media only screen and (max-width:1023px){.title[data-v-854b4dd6]{max-width:205px}}@media only screen and (max-width:767px){.title[data-v-854b4dd6]{flex-basis:fill;display:initial;vertical-align:initial;max-width:none}}.subhead[data-v-854b4dd6]{color:var(--color-nav-root-subhead)}.theme-dark .subhead[data-v-854b4dd6]{color:var(--color-nav-dark-root-subhead)}.mobile-dropdown[data-v-2c27d339]{box-sizing:border-box}.nav--in-breakpoint-range .mobile-dropdown[data-v-2c27d339]{padding-left:.2352941176rem;padding-right:.2352941176rem}.mobile-dropdown ul[data-v-2c27d339]{list-style:none}.mobile-dropdown .option[data-v-2c27d339]{cursor:pointer;font-size:.7058823529rem;padding:.5rem 0;display:block;text-decoration:none;color:inherit}.mobile-dropdown .option[data-v-2c27d339]:focus{outline-offset:0}.mobile-dropdown .option.depth1[data-v-2c27d339]{padding-left:.4705882353rem}.active[data-v-2c27d339],.tutorial.router-link-active[data-v-2c27d339]{font-weight:600}.active[data-v-2c27d339]:focus,.tutorial.router-link-active[data-v-2c27d339]:focus{outline:none}.chapter-list[data-v-2c27d339]:not(:first-child){margin-top:1rem}.chapter-name[data-v-2c27d339],.tutorial[data-v-2c27d339]{padding:.5rem 0;font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.section-list[data-v-2c27d339],.tutorial-list[data-v-2c27d339]{padding:0 .5882352941rem}.chapter-list:last-child .tutorial-list[data-v-2c27d339]:last-child{padding-bottom:10em}.chapter-list[data-v-2c27d339]{display:inline-block}.form-element[data-v-47dfd245]{position:relative}.form-dropdown[data-v-47dfd245]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:block;box-sizing:border-box;width:100%;height:3.3em;color:var(--color-dropdown-text);padding:1.1176470588rem 2.3529411765rem 0 .9411764706rem;text-align:left;border:1px solid var(--color-dropdown-border);border-radius:var(--border-radius,4px);background-clip:padding-box;margin-bottom:.8235294118rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;min-height:32px}.form-dropdown[data-v-47dfd245]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.form-dropdown.no-eyebrow[data-v-47dfd245]{padding-top:0}.form-dropdown[data-v-47dfd245]:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--color-dropdown-text)}.form-dropdown[data-v-47dfd245]::-ms-expand{opacity:0}.form-dropdown~.form-icon[data-v-47dfd245]{position:absolute;display:block;pointer-events:none;fill:var(--color-figure-gray-tertiary);right:14px;width:13px;height:auto;top:50%;transform:translateY(-50%)}.is-open .form-dropdown~.form-icon[data-v-47dfd245]{transform:translateY(-50%) scale(-1)}@media only screen and (max-width:735px){.form-dropdown~.form-icon[data-v-47dfd245]{right:14px}}.form-dropdown~.form-label[data-v-47dfd245]{font-size:.7058823529rem;line-height:1.75;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);position:absolute;top:.4705882353rem;left:17px;color:var(--color-figure-gray-secondary);pointer-events:none;padding:0;z-index:1}.form-dropdown[data-v-47dfd245] option{color:var(--color-dropdown-text)}.form-dropdown-selectnone[data-v-47dfd245]{color:transparent}.form-dropdown-selectnone~.form-label[data-v-47dfd245]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);top:19px;left:17px;color:var(--color-figure-gray-tertiary)}.form-dropdown-selectnone[data-v-47dfd245]:-moz-focusring{text-shadow:none}.form-dropdown-selectnone[data-v-47dfd245]::-ms-value{display:none}.theme-dark .form-dropdown[data-v-47dfd245]{color:var(--color-dropdown-dark-text);background-color:var(--color-dropdown-dark-background);border-color:var(--color-dropdown-dark-border)}.theme-dark .form-dropdown~.form-label[data-v-47dfd245]{color:#ccc}.theme-dark .form-dropdown[data-v-47dfd245]:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--color-dropdown-dark-text)}.theme-dark .form-dropdown.form-dropdown-selectnone[data-v-47dfd245]{color:transparent}.theme-dark .form-dropdown.form-dropdown-selectnone[data-v-47dfd245]:-moz-focusring{text-shadow:none}.theme-dark .form-dropdown-selectnone~.form-label[data-v-47dfd245]{color:#b0b0b0}.dropdown-small[data-v-6adda760]{height:30px;display:flex;align-items:center;position:relative;background:var(--color-fill)}.dropdown-small .form-dropdown-toggle[data-v-6adda760]{line-height:1.5;font-size:12px;padding-top:0;padding-bottom:0;padding-left:20px;min-height:unset;height:30px;display:flex;align-items:center}.dropdown-small .form-dropdown-toggle[data-v-6adda760]:focus{box-shadow:none;border-color:var(--color-dropdown-border)}.fromkeyboard .dropdown-small .form-dropdown-toggle[data-v-6adda760]:focus{box-shadow:0 0 0 2px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.form-dropdown-toggle[data-v-6adda760]{margin:0}.is-open .form-dropdown-toggle[data-v-6adda760]{border-radius:var(--border-radius,4px) var(--border-radius,4px) 0 0;border-bottom:none;padding-bottom:1px}.fromkeyboard .is-open .form-dropdown-toggle[data-v-6adda760]{box-shadow:1px -1px 0 1px var(--color-focus-color),-1px -1px 0 1px var(--color-focus-color);border-color:var(--color-focus-border-color)}.form-dropdown-title[data-v-6adda760]{margin:0;padding:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dropdown-custom[data-v-6adda760]{border-radius:var(--border-radius,4px)}.dropdown-custom.is-open[data-v-6adda760]{border-radius:var(--border-radius,4px) var(--border-radius,4px) 0 0}.dropdown-custom[data-v-6adda760] .form-dropdown-content{background:var(--color-fill);position:absolute;right:0;left:0;top:100%;border-bottom-left-radius:var(--border-radius,4px);border-bottom-right-radius:var(--border-radius,4px);border:1px solid var(--color-dropdown-border);border-top:none;display:none;overflow-y:auto}.dropdown-custom[data-v-6adda760] .form-dropdown-content.is-open{display:block}.fromkeyboard .dropdown-custom[data-v-6adda760] .form-dropdown-content.is-open{box-shadow:1px 1px 0 1px var(--color-focus-color),-1px 1px 0 1px var(--color-focus-color);border-color:var(--color-focus-border-color);border-top-color:transparent}.nav .dropdown-custom[data-v-6adda760] .form-dropdown-content{max-height:calc(100vh - 116px - 3.05882rem)}.nav--is-sticking.nav .dropdown-custom[data-v-6adda760] .form-dropdown-content{max-height:calc(100vh - 3.05882rem - 72px)}.dropdown-custom[data-v-6adda760] .options{list-style:none;margin:0;padding:0 0 20px}.dropdown-custom[data-v-6adda760] .option{cursor:pointer;padding:5px 20px;font-size:12px;line-height:20px;outline:none}.dropdown-custom[data-v-6adda760] .option:hover{background-color:var(--color-fill-tertiary)}.dropdown-custom[data-v-6adda760] .option.option-active{font-weight:600}.fromkeyboard .dropdown-custom[data-v-6adda760] .option:hover{background-color:transparent}.fromkeyboard .dropdown-custom[data-v-6adda760] .option:focus{background-color:var(--color-fill-tertiary);outline:none}.tutorial-dropdown[data-v-618ff780]{grid-column:3}.section-tracker[data-v-618ff780]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray-secondary);margin-left:15px}.tutorial-dropdown[data-v-03cbd7f7]{grid-column:1/2}.tutorial-dropdown .options[data-v-03cbd7f7]{padding-top:1rem;padding-bottom:0}.tutorial-dropdown .option[data-v-03cbd7f7]{padding:5px 20px 5px 30px}.chapter-list[data-v-03cbd7f7]{padding-bottom:20px}.chapter-name[data-v-03cbd7f7]{margin:0 20px 5px 20px;line-height:normal;color:var(--color-figure-gray-secondary)}.chevron-icon[data-v-5381d5f3]{padding:0;color:var(--color-nav-outlines);grid-column:2;height:20px;width:20px;margin:0 4px}@media only screen and (min-width:768px){.nav[data-v-5381d5f3] .nav-content{display:grid;grid-template-columns:auto auto 3fr;align-items:center}.nav[data-v-5381d5f3] .nav-menu{padding:0;grid-column:3/5}.nav[data-v-5381d5f3] .nav-menu-item{margin:0}}.dropdown-container[data-v-5381d5f3]{height:3.0588235294rem;display:grid;grid-template-columns:minmax(230px,285px) auto minmax(230px,1fr);align-items:center}@media only screen and (max-width:1023px){.dropdown-container[data-v-5381d5f3]{grid-template-columns:minmax(173px,216px) auto minmax(173px,1fr)}}.separator[data-v-5381d5f3]{height:20px;border-right:1px solid;border-color:var(--color-nav-outlines);margin:0 20px;grid-column:2}.mobile-dropdown-container[data-v-5381d5f3],.nav--in-breakpoint-range.nav .dropdown-container[data-v-5381d5f3],.nav--in-breakpoint-range.nav .separator[data-v-5381d5f3]{display:none}.nav--in-breakpoint-range.nav .mobile-dropdown-container[data-v-5381d5f3]{display:block}.nav--in-breakpoint-range.nav[data-v-5381d5f3] .nav-title{grid-area:title}.nav--in-breakpoint-range.nav[data-v-5381d5f3] .pre-title{display:none}.nav[data-v-5381d5f3] .nav-title{grid-column:1;width:90%;padding-top:0}.primary-dropdown[data-v-5381d5f3],.secondary-dropdown[data-v-5381d5f3]{background:var(--color-tutorial-navbar-dropdown-background);border-color:var(--color-tutorial-navbar-dropdown-border)}.primary-dropdown[data-v-5381d5f3] .form-dropdown,.primary-dropdown[data-v-5381d5f3] .form-dropdown:focus,.secondary-dropdown[data-v-5381d5f3] .form-dropdown,.secondary-dropdown[data-v-5381d5f3] .form-dropdown:focus{border-color:var(--color-tutorial-navbar-dropdown-border)}.primary-dropdown[data-v-5381d5f3] .options,.secondary-dropdown[data-v-5381d5f3] .options{background:var(--color-tutorial-navbar-dropdown-background);border-color:var(--color-tutorial-navbar-dropdown-border)}[data-v-0861b5be] .code-listing+*,[data-v-0861b5be] aside+*,[data-v-0861b5be] h2+*,[data-v-0861b5be] h3+*,[data-v-0861b5be] ol+*,[data-v-0861b5be] p+*,[data-v-0861b5be] ul+*{margin-top:20px}[data-v-0861b5be] ol ol,[data-v-0861b5be] ol ul,[data-v-0861b5be] ul ol,[data-v-0861b5be] ul ul{margin-top:0}[data-v-0861b5be] h2{font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-0861b5be] h2{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-0861b5be] h2{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-0861b5be] h3{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-0861b5be] h3{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-0861b5be] .code-listing{background:var(--color-code-background);border-color:var(--colors-grid,var(--color-grid));border-style:solid;border-width:1px}[data-v-0861b5be] .code-listing pre{font-size:.7058823529rem;line-height:1.8333333333;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace);padding:20px 0}.columns[data-v-30edf911]{display:grid;grid-template-rows:repeat(2,auto)}.columns.cols-2[data-v-30edf911]{gap:20px 8.3333333333%;grid-template-columns:repeat(2,1fr)}.columns.cols-3[data-v-30edf911]{gap:20px 4.1666666667%;grid-template-columns:repeat(3,1fr)}.asset[data-v-30edf911]{align-self:end;grid-row:1}.content[data-v-30edf911]{grid-row:2}@media only screen and (max-width:735px){.columns.cols-2[data-v-30edf911],.columns.cols-3[data-v-30edf911]{grid-template-columns:unset}.asset[data-v-30edf911],.content[data-v-30edf911]{grid-row:auto}}.content-and-media[data-v-3fa44f9e]{display:flex}.content-and-media.media-leading[data-v-3fa44f9e]{flex-direction:row-reverse}.content-and-media.media-trailing[data-v-3fa44f9e]{flex-direction:row}@media only screen and (min-width:736px){.content-and-media[data-v-3fa44f9e]{align-items:center;justify-content:center}}.content[data-v-3fa44f9e]{width:62.5%}.asset[data-v-3fa44f9e]{width:29.1666666667%}.media-leading .asset[data-v-3fa44f9e]{margin-right:8.3333333333%}.media-trailing .asset[data-v-3fa44f9e]{margin-left:8.3333333333%}@media only screen and (max-width:735px){.content-and-media.media-leading[data-v-3fa44f9e],.content-and-media.media-trailing[data-v-3fa44f9e]{flex-direction:column}.asset[data-v-3fa44f9e],.content[data-v-3fa44f9e]{width:100%}.media-leading .asset[data-v-3fa44f9e],.media-trailing .asset[data-v-3fa44f9e]{margin:20px 0 0 0}}.group[id][data-v-5b4a8b3c]{margin-top:20px;padding-top:20px}[data-v-5b4a8b3c] img,[data-v-5b4a8b3c] video{display:block;margin:0 auto;max-width:100%}.layout+[data-v-4d5a806e]{margin-top:40px}@media only screen and (max-width:735px){.layout[data-v-4d5a806e]:first-child>:not(.group[id]){margin-top:40px}}.body[data-v-20dca692]{background:var(--colors-text-background,var(--color-article-body-background));margin-left:auto;margin-right:auto;width:980px;border-radius:10px;transform:translateY(-120px)}@media only screen and (max-width:1250px){.body[data-v-20dca692]{width:692px}}@media only screen and (max-width:735px){.body[data-v-20dca692]{width:87.5%}}@media only screen and (max-width:320px){.body[data-v-20dca692]{width:215px}}@media only screen and (max-width:735px){.body[data-v-20dca692]{border-radius:0;transform:none}}.body[data-v-20dca692]~*{margin-top:-40px}.body-content[data-v-20dca692]{padding:40px 8.3333333333% 80px 8.3333333333%}@media only screen and (max-width:735px){.body-content[data-v-20dca692]{padding:0 0 40px 0}}.call-to-action[data-v-2bfdf182]{padding:65px 0;background:var(--color-call-to-action-background)}.theme-dark .call-to-action[data-v-2bfdf182]{--color-call-to-action-background:#424242}.row[data-v-2bfdf182]{margin-left:auto;margin-right:auto;width:980px;display:flex;align-items:center}@media only screen and (max-width:1250px){.row[data-v-2bfdf182]{width:692px}}@media only screen and (max-width:735px){.row[data-v-2bfdf182]{width:87.5%}}@media only screen and (max-width:320px){.row[data-v-2bfdf182]{width:215px}}[data-v-2bfdf182] img,[data-v-2bfdf182] video{max-height:560px}h2[data-v-2bfdf182]{font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){h2[data-v-2bfdf182]{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){h2[data-v-2bfdf182]{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.label[data-v-2bfdf182]{display:block;font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-bottom:var(--spacing-stacked-margin-small);color:var(--color-eyebrow)}@media only screen and (max-width:735px){.label[data-v-2bfdf182]{font-size:1.1176470588rem;line-height:1.2105263158;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content[data-v-2bfdf182]{margin-bottom:1.5rem}.right-column[data-v-2bfdf182]{margin-left:auto}@media only screen and (max-width:735px){.row[data-v-2bfdf182]{display:block}.col+.col[data-v-2bfdf182]{margin-top:40px}.call-to-action[data-v-426a965c]{margin-top:0}}.headline[data-v-d46a1474]{margin-bottom:var(--spacing-stacked-margin-large)}.heading[data-v-d46a1474]{font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-header-text)}@media only screen and (max-width:1250px){.heading[data-v-d46a1474]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.heading[data-v-d46a1474]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.dark .heading[data-v-d46a1474]{color:#fff}.eyebrow[data-v-d46a1474]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:block;margin-bottom:var(--spacing-stacked-margin-small);color:var(--color-eyebrow)}@media only screen and (max-width:1250px){.eyebrow[data-v-d46a1474]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.generic-modal[data-v-795f7b59]{position:fixed;top:0;left:0;right:0;bottom:0;margin:0;z-index:11000;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;background:none;overflow:auto}.modal-fullscreen[data-v-795f7b59]{align-items:stretch}.modal-fullscreen .container[data-v-795f7b59]{margin:0;flex:1;width:100%;height:100%;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.modal-standard[data-v-795f7b59]{padding:20px}.modal-standard .container[data-v-795f7b59]{padding:60px;border-radius:var(--border-radius,4px)}@media screen{[data-color-scheme=dark] .modal-standard .container[data-v-795f7b59]{background:#1d1d1f}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .modal-standard .container[data-v-795f7b59]{background:#1d1d1f}}@media only screen and (max-width:735px){.modal-standard[data-v-795f7b59]{padding:0;align-items:stretch}.modal-standard .container[data-v-795f7b59]{margin:20px 0 0;padding:50px 30px;flex:1;width:100%;border-bottom-left-radius:0;border-bottom-right-radius:0}}.backdrop[data-v-795f7b59]{overflow:auto;background:var(--backdrop-background,rgba(0,0,0,.4));-webkit-overflow-scrolling:touch;width:100%;height:100%;position:fixed}.container[data-v-795f7b59]{margin-left:auto;margin-right:auto;width:980px;background:var(--colors-generic-modal-background,var(--color-generic-modal-background));z-index:1;position:relative;overflow:auto;max-width:100%}@media only screen and (max-width:1250px){.container[data-v-795f7b59]{width:692px}}@media only screen and (max-width:735px){.container[data-v-795f7b59]{width:87.5%}}@media only screen and (max-width:320px){.container[data-v-795f7b59]{width:215px}}.close[data-v-795f7b59]{position:absolute;z-index:9999;top:22px;left:22px;width:17px;height:17px;color:#666;cursor:pointer;background:none;border:0;display:flex;align-items:center}.close .close-icon[data-v-795f7b59]{fill:currentColor;width:100%;height:100%}.theme-dark .container[data-v-795f7b59]{background:#000}.theme-dark .container .close[data-v-795f7b59]{color:#b0b0b0}.theme-code .container[data-v-795f7b59]{background-color:var(--code-background,var(--color-code-background))}.metadata[data-v-94ff76c0]{display:flex}.item[data-v-94ff76c0]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;flex-direction:column;justify-content:flex-end;align-items:center;border-right:1px solid #fff;padding:0 27.5px}@media only screen and (max-width:735px){.item[data-v-94ff76c0]{font-size:.6470588235rem;line-height:1.6363636364;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding:0 8px}}.item[data-v-94ff76c0]:first-of-type{padding-left:0}.item[data-v-94ff76c0]:last-of-type{border:none}@media only screen and (max-width:735px){.item[data-v-94ff76c0]:last-of-type{padding-right:0}}.content[data-v-94ff76c0]{color:#fff}.icon[data-v-94ff76c0]{font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){.icon[data-v-94ff76c0]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.icon[data-v-94ff76c0]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.small-icon[data-v-94ff76c0]{width:1em;height:1em;margin-left:.2rem}.small-icon.xcode-icon[data-v-94ff76c0]{width:.8em;height:.8em}.content-link[data-v-94ff76c0]{display:flex;align-items:center}a[data-v-94ff76c0]{color:var(--colors-link,var(--color-tutorials-overview-link))}.duration[data-v-94ff76c0]{display:flex;align-items:baseline;font-size:2.3529411765rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);line-height:1.8rem}@media only screen and (max-width:735px){.duration[data-v-94ff76c0]{font-size:1.6470588235rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);line-height:1.3rem}}.minutes[data-v-94ff76c0]{display:inline-block;font-size:1.6470588235rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);line-height:1.3rem}@media only screen and (max-width:735px){.minutes[data-v-94ff76c0]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);line-height:.8rem}}.item-large-icon[data-v-94ff76c0]{height:2.3rem;max-width:100%}@media only screen and (max-width:735px){.item-large-icon[data-v-94ff76c0]{height:1.5rem;max-width:100%}}.bottom[data-v-94ff76c0]{margin-top:13px}@media only screen and (max-width:735px){.bottom[data-v-94ff76c0]{margin-top:8px}}.hero[data-v-2a434750]{background-color:var(--color-tutorial-hero-background);color:var(--color-tutorial-hero-text);position:relative}@media screen{.hero.dark[data-v-2a434750]{--color-fill:#fff;--color-fill-secondary:#f7f7f7;--color-fill-tertiary:#f0f0f0;--color-fill-quaternary:#282828;--color-fill-blue:#00f;--color-fill-light-blue-secondary:#d1d1ff;--color-fill-gray:#ccc;--color-fill-gray-secondary:#f5f5f5;--color-fill-gray-tertiary:#f0f0f0;--color-fill-gray-quaternary:#f0f0f0;--color-fill-green-secondary:#f0fff0;--color-fill-orange-secondary:#fffaf6;--color-fill-red-secondary:#fff0f5;--color-figure-blue:#36f;--color-figure-gray:#000;--color-figure-gray-secondary:#666;--color-figure-gray-secondary-alt:#666;--color-figure-gray-tertiary:#666;--color-figure-green:green;--color-figure-light-gray:#666;--color-figure-orange:#c30;--color-figure-red:red;--color-tutorials-teal:#000;--color-article-background:var(--color-fill-tertiary);--color-article-body-background:var(--color-fill);--color-aside-deprecated:var(--color-figure-gray);--color-aside-deprecated-background:var(--color-fill-orange-secondary);--color-aside-deprecated-border:var(--color-figure-orange);--color-aside-experiment:var(--color-figure-gray);--color-aside-experiment-background:var(--color-fill-gray-secondary);--color-aside-experiment-border:var(--color-figure-light-gray);--color-aside-important:var(--color-figure-gray);--color-aside-important-background:var(--color-fill-gray-secondary);--color-aside-important-border:var(--color-figure-light-gray);--color-aside-note:var(--color-figure-gray);--color-aside-note-background:var(--color-fill-gray-secondary);--color-aside-note-border:var(--color-figure-light-gray);--color-aside-tip:var(--color-figure-gray);--color-aside-tip-background:var(--color-fill-gray-secondary);--color-aside-tip-border:var(--color-figure-light-gray);--color-aside-warning:var(--color-figure-gray);--color-aside-warning-background:var(--color-fill-red-secondary);--color-aside-warning-border:var(--color-figure-red);--color-badge-default:var(--color-figure-light-gray);--color-badge-beta:var(--color-figure-gray-tertiary);--color-badge-deprecated:var(--color-figure-orange);--color-badge-dark-default:#fff;--color-badge-dark-beta:#b0b0b0;--color-badge-dark-deprecated:#f60;--color-button-background:var(--color-fill-blue);--color-button-background-active:#36f;--color-button-background-hover:var(--color-figure-blue);--color-button-text:#fff;--color-call-to-action-background:var(--color-fill-secondary);--color-changes-added:var(--color-figure-light-gray);--color-changes-added-hover:var(--color-figure-light-gray);--color-changes-deprecated:var(--color-figure-light-gray);--color-changes-deprecated-hover:var(--color-figure-light-gray);--color-changes-modified:var(--color-figure-light-gray);--color-changes-modified-hover:var(--color-figure-light-gray);--color-changes-modified-previous-background:var(--color-fill);--color-code-background:var(--color-fill-secondary);--color-code-collapsible-background:var(--color-fill-tertiary);--color-code-collapsible-text:var(--color-figure-gray-secondary-alt);--color-code-line-highlight:rgba(51,102,255,.08);--color-code-line-highlight-border:var(--color-figure-blue);--color-code-plain:var(--color-figure-gray);--color-dropdown-background:hsla(0,0%,100%,.8);--color-dropdown-border:#ccc;--color-dropdown-option-text:#666;--color-dropdown-text:#000;--color-dropdown-dark-background:hsla(0,0%,100%,.1);--color-dropdown-dark-border:hsla(0,0%,94%,.2);--color-dropdown-dark-option-text:#ccc;--color-dropdown-dark-text:#fff;--color-eyebrow:var(--color-figure-gray-secondary);--color-focus-border-color:var(--color-fill-blue);--color-focus-color:rgba(0,125,250,.6);--color-form-error:var(--color-figure-red);--color-form-error-background:var(--color-fill-red-secondary);--color-form-valid:var(--color-figure-green);--color-form-valid-background:var(--color-fill-green-secondary);--color-generic-modal-background:var(--color-fill);--color-grid:var(--color-fill-gray);--color-header-text:var(--color-figure-gray);--color-hero-eyebrow:#ccc;--color-link:var(--color-figure-blue);--color-loading-placeholder-background:var(--color-fill);--color-nav-color:#666;--color-nav-current-link:rgba(0,0,0,.6);--color-nav-expanded:#fff;--color-nav-hierarchy-collapse-background:#f0f0f0;--color-nav-hierarchy-collapse-borders:#ccc;--color-nav-hierarchy-item-borders:#ccc;--color-nav-keyline:rgba(0,0,0,.2);--color-nav-link-color:#000;--color-nav-link-color-hover:#36f;--color-nav-outlines:#ccc;--color-nav-rule:hsla(0,0%,94%,.5);--color-nav-solid-background:#fff;--color-nav-sticking-expanded-keyline:rgba(0,0,0,.1);--color-nav-stuck:hsla(0,0%,100%,.9);--color-nav-uiblur-expanded:hsla(0,0%,100%,.9);--color-nav-uiblur-stuck:hsla(0,0%,100%,.7);--color-nav-root-subhead:var(--color-tutorials-teal);--color-nav-dark-border-top-color:hsla(0,0%,100%,.4);--color-nav-dark-color:#b0b0b0;--color-nav-dark-current-link:hsla(0,0%,100%,.6);--color-nav-dark-expanded:#2a2a2a;--color-nav-dark-hierarchy-collapse-background:#424242;--color-nav-dark-hierarchy-collapse-borders:#666;--color-nav-dark-hierarchy-item-borders:#424242;--color-nav-dark-keyline:rgba(66,66,66,.95);--color-nav-dark-link-color:#fff;--color-nav-dark-link-color-hover:#09f;--color-nav-dark-outlines:#575757;--color-nav-dark-rule:#575757;--color-nav-dark-solid-background:#000;--color-nav-dark-sticking-expanded-keyline:rgba(66,66,66,.7);--color-nav-dark-stuck:rgba(42,42,42,.9);--color-nav-dark-uiblur-expanded:rgba(42,42,42,.9);--color-nav-dark-uiblur-stuck:rgba(42,42,42,.7);--color-nav-dark-root-subhead:#fff;--color-runtime-preview-background:var(--color-fill-tertiary);--color-runtime-preview-disabled-text:hsla(0,0%,40%,.6);--color-runtime-preview-text:var(--color-figure-gray-secondary);--color-secondary-label:var(--color-figure-gray-secondary);--color-step-background:var(--color-fill-secondary);--color-step-caption:var(--color-figure-gray-secondary);--color-step-focused:var(--color-figure-light-gray);--color-step-text:var(--color-figure-gray-secondary);--color-svg-icon:#666;--color-syntax-addition:var(--color-figure-green);--color-syntax-attributes:#947100;--color-syntax-characters:#272ad8;--color-syntax-comments:#707f8c;--color-syntax-deletion:var(--color-figure-red);--color-syntax-documentation-markup:#506375;--color-syntax-documentation-markup-keywords:#506375;--color-syntax-heading:#ba2da2;--color-syntax-keywords:#ad3da4;--color-syntax-marks:#000;--color-syntax-numbers:#272ad8;--color-syntax-other-class-names:#703daa;--color-syntax-other-constants:#4b21b0;--color-syntax-other-declarations:#047cb0;--color-syntax-other-function-and-method-names:#4b21b0;--color-syntax-other-instance-variables-and-globals:#703daa;--color-syntax-other-preprocessor-macros:#78492a;--color-syntax-other-type-names:#703daa;--color-syntax-param-internal-name:#404040;--color-syntax-plain-text:#000;--color-syntax-preprocessor-statements:#78492a;--color-syntax-project-class-names:#3e8087;--color-syntax-project-constants:#2d6469;--color-syntax-project-function-and-method-names:#2d6469;--color-syntax-project-instance-variables-and-globals:#3e8087;--color-syntax-project-preprocessor-macros:#78492a;--color-syntax-project-type-names:#3e8087;--color-syntax-strings:#d12f1b;--color-syntax-type-declarations:#03638c;--color-syntax-urls:#1337ff;--color-tabnav-item-border-color:var(--color-fill-gray);--color-text:var(--color-figure-gray);--color-text-background:var(--color-fill);--color-tutorial-assessments-background:var(--color-fill-secondary);--color-tutorial-background:var(--color-fill);--color-tutorial-navbar-dropdown-background:var(--color-fill);--color-tutorial-navbar-dropdown-border:var(--color-fill-gray);--color-tutorial-quiz-border-active:var(--color-figure-blue);--color-tutorials-overview-background:#161616;--color-tutorials-overview-content:#fff;--color-tutorials-overview-content-alt:#fff;--color-tutorials-overview-eyebrow:#ccc;--color-tutorials-overview-icon:#b0b0b0;--color-tutorials-overview-link:#09f;--color-tutorials-overview-navigation-link:#ccc;--color-tutorials-overview-navigation-link-active:#fff;--color-tutorials-overview-navigation-link-hover:#fff;--color-tutorial-hero-text:#fff;--color-tutorial-hero-background:#000;--color-navigator-item-hover:rgba(0,0,255,.05);--color-card-background:var(--color-fill);--color-card-content-text:var(--color-figure-gray);--color-card-eyebrow:var(--color-figure-gray-secondary-alt);--color-card-shadow:rgba(0,0,0,.04);--color-link-block-card-border:rgba(0,0,0,.04);--color-standard-red:#8b0000;--color-standard-orange:#8b4000;--color-standard-yellow:#8f7200;--color-standard-blue:#002d75;--color-standard-green:#023b2d;--color-standard-purple:#512b55;--color-standard-gray:#2a2a2a;--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-light-blue-secondary:#004ec4;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-gray-quaternary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-badge-default:var(--color-badge-dark-default);--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary);--color-navigator-item-hover:rgba(0,102,255,.5);--color-card-shadow:hsla(0,0%,100%,.04);--color-link-block-card-border:hsla(0,0%,100%,.25)}}.bg[data-v-2a434750]{background-color:var(--color-tutorial-hero-background);background-position:top;background-repeat:no-repeat;background-size:cover;content:"";height:100%;left:0;opacity:.3;position:absolute;top:0;width:100%}.row[data-v-2a434750]{margin-left:auto;margin-right:auto;width:980px;padding:80px 0}@media only screen and (max-width:1250px){.row[data-v-2a434750]{width:692px}}@media only screen and (max-width:735px){.row[data-v-2a434750]{width:87.5%}}@media only screen and (max-width:320px){.row[data-v-2a434750]{width:215px}}.col[data-v-2a434750]{z-index:1}[data-v-2a434750] .eyebrow{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-hero-eyebrow)}@media only screen and (max-width:1250px){[data-v-2a434750] .eyebrow{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.headline[data-v-2a434750]{font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-bottom:2rem}@media only screen and (max-width:1250px){.headline[data-v-2a434750]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.headline[data-v-2a434750]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.intro[data-v-2a434750]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){.intro[data-v-2a434750]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content+p[data-v-2a434750]{margin-top:var(--spacing-stacked-margin-large)}@media only screen and (max-width:735px){.content+p[data-v-2a434750]{margin-top:8px}}.call-to-action[data-v-2a434750]{display:flex;align-items:center}.call-to-action .cta-icon[data-v-2a434750]{margin-left:.4rem;width:1em;height:1em}.metadata[data-v-2a434750]{margin-top:2rem}.video-asset[data-v-2a434750]{display:grid;height:100vh;margin:0;place-items:center center}.video-asset[data-v-2a434750] video{max-width:1280px;min-width:320px;width:100%}@media only screen and (max-width:735px){.headline[data-v-2a434750]{margin-bottom:19px}}.tutorial-hero[data-v-35a9482f]{margin-bottom:80px}@media only screen and (max-width:735px){.tutorial-hero[data-v-35a9482f]{margin-bottom:0}}.title[data-v-28135d78]{font-size:.7058823529rem;line-height:1.3333333333;color:var(--colors-secondary-label,var(--color-secondary-label))}.title[data-v-28135d78],.title[data-v-61b03ec2]{font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.title[data-v-61b03ec2]{font-size:1.1176470588rem;line-height:1.2105263158;color:var(--colors-header-text,var(--color-header-text));margin:25px 0}.question-content[data-v-61b03ec2] code{font-size:.7647058824rem;line-height:1.8461538462;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}.choices[data-v-61b03ec2]{display:flex;flex-direction:column;padding:0;list-style:none;margin:25px 0}.choice[data-v-61b03ec2]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);flex:1;border-radius:var(--border-radius,4px);margin:8px 0;padding:1.5rem 40px;cursor:pointer;background:var(--colors-text-background,var(--color-text-background));display:flex;flex-direction:column;justify-content:center;border-width:1px;border-style:solid;border-color:var(--colors-grid,var(--color-grid));position:relative}.choice[data-v-61b03ec2] img{max-height:23.5294117647rem}.choice[data-v-61b03ec2]:first-of-type{margin-top:0}.choice[data-v-61b03ec2] code{font-size:.7647058824rem;line-height:1.8461538462;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}.controls[data-v-61b03ec2]{text-align:center;margin-bottom:40px}.controls .button-cta[data-v-61b03ec2]{margin:.5rem;margin-top:0;padding:.3rem 3rem;min-width:8rem}input[type=radio][data-v-61b03ec2]{position:absolute;width:100%;left:0;height:100%;opacity:0;z-index:-1}.active[data-v-61b03ec2]{border-color:var(--color-tutorial-quiz-border-active);box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.active [data-v-61b03ec2]{color:var(--colors-text,var(--color-text))}.correct[data-v-61b03ec2]{background:var(--color-form-valid-background);border-color:var(--color-form-valid)}.correct .choice-icon[data-v-61b03ec2]{fill:var(--color-form-valid)}.incorrect[data-v-61b03ec2]{background:var(--color-form-error-background);border-color:var(--color-form-error)}.incorrect .choice-icon[data-v-61b03ec2]{fill:var(--color-form-error)}.correct[data-v-61b03ec2],.incorrect[data-v-61b03ec2]{position:relative}.correct .choice-icon[data-v-61b03ec2],.incorrect .choice-icon[data-v-61b03ec2]{position:absolute;top:11px;left:10px;font-size:20px;width:1.05em}.disabled[data-v-61b03ec2]{pointer-events:none}.answer[data-v-61b03ec2]{margin:.5rem 1.5rem .5rem 0;font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.answer[data-v-61b03ec2]:last-of-type{margin-bottom:0}[data-v-61b03ec2] .question>.code-listing{padding:unset;border-radius:0}[data-v-61b03ec2] pre{padding:0}[data-v-61b03ec2] img{display:block;margin-left:auto;margin-right:auto;max-width:100%}.title[data-v-65e3c02c]{font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--colors-header-text,var(--color-header-text))}@media only screen and (max-width:1250px){.title[data-v-65e3c02c]{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-65e3c02c]{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title p[data-v-65e3c02c]{color:var(--colors-text,var(--color-text))}.assessments[data-v-65e3c02c]{box-sizing:content-box;padding:0 1rem;background:var(--color-tutorial-assessments-background);margin-left:auto;margin-right:auto;width:980px;margin-bottom:80px}@media only screen and (max-width:1250px){.assessments[data-v-65e3c02c]{width:692px}}@media only screen and (max-width:735px){.assessments[data-v-65e3c02c]{width:87.5%}}@media only screen and (max-width:320px){.assessments[data-v-65e3c02c]{width:215px}}.banner[data-v-65e3c02c]{padding:40px 0;border-bottom:1px solid;margin-bottom:40px;border-color:var(--colors-grid,var(--color-grid));text-align:center}.success[data-v-65e3c02c]{text-align:center;padding-bottom:40px;font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--colors-text,var(--color-text))}@media only screen and (max-width:1250px){.success[data-v-65e3c02c]{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.success[data-v-65e3c02c]{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.assessments-wrapper[data-v-65e3c02c]{padding-top:80px}.assessments-wrapper[data-v-6db06128]{padding-bottom:40px;padding-top:0}@media only screen and (max-width:735px){.assessments-wrapper[data-v-6db06128]{padding-top:80px}}.article[data-v-1b2e3b6a]{background:var(--colors-article-background,var(--color-article-background))}@media only screen and (max-width:735px){.article[data-v-1b2e3b6a]{background:var(--colors-text-background,var(--color-article-body-background))}}.intro-container[data-v-4a7343c7]{margin-bottom:80px}.intro[data-v-4a7343c7]{display:flex;align-items:center}@media only screen and (max-width:735px){.intro[data-v-4a7343c7]{padding-bottom:0;flex-direction:column}}.intro.ide .media[data-v-4a7343c7] img{background-color:var(--colors-text-background,var(--color-text-background))}.col.left[data-v-4a7343c7]{padding-right:40px}@media only screen and (max-width:1250px){.col.left[data-v-4a7343c7]{padding-right:28px}}@media only screen and (max-width:735px){.col.left[data-v-4a7343c7]{margin-left:auto;margin-right:auto;width:980px;padding-right:0}}@media only screen and (max-width:735px)and (max-width:1250px){.col.left[data-v-4a7343c7]{width:692px}}@media only screen and (max-width:735px)and (max-width:735px){.col.left[data-v-4a7343c7]{width:87.5%}}@media only screen and (max-width:735px)and (max-width:320px){.col.left[data-v-4a7343c7]{width:215px}}.col.right[data-v-4a7343c7]{padding-left:40px}@media only screen and (max-width:1250px){.col.right[data-v-4a7343c7]{padding-left:28px}}@media only screen and (max-width:735px){.col.right[data-v-4a7343c7]{padding-left:0}}.content[data-v-4a7343c7]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.media[data-v-4a7343c7] img{width:auto;max-height:560px;min-height:18.8235294118rem;-o-object-fit:scale-down;object-fit:scale-down}@media only screen and (max-width:735px){.media[data-v-4a7343c7]{margin:0;margin-top:40px}.media[data-v-4a7343c7] image,.media[data-v-4a7343c7] video{max-height:80vh}}.media[data-v-4a7343c7] .asset{padding:0 20px}.headline[data-v-4a7343c7]{color:var(--colors-header-text,var(--color-header-text))}[data-v-4a7343c7] .eyebrow{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){[data-v-4a7343c7] .eyebrow{font-size:1.1176470588rem;line-height:1.2105263158;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-4a7343c7] .eyebrow a{color:inherit}[data-v-4a7343c7] .heading{font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-4a7343c7] .heading{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-4a7343c7] .heading{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.expanded-intro[data-v-4a7343c7]{margin-left:auto;margin-right:auto;width:980px;margin-top:40px}@media only screen and (max-width:1250px){.expanded-intro[data-v-4a7343c7]{width:692px}}@media only screen and (max-width:735px){.expanded-intro[data-v-4a7343c7]{width:87.5%}}@media only screen and (max-width:320px){.expanded-intro[data-v-4a7343c7]{width:215px}}[data-v-4a7343c7] .cols-2{gap:20px 16.6666666667%}[data-v-4a7343c7] .cols-3 .column{gap:20px 12.5%}.code-preview[data-v-395e30cd]{position:sticky;overflow-y:auto;-webkit-overflow-scrolling:touch;background-color:var(--background,var(--color-step-background));height:calc(100vh - 3.05882rem)}.code-preview.ide[data-v-395e30cd]{height:100vh}.code-preview[data-v-395e30cd] .code-listing{color:var(--text,var(--color-code-plain))}.code-preview[data-v-395e30cd] .code-listing .code-line-container{padding-right:14px}.code-preview[data-v-395e30cd] pre{font-size:.7058823529rem;line-height:1.8333333333;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}.header[data-v-395e30cd]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);position:relative;display:flex;justify-content:space-between;align-items:center;width:-webkit-fill-available;width:-moz-available;width:stretch;cursor:pointer;font-weight:600;padding:8px 12px;border-radius:var(--border-radius,4px) var(--border-radius,4px) 0 0;z-index:1;background:var(--color-runtime-preview-background);color:var(--colors-runtime-preview-text,var(--color-runtime-preview-text))}.header[data-v-395e30cd]:focus{outline-style:none}#app.fromkeyboard .header[data-v-395e30cd]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.runtime-preview[data-v-395e30cd]{--color-runtime-preview-shadow:rgba(0,0,0,.4);position:absolute;top:0;right:0;background:var(--color-runtime-preview-background);border-radius:var(--border-radius,4px);margin:1rem;margin-left:0;transition:width .2s ease-in;box-shadow:0 0 3px 0 var(--color-runtime-preview-shadow)}@media screen{[data-color-scheme=dark] .runtime-preview[data-v-395e30cd]{--color-runtime-preview-shadow:hsla(0,0%,100%,.4)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .runtime-preview[data-v-395e30cd]{--color-runtime-preview-shadow:hsla(0,0%,100%,.4)}}@supports not ((width:-webkit-fill-available) or (width:-moz-available) or (width:stretch)){.runtime-preview[data-v-395e30cd]{display:flex;flex-direction:column}}.runtime-preview .runtimve-preview__container[data-v-395e30cd]{border-radius:var(--border-radius,4px);overflow:hidden}.runtime-preview-ide[data-v-395e30cd]{top:0}.runtime-preview-ide .runtime-preview-asset[data-v-395e30cd] img{background-color:var(--color-runtime-preview-background)}.runtime-preview.collapsed[data-v-395e30cd]{box-shadow:0 0 3px 0 var(--color-runtime-preview-shadow);width:102px}.runtime-preview.collapsed .header[data-v-395e30cd]{border-radius:var(--border-radius,4px)}.runtime-preview.disabled[data-v-395e30cd]{box-shadow:0 0 3px 0 transparent}.runtime-preview.disabled .header[data-v-395e30cd]{color:var(--color-runtime-preview-disabled-text);cursor:auto}.runtime-preview-asset[data-v-395e30cd]{border-radius:0 0 var(--border-radius,4px) var(--border-radius,4px)}.runtime-preview-asset[data-v-395e30cd] img{border-bottom-left-radius:var(--border-radius,4px);border-bottom-right-radius:var(--border-radius,4px)}.preview-icon[data-v-395e30cd]{height:.8em;width:.8em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.preview-show[data-v-395e30cd]{transform:scale(-1)}[data-v-0bdf2f26] pre{padding:10px 0}.toggle-preview[data-v-78763c14]{color:var(--color-runtime-preview-disabled-text);display:flex;align-items:center}a[data-v-78763c14]{color:var(--url,var(--color-link))}.toggle-text[data-v-78763c14]{display:flex;align-items:center}svg.toggle-icon[data-v-78763c14]{width:1em;height:1em;margin-left:.5em}.mobile-code-preview[data-v-b1691954]{background-color:var(--background,var(--color-step-background));padding:14px 0}@media only screen and (max-width:735px){.mobile-code-preview[data-v-b1691954]{display:flex;flex-direction:column}}.runtime-preview-modal-content[data-v-b1691954]{padding:45px 60px 0 60px;min-width:200px}.runtime-preview-modal-content[data-v-b1691954] img:not(.file-icon){border-radius:var(--border-radius,4px);box-shadow:0 0 3px rgba(0,0,0,.4);max-height:80vh;width:auto;display:block;margin-bottom:1rem}.runtime-preview-modal-content .runtime-preview-label[data-v-b1691954]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-runtime-preview-text);display:block;text-align:center;padding:.5em}[data-v-b1691954] .code-listing{color:var(--text,var(--color-code-plain))}[data-v-b1691954] .full-code-listing{padding-top:60px;min-height:calc(100vh - 60px)}[data-v-b1691954] pre{font-size:.7058823529rem;line-height:1.8333333333;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}.preview-toggle-container[data-v-b1691954]{align-self:flex-end;margin-right:20px}.step-container[data-v-1f74235c]{margin:0}.step-container[data-v-1f74235c]:not(:last-child){margin-bottom:100px}@media only screen and (max-width:735px){.step-container[data-v-1f74235c]:not(:last-child){margin-bottom:80px}}.step[data-v-1f74235c]{position:relative;border-radius:var(--tutorial-step-border-radius,var(--border-radius,4px));padding:1rem 2rem;background-color:var(--color-step-background);overflow:hidden;filter:blur(0)}.step[data-v-1f74235c]:before{content:"";position:absolute;top:0;left:0;border:1px solid var(--color-step-focused);background-color:var(--color-step-focused);height:calc(100% - 2px);width:4px;opacity:0;transition:opacity .15s ease-in}.step.focused[data-v-1f74235c],.step[data-v-1f74235c]:focus{outline:none}.step.focused[data-v-1f74235c]:before,.step[data-v-1f74235c]:focus:before{opacity:1}@media only screen and (max-width:735px){.step[data-v-1f74235c]{padding-left:2rem}.step[data-v-1f74235c]:before{opacity:1}}.step-label[data-v-1f74235c]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--colors-text,var(--color-step-text));margin-bottom:var(--spacing-stacked-margin-small)}.caption[data-v-1f74235c]{border-top:1px solid;border-color:var(--color-step-caption);padding:1rem 0 0 0;margin-top:1rem}.media-container[data-v-1f74235c]{display:none}@media only screen and (max-width:735px){.step[data-v-1f74235c]{margin:0 .5882352941rem 1.1764705882rem .5882352941rem}.step.focused[data-v-1f74235c],.step[data-v-1f74235c]:focus{outline:none}.media-container[data-v-1f74235c]{display:block;position:relative}.media-container[data-v-1f74235c] img,.media-container[data-v-1f74235c] video{max-height:80vh}[data-v-1f74235c] .asset{padding:0 20px}}.steps[data-v-c87bb95a]{position:relative;font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;color:var(--colors-text,var(--color-text))}@media only screen and (max-width:735px){.steps[data-v-c87bb95a]{padding-top:80px}.steps[data-v-c87bb95a]:before{position:absolute;top:0;border-top:1px solid var(--color-fill-gray-tertiary);content:"";width:calc(100% - 2.35294rem);margin:0 1.1764705882rem}}.steps[data-v-c87bb95a] aside{background:unset;border:unset;box-shadow:unset;-moz-column-break-inside:unset;break-inside:unset;padding:unset}.steps[data-v-c87bb95a] aside .label{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.steps[data-v-c87bb95a] aside+*{margin-top:var(--spacing-stacked-margin-large)}.content-container[data-v-c87bb95a]{flex:none;margin-right:4.1666666667%;width:37.5%;margin-top:140px;margin-bottom:94vh}@media only screen and (max-width:735px){.content-container[data-v-c87bb95a]{margin-top:0;margin-bottom:0;height:100%;margin-left:0;margin-right:0;position:relative;width:100%}}.asset-container[data-v-c87bb95a]{flex:none;height:calc(100vh - 3.05882rem);background-color:var(--background,var(--color-step-background));max-width:921px;width:calc(50vw + 8.33333%);position:sticky;top:3.0588235294rem;transition:margin .1s ease-in-out}@media only screen and (max-width:767px){.asset-container[data-v-c87bb95a]{top:2.8235294118rem;height:calc(100vh - 2.82353rem)}}.asset-container[data-v-c87bb95a]:not(.for-step-code){overflow-y:auto;-webkit-overflow-scrolling:touch}.asset-container.ide[data-v-c87bb95a]{height:100vh;top:0}@media only screen and (min-width:736px){.asset-container[data-v-c87bb95a]{display:grid}.asset-container>[data-v-c87bb95a]{grid-row:1;grid-column:1;height:calc(100vh - 3.05882rem)}.asset-container.ide>[data-v-c87bb95a]{height:100vh}}.asset-container .step-asset[data-v-c87bb95a]{box-sizing:border-box;padding:0;padding-left:40px;min-height:320px;height:100%}.asset-container .step-asset[data-v-c87bb95a],.asset-container .step-asset[data-v-c87bb95a] picture{height:100%;display:flex;align-items:center}.asset-container .step-asset[data-v-c87bb95a] .video-replay-container{height:100%;display:flex;flex-direction:column;justify-content:center}.asset-container .step-asset[data-v-c87bb95a] img,.asset-container .step-asset[data-v-c87bb95a] video{width:auto;max-height:calc(100vh - 3.05882rem - 80px);max-width:531.66667px;margin:0}@media only screen and (max-width:1250px){.asset-container .step-asset[data-v-c87bb95a] img,.asset-container .step-asset[data-v-c87bb95a] video{max-width:363.66667px}}.asset-container .step-asset[data-v-c87bb95a] .video-replay-container,.asset-container .step-asset[data-v-c87bb95a] img{min-height:320px}.asset-container .step-asset[data-v-c87bb95a] .video-replay-container video{min-height:280px}.asset-container .step-asset[data-v-c87bb95a] [data-orientation=landscape]{max-width:min(841px,calc(50vw + 8.33333% - 80px))}@media only screen and (max-width:735px){.asset-container[data-v-c87bb95a]{display:none}}.asset-wrapper[data-v-c87bb95a]{width:63.2%;align-self:center;transition:transform .25s ease-out;will-change:transform}.asset-wrapper.ide .step-asset[data-v-c87bb95a] img{background-color:var(--background,var(--color-step-background))}.asset-wrapper[data-v-c87bb95a]:has([data-orientation=landscape]){width:unset}[data-v-c87bb95a] .runtime-preview-asset{display:grid}[data-v-c87bb95a] .runtime-preview-asset>*{grid-row:1;grid-column:1}.interstitial[data-v-c87bb95a]{padding:0 2rem}.interstitial[data-v-c87bb95a]:not(:first-child){margin-top:5.8823529412rem}.interstitial[data-v-c87bb95a]:not(:last-child){margin-bottom:30px}@media only screen and (max-width:735px){.interstitial[data-v-c87bb95a]{margin-left:auto;margin-right:auto;width:980px;padding:0}}@media only screen and (max-width:735px)and (max-width:1250px){.interstitial[data-v-c87bb95a]{width:692px}}@media only screen and (max-width:735px)and (max-width:735px){.interstitial[data-v-c87bb95a]{width:87.5%}}@media only screen and (max-width:735px)and (max-width:320px){.interstitial[data-v-c87bb95a]{width:215px}}@media only screen and (max-width:735px){.interstitial[data-v-c87bb95a]:not(:first-child){margin-top:0}}.fade-enter-active[data-v-c87bb95a],.fade-leave-active[data-v-c87bb95a]{transition:opacity .3s ease-in-out}.fade-enter[data-v-c87bb95a],.fade-leave-to[data-v-c87bb95a]{opacity:0}.section[data-v-6b3a0b3a]{padding-top:80px}.sections[data-v-79a75e9e]{margin-left:auto;margin-right:auto;width:980px}@media only screen and (max-width:1250px){.sections[data-v-79a75e9e]{width:692px}}@media only screen and (max-width:735px){.sections[data-v-79a75e9e]{width:87.5%}}@media only screen and (max-width:320px){.sections[data-v-79a75e9e]{width:215px}}@media only screen and (max-width:735px){.sections[data-v-79a75e9e]{margin:0;width:100%}}.tutorial[data-v-566b3655]{background-color:var(--colors-text-background,var(--color-tutorial-background))} \ No newline at end of file diff --git a/docs/css/tutorials-overview.6eb589ed.css b/docs/css/tutorials-overview.6eb589ed.css deleted file mode 100644 index 05f0105..0000000 --- a/docs/css/tutorials-overview.6eb589ed.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */.tutorials-navigation-link[data-v-e9f9b59c]{color:var(--color-tutorials-overview-navigation-link);transition:color .3s linear}.tutorials-navigation-link[data-v-e9f9b59c]:hover{text-decoration:none;transition:none;color:var(--color-tutorials-overview-navigation-link-hover)}.tutorials-navigation-link.active[data-v-e9f9b59c]{color:var(--color-tutorials-overview-navigation-link-active)}.tutorials-navigation-list[data-v-4e0180fa]{list-style-type:none;margin:0}.tutorials-navigation-list li+li[data-v-4e0180fa]:not(.volume--named){margin-top:24px}.tutorials-navigation-list .volume--named+.volume--named[data-v-4e0180fa]{margin-top:12px}.expand-enter-active,.expand-leave-active{transition:height .3s ease-in-out;overflow:hidden}.expand-enter,.expand-leave-to{height:0}.toggle[data-v-489416f8]{color:#f0f0f0;line-height:21px;display:flex;align-items:center;width:100%;font-weight:600;padding:6px 6px 6px 0;border-bottom:1px solid #2a2a2a;text-decoration:none;box-sizing:border-box}@media only screen and (max-width:767px){.toggle[data-v-489416f8]{padding-right:6px;border-bottom-color:hsla(0,0%,100%,.1)}}.toggle .text[data-v-489416f8]{word-break:break-word}.toggle[data-v-489416f8]:hover{text-decoration:none}.toggle .toggle-icon[data-v-489416f8]{display:inline-block;transition:transform .2s ease-in;height:.4em;width:.4em;margin-left:auto;margin-right:.2em}.collapsed .toggle .toggle-icon[data-v-489416f8]{transform:rotate(45deg)}.collapsed .toggle[data-v-489416f8],.collapsed .toggle[data-v-489416f8]:hover{color:#b0b0b0}.tutorials-navigation-menu-content[data-v-489416f8]{opacity:1;transition:height .2s ease-in,opacity .2s ease-in}.collapsed .tutorials-navigation-menu-content[data-v-489416f8]{height:0;opacity:0}.tutorials-navigation-menu-content .tutorials-navigation-list[data-v-489416f8]{padding:24px 0 12px 0}.tutorials-navigation[data-v-79093ed6]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.nav-title-content[data-v-854b4dd6]{max-width:100%}.title[data-v-854b4dd6]{color:var(--color-nav-root-title,currentColor);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;vertical-align:top;max-width:296px}@media only screen and (max-width:1023px){.title[data-v-854b4dd6]{max-width:205px}}@media only screen and (max-width:767px){.title[data-v-854b4dd6]{flex-basis:fill;display:initial;vertical-align:initial;max-width:none}}.subhead[data-v-854b4dd6]{color:var(--color-nav-root-subhead)}.theme-dark .subhead[data-v-854b4dd6]{color:var(--color-nav-dark-root-subhead)}.nav[data-v-54bcce6d] .nav-menu{padding-top:0}.nav[data-v-54bcce6d] .nav-menu .nav-menu-items{margin-left:auto}@media only screen and (min-width:768px){.nav[data-v-54bcce6d] .nav-menu .nav-menu-items .in-page-navigation{display:none}}@media only screen and (min-width:320px)and (max-width:735px){.nav[data-v-54bcce6d] .nav-menu .nav-menu-items{padding:18px 0 40px}}.hero[data-v-383dab71]{margin-left:auto;margin-right:auto;width:980px;padding-bottom:4.7058823529rem;padding-top:4.7058823529rem}@media only screen and (max-width:1250px){.hero[data-v-383dab71]{width:692px}}@media only screen and (max-width:735px){.hero[data-v-383dab71]{width:87.5%}}@media only screen and (max-width:320px){.hero[data-v-383dab71]{width:215px}}.copy-container[data-v-383dab71]{margin:0 auto;text-align:center;width:720px}.title[data-v-383dab71]{font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-content)}@media only screen and (max-width:1250px){.title[data-v-383dab71]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-383dab71]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content[data-v-383dab71]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-content)}@media only screen and (max-width:735px){.content[data-v-383dab71]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.meta[data-v-383dab71]{color:var(--color-tutorials-overview-content-alt);align-items:center;display:flex;justify-content:center}.meta-content[data-v-383dab71]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.meta .timer-icon[data-v-383dab71]{margin-right:.3529411765rem;height:16px;width:16px;fill:var(--color-tutorials-overview-icon)}@media only screen and (max-width:735px){.meta .timer-icon[data-v-383dab71]{margin-right:.2941176471rem;height:.8235294118rem;width:.8235294118rem}}.meta .time[data-v-383dab71]{font-size:1.1176470588rem;line-height:1.2105263158;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){.meta .time[data-v-383dab71]{font-size:1rem;line-height:1.1176470588;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title+.content[data-v-383dab71]{margin-top:1.4705882353rem}.content+.meta[data-v-383dab71]{margin-top:1.1764705882rem}.button-cta[data-v-383dab71]{margin-top:1.7647058824rem}*+.asset[data-v-383dab71]{margin-top:4.1176470588rem}@media only screen and (max-width:1250px){.copy-container[data-v-383dab71]{width:636px}}@media only screen and (max-width:735px){.hero[data-v-383dab71]{padding-bottom:1.7647058824rem;padding-top:2.3529411765rem}.copy-container[data-v-383dab71]{width:100%}.title+.content[data-v-383dab71]{margin-top:.8823529412rem}.button-cta[data-v-383dab71]{margin-top:1.4117647059rem}*+.asset[data-v-383dab71]{margin-top:2.2352941176rem}}.image[data-v-569db166]{margin-bottom:10px}.name[data-v-569db166]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-header-text,#f0f0f0);word-break:break-word}@media only screen and (max-width:1250px){.name[data-v-569db166]{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.name[data-v-569db166]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content[data-v-569db166]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-content-alt);margin-top:10px}.volume-name[data-v-569db166]{padding:50px 60px;text-align:center;background:var(--color-tutorials-overview-fill-secondary,#161616);margin:2px 0}@media only screen and (max-width:735px){.volume-name[data-v-569db166]{padding:40px 20px}}.document-icon[data-v-3a80772b]{margin-left:-3px}.tile[data-v-74dbeb68]{background:var(--color-tutorials-overview-fill-secondary,#161616);padding:40px 30px;color:var(--color-tutorials-overview-content-alt)}.content[data-v-74dbeb68] a,a[data-v-74dbeb68]{color:var(--colors-link,var(--color-tutorials-overview-link))}.icon[data-v-74dbeb68]{display:block;height:1.4705882353rem;line-height:1.4705882353rem;margin-bottom:.5882352941rem;width:1.4705882353rem}.icon[data-v-74dbeb68] svg.svg-icon{width:100%;max-height:100%;fill:var(--color-tutorials-overview-icon)}.icon[data-v-74dbeb68] svg.svg-icon .svg-icon-stroke{stroke:var(--color-tutorials-overview-content-alt)}.title[data-v-74dbeb68]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;margin-bottom:.8em}.content[data-v-74dbeb68],.link[data-v-74dbeb68],.title[data-v-74dbeb68]{font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.content[data-v-74dbeb68],.link[data-v-74dbeb68]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400}.content[data-v-74dbeb68]{color:var(--color-tutorials-overview-content-alt)}.link[data-v-74dbeb68]{display:block;margin-top:1.1764705882rem}.link .link-icon[data-v-74dbeb68]{margin-left:.2em;width:.6em;height:.6em}[data-v-74dbeb68] .inline-link{text-decoration:none}[data-v-74dbeb68] .content ul{list-style-type:none;margin-left:0;font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}[data-v-74dbeb68] .content ul li:before{content:"​";position:absolute}[data-v-74dbeb68] .content li+li{margin-top:8px}@media only screen and (max-width:735px){.tile[data-v-74dbeb68]{padding:1.7647058824rem 1.1764705882rem}}.tile-group[data-v-4cacce0a]{display:grid;grid-column-gap:2px;grid-row-gap:2px}.tile-group.count-1[data-v-4cacce0a]{grid-template-columns:1fr;text-align:center}.tile-group.count-1[data-v-4cacce0a] .icon{margin-left:auto;margin-right:auto}.tile-group.count-2[data-v-4cacce0a]{grid-template-columns:repeat(2,1fr)}.tile-group.count-3[data-v-4cacce0a]{grid-template-columns:repeat(3,1fr)}.tile-group.count-4[data-v-4cacce0a]{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,auto)}.tile-group.count-5[data-v-4cacce0a]{grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(2,auto)}.tile-group.count-5 .tile[data-v-4cacce0a]{grid-column-end:span 2}.tile-group.count-5 .tile[data-v-4cacce0a]:nth-of-type(-n+2){grid-column-end:span 3}.tile-group.count-6[data-v-4cacce0a]{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,auto)}@media only screen and (min-width:768px)and (max-width:1250px){.tile-group.tile-group[data-v-4cacce0a]{grid-template-columns:1fr;grid-template-rows:auto}}@media only screen and (max-width:735px){.tile-group.count-1[data-v-4cacce0a],.tile-group.count-2[data-v-4cacce0a],.tile-group.count-3[data-v-4cacce0a],.tile-group.count-4[data-v-4cacce0a],.tile-group.count-5[data-v-4cacce0a],.tile-group.count-6[data-v-4cacce0a]{grid-template-columns:1fr;grid-template-rows:auto}}.title[data-v-7f8022c1]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:#f0f0f0}@media only screen and (max-width:1250px){.title[data-v-7f8022c1]{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-7f8022c1]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content[data-v-7f8022c1]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:#b0b0b0;margin-top:10px}.topic-list[data-v-0589dc3b]{list-style-type:none;margin:50px 0 0 0;position:relative}.topic-list li[data-v-0589dc3b]:before{content:"​";position:absolute}.topic-list[data-v-0589dc3b]:before{content:"";border-left:1px solid var(--color-fill-quaternary);display:block;height:calc(100% - .88235rem);left:.8823529412rem;position:absolute;top:50%;transform:translateY(-50%);width:0}.topic[data-v-0589dc3b]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;align-items:flex-start}@media only screen and (max-width:735px){.topic[data-v-0589dc3b]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.topic+.topic[data-v-0589dc3b]{margin-top:.5882352941rem}.topic .topic-icon[data-v-0589dc3b]{background-color:var(--color-fill-quaternary);border-radius:50%;flex-shrink:0;height:1.7647058824rem;width:1.7647058824rem;margin-right:1.1764705882rem;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:.4705882353rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.topic .topic-icon svg[data-v-0589dc3b]{fill:var(--color-tutorials-overview-icon);max-width:100%;max-height:100%;width:100%}.container[data-v-0589dc3b]{align-items:baseline;display:flex;justify-content:space-between;width:100%;padding-top:.1176470588rem}.container[data-v-0589dc3b]:hover{text-decoration:none}.container:hover .link[data-v-0589dc3b]{text-decoration:underline;text-underline-position:under}.timer-icon[data-v-0589dc3b]{margin-right:.2941176471rem;height:.7058823529rem;width:.7058823529rem;fill:var(--color-tutorials-overview-icon)}.time[data-v-0589dc3b]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-content-alt);align-items:center;display:inline-flex}.link[data-v-0589dc3b]{padding-right:.5882352941rem;color:var(--colors-link,var(--color-tutorials-overview-link))}@media only screen and (min-width:768px)and (max-width:1250px){.topic-list[data-v-0589dc3b]{margin-top:2.3529411765rem}}@media only screen and (max-width:735px){.topic-list[data-v-0589dc3b]{margin-top:1.7647058824rem}.topic[data-v-0589dc3b]{height:auto;align-items:flex-start}.topic.no-time-estimate[data-v-0589dc3b]{align-items:center}.topic.no-time-estimate .topic-icon[data-v-0589dc3b]{align-self:flex-start;top:0}.topic+.topic[data-v-0589dc3b]{margin-top:1.1764705882rem}.topic .topic-icon[data-v-0589dc3b]{top:.2941176471rem;margin-right:.7647058824rem}.container[data-v-0589dc3b]{flex-wrap:wrap;padding-top:0}.link[data-v-0589dc3b],.time[data-v-0589dc3b]{flex-basis:100%}.time[data-v-0589dc3b]{margin-top:.2941176471rem}}.chapter[data-v-7468bc5e]:focus{outline:none!important}.info[data-v-7468bc5e]{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.name[data-v-7468bc5e]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-header-text,#f0f0f0)}.name-text[data-v-7468bc5e]{word-break:break-word}.eyebrow[data-v-7468bc5e]{font-size:1rem;line-height:1.2352941176;font-weight:400;color:var(--color-tutorials-overview-eyebrow);display:block;font-weight:600;margin-bottom:5px}.content[data-v-7468bc5e],.eyebrow[data-v-7468bc5e]{font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.content[data-v-7468bc5e]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;color:var(--color-tutorials-overview-content-alt)}.asset[data-v-7468bc5e]{flex:0 0 190px}.intro[data-v-7468bc5e]{flex:0 1 360px}@media only screen and (min-width:768px)and (max-width:1250px){.asset[data-v-7468bc5e]{flex:0 0 130px}.intro[data-v-7468bc5e]{flex:0 1 260px}}@media only screen and (max-width:767px){.intro[data-v-7468bc5e]{flex:0 1 340px}}@media only screen and (max-width:735px){.info[data-v-7468bc5e]{display:block;text-align:center}.asset[data-v-7468bc5e]{margin:0 45px}.eyebrow[data-v-7468bc5e]{margin-bottom:7px}.intro[data-v-7468bc5e]{margin-top:40px}}.tile[data-v-540dbf10]{background:var(--color-tutorials-overview-fill-secondary,#161616);margin:2px 0;padding:50px 60px}.asset[data-v-540dbf10]{margin-bottom:10px}@media only screen and (min-width:768px)and (max-width:1250px){.tile[data-v-540dbf10]{padding:40px 30px}}@media only screen and (max-width:735px){.volume[data-v-540dbf10]{border-radius:0}.tile[data-v-540dbf10]{padding:40px 20px}}.learning-path[data-v-69a72bbc]{background:var(--color-tutorials-overview-fill,#000);padding:4.7058823529rem 0}.main-container[data-v-69a72bbc]{margin-left:auto;margin-right:auto;width:980px;align-items:stretch;display:flex;justify-content:space-between}@media only screen and (max-width:1250px){.main-container[data-v-69a72bbc]{width:692px}}@media only screen and (max-width:735px){.main-container[data-v-69a72bbc]{width:87.5%}}@media only screen and (max-width:320px){.main-container[data-v-69a72bbc]{width:215px}}.ide .main-container[data-v-69a72bbc]{justify-content:center}.secondary-content-container[data-v-69a72bbc]{flex:0 0 200px;width:200px}.tutorials-navigation[data-v-69a72bbc]{position:sticky;top:7.7647058824rem}.primary-content-container[data-v-69a72bbc]{flex:0 1 720px;max-width:100%}.content-sections-container .content-section[data-v-69a72bbc]{border-radius:12px;overflow:hidden}.content-sections-container .content-section+.content-section[data-v-69a72bbc]{margin-top:1.1764705882rem}@media only screen and (min-width:768px)and (max-width:1250px){.learning-path[data-v-69a72bbc]{padding:2.3529411765rem 0}.primary-content-container[data-v-69a72bbc]{flex-basis:auto;margin-left:1.2941176471rem}.secondary-content-container[data-v-69a72bbc]{flex:0 0 180px;width:180px}}@media only screen and (max-width:767px){.secondary-content-container[data-v-69a72bbc]{display:none}}@media only screen and (max-width:735px){.content-sections-container .content-section[data-v-69a72bbc]{border-radius:0}.content-sections-container .content-section.volume[data-v-69a72bbc]{margin-top:1.1764705882rem}.learning-path[data-v-69a72bbc]{padding:0}.main-container[data-v-69a72bbc]{width:100%}}.tutorials-overview[data-v-40c62c57]{background:#000;flex:1;height:100%}.tutorials-overview .radial-gradient[data-v-40c62c57]{margin-top:-3.0588235294rem;padding-top:3.0588235294rem;background:var(--color-tutorials-overview-fill-secondary,var(--color-tutorials-overview-background))}@media only screen and (max-width:735px){.tutorials-overview .radial-gradient[data-v-40c62c57]{margin-top:-2.8235294118rem;padding-top:2.8235294118rem}}@-moz-document url-prefix(){.tutorials-overview .radial-gradient[data-v-40c62c57]{background:#111!important}} \ No newline at end of file diff --git a/docs/css/tutorials-overview.7942d777.css b/docs/css/tutorials-overview.7942d777.css new file mode 100644 index 0000000..e97b808 --- /dev/null +++ b/docs/css/tutorials-overview.7942d777.css @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */.tutorials-navigation-link[data-v-e9f9b59c]{color:var(--color-tutorials-overview-navigation-link);transition:color .3s linear}.tutorials-navigation-link[data-v-e9f9b59c]:hover{text-decoration:none;transition:none;color:var(--color-tutorials-overview-navigation-link-hover)}.tutorials-navigation-link.active[data-v-e9f9b59c]{color:var(--color-tutorials-overview-navigation-link-active)}.tutorials-navigation-list[data-v-4e0180fa]{list-style-type:none;margin:0}.tutorials-navigation-list li+li[data-v-4e0180fa]:not(.volume--named){margin-top:24px}.tutorials-navigation-list .volume--named+.volume--named[data-v-4e0180fa]{margin-top:12px}.expand-enter-active,.expand-leave-active{transition:height .3s ease-in-out;overflow:hidden}.expand-enter,.expand-leave-to{height:0}.toggle[data-v-489416f8]{color:#f0f0f0;line-height:21px;display:flex;align-items:center;width:100%;font-weight:600;padding:6px 6px 6px 0;border-bottom:1px solid #2a2a2a;text-decoration:none;box-sizing:border-box}@media only screen and (max-width:767px){.toggle[data-v-489416f8]{padding-right:6px;border-bottom-color:hsla(0,0%,100%,.1)}}.toggle .text[data-v-489416f8]{word-break:break-word}.toggle[data-v-489416f8]:hover{text-decoration:none}.toggle .toggle-icon[data-v-489416f8]{display:inline-block;transition:transform .2s ease-in;height:.4em;width:.4em;margin-left:auto;margin-right:.2em}.collapsed .toggle .toggle-icon[data-v-489416f8]{transform:rotate(45deg)}.collapsed .toggle[data-v-489416f8],.collapsed .toggle[data-v-489416f8]:hover{color:#b0b0b0}.tutorials-navigation-menu-content[data-v-489416f8]{opacity:1;transition:height .2s ease-in,opacity .2s ease-in}.collapsed .tutorials-navigation-menu-content[data-v-489416f8]{height:0;opacity:0}.tutorials-navigation-menu-content .tutorials-navigation-list[data-v-489416f8]{padding:24px 0 12px 0}.tutorials-navigation[data-v-79093ed6]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.nav-title-content[data-v-854b4dd6]{max-width:100%}.title[data-v-854b4dd6]{color:var(--color-nav-root-title,currentColor);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;vertical-align:top;max-width:296px}@media only screen and (max-width:1023px){.title[data-v-854b4dd6]{max-width:205px}}@media only screen and (max-width:767px){.title[data-v-854b4dd6]{flex-basis:fill;display:initial;vertical-align:initial;max-width:none}}.subhead[data-v-854b4dd6]{color:var(--color-nav-root-subhead)}.theme-dark .subhead[data-v-854b4dd6]{color:var(--color-nav-dark-root-subhead)}.nav[data-v-54bcce6d] .nav-menu{padding-top:0}.nav[data-v-54bcce6d] .nav-menu .nav-menu-items{margin-left:auto}@media only screen and (min-width:768px){.nav[data-v-54bcce6d] .nav-menu .nav-menu-items .in-page-navigation{display:none}}@media only screen and (min-width:320px)and (max-width:735px){.nav[data-v-54bcce6d] .nav-menu .nav-menu-items{padding:18px 0 40px}}.hero[data-v-383dab71]{margin-left:auto;margin-right:auto;width:1536px;width:980px;padding-bottom:4.7058823529rem;padding-top:4.7058823529rem}@media only screen and (max-width:1250px){.hero[data-v-383dab71]{width:692px}}@media only screen and (max-width:735px){.hero[data-v-383dab71]{width:87.5%}}@media only screen and (max-width:320px){.hero[data-v-383dab71]{width:215px}}.copy-container[data-v-383dab71]{margin:0 auto;text-align:center;width:720px}.title[data-v-383dab71]{font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-content)}@media only screen and (max-width:1250px){.title[data-v-383dab71]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-383dab71]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content[data-v-383dab71]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-content)}@media only screen and (max-width:735px){.content[data-v-383dab71]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.meta[data-v-383dab71]{color:var(--color-tutorials-overview-content-alt);align-items:center;display:flex;justify-content:center}.meta-content[data-v-383dab71]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.meta .timer-icon[data-v-383dab71]{margin-right:.3529411765rem;height:16px;width:16px;fill:var(--color-tutorials-overview-icon)}@media only screen and (max-width:735px){.meta .timer-icon[data-v-383dab71]{margin-right:.2941176471rem;height:.8235294118rem;width:.8235294118rem}}.meta .time[data-v-383dab71]{font-size:1.1176470588rem;line-height:1.2105263158;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){.meta .time[data-v-383dab71]{font-size:1rem;line-height:1.1176470588;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title+.content[data-v-383dab71]{margin-top:1.4705882353rem}.content+.meta[data-v-383dab71]{margin-top:1.1764705882rem}.button-cta[data-v-383dab71]{margin-top:1.7647058824rem}*+.asset[data-v-383dab71]{margin-top:4.1176470588rem}@media only screen and (max-width:1250px){.copy-container[data-v-383dab71]{width:636px}}@media only screen and (max-width:735px){.hero[data-v-383dab71]{padding-bottom:1.7647058824rem;padding-top:2.3529411765rem}.copy-container[data-v-383dab71]{width:100%}.title+.content[data-v-383dab71]{margin-top:.8823529412rem}.button-cta[data-v-383dab71]{margin-top:1.4117647059rem}*+.asset[data-v-383dab71]{margin-top:2.2352941176rem}}.image[data-v-569db166]{margin-bottom:10px}.name[data-v-569db166]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-header-text,#f0f0f0);word-break:break-word}@media only screen and (max-width:1250px){.name[data-v-569db166]{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.name[data-v-569db166]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content[data-v-569db166]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-content-alt);margin-top:10px}.volume-name[data-v-569db166]{padding:50px 60px;text-align:center;background:var(--color-tutorials-overview-fill-secondary,#161616);margin:2px 0}@media only screen and (max-width:735px){.volume-name[data-v-569db166]{padding:40px 20px}}.document-icon[data-v-3a80772b]{margin-left:-3px}.tile[data-v-74dbeb68]{background:var(--color-tutorials-overview-fill-secondary,#161616);padding:40px 30px;color:var(--color-tutorials-overview-content-alt)}.content[data-v-74dbeb68] a,a[data-v-74dbeb68]{color:var(--colors-link,var(--color-tutorials-overview-link))}.icon[data-v-74dbeb68]{display:block;height:1.4705882353rem;line-height:1.4705882353rem;margin-bottom:.5882352941rem;width:1.4705882353rem}.icon[data-v-74dbeb68] svg.svg-icon{width:100%;max-height:100%;fill:var(--color-tutorials-overview-icon)}.icon[data-v-74dbeb68] svg.svg-icon .svg-icon-stroke{stroke:var(--color-tutorials-overview-content-alt)}.title[data-v-74dbeb68]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;margin-bottom:.8em}.content[data-v-74dbeb68],.link[data-v-74dbeb68],.title[data-v-74dbeb68]{font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.content[data-v-74dbeb68],.link[data-v-74dbeb68]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400}.content[data-v-74dbeb68]{color:var(--color-tutorials-overview-content-alt)}.link[data-v-74dbeb68]{display:block;margin-top:1.1764705882rem}.link .link-icon[data-v-74dbeb68]{margin-left:.2em;width:.6em;height:.6em}[data-v-74dbeb68] .inline-link{text-decoration:none}[data-v-74dbeb68] .content ul{list-style-type:none;margin-left:0;font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}[data-v-74dbeb68] .content ul li:before{content:"​";position:absolute}[data-v-74dbeb68] .content li+li{margin-top:8px}@media only screen and (max-width:735px){.tile[data-v-74dbeb68]{padding:1.7647058824rem 1.1764705882rem}}.tile-group[data-v-4cacce0a]{display:grid;grid-column-gap:2px;grid-row-gap:2px}.tile-group.count-1[data-v-4cacce0a]{grid-template-columns:1fr;text-align:center}.tile-group.count-1[data-v-4cacce0a] .icon{margin-left:auto;margin-right:auto}.tile-group.count-2[data-v-4cacce0a]{grid-template-columns:repeat(2,1fr)}.tile-group.count-3[data-v-4cacce0a]{grid-template-columns:repeat(3,1fr)}.tile-group.count-4[data-v-4cacce0a]{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,auto)}.tile-group.count-5[data-v-4cacce0a]{grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(2,auto)}.tile-group.count-5 .tile[data-v-4cacce0a]{grid-column-end:span 2}.tile-group.count-5 .tile[data-v-4cacce0a]:nth-of-type(-n+2){grid-column-end:span 3}.tile-group.count-6[data-v-4cacce0a]{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,auto)}@media only screen and (min-width:768px)and (max-width:1250px){.tile-group.tile-group[data-v-4cacce0a]{grid-template-columns:1fr;grid-template-rows:auto}}@media only screen and (max-width:735px){.tile-group.count-1[data-v-4cacce0a],.tile-group.count-2[data-v-4cacce0a],.tile-group.count-3[data-v-4cacce0a],.tile-group.count-4[data-v-4cacce0a],.tile-group.count-5[data-v-4cacce0a],.tile-group.count-6[data-v-4cacce0a]{grid-template-columns:1fr;grid-template-rows:auto}}.title[data-v-7f8022c1]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:#f0f0f0}@media only screen and (max-width:1250px){.title[data-v-7f8022c1]{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-7f8022c1]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content[data-v-7f8022c1]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:#b0b0b0;margin-top:10px}.topic-list[data-v-0589dc3b]{list-style-type:none;margin:50px 0 0 0;position:relative}.topic-list li[data-v-0589dc3b]:before{content:"​";position:absolute}.topic-list[data-v-0589dc3b]:before{content:"";border-left:1px solid var(--color-fill-quaternary);display:block;height:calc(100% - .88235rem);left:.8823529412rem;position:absolute;top:50%;transform:translateY(-50%);width:0}.topic[data-v-0589dc3b]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;align-items:flex-start}@media only screen and (max-width:735px){.topic[data-v-0589dc3b]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.topic+.topic[data-v-0589dc3b]{margin-top:.5882352941rem}.topic .topic-icon[data-v-0589dc3b]{background-color:var(--color-fill-quaternary);border-radius:50%;flex-shrink:0;height:1.7647058824rem;width:1.7647058824rem;margin-right:1.1764705882rem;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:.4705882353rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.topic .topic-icon svg[data-v-0589dc3b]{fill:var(--color-tutorials-overview-icon);max-width:100%;max-height:100%;width:100%}.container[data-v-0589dc3b]{align-items:baseline;display:flex;justify-content:space-between;width:100%;padding-top:.1176470588rem}.container[data-v-0589dc3b]:hover{text-decoration:none}.container:hover .link[data-v-0589dc3b]{text-decoration:underline}.timer-icon[data-v-0589dc3b]{margin-right:.2941176471rem;height:.7058823529rem;width:.7058823529rem;fill:var(--color-tutorials-overview-icon)}.time[data-v-0589dc3b]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-content-alt);align-items:center;display:inline-flex}.link[data-v-0589dc3b]{padding-right:.5882352941rem;color:var(--colors-link,var(--color-tutorials-overview-link))}@media only screen and (min-width:768px)and (max-width:1250px){.topic-list[data-v-0589dc3b]{margin-top:2.3529411765rem}}@media only screen and (max-width:735px){.topic-list[data-v-0589dc3b]{margin-top:1.7647058824rem}.topic[data-v-0589dc3b]{height:auto;align-items:flex-start}.topic.no-time-estimate[data-v-0589dc3b]{align-items:center}.topic.no-time-estimate .topic-icon[data-v-0589dc3b]{align-self:flex-start;top:0}.topic+.topic[data-v-0589dc3b]{margin-top:1.1764705882rem}.topic .topic-icon[data-v-0589dc3b]{top:.2941176471rem;margin-right:.7647058824rem}.container[data-v-0589dc3b]{flex-wrap:wrap;padding-top:0}.link[data-v-0589dc3b],.time[data-v-0589dc3b]{flex-basis:100%}.time[data-v-0589dc3b]{margin-top:.2941176471rem}}.chapter[data-v-7468bc5e]:focus{outline:none!important}.info[data-v-7468bc5e]{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.name[data-v-7468bc5e]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-header-text,#f0f0f0)}.name-text[data-v-7468bc5e]{word-break:break-word}.eyebrow[data-v-7468bc5e]{font-size:1rem;line-height:1.2352941176;font-weight:400;color:var(--color-tutorials-overview-eyebrow);display:block;font-weight:600;margin-bottom:5px}.content[data-v-7468bc5e],.eyebrow[data-v-7468bc5e]{font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.content[data-v-7468bc5e]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;color:var(--color-tutorials-overview-content-alt)}.asset[data-v-7468bc5e]{flex:0 0 190px}.intro[data-v-7468bc5e]{flex:0 1 360px}@media only screen and (min-width:768px)and (max-width:1250px){.asset[data-v-7468bc5e]{flex:0 0 130px}.intro[data-v-7468bc5e]{flex:0 1 260px}}@media only screen and (max-width:767px){.intro[data-v-7468bc5e]{flex:0 1 340px}}@media only screen and (max-width:735px){.info[data-v-7468bc5e]{display:block;text-align:center}.asset[data-v-7468bc5e]{margin:0 45px}.eyebrow[data-v-7468bc5e]{margin-bottom:7px}.intro[data-v-7468bc5e]{margin-top:40px}}.tile[data-v-540dbf10]{background:var(--color-tutorials-overview-fill-secondary,#161616);margin:2px 0;padding:50px 60px}.asset[data-v-540dbf10]{margin-bottom:10px}@media only screen and (min-width:768px)and (max-width:1250px){.tile[data-v-540dbf10]{padding:40px 30px}}@media only screen and (max-width:735px){.volume[data-v-540dbf10]{border-radius:0}.tile[data-v-540dbf10]{padding:40px 20px}}.learning-path[data-v-69a72bbc]{background:var(--color-tutorials-overview-fill,#000);padding:4.7058823529rem 0}.main-container[data-v-69a72bbc]{margin-left:auto;margin-right:auto;width:1536px;width:980px;align-items:stretch;display:flex;justify-content:space-between}@media only screen and (max-width:1250px){.main-container[data-v-69a72bbc]{width:692px}}@media only screen and (max-width:735px){.main-container[data-v-69a72bbc]{width:87.5%}}@media only screen and (max-width:320px){.main-container[data-v-69a72bbc]{width:215px}}.ide .main-container[data-v-69a72bbc]{justify-content:center}.secondary-content-container[data-v-69a72bbc]{flex:0 0 200px;width:200px}.tutorials-navigation[data-v-69a72bbc]{position:sticky;top:7.7647058824rem}.primary-content-container[data-v-69a72bbc]{flex:0 1 720px;max-width:100%}.content-sections-container .content-section[data-v-69a72bbc]{border-radius:12px;overflow:hidden}.content-sections-container .content-section+.content-section[data-v-69a72bbc]{margin-top:1.1764705882rem}@media only screen and (min-width:768px)and (max-width:1250px){.learning-path[data-v-69a72bbc]{padding:2.3529411765rem 0}.primary-content-container[data-v-69a72bbc]{flex-basis:auto;margin-left:1.2941176471rem}.secondary-content-container[data-v-69a72bbc]{flex:0 0 180px;width:180px}}@media only screen and (max-width:767px){.secondary-content-container[data-v-69a72bbc]{display:none}}@media only screen and (max-width:735px){.content-sections-container .content-section[data-v-69a72bbc]{border-radius:0}.content-sections-container .content-section.volume[data-v-69a72bbc]{margin-top:1.1764705882rem}.learning-path[data-v-69a72bbc]{padding:0}.main-container[data-v-69a72bbc]{width:100%}}.tutorials-overview[data-v-5381f0aa]{background:#000;flex:1;height:100%}.tutorials-overview .radial-gradient[data-v-5381f0aa]{margin-top:-3.0588235294rem;padding-top:3.0588235294rem;background:var(--color-tutorials-overview-fill-secondary,var(--color-tutorials-overview-background))}@media only screen and (max-width:735px){.tutorials-overview .radial-gradient[data-v-5381f0aa]{margin-top:-2.8235294118rem;padding-top:2.8235294118rem}}@-moz-document url-prefix(){.tutorials-overview .radial-gradient[data-v-5381f0aa]{background:#111!important}} \ No newline at end of file diff --git a/docs/data/documentation/playbacksdk.json b/docs/data/documentation/playbacksdk.json index c52f8ec..03da7c5 100644 --- a/docs/data/documentation/playbacksdk.json +++ b/docs/data/documentation/playbacksdk.json @@ -1 +1 @@ -{"metadata":{"role":"collection","modules":[{"name":"PlaybackSDK"}],"roleHeading":"Framework","title":"PlaybackSDK","externalID":"PlaybackSDK","symbolKind":"module"},"hierarchy":{"paths":[[]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/playbacksdk"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK"},"sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","topicSections":[{"title":"Structures","identifiers":["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig"]}],"references":{"doc://PlaybackSDK/documentation/PlaybackSDK":{"type":"topic","title":"PlaybackSDK","url":"\/documentation\/playbacksdk","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","kind":"symbol","role":"collection"},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig":{"url":"\/documentation\/playbacksdk\/playbackconfig","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","navigatorTitle":[{"kind":"identifier","text":"PlaybackConfig"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"PlaybackConfig"}],"abstract":[],"type":"topic","title":"PlaybackConfig","kind":"symbol"},"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig":{"role":"symbol","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig","kind":"symbol","url":"\/documentation\/playbacksdk\/videoplayerconfig","navigatorTitle":[{"kind":"identifier","text":"VideoPlayerConfig"}],"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"VideoPlayerConfig","kind":"identifier"}],"abstract":[],"type":"topic","title":"VideoPlayerConfig"}}} \ No newline at end of file +{"topicSections":[{"anchor":"Structures","identifiers":["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig"],"title":"Structures","generated":true}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/playbacksdk"]}],"sections":[],"hierarchy":{"paths":[[]]},"identifier":{"url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"modules":[{"name":"PlaybackSDK"}],"roleHeading":"Framework","title":"PlaybackSDK","symbolKind":"module","role":"collection","externalID":"PlaybackSDK"},"kind":"symbol","references":{"doc://PlaybackSDK/documentation/PlaybackSDK":{"url":"\/documentation\/playbacksdk","abstract":[],"kind":"symbol","role":"collection","title":"PlaybackSDK","type":"topic","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK"},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig":{"abstract":[],"role":"symbol","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","title":"PlaybackConfig","type":"topic","navigatorTitle":[{"text":"PlaybackConfig","kind":"identifier"}],"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"PlaybackConfig","kind":"identifier"}],"url":"\/documentation\/playbacksdk\/playbackconfig","kind":"symbol"},"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig":{"url":"\/documentation\/playbacksdk\/videoplayerconfig","abstract":[],"kind":"symbol","navigatorTitle":[{"text":"VideoPlayerConfig","kind":"identifier"}],"role":"symbol","title":"VideoPlayerConfig","type":"topic","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"VideoPlayerConfig"}]}}} \ No newline at end of file diff --git a/docs/data/documentation/playbacksdk/playbackconfig.json b/docs/data/documentation/playbacksdk/playbackconfig.json index b80001a..f692f3d 100644 --- a/docs/data/documentation/playbacksdk/playbackconfig.json +++ b/docs/data/documentation/playbacksdk/playbackconfig.json @@ -1 +1 @@ -{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig"},"sections":[],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"PlaybackConfig"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/playbacksdk\/playbackconfig"]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"PlaybackConfig"}],"title":"PlaybackConfig","modules":[{"name":"PlaybackSDK"}],"roleHeading":"Structure","navigatorTitle":[{"kind":"identifier","text":"PlaybackConfig"}],"role":"symbol","externalID":"s:11PlaybackSDK0A6ConfigV","symbolKind":"struct"},"hierarchy":{"paths":[["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK"]]},"topicSections":[{"identifiers":["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/autoplayEnabled","doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/backgroundPlaybackEnabled"],"title":"Instance Properties"}],"references":{"doc://PlaybackSDK/documentation/PlaybackSDK":{"type":"topic","title":"PlaybackSDK","url":"\/documentation\/playbacksdk","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","kind":"symbol","role":"collection"},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig/backgroundPlaybackEnabled":{"type":"topic","title":"backgroundPlaybackEnabled","url":"\/documentation\/playbacksdk\/playbackconfig\/backgroundplaybackenabled","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/backgroundPlaybackEnabled","kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"backgroundPlaybackEnabled","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"role":"symbol"},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig/autoplayEnabled":{"type":"topic","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"autoplayEnabled","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"kind":"symbol","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/autoplayEnabled","title":"autoplayEnabled","url":"\/documentation\/playbacksdk\/playbackconfig\/autoplayenabled","abstract":[]},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig":{"url":"\/documentation\/playbacksdk\/playbackconfig","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","navigatorTitle":[{"kind":"identifier","text":"PlaybackConfig"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"PlaybackConfig"}],"abstract":[],"type":"topic","title":"PlaybackConfig","kind":"symbol"}}} \ No newline at end of file +{"identifier":{"url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"minor":3,"major":0},"metadata":{"symbolKind":"struct","externalID":"s:11PlaybackSDK0A6ConfigV","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"PlaybackConfig","kind":"identifier"}],"roleHeading":"Structure","navigatorTitle":[{"text":"PlaybackConfig","kind":"identifier"}],"role":"symbol","title":"PlaybackConfig","modules":[{"name":"PlaybackSDK"}]},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"PlaybackConfig"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK"]]},"topicSections":[{"identifiers":["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/autoplayEnabled","doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/backgroundPlaybackEnabled"],"title":"Instance Properties","anchor":"Instance-Properties","generated":true}],"sections":[],"kind":"symbol","variants":[{"paths":["\/documentation\/playbacksdk\/playbackconfig"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig":{"abstract":[],"type":"topic","role":"symbol","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","kind":"symbol","title":"PlaybackConfig","navigatorTitle":[{"kind":"identifier","text":"PlaybackConfig"}],"url":"\/documentation\/playbacksdk\/playbackconfig","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"PlaybackConfig"}]},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig/backgroundPlaybackEnabled":{"role":"symbol","abstract":[],"title":"backgroundPlaybackEnabled","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"backgroundPlaybackEnabled"},{"kind":"text","text":": "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/backgroundPlaybackEnabled","url":"\/documentation\/playbacksdk\/playbackconfig\/backgroundplaybackenabled","kind":"symbol","type":"topic"},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig/autoplayEnabled":{"url":"\/documentation\/playbacksdk\/playbackconfig\/autoplayenabled","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"autoplayEnabled"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"role":"symbol","kind":"symbol","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/autoplayEnabled","type":"topic","title":"autoplayEnabled"},"doc://PlaybackSDK/documentation/PlaybackSDK":{"url":"\/documentation\/playbacksdk","abstract":[],"kind":"symbol","role":"collection","title":"PlaybackSDK","type":"topic","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK"}}} \ No newline at end of file diff --git a/docs/data/documentation/playbacksdk/playbackconfig/autoplayenabled.json b/docs/data/documentation/playbacksdk/playbackconfig/autoplayenabled.json index 5200e03..540b17f 100644 --- a/docs/data/documentation/playbacksdk/playbackconfig/autoplayenabled.json +++ b/docs/data/documentation/playbacksdk/playbackconfig/autoplayenabled.json @@ -1 +1 @@ -{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/autoplayEnabled"},"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"paths":["\/documentation\/playbacksdk\/playbackconfig\/autoplayenabled"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"autoplayEnabled"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]}],"kind":"declarations"}],"kind":"symbol","sections":[],"metadata":{"symbolKind":"property","modules":[{"name":"PlaybackSDK"}],"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"autoplayEnabled","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"roleHeading":"Instance Property","externalID":"s:11PlaybackSDK0A6ConfigV15autoplayEnabledSbvp","role":"symbol","title":"autoplayEnabled"},"references":{"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig":{"abstract":[],"url":"\/documentation\/playbacksdk\/playbackconfig","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"PlaybackConfig","kind":"identifier"}],"kind":"symbol","title":"PlaybackConfig","type":"topic","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","role":"symbol","navigatorTitle":[{"text":"PlaybackConfig","kind":"identifier"}]},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig/autoplayEnabled":{"type":"topic","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"autoplayEnabled","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"kind":"symbol","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/autoplayEnabled","title":"autoplayEnabled","url":"\/documentation\/playbacksdk\/playbackconfig\/autoplayenabled","abstract":[]},"doc://PlaybackSDK/documentation/PlaybackSDK":{"type":"topic","title":"PlaybackSDK","url":"\/documentation\/playbacksdk","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","kind":"symbol","role":"collection"}}} \ No newline at end of file +{"hierarchy":{"paths":[["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig"]]},"identifier":{"url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/autoplayEnabled","interfaceLanguage":"swift"},"sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"autoplayEnabled","kind":"identifier"},{"kind":"text","text":": "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/playbacksdk\/playbackconfig\/autoplayenabled"]}],"metadata":{"role":"symbol","modules":[{"name":"PlaybackSDK"}],"roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"autoplayEnabled","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"title":"autoplayEnabled","symbolKind":"property","externalID":"s:11PlaybackSDK0A6ConfigV15autoplayEnabledSbvp"},"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig/autoplayEnabled":{"url":"\/documentation\/playbacksdk\/playbackconfig\/autoplayenabled","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"autoplayEnabled"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"role":"symbol","kind":"symbol","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/autoplayEnabled","type":"topic","title":"autoplayEnabled"},"doc://PlaybackSDK/documentation/PlaybackSDK":{"url":"\/documentation\/playbacksdk","abstract":[],"kind":"symbol","role":"collection","title":"PlaybackSDK","type":"topic","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK"},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig":{"abstract":[],"type":"topic","role":"symbol","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","kind":"symbol","title":"PlaybackConfig","navigatorTitle":[{"kind":"identifier","text":"PlaybackConfig"}],"url":"\/documentation\/playbacksdk\/playbackconfig","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"PlaybackConfig"}]}}} \ No newline at end of file diff --git a/docs/data/documentation/playbacksdk/playbackconfig/backgroundplaybackenabled.json b/docs/data/documentation/playbacksdk/playbackconfig/backgroundplaybackenabled.json index a6883a4..28f07dc 100644 --- a/docs/data/documentation/playbacksdk/playbackconfig/backgroundplaybackenabled.json +++ b/docs/data/documentation/playbacksdk/playbackconfig/backgroundplaybackenabled.json @@ -1 +1 @@ -{"identifier":{"url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/backgroundPlaybackEnabled","interfaceLanguage":"swift"},"sections":[],"metadata":{"role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"backgroundPlaybackEnabled","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"symbolKind":"property","roleHeading":"Instance Property","title":"backgroundPlaybackEnabled","modules":[{"name":"PlaybackSDK"}],"externalID":"s:11PlaybackSDK0A6ConfigV010backgroundA7EnabledSbvp"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/playbacksdk\/playbackconfig\/backgroundplaybackenabled"]}],"hierarchy":{"paths":[["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"backgroundPlaybackEnabled"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig/backgroundPlaybackEnabled":{"type":"topic","url":"\/documentation\/playbacksdk\/playbackconfig\/backgroundplaybackenabled","role":"symbol","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/backgroundPlaybackEnabled","abstract":[],"title":"backgroundPlaybackEnabled","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"backgroundPlaybackEnabled","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}]},"doc://PlaybackSDK/documentation/PlaybackSDK":{"type":"topic","title":"PlaybackSDK","url":"\/documentation\/playbacksdk","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","kind":"symbol","role":"collection"},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig":{"url":"\/documentation\/playbacksdk\/playbackconfig","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","navigatorTitle":[{"kind":"identifier","text":"PlaybackConfig"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"PlaybackConfig"}],"abstract":[],"type":"topic","title":"PlaybackConfig","kind":"symbol"}}} \ No newline at end of file +{"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"backgroundPlaybackEnabled"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}]}]}],"variants":[{"paths":["\/documentation\/playbacksdk\/playbackconfig\/backgroundplaybackenabled"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig"]]},"kind":"symbol","metadata":{"modules":[{"name":"PlaybackSDK"}],"symbolKind":"property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"backgroundPlaybackEnabled"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"externalID":"s:11PlaybackSDK0A6ConfigV010backgroundA7EnabledSbvp","roleHeading":"Instance Property","title":"backgroundPlaybackEnabled","role":"symbol"},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/backgroundPlaybackEnabled"},"references":{"doc://PlaybackSDK/documentation/PlaybackSDK":{"type":"topic","kind":"symbol","abstract":[],"url":"\/documentation\/playbacksdk","role":"collection","title":"PlaybackSDK","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK"},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig":{"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","abstract":[],"title":"PlaybackConfig","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"PlaybackConfig"}],"navigatorTitle":[{"kind":"identifier","text":"PlaybackConfig"}],"type":"topic","kind":"symbol","url":"\/documentation\/playbacksdk\/playbackconfig","role":"symbol"},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig/backgroundPlaybackEnabled":{"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig\/backgroundPlaybackEnabled","abstract":[],"title":"backgroundPlaybackEnabled","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"backgroundPlaybackEnabled"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"type":"topic","kind":"symbol","url":"\/documentation\/playbacksdk\/playbackconfig\/backgroundplaybackenabled","role":"symbol"}}} \ No newline at end of file diff --git a/docs/data/documentation/playbacksdk/videoplayerconfig.json b/docs/data/documentation/playbacksdk/videoplayerconfig.json index a6c9403..cab3465 100644 --- a/docs/data/documentation/playbacksdk/videoplayerconfig.json +++ b/docs/data/documentation/playbacksdk/videoplayerconfig.json @@ -1 +1 @@ -{"kind":"symbol","metadata":{"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"VideoPlayerConfig","kind":"identifier"}],"title":"VideoPlayerConfig","externalID":"s:11PlaybackSDK17VideoPlayerConfigV","roleHeading":"Structure","navigatorTitle":[{"kind":"identifier","text":"VideoPlayerConfig"}],"modules":[{"name":"PlaybackSDK"}],"role":"symbol","symbolKind":"struct"},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"topicSections":[{"identifiers":["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/init()"],"title":"Initializers"},{"title":"Instance Properties","identifiers":["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/playbackConfig"]}],"identifier":{"url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/playbacksdk\/videoplayerconfig"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"VideoPlayerConfig","kind":"identifier"}]}]}],"references":{"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig":{"role":"symbol","title":"VideoPlayerConfig","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig","abstract":[],"type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"VideoPlayerConfig","kind":"identifier"}],"kind":"symbol","url":"\/documentation\/playbacksdk\/videoplayerconfig","navigatorTitle":[{"kind":"identifier","text":"VideoPlayerConfig"}]},"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig/playbackConfig":{"url":"\/documentation\/playbacksdk\/videoplayerconfig\/playbackconfig","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"playbackConfig","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"PlaybackConfig","preciseIdentifier":"s:11PlaybackSDK0A6ConfigV"}],"type":"topic","title":"playbackConfig","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/playbackConfig"},"doc://PlaybackSDK/documentation/PlaybackSDK":{"type":"topic","title":"PlaybackSDK","url":"\/documentation\/playbacksdk","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","kind":"symbol","role":"collection"},"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig/init()":{"title":"init()","role":"symbol","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"()"}],"type":"topic","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/init()","abstract":[],"url":"\/documentation\/playbacksdk\/videoplayerconfig\/init()","kind":"symbol"}}} \ No newline at end of file +{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/playbacksdk\/videoplayerconfig"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"topicSections":[{"anchor":"Initializers","generated":true,"title":"Initializers","identifiers":["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/init()"]},{"identifiers":["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/playbackConfig"],"generated":true,"anchor":"Instance-Properties","title":"Instance Properties"}],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"VideoPlayerConfig","kind":"identifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"externalID":"s:11PlaybackSDK17VideoPlayerConfigV","symbolKind":"struct","role":"symbol","navigatorTitle":[{"text":"VideoPlayerConfig","kind":"identifier"}],"title":"VideoPlayerConfig","roleHeading":"Structure","modules":[{"name":"PlaybackSDK"}],"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"VideoPlayerConfig"}]},"hierarchy":{"paths":[["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK"]]},"sections":[],"identifier":{"url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig","interfaceLanguage":"swift"},"references":{"doc://PlaybackSDK/documentation/PlaybackSDK":{"abstract":[],"kind":"symbol","url":"\/documentation\/playbacksdk","role":"collection","type":"topic","title":"PlaybackSDK","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK"},"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig/playbackConfig":{"abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/playbackConfig","kind":"symbol","type":"topic","title":"playbackConfig","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"playbackConfig","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:11PlaybackSDK0A6ConfigV","text":"PlaybackConfig"}],"url":"\/documentation\/playbacksdk\/videoplayerconfig\/playbackconfig"},"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig":{"url":"\/documentation\/playbacksdk\/videoplayerconfig","kind":"symbol","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig","abstract":[],"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"VideoPlayerConfig"}],"navigatorTitle":[{"text":"VideoPlayerConfig","kind":"identifier"}],"type":"topic","role":"symbol","title":"VideoPlayerConfig"},"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig/init()":{"url":"\/documentation\/playbacksdk\/videoplayerconfig\/init()","role":"symbol","type":"topic","kind":"symbol","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"()"}],"title":"init()","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/init()"}}} \ No newline at end of file diff --git a/docs/data/documentation/playbacksdk/videoplayerconfig/init().json b/docs/data/documentation/playbacksdk/videoplayerconfig/init().json index 8070d43..abab7d3 100644 --- a/docs/data/documentation/playbacksdk/videoplayerconfig/init().json +++ b/docs/data/documentation/playbacksdk/videoplayerconfig/init().json @@ -1 +1 @@ -{"primaryContentSections":[{"declarations":[{"tokens":[{"text":"init","kind":"keyword"},{"kind":"text","text":"()"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/init()","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/playbacksdk\/videoplayerconfig\/init()"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig"]]},"metadata":{"title":"init()","role":"symbol","fragments":[{"text":"init","kind":"identifier"},{"text":"()","kind":"text"}],"externalID":"s:11PlaybackSDK17VideoPlayerConfigVACycfc","symbolKind":"init","roleHeading":"Initializer","modules":[{"name":"PlaybackSDK"}]},"references":{"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig/init()":{"title":"init()","role":"symbol","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"()"}],"type":"topic","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/init()","abstract":[],"url":"\/documentation\/playbacksdk\/videoplayerconfig\/init()","kind":"symbol"},"doc://PlaybackSDK/documentation/PlaybackSDK":{"type":"topic","title":"PlaybackSDK","url":"\/documentation\/playbacksdk","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","kind":"symbol","role":"collection"},"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig":{"role":"symbol","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig","kind":"symbol","url":"\/documentation\/playbacksdk\/videoplayerconfig","navigatorTitle":[{"kind":"identifier","text":"VideoPlayerConfig"}],"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"VideoPlayerConfig","kind":"identifier"}],"abstract":[],"type":"topic","title":"VideoPlayerConfig"}}} \ No newline at end of file +{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"()"}],"platforms":["macOS"],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/init()"},"sections":[],"kind":"symbol","metadata":{"roleHeading":"Initializer","modules":[{"name":"PlaybackSDK"}],"symbolKind":"init","title":"init()","role":"symbol","externalID":"s:11PlaybackSDK17VideoPlayerConfigVACycfc","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"()"}]},"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/playbacksdk\/videoplayerconfig\/init()"]}],"references":{"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig":{"url":"\/documentation\/playbacksdk\/videoplayerconfig","kind":"symbol","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig","abstract":[],"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"VideoPlayerConfig"}],"navigatorTitle":[{"text":"VideoPlayerConfig","kind":"identifier"}],"type":"topic","role":"symbol","title":"VideoPlayerConfig"},"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig/init()":{"url":"\/documentation\/playbacksdk\/videoplayerconfig\/init()","role":"symbol","type":"topic","kind":"symbol","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"()"}],"title":"init()","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/init()"},"doc://PlaybackSDK/documentation/PlaybackSDK":{"url":"\/documentation\/playbacksdk","abstract":[],"kind":"symbol","role":"collection","title":"PlaybackSDK","type":"topic","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK"}}} \ No newline at end of file diff --git a/docs/data/documentation/playbacksdk/videoplayerconfig/playbackconfig.json b/docs/data/documentation/playbacksdk/videoplayerconfig/playbackconfig.json index bec96b6..730150b 100644 --- a/docs/data/documentation/playbacksdk/videoplayerconfig/playbackconfig.json +++ b/docs/data/documentation/playbacksdk/videoplayerconfig/playbackconfig.json @@ -1 +1 @@ -{"variants":[{"paths":["\/documentation\/playbacksdk\/videoplayerconfig\/playbackconfig"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig"]]},"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/playbackConfig"},"sections":[],"metadata":{"modules":[{"name":"PlaybackSDK"}],"externalID":"s:11PlaybackSDK17VideoPlayerConfigV08playbackE0AA0aE0Vvp","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"playbackConfig"},{"text":": ","kind":"text"},{"text":"PlaybackConfig","kind":"typeIdentifier","preciseIdentifier":"s:11PlaybackSDK0A6ConfigV"}],"symbolKind":"property","roleHeading":"Instance Property","title":"playbackConfig"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"playbackConfig","kind":"identifier"},{"text":": ","kind":"text"},{"text":"PlaybackConfig","kind":"typeIdentifier","preciseIdentifier":"s:11PlaybackSDK0A6ConfigV","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig"}]}]}],"references":{"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig":{"url":"\/documentation\/playbacksdk\/playbackconfig","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","navigatorTitle":[{"kind":"identifier","text":"PlaybackConfig"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"PlaybackConfig"}],"abstract":[],"type":"topic","title":"PlaybackConfig","kind":"symbol"},"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig/playbackConfig":{"url":"\/documentation\/playbacksdk\/videoplayerconfig\/playbackconfig","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/playbackConfig","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"playbackConfig","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:11PlaybackSDK0A6ConfigV","text":"PlaybackConfig","kind":"typeIdentifier"}],"abstract":[],"type":"topic","title":"playbackConfig","kind":"symbol"},"doc://PlaybackSDK/documentation/PlaybackSDK":{"type":"topic","title":"PlaybackSDK","url":"\/documentation\/playbacksdk","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","kind":"symbol","role":"collection"},"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig":{"role":"symbol","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig","kind":"symbol","url":"\/documentation\/playbacksdk\/videoplayerconfig","navigatorTitle":[{"kind":"identifier","text":"VideoPlayerConfig"}],"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"VideoPlayerConfig","kind":"identifier"}],"abstract":[],"type":"topic","title":"VideoPlayerConfig"}}} \ No newline at end of file +{"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"playbackConfig","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:11PlaybackSDK0A6ConfigV","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","text":"PlaybackConfig"}],"platforms":["macOS"]}]}],"hierarchy":{"paths":[["doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK","doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig"]]},"variants":[{"paths":["\/documentation\/playbacksdk\/videoplayerconfig\/playbackconfig"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/playbackConfig","interfaceLanguage":"swift"},"metadata":{"roleHeading":"Instance Property","externalID":"s:11PlaybackSDK17VideoPlayerConfigV08playbackE0AA0aE0Vvp","title":"playbackConfig","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"playbackConfig","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:11PlaybackSDK0A6ConfigV","text":"PlaybackConfig"}],"symbolKind":"property","role":"symbol","modules":[{"name":"PlaybackSDK"}]},"sections":[],"references":{"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig/playbackConfig":{"abstract":[],"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig\/playbackConfig","kind":"symbol","type":"topic","title":"playbackConfig","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"playbackConfig","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:11PlaybackSDK0A6ConfigV","text":"PlaybackConfig"}],"url":"\/documentation\/playbacksdk\/videoplayerconfig\/playbackconfig"},"doc://PlaybackSDK/documentation/PlaybackSDK":{"url":"\/documentation\/playbacksdk","abstract":[],"kind":"symbol","role":"collection","title":"PlaybackSDK","type":"topic","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK"},"doc://PlaybackSDK/documentation/PlaybackSDK/VideoPlayerConfig":{"identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/VideoPlayerConfig","role":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"VideoPlayerConfig"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"VideoPlayerConfig","kind":"identifier"}],"url":"\/documentation\/playbacksdk\/videoplayerconfig","abstract":[],"kind":"symbol","title":"VideoPlayerConfig"},"doc://PlaybackSDK/documentation/PlaybackSDK/PlaybackConfig":{"abstract":[],"role":"symbol","identifier":"doc:\/\/PlaybackSDK\/documentation\/PlaybackSDK\/PlaybackConfig","title":"PlaybackConfig","type":"topic","navigatorTitle":[{"text":"PlaybackConfig","kind":"identifier"}],"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"PlaybackConfig","kind":"identifier"}],"url":"\/documentation\/playbacksdk\/playbackconfig","kind":"symbol"}}} \ No newline at end of file diff --git a/docs/data/tutorials/playbacksdk/getstarted.json b/docs/data/tutorials/playbacksdk/getstarted.json index 4503bd3..be76c9c 100644 --- a/docs/data/tutorials/playbacksdk/getstarted.json +++ b/docs/data/tutorials/playbacksdk/getstarted.json @@ -1 +1 @@ -{"identifier":{"url":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","interfaceLanguage":"swift"},"kind":"project","sections":[{"kind":"hero","title":"Playback SDK Overview","chapter":"Getting Started","estimatedTimeInMinutes":30,"content":[{"type":"paragraph","inlineContent":[{"text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic.","type":"text"}]},{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Key Features:"}]}],"type":"paragraph"},{"type":"unorderedList","items":[{"content":[{"inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"Abstraction:"}]},{"type":"text","text":" Hides the complexities of underlying video APIs, allowing you to focus on the core playback experience."}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"inlineContent":[{"type":"text","text":"Flexibility:"}],"type":"strong"},{"text":" Supports different video providers and allows the creation of custom playback plugins for extended functionalities.","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Error Handling:","type":"text"}]},{"type":"text","text":" Provides mechanisms to handle potential issues during playback and notify your application."}]}]}]}]},{"kind":"tasks","tasks":[{"title":"Playback SDK","anchor":"Playback-SDK","stepsSection":[{"content":[{"type":"paragraph","inlineContent":[{"text":"Initialize the Playback SDK by providing your API key and register the default player plugin.","type":"text"},{"text":" ","type":"text"},{"type":"strong","inlineContent":[{"text":"Make sure this step is done when the app starts.","type":"text"}]}]}],"code":"PlaybackDemoApp.swift","type":"step","media":null,"runtimePreview":null,"caption":[]},{"media":null,"content":[{"inlineContent":[{"text":"Add custom ","type":"text"},{"type":"codeVoice","code":"user-agent"},{"type":"text","text":" header."}],"type":"paragraph"}],"runtimePreview":null,"code":"PlaybackDemoAppWithUserAgent.swift","type":"step","caption":[{"type":"paragraph","inlineContent":[{"type":"text","text":"This step is only required for content that needs a token, when using Alamofire or other 3rd party frameworks that overwrite the standard "},{"type":"codeVoice","code":"user-agent"},{"type":"text","text":" header with their own."},{"text":"\n","type":"text"},{"text":"If the content requires starting a CloudPay session, it’s important that the request to start the session has the same ","type":"text"},{"code":"user-agent","type":"codeVoice"},{"type":"text","text":" header as the video loading requests from the player. This can be achieved either by disabling the overwriting behaviour in the 3rd party networking framework you’re using, or by passing a "},{"code":"userAgent","type":"codeVoice"},{"type":"text","text":" parameter to the "},{"type":"codeVoice","code":"initialize"},{"text":" method, like in this example with Alamofire.","type":"text"}]}]},{"code":"PlayerTestView.swift","media":null,"caption":[{"inlineContent":[{"type":"text","text":"In this step, the code utilizes the "},{"type":"strong","inlineContent":[{"text":"loadPlayer","type":"text"}]},{"text":" function provided by the Playback SDK to initialize and load the video player. The function takes the entry ID and authorization token as parameters. Additionally, it includes a closure to handle any potential playback errors that may occur during the loading process.","type":"text"},{"type":"text","text":" "},{"text":"The ","type":"text"},{"type":"strong","inlineContent":[{"text":"handlePlaybackError","type":"text"}]},{"type":"text","text":" function is called within the closure to handle the playback errors. It switches on the type of error received and provides appropriate error handling based on the type of error encountered."},{"text":" ","type":"text"},{"text":"The code also includes a placeholder comment to indicate where the removal of the player could be implemented in the ","type":"text"},{"inlineContent":[{"type":"text","text":"onDisappear"}],"type":"strong"},{"text":" modifier.","type":"text"},{"type":"text","text":" "},{"type":"text","text":"If you want to allow users to access free content or if you’re implementing a guest mode, you can pass an empty string or "},{"type":"strong","inlineContent":[{"type":"text","text":"nil"}]},{"text":" value as the ","type":"text"},{"inlineContent":[{"text":"authorizationToken","type":"text"}],"type":"strong"},{"text":" when calling the ","type":"text"},{"type":"strong","inlineContent":[{"type":"text","text":"loadPlayer"}]},{"type":"text","text":" function. This will bypass the need for authentication, enabling unrestricted access to the specified content."}],"type":"paragraph"}],"type":"step","runtimePreview":null,"content":[{"inlineContent":[{"text":"Load the player using the Playback SDK and handle any playback errors.","type":"text"}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"Handle the playback errors from Playback SDK.","type":"text"}]}],"caption":[{"type":"paragraph","inlineContent":[{"text":"This step describes enum for error handling. Above is the error enum returned by the SDK, where the apiError also has the reason code and message for the API error. The playback API is returning the reason code in the response. For the list of the error codes and reasons, please refer to ","type":"text"},{"type":"reference","identifier":"https:\/\/streamamg.stoplight.io\/docs\/playback-documentation-portal\/ec642e6dcbb13-get-video-playback-data","isActive":true}]}],"runtimePreview":null,"type":"step","code":"PlaybackAPIError.swift","media":null}],"contentSection":[{"kind":"fullWidth","content":[{"type":"paragraph","inlineContent":[{"inlineContent":[{"type":"text","text":"Explore how to use StreamAMG Playback SDK."}],"type":"strong"}]}]}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/tutorials\/playbacksdk\/getstarted"]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"category":"PlaybackSDK Tutorial","title":"Playback SDK Overview","role":"project","categoryPathComponent":"Table-Of-Contents"},"hierarchy":{"modules":[{"reference":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/Getting-Started","projects":[{"sections":[{"kind":"task","reference":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted#Playback-SDK"}],"reference":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted"}]}],"paths":[["doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/$volume","doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/Getting-Started"]],"reference":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents"},"references":{"doc://PlaybackSDK/tutorials/Table-Of-Contents":{"abstract":[{"text":"Welcome to the PlaybackSDK tutorial! In this tutorial, you will learn how to integrate and use the PlaybackSDK in your iOS applications.","type":"text"}],"url":"\/tutorials\/table-of-contents","identifier":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","title":"Introduction to PlaybackSDK","role":"overview","kind":"overview","type":"topic"},"PlaybackDemoAppWithUserAgent.swift":{"syntax":"swift","content":["import SwiftUI","import PlaybackSDK","import Alamofire","","@main","struct PlaybackDemoApp: App {",""," let sdkManager = PlaybackSDKManager()"," let apiKey = \"API_KEY\""," var body: some Scene {"," WindowGroup {"," HomeView()"," }"," }",""," init() {"," \/\/ Get the user-agent set by Alamofire"," let userAgent = AF.session.configuration.httpAdditionalHeaders?[\"User-Agent\"]",""," \/\/ Initialize the Playback SDK with the provided API key and custom user-agent"," PlaybackSDKManager.shared.initialize(apiKey: apiKey, userAgent: userAgent) { result in"," switch result {"," case .success(let license):"," \/\/ Obtained license upon successful initialization"," print(\"SDK initialized with license: \\(license)\")",""," \/\/ Register the video player plugin"," let bitmovinPlugin = BitmovinPlayerPlugin()"," VideoPlayerPluginManager.shared.registerPlugin(bitmovinPlugin)",""," case .failure(let error):"," \/\/ Print an error message and set initializationError flag upon initialization failure"," print(\"SDK initialization failed with error: \\(error)\")",""," }"," }"," }","}"],"identifier":"PlaybackDemoAppWithUserAgent.swift","fileName":"PlaybackDemoAppWithUserAgent.swift","highlights":[{"line":3},{"line":17},{"line":18},{"line":19},{"line":20},{"line":21}],"type":"file","fileType":"swift"},"https://streamamg.stoplight.io/docs/playback-documentation-portal/ec642e6dcbb13-get-video-playback-data":{"url":"https:\/\/streamamg.stoplight.io\/docs\/playback-documentation-portal\/ec642e6dcbb13-get-video-playback-data","type":"link","identifier":"https:\/\/streamamg.stoplight.io\/docs\/playback-documentation-portal\/ec642e6dcbb13-get-video-playback-data","title":"Get Video Playback Data | Playback","titleInlineContent":[{"type":"text","text":"Get Video Playback Data | Playback"}]},"PlayerTestView.swift":{"syntax":"swift","content":["import SwiftUI","import PlaybackSDK","","struct PlayerTestView: View {"," "," private let entryID = \"ENTRY_ID\""," private let authorizationToken = \"JWT_TOKEN\""," "," var body: some View {"," VStack {"," \/\/ Load player with the playback SDK"," PlaybackSDKManager.shared.loadPlayer(entryID: entryID, authorizationToken: authorizationToken) { error in"," handlePlaybackError(error)"," }"," .onDisappear {"," \/\/ Remove the player here"," }"," Spacer()"," }"," .padding()"," }"," "," private func handlePlaybackError(_ error: PlaybackError) {"," switch error {"," case .apiError(let statusCode, let errorMessage, let reason):"," print(\"\\(errorMessage) Status Code \\(statusCode)\")"," errorMessage = \"\\(errorMessage) Status Code \\(statusCode) Reason \\(reason)\""," default:"," print(\"Error loading HLS stream in PlaybackUIView: \\(error.localizedDescription)\")"," errorMessage = \"Error code and errorrMessage not found: \\(error.localizedDescription)\""," }"," }"," ","}"],"fileName":"PlayerTestView.swift","identifier":"PlayerTestView.swift","highlights":[],"type":"file","fileType":"swift"},"PlaybackAPIError.swift":{"identifier":"PlaybackAPIError.swift","syntax":"swift","fileType":"swift","fileName":"PlaybackAPIError.swift","type":"file","content":["import Foundation","","\/\/ Define reason codes returned by Playback SDK","public enum PlaybackErrorReason: Equatable {"," \/\/ Http error 400"," case headerError"," case badRequestError"," case siteNotFound"," case configurationError"," case apiKeyError"," case mpPartnerError"," "," \/\/ Http error 401"," case tokenError"," case tooManyDevices"," case tooManyRequests"," case noEntitlement"," case noSubscription"," case noActiveSession"," case notAuthenticated"," "," \/\/ Http error 404"," case noEntityExist"," "," \/\/ Unknown error with associated custom message"," case unknownError(String)",""," init(fromString value: String) {"," switch value.uppercased() {"," case \"HEADER_ERROR\": self = .headerError"," case \"BAD_REQUEST_ERROR\": self = .badRequestError"," case \"SITE_NOT_FOUND\": self = .siteNotFound"," case \"CONFIGURATION_ERROR\": self = .configurationError"," case \"API_KEY_ERROR\": self = .apiKeyError"," case \"MP_PARTNER_ERROR\": self = .mpPartnerError"," case \"TOKEN_ERROR\": self = .tokenError"," case \"TOO_MANY_DEVICES\": self = .tooManyDevices"," case \"TOO_MANY_REQUESTS\": self = .tooManyRequests"," case \"NO_ENTITLEMENT\": self = .noEntitlement"," case \"NO_SUBSCRIPTION\": self = .noSubscription"," case \"NO_ACTIVE_SESSION\": self = .noActiveSession"," case \"NOT_AUTHENTICATED\": self = .notAuthenticated"," case \"NO_ENTITY_EXIST\": self = .noEntityExist"," default: self = .unknownError(value)"," }"," }","}"],"highlights":[]},"doc://PlaybackSDK/tutorials/Table-Of-Contents/Getting-Started":{"url":"\/tutorials\/table-of-contents\/getting-started","type":"topic","role":"article","title":"Getting Started","identifier":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/Getting-Started","kind":"article","abstract":[]},"doc://PlaybackSDK/tutorials/PlaybackSDK/GetStarted":{"abstract":[{"text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic.","type":"text"}],"role":"project","kind":"project","identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","title":"Playback SDK Overview","estimatedTime":"30min","type":"topic","url":"\/tutorials\/playbacksdk\/getstarted"},"doc://PlaybackSDK/tutorials/PlaybackSDK/GetStarted#Playback-SDK":{"abstract":[{"type":"text","text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic."}],"title":"Playback SDK","type":"section","kind":"section","url":"\/tutorials\/playbacksdk\/getstarted#Playback-SDK","identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted#Playback-SDK","role":"pseudoSymbol"},"PlaybackDemoApp.swift":{"identifier":"PlaybackDemoApp.swift","syntax":"swift","type":"file","fileName":"PlaybackDemoApp.swift","content":["import SwiftUI","import PlaybackSDK","","@main","struct PlaybackDemoApp: App {",""," let sdkManager = PlaybackSDKManager()"," let apiKey = \"API_KEY\""," var body: some Scene {"," WindowGroup {"," HomeView()"," }"," }",""," init() {"," \/\/ Initialize the Playback SDK with the provided API key and base URL"," PlaybackSDKManager.shared.initialize(apiKey: apiKey) { result in"," switch result {"," case .success(let license):"," \/\/ Obtained license upon successful initialization"," print(\"SDK initialized with license: \\(license)\")",""," \/\/ Register the video player plugin"," let bitmovinPlugin = BitmovinPlayerPlugin()"," VideoPlayerPluginManager.shared.registerPlugin(bitmovinPlugin)",""," case .failure(let error):"," \/\/ Print an error message and set initializationError flag upon initialization failure"," print(\"SDK initialization failed with error: \\(error)\")",""," }"," }"," }","}",""],"fileType":"swift","highlights":[]}}} +{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted"},"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"modules":[{"reference":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/Getting-Started","projects":[{"reference":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","sections":[{"reference":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted#Playback-SDK","kind":"task"}]}]}],"reference":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","paths":[["doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/$volume","doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/Getting-Started"]]},"variants":[{"paths":["\/tutorials\/playbacksdk\/getstarted"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"project","metadata":{"categoryPathComponent":"Table-Of-Contents","title":"Playback SDK Overview","category":"PlaybackSDK Tutorial","role":"project"},"sections":[{"kind":"hero","title":"Playback SDK Overview","estimatedTimeInMinutes":30,"content":[{"inlineContent":[{"text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic.","type":"text"}],"type":"paragraph"},{"type":"paragraph","inlineContent":[{"inlineContent":[{"type":"text","text":"Key Features:"}],"type":"strong"}]},{"type":"unorderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"text":"Abstraction:","type":"text"}]},{"type":"text","text":" Hides the complexities of underlying video APIs, allowing you to focus on the core playback experience."}]}]},{"content":[{"inlineContent":[{"type":"strong","inlineContent":[{"text":"Flexibility:","type":"text"}]},{"text":" Supports different video providers and allows the creation of custom playback plugins for extended functionalities.","type":"text"}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"inlineContent":[{"text":"Error Handling:","type":"text"}],"type":"strong"},{"type":"text","text":" Provides mechanisms to handle potential issues during playback and notify your application."}],"type":"paragraph"}]}]}],"chapter":"Getting Started"},{"tasks":[{"stepsSection":[{"runtimePreview":null,"type":"step","content":[{"type":"paragraph","inlineContent":[{"text":"Initialize the Playback SDK by providing your API key, setup and register the default player plugin.","type":"text"},{"text":" ","type":"text"},{"type":"strong","inlineContent":[{"type":"text","text":"Make sure this step is done when the app starts."}]}]}],"code":"PlaybackDemoApp.swift","media":null,"caption":[]},{"code":"PlaybackDemoAppWithUserAgent.swift","type":"step","runtimePreview":null,"caption":[{"inlineContent":[{"type":"text","text":"This step is only required for content that needs a token, when using Alamofire or other 3rd party frameworks that overwrite the standard "},{"code":"user-agent","type":"codeVoice"},{"text":" header with their own.","type":"text"},{"text":"\n","type":"text"},{"type":"text","text":"If the content requires starting a CloudPay session, it’s important that the request to start the session has the same "},{"code":"user-agent","type":"codeVoice"},{"type":"text","text":" header as the video loading requests from the player. This can be achieved either by disabling the overwriting behaviour in the 3rd party networking framework you’re using, or by passing a "},{"code":"userAgent","type":"codeVoice"},{"text":" parameter to the ","type":"text"},{"type":"codeVoice","code":"initialize"},{"type":"text","text":" method, like in this example with Alamofire."}],"type":"paragraph"}],"content":[{"inlineContent":[{"text":"Add custom ","type":"text"},{"code":"user-agent","type":"codeVoice"},{"type":"text","text":" header."}],"type":"paragraph"}],"media":null},{"caption":[{"inlineContent":[{"type":"text","text":"In this step, the code utilizes the "},{"inlineContent":[{"text":"loadPlayer","type":"text"}],"type":"strong"},{"type":"text","text":" function provided by the Playback SDK to initialize and load the video player. The function takes the entry ID and authorization token as parameters. Additionally, it includes a closure to handle any potential playback errors that may occur during the loading process."},{"text":" ","type":"text"},{"text":"The ","type":"text"},{"type":"strong","inlineContent":[{"type":"text","text":"handlePlaybackError"}]},{"text":" function is called within the closure to handle the playback errors. It switches on the type of error received and provides appropriate error handling based on the type of error encountered.","type":"text"},{"type":"text","text":" "},{"type":"text","text":"The code also includes a placeholder comment to indicate where the removal of the player could be implemented in the "},{"type":"strong","inlineContent":[{"type":"text","text":"onDisappear"}]},{"text":" modifier.","type":"text"},{"type":"text","text":" "},{"text":"If you want to allow users to access free content or if you’re implementing a guest mode, you can pass an empty string or ","type":"text"},{"inlineContent":[{"text":"nil","type":"text"}],"type":"strong"},{"text":" value as the ","type":"text"},{"inlineContent":[{"type":"text","text":"authorizationToken"}],"type":"strong"},{"text":" when calling the ","type":"text"},{"inlineContent":[{"type":"text","text":"loadPlayer"}],"type":"strong"},{"type":"text","text":" function. This will bypass the need for authentication, enabling unrestricted access to the specified content."}],"type":"paragraph"}],"type":"step","media":null,"content":[{"inlineContent":[{"type":"text","text":"Load the player using the Playback SDK and handle any playback errors."}],"type":"paragraph"}],"code":"PlayerTestView.swift","runtimePreview":null},{"code":"PlayerTestPlaylistView.swift","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Load the player passing a playlist using the Playback SDK and handle any playlist errors."}]}],"type":"step","runtimePreview":null,"caption":[{"inlineContent":[{"text":"To load a playlist and handle errors, use the ","type":"text"},{"type":"strong","inlineContent":[{"text":"loadPlaylist","type":"text"}]},{"text":" function provided by the Playback SDK to initialize and load the video player. This function takes an array of entry IDs, the starting entry ID, and an authorization token as parameters. Additionally, it includes a closure to handle any potential playlist errors that may occur during the loading process.","type":"text"},{"text":" ","type":"text"},{"text":"The ","type":"text"},{"inlineContent":[{"type":"text","text":"handlePlaybackErrors"}],"type":"strong"},{"type":"text","text":" function is called within the closure to handle the playlist errors. It iterates through an array of "},{"type":"strong","inlineContent":[{"text":"PlaybackError","type":"text"}]},{"text":" objects and, for each error, switches on the error type to provide appropriate error handling.","type":"text"},{"type":"text","text":" "},{"type":"text","text":"The code also includes a placeholder comment to indicate where the removal of the player can be implemented in the "},{"inlineContent":[{"type":"text","text":"onDisappear"}],"type":"strong"},{"type":"text","text":" modifier."},{"text":" ","type":"text"},{"type":"text","text":"If you want to allow users to access free content or implement a guest mode, you can pass an empty string or "},{"type":"strong","inlineContent":[{"text":"nil","type":"text"}]},{"type":"text","text":" value as the "},{"type":"strong","inlineContent":[{"type":"text","text":"authorizationToken"}]},{"text":" when calling the ","type":"text"},{"type":"strong","inlineContent":[{"text":"loadPlaylist","type":"text"}]},{"text":" function. This will bypass the need for authentication, enabling unrestricted access to the specified content.","type":"text"}],"type":"paragraph"}],"media":null},{"content":[{"type":"paragraph","inlineContent":[{"text":"Playlist controls and events","type":"text"}]}],"type":"step","code":"PlayerTestPlaylistControlsAndEventsView.swift","caption":[{"inlineContent":[{"type":"text","text":"To control playlist playback and events, declare a "},{"inlineContent":[{"type":"text","text":"VideoPlayerPluginManager"}],"type":"strong"},{"type":"text","text":" singleton instance as a "},{"type":"strong","inlineContent":[{"text":"@StateObject","type":"text"}]},{"type":"text","text":" variable. This allows you to access playlist controls and listen to player events."},{"type":"text","text":" "},{"text":"In the ","type":"text"},{"type":"strong","inlineContent":[{"type":"text","text":"onReceive"}]},{"text":" modifier, you can listen to player events such as the ","type":"text"},{"inlineContent":[{"type":"text","text":"PlaylistTransitionEvent"}],"type":"strong"},{"text":", which provides information about transitions between videos.","type":"text"},{"text":" ","type":"text"},{"text":"Through the ","type":"text"},{"inlineContent":[{"type":"text","text":"pluginManager.selectedPlugin"}],"type":"strong"},{"text":", you can interact with playlist controls and retrieve the current video ID using the ","type":"text"},{"inlineContent":[{"type":"text","text":"activeEntryId"}],"type":"strong"},{"type":"text","text":" function."}],"type":"paragraph"}],"runtimePreview":null,"media":null},{"type":"step","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Handle the playback errors from Playback SDK."}]}],"caption":[{"type":"paragraph","inlineContent":[{"type":"text","text":"This step describes enum for error handling. Above is the error enum returned by the SDK, where the apiError also has the reason code and message for the API error. The playback API is returning the reason code in the response. For the list of the error codes and reasons, please refer to "},{"type":"reference","isActive":true,"identifier":"https:\/\/streamamg.stoplight.io\/docs\/playback-documentation-portal\/ec642e6dcbb13-get-video-playback-data"}]}],"code":"PlaybackAPIError.swift","runtimePreview":null,"media":null}],"title":"Playback SDK","anchor":"Playback-SDK","contentSection":[{"kind":"fullWidth","content":[{"type":"paragraph","inlineContent":[{"inlineContent":[{"text":"Explore how to use StreamAMG Playback SDK.","type":"text"}],"type":"strong"}]}]}]}],"kind":"tasks"}],"references":{"https://streamamg.stoplight.io/docs/playback-documentation-portal/ec642e6dcbb13-get-video-playback-data":{"title":"Get Video Playback Data | Playback","titleInlineContent":[{"text":"Get Video Playback Data | Playback","type":"text"}],"url":"https:\/\/streamamg.stoplight.io\/docs\/playback-documentation-portal\/ec642e6dcbb13-get-video-playback-data","type":"link","identifier":"https:\/\/streamamg.stoplight.io\/docs\/playback-documentation-portal\/ec642e6dcbb13-get-video-playback-data"},"PlaybackAPIError.swift":{"fileType":"swift","fileName":"PlaybackAPIError.swift","highlights":[],"identifier":"PlaybackAPIError.swift","content":["import Foundation","","\/\/ Define reason codes returned by Playback SDK","public enum PlaybackErrorReason: Equatable {"," \/\/ Http error 400"," case headerError"," case badRequestError"," case siteNotFound"," case configurationError"," case apiKeyError"," case mpPartnerError"," "," \/\/ Http error 401"," case tokenError"," case tooManyDevices"," case tooManyRequests"," case noEntitlement"," case noSubscription"," case noActiveSession"," case notAuthenticated"," "," \/\/ Http error 404"," case noEntityExist"," "," \/\/ Unknown error with associated custom message"," case unknownError(String)",""," init(fromString value: String) {"," switch value.uppercased() {"," case \"HEADER_ERROR\": self = .headerError"," case \"BAD_REQUEST_ERROR\": self = .badRequestError"," case \"SITE_NOT_FOUND\": self = .siteNotFound"," case \"CONFIGURATION_ERROR\": self = .configurationError"," case \"API_KEY_ERROR\": self = .apiKeyError"," case \"MP_PARTNER_ERROR\": self = .mpPartnerError"," case \"TOKEN_ERROR\": self = .tokenError"," case \"TOO_MANY_DEVICES\": self = .tooManyDevices"," case \"TOO_MANY_REQUESTS\": self = .tooManyRequests"," case \"NO_ENTITLEMENT\": self = .noEntitlement"," case \"NO_SUBSCRIPTION\": self = .noSubscription"," case \"NO_ACTIVE_SESSION\": self = .noActiveSession"," case \"NOT_AUTHENTICATED\": self = .notAuthenticated"," case \"NO_ENTITY_EXIST\": self = .noEntityExist"," default: self = .unknownError(value)"," }"," }","}"],"syntax":"swift","type":"file"},"PlayerTestPlaylistControlsAndEventsView.swift":{"syntax":"swift","fileType":"swift","type":"file","fileName":"PlayerTestPlaylistControlsAndEventsView.swift","content":["import SwiftUI","import PlaybackSDK","","struct PlayerTestPlaylistControlsAndEventsView: View {"," "," @StateObject private var pluginManager = VideoPlayerPluginManager.shared"," private let entryIDs = [\"ENTRY_ID1\", \"ENTRY_ID_2\", \"ENTRY_ID_3\"]"," private let entryIDToPlay = \"ENTRY_ID_2\" \/\/ Optional parameter"," private let entryIdToSeek = \"ENTRY_ID_TO_SEEK\""," private let authorizationToken = \"JWT_TOKEN\""," "," var body: some View {"," VStack {"," \/\/ Load playlist with the playback SDK"," PlaybackSDKManager.shared.loadPlaylist(entryIDs: entryIDs, entryIDToPlay: entryIDToPlay, authorizationToken: authorizationToken) { errors in"," handlePlaybackError(errors)"," }"," .onReceive(pluginManager.selectedPlugin!.event) { event in"," if let event = event as? PlaylistTransitionEvent { \/\/ Playlist Event"," if let from = event.from.metadata?[\"entryId\"], let to = event.to.metadata?[\"entryId\"] {"," print(\"Playlist event changed from \\(from) to \\(to)\")"," }"," }"," }"," .onDisappear {"," \/\/ Remove the player here"," }"," "," Spacer()"," "," Button {"," \/\/ You can use the following playlist controls"," pluginManager.selectedPlugin?.playFirst() \/\/ Play the first video"," pluginManager.selectedPlugin?.playPrevious() \/\/ Play the previous video"," pluginManager.selectedPlugin?.playNext() \/\/ Play the next video"," pluginManager.selectedPlugin?.playLast() \/\/ Play the last video"," pluginManager.selectedPlugin?.seek(entryIdToSeek) { success in \/\/ Seek a specific video"," if (!success) {"," let errorMessage = \"Unable to seek video Id \\(entryIdToSeek)\""," }"," }"," pluginManager.selectedPlugin?.activeEntryId() \/\/ Get the active video Id"," } label: {"," Image(systemName: \"list.triangle\")"," }"," "," Spacer()"," }"," .padding()"," }"," "," private func handlePlaybackErrors(_ errors: [PlaybackAPIError]) {"," "," for error in errors {"," switch error {"," case .apiError(let statusCode, let message, let reason):"," let message = \"\\(message) Status Code \\(statusCode), Reason: \\(reason)\""," print(message)"," default:"," print(\"Error code and errorrMessage not found: \\(error.localizedDescription)\")"," }"," }"," }"," ","}"],"highlights":[{"line":4},{"line":6},{"line":9},{"line":18},{"line":19},{"line":20},{"line":21},{"line":22},{"line":23},{"line":24},{"line":28},{"line":30},{"line":31},{"line":32},{"line":33},{"line":34},{"line":35},{"line":36},{"line":37},{"line":38},{"line":39},{"line":40},{"line":41},{"line":42},{"line":43},{"line":44},{"line":45},{"line":46},{"line":47}],"identifier":"PlayerTestPlaylistControlsAndEventsView.swift"},"doc://PlaybackSDK/tutorials/Table-Of-Contents":{"abstract":[{"type":"text","text":"Welcome to the PlaybackSDK tutorial! In this tutorial, you will learn how to integrate and use the PlaybackSDK in your iOS applications."}],"url":"\/tutorials\/table-of-contents","identifier":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","type":"topic","title":"Introduction to PlaybackSDK","role":"overview","kind":"overview"},"doc://PlaybackSDK/tutorials/Table-Of-Contents/Getting-Started":{"role":"article","type":"topic","url":"\/tutorials\/table-of-contents\/getting-started","kind":"article","title":"Getting Started","abstract":[],"identifier":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents\/Getting-Started"},"doc://PlaybackSDK/tutorials/PlaybackSDK/GetStarted":{"type":"topic","url":"\/tutorials\/playbacksdk\/getstarted","estimatedTime":"30min","title":"Playback SDK Overview","kind":"project","identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","abstract":[{"type":"text","text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic."}],"role":"project"},"PlayerTestView.swift":{"fileType":"swift","highlights":[],"fileName":"PlayerTestView.swift","identifier":"PlayerTestView.swift","syntax":"swift","content":["import SwiftUI","import PlaybackSDK","","struct PlayerTestView: View {"," "," private let entryID = \"ENTRY_ID\""," private let authorizationToken = \"JWT_TOKEN\""," "," var body: some View {"," VStack {"," \/\/ Load player with the playback SDK"," PlaybackSDKManager.shared.loadPlayer(entryID: entryID, authorizationToken: authorizationToken) { error in"," handlePlaybackError(error)"," }"," .onDisappear {"," \/\/ Remove the player here"," }"," Spacer()"," }"," .padding()"," }"," "," private func handlePlaybackError(_ error: PlaybackAPIError) {"," switch error {"," case .apiError(let statusCode, let errorMessage, let reason):"," print(\"\\(errorMessage) Status Code \\(statusCode)\")"," errorMessage = \"\\(errorMessage) Status Code \\(statusCode) Reason \\(reason)\""," default:"," print(\"Error loading HLS stream in PlaybackUIView: \\(error.localizedDescription)\")"," errorMessage = \"Error code and errorrMessage not found: \\(error.localizedDescription)\""," }"," }"," ","}"],"type":"file"},"doc://PlaybackSDK/tutorials/PlaybackSDK/GetStarted#Playback-SDK":{"kind":"section","title":"Playback SDK","type":"section","abstract":[{"text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic.","type":"text"}],"identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted#Playback-SDK","url":"\/tutorials\/playbacksdk\/getstarted#Playback-SDK","role":"pseudoSymbol"},"PlaybackDemoAppWithUserAgent.swift":{"fileType":"swift","fileName":"PlaybackDemoAppWithUserAgent.swift","highlights":[{"line":3},{"line":17},{"line":18},{"line":19},{"line":20},{"line":21}],"identifier":"PlaybackDemoAppWithUserAgent.swift","content":["import SwiftUI","import PlaybackSDK","import Alamofire","","@main","struct PlaybackDemoApp: App {",""," let sdkManager = PlaybackSDKManager()"," let apiKey = \"API_KEY\""," var body: some Scene {"," WindowGroup {"," HomeView()"," }"," }",""," init() {"," \/\/ Get the user-agent set by Alamofire"," let userAgent = AF.session.configuration.httpAdditionalHeaders?[\"User-Agent\"]",""," \/\/ Initialize the Playback SDK with the provided API key and custom user-agent"," PlaybackSDKManager.shared.initialize(apiKey: apiKey, userAgent: userAgent) { result in"," switch result {"," case .success(let license):"," \/\/ Obtained license upon successful initialization"," print(\"SDK initialized with license: \\(license)\")",""," \/\/ Register the video player plugin"," let bitmovinPlugin = BitmovinPlayerPlugin()"," "," \/\/ Setting up player plugin"," var config = VideoPlayerConfig()"," config.playbackConfig.autoplayEnabled = true \/\/ Toggle autoplay"," config.playbackConfig.backgroundPlaybackEnabled = true \/\/ Toggle background playback"," bitmovinPlugin.setup(config: config)"," "," VideoPlayerPluginManager.shared.registerPlugin(bitmovinPlugin)",""," case .failure(let error):"," \/\/ Print an error message and set initializationError flag upon initialization failure"," print(\"SDK initialization failed with error: \\(error)\")",""," }"," }"," }","}"],"syntax":"swift","type":"file"},"PlayerTestPlaylistView.swift":{"type":"file","highlights":[],"identifier":"PlayerTestPlaylistView.swift","syntax":"swift","fileType":"swift","fileName":"PlayerTestPlaylistView.swift","content":["import SwiftUI","import PlaybackSDK","","struct PlayerTestPlaylistView: View {"," "," private let entryIDs = [\"ENTRY_ID1\", \"ENTRY_ID_2\", \"ENTRY_ID_3\"]"," private let entryIDToPlay = \"ENTRY_ID_2\" \/\/ Optional parameter"," private let authorizationToken = \"JWT_TOKEN\""," "," var body: some View {"," VStack {"," \/\/ Load playlist with the playback SDK"," PlaybackSDKManager.shared.loadPlaylist(entryIDs: entryIDs, entryIDToPlay: entryIDToPlay, authorizationToken: authorizationToken) { errors in"," handlePlaybackError(errors)"," }"," .onDisappear {"," \/\/ Remove the player here"," }"," Spacer()"," }"," .padding()"," }"," "," private func handlePlaybackErrors(_ errors: [PlaybackAPIError]) {"," "," for error in errors {"," switch error {"," case .apiError(let statusCode, let message, let reason):"," let message = \"\\(message) Status Code \\(statusCode), Reason: \\(reason)\""," print(message)"," default:"," print(\"Error code and errorrMessage not found: \\(error.localizedDescription)\")"," }"," }"," }"," ","}"]},"PlaybackDemoApp.swift":{"highlights":[],"identifier":"PlaybackDemoApp.swift","content":["import SwiftUI","import PlaybackSDK","","@main","struct PlaybackDemoApp: App {",""," let sdkManager = PlaybackSDKManager()"," let apiKey = \"API_KEY\""," var body: some Scene {"," WindowGroup {"," HomeView()"," }"," }",""," init() {"," \/\/ Initialize the Playback SDK with the provided API key and base URL"," PlaybackSDKManager.shared.initialize(apiKey: apiKey) { result in"," switch result {"," case .success(let license):"," \/\/ Obtained license upon successful initialization"," print(\"SDK initialized with license: \\(license)\")",""," \/\/ Register the video player plugin"," let bitmovinPlugin = BitmovinPlayerPlugin()"," "," \/\/ Setting up player plugin"," var config = VideoPlayerConfig()"," config.playbackConfig.autoplayEnabled = true \/\/ Toggle autoplay"," config.playbackConfig.backgroundPlaybackEnabled = true \/\/ Toggle background playback"," bitmovinPlugin.setup(config: config)"," "," VideoPlayerPluginManager.shared.registerPlugin(bitmovinPlugin)",""," case .failure(let error):"," \/\/ Print an error message and set initializationError flag upon initialization failure"," print(\"SDK initialization failed with error: \\(error)\")",""," }"," }"," }","}",""],"type":"file","fileName":"PlaybackDemoApp.swift","fileType":"swift","syntax":"swift"}}} \ No newline at end of file diff --git a/docs/data/tutorials/table-of-contents.json b/docs/data/tutorials/table-of-contents.json index 5803c35..59dd21b 100644 --- a/docs/data/tutorials/table-of-contents.json +++ b/docs/data/tutorials/table-of-contents.json @@ -1 +1 @@ -{"kind":"overview","identifier":{"url":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"minor":3,"major":0},"hierarchy":{"reference":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","paths":[]},"sections":[{"action":{"identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","isActive":true,"overridingTitleInlineContent":[{"type":"text","text":"Get started"}],"type":"reference","overridingTitle":"Get started"},"kind":"hero","title":"Introduction to PlaybackSDK","content":[{"inlineContent":[{"text":"Welcome to the PlaybackSDK tutorial! In this tutorial, you will learn how to integrate and use the PlaybackSDK in your iOS applications.","type":"text"}],"type":"paragraph"}]},{"content":[],"kind":"volume","name":null,"chapters":[{"image":"ios-marketing.png","name":"Getting Started","tutorials":["doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted"],"content":[{"inlineContent":[{"type":"text","text":"In this chapter, we’ll start by setting up the PlaybackSDK from the initialisation to load the Playback Player Plugin."}],"type":"paragraph"}]}],"image":null},{"kind":"resources","tiles":[{"title":"Documentation","identifier":"documentation","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Browse and search the PlaybackSDK documentation."}]},{"type":"unorderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"reference","identifier":"https:\/\/github.com\/StreamAMG\/playback-sdk-ios\/tree\/main","isActive":true}]}]},{"content":[{"inlineContent":[{"type":"reference","isActive":true,"identifier":"https:\/\/streamamg.stoplight.io"}],"type":"paragraph"}]}]}]}],"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Explore more resources for learning about PlaybackSDK."}]}]}],"metadata":{"estimatedTime":"30min","role":"overview","title":"Introduction to PlaybackSDK","categoryPathComponent":"Table-Of-Contents","category":"PlaybackSDK Tutorial"},"variants":[{"paths":["\/tutorials\/table-of-contents"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"ios-marketing.png":{"alt":"Getting Started with PlaybackSDK","variants":[{"url":"\/images\/ios-marketing.png","traits":["1x","light"]}],"type":"image","identifier":"ios-marketing.png"},"https://github.com/StreamAMG/playback-sdk-ios/tree/main":{"type":"link","titleInlineContent":[{"text":"GitHub Repository","type":"text"}],"url":"https:\/\/github.com\/StreamAMG\/playback-sdk-ios\/tree\/main","title":"GitHub Repository","identifier":"https:\/\/github.com\/StreamAMG\/playback-sdk-ios\/tree\/main"},"doc://PlaybackSDK/tutorials/PlaybackSDK/GetStarted":{"abstract":[{"text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic.","type":"text"}],"role":"project","kind":"project","identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","title":"Playback SDK Overview","estimatedTime":"30min","type":"topic","url":"\/tutorials\/playbacksdk\/getstarted"},"doc://PlaybackSDK/tutorials/Table-Of-Contents":{"abstract":[{"text":"Welcome to the PlaybackSDK tutorial! In this tutorial, you will learn how to integrate and use the PlaybackSDK in your iOS applications.","type":"text"}],"url":"\/tutorials\/table-of-contents","identifier":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","title":"Introduction to PlaybackSDK","role":"overview","kind":"overview","type":"topic"},"https://streamamg.stoplight.io":{"type":"link","identifier":"https:\/\/streamamg.stoplight.io","title":"Stoplight Playback API","url":"https:\/\/streamamg.stoplight.io","titleInlineContent":[{"text":"Stoplight Playback API","type":"text"}]}}} +{"metadata":{"title":"Introduction to PlaybackSDK","categoryPathComponent":"Table-Of-Contents","estimatedTime":"30min","category":"PlaybackSDK Tutorial","role":"overview"},"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"paths":["\/tutorials\/table-of-contents"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"reference":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","paths":[]},"sections":[{"content":[{"inlineContent":[{"text":"Welcome to the PlaybackSDK tutorial! In this tutorial, you will learn how to integrate and use the PlaybackSDK in your iOS applications.","type":"text"}],"type":"paragraph"}],"title":"Introduction to PlaybackSDK","kind":"hero","action":{"identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","type":"reference","overridingTitle":"Get started","isActive":true,"overridingTitleInlineContent":[{"text":"Get started","type":"text"}]}},{"name":null,"kind":"volume","content":[],"chapters":[{"image":"ios-marketing.png","tutorials":["doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted"],"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"In this chapter, we’ll start by setting up the PlaybackSDK from the initialisation to load the Playback Player Plugin."}]}],"name":"Getting Started"}],"image":null},{"tiles":[{"identifier":"documentation","title":"Documentation","content":[{"inlineContent":[{"type":"text","text":"Browse and search the PlaybackSDK documentation."}],"type":"paragraph"},{"items":[{"content":[{"type":"paragraph","inlineContent":[{"identifier":"https:\/\/github.com\/StreamAMG\/playback-sdk-ios\/tree\/main","type":"reference","isActive":true}]}]},{"content":[{"type":"paragraph","inlineContent":[{"identifier":"https:\/\/streamamg.stoplight.io","type":"reference","isActive":true}]}]}],"type":"unorderedList"}]}],"kind":"resources","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Explore more resources for learning about PlaybackSDK."}]}]}],"kind":"overview","identifier":{"url":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","interfaceLanguage":"swift"},"references":{"ios-marketing.png":{"type":"image","identifier":"ios-marketing.png","alt":"Getting Started with PlaybackSDK","variants":[{"traits":["1x","light"],"url":"\/images\/PlaybackSDK\/ios-marketing.png"}]},"https://github.com/StreamAMG/playback-sdk-ios/tree/main":{"type":"link","titleInlineContent":[{"type":"text","text":"GitHub Repository"}],"identifier":"https:\/\/github.com\/StreamAMG\/playback-sdk-ios\/tree\/main","url":"https:\/\/github.com\/StreamAMG\/playback-sdk-ios\/tree\/main","title":"GitHub Repository"},"doc://PlaybackSDK/tutorials/PlaybackSDK/GetStarted":{"type":"topic","url":"\/tutorials\/playbacksdk\/getstarted","estimatedTime":"30min","title":"Playback SDK Overview","kind":"project","identifier":"doc:\/\/PlaybackSDK\/tutorials\/PlaybackSDK\/GetStarted","abstract":[{"type":"text","text":"Playback SDK simplifies integrating video playback functionalities into OTT applications. It provides a unified interface for interacting with video APIs and managing playback logic."}],"role":"project"},"doc://PlaybackSDK/tutorials/Table-Of-Contents":{"abstract":[{"type":"text","text":"Welcome to the PlaybackSDK tutorial! In this tutorial, you will learn how to integrate and use the PlaybackSDK in your iOS applications."}],"url":"\/tutorials\/table-of-contents","identifier":"doc:\/\/PlaybackSDK\/tutorials\/Table-Of-Contents","type":"topic","title":"Introduction to PlaybackSDK","role":"overview","kind":"overview"},"https://streamamg.stoplight.io":{"type":"link","titleInlineContent":[{"type":"text","text":"Stoplight Playback API"}],"identifier":"https:\/\/streamamg.stoplight.io","url":"https:\/\/streamamg.stoplight.io","title":"Stoplight Playback API"}}} \ No newline at end of file diff --git a/docs/documentation/playbacksdk/index.html b/docs/documentation/playbacksdk/index.html index c25d820..ae6e4e5 100644 --- a/docs/documentation/playbacksdk/index.html +++ b/docs/documentation/playbacksdk/index.html @@ -1 +1 @@ -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/docs/documentation/playbacksdk/playbackconfig/autoplayenabled/index.html b/docs/documentation/playbacksdk/playbackconfig/autoplayenabled/index.html index c25d820..ae6e4e5 100644 --- a/docs/documentation/playbacksdk/playbackconfig/autoplayenabled/index.html +++ b/docs/documentation/playbacksdk/playbackconfig/autoplayenabled/index.html @@ -1 +1 @@ -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/docs/documentation/playbacksdk/playbackconfig/backgroundplaybackenabled/index.html b/docs/documentation/playbacksdk/playbackconfig/backgroundplaybackenabled/index.html index c25d820..ae6e4e5 100644 --- a/docs/documentation/playbacksdk/playbackconfig/backgroundplaybackenabled/index.html +++ b/docs/documentation/playbacksdk/playbackconfig/backgroundplaybackenabled/index.html @@ -1 +1 @@ -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/docs/documentation/playbacksdk/playbackconfig/index.html b/docs/documentation/playbacksdk/playbackconfig/index.html index c25d820..ae6e4e5 100644 --- a/docs/documentation/playbacksdk/playbackconfig/index.html +++ b/docs/documentation/playbacksdk/playbackconfig/index.html @@ -1 +1 @@ -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/docs/documentation/playbacksdk/videoplayerconfig/index.html b/docs/documentation/playbacksdk/videoplayerconfig/index.html index c25d820..ae6e4e5 100644 --- a/docs/documentation/playbacksdk/videoplayerconfig/index.html +++ b/docs/documentation/playbacksdk/videoplayerconfig/index.html @@ -1 +1 @@ -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/docs/documentation/playbacksdk/videoplayerconfig/init()/index.html b/docs/documentation/playbacksdk/videoplayerconfig/init()/index.html index c25d820..ae6e4e5 100644 --- a/docs/documentation/playbacksdk/videoplayerconfig/init()/index.html +++ b/docs/documentation/playbacksdk/videoplayerconfig/init()/index.html @@ -1 +1 @@ -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/docs/documentation/playbacksdk/videoplayerconfig/playbackconfig/index.html b/docs/documentation/playbacksdk/videoplayerconfig/playbackconfig/index.html index c25d820..ae6e4e5 100644 --- a/docs/documentation/playbacksdk/videoplayerconfig/playbackconfig/index.html +++ b/docs/documentation/playbacksdk/videoplayerconfig/playbackconfig/index.html @@ -1 +1 @@ -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/docs/images/ios-marketing.png b/docs/images/PlaybackSDK/ios-marketing.png similarity index 100% rename from docs/images/ios-marketing.png rename to docs/images/PlaybackSDK/ios-marketing.png diff --git a/docs/index.html b/docs/index.html index c25d820..ae6e4e5 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/docs/index/index.json b/docs/index/index.json index 738ae7c..6a0f761 100644 --- a/docs/index/index.json +++ b/docs/index/index.json @@ -1 +1 @@ -{"interfaceLanguages":{"swift":[{"children":[{"title":"Getting Started","type":"groupMarker"},{"path":"\/tutorials\/playbacksdk\/getstarted","title":"Playback SDK Overview","type":"project"}],"path":"\/tutorials\/table-of-contents","title":"Introduction to PlaybackSDK","type":"overview"},{"children":[{"title":"Structures","type":"groupMarker"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/playbacksdk\/playbackconfig\/autoplayenabled","title":"var autoplayEnabled: Bool","type":"property"},{"path":"\/documentation\/playbacksdk\/playbackconfig\/backgroundplaybackenabled","title":"var backgroundPlaybackEnabled: Bool","type":"property"}],"path":"\/documentation\/playbacksdk\/playbackconfig","title":"PlaybackConfig","type":"struct"},{"children":[{"title":"Initializers","type":"groupMarker"},{"path":"\/documentation\/playbacksdk\/videoplayerconfig\/init()","title":"init()","type":"init"},{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/playbacksdk\/videoplayerconfig\/playbackconfig","title":"var playbackConfig: PlaybackConfig","type":"property"}],"path":"\/documentation\/playbacksdk\/videoplayerconfig","title":"VideoPlayerConfig","type":"struct"}],"path":"\/documentation\/playbacksdk","title":"PlaybackSDK","type":"module"}]},"schemaVersion":{"major":0,"minor":1,"patch":1}} \ No newline at end of file +{"includedArchiveIdentifiers":["PlaybackSDK"],"interfaceLanguages":{"swift":[{"children":[{"title":"Getting Started","type":"groupMarker"},{"path":"\/tutorials\/playbacksdk\/getstarted","title":"Playback SDK Overview","type":"project"}],"path":"\/tutorials\/table-of-contents","title":"Introduction to PlaybackSDK","type":"overview"},{"children":[{"title":"Structures","type":"groupMarker"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/playbacksdk\/playbackconfig\/autoplayenabled","title":"var autoplayEnabled: Bool","type":"property"},{"path":"\/documentation\/playbacksdk\/playbackconfig\/backgroundplaybackenabled","title":"var backgroundPlaybackEnabled: Bool","type":"property"}],"path":"\/documentation\/playbacksdk\/playbackconfig","title":"PlaybackConfig","type":"struct"},{"children":[{"title":"Initializers","type":"groupMarker"},{"path":"\/documentation\/playbacksdk\/videoplayerconfig\/init()","title":"init()","type":"init"},{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/playbacksdk\/videoplayerconfig\/playbackconfig","title":"var playbackConfig: PlaybackConfig","type":"property"}],"path":"\/documentation\/playbacksdk\/videoplayerconfig","title":"VideoPlayerConfig","type":"struct"}],"path":"\/documentation\/playbacksdk","title":"PlaybackSDK","type":"module"}]},"schemaVersion":{"major":0,"minor":1,"patch":2}} \ No newline at end of file diff --git a/docs/js/104.fe5974d0.js b/docs/js/104.fe5974d0.js new file mode 100644 index 0000000..1413287 --- /dev/null +++ b/docs/js/104.fe5974d0.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +"use strict";(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[104],{6137:function(e,t,n){n.d(t,{Z:function(){return d}});var r=function(){var e=this,t=e._self._c;return t("span",{staticClass:"badge",class:{[`badge-${e.variant}`]:e.variant},attrs:{role:"presentation"}},[e._t("default",(function(){return[e._v(e._s(e.text?e.$t(e.text):""))]}))],2)},a=[];const i={beta:"aside-kind.beta",deprecated:"aside-kind.deprecated"};var s={name:"Badge",props:{variant:{type:String,default:()=>""}},computed:{text:({variant:e})=>i[e]}},o=s,l=n(1001),c=(0,l.Z)(o,r,a,!1,null,"04624022",null),d=c.exports},8846:function(e,t,n){n.d(t,{Z:function(){return d}});var r=function(){var e=this,t=e._self._c;return t("BaseContentNode",e._b({},"BaseContentNode",e.$props,!1))},a=[],i=n(9519),s={name:"ContentNode",components:{BaseContentNode:i["default"]},props:i["default"].props,methods:i["default"].methods,BlockType:i["default"].BlockType,InlineType:i["default"].InlineType},o=s,l=n(1001),c=(0,l.Z)(o,r,a,!1,null,"3a32ffd0",null),d=c.exports},7120:function(e,t,n){n.d(t,{Z:function(){return c}});var r=function(e,t){return e("p",{staticClass:"requirement-metadata",class:t.data.staticClass},[e("strong",[t._v(t._s(t.parent.$t("required")))]),t.props.defaultImplementationsCount?[t._v(" "+t._s(t.parent.$tc("metadata.default-implementation",t.props.defaultImplementationsCount))+" ")]:t._e()],2)},a=[],i={name:"RequirementMetadata",props:{defaultImplementationsCount:{type:Number,default:0}}},s=i,o=n(1001),l=(0,o.Z)(s,r,a,!0,null,null,null),c=l.exports},7913:function(e,t,n){n.d(t,{default:function(){return z}});var r,a,i,s,o,l,c=n(352),d={name:"ChangedToken",render(e){const{kind:t,tokens:n}=this;return e("span",{class:[`token-${t}`,"token-changed"]},n.map((t=>e(z,{props:t}))))},props:{kind:{type:String,required:!0},tokens:{type:Array,required:!0}}},p=d,u=n(1001),f=(0,u.Z)(p,r,a,!1,null,null,null),m=f.exports,h=n(4260),g=n(5953),k={name:"LinkableToken",mixins:[g.Z],render(e){const t=this.references[this.identifier];return t&&t.url?e(h.Z,{props:{url:t.url,kind:t.kind,role:t.role}},this.$slots.default):e("span",{},this.$slots.default)},props:{identifier:{type:String,required:!0,default:()=>""}}},y=k,v=(0,u.Z)(y,i,s,!1,null,null,null),b=v.exports,_=function(){var e=this,t=e._self._c;return t("span",[e._v(e._s(e.text))])},C=[],x={name:"RawText",props:{text:{type:String,required:!0}}},Z=x,B=(0,u.Z)(Z,_,C,!1,null,null,null),T=B.exports,S={name:"SyntaxToken",render(e){return e("span",{class:`token-${this.kind}`},this.text)},props:{kind:{type:String,required:!0},text:{type:String,required:!0}}},I=S,$=(0,u.Z)(I,o,l,!1,null,null,null),q=$.exports;const w={attribute:"attribute",externalParam:"externalParam",genericParameter:"genericParameter",identifier:"identifier",internalParam:"internalParam",keyword:"keyword",label:"label",number:"number",string:"string",text:"text",typeIdentifier:"typeIdentifier",added:"added",removed:"removed"};var L,A,P={name:"DeclarationToken",render:function(e){const{kind:t,text:n,tokens:r}=this;switch(t){case w.text:{const t={text:n};return e(T,{props:t})}case w.typeIdentifier:{const t={identifier:this.identifier};return e(b,{class:"type-identifier-link",props:t},[e(c.Z,n)])}case w.attribute:{const{identifier:r}=this;return r?e(b,{class:"attribute-link",props:{identifier:r}},[e(c.Z,n)]):e(q,{props:{kind:t,text:n}})}case w.added:case w.removed:return e(m,{props:{tokens:r,kind:t}});default:{const r={kind:t,text:n};return e(q,{props:r})}}},constants:{TokenKind:w},props:{kind:{type:String,required:!0},identifier:{type:String,required:!1},text:{type:String,required:!1},tokens:{type:Array,required:!1,default:()=>[]}}},F=P,O=(0,u.Z)(F,L,A,!1,null,"295ad0ff",null),z=O.exports},2970:function(e,t,n){n.d(t,{Z:function(){return $}});var r=function(){var e=this,t=e._self._c;return e.icon?t("div",{staticClass:"topic-icon-wrapper"},[t(e.icon,{tag:"component",staticClass:"topic-icon"})],1):e._e()},a=[],i=n(5692),s=n(7775),o=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"api-reference-icon",attrs:{viewBox:"0 0 14 14",themeId:"api-reference"}},[t("title",[e._v(e._s(e.$t("api-reference")))]),t("path",{attrs:{d:"m1 1v12h12v-12zm11 11h-10v-10h10z"}}),t("path",{attrs:{d:"m3 4h8v1h-8zm0 2.5h8v1h-8zm0 2.5h8v1h-8z"}}),t("path",{attrs:{d:"m3 4h8v1h-8z"}}),t("path",{attrs:{d:"m3 6.5h8v1h-8z"}}),t("path",{attrs:{d:"m3 9h8v1h-8z"}})])},l=[],c=n(9742),d={name:"APIReferenceIcon",components:{SVGIcon:c.Z}},p=d,u=n(1001),f=(0,u.Z)(p,o,l,!1,null,null,null),m=f.exports,h=function(){var e=this,t=e._self._c;return t("SVGIcon",{attrs:{viewBox:"0 0 14 14",themeId:"endpoint"}},[t("title",[e._v(e._s(e.$t("icons.web-service-endpoint")))]),t("path",{attrs:{d:"M4.052 8.737h-1.242l-1.878 5.263h1.15l0.364-1.081h1.939l0.339 1.081h1.193zM2.746 12.012l0.678-2.071 0.653 2.071z"}}),t("path",{attrs:{d:"M11.969 8.737h1.093v5.263h-1.093v-5.263z"}}),t("path",{attrs:{d:"M9.198 8.737h-2.295v5.263h1.095v-1.892h1.12c0.040 0.003 0.087 0.004 0.134 0.004 0.455 0 0.875-0.146 1.217-0.394l-0.006 0.004c0.296-0.293 0.48-0.699 0.48-1.148 0-0.060-0.003-0.118-0.010-0.176l0.001 0.007c0.003-0.039 0.005-0.085 0.005-0.131 0-0.442-0.183-0.842-0.476-1.128l-0-0c-0.317-0.256-0.724-0.41-1.168-0.41-0.034 0-0.069 0.001-0.102 0.003l0.005-0zM9.628 11.014c-0.15 0.118-0.341 0.188-0.548 0.188-0.020 0-0.040-0.001-0.060-0.002l0.003 0h-1.026v-1.549h1.026c0.017-0.001 0.037-0.002 0.058-0.002 0.206 0 0.396 0.066 0.551 0.178l-0.003-0.002c0.135 0.13 0.219 0.313 0.219 0.515 0 0.025-0.001 0.050-0.004 0.074l0-0.003c0.002 0.020 0.003 0.044 0.003 0.068 0 0.208-0.083 0.396-0.219 0.534l0-0z"}}),t("path",{attrs:{d:"M13.529 4.981c0-1.375-1.114-2.489-2.489-2.49h-0l-0.134 0.005c-0.526-1.466-1.903-2.496-3.522-2.496-0.892 0-1.711 0.313-2.353 0.835l0.007-0.005c-0.312-0.243-0.709-0.389-1.14-0.389-1.030 0-1.865 0.834-1.866 1.864v0c0 0.001 0 0.003 0 0.004 0 0.123 0.012 0.242 0.036 0.358l-0.002-0.012c-0.94 0.37-1.593 1.27-1.593 2.323 0 1.372 1.11 2.485 2.482 2.49h8.243c1.306-0.084 2.333-1.164 2.333-2.484 0-0.001 0-0.002 0-0.003v0zM11.139 6.535h-8.319c-0.799-0.072-1.421-0.739-1.421-1.551 0-0.659 0.41-1.223 0.988-1.45l0.011-0.004 0.734-0.28-0.148-0.776-0.012-0.082v-0.088c0-0 0-0.001 0-0.001 0-0.515 0.418-0.933 0.933-0.933 0.216 0 0.416 0.074 0.574 0.197l-0.002-0.002 0.584 0.453 0.575-0.467 0.169-0.127c0.442-0.306 0.991-0.489 1.581-0.489 1.211 0 2.243 0.769 2.633 1.846l0.006 0.019 0.226 0.642 0.814-0.023 0.131 0.006c0.805 0.067 1.432 0.736 1.432 1.552 0 0.836-0.659 1.518-1.486 1.556l-0.003 0z"}})])},g=[],k={name:"EndpointIcon",components:{SVGIcon:c.Z}},y=k,v=(0,u.Z)(y,h,g,!1,null,null,null),b=v.exports,_=n(8633),C=n(9001),x=n(8638),Z=n(7192);const B={[Z.L.article]:i.Z,[Z.L.collection]:C.Z,[Z.L.collectionGroup]:m,[Z.L.learn]:_.Z,[Z.L.overview]:_.Z,[Z.L.project]:x.Z,[Z.L.tutorial]:x.Z,[Z.L.resources]:_.Z,[Z.L.sampleCode]:s.Z,[Z.L.restRequestSymbol]:b};var T={components:{SVGIcon:c.Z},props:{role:{type:String,required:!0}},computed:{icon:({role:e})=>B[e]}},S=T,I=(0,u.Z)(S,r,a,!1,null,"55f9d05d",null),$=I.exports},8104:function(e,t,n){n.r(t),n.d(t,{default:function(){return q}});var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"link-block",class:e.linkBlockClasses},[t(e.linkComponent,e._b({ref:"apiChangesDiff",tag:"component",staticClass:"link",class:e.linkClasses},"component",e.linkProps,!1),[e.topic.role&&!e.change?t("TopicLinkBlockIcon",{attrs:{role:e.topic.role}}):e._e(),e.topic.fragments?t("DecoratedTopicTitle",{attrs:{tokens:e.topic.fragments}}):t("WordBreak",{attrs:{tag:e.titleTag}},[e._v(e._s(e.topic.title))]),e.change?t("span",{staticClass:"visuallyhidden"},[e._v("- "+e._s(e.$t(e.changeName)))]):e._e()],1),e.hasAbstractElements?t("div",{staticClass:"abstract"},[e.topic.abstract?t("ContentNode",{attrs:{content:e.topic.abstract}}):e._e(),e.topic.ideTitle?t("div",{staticClass:"topic-keyinfo"},[e.topic.titleStyle===e.titleStyles.title?[t("strong",[e._v("Key:")]),e._v(" "+e._s(e.topic.name)+" ")]:e.topic.titleStyle===e.titleStyles.symbol?[t("strong",[e._v("Name:")]),e._v(" "+e._s(e.topic.ideTitle)+" ")]:e._e()],2):e._e(),e.topic.required||e.topic.defaultImplementations?t("RequirementMetadata",{staticClass:"topic-required",attrs:{defaultImplementationsCount:e.topic.defaultImplementations}}):e._e()],1):e._e(),e.showDeprecatedBadge?t("Badge",{attrs:{variant:"deprecated"}}):e.showBetaBadge?t("Badge",{attrs:{variant:"beta"}}):e._e(),e._l(e.tags,(function(n){return t("Badge",{key:`${n.type}-${n.text}`,attrs:{variant:n.type}},[e._v(" "+e._s(n.text)+" ")])}))],2)},a=[],i=n(7192),s=n(2449),o=n(6137),l=n(352),c=n(8846),d=n(2970),p=function(){var e=this,t=e._self._c;return t("code",{staticClass:"decorated-title"},[e._l(e.tokens,(function(n,r){return[t(e.componentFor(n),{key:r,tag:"component",class:[e.classFor(n),e.emptyTokenClass(n)]},[e._v(e._s(n.text))]),t("wbr",{key:`wbr-${r}`})]}))],2)},u=[],f=n(7913);const{TokenKind:m}=f["default"].constants,h={decorator:"decorator",identifier:"identifier",label:"label"};var g={name:"DecoratedTopicTitle",components:{WordBreak:l.Z},props:{tokens:{type:Array,required:!0,default:()=>[]}},constants:{TokenKind:m},methods:{emptyTokenClass:({text:e})=>({"empty-token":" "===e}),classFor({kind:e}){switch(e){case m.externalParam:case m.identifier:return h.identifier;case m.label:return h.label;default:return h.decorator}},componentFor(e){return/^\s+$/.test(e.text)?"span":l.Z}}},k=g,y=n(1001),v=(0,y.Z)(k,p,u,!1,null,"17c84f82",null),b=v.exports,_=n(7120),C=n(1842),x=n(5953);const Z={article:"article",symbol:"symbol"},B={title:"title",symbol:"symbol"},T={link:"link"};var S={name:"TopicsLinkBlock",components:{Badge:o.Z,WordBreak:l.Z,ContentNode:c.Z,TopicLinkBlockIcon:d.Z,DecoratedTopicTitle:b,RequirementMetadata:_.Z},mixins:[C.JY,C.PH,x.Z],constants:{ReferenceType:T,TopicKind:Z,TitleStyles:B},props:{isSymbolBeta:Boolean,isSymbolDeprecated:Boolean,topic:{type:Object,required:!0,validator:e=>(!("abstract"in e)||Array.isArray(e.abstract))&&"string"===typeof e.identifier&&(e.type===T.link&&!e.kind||"string"===typeof e.kind)&&(e.type===T.link&&!e.role||"string"===typeof e.role)&&"string"===typeof e.title&&"string"===typeof e.url&&(!("defaultImplementations"in e)||"number"===typeof e.defaultImplementations)&&(!("required"in e)||"boolean"===typeof e.required)}},data(){return{state:this.store.state}},computed:{linkComponent:({topic:e})=>e.type===T.link?"a":"router-link",linkProps({topic:e}){const t=(0,s.Q2)(e.url,this.$route.query);return e.type===T.link?{href:t}:{to:t}},linkBlockClasses:({changesClasses:e,hasAbstractElements:t,displaysMultipleLinesAfterAPIChanges:n,multipleLinesClass:r})=>({"has-inline-element":!t,[r]:n,...!t&&e}),linkClasses:({changesClasses:e,deprecated:t,hasAbstractElements:n})=>({deprecated:t,"has-adjacent-elements":n,...n&&e}),changesClasses:({getChangesClasses:e,change:t})=>e(t),titleTag({topic:e}){if(e.titleStyle===B.title)return e.ideTitle?"span":"code";if(e.role&&(e.role===i.L.collection||e.role===i.L.dictionarySymbol))return"span";switch(e.kind){case Z.symbol:return"code";default:return"span"}},titleStyles:()=>B,deprecated:({showDeprecatedBadge:e,topic:t})=>e||t.deprecated,showBetaBadge:({topic:e,isSymbolBeta:t})=>Boolean(!t&&e.beta),showDeprecatedBadge:({topic:e,isSymbolDeprecated:t})=>Boolean(!t&&e.deprecated),change({topic:{identifier:e},state:{apiChanges:t}}){return this.changeFor(e,t)},changeName:({change:e,getChangeName:t})=>t(e),hasAbstractElements:({topic:{abstract:e,required:t,defaultImplementations:n}}={})=>e&&e.length>0||t||n,tags:({topic:e})=>(e.tags||[]).slice(0,1),iconOverride:({topic:{images:e=[]}})=>{const t=e.find((({type:e})=>"icon"===e));return t?t.identifier:null}}},I=S,$=(0,y.Z)(I,r,a,!1,null,"0d9c6bcc",null),q=$.exports},4733:function(e,t,n){n.d(t,{_:function(){return r}});const r="displays-multiple-lines"},1842:function(e,t,n){n.d(t,{JY:function(){return c},PH:function(){return l}});var r=n(9426),a=n(4733),i=n(3112);const s="latest_",o={xcode:{value:"xcode",label:"Xcode"},other:{value:"other",label:"Other"}},l={constants:{multipleLinesClass:a._},data(){return{multipleLinesClass:a._}},computed:{displaysMultipleLinesAfterAPIChanges:({change:e,changeType:t,$refs:n})=>!(!e&&!t)&&(0,i.s)(n.apiChangesDiff)}},c={methods:{toVersionRange({platform:e,versions:t}){return`${e} ${t[0]} – ${e} ${t[1]}`},toOptionValue:e=>`${s}${e}`,toScope:e=>e.slice(s.length,e.length),getOptionsForDiffAvailability(e={}){return this.getOptionsForDiffAvailabilities([e])},getOptionsForDiffAvailabilities(e=[]){const t=e.reduce(((e,t={})=>Object.keys(t).reduce(((e,n)=>({...e,[n]:(e[n]||[]).concat(t[n])})),e)),{}),n=Object.keys(t),r=n.reduce(((e,n)=>{const r=t[n];return{...e,[n]:r.find((e=>e.platform===o.xcode.label))||r[0]}}),{}),a=e=>({label:this.toVersionRange(r[e]),value:this.toOptionValue(e),platform:r[e].platform}),{sdk:i,beta:s,minor:l,major:c,...d}=r,p=[].concat(i?a("sdk"):[]).concat(s?a("beta"):[]).concat(l?a("minor"):[]).concat(c?a("major"):[]).concat(Object.keys(d).map(a));return this.splitOptionsPerPlatform(p)},changesClassesFor(e,t){const n=this.changeFor(e,t);return this.getChangesClasses(n)},getChangesClasses:e=>({[`changed changed-${e}`]:!!e}),changeFor(e,t){const{change:n}=(t||{})[e]||{};return n},splitOptionsPerPlatform(e){return e.reduce(((e,t)=>{const n=t.platform===o.xcode.label?o.xcode.value:o.other.value;return e[n].push(t),e}),{[o.xcode.value]:[],[o.other.value]:[]})},getChangeName(e){return r.Ag[e]}},computed:{availableOptions({diffAvailability:e={},toOptionValue:t}){return new Set(Object.keys(e).map(t))}}}},3112:function(e,t,n){function r(e){if(!e)return!1;const t=window.getComputedStyle(e.$el||e),n=(e.$el||e).offsetHeight,r=t.lineHeight?parseFloat(t.lineHeight):1,a=t.paddingTop?parseFloat(t.paddingTop):0,i=t.paddingBottom?parseFloat(t.paddingBottom):0,s=t.borderTopWidth?parseFloat(t.borderTopWidth):0,o=t.borderBottomWidth?parseFloat(t.borderBottomWidth):0,l=n-(a+i+s+o),c=l/r;return c>=2}n.d(t,{s:function(){return r}})}}]); \ No newline at end of file diff --git a/docs/js/37.3cabdf6d.js b/docs/js/37.3cabdf6d.js deleted file mode 100644 index 39c790d..0000000 --- a/docs/js/37.3cabdf6d.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -"use strict";(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[37],{7432:function(e,t,n){n.d(t,{Z:function(){return d}});var r=function(){var e=this,t=e._self._c;return t("span",{staticClass:"badge",class:{[`badge-${e.variant}`]:e.variant},attrs:{role:"presentation"}},[e._t("default",(function(){return[e._v(e._s(e.text?e.$t(e.text):""))]}))],2)},a=[];const i={beta:"aside-kind.beta",deprecated:"aside-kind.deprecated"};var o={name:"Badge",props:{variant:{type:String,default:()=>""}},computed:{text:({variant:e})=>i[e]}},s=o,l=n(1001),c=(0,l.Z)(s,r,a,!1,null,"8d6893ae",null),d=c.exports},9595:function(e,t,n){n.d(t,{Z:function(){return d}});var r=function(){var e=this,t=e._self._c;return t("ContentNode",{staticClass:"conditional-constraints",attrs:{content:e.content}})},a=[],i=n(8846),o={name:"ConditionalConstraints",components:{ContentNode:i.Z},props:{constraints:i.Z.props.content,prefix:i.Z.props.content},computed:{content:({constraints:e,prefix:t,space:n})=>t.concat(n).concat(e),space:()=>({type:i.Z.InlineType.text,text:" "})}},s=o,l=n(1001),c=(0,l.Z)(s,r,a,!1,null,"4c6f3ed1",null),d=c.exports},8846:function(e,t,n){n.d(t,{Z:function(){return d}});var r=function(){var e=this,t=e._self._c;return t("BaseContentNode",e._b({},"BaseContentNode",e.$props,!1))},a=[],i=n(8843),o={name:"ContentNode",components:{BaseContentNode:i["default"]},props:i["default"].props,methods:i["default"].methods,BlockType:i["default"].BlockType,InlineType:i["default"].InlineType},s=o,l=n(1001),c=(0,l.Z)(s,r,a,!1,null,"3a32ffd0",null),d=c.exports},7120:function(e,t,n){n.d(t,{Z:function(){return c}});var r=function(e,t){return e("p",{staticClass:"requirement-metadata",class:t.data.staticClass},[e("strong",[t._v(t._s(t.parent.$t("required")))]),t.props.defaultImplementationsCount?[t._v(" "+t._s(t.parent.$tc("metadata.default-implementation",t.props.defaultImplementationsCount))+" ")]:t._e()],2)},a=[],i={name:"RequirementMetadata",props:{defaultImplementationsCount:{type:Number,default:0}}},o=i,s=n(1001),l=(0,s.Z)(o,r,a,!0,null,null,null),c=l.exports},6213:function(e,t,n){n.d(t,{default:function(){return z}});var r,a,i,o,s,l,c,d,p=n(352),u={name:"ChangedToken",render(e){const{kind:t,tokens:n}=this;return e("span",{class:[`token-${t}`,"token-changed"]},n.map((t=>e(z,{props:t}))))},props:{kind:{type:String,required:!0},tokens:{type:Array,required:!0}}},f=u,m=n(1001),h=(0,m.Z)(f,r,a,!1,null,null,null),g=h.exports,y=n(2387),v=n(5953),k={name:"LinkableToken",mixins:[v.Z],render(e){const t=this.references[this.identifier];return t&&t.url?e(y.Z,{props:{url:t.url,kind:t.kind,role:t.role}},this.$slots.default):e("span",{},this.$slots.default)},props:{identifier:{type:String,required:!0,default:()=>""}}},b=k,C=(0,m.Z)(b,i,o,!1,null,null,null),_=C.exports,x={name:"RawText",render(e){const{_v:t=(t=>e("span",t)),text:n}=this;return t(n)},props:{text:{type:String,required:!0}}},Z=x,B=(0,m.Z)(Z,s,l,!1,null,null,null),T=B.exports,S={name:"SyntaxToken",render(e){return e("span",{class:`token-${this.kind}`},this.text)},props:{kind:{type:String,required:!0},text:{type:String,required:!0}}},I=S,O=(0,m.Z)(I,c,d,!1,null,null,null),$=O.exports;const q={attribute:"attribute",externalParam:"externalParam",genericParameter:"genericParameter",identifier:"identifier",internalParam:"internalParam",keyword:"keyword",label:"label",number:"number",string:"string",text:"text",typeIdentifier:"typeIdentifier",added:"added",removed:"removed"};var w,A,L={name:"DeclarationToken",render(e){const{kind:t,text:n,tokens:r}=this;switch(t){case q.text:{const t={text:n};return e(T,{props:t})}case q.typeIdentifier:{const t={identifier:this.identifier};return e(_,{class:"type-identifier-link",props:t},[e(p.Z,n)])}case q.attribute:{const{identifier:r}=this;return r?e(_,{class:"attribute-link",props:{identifier:r}},[e(p.Z,n)]):e($,{props:{kind:t,text:n}})}case q.added:case q.removed:return e(g,{props:{tokens:r,kind:t}});default:{const r={kind:t,text:n};return e($,{props:r})}}},constants:{TokenKind:q},props:{kind:{type:String,required:!0},identifier:{type:String,required:!1},text:{type:String,required:!1},tokens:{type:Array,required:!1,default:()=>[]}}},P=L,F=(0,m.Z)(P,w,A,!1,null,"3fd63d6c",null),z=F.exports},9037:function(e,t,n){n.r(t),n.d(t,{default:function(){return ne}});var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"link-block",class:e.linkBlockClasses},[t(e.linkComponent,e._b({ref:"apiChangesDiff",tag:"component",staticClass:"link",class:e.linkClasses},"component",e.linkProps,!1),[e.topic.role&&!e.change?t("TopicLinkBlockIcon",{attrs:{role:e.topic.role,imageOverride:e.references[e.iconOverride]}}):e._e(),e.topic.fragments?t("DecoratedTopicTitle",{attrs:{tokens:e.topic.fragments}}):t("WordBreak",{attrs:{tag:e.titleTag}},[e._v(e._s(e.topic.title))]),e.change?t("span",{staticClass:"visuallyhidden"},[e._v("- "+e._s(e.$t(e.changeName)))]):e._e()],1),e.hasAbstractElements?t("div",{staticClass:"abstract"},[e.topic.abstract?t("ContentNode",{attrs:{content:e.topic.abstract}}):e._e(),e.topic.ideTitle?t("div",{staticClass:"topic-keyinfo"},[e.topic.titleStyle===e.titleStyles.title?[t("strong",[e._v("Key:")]),e._v(" "+e._s(e.topic.name)+" ")]:e.topic.titleStyle===e.titleStyles.symbol?[t("strong",[e._v("Name:")]),e._v(" "+e._s(e.topic.ideTitle)+" ")]:e._e()],2):e._e(),e.topic.required||e.topic.defaultImplementations?t("RequirementMetadata",{staticClass:"topic-required",attrs:{defaultImplementationsCount:e.topic.defaultImplementations}}):e._e(),e.topic.conformance?t("ConditionalConstraints",{attrs:{constraints:e.topic.conformance.constraints,prefix:e.topic.conformance.availabilityPrefix}}):e._e()],1):e._e(),e.showDeprecatedBadge?t("Badge",{attrs:{variant:"deprecated"}}):e.showBetaBadge?t("Badge",{attrs:{variant:"beta"}}):e._e(),e._l(e.tags,(function(n){return t("Badge",{key:`${n.type}-${n.text}`,attrs:{variant:n.type}},[e._v(" "+e._s(n.text)+" ")])}))],2)},a=[],i=n(7192),o=n(2449),s=n(7432),l=n(352),c=n(8846),d=function(){var e=this,t=e._self._c;return e.imageOverride||e.icon?t("div",{staticClass:"topic-icon-wrapper"},[e.imageOverride?t("OverridableAsset",{staticClass:"topic-icon",attrs:{imageOverride:e.imageOverride}}):e.icon?t(e.icon,{tag:"component",staticClass:"topic-icon"}):e._e()],1):e._e()},p=[],u=n(5692),f=n(7775),m=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"api-reference-icon",attrs:{viewBox:"0 0 14 14",themeId:"api-reference"}},[t("title",[e._v(e._s(e.$t("api-reference")))]),t("path",{attrs:{d:"m1 1v12h12v-12zm11 11h-10v-10h10z"}}),t("path",{attrs:{d:"m3 4h8v1h-8zm0 2.5h8v1h-8zm0 2.5h8v1h-8z"}}),t("path",{attrs:{d:"m3 4h8v1h-8z"}}),t("path",{attrs:{d:"m3 6.5h8v1h-8z"}}),t("path",{attrs:{d:"m3 9h8v1h-8z"}})])},h=[],g=n(3453),y={name:"APIReferenceIcon",components:{SVGIcon:g.Z}},v=y,k=n(1001),b=(0,k.Z)(v,m,h,!1,null,null,null),C=b.exports,_=function(){var e=this,t=e._self._c;return t("SVGIcon",{attrs:{viewBox:"0 0 14 14",themeId:"endpoint"}},[t("title",[e._v(e._s(e.$t("icons.web-service-endpoint")))]),t("path",{attrs:{d:"M4.052 8.737h-1.242l-1.878 5.263h1.15l0.364-1.081h1.939l0.339 1.081h1.193zM2.746 12.012l0.678-2.071 0.653 2.071z"}}),t("path",{attrs:{d:"M11.969 8.737h1.093v5.263h-1.093v-5.263z"}}),t("path",{attrs:{d:"M9.198 8.737h-2.295v5.263h1.095v-1.892h1.12c0.040 0.003 0.087 0.004 0.134 0.004 0.455 0 0.875-0.146 1.217-0.394l-0.006 0.004c0.296-0.293 0.48-0.699 0.48-1.148 0-0.060-0.003-0.118-0.010-0.176l0.001 0.007c0.003-0.039 0.005-0.085 0.005-0.131 0-0.442-0.183-0.842-0.476-1.128l-0-0c-0.317-0.256-0.724-0.41-1.168-0.41-0.034 0-0.069 0.001-0.102 0.003l0.005-0zM9.628 11.014c-0.15 0.118-0.341 0.188-0.548 0.188-0.020 0-0.040-0.001-0.060-0.002l0.003 0h-1.026v-1.549h1.026c0.017-0.001 0.037-0.002 0.058-0.002 0.206 0 0.396 0.066 0.551 0.178l-0.003-0.002c0.135 0.13 0.219 0.313 0.219 0.515 0 0.025-0.001 0.050-0.004 0.074l0-0.003c0.002 0.020 0.003 0.044 0.003 0.068 0 0.208-0.083 0.396-0.219 0.534l0-0z"}}),t("path",{attrs:{d:"M13.529 4.981c0-1.375-1.114-2.489-2.489-2.49h-0l-0.134 0.005c-0.526-1.466-1.903-2.496-3.522-2.496-0.892 0-1.711 0.313-2.353 0.835l0.007-0.005c-0.312-0.243-0.709-0.389-1.14-0.389-1.030 0-1.865 0.834-1.866 1.864v0c0 0.001 0 0.003 0 0.004 0 0.123 0.012 0.242 0.036 0.358l-0.002-0.012c-0.94 0.37-1.593 1.27-1.593 2.323 0 1.372 1.11 2.485 2.482 2.49h8.243c1.306-0.084 2.333-1.164 2.333-2.484 0-0.001 0-0.002 0-0.003v0zM11.139 6.535h-8.319c-0.799-0.072-1.421-0.739-1.421-1.551 0-0.659 0.41-1.223 0.988-1.45l0.011-0.004 0.734-0.28-0.148-0.776-0.012-0.082v-0.088c0-0 0-0.001 0-0.001 0-0.515 0.418-0.933 0.933-0.933 0.216 0 0.416 0.074 0.574 0.197l-0.002-0.002 0.584 0.453 0.575-0.467 0.169-0.127c0.442-0.306 0.991-0.489 1.581-0.489 1.211 0 2.243 0.769 2.633 1.846l0.006 0.019 0.226 0.642 0.814-0.023 0.131 0.006c0.805 0.067 1.432 0.736 1.432 1.552 0 0.836-0.659 1.518-1.486 1.556l-0.003 0z"}})])},x=[],Z={name:"EndpointIcon",components:{SVGIcon:g.Z}},B=Z,T=(0,k.Z)(B,_,x,!1,null,null,null),S=T.exports,I=n(8633),O=n(9001),$=n(8638),q=n(6664);const w={[i.L.article]:u.Z,[i.L.collection]:O.Z,[i.L.collectionGroup]:C,[i.L.learn]:I.Z,[i.L.overview]:I.Z,[i.L.project]:$.Z,[i.L.tutorial]:$.Z,[i.L.resources]:I.Z,[i.L.sampleCode]:f.Z,[i.L.restRequestSymbol]:S};var A={components:{OverridableAsset:q.Z,SVGIcon:g.Z},props:{role:{type:String,required:!0},imageOverride:{type:Object,default:null}},computed:{icon:({role:e})=>w[e]}},L=A,P=(0,k.Z)(L,d,p,!1,null,"44dade98",null),F=P.exports,z=function(){var e=this,t=e._self._c;return t("code",{staticClass:"decorated-title"},e._l(e.tokens,(function(n,r){return t(e.componentFor(n),{key:r,tag:"component",class:[e.classFor(n),e.emptyTokenClass(n)]},[e._v(e._s(n.text))])})),1)},D=[],N=n(6213);const{TokenKind:M}=N["default"].constants,j={decorator:"decorator",identifier:"identifier",label:"label"};var V={name:"DecoratedTopicTitle",components:{WordBreak:l.Z},props:{tokens:{type:Array,required:!0,default:()=>[]}},constants:{TokenKind:M},methods:{emptyTokenClass:({text:e})=>({"empty-token":" "===e}),classFor({kind:e}){switch(e){case M.externalParam:case M.identifier:return j.identifier;case M.label:return j.label;default:return j.decorator}},componentFor(e){return/^\s+$/.test(e.text)?"span":l.Z}}},R=V,G=(0,k.Z)(R,z,D,!1,null,"06ec7395",null),W=G.exports,E=n(9595),H=n(7120),K=n(1842),J=n(5953);const Y={article:"article",symbol:"symbol"},Q={title:"title",symbol:"symbol"},U={link:"link"};var X={name:"TopicsLinkBlock",components:{Badge:s.Z,WordBreak:l.Z,ContentNode:c.Z,TopicLinkBlockIcon:F,DecoratedTopicTitle:W,RequirementMetadata:H.Z,ConditionalConstraints:E.Z},mixins:[K.JY,K.PH,J.Z],constants:{ReferenceType:U,TopicKind:Y,TitleStyles:Q},props:{isSymbolBeta:Boolean,isSymbolDeprecated:Boolean,topic:{type:Object,required:!0,validator:e=>(!("abstract"in e)||Array.isArray(e.abstract))&&"string"===typeof e.identifier&&(e.type===U.link&&!e.kind||"string"===typeof e.kind)&&(e.type===U.link&&!e.role||"string"===typeof e.role)&&"string"===typeof e.title&&"string"===typeof e.url&&(!("defaultImplementations"in e)||"number"===typeof e.defaultImplementations)&&(!("required"in e)||"boolean"===typeof e.required)&&(!("conformance"in e)||"object"===typeof e.conformance)}},data(){return{state:this.store.state}},computed:{linkComponent:({topic:e})=>e.type===U.link?"a":"router-link",linkProps({topic:e}){const t=(0,o.Q2)(e.url,this.$route.query);return e.type===U.link?{href:t}:{to:t}},linkBlockClasses:({changesClasses:e,hasAbstractElements:t,displaysMultipleLinesAfterAPIChanges:n,multipleLinesClass:r})=>({"has-inline-element":!t,[r]:n,...!t&&e}),linkClasses:({changesClasses:e,deprecated:t,hasAbstractElements:n})=>({deprecated:t,"has-adjacent-elements":n,...n&&e}),changesClasses:({getChangesClasses:e,change:t})=>e(t),titleTag({topic:e}){if(e.titleStyle===Q.title)return e.ideTitle?"span":"code";if(e.role&&(e.role===i.L.collection||e.role===i.L.dictionarySymbol))return"span";switch(e.kind){case Y.symbol:return"code";default:return"span"}},titleStyles:()=>Q,deprecated:({showDeprecatedBadge:e,topic:t})=>e||t.deprecated,showBetaBadge:({topic:e,isSymbolBeta:t})=>Boolean(!t&&e.beta),showDeprecatedBadge:({topic:e,isSymbolDeprecated:t})=>Boolean(!t&&e.deprecated),change({topic:{identifier:e},state:{apiChanges:t}}){return this.changeFor(e,t)},changeName:({change:e,getChangeName:t})=>t(e),hasAbstractElements:({topic:{abstract:e,conformance:t,required:n,defaultImplementations:r}}={})=>e&&e.length>0||t||n||r,tags:({topic:e})=>(e.tags||[]).slice(0,1),iconOverride:({topic:{images:e=[]}})=>{const t=e.find((({type:e})=>"icon"===e));return t?t.identifier:null}}},ee=X,te=(0,k.Z)(ee,r,a,!1,null,"63be6b46",null),ne=te.exports},9426:function(e,t,n){n.d(t,{Ag:function(){return i},UG:function(){return a},ct:function(){return o},yf:function(){return r}});const r={added:"added",modified:"modified",deprecated:"deprecated"},a=[r.modified,r.added,r.deprecated],i={[r.modified]:"change-type.modified",[r.added]:"change-type.added",[r.deprecated]:"change-type.deprecated"},o={"change-type.modified":r.modified,"change-type.added":r.added,"change-type.deprecated":r.deprecated}},4733:function(e,t,n){n.d(t,{_:function(){return r}});const r="displays-multiple-lines"},1842:function(e,t,n){n.d(t,{JY:function(){return c},PH:function(){return l}});var r=n(9426),a=n(4733),i=n(3112);const o="latest_",s={xcode:{value:"xcode",label:"Xcode"},other:{value:"other",label:"Other"}},l={constants:{multipleLinesClass:a._},data(){return{multipleLinesClass:a._}},computed:{displaysMultipleLinesAfterAPIChanges:({change:e,changeType:t,$refs:n})=>!(!e&&!t)&&(0,i.s)(n.apiChangesDiff)}},c={methods:{toVersionRange({platform:e,versions:t}){return`${e} ${t[0]} – ${e} ${t[1]}`},toOptionValue:e=>`${o}${e}`,toScope:e=>e.slice(o.length,e.length),getOptionsForDiffAvailability(e={}){return this.getOptionsForDiffAvailabilities([e])},getOptionsForDiffAvailabilities(e=[]){const t=e.reduce(((e,t={})=>Object.keys(t).reduce(((e,n)=>({...e,[n]:(e[n]||[]).concat(t[n])})),e)),{}),n=Object.keys(t),r=n.reduce(((e,n)=>{const r=t[n];return{...e,[n]:r.find((e=>e.platform===s.xcode.label))||r[0]}}),{}),a=e=>({label:this.toVersionRange(r[e]),value:this.toOptionValue(e),platform:r[e].platform}),{sdk:i,beta:o,minor:l,major:c,...d}=r,p=[].concat(i?a("sdk"):[]).concat(o?a("beta"):[]).concat(l?a("minor"):[]).concat(c?a("major"):[]).concat(Object.keys(d).map(a));return this.splitOptionsPerPlatform(p)},changesClassesFor(e,t){const n=this.changeFor(e,t);return this.getChangesClasses(n)},getChangesClasses:e=>({[`changed changed-${e}`]:!!e}),changeFor(e,t){const{change:n}=(t||{})[e]||{};return n},splitOptionsPerPlatform(e){return e.reduce(((e,t)=>{const n=t.platform===s.xcode.label?s.xcode.value:s.other.value;return e[n].push(t),e}),{[s.xcode.value]:[],[s.other.value]:[]})},getChangeName(e){return r.Ag[e]}},computed:{availableOptions({diffAvailability:e={},toOptionValue:t}){return new Set(Object.keys(e).map(t))}}}},3112:function(e,t,n){function r(e){if(!e)return!1;const t=window.getComputedStyle(e.$el||e),n=(e.$el||e).offsetHeight,r=t.lineHeight?parseFloat(t.lineHeight):1,a=t.paddingTop?parseFloat(t.paddingTop):0,i=t.paddingBottom?parseFloat(t.paddingBottom):0,o=t.borderTopWidth?parseFloat(t.borderTopWidth):0,s=t.borderBottomWidth?parseFloat(t.borderBottomWidth):0,l=n-(a+i+o+s),c=l/r;return c>=2}n.d(t,{s:function(){return r}})}}]); \ No newline at end of file diff --git a/docs/js/523.3af1b2ef.js b/docs/js/523.3af1b2ef.js deleted file mode 100644 index 75c9eb1..0000000 --- a/docs/js/523.3af1b2ef.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[523],{5465:function(e,t,n){"use strict";n.d(t,{Z:function(){return F}});var i,r,s=function(){var e=this,t=e._self._c;return t("div",{staticClass:"asset"},[t(e.assetComponent,e._g(e._b({tag:"component"},"component",e.assetProps,!1),e.assetListeners))],1)},a=[],o=n(6769),l=function(){var e=this,t=e._self._c;return t("ConditionalWrapper",{ref:"wrapper",attrs:{tag:e.DeviceFrameComponent,"should-wrap":!!e.deviceFrame,device:e.deviceFrame}},[t("video",{ref:"video",attrs:{controls:e.showsControls,"data-orientation":e.orientation,autoplay:e.autoplays,poster:e.normalisedPosterPath,width:e.optimalWidth,playsinline:""},domProps:{muted:e.muted},on:{loadedmetadata:e.setOrientation,playing:function(t){return e.$emit("playing")},pause:function(t){return e.$emit("pause")},ended:function(t){return e.$emit("ended")}}},[t("source",{attrs:{src:e.normalizePath(e.videoAttributes.url)}})])])},c=[],u=n(5947),A=n(4030),d=n(9804),p={functional:!0,name:"ConditionalWrapper",props:{tag:[Object,String],shouldWrap:Boolean},render(e,t){return t.props.shouldWrap?e(t.props.tag,t.data,t.children):t.children}},h=p,g=n(1001),m=(0,g.Z)(h,i,r,!1,null,null,null),f=m.exports,v=n(889),b={name:"VideoAsset",components:{ConditionalWrapper:f},props:{variants:{type:Array,required:!0},showsControls:{type:Boolean,default:()=>!0},autoplays:{type:Boolean,default:()=>!0},posterVariants:{type:Array,required:!1,default:()=>[]},muted:{type:Boolean,default:!0},deviceFrame:{type:String,required:!1}},data:()=>({appState:A["default"].state,optimalWidth:null,orientation:null}),computed:{DeviceFrameComponent:()=>v.Z,preferredColorScheme:({appState:e})=>e.preferredColorScheme,systemColorScheme:({appState:e})=>e.systemColorScheme,userPrefersDark:({preferredColorScheme:e,systemColorScheme:t})=>e===d.Z.dark||e===d.Z.auto&&t===d.Z.dark,shouldShowDarkVariant:({darkVideoVariantAttributes:e,userPrefersDark:t})=>e&&t,defaultVideoAttributes(){return this.videoVariantsGroupedByAppearance.light[0]||this.darkVideoVariantAttributes||{}},darkVideoVariantAttributes(){return this.videoVariantsGroupedByAppearance.dark[0]},videoVariantsGroupedByAppearance(){return(0,u.XV)(this.variants)},posterVariantsGroupedByAppearance(){const{light:e,dark:t}=(0,u.XV)(this.posterVariants);return{light:(0,u.u)(e),dark:(0,u.u)(t)}},defaultPosterAttributes:({posterVariantsGroupedByAppearance:e,userPrefersDark:t})=>t&&e.dark.length?e.dark[0]:e.light[0]||{},normalisedPosterPath:({defaultPosterAttributes:e})=>(0,u.AH)(e.src),videoAttributes:({darkVideoVariantAttributes:e,defaultVideoAttributes:t,shouldShowDarkVariant:n})=>n?e:t},watch:{normalisedPosterPath:{immediate:!0,handler:"getPosterDimensions"}},methods:{normalizePath:u.AH,async getPosterDimensions(e){if(!e)return void(this.optimalWidth=null);const{density:t}=this.defaultPosterAttributes,n=parseInt(t.match(/\d+/)[0],10),{width:i}=await(0,u.RY)(e);this.optimalWidth=i/n},setOrientation(){const{videoWidth:e,videoHeight:t}=this.$refs.video;this.orientation=(0,u.T8)(e,t)}}},y=b,C=(0,g.Z)(y,l,c,!1,null,null,null),I=C.exports,w=function(){var e=this,t=e._self._c;return t("div",{staticClass:"video-replay-container"},[t("VideoAsset",{ref:"asset",attrs:{variants:e.variants,autoplays:e.autoplays,showsControls:e.showsControls,muted:e.muted,posterVariants:e.posterVariants,deviceFrame:e.deviceFrame},on:{pause:e.onPause,playing:e.onVideoPlaying,ended:e.onVideoEnd}}),e.showsControls?e._e():t("a",{staticClass:"control-button",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.togglePlayStatus.apply(null,arguments)}}},[e._v(" "+e._s(e.text)+" "),e.videoEnded?t("InlineReplayIcon",{staticClass:"control-icon icon-inline"}):e.isPlaying?t("PauseIcon",{staticClass:"control-icon icon-inline"}):t("PlayIcon",{staticClass:"control-icon icon-inline"})],1)],1)},E=[],B=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"inline-replay-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-replay"}},[t("path",{attrs:{d:"M2.254 10.201c-1.633-2.613-0.838-6.056 1.775-7.689 2.551-1.594 5.892-0.875 7.569 1.592l0.12 0.184-0.848 0.53c-1.34-2.145-4.166-2.797-6.311-1.457s-2.797 4.166-1.457 6.311 4.166 2.797 6.311 1.457c1.006-0.629 1.71-1.603 2.003-2.723l0.056-0.242 0.98 0.201c-0.305 1.487-1.197 2.792-2.51 3.612-2.613 1.633-6.056 0.838-7.689-1.775z"}}),t("path",{attrs:{d:"M10.76 1.355l0.984-0.18 0.851 4.651-4.56-1.196 0.254-0.967 3.040 0.796z"}})])},x=[],k=n(3453),_={name:"InlineReplayIcon",components:{SVGIcon:k.Z}},S=_,T=(0,g.Z)(S,B,x,!1,null,null,null),Q=T.exports,L=n(6698),M=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"pause-icon",attrs:{viewBox:"0 0 14 14",themeId:"pause"}},[t("path",{attrs:{d:"M5 4h1v6h-1z"}}),t("path",{attrs:{d:"M8 4h1v6h-1z"}}),t("path",{attrs:{d:"M7 0.5c-3.6 0-6.5 2.9-6.5 6.5s2.9 6.5 6.5 6.5 6.5-2.9 6.5-6.5-2.9-6.5-6.5-6.5zM7 12.5c-3 0-5.5-2.5-5.5-5.5s2.5-5.5 5.5-5.5 5.5 2.5 5.5 5.5-2.5 5.5-5.5 5.5z"}})])},Z=[],R={name:"PauseIcon",components:{SVGIcon:k.Z}},j=R,N=(0,g.Z)(j,M,Z,!1,null,null,null),D=N.exports,O={name:"ReplayableVideoAsset",components:{PauseIcon:D,PlayIcon:L.Z,InlineReplayIcon:Q,VideoAsset:I},props:{variants:{type:Array,required:!0},showsControls:{type:Boolean,default:()=>!0},autoplays:{type:Boolean,default:()=>!0},muted:{type:Boolean,default:!0},posterVariants:{type:Array,default:()=>[]},deviceFrame:{type:String,required:!1}},computed:{text(){return this.videoEnded?this.$t("video.replay"):this.isPlaying?this.$t("video.pause"):this.$t("video.play")}},data(){return{isPlaying:!1,videoEnded:!1}},methods:{async togglePlayStatus(){const e=this.$refs.asset.$refs.video;e&&(this.isPlaying&&!this.videoEnded?await e.pause():await e.play())},onVideoEnd(){this.isPlaying=!1,this.videoEnded=!0},onVideoPlaying(){const{video:e}=this.$refs.asset.$refs;this.isPlaying=!e.paused,this.videoEnded=e.ended},onPause(){const{video:e}=this.$refs.asset.$refs;!this.showsControls&&this.isPlaying&&(this.isPlaying=!1),this.videoEnded=e.ended}}},P=O,G=(0,g.Z)(P,w,E,!1,null,"7653dfd0",null),V=G.exports,H=n(5953);const z={video:"video",image:"image"};var q={name:"Asset",components:{ImageAsset:o.Z,VideoAsset:I},constants:{AssetTypes:z},mixins:[H.Z],props:{identifier:{type:String,required:!0},showsReplayButton:{type:Boolean,default:()=>!1},showsVideoControls:{type:Boolean,default:()=>!0},videoAutoplays:{type:Boolean,default:()=>!0},videoMuted:{type:Boolean,default:!0},deviceFrame:{type:String,required:!1}},computed:{rawAsset(){return this.references[this.identifier]||{}},isRawAssetVideo:({rawAsset:e})=>e.type===z.video,videoPoster(){return this.isRawAssetVideo&&this.references[this.rawAsset.poster]},asset(){return this.isRawAssetVideo&&this.prefersReducedMotion&&this.videoPoster||this.rawAsset},assetComponent(){switch(this.asset.type){case z.image:return o.Z;case z.video:return this.showsReplayButton?V:I;default:return}},prefersReducedMotion(){return window.matchMedia("(prefers-reduced-motion)").matches},assetProps(){return{[z.image]:this.imageProps,[z.video]:this.videoProps}[this.asset.type]},imageProps(){return{alt:this.asset.alt,variants:this.asset.variants}},videoProps(){return{variants:this.asset.variants,showsControls:this.showsVideoControls,muted:this.videoMuted,autoplays:!this.prefersReducedMotion&&this.videoAutoplays,posterVariants:this.videoPoster?this.videoPoster.variants:[],deviceFrame:this.deviceFrame}},assetListeners(){return{[z.image]:null,[z.video]:{ended:()=>this.$emit("videoEnded")}}[this.asset.type]}}},$=q,W=(0,g.Z)($,s,a,!1,null,"2d8333c8",null),F=W.exports},7188:function(e,t,n){"use strict";n.d(t,{default:function(){return h}});var i=n(5381);const r=e=>e?`(max-width: ${e}px)`:"",s=e=>e?`(min-width: ${e}px)`:"";function a({minWidth:e,maxWidth:t}){return["only screen",s(e),r(t)].filter(Boolean).join(" and ")}function o({maxWidth:e,minWidth:t}){return window.matchMedia(a({minWidth:t,maxWidth:e}))}var l,c,u={name:"BreakpointEmitter",constants:{BreakpointAttributes:i.kB,BreakpointName:i.L3,BreakpointScopes:i.lU},props:{scope:{type:String,default:()=>i.lU["default"],validator:e=>e in i.lU}},render(){return this.$scopedSlots.default?this.$scopedSlots.default({matchingBreakpoint:this.matchingBreakpoint}):null},data:()=>({matchingBreakpoint:null}),methods:{initMediaQuery(e,t){const n=o(t),i=t=>this.handleMediaQueryChange(t,e);n.addListener(i),this.$once("hook:beforeDestroy",(()=>{n.removeListener(i)})),i(n)},handleMediaQueryChange(e,t){e.matches&&(this.matchingBreakpoint=t,this.$emit("change",t))}},mounted(){const e=i.kB[this.scope]||{};Object.entries(e).forEach((([e,t])=>{this.initMediaQuery(e,t)}))}},A=u,d=n(1001),p=(0,d.Z)(A,l,c,!1,null,null,null),h=p.exports},5281:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var i=function(){var e=this,t=e._self._c;return t(e.resolvedComponent,e._b({tag:"component",staticClass:"button-cta",class:{"is-dark":e.isDark}},"component",e.componentProps,!1),[e._t("default")],2)},r=[],s=n(2387),a={name:"ButtonLink",components:{Reference:s.Z},props:{url:{type:String,required:!1},isDark:{type:Boolean,default:!1}},computed:{resolvedComponent:({url:e})=>e?s.Z:"button",componentProps:({url:e})=>e?{url:e}:{}}},o=a,l=n(1001),c=(0,l.Z)(o,i,r,!1,null,"c9c81868",null),u=c.exports},7605:function(e,t,n){"use strict";n.d(t,{Z:function(){return A}});var i=function(){var e=this,t=e._self._c;return e.action?t("DestinationDataProvider",{attrs:{destination:e.action},scopedSlots:e._u([{key:"default",fn:function({url:n,title:i}){return[t("ButtonLink",{attrs:{url:n,isDark:e.isDark}},[e._v(" "+e._s(i)+" ")])]}}],null,!1,710653997)}):e._e()},r=[],s=n(5281),a=n(1295),o={name:"CallToActionButton",components:{DestinationDataProvider:a.Z,ButtonLink:s.Z},props:{action:{type:Object,required:!0},isDark:{type:Boolean,default:!1}}},l=o,c=n(1001),u=(0,c.Z)(l,i,r,!1,null,null,null),A=u.exports},3917:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var i=function(){var e=this,t=e._self._c;return t("code",{attrs:{tabindex:"0","data-before-code":e.$t("accessibility.code.start"),"data-after-code":e.$t("accessibility.code.end")}},[e._t("default")],2)},r=[],s={name:"CodeBlock"},a=s,o=n(1001),l=(0,o.Z)(a,i,r,!1,null,"08295b2f",null),c=l.exports},8843:function(e,t,n){"use strict";n.r(t),n.d(t,{BlockType:function(){return Et},default:function(){return Rt}});var i=n(5953),r=n(7587),s=n(8233),a=n(8039),o=n(2020),l=function(){var e=this,t=e._self._c;return t("div",{staticClass:"DictionaryExample"},[e._t("default"),t("CollapsibleCodeListing",{attrs:{content:e.example.content,showLineNumbers:""}})],2)},c=[],u=function(){var e=this,t=e._self._c;return t("div",{staticClass:"collapsible-code-listing",class:{"single-line":1===e.content[0].code.length}},[t("pre",[t("CodeBlock",e._l(this.content,(function(n,i){return t("div",{key:i,class:["container-general",{collapsible:!0===n.collapsible},{collapsed:!0===n.collapsible&&e.collapsed}]},e._l(n.code,(function(n,i){return t("div",{key:i,staticClass:"code-line-container"},[e._v("\n "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.showLineNumbers,expression:"showLineNumbers"}],staticClass:"code-number"}),e._v("\n "),t("div",{staticClass:"code-line"},[e._v(e._s(n))]),e._v("\n ")])})),0)})),0)],1)])},A=[],d=n(3917),p={name:"CollapsibleCodeListing",components:{CodeBlock:d.Z},props:{collapsed:{type:Boolean,required:!1},content:{type:Array,required:!0},showLineNumbers:{type:Boolean,default:()=>!0}}},h=p,g=n(1001),m=(0,g.Z)(h,u,A,!1,null,"25a17a0e",null),f=m.exports,v={name:"DictionaryExample",components:{CollapsibleCodeListing:f},props:{example:{type:Object,required:!0}}},b=v,y=(0,g.Z)(b,l,c,!1,null,null,null),C=y.exports,I=function(){var e=this,t=e._self._c;return t("Row",{staticClass:"endpoint-example"},[t("Column",{staticClass:"example-code"},[e._t("default"),t("Tabnav",{model:{value:e.currentTab,callback:function(t){e.currentTab=t},expression:"currentTab"}},[t("TabnavItem",{attrs:{value:e.Tab.request}},[e._v(e._s(e.$t("tab.request")))]),t("TabnavItem",{attrs:{value:e.Tab.response}},[e._v(e._s(e.$t("tab.response")))])],1),t("div",{staticClass:"output"},[e.isCurrent(e.Tab.request)?t("div",{staticClass:"code"},[t("CollapsibleCodeListing",e._b({attrs:{collapsed:e.isCollapsed,showLineNumbers:""}},"CollapsibleCodeListing",e.request,!1))],1):e._e(),e.isCurrent(e.Tab.response)?t("div",{staticClass:"code"},[t("CollapsibleCodeListing",e._b({attrs:{collapsed:e.isCollapsed,showLineNumbers:""}},"CollapsibleCodeListing",e.response,!1))],1):e._e()]),e.isCollapsible?t("div",{staticClass:"controls"},[e.isCollapsed?t("a",{staticClass:"toggle",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.showMore.apply(null,arguments)}}},[t("InlinePlusCircleSolidIcon",{staticClass:"control-icon icon-inline"}),e._v(" "+e._s(e.$t("more"))+" ")],1):t("a",{staticClass:"toggle",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.showLess.apply(null,arguments)}}},[t("InlineMinusCircleSolidIcon",{staticClass:"control-icon icon-inline"}),e._v(" "+e._s(e.$t("less"))+" ")],1)]):e._e()],2)],1)},w=[],E=n(9649),B=n(1576),x=function(){var e=this,t=e._self._c;return t("nav",{staticClass:"tabnav",class:{[`tabnav--${e.position}`]:e.position,"tabnav--vertical":e.vertical}},[t("ul",{staticClass:"tabnav-items"},[e._t("default")],2)])},k=[];const _="tabnavData";var S={name:"Tabnav",constants:{ProvideKey:_},provide(){const e={selectTab:this.selectTab};return Object.defineProperty(e,"activeTab",{enumerable:!0,get:()=>this.value}),{[_]:e}},props:{position:{type:String,required:!1,validator:e=>new Set(["start","center","end"]).has(e)},vertical:{type:Boolean,default:!1},value:{type:[String,Number],required:!0}},methods:{selectTab(e){this.$emit("input",e)}}},T=S,Q=(0,g.Z)(T,x,k,!1,null,"5572fe1d",null),L=Q.exports,M=function(){var e=this,t=e._self._c;return t("li",{staticClass:"tabnav-item"},[t("a",{staticClass:"tabnav-link",class:{active:e.isActive},attrs:{href:"#","aria-current":e.isActive?"true":"false"},on:{click:function(t){return t.preventDefault(),e.tabnavData.selectTab(e.value)}}},[e._t("default")],2)])},Z=[],R={name:"TabnavItem",inject:{tabnavData:{default:{activeTab:null,selectTab:()=>{}}}},props:{value:{type:[String,Number],default:null}},computed:{isActive({tabnavData:e,value:t}){return e.activeTab===t}}},j=R,N=(0,g.Z)(j,M,Z,!1,null,"6aa9882a",null),D=N.exports,O=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"inline-plus-circle-solid-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-plus-circle-solid"}},[t("path",{attrs:{d:"M7.005 0.5h-0.008c-1.791 0.004-3.412 0.729-4.589 1.9l0-0c-1.179 1.177-1.908 2.803-1.908 4.6 0 3.59 2.91 6.5 6.5 6.5s6.5-2.91 6.5-6.5c0-3.587-2.906-6.496-6.492-6.5h-0zM4.005 7.52v-1h2.5v-2.51h1v2.51h2.5v1h-2.501v2.49h-1v-2.49z"}})])},P=[],G=n(3453),V={name:"InlinePlusCircleSolidIcon",components:{SVGIcon:G.Z}},H=V,z=(0,g.Z)(H,O,P,!1,null,null,null),q=z.exports,$=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"inline-minus-circle-solid-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-minus-circle-solid"}},[t("path",{attrs:{d:"m6.98999129.48999129c3.58985091 0 6.50000001 2.91014913 6.50000001 6.5 0 3.58985091-2.9101491 6.50000001-6.50000001 6.50000001-3.58985087 0-6.5-2.9101491-6.5-6.50000001 0-3.58985087 2.91014913-6.5 6.5-6.5zm3 6.02001742h-6v1h6z","fill-rule":"evenodd"}})])},W=[],F={name:"InlineMinusCircleSolidIcon",components:{SVGIcon:G.Z}},Y=F,U=(0,g.Z)(Y,$,W,!1,null,null,null),X=U.exports;const K={request:"Request",response:"Response"};var J={name:"EndpointExample",components:{InlineMinusCircleSolidIcon:X,InlinePlusCircleSolidIcon:q,TabnavItem:D,Tabnav:L,CollapsibleCodeListing:f,Row:E.Z,Column:B.Z},constants:{Tab:K},props:{request:{type:Object,required:!0},response:{type:Object,required:!0}},data(){return{isCollapsed:!0,currentTab:K.request}},computed:{Tab:()=>K,isCollapsible:({response:e,request:t,currentTab:n})=>{const i={[K.request]:t.content,[K.response]:e.content}[n]||[];return i.some((({collapsible:e})=>e))}},methods:{isCurrent(e){return this.currentTab===e},showMore(){this.isCollapsed=!1},showLess(){this.isCollapsed=!0}}},ee=J,te=(0,g.Z)(ee,I,w,!1,null,"c84e62a6",null),ne=te.exports,ie=function(){var e=this,t=e._self._c;return t("figure",{attrs:{id:e.anchor}},[e._t("default")],2)},re=[],se={name:"Figure",props:{anchor:{type:String,required:!1}}},ae=se,oe=(0,g.Z)(ae,ie,re,!1,null,null,null),le=oe.exports,ce=function(){var e=this,t=e._self._c;return t(e.tag,{tag:"component",staticClass:"caption",class:{trailing:e.trailing}},[e.title?[t("strong",[e._v(e._s(e.title))]),e._v(" "),e._t("default")]:[e._t("default")]],2)},ue=[];const Ae={caption:"caption",figcaption:"figcaption"},de={leading:"leading",trailing:"trailing"};var pe={name:"Caption",constants:{CaptionPosition:de,CaptionTag:Ae},props:{title:{type:String,required:!1},tag:{type:String,required:!0,validator:e=>Object.hasOwnProperty.call(Ae,e)},position:{type:String,default:()=>de.leading,validator:e=>Object.hasOwnProperty.call(de,e)}},computed:{trailing:({position:e})=>e===de.trailing}},he=pe,ge=(0,g.Z)(he,ce,ue,!1,null,"869c6f6e",null),me=ge.exports,fe=function(){var e=this,t=e._self._c;return t("ImageAsset",{attrs:{alt:e.alt,variants:e.variants}})},ve=[],be=n(6769),ye={name:"InlineImage",components:{ImageAsset:be.Z},props:{alt:{type:String,default:""},variants:{type:Array,required:!0}}},Ce=ye,Ie=(0,g.Z)(Ce,fe,ve,!1,null,"bf997940",null),we=Ie.exports,Ee=n(2387),Be=function(){var e=this,t=e._self._c;return t("div",{staticClass:"table-wrapper"},[t("table",{class:{spanned:e.spanned}},[e._t("default")],2)])},xe=[],ke={name:"Table",props:{spanned:{type:Boolean,default:!1}}},_e=ke,Se=(0,g.Z)(_e,Be,xe,!1,null,"f3322390",null),Te=Se.exports,Qe=function(){var e=this,t=e._self._c;return t("s",{attrs:{"data-before-text":e.$t("accessibility.strike.start"),"data-after-text":e.$t("accessibility.strike.end")}},[e._t("default")],2)},Le=[],Me={name:"StrikeThrough"},Ze=Me,Re=(0,g.Z)(Ze,Qe,Le,!1,null,"7fc51673",null),je=Re.exports,Ne=function(){var e=this,t=e._self._c;return t("small",[e._t("default")],2)},De=[],Oe={name:"Small"},Pe=Oe,Ge=(0,g.Z)(Pe,Ne,De,!1,null,"77035f61",null),Ve=Ge.exports,He=function(){var e=this,t=e._self._c;return t("Asset",{attrs:{identifier:e.identifier,"video-autoplays":!1,"video-muted":!1,showsReplayButton:!e.isClientMobile,showsVideoControls:e.isClientMobile,deviceFrame:e.deviceFrame}})},ze=[],qe=n(5465),$e=n(1825),We={name:"BlockVideo",mixins:[$e.Z],components:{Asset:qe.Z},props:{identifier:{type:String,required:!0},deviceFrame:{type:String,required:!1}}},Fe=We,Ye=(0,g.Z)(Fe,He,ze,!1,null,"5e8ea0de",null),Ue=Ye.exports,Xe=n(3938),Ke=n(3002),Je=function(){var e=this,t=e._self._c;return t("div",{staticClass:"TabNavigator",class:[{"tabs--vertical":e.vertical}]},[t("Tabnav",e._b({model:{value:e.currentTitle,callback:function(t){e.currentTitle=t},expression:"currentTitle"}},"Tabnav",{position:e.position,vertical:e.vertical},!1),e._l(e.titles,(function(n){return t("TabnavItem",{key:n,attrs:{value:n}},[e._v(" "+e._s(n)+" ")])})),1),t("div",{staticClass:"tabs-content"},[t("div",{staticClass:"tabs-content-container"},[t("transition-group",{attrs:{name:"fade"}},[e._l(e.titles,(function(n){return[t("div",{directives:[{name:"show",rawName:"v-show",value:n===e.currentTitle,expression:"title === currentTitle"}],key:n,staticClass:"tab-container",class:{active:n===e.currentTitle}},[e._t(n)],2)]}))],2)],1)])],1)},et=[],tt={name:"TabNavigator",components:{TabnavItem:D,Tabnav:L},props:{vertical:{type:Boolean,default:!1},position:{type:String,default:"start",validator:e=>new Set(["start","center","end"]).has(e)},titles:{type:Array,required:!0,default:()=>[]}},data(){return{currentTitle:this.titles[0]}},watch:{titles(e,t){if(e.length!t.includes(e)));this.currentTitle=n||this.currentTitle}}}},nt=tt,it=(0,g.Z)(nt,Je,et,!1,null,"e671a734",null),rt=it.exports,st=function(){var e=this,t=e._self._c;return t("ul",{staticClass:"tasklist"},e._l(e.tasks,(function(n,i){return t("li",{key:i},[e.showCheckbox(n)?t("input",{attrs:{type:"checkbox",disabled:""},domProps:{checked:n.checked}}):e._e(),e._t("task",null,{task:n})],2)})),0)},at=[];const ot="checked",lt=e=>Object.hasOwnProperty.call(e,ot);var ct={name:"TaskList",props:{tasks:{required:!0,type:Array,validator:e=>e.some(lt)}},methods:{showCheckbox:lt}},ut=ct,At=(0,g.Z)(ut,st,at,!1,null,"6a56a858",null),dt=At.exports,pt=function(){var e=this,t=e._self._c;return e.isListStyle?t("div",{staticClass:"links-block"},e._l(e.items,(function(e){return t("TopicsLinkBlock",{key:e.identifier,staticClass:"topic-link-block",attrs:{topic:e}})})),1):t("TopicsLinkCardGrid",{staticClass:"links-block",attrs:{items:e.items,"topic-style":e.blockStyle}})},ht=[],gt=n(2627),mt=n(3946),ft={name:"LinksBlock",mixins:[i.Z],components:{TopicsLinkBlock:()=>Promise.all([n.e(37),n.e(675)]).then(n.bind(n,9037)),TopicsLinkCardGrid:gt.Z},props:{identifiers:{type:Array,required:!0},blockStyle:{type:String,default:mt.o.compactGrid}},computed:{isListStyle:({blockStyle:e})=>e===mt.o.list,items:({identifiers:e,references:t})=>e.reduce(((e,n)=>t[n]?e.concat(t[n]):e),[])}},vt=ft,bt=(0,g.Z)(vt,pt,ht,!1,null,"4e94ea62",null),yt=bt.exports,Ct=n(889);const{CaptionPosition:It,CaptionTag:wt}=me.constants,Et={aside:"aside",codeListing:"codeListing",endpointExample:"endpointExample",heading:"heading",orderedList:"orderedList",paragraph:"paragraph",table:"table",termList:"termList",unorderedList:"unorderedList",dictionaryExample:"dictionaryExample",small:"small",video:"video",row:"row",tabNavigator:"tabNavigator",links:"links"},Bt={codeVoice:"codeVoice",emphasis:"emphasis",image:"image",inlineHead:"inlineHead",link:"link",newTerm:"newTerm",reference:"reference",strong:"strong",text:"text",superscript:"superscript",subscript:"subscript",strikethrough:"strikethrough"},xt={both:"both",column:"column",none:"none",row:"row"},kt={left:"left",right:"right",center:"center",unset:"unset"},_t=7;function St(e,t){const n=n=>n.map(St(e,t)),i=t=>t.map((t=>e("li",{},n(t.content)))),l=(t,i,r,s,a,o,l)=>{const{colspan:c,rowspan:u}=o[`${a}_${s}`]||{};if(0===c||0===u)return null;const A=l[s]||kt.unset;let d=null;return A!==kt.unset&&(d=`${A}-cell`),e(t,{attrs:{...i,colspan:c,rowspan:u},class:d},n(r))},c=(t,n=xt.none,i={},r=[])=>{switch(n){case xt.both:{const[n,...s]=t;return[e("thead",{},[e("tr",{},n.map(((e,t)=>l("th",{scope:"col"},e,t,0,i,r))))]),e("tbody",{},s.map((([t,...n],s)=>e("tr",{},[l("th",{scope:"row"},t,0,s+1,i,r),...n.map(((e,t)=>l("td",{},e,t+1,s+1,i,r)))]))))]}case xt.column:return[e("tbody",{},t.map((([t,...n],s)=>e("tr",{},[l("th",{scope:"row"},t,0,s,i,r),...n.map(((e,t)=>l("td",{},e,t+1,s,i,r)))]))))];case xt.row:{const[n,...s]=t;return[e("thead",{},[e("tr",{},n.map(((e,t)=>l("th",{scope:"col"},e,t,0,i,r))))]),e("tbody",{},s.map(((t,n)=>e("tr",{},t.map(((e,t)=>l("td",{},e,t,n+1,i,r)))))))]}default:return[e("tbody",{},t.map(((t,n)=>e("tr",{},t.map(((e,t)=>l("td",{},e,t,n,i,r)))))))]}},u=({metadata:{abstract:t=[],anchor:i,title:r,...s},...a})=>{const o={...a,metadata:s},l=[n([o])];if(r&&t.length||t.length){const i=r?It.leading:It.trailing,s=i===It.trailing?1:0,a=wt.figcaption;l.splice(s,0,e(me,{props:{title:r,position:i,tag:a}},n(t)))}return e(le,{props:{anchor:i}},l)},A=({metadata:{deviceFrame:t},...i})=>e(Ct.Z,{props:{device:t}},n([i]));return function(l){switch(l.type){case Et.aside:{const t={kind:l.style,name:l.name};return e(r.Z,{props:t},n(l.content))}case Et.codeListing:{if(l.metadata&&l.metadata.anchor)return u(l);const t={syntax:l.syntax,fileType:l.fileType,content:l.code,showLineNumbers:l.showLineNumbers};return e(s.Z,{props:t})}case Et.endpointExample:{const t={request:l.request,response:l.response};return e(ne,{props:t},n(l.summary||[]))}case Et.heading:{const t={anchor:l.anchor,level:l.level};return e(a.Z,{props:t},l.text)}case Et.orderedList:return e("ol",{attrs:{start:l.start}},i(l.items));case Et.paragraph:{const t=1===l.inlineContent.length&&l.inlineContent[0].type===Bt.image,i=t?{class:["inline-image-container"]}:{};return e("p",i,n(l.inlineContent))}case Et.table:{const t=c(l.rows,l.header,l.extendedData,l.alignments);if(l.metadata&&l.metadata.abstract){const{title:i}=l.metadata,r=i?It.leading:It.trailing,s=wt.caption;t.unshift(e(me,{props:{title:i,position:r,tag:s}},n(l.metadata.abstract)))}return e(Te,{attrs:{id:l.metadata&&l.metadata.anchor},props:{spanned:!!l.extendedData}},t)}case Et.termList:return e("dl",{},l.items.map((({term:t,definition:i})=>[e("dt",{},n(t.inlineContent)),e("dd",{},n(i.content))])));case Et.unorderedList:{const t=e=>dt.props.tasks.validator(e.items);return t(l)?e(dt,{props:{tasks:l.items},scopedSlots:{task:e=>n(e.task.content)}}):e("ul",{},i(l.items))}case Et.dictionaryExample:{const t={example:l.example};return e(C,{props:t},n(l.summary||[]))}case Et.small:return e("p",{},[e(Ve,{},n(l.inlineContent))]);case Et.video:{if(l.metadata&&l.metadata.abstract)return u(l);if(!t[l.identifier])return null;const{deviceFrame:n}=l.metadata||{};return e(Ue,{props:{identifier:l.identifier,deviceFrame:n}})}case Et.row:{const t=l.numberOfColumns?{large:l.numberOfColumns}:void 0;return e(Ke.Z,{props:{columns:t}},l.columns.map((t=>e(Xe.Z,{props:{span:t.size}},n(t.content)))))}case Et.tabNavigator:{const t=l.tabs.length>_t,i=l.tabs.map((e=>e.title)),r=l.tabs.reduce(((e,t)=>({...e,[t.title]:()=>n(t.content)})),{});return e(rt,{props:{titles:i,vertical:t},scopedSlots:r})}case Et.links:return e(yt,{props:{blockStyle:l.style,identifiers:l.items}});case Bt.codeVoice:return e(o.Z,{},l.code);case Bt.emphasis:case Bt.newTerm:return e("em",n(l.inlineContent));case Bt.image:{if(l.metadata&&(l.metadata.anchor||l.metadata.abstract))return u(l);const n=t[l.identifier];return n?l.metadata&&l.metadata.deviceFrame?A(l):e(we,{props:{alt:n.alt,variants:n.variants}}):null}case Bt.link:return e("a",{attrs:{href:l.destination},class:"inline-link"},l.title);case Bt.reference:{const i=t[l.identifier];if(!i)return null;const r=l.overridingTitleInlineContent||i.titleInlineContent,s=l.overridingTitle||i.title;return e(Ee.Z,{props:{url:i.url,kind:i.kind,role:i.role,isActive:l.isActive,ideTitle:i.ideTitle,titleStyle:i.titleStyle,hasInlineFormatting:!!r},class:"inline-link"},r?n(r):s)}case Bt.strong:case Bt.inlineHead:return e("strong",n(l.inlineContent));case Bt.text:return"\n"===l.text?e("br"):l.text;case Bt.superscript:return e("sup",n(l.inlineContent));case Bt.subscript:return e("sub",n(l.inlineContent));case Bt.strikethrough:return e(je,n(l.inlineContent));default:return null}}}var Tt,Qt,Lt={name:"ContentNode",constants:{TableHeaderStyle:xt,TableColumnAlignments:kt},mixins:[i.Z],render:function(e){return e(this.tag,{class:"content"},this.content.map(St(e,this.references),this))},props:{content:{type:Array,required:!0},tag:{type:String,default:()=>"div"}},methods:{map(e){function t(n=[]){return n.map((n=>{switch(n.type){case Et.aside:return e({...n,content:t(n.content)});case Et.dictionaryExample:return e({...n,summary:t(n.summary)});case Et.paragraph:case Bt.emphasis:case Bt.strong:case Bt.inlineHead:case Bt.superscript:case Bt.subscript:case Bt.strikethrough:case Bt.newTerm:return e({...n,inlineContent:t(n.inlineContent)});case Et.orderedList:case Et.unorderedList:return e({...n,items:n.items.map((e=>({...e,content:t(e.content)})))});case Et.table:return e({...n,rows:n.rows.map((e=>e.map(t)))});case Et.termList:return e({...n,items:n.items.map((e=>({...e,term:{inlineContent:t(e.term.inlineContent)},definition:{content:t(e.definition.content)}})))});default:return e(n)}}))}return t(this.content)},forEach(e){function t(n=[]){n.forEach((n=>{switch(e(n),n.type){case Et.aside:t(n.content);break;case Et.paragraph:case Bt.emphasis:case Bt.strong:case Bt.inlineHead:case Bt.newTerm:case Bt.superscript:case Bt.subscript:case Bt.strikethrough:t(n.inlineContent);break;case Et.orderedList:case Et.unorderedList:n.items.forEach((e=>t(e.content)));break;case Et.dictionaryExample:t(n.summary);break;case Et.table:n.rows.forEach((e=>{e.forEach(t)}));break;case Et.termList:n.items.forEach((e=>{t(e.term.inlineContent),t(e.definition.content)}));break}}))}return t(this.content)},reduce(e,t){let n=t;return this.forEach((t=>{n=e(n,t)})),n}},computed:{plaintext(){return this.reduce(((e,t)=>t.type===Et.paragraph?`${e}\n`:t.type===Bt.text?`${e}${t.text}`:e),"").trim()}},BlockType:Et,InlineType:Bt},Mt=Lt,Zt=(0,g.Z)(Mt,Tt,Qt,!1,null,null,null),Rt=Zt.exports},7587:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var i=function(){var e=this,t=e._self._c;return t("aside",{class:e.kind,attrs:{"aria-label":e.kind}},[t("p",{staticClass:"label"},[e._v(e._s(e.name||e.$t(e.label)))]),e._t("default")],2)},r=[];const s={deprecated:"deprecated",experiment:"experiment",important:"important",note:"note",tip:"tip",warning:"warning"};var a={name:"Aside",props:{kind:{type:String,required:!0,validator:e=>Object.prototype.hasOwnProperty.call(s,e)},name:{type:String,required:!1}},computed:{label:({kind:e})=>`aside-kind.${e}`}},o=a,l=n(1001),c=(0,l.Z)(o,i,r,!1,null,"3ccce809",null),u=c.exports},8233:function(e,t,n){"use strict";n.d(t,{Z:function(){return J}});var i=function(){var e=this,t=e._self._c;return t("div",{staticClass:"code-listing",class:{"single-line":1===e.syntaxHighlightedLines.length},attrs:{"data-syntax":e.syntaxNameNormalized}},[e.fileName?t("Filename",{attrs:{isActionable:e.isFileNameActionable,fileType:e.fileType},on:{click:function(t){return e.$emit("file-name-click")}}},[e._v(e._s(e.fileName)+" ")]):e._e(),t("div",{staticClass:"container-general"},[t("pre",[t("CodeBlock",[e._l(e.syntaxHighlightedLines,(function(n,i){return[t("span",{key:i,class:["code-line-container",{highlighted:e.isHighlighted(i)}]},[e.showLineNumbers?t("span",{staticClass:"code-number",attrs:{"data-line-number":e.lineNumberFor(i)}}):e._e(),t("span",{staticClass:"code-line",domProps:{innerHTML:e._s(n)}})]),e._v("\n")]}))],2)],1)])],1)},r=[],s=n(3208),a=n(3078),o=n(3917),l=n(3390),c=l;const u={objectivec:["objective-c"]},A={bash:["sh","zsh"],c:["h"],cpp:["cc","c++","h++","hpp","hh","hxx","cxx"],css:[],diff:["patch"],http:["https"],java:["jsp"],javascript:["js","jsx","mjs","cjs"],json:[],llvm:[],markdown:["md","mkdown","mkd"],objectivec:["mm","objc","obj-c"].concat(u.objectivec),perl:["pl","pm"],php:[],python:["py","gyp","ipython"],ruby:["rb","gemspec","podspec","thor","irb"],scss:[],shell:["console","shellsession"],swift:[],xml:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],...{NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_HLJS_LANGUAGES?Object.fromEntries({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_HLJS_LANGUAGES.split(",").map((e=>[e,[]]))):void 0},d=new Set(["markdown","swift"]),p=Object.entries(A),h=new Set(Object.keys(A)),g=new Map;async function m(e){const t=[e];try{return await t.reduce((async(e,t)=>{let i;await e,i=d.has(t)?await n(3685)(`./${t}`):await n(2122)(`./${t}.js`),c.registerLanguage(t,i.default)}),Promise.resolve()),!0}catch(i){return console.error(`Could not load ${e} file`),!1}}function f(e){if(h.has(e))return e;const t=p.find((([,t])=>t.includes(e)));return t?t[0]:null}function v(e){if(g.has(e))return g.get(e);const t=f(e);return g.set(e,t),t}c.configure({classPrefix:"syntax-",languages:[...h]});const b=async e=>{const t=v(e);return!(!t||c.listLanguages().includes(t))&&m(t)},y=/\r\n|\r|\n/g,C=/syntax-/;function I(e){return 0===e.length?[]:e.split(y)}function w(e){return(e.trim().match(y)||[]).length}function E(e){const t=document.createElement("template");return t.innerHTML=e,t.content.childNodes}function B(e){const{className:t}=e;if(!C.test(t))return null;const n=I(e.innerHTML).reduce(((e,n)=>`${e}${n}\n`),"");return E(n.trim())}function x(e){return Array.from(e.childNodes).forEach((e=>{if(w(e.textContent))try{const t=e.childNodes.length?x(e):B(e);t&&e.replaceWith(...t)}catch(t){console.error(t)}})),B(e)}function k(e,t){const n=f(t);if(!c.getLanguage(n))throw new Error(`Unsupported language for syntax highlighting: ${t}`);return c.highlight(e,{language:n,ignoreIllegals:!0}).value}function _(e,t){const n=e.join("\n"),i=k(n,t),r=document.createElement("code");return r.innerHTML=i,x(r),I(r.innerHTML)}var S=function(){var e=this,t=e._self._c;return t("span",{staticClass:"filename"},[e.isActionable?t("a",{attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[t("FileIcon",{attrs:{fileType:e.fileType}}),e._t("default")],2):t("span",[t("FileIcon",{attrs:{fileType:e.fileType}}),e._t("default")],2)])},T=[],Q=function(){var e=this,t=e._self._c;return"swift"===e.fileType?t("SwiftFileIcon",{staticClass:"file-icon"}):t("GenericFileIcon",{staticClass:"file-icon"})},L=[],M=n(7834),Z=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"generic-file-icon",attrs:{viewBox:"0 0 14 14",themeId:"generic-file"}},[t("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),t("path",{attrs:{d:"M7 1h1v4h-1z"}}),t("path",{attrs:{d:"M7 5h5v1h-5z"}})])},R=[],j=n(3453),N={name:"GenericFileIcon",components:{SVGIcon:j.Z}},D=N,O=n(1001),P=(0,O.Z)(D,Z,R,!1,null,null,null),G=P.exports,V={name:"CodeListingFileIcon",components:{SwiftFileIcon:M.Z,GenericFileIcon:G},props:{fileType:String}},H=V,z=(0,O.Z)(H,Q,L,!1,null,"7c381064",null),q=z.exports,$={name:"CodeListingFilename",components:{FileIcon:q},props:{isActionable:{type:Boolean,default:()=>!1},fileType:String}},W=$,F=(0,O.Z)(W,S,T,!1,null,"c8c40662",null),Y=F.exports,U={name:"CodeListing",components:{Filename:Y,CodeBlock:o.Z},data(){return{syntaxHighlightedLines:[]}},props:{fileName:String,isFileNameActionable:{type:Boolean,default:()=>!1},syntax:String,fileType:String,content:{type:Array,required:!0},startLineNumber:{type:Number,default:()=>1},highlights:{type:Array,default:()=>[]},showLineNumbers:{type:Boolean,default:()=>!1}},computed:{escapedContent:({content:e})=>e.map(s.Xv),highlightedLineNumbers(){return new Set(this.highlights.map((({line:e})=>e)))},syntaxNameNormalized(){const e={occ:a.Z.objectiveC.key.url};return e[this.syntax]||this.syntax}},watch:{content:{handler:"syntaxHighlightLines",immediate:!0}},methods:{isHighlighted(e){return this.highlightedLineNumbers.has(this.lineNumberFor(e))},lineNumberFor(e){return this.startLineNumber+e},async syntaxHighlightLines(){let e;try{await b(this.syntaxNameNormalized),e=_(this.content,this.syntaxNameNormalized)}catch(t){e=this.escapedContent}this.syntaxHighlightedLines=e.map((e=>""===e?"\n":e))}}},X=U,K=(0,O.Z)(X,i,r,!1,null,"570d1ba0",null),J=K.exports},2020:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var i=function(){var e=this,t=e._self._c;return t("WordBreak",{attrs:{tag:"code"}},[e._t("default")],2)},r=[],s=n(352),a={name:"CodeVoice",components:{WordBreak:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,i,r,!1,null,"05f4a5b7",null),u=c.exports},3938:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var i=function(){var e=this,t=e._self._c;return t("div",{staticClass:"column",style:e.style},[e._t("default")],2)},r=[],s={name:"Column",props:{span:{type:Number,default:null}},computed:{style:({span:e})=>({"--col-span":e})}},a=s,o=n(1001),l=(0,o.Z)(a,i,r,!1,null,"0f654188",null),c=l.exports},889:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var i=function(){var e=this,t=e._self._c;return t("div",{staticClass:"device-frame",class:e.classes,style:e.styles,attrs:{"data-device":e.device}},[t("div",{staticClass:"device-screen",class:{"with-device":e.currentDeviceAttrs}},[e._t("default")],2),t("div",{staticClass:"device"})])},r=[],s={},a=n(9089);const o=e=>e&&e!==1/0;var l={name:"DeviceFrame",props:{device:{type:String,required:!0}},provide:{insideDeviceFrame:!0},computed:{currentDeviceAttrs:({device:e})=>(0,a.$8)(["theme","device-frames",e],s[e]),styles:({toPixel:e,toUrl:t,toPct:n,currentDeviceAttrs:i={},toVal:r})=>{const{screenTop:s,screenLeft:a,screenWidth:o,frameWidth:l,lightUrl:c,darkUrl:u,screenHeight:A,frameHeight:d}=i;return{"--screen-top":n(s/d),"--screen-left":n(a/l),"--screen-width":n(o/l),"--screen-height":n(A/d),"--screen-aspect":r(o/A),"--frame-width":e(l),"--frame-aspect":r(l/d),"--device-light-url":t(c),"--device-dark-url":t(u)}},classes:({currentDeviceAttrs:e})=>({"no-device":!e})},methods:{toPixel:e=>o(e)?`${e}px`:null,toUrl:e=>o(e)?`url(${e})`:null,toPct:e=>o(e)?100*e+"%":null,toVal:e=>o(e)?e:null}},c=l,u=n(1001),A=(0,u.Z)(c,i,r,!1,null,"c2eac128",null),d=A.exports},8039:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var i=function(){var e=this,t=e._self._c;return t(`h${e.level}`,{tag:"component",attrs:{id:e.anchor}},[e.shouldLink?t("router-link",{staticClass:"header-anchor",attrs:{to:{hash:`#${e.anchor}`},"data-after-text":e.$t("accessibility.in-page-link")},on:{click:function(t){return e.handleFocusAndScroll(e.anchor)}}},[e._t("default"),t("LinkIcon",{staticClass:"icon",attrs:{"aria-hidden":"true"}})],2):[e._t("default")]],2)},r=[],s=n(3704),a=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"link-icon",attrs:{viewBox:"0 0 20 20"}},[t("path",{attrs:{d:"M19.34,4.88L15.12,.66c-.87-.87-2.3-.87-3.17,0l-3.55,3.56-1.38,1.38-1.4,1.4c-.47,.47-.68,1.09-.64,1.7,.02,.29,.09,.58,.21,.84,.11,.23,.24,.44,.43,.63l4.22,4.22h0l.53-.53,.53-.53h0l-4.22-4.22c-.29-.29-.29-.77,0-1.06l1.4-1.4,.91-.91,.58-.58,.55-.55,2.9-2.9c.29-.29,.77-.29,1.06,0l4.22,4.22c.29,.29,.29,.77,0,1.06l-2.9,2.9c.14,.24,.24,.49,.31,.75,.08,.32,.11,.64,.09,.96l3.55-3.55c.87-.87,.87-2.3,0-3.17Z"}}),t("path",{attrs:{d:"M14.41,9.82s0,0,0,0l-4.22-4.22h0l-.53,.53-.53,.53h0l4.22,4.22c.29,.29,.29,.77,0,1.06l-1.4,1.4-.91,.91-.58,.58-.55,.55h0l-2.9,2.9c-.29,.29-.77,.29-1.06,0L1.73,14.04c-.29-.29-.29-.77,0-1.06l2.9-2.9c-.14-.24-.24-.49-.31-.75-.08-.32-.11-.64-.09-.97L.68,11.93c-.87,.87-.87,2.3,0,3.17l4.22,4.22c.87,.87,2.3,.87,3.17,0l3.55-3.55,1.38-1.38,1.4-1.4c.47-.47,.68-1.09,.64-1.7-.02-.29-.09-.58-.21-.84-.11-.22-.24-.44-.43-.62Z"}})])},o=[],l=n(3453),c={name:"LinkIcon",components:{SVGIcon:l.Z}},u=c,A=n(1001),d=(0,A.Z)(u,a,o,!1,null,null,null),p=d.exports,h={name:"LinkableHeading",mixins:[s.Z],components:{LinkIcon:p},props:{anchor:{type:String,required:!1},level:{type:Number,default:()=>2,validator:e=>e>=1&&e<=6}},inject:{enableMinimized:{default:()=>!1},isTargetIDE:{default:()=>!1}},computed:{shouldLink:({anchor:e,enableMinimized:t,isTargetIDE:n})=>!!e&&!t&&!n}},g=h,m=(0,A.Z)(g,i,r,!1,null,"24fddf6a",null),f=m.exports},2387:function(e,t,n){"use strict";n.d(t,{Z:function(){return N}});var i=function(){var e=this,t=e._self._c;return t(e.refComponent,{tag:"component",attrs:{url:e.urlWithParams,"is-active":e.isActiveComputed}},[e._t("default")],2)},r=[],s=n(2449),a=n(7192),o=n(4589),l=function(){var e=this,t=e._self._c;return t("ReferenceExternal",e._b({},"ReferenceExternal",e.$props,!1),[t("CodeVoice",[e._t("default")],2)],1)},c=[],u=function(){var e=this,t=e._self._c;return e.isActive?t("a",{attrs:{href:e.url}},[e._t("default")],2):t("span",[e._t("default")],2)},A=[],d={name:"ReferenceExternal",props:{url:{type:String,required:!0},isActive:{type:Boolean,default:!0}}},p=d,h=n(1001),g=(0,h.Z)(p,u,A,!1,null,null,null),m=g.exports,f=n(2020),v={name:"ReferenceExternalSymbol",props:m.props,components:{ReferenceExternal:m,CodeVoice:f.Z}},b=v,y=(0,h.Z)(b,l,c,!1,null,null,null),C=y.exports,I=function(){var e=this,t=e._self._c;return t("ReferenceInternal",e._b({},"ReferenceInternal",e.$props,!1),[t("CodeVoice",[e._t("default")],2)],1)},w=[],E=function(){var e=this,t=e._self._c;return e.isActive?t("router-link",{attrs:{to:e.url}},[e._t("default")],2):t("span",[e._t("default")],2)},B=[],x={name:"ReferenceInternal",props:{url:{type:String,required:!0},isActive:{type:Boolean,default:!0}}},k=x,_=(0,h.Z)(k,E,B,!1,null,null,null),S=_.exports,T={name:"ReferenceInternalSymbol",props:S.props,components:{ReferenceInternal:S,CodeVoice:f.Z}},Q=T,L=(0,h.Z)(Q,I,w,!1,null,null,null),M=L.exports,Z={name:"Reference",computed:{isInternal({url:e}){if(!e.startsWith("/")&&!e.startsWith("#"))return!1;const{resolved:{name:t}={}}=this.$router.resolve(e)||{};return t!==o.vL},isSymbolReference(){return"symbol"===this.kind&&!this.hasInlineFormatting&&(this.role===a.L.symbol||this.role===a.L.dictionarySymbol)},isDisplaySymbol({isSymbolReference:e,titleStyle:t,ideTitle:n}){return n?e&&"symbol"===t:e},refComponent({isInternal:e,isDisplaySymbol:t}){return e?t?M:S:t?C:m},urlWithParams({isInternal:e}){return e?(0,s.Q2)(this.url,this.$route.query):this.url},isActiveComputed({url:e,isActive:t}){return!(!e||!t)}},props:{url:{type:String,required:!0},kind:{type:String,required:!1},role:{type:String,required:!1},isActive:{type:Boolean,required:!1,default:!0},ideTitle:{type:String,required:!1},titleStyle:{type:String,required:!1},hasInlineFormatting:{type:Boolean,default:!1}}},R=Z,j=(0,h.Z)(R,i,r,!1,null,null,null),N=j.exports},3002:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var i=function(){var e=this,t=e._self._c;return t("div",{staticClass:"row",class:{"with-columns":e.columns},style:e.style},[e._t("default")],2)},r=[],s=n(5381),a={name:"Row",props:{columns:{type:Object,required:!1,validator:e=>Object.entries(e).every((([e,t])=>s.L3[e]&&"number"===typeof t))},gap:{type:Number,required:!1}},computed:{style:({columns:e={},gap:t})=>({"--col-count-large":e.large,"--col-count-medium":e.medium,"--col-count-small":e.small||1,"--col-gap":t&&`${t}px`})}},o=a,l=n(1001),c=(0,l.Z)(o,i,r,!1,null,"1bcb2d0f",null),u=c.exports},1295:function(e,t,n){"use strict";n.d(t,{Z:function(){return A}});var i=n(5953);const r={link:"link",reference:"reference",text:"text"};var s,a,o={name:"DestinationDataProvider",mixins:[i.Z],props:{destination:{type:Object,required:!0,default:()=>({})}},inject:{isTargetIDE:{default:()=>!1}},constants:{DestinationType:r},computed:{isExternal:({reference:e,destination:t})=>e.type===r.link||t.type===r.link,shouldAppendOpensInBrowser:({isExternal:e,isTargetIDE:t})=>e&&t,reference:({references:e,destination:t})=>e[t.identifier]||{},linkUrl:({destination:e,reference:t})=>({[r.link]:e.destination,[r.reference]:t.url,[r.text]:e.text}[e.type]),linkTitle:({reference:e,destination:t})=>({[r.link]:t.title,[r.reference]:t.overridingTitle||e.title,[r.text]:""}[t.type])},methods:{formatAriaLabel(e){return this.shouldAppendOpensInBrowser?`${e} (opens in browser)`:e}},render(){return this.$scopedSlots.default({url:this.linkUrl||"",title:this.linkTitle||"",formatAriaLabel:this.formatAriaLabel,isExternal:this.isExternal})}},l=o,c=n(1001),u=(0,c.Z)(l,s,a,!1,null,null,null),A=u.exports},2627:function(e,t,n){"use strict";n.d(t,{Z:function(){return P}});var i=function(){var e=this,t=e._self._c;return t("div",{staticClass:"TopicsLinkCardGrid"},[t("Row",{attrs:{columns:{large:e.compactCards?3:2,medium:2}}},e._l(e.items,(function(n){return t("Column",{key:n.title},[t("TopicsLinkCardGridItem",{attrs:{item:n,compact:e.compactCards}})],1)})),1)],1)},r=[],s=n(3002),a=n(3938),o=n(3946),l=function(){var e=this,t=e._self._c;return t("Card",{staticClass:"reference-card-grid-item",attrs:{url:e.item.url,image:e.imageReferences.card,title:e.item.title,"floating-style":"",size:e.cardSize,"link-text":e.compact?"":e.$t(e.linkText)},scopedSlots:e._u([e.imageReferences.card?null:{key:"cover",fn:function({classes:n}){return[t("div",{staticClass:"reference-card-grid-item__image",class:n},[t("TopicTypeIcon",{staticClass:"reference-card-grid-item__icon",attrs:{type:e.item.role,"image-override":e.references[e.imageReferences.icon]}})],1)]}}],null,!0)},[e.compact?e._e():t("ContentNode",{attrs:{content:e.item.abstract}})],1)},c=[],u=function(){var e=this,t=e._self._c;return t("Reference",e._b({staticClass:"card",class:e.classes,attrs:{url:e.url}},"Reference",e.linkAriaTags,!1),[t("CardCover",{attrs:{variants:e.imageVariants,rounded:e.floatingStyle,alt:e.imageReference.alt,"aria-hidden":"true"},scopedSlots:e._u([{key:"default",fn:function(t){return[e._t("cover",null,null,t)]}}],null,!0)}),t("div",{staticClass:"details",attrs:{"aria-hidden":"true"}},[e.eyebrow?t("div",{staticClass:"eyebrow",attrs:{id:e.eyebrowId,"aria-label":e.formatAriaLabel(`- ${e.eyebrow}`)}},[e._v(" "+e._s(e.eyebrow)+" ")]):e._e(),t("div",{staticClass:"title",attrs:{id:e.titleId}},[e._v(" "+e._s(e.title)+" ")]),e.$slots.default?t("div",{staticClass:"card-content",attrs:{id:e.contentId}},[e._t("default")],2):e._e(),e.linkText?t(e.hasButton?"ButtonLink":"div",{tag:"component",staticClass:"link"},[e._v(" "+e._s(e.linkText)+" "),e.showExternalLinks?t("DiagonalArrowIcon",{staticClass:"icon-inline link-icon"}):e.hasButton?e._e():t("InlineChevronRightIcon",{staticClass:"icon-inline link-icon"})],1):e._e()],1)],1)},A=[],d=n(5281),p=n(8785),h=n(6817),g=n(2387),m={small:"small",large:"large"},f=n(5953),v=function(){var e=this,t=e._self._c;return t("div",{staticClass:"card-cover-wrap",class:{rounded:e.rounded}},[e._t("default",(function(){return[t("ImageAsset",{staticClass:"card-cover",attrs:{variants:e.variants,alt:e.alt}})]}),{classes:"card-cover"})],2)},b=[],y=n(6769),C={name:"CardCover",components:{ImageAsset:y.Z},props:{variants:{type:Array,required:!0},rounded:{type:Boolean,default:!1},alt:{type:String,default:null}}},I=C,w=n(1001),E=(0,w.Z)(I,v,b,!1,null,"28b14a83",null),B=E.exports,x={name:"Card",components:{Reference:g.Z,DiagonalArrowIcon:h.Z,InlineChevronRightIcon:p.Z,CardCover:B,ButtonLink:d.Z},constants:{CardSize:m},mixins:[f.Z],computed:{titleId:({_uid:e})=>`card_title_${e}`,contentId:({_uid:e})=>`card_content_${e}`,eyebrowId:({_uid:e})=>`card_eyebrow_${e}`,linkAriaTags:({titleId:e,eyebrowId:t,contentId:n,eyebrow:i,$slots:r})=>({"aria-labelledby":e.concat(i?` ${t}`:""),"aria-describedby":r.default?`${n}`:null}),classes:({size:e,floatingStyle:t})=>[e,{"floating-style":t}],imageReference:({image:e,references:t})=>t[e]||{},imageVariants:({imageReference:e})=>e.variants||[]},props:{linkText:{type:String,required:!1},url:{type:String,required:!1,default:""},eyebrow:{type:String,required:!1},image:{type:String,required:!1},size:{type:String,validator:e=>Object.prototype.hasOwnProperty.call(m,e)},title:{type:String,required:!0},hasButton:{type:Boolean,default:()=>!1},floatingStyle:{type:Boolean,default:!1},showExternalLinks:{type:Boolean,default:!1},formatAriaLabel:{type:Function,default:e=>e}}},k=x,_=(0,w.Z)(k,u,A,!1,null,"1651529a",null),S=_.exports,T=n(3570),Q=n(7192);const L={[Q.L.article]:"documentation.card.read-article",[Q.L.overview]:"documentation.card.start-tutorial",[Q.L.collection]:"documentation.card.view-api",[Q.L.symbol]:"documentation.card.view-symbol",[Q.L.sampleCode]:"documentation.card.view-sample-code"};var M={name:"TopicsLinkCardGridItem",components:{TopicTypeIcon:T.Z,Card:S,ContentNode:()=>Promise.resolve().then(n.bind(n,8843))},mixins:[f.Z],props:{item:{type:Object,required:!0},compact:{type:Boolean,default:!0}},computed:{imageReferences:({item:e})=>(e.images||[]).reduce(((e,t)=>(e[t.type]=t.identifier,e)),{icon:null,card:null}),linkText:({item:e})=>L[e.role]||"documentation.card.learn-more",cardSize:({compact:e})=>e?void 0:m.large}},Z=M,R=(0,w.Z)(Z,l,c,!1,null,"87dd3302",null),j=R.exports,N={name:"TopicsLinkCardGrid",components:{TopicsLinkCardGridItem:j,Column:a.Z,Row:s.Z},props:{items:{type:Array,required:!0},topicStyle:{type:String,default:o.o.compactGrid,validator:e=>e===o.o.compactGrid||e===o.o.detailedGrid}},computed:{compactCards:({topicStyle:e})=>e===o.o.compactGrid}},D=N,O=(0,w.Z)(D,i,r,!1,null,null,null),P=O.exports},1576:function(e,t,n){"use strict";n.d(t,{Z:function(){return g}});var i=function(){var e=this,t=e._self._c;return t("div",{staticClass:"col",class:e.classes},[e._t("default")],2)},r=[];const s=0,a=12,o=new Set(["large","medium","small"]),l=e=>({type:Object,default:()=>({}),validator:t=>Object.keys(t).every((n=>o.has(n)&&e(t[n])))}),c=l((e=>"boolean"===typeof e)),u=l((e=>"number"===typeof e&&e>=s&&e<=a));var A={name:"GridColumn",props:{isCentered:c,isUnCentered:c,span:{...u,default:()=>({large:a})}},computed:{classes:function(){return{[`large-${this.span.large}`]:void 0!==this.span.large,[`medium-${this.span.medium}`]:void 0!==this.span.medium,[`small-${this.span.small}`]:void 0!==this.span.small,"large-centered":!!this.isCentered.large,"medium-centered":!!this.isCentered.medium,"small-centered":!!this.isCentered.small,"large-uncentered":!!this.isUnCentered.large,"medium-uncentered":!!this.isUnCentered.medium,"small-uncentered":!!this.isUnCentered.small}}}},d=A,p=n(1001),h=(0,p.Z)(d,i,r,!1,null,"2ee3ad8b",null),g=h.exports},9649:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var i=function(){var e=this,t=e._self._c;return t("div",{staticClass:"row"},[e._t("default")],2)},r=[],s={name:"GridRow"},a=s,o=n(1001),l=(0,o.Z)(a,i,r,!1,null,"be73599c",null),c=l.exports},5692:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var i=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"article-icon",attrs:{viewBox:"0 0 14 14",themeId:"article"}},[t("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),t("path",{attrs:{d:"M7 1h1v4h-1z"}}),t("path",{attrs:{d:"M7 5h5v1h-5z"}})])},r=[],s=n(3453),a={name:"ArticleIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,i,r,!1,null,null,null),u=c.exports},7775:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var i=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"curly-brackets-icon",attrs:{viewBox:"0 0 14 14",themeId:"curly-brackets"}},[t("path",{attrs:{d:"M9.987 14h-0.814v-0.916h0.36c0.137 0 0.253-0.038 0.349-0.116 0.099-0.080 0.179-0.188 0.239-0.318 0.064-0.134 0.11-0.298 0.139-0.483 0.031-0.186 0.045-0.38 0.045-0.58v-2.115c0-0.417 0.046-0.781 0.139-1.083 0.092-0.3 0.2-0.554 0.322-0.754 0.127-0.203 0.246-0.353 0.366-0.458 0.087-0.076 0.155-0.131 0.207-0.169-0.052-0.037-0.12-0.093-0.207-0.167-0.12-0.105-0.239-0.255-0.366-0.459-0.122-0.2-0.23-0.453-0.322-0.754-0.093-0.3-0.139-0.665-0.139-1.082v-2.13c0-0.199-0.014-0.392-0.045-0.572-0.029-0.182-0.076-0.345-0.139-0.483-0.060-0.137-0.141-0.246-0.239-0.328-0.095-0.076-0.212-0.115-0.349-0.115h-0.36v-0.916h0.814c0.442 0 0.788 0.18 1.030 0.538 0.238 0.352 0.358 0.826 0.358 1.407v2.236c0 0.3 0.015 0.597 0.044 0.886 0.030 0.287 0.086 0.544 0.164 0.765 0.077 0.216 0.184 0.392 0.318 0.522 0.129 0.124 0.298 0.188 0.503 0.188h0.058v0.916h-0.058c-0.206 0-0.374 0.064-0.503 0.188-0.134 0.129-0.242 0.305-0.318 0.521-0.078 0.223-0.134 0.48-0.164 0.766-0.029 0.288-0.044 0.587-0.044 0.884v2.236c0 0.582-0.12 1.055-0.358 1.409-0.242 0.358-0.588 0.538-1.030 0.538z"}}),t("path",{attrs:{d:"M4.827 14h-0.814c-0.442 0-0.788-0.18-1.030-0.538-0.238-0.352-0.358-0.825-0.358-1.409v-2.221c0-0.301-0.015-0.599-0.045-0.886-0.029-0.287-0.085-0.544-0.163-0.764-0.077-0.216-0.184-0.393-0.318-0.522-0.131-0.127-0.296-0.188-0.503-0.188h-0.058v-0.916h0.058c0.208 0 0.373-0.063 0.503-0.188 0.135-0.129 0.242-0.304 0.318-0.522 0.078-0.22 0.134-0.477 0.163-0.765 0.030-0.286 0.045-0.585 0.045-0.886v-2.251c0-0.582 0.12-1.055 0.358-1.407 0.242-0.358 0.588-0.538 1.030-0.538h0.814v0.916h-0.36c-0.138 0-0.252 0.038-0.349 0.116-0.099 0.079-0.179 0.189-0.239 0.327-0.064 0.139-0.11 0.302-0.141 0.483-0.029 0.18-0.044 0.373-0.044 0.572v2.13c0 0.417-0.046 0.782-0.138 1.082-0.092 0.302-0.201 0.556-0.324 0.754-0.123 0.201-0.246 0.356-0.366 0.459-0.086 0.074-0.153 0.13-0.206 0.167 0.052 0.038 0.12 0.093 0.206 0.169 0.12 0.103 0.243 0.258 0.366 0.458s0.232 0.453 0.324 0.754c0.092 0.302 0.138 0.666 0.138 1.083v2.115c0 0.2 0.015 0.394 0.044 0.58 0.030 0.186 0.077 0.349 0.139 0.482 0.062 0.132 0.142 0.239 0.241 0.32 0.096 0.079 0.21 0.116 0.349 0.116h0.36z"}})])},r=[],s=n(3453),a={name:"CurlyBracketsIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,i,r,!1,null,null,null),u=c.exports},6817:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var i=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"diagonal-arrow",attrs:{viewBox:"0 0 14 14",themeId:"diagonal-arrow"}},[t("path",{attrs:{d:"M0.010 12.881l10.429-10.477-3.764 0.824-0.339-1.549 7.653-1.679-1.717 7.622-1.546-0.349 0.847-3.759-10.442 10.487z"}})])},r=[],s=n(3453),a={name:"DiagonalArrowIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,i,r,!1,null,null,null),u=c.exports},8633:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var i=function(){var e=this,t=e._self._c;return t("SVGIcon",{attrs:{viewBox:"0 0 14 14",themeId:"path"}},[t("path",{attrs:{d:"M0 0.948h2.8v2.8h-2.8z"}}),t("path",{attrs:{d:"M11.2 10.252h2.8v2.8h-2.8z"}}),t("path",{attrs:{d:"M6.533 1.852h0.933v10.267h-0.933z"}}),t("path",{attrs:{d:"M2.8 1.852h4.667v0.933h-4.667z"}}),t("path",{attrs:{d:"M6.533 11.186h4.667v0.933h-4.667z"}})])},r=[],s=n(3453),a={name:"PathIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,i,r,!1,null,null,null),u=c.exports},6698:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var i=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"play-icon",attrs:{viewBox:"0 0 14 14",themeId:"play"}},[t("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),t("path",{attrs:{d:"M10.195 7.010l-5 3v-6l5 3z"}})])},r=[],s=n(3453),a={name:"PlayIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,i,r,!1,null,null,null),u=c.exports},7834:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var i=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"swift-file-icon",attrs:{viewBox:"0 0 15 14",themeId:"swift-file"}},[t("path",{attrs:{d:"M14.93,13.56A2.15,2.15,0,0,0,15,13a5.37,5.37,0,0,0-1.27-3.24A6.08,6.08,0,0,0,14,7.91,9.32,9.32,0,0,0,9.21.31a8.51,8.51,0,0,1,1.78,5,6.4,6.4,0,0,1-.41,2.18A45.06,45.06,0,0,1,3.25,1.54,44.57,44.57,0,0,0,7.54,6.9,45.32,45.32,0,0,1,1.47,2.32,35.69,35.69,0,0,0,8.56,9.94a6.06,6.06,0,0,1-3.26.85A9.48,9.48,0,0,1,0,8.91a10,10,0,0,0,8.1,4.72c2.55,0,3.25-1.2,4.72-1.2a2.09,2.09,0,0,1,1.91,1.15C14.79,13.69,14.88,13.75,14.93,13.56Z"}})])},r=[],s=n(3453),a={name:"SwiftFileIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,i,r,!1,null,"c01a6890",null),u=c.exports},9001:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var i=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"technology-icon",attrs:{viewBox:"0 0 14 14",themeId:"technology"}},[t("path",{attrs:{d:"M3.39,9l3.16,1.84.47.28.47-.28L10.61,9l.45.26,1.08.63L7,12.91l-5.16-3,1.08-.64L3.39,9M7,0,0,4.1,2.47,5.55,0,7,2.47,8.44,0,9.9,7,14l7-4.1L11.53,8.45,14,7,11.53,5.56,14,4.1ZM7,7.12,5.87,6.45l-1.54-.9L3.39,5,1.85,4.1,7,1.08l5.17,3L10.6,5l-.93.55-1.54.91ZM7,10,3.39,7.9,1.85,7,3.4,6.09,4.94,7,7,8.2,9.06,7,10.6,6.1,12.15,7l-1.55.9Z"}})])},r=[],s=n(3453),a={name:"TechnologyIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,i,r,!1,null,null,null),u=c.exports},8638:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var i=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"tutorial-icon",attrs:{viewBox:"0 0 14 14",themeId:"tutorial"}},[t("path",{attrs:{d:"M0.933 6.067h3.733v1.867h-3.733v-1.867z"}}),t("path",{attrs:{d:"M0.933 1.867h3.733v1.867h-3.733v-1.867z"}}),t("path",{attrs:{d:"M13.067 1.867v10.267h-7.467v-10.267zM12.133 2.8h-5.6v8.4h5.6z"}}),t("path",{attrs:{d:"M0.933 10.267h3.733v1.867h-3.733v-1.867z"}})])},r=[],s=n(3453),a={name:"TutorialIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,i,r,!1,null,null,null),u=c.exports},6769:function(e,t,n){"use strict";n.d(t,{Z:function(){return m}});var i=function(){var e=this,t=e._self._c;return e.fallbackImageSrcSet?t("img",{staticClass:"fallback",attrs:{title:e.$t("error.image"),decoding:"async",alt:e.alt,srcset:e.fallbackImageSrcSet}}):t("picture",[e.prefersAuto&&e.darkVariantAttributes?t("source",{attrs:{media:"(prefers-color-scheme: dark)",srcset:e.darkVariantAttributes.srcSet}}):e._e(),e.prefersDark&&e.darkVariantAttributes?t("img",e._b({ref:"img",attrs:{decoding:"async","data-orientation":e.orientation,loading:e.loading,alt:e.alt,width:e.darkVariantAttributes.width||e.optimalWidth,height:e.darkVariantAttributes.width||e.optimalWidth?"auto":null},on:{error:e.handleImageLoadError}},"img",e.darkVariantAttributes,!1)):t("img",e._b({ref:"img",attrs:{decoding:"async","data-orientation":e.orientation,loading:e.loading,alt:e.alt,width:e.defaultAttributes.width||e.optimalWidth,height:e.defaultAttributes.width||e.optimalWidth?"auto":null},on:{error:e.handleImageLoadError}},"img",e.defaultAttributes,!1))])},r=[],s=n(5947),a={props:{variants:{type:Array,required:!0}},computed:{variantsGroupedByAppearance(){return(0,s.XV)(this.variants)},lightVariants(){return(0,s.u)(this.variantsGroupedByAppearance.light)},darkVariants(){return(0,s.u)(this.variantsGroupedByAppearance.dark)}}},o=n(4030),l=n(9804),c="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJZCAYAAABRKlHVAAAACXBIWXMAABYlAAAWJQFJUiTwAAAXvUlEQVR4nO3d72pU57vH4aWmSoIBqSGpQaFgsVDoMexj22e2D6Cvav8plVq0amK0rbGJ9V83d+hs/Llb80wy6ztr1lwXBPoizcyamRfz8XmedZ/56quv/qcDAAAIWOm67r+80AAAQMJZrzIAAJAiQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQs+KlBmBR3L59u1tdXe0uX77cra2ted8AFpAAAWAhHBwcdPv7+0c/u7u73fnz57utra3u0qVLR/8NwGIQIAAshCdPnvzH03z58mV37969o5+KkPqplREAhk2AALAQ3g+Qd/32229HPxUjm5ub3fb2tjcVYKAcQgdg8Cou3rx5c+zTrN9ZWfFvawBDJkAAGLwKkFa2YQEMmwABYNBqVeND26/eVedAzp075w0FGDABAsCgTbP6UQECwLAJEAAGbWdnp+np1cqH7VcAwydAABisutXu4eFh09Oz+gGwGAQIAIO1t7fX/NTq9rsADJ8AAWCwWg+f1yT0tbU1byTAAhAgAAzS/v7+0RasFs5+ACwOAQLAILWufpSNjQ1vIsCCECAADFLr7XfX19ePtmABsBgECACDU6sfNYCwhe1XAItFgAAwOK2rHzX7w+13ARbLivcL4MNu377tFZqRGzduHPuH6uB5a4CcPXu2u3PnziCubaLlGgGWmQABOEbdjYnTa90q9fTp0+bHevXq1dEPAIvDFiwAIlq3Su3s7HhDAEZMgADQu9azGgcHB93r16+9IQAjJkAA6F3r6sfe3p43A2DkBAgAvWs9/zHN8EEAFpMAAaBXNSSwhgUep+589fbtW28GwMgJEAB61br96vHjx94IgCUgQADoVcv2q5p6/uzZM28EwBIQIAD0prZfra2tHfvnWwcPArD4DCIEmIH6ot160HqZtJz96KaY/XHmzJnuk08+mcsrWAfka0o7AKcjQABm4MKFC9329raX8gTqS/3h4WHT//jxxx/P7XV+/vy5AAGYAVuwAJiraSafb25uerMAFpwAAWCuWs9/tJ4nAWDYBAgAc7O/v9+8rWlra8sbBTACAgSAuZlm8nnrPBEAhk2AADAXNfujdftV3U2rtmABsPgECABzUfFREdLCLY4BxkOAADAXrasf586ds/0KYEQECABxdfC8NUAqPipCABgHAQJAXGt8dLZfAYyOAAEgrnX4YB08rwPoAIyHAAEg6uDgoHn2h7MfAOOz4j0FWCz1Bf758+fd69ev/+N5r6ysdBcvXhz8tPDd3d3m3zV8EGB8BAjAAqgVg9q2VIP7jrt1bW1bqnMT9eV9iIe3W89/rK6umv0BMEICBGDgHjx40D18+LD5SVas1O/XSsP29na3ubk5mAucZvaH1Q+AcRIgAANVX9Rv3brVHR4enugJ1v9/7969oy/9169fH8RqSK3gtHL+A2CcHEIHGKA653Hz5s0Tx8e79vf3j0KmdeWhL/X4Zn8AIEAABqa+qN+9e3emwVAhUxEyT9Osfpj9ATBeAgRgYCo+ZrHy8b76m7Ula1729vaaHrlWPmy/AhgvAQIwILVFaZop4dOqg+m1vSutDsa3RpXVD4BxEyAAA5JYobh//378glsnn3cCBGD0BAjAQNTKR+uE8NOoQ+mJx3lX66pOzf0Y+iBFAE5HgAAMRJ9br96XfqzW4DH7A2D8BAjAQNTKRMpQY8fhc4DxEyAAA5HcFpU6iD7t7I/aggXAuAkQgAFIrn50f4dBQsVH62NZ/QBYDgIEgN60Dh+s2R/ufgWwHAQIAL2oLWWtKztWPwCWhwABGID19fXok6gVh761Tj7vzP4AWCoCBGAgElEwkZi10br9qg6epwMMgPkRIAADkfwSfvHixV7/ft1lq/WuXlY/AJaLAAEYiOQ5iL4fa3d3t/l3NzY2en0uAAyLAAEYiFoJSMzBqJWWvrdgtc7+WF1dNfsDYMkIEIAB2d7e7v3JXLlypde/X2c/Wmd/bG1t9fpcABgeAQIwILUKUqsCfamtV32fNWld/ejcfhdgKQkQgIH57LPPerkjVoXNp59+2uvF1spHa4BUbCXv/AXAMAgQgIGpMxE3btyY6Zfz+lt9hc27Wm+9251i9aN1excAwyRAAAaoDolXhMzigHatfHz55ZeRw96twwcrhE4SIBUft27d6u7du3eCZwfAEAgQgIGqCPniiy9ONSdjc3Oz+/zzzyNbnWr2x+HhYdPvnuSaJvFRj1G3+Z1mtQWA4VjxXgAMV4VDnduoL+z1hbvlS/dkdaHuqJW8xe00QTBtgLwbHxO1ClKrO4mp7gDMjgABWAB156r6uXbtWre/v/9/k8Yn08bri3iFx+T35mGa2R/TRsP78dH9HSW3b98+2l7mMDvA4hAgAAtksroxtNvXVnxMYug4004+v3v37r9u7ZqsjNRWNQAWgzMgAJxaX7M/Kj6O29pVcVK/B8BiECAAnEqtQrSe/6j4aD2X0hIfE63nYwCYPwECwKn0sfoxTXy8+//U2RgAhk2AAHAqraFQ51da7n51kviYqEPpBhUCDJsAAeDE6uB53ZWrRcvqx2nio3vnUDoAwyVAADix1snn3d9DET/ktPEx4VA6wLAJEABOrDUY6uD5h2Z/zCo+Jupv1bR0AIZHgABwIrX1qnX2x4fOfsw6PiZqUnrr9jAAcgQIwIKoL/tDOmA9TTT82/DBvuJj4s6dO82RBECGAAFYAPUv+d99993RAeuhREjr7XfX19f/cfZHYnZHvVY//vijO2MBDIgAARi4+pI+ub1sHbAeQoTUc2p9Dv+0/ar+/9RB8XrNajsWAMMgQAAG7J++qNcX6ps3b8516N5phg8m4+Pdx3QoHWAYBAjAQNWX9H/7ol6rD7UqMo8IqTMVrQFSqx81gHBiHvExUasg04QTAP0QIAAD1HI4ezJ0L/2l+qSrH/OMj4l6/HmuHAEgQAAGpaLi22+/bT6c/fbt26M7Pe3s7MQuo3X4YB08nwTIEOKj+/v1refhUDrA/AgQgIGoL8V1p6sXL15M/YTu37/f/fzzz71fSK0e1BmUFkOLjwmT0gHmS4AADEB9sf/mm29ONbOiViZ++OGHXi9mmtvm1vmPocXHRG0je/DgwTCeDMCSESAAc1bxUWc5Xr9+feon8scffxyFTF9aA2R1dXXwKw0PHz50KB1gDgQIwBzVF/pataizHLPy559/Ht2md9bnHOrLeuvfrABZhG1ODqUD5AkQgDmZbE/666+/Zv4EaivX119/faotXe+bZrXg6dOnM3vcPjmUDpAnQADm4Jdfful9haBWVeqOWq2Hxj+kvqC3br86c+bMqR8vqV6fupMYABkCBCDsp59+6h49ehR50IqQurPWaVckpln96GNFp2/7+/tHgwoB6J8AAQiZTC+fx/akip7TPG5yzsi87O7uTnWXLwBORoAABFR81GHz+pf2eakIqa1f06pzJLPYxrUIahXEoXSAfgkQgJ7VF9rvv//+RAMGZ622fk07sLB18vkYVCjWeRCH0gH6I0AAejSZ8VG3xh2KCopaDWn1+PHjpfqI1IqPQ+kA/REgAD2p7VYVH7Oc8TErredB6hpmMSBx0dR1L8IcE4BFJEAAelCHmevA+RDjo6yvrzf93jJtv3pfvYcOpQPMngABmLG6m9LQ//X86tWrx/5OnYOY5va7Y2RSOsDsCRCAGaqzFUOfJ/HRRx91a2trx/5excdQV3CSaiXLoXSA2REgADNy2lkbKRsbG02PtAjXklDxUWd5AJiNFa8jwOnVLXbnOeNjGi0BUneCevbs2ZCe9lzVHJQLFy4s8SsAMDtWQABm4NWrVwvxMq6urnbnz58/9veW/ezHPxnSrZQBFpkAAVgiW1tbTRdbAwsBoA8CBGCJXLp06diLrbs+LcqKDgCLR4AALImKj3Pnzh17sWZfANAnAQKwJC5fvtx0ocs8fBCA/gkQgCVQKx8t26/M/gCgbwIEYAm0xEdn9QOAAAECsAQ2NzePvcgauPf777/7OADQKwECMHI192Ntbe3YizT7A4AEAQIwcq2Hz83+ACBBgACM3MbGxrEX+PLly+7Fixc+CgD0ToAAjNjq6urRFqzj7Ozs+BgAECFAAEZsa2ur6eJ+/fVXHwMAIgQIwIi13H53f3+/e/XqlY8BABECBGCkKj5qAOFxnjx54iMAQIwAARiplrtf1ewP268ASBIgACNUKx8t269q9sfbt299BACIESAAI9QSH2Vvb8/bD0CUAAEYoc3NzWMvqmZ/PH/+3NsPQJQAARiZmvuxtrZ27EXV9isASBMgACPTcvi8PHr0yFsPQJwAARiZjY2NYy/o4ODA7A8A5kKAAIzI6urq0Ras4+zu7nrbAZgLAQIwIltbW00XY/YHAPMiQABGxOwPAIZuxTsE8GFXrlxZiFfowoULRwMIj/PkyZPmv1krKmfP+rcqAGZHgAAcY3t7ezQv0Zs3b5pvv1urKVevXu39OQGwXPyzFsASmWb1o/V2vgAwDQECsET29vaaLra2crWcJwGAaQkQgCXx8uXL7vDwsOlirX4A0BcBArAkdnZ2mi9UgADQFwECsCRaD5/XIMO1tTUfCwB6IUAAlkDFR23BatE6zBAATkKAACyB1tWPrnGYIQCclAABGLlpZ3/UFiwA6IsAARi5io+KkBZWPwDomwABGLnW4YM1+8PdrwDomwABGLE6eL6/v990gVY/AEgQIAAj1jr5vDP7A4AQAQIwYq3br+rg+fr6uo8CAL0TIAAjdXBw0Dz7w+oHACkCBGDEWs91bGxs+BgAELHiZQYYp7W1te769etHt+CtrVh1HuTw8PD/Xevq6qrZHwDECBCAkavb625ubh791JasnZ2do9kgk+1ZW1tbPgIAxAgQgCVSKx3Xrl07+qkIqR+33wUgSYAALKkKD/EBQJpD6AAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAEDMStd1/+3lBgAAetd13f8C5ofqtHojInUAAAAASUVORK5CYII=";const u=10;function A(e){if(!e.length)return null;const t=e.map((e=>`${(0,s.AH)(e.src)} ${e.density}`)).join(", "),n=e[0],i={srcSet:t,src:(0,s.AH)(n.src)},{width:r}=n.size||{width:null};return r&&(i.width=r,i.height="auto"),i}var d={name:"ImageAsset",mixins:[a],inject:{imageLoadingStrategy:{default:null}},data:()=>({appState:o["default"].state,fallbackImageSrcSet:null,optimalWidth:null,optimalHeight:null}),computed:{allVariants:({lightVariants:e=[],darkVariants:t=[]})=>e.concat(t),defaultAttributes:({lightVariantAttributes:e,darkVariantAttributes:t})=>e||t,darkVariantAttributes:({darkVariants:e})=>A(e),lightVariantAttributes:({lightVariants:e})=>A(e),loading:({appState:e,imageLoadingStrategy:t})=>t||e.imageLoadingStrategy,preferredColorScheme:({appState:e})=>e.preferredColorScheme,prefersAuto:({preferredColorScheme:e})=>e===l.Z.auto,prefersDark:({preferredColorScheme:e})=>e===l.Z.dark,orientation:({optimalWidth:e,optimalHeight:t})=>(0,s.T8)(e,t)},props:{alt:{type:String,default:""},variants:{type:Array,required:!0},shouldCalculateOptimalWidth:{type:Boolean,default:!0}},methods:{handleImageLoadError(){this.fallbackImageSrcSet=`${c} 2x`},async calculateOptimalDimensions(){const{$refs:{img:{currentSrc:e}},allVariants:t}=this,{density:n}=t.find((({src:t})=>e.endsWith(t))),i=parseInt(n.match(/\d+/)[0],u),r=await(0,s.RY)(e),a=r.width/i,o=r.height/i;return{width:a,height:o}},async optimizeImageSize(){if(!this.defaultAttributes.width&&this.$refs.img)try{const e=await this.calculateOptimalDimensions();this.optimalWidth=e.width,this.optimalHeight=e.height}catch{console.error("Unable to calculate optimal image width")}}},mounted(){this.shouldCalculateOptimalWidth&&this.$refs.img.addEventListener("load",this.optimizeImageSize)}},p=d,h=n(1001),g=(0,h.Z)(p,i,r,!1,null,null,null),m=g.exports},3975:function(e,t,n){"use strict";n.d(t,{Z:function(){return I}});var i=function(){var e=this,t=e._self._c;return t("nav",{ref:"nav",staticClass:"nav",class:e.rootClasses,attrs:{role:"navigation"}},[t("div",{ref:"wrapper",staticClass:"nav__wrapper"},[t("div",{staticClass:"nav__background"}),e.hasOverlay?t("div",{staticClass:"nav-overlay",on:{click:e.closeNav}}):e._e(),t("div",{staticClass:"nav-content"},[e._t("pre-title",null,{className:"pre-title"},{closeNav:e.closeNav,inBreakpoint:e.inBreakpoint,currentBreakpoint:e.currentBreakpoint,isOpen:e.isOpen}),e.$slots.default?t("div",{staticClass:"nav-title"},[e._t("default")],2):e._e(),e._t("after-title"),t("div",{staticClass:"nav-menu"},[t("a",{ref:"axToggle",staticClass:"nav-ax-toggle",attrs:{href:"#",role:"button"},on:{click:function(t){return t.preventDefault(),e.toggleNav.apply(null,arguments)}}},[t("span",{staticClass:"visuallyhidden"},[e.isOpen?[e._v(" "+e._s(e.$t("documentation.nav.close-menu"))+" ")]:[e._v(" "+e._s(e.$t("documentation.nav.open-menu"))+" ")]],2)]),t("div",{ref:"tray",staticClass:"nav-menu-tray",on:{transitionend:function(t){return t.target!==t.currentTarget?null:e.onTransitionEnd.apply(null,arguments)},click:e.handleTrayClick}},[e._t("tray",(function(){return[t("NavMenuItems",[e._t("menu-items")],2)]}),{closeNav:e.closeNav})],2)]),t("div",{staticClass:"nav-actions"},[t("a",{ref:"toggle",staticClass:"nav-menucta",attrs:{href:"#",tabindex:"-1","aria-hidden":"true"},on:{click:function(t){return t.preventDefault(),e.toggleNav.apply(null,arguments)}}},[t("span",{staticClass:"nav-menucta-chevron"})])])],2),e._t("after-content")],2),t("BreakpointEmitter",{attrs:{scope:e.BreakpointScopes.nav},on:{change:e.onBreakpointChange}})],1)},r=[],s=n(9146),a=n(6302),o=n(7188),l=n(9652),c=n(1716),u=n(5381),A=n(1147),d=n(5657);const{noClose:p}=c.MenuLinkModifierClasses,{BreakpointName:h,BreakpointScopes:g}=o["default"].constants,m=8,f={isDark:"theme-dark",isOpen:"nav--is-open",inBreakpoint:"nav--in-breakpoint-range",isTransitioning:"nav--is-transitioning",isSticking:"nav--is-sticking",hasSolidBackground:"nav--solid-background",hasNoBorder:"nav--noborder",hasFullWidthBorder:"nav--fullwidth-border",isWideFormat:"nav--is-wide-format",noBackgroundTransition:"nav--no-bg-transition"};var v={name:"NavBase",components:{NavMenuItems:a.Z,BreakpointEmitter:o["default"]},constants:{NavStateClasses:f,NoBGTransitionFrames:m},props:{breakpoint:{type:String,default:h.small},hasOverlay:{type:Boolean,default:!0},hasSolidBackground:{type:Boolean,default:!1},hasNoBorder:{type:Boolean,default:!1},hasFullWidthBorder:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1},isWideFormat:{type:Boolean,default:!1}},mixins:[s["default"]],data(){return{isOpen:!1,isTransitioning:!1,isSticking:!1,noBackgroundTransition:!0,currentBreakpoint:h.large}},computed:{BreakpointScopes:()=>g,inBreakpoint:({currentBreakpoint:e,breakpoint:t})=>!(0,u.fr)(e,t),rootClasses:({isOpen:e,inBreakpoint:t,isTransitioning:n,isSticking:i,hasSolidBackground:r,hasNoBorder:s,hasFullWidthBorder:a,isDark:o,isWideFormat:l,noBackgroundTransition:c})=>({[f.isDark]:o,[f.isOpen]:e,[f.inBreakpoint]:t,[f.isTransitioning]:n,[f.isSticking]:i,[f.hasSolidBackground]:r,[f.hasNoBorder]:s,[f.hasFullWidthBorder]:a,[f.isWideFormat]:l,[f.noBackgroundTransition]:c})},watch:{isOpen(e){this.$emit("change",e),e?this.onExpand():this.onClose()}},async mounted(){window.addEventListener("keydown",this.onEscape),window.addEventListener("popstate",this.closeNav),window.addEventListener("orientationchange",this.closeNav),document.addEventListener("click",this.handleClickOutside),this.handleFlashOnMount(),await this.$nextTick()},beforeDestroy(){window.removeEventListener("keydown",this.onEscape),window.removeEventListener("popstate",this.closeNav),window.removeEventListener("orientationchange",this.closeNav),document.removeEventListener("click",this.handleClickOutside),this.isOpen&&this.toggleScrollLock(!1)},methods:{getIntersectionTargets(){return[document.getElementById(c.EA)||this.$el]},toggleNav(){this.isOpen=!this.isOpen,this.isTransitioning=!0},closeNav(){const e=this.isOpen;return this.isOpen=!1,this.resolveOnceTransitionsEnd(e)},resolveOnceTransitionsEnd(e){return e&&this.inBreakpoint?(this.isTransitioning=!0,new Promise((e=>{const t=this.$watch("isTransitioning",(()=>{e(),t()}))}))):Promise.resolve()},async onTransitionEnd({propertyName:e}){"max-height"===e&&(this.$emit("changed",this.isOpen),this.isTransitioning=!1,this.isOpen?(this.$emit("opened"),this.toggleScrollLock(!0)):this.$emit("closed"))},onBreakpointChange(e){this.currentBreakpoint=e,this.inBreakpoint||this.closeNav()},onIntersect({intersectionRatio:e}){window.scrollY<0||(this.isSticking=1!==e)},onEscape({key:e}){"Escape"===e&&this.isOpen&&(this.closeNav(),this.$refs.axToggle.focus())},handleTrayClick({target:e}){e.href&&!e.classList.contains(p)&&this.closeNav()},handleClickOutside({target:e}){this.$refs.nav.contains(e)||this.closeNav()},toggleScrollLock(e){e?l.Z.lockScroll(this.$refs.tray):l.Z.unlockScroll(this.$refs.tray)},onExpand(){this.$emit("open"),A.Z.hide(this.$refs.wrapper),document.activeElement===this.$refs.toggle&&document.activeElement.blur()},onClose(){this.$emit("close"),this.toggleScrollLock(!1),A.Z.show(this.$refs.wrapper)},async handleFlashOnMount(){await(0,d.J)(m),this.noBackgroundTransition=!1}}},b=v,y=n(1001),C=(0,y.Z)(b,i,r,!1,null,"c7b655d6",null),I=C.exports},3822:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var i=function(){var e=this,t=e._self._c;return t("li",{staticClass:"nav-menu-item",class:{"nav-menu-item--animated":e.animate}},[e._t("default")],2)},r=[],s={name:"NavMenuItemBase",props:{animate:{type:Boolean,default:!0}}},a=s,o=n(1001),l=(0,o.Z)(a,i,r,!1,null,"58ee2996",null),c=l.exports},6302:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var i=function(){var e=this,t=e._self._c;return t("ul",{staticClass:"nav-menu-items",attrs:{"data-previous-menu-children-count":e.previousSiblingChildren}},[e._t("default")],2)},r=[],s={name:"NavMenuItems",props:{previousSiblingChildren:{type:Number,default:0}}},a=s,o=n(1001),l=(0,o.Z)(a,i,r,!1,null,"67c1c0a5",null),c=l.exports},6664:function(e,t,n){"use strict";n.d(t,{Z:function(){return A}});var i=function(){var e=this,t=e._self._c;return e.shouldUseAsset?t("ImageAsset",e._b({},"ImageAsset",{variants:e.variants,loading:null,shouldCalculateOptimalWidth:e.shouldCalculateOptimalWidth,alt:e.alt},!1)):t("SVGIcon",{attrs:{"icon-url":e.iconUrl,themeId:e.themeId}})},r=[],s=n(6769),a=n(3453),o={name:"OverridableAsset",components:{SVGIcon:a.Z,ImageAsset:s.Z},props:{imageOverride:{type:Object,default:null},shouldCalculateOptimalWidth:{type:Boolean,default:!0}},computed:{variants:({imageOverride:e})=>e?e.variants:[],alt:({imageOverride:e})=>e.alt,firstVariant:({variants:e})=>e[0],iconUrl:({firstVariant:e})=>e&&e.url,themeId:({firstVariant:e})=>e&&e.svgID,isSameOrigin:({iconUrl:e,sameOrigin:t})=>t(e),shouldUseAsset:({isSameOrigin:e,themeId:t})=>!e||!t},methods:{sameOrigin(e){if(!e)return!1;const t=new URL(e,window.location),n=new URL(window.location);return t.origin===n.origin}}},l=o,c=n(1001),u=(0,c.Z)(l,i,r,!1,null,null,null),A=u.exports},3570:function(e,t,n){"use strict";n.d(t,{Z:function(){return ne}});var i=function(){var e=this,t=e._self._c;return t("div",{staticClass:"TopicTypeIcon",style:e.styles},[e.imageOverride?t("OverridableAsset",{staticClass:"icon-inline",attrs:{imageOverride:e.imageOverride,shouldCalculateOptimalWidth:e.shouldCalculateOptimalWidth}}):t(e.icon,e._b({tag:"component",staticClass:"icon-inline"},"component",e.iconProps,!1))],1)},r=[],s=n(8633),a=n(9001),o=n(5692),l=n(8638),c=function(){var e=this,t=e._self._c;return t("SVGIcon",{attrs:{viewBox:"0 0 14 14",height:"14",themeId:"topic-func"}},[t("path",{attrs:{d:"M13 1v12h-12v-12zM12.077 1.923h-10.154v10.154h10.154z"}}),t("path",{attrs:{d:"M5.191 9.529c0.044 0.002 0.089 0.004 0.133 0.004 0.108 0 0.196-0.025 0.262-0.074s0.122-0.113 0.166-0.188c0.044-0.077 0.078-0.159 0.103-0.247s0.049-0.173 0.074-0.251l0.598-2.186h-0.709l0.207-0.702h0.702l0.288-1.086c0.083-0.384 0.256-0.667 0.517-0.849s0.591-0.273 0.99-0.273c0.108 0 0.212 0.007 0.314 0.022s0.203 0.027 0.306 0.037l-0.207 0.761c-0.054-0.006-0.106-0.011-0.155-0.018s-0.102-0.011-0.155-0.011c-0.108 0-0.196 0.016-0.262 0.048s-0.122 0.075-0.166 0.129-0.080 0.115-0.107 0.185c-0.028 0.068-0.055 0.14-0.085 0.214l-0.222 0.842h0.768l-0.192 0.702h-0.783l-0.628 2.319c-0.059 0.222-0.129 0.419-0.21 0.594s-0.182 0.322-0.303 0.443-0.269 0.214-0.443 0.281-0.385 0.1-0.631 0.1c-0.084 0-0.168-0.004-0.251-0.011s-0.168-0.014-0.251-0.018l0.207-0.768c0.040 0 0.081 0.001 0.126 0.004z"}})])},u=[],A=n(3453),d={name:"TopicFuncIcon",components:{SVGIcon:A.Z}},p=d,h=n(1001),g=(0,h.Z)(p,c,u,!1,null,null,null),m=g.exports,f=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"collection-icon",attrs:{viewBox:"0 0 14 14",themeId:"collection"}},[t("path",{attrs:{d:"m1 1v12h12v-12zm11 11h-10v-10h10z"}}),t("path",{attrs:{d:"m3 4h8v1h-8zm0 2.5h8v1h-8zm0 2.5h8v1h-8z"}}),t("path",{attrs:{d:"m3 4h8v1h-8z"}}),t("path",{attrs:{d:"m3 6.5h8v1h-8z"}}),t("path",{attrs:{d:"m3 9h8v1h-8z"}})])},v=[],b={name:"CollectionIcon",components:{SVGIcon:A.Z}},y=b,C=(0,h.Z)(y,f,v,!1,null,null,null),I=C.exports,w=function(){var e=this,t=e._self._c;return t("SVGIcon",{attrs:{viewBox:"0 0 14 14",height:"14",themeId:"topic-func-op"}},[t("path",{attrs:{d:"M13 13h-12v-12h12zM1.923 12.077h10.154v-10.154h-10.154z"}}),t("path",{attrs:{d:"M5.098 4.968v-1.477h-0.738v1.477h-1.477v0.738h1.477v1.477h0.738v-1.477h1.477v-0.738z"}}),t("path",{attrs:{d:"M8.030 4.807l-2.031 5.538h0.831l2.031-5.538z"}}),t("path",{attrs:{d:"M8.894 8.805v0.923h2.215v-0.923z"}})])},E=[],B={name:"TopicFuncOpIcon",components:{SVGIcon:A.Z}},x=B,k=(0,h.Z)(x,w,E,!1,null,null,null),_=k.exports,S=n(7775),T=function(){var e=this,t=e._self._c;return t("SVGIcon",{attrs:{viewBox:"0 0 14 14",height:"14",themeId:"topic-subscript"}},[t("path",{attrs:{d:"M13 13h-12v-12h12zM1.923 12.077h10.154v-10.154h-10.154z"}}),t("path",{attrs:{d:"M4.133 3.633v6.738h1.938v-0.831h-0.923v-5.077h0.923v-0.831z"}}),t("path",{attrs:{d:"M9.856 10.371v-6.738h-1.938v0.831h0.923v5.077h-0.923v0.831z"}})])},Q=[],L={name:"TopicSubscriptIcon",components:{SVGIcon:A.Z}},M=L,Z=(0,h.Z)(M,T,Q,!1,null,null,null),R=Z.exports,j=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"two-letter-icon",attrs:{width:"16px",height:"16px",viewBox:"0 0 16 16",themeId:"two-letter"}},[t("g",{attrs:{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"}},[t("g",{attrs:{transform:"translate(1.000000, 1.000000)"}},[t("rect",{attrs:{stroke:"currentColor",x:"0.5",y:"0.5",width:"13",height:"13"}}),t("text",{attrs:{"font-size":"8","font-weight":"bold",fill:"currentColor"}},[t("tspan",{attrs:{x:"8.2",y:"11"}},[e._v(e._s(e.second))])]),t("text",{attrs:{"font-size":"11","font-weight":"bold",fill:"currentColor"}},[t("tspan",{attrs:{x:"1.7",y:"11"}},[e._v(e._s(e.first))])])])])])},N=[],D={name:"TwoLetterSymbolIcon",components:{SVGIcon:A.Z},props:{first:{type:String,required:!0},second:{type:String,required:!0}}},O=D,P=(0,h.Z)(O,j,N,!1,null,null,null),G=P.exports,V=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"single-letter-icon",attrs:{width:"16px",height:"16px",viewBox:"0 0 16 16",themeId:"single-letter"}},[t("g",{attrs:{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"}},[t("rect",{attrs:{stroke:"currentColor",x:"1",y:"1",width:"14",height:"14"}}),t("text",{attrs:{"font-size":"11","font-weight":"bold",fill:"currentColor",x:"49%",y:"12","text-anchor":"middle"}},[t("tspan",[e._v(e._s(e.symbol))])])])])},H=[],z={name:"SingleLetterSymbolIcon",components:{SVGIcon:A.Z},props:{symbol:{type:String,required:!0}}},q=z,$=(0,h.Z)(q,V,H,!1,null,null,null),W=$.exports,F=n(5629),Y=n(1869),U=n(6664);const X={[F.t.article]:o.Z,[F.t.associatedtype]:I,[F.t.buildSetting]:I,[F.t["class"]]:W,[F.t.collection]:I,[F.t.dictionarySymbol]:W,[F.t.container]:I,[F.t["enum"]]:W,[F.t.extension]:G,[F.t.func]:m,[F.t.op]:_,[F.t.httpRequest]:W,[F.t.languageGroup]:I,[F.t.learn]:s.Z,[F.t.method]:W,[F.t.macro]:W,[F.t.module]:a.Z,[F.t.overview]:s.Z,[F.t.protocol]:G,[F.t.property]:W,[F.t.propertyListKey]:W,[F.t.resources]:s.Z,[F.t.sampleCode]:S.Z,[F.t.struct]:W,[F.t.subscript]:R,[F.t.symbol]:I,[F.t.tutorial]:l.Z,[F.t.typealias]:W,[F.t.union]:W,[F.t["var"]]:W},K={[F.t["class"]]:{symbol:"C"},[F.t.dictionarySymbol]:{symbol:"O"},[F.t["enum"]]:{symbol:"E"},[F.t.extension]:{first:"E",second:"x"},[F.t.httpRequest]:{symbol:"E"},[F.t.method]:{symbol:"M"},[F.t.macro]:{symbol:"#"},[F.t.protocol]:{first:"P",second:"r"},[F.t.property]:{symbol:"P"},[F.t.propertyListKey]:{symbol:"K"},[F.t.struct]:{symbol:"S"},[F.t.typealias]:{symbol:"T"},[F.t.union]:{symbol:"U"},[F.t["var"]]:{symbol:"V"}};var J={name:"TopicTypeIcon",components:{OverridableAsset:U.Z,SVGIcon:A.Z,SingleLetterSymbolIcon:W},constants:{TopicTypeIcons:X,TopicTypeProps:K},props:{type:{type:String,required:!0},withColors:{type:Boolean,default:!1},imageOverride:{type:Object,default:null},shouldCalculateOptimalWidth:{type:Boolean,default:!0}},computed:{normalisedType:({type:e})=>F.$[e]||e,icon:({normalisedType:e})=>X[e]||I,iconProps:({normalisedType:e})=>K[e]||{},color:({normalisedType:e})=>Y.g[e],styles:({color:e,withColors:t})=>t&&e?{"--icon-color":`var(--color-type-icon-${e})`}:{}}},ee=J,te=(0,h.Z)(ee,i,r,!1,null,"0c843792",null),ne=te.exports},352:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var i,r,s={functional:!0,name:"WordBreak",render(e,{props:t,slots:n,data:i}){const r=n().default||[],s=r.filter((e=>e.text&&!e.tag));if(0===s.length||s.length!==r.length)return e(t.tag,i,r);const a=s.map((({text:e})=>e)).join(),o=[];let l=null,c=0;while(null!==(l=t.safeBoundaryPattern.exec(a))){const t=l.index+1;o.push(a.slice(c,t)),o.push(e("wbr",{key:l.index})),c=t}return o.push(a.slice(c,a.length)),e(t.tag,i,o)},props:{safeBoundaryPattern:{type:RegExp,default:()=>/([a-z](?=[A-Z])|(:)\w|\w(?=[._]\w))/g},tag:{type:String,default:()=>"span"}}},a=s,o=n(1001),l=(0,o.Z)(a,i,r,!1,null,null,null),c=l.exports},2122:function(e,t,n){var i={"./bash.js":[8780,393],"./c.js":[612,546],"./cpp.js":[6248,621],"./css.js":[5064,864],"./diff.js":[7731,213],"./http.js":[8937,878],"./java.js":[8257,788],"./javascript.js":[978,814],"./json.js":[14,82],"./llvm.js":[4972,133],"./markdown.js":[1312,113],"./objectivec.js":[2446,637],"./perl.js":[2482,645],"./php.js":[2656,596],"./python.js":[8245,435],"./ruby.js":[7905,623],"./scss.js":[1062,392],"./shell.js":[7874,176],"./swift.js":[7690,527],"./xml.js":[4610,490]};function r(e){if(!n.o(i,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],r=t[0];return n.e(t[1]).then((function(){return n.t(r,23)}))}r.keys=function(){return Object.keys(i)},r.id=2122,e.exports=r},1869:function(e,t,n){"use strict";n.d(t,{c:function(){return s},g:function(){return a}});var i=n(5629),r=n(7192);const s={blue:"blue",teal:"teal",orange:"orange",purple:"purple",green:"green",sky:"sky",pink:"pink"},a={[i.t.article]:s.teal,[i.t.init]:s.blue,[i.t["case"]]:s.orange,[i.t["class"]]:s.purple,[i.t.collection]:s.pink,[r.L.collectionGroup]:s.teal,[i.t.dictionarySymbol]:s.purple,[i.t["enum"]]:s.orange,[i.t.extension]:s.orange,[i.t.func]:s.green,[i.t.op]:s.green,[i.t.httpRequest]:s.green,[i.t.module]:s.sky,[i.t.method]:s.blue,[i.t.macro]:s.pink,[i.t.protocol]:s.purple,[i.t.property]:s.teal,[i.t.propertyListKey]:s.green,[i.t.propertyListKeyReference]:s.green,[i.t.sampleCode]:s.purple,[i.t.struct]:s.purple,[i.t.subscript]:s.blue,[i.t.typealias]:s.orange,[i.t.union]:s.purple,[i.t["var"]]:s.purple}},3078:function(e,t){"use strict";t["Z"]={objectiveC:{name:"Objective-C",key:{api:"occ",url:"objc"}},swift:{name:"Swift",key:{api:"swift",url:"swift"}}}},3946:function(e,t,n){"use strict";n.d(t,{o:function(){return i}});const i={list:"list",compactGrid:"compactGrid",detailedGrid:"detailedGrid",hidden:"hidden"}},5629:function(e,t,n){"use strict";n.d(t,{$:function(){return r},t:function(){return i}});const i={article:"article",associatedtype:"associatedtype",buildSetting:"buildSetting",case:"case",collection:"collection",class:"class",container:"container",dictionarySymbol:"dictionarySymbol",enum:"enum",extension:"extension",func:"func",groupMarker:"groupMarker",httpRequest:"httpRequest",init:"init",languageGroup:"languageGroup",learn:"learn",macro:"macro",method:"method",module:"module",op:"op",overview:"overview",project:"project",property:"property",propertyListKey:"propertyListKey",propertyListKeyReference:"propertyListKeyReference",protocol:"protocol",resources:"resources",root:"root",sampleCode:"sampleCode",section:"section",struct:"struct",subscript:"subscript",symbol:"symbol",tutorial:"tutorial",typealias:"typealias",union:"union",var:"var"},r={[i.init]:i.method,[i.case]:i.enum,[i.propertyListKeyReference]:i.propertyListKey,[i.project]:i.tutorial}},7192:function(e,t,n){"use strict";n.d(t,{L:function(){return i}});const i={article:"article",codeListing:"codeListing",collection:"collection",collectionGroup:"collectionGroup",containerSymbol:"containerSymbol",devLink:"devLink",dictionarySymbol:"dictionarySymbol",generic:"generic",link:"link",media:"media",pseudoCollection:"pseudoCollection",pseudoSymbol:"pseudoSymbol",restRequestSymbol:"restRequestSymbol",sampleCode:"sampleCode",symbol:"symbol",table:"table",learn:"learn",overview:"overview",project:"project",tutorial:"tutorial",resources:"resources"}},1789:function(e,t){"use strict";t["Z"]={inject:{performanceMetricsEnabled:{default:!1},isTargetIDE:{default:!1}},methods:{newContentMounted(){let e;this.performanceMetricsEnabled&&(e=Math.round(window.performance.now()),window.renderedTimes||(window.renderedTimes=[]),window.renderedTimes.push(e)),this.$bridge.send({type:"rendered",data:{time:e}})},handleContentUpdateFromBridge(e){this.topicData=e}}}},1825:function(e,t){"use strict";t["Z"]={computed:{isClientMobile(){let e=!1;return e="maxTouchPoints"in navigator||"msMaxTouchPoints"in navigator?Boolean(navigator.maxTouchPoints||navigator.msMaxTouchPoints):window.matchMedia?window.matchMedia("(pointer:coarse)").matches:"orientation"in window,e}}}},2974:function(e,t,n){"use strict";var i=n(3465),r=n(3208),s=n(2449),a=n(8843);t["Z"]={methods:{extractFirstParagraphText(e=[]){const t=a["default"].computed.plaintext.bind({...a["default"].methods,content:e})();return(0,r.id)(t)}},computed:{pagePath:({$route:{path:e="/"}={}})=>e,pageURL:({pagePath:e="/"})=>(0,s.HH)(e),disableMetadata:()=>!1},mounted(){this.disableMetadata||(0,i.X)({title:this.pageTitle,description:this.pageDescription,url:this.pageURL,currentLocale:this.$i18n.locale})}}},9146:function(e,t,n){"use strict";const i={up:"up",down:"down"};t["default"]={constants:{IntersectionDirections:i},data(){return{intersectionObserver:null,intersectionPreviousScrollY:0,intersectionScrollDirection:i.down}},computed:{intersectionThreshold(){const e=[];for(let t=0;t<=1;t+=.01)e.push(t);return e},intersectionRoot(){return null},intersectionRootMargin(){return"0px 0px 0px 0px"},intersectionObserverOptions(){return{root:this.intersectionRoot,rootMargin:this.intersectionRootMargin,threshold:this.intersectionThreshold}}},async mounted(){await n.e(337).then(n.t.bind(n,6337,23)),this.intersectionObserver=new IntersectionObserver((e=>{this.detectIntersectionScrollDirection();const t=this.onIntersect;t?e.forEach(t):console.warn("onIntersect not implemented")}),this.intersectionObserverOptions),this.getIntersectionTargets().forEach((e=>{this.intersectionObserver.observe(e)}))},beforeDestroy(){this.intersectionObserver&&this.intersectionObserver.disconnect()},methods:{getIntersectionTargets(){return[this.$el]},detectIntersectionScrollDirection(){window.scrollYthis.intersectionPreviousScrollY&&(this.intersectionScrollDirection=i.up),this.intersectionPreviousScrollY=window.scrollY}}}},5184:function(e,t,n){"use strict";var i=n(4030),r=n(1265),s=n(3704);function a(e){return new Promise(((t,n)=>{e.complete?t():(e.addEventListener("load",t,{once:!0}),e.addEventListener("error",n,{once:!0}))}))}function o(){return Promise.allSettled([...document.getElementsByTagName("img")].map(a))}t["Z"]={mixins:[s.Z],mounted(){this.scrollToElementIfAnchorPresent()},updated(){this.scrollToElementIfAnchorPresent()},methods:{async scrollToElementIfAnchorPresent(){const{hash:e}=this.$route;if(!e)return;const{imageLoadingStrategy:t}=i["default"].state;i["default"].setImageLoadingStrategy(r.Z.eager),await this.$nextTick(),await o(),this.scrollToElement(e),i["default"].setImageLoadingStrategy(t)}}}},5953:function(e,t){"use strict";t["Z"]={inject:{store:{default:()=>({state:{references:{}},setReferences(){},reset(){}})}},computed:{references:({store:e})=>e.state.references}}},3704:function(e,t,n){"use strict";var i=n(5657);t["Z"]={methods:{async scrollToElement(e){await(0,i.J)(8);const t=this.$router.resolve({hash:e}),{selector:n,offset:r}=await this.$router.options.scrollBehavior(t.route),s=document.querySelector(n);return s?(s.scrollIntoView(),window.scrollY+window.innerHeight=0},isFocusableElement(e){const t=e.nodeName.toLowerCase(),n=i.includes(t);return!("a"!==t||!e.getAttribute("href"))||(n?!e.disabled:"true"===e.getAttribute("contenteditable")||!Number.isNaN(parseFloat(e.getAttribute("tabindex"))))}}},1147:function(e,t,n){"use strict";var i=n(7486);const r="data-original-",s="aria-hidden",a="tabindex";function o(e,t){const n=r+t;if(e.getAttribute(n))return;const i=e.getAttribute(t)||"";e.setAttribute(n,i)}function l(e,t){const n=r+t;if(!e.hasAttribute(n))return;const i=e.getAttribute(n);e.removeAttribute(n),i.length?e.setAttribute(t,i):e.removeAttribute(t)}function c(e,t){const n=document.body;let i=e,r=e;while(i=i.previousElementSibling)t(i);while(r=r.nextElementSibling)t(r);e.parentElement&&e.parentElement!==n&&c(e.parentElement,t)}const u=e=>{o(e,s),o(e,a),e.setAttribute(s,"true"),e.setAttribute(a,"-1");const t=i.ZP.getTabbableElements(e);let n=t.length-1;while(n>=0)o(t[n],a),t[n].setAttribute(a,"-1"),n-=1},A=e=>{l(e,s),l(e,a);const t=e.querySelectorAll(`[${r+a}]`);let n=t.length-1;while(n>=0)l(t[n],a),n-=1};t["Z"]={hide(e){c(e,u)},show(e){c(e,A)}}},8841:function(e,t,n){"use strict";n.d(t,{d9:function(){return h},k_:function(){return p},Ek:function(){return A},LR:function(){return g},Us:function(){return d}});var i=n(5947),r=n(2449),s=n(1944);class a extends Error{constructor({location:e,response:t}){super("Request redirected"),this.location=e,this.response=t}}class o extends Error{constructor(e){super("Unable to fetch data"),this.route=e}}async function l(e,t={},n={}){function i(e){return("ide"!=={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET||0!==e.status)&&!e.ok}const o=(0,r.WN)(e),l=(0,r.Ex)(t);l&&(o.search=l);const c=await fetch(o.href,n);if(i(c))throw c;if(c.redirected)throw new a({location:c.url,response:c});const u=await c.json();return(0,s.ZP)(u.schemaVersion),u}function c(e){const t=e.replace(/\/$/,"");return`${(0,i.AH)(["/data",t])}.json`}function u(e){const{pathname:t,search:n}=new URL(e),i=/\/data(\/.*).json$/,r=i.exec(t);return r?r[1]+n:t+n}async function A(e,t,n){const i=c(e.path);let r;try{r=await l(i,e.query)}catch(s){if("ide"==={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET)throw console.error(s),!1;if(s instanceof a)throw u(s.location);s.status&&404===s.status?n({name:"not-found",params:[e.path]}):n(new o(e))}return r}function d(e,t){return!(0,r.Lp)(e,t)}async function p(e,t={}){const n=c(e);return l(n,{},t)}function h(e){return JSON.parse(JSON.stringify(e))}async function g({slug:e}){const t=(0,r.WN)(["/index/",e,"index.json"]);return l(t)}},1944:function(e,t,n){"use strict";n.d(t,{W1:function(){return r},ZP:function(){return A},n4:function(){return a}});const i={major:0,minor:3,patch:0};function r({major:e,minor:t,patch:n}){return[e,t,n].join(".")}function s(e){const[t=0,n=0,i=0]=e.split(".");return[Number(t),Number(n),Number(i)]}function a(e,t){const n=s(e),i=s(t);for(let r=0;ri[r])return 1;if(n[r]`[Swift-DocC-Render] The render node version for this page (${e}) has a different major version component than Swift-DocC-Render supports (${o}). Compatibility is not guaranteed.`;function u(e){const{major:t,minor:n}=e,{major:s,minor:a}=i;return t!==s?c(r(e)):n>a?l(r(e)):""}function A(e){if(!e)return;const t=u(e);t&&console.warn(t)}},9652:function(e,t,n){"use strict";n.d(t,{n:function(){return a}});let i=!1,r=-1,s=0;const a="data-scroll-lock-disable",o=()=>window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1);function l(e){e.touches.length>1||e.preventDefault()}const c=e=>!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight;function u(){s=document.body.getBoundingClientRect().top,document.body.style.overflow="hidden scroll",document.body.style.top=`${s}px`,document.body.style.position="fixed",document.body.style.width="100%"}function A(e){e&&(e.ontouchstart=null,e.ontouchmove=null),document.removeEventListener("touchmove",l)}function d(e,t){const n=e.targetTouches[0].clientY-r,i=e.target.closest(`[${a}]`)||t;return 0===i.scrollTop&&n>0||c(i)&&n<0?l(e):(e.stopPropagation(),!0)}function p(e){document.addEventListener("touchmove",l,{passive:!1}),e&&(e.ontouchstart=e=>{1===e.targetTouches.length&&(r=e.targetTouches[0].clientY)},e.ontouchmove=t=>{1===t.targetTouches.length&&d(t,e)})}t["Z"]={lockScroll(e){i||(o()?p(e):u(),i=!0)},unlockScroll(e){i&&(o()?A(e):(document.body.style.removeProperty("overflow"),document.body.style.removeProperty("top"),document.body.style.removeProperty("position"),document.body.style.removeProperty("width"),window.scrollTo(0,Math.abs(s))),i=!1)}}},3685:function(e,t,n){var i={"./markdown":[2003,642],"./markdown.js":[2003,642],"./swift":[7467,217],"./swift.js":[7467,217]};function r(e){if(!n.o(i,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],r=t[0];return n.e(t[1]).then((function(){return n(r)}))}r.keys=function(){return Object.keys(i)},r.id=3685,e.exports=r},3390:function(e){var t={exports:{}};function n(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((function(t){var i=e[t];"object"!=typeof i||Object.isFrozen(i)||n(i)})),e}t.exports=n,t.exports.default=n;var i=t.exports;class r{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function s(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function a(e,...t){const n=Object.create(null);for(const i in e)n[i]=e[i];return t.forEach((function(e){for(const t in e)n[t]=e[t]})),n}const o="",l=e=>!!e.kind,c=(e,{prefix:t})=>{if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")}return`${t}${e}`};class u{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=s(e)}openNode(e){if(!l(e))return;let t=e.kind;t=e.sublanguage?`language-${t}`:c(t,{prefix:this.classPrefix}),this.span(t)}closeNode(e){l(e)&&(this.buffer+=o)}value(){return this.buffer}span(e){this.buffer+=``}}class A{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){while(this.closeNode());}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"===typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){"string"!==typeof e&&e.children&&(e.children.every((e=>"string"===typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{A._collapse(e)})))}}class d extends A{constructor(e){super(),this.options=e}addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){const e=new u(this,this.options);return e.value()}finalize(){return!0}}function p(e){return e?"string"===typeof e?e:e.source:null}function h(e){return f("(?=",e,")")}function g(e){return f("(?:",e,")*")}function m(e){return f("(?:",e,")?")}function f(...e){const t=e.map((e=>p(e))).join("");return t}function v(e){const t=e[e.length-1];return"object"===typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function b(...e){const t=v(e),n="("+(t.capture?"":"?:")+e.map((e=>p(e))).join("|")+")";return n}function y(e){return new RegExp(e.toString()+"|").exec("").length-1}function C(e,t){const n=e&&e.exec(t);return n&&0===n.index}const I=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function w(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n;let i=p(e),r="";while(i.length>0){const e=I.exec(i);if(!e){r+=i;break}r+=i.substring(0,e.index),i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+String(Number(e[1])+t):(r+=e[0],"("===e[0]&&n++)}return r})).map((e=>`(${e})`)).join(t)}const E=/\b\B/,B="[a-zA-Z]\\w*",x="[a-zA-Z_]\\w*",k="\\b\\d+(\\.\\d+)?",_="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",S="\\b(0b[01]+)",T="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Q=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=f(t,/.*\b/,e.binary,/\b.*/)),a({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},L={begin:"\\\\[\\s\\S]",relevance:0},M={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[L]},Z={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[L]},R={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},j=function(e,t,n={}){const i=a({scope:"comment",begin:e,end:t,contains:[]},n);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const r=b("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:f(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},N=j("//","$"),D=j("/\\*","\\*/"),O=j("#","$"),P={scope:"number",begin:k,relevance:0},G={scope:"number",begin:_,relevance:0},V={scope:"number",begin:S,relevance:0},H={begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[L,{begin:/\[/,end:/\]/,relevance:0,contains:[L]}]}]},z={scope:"title",begin:B,relevance:0},q={scope:"title",begin:x,relevance:0},$={begin:"\\.\\s*"+x,relevance:0},W=function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})};var F=Object.freeze({__proto__:null,MATCH_NOTHING_RE:E,IDENT_RE:B,UNDERSCORE_IDENT_RE:x,NUMBER_RE:k,C_NUMBER_RE:_,BINARY_NUMBER_RE:S,RE_STARTERS_RE:T,SHEBANG:Q,BACKSLASH_ESCAPE:L,APOS_STRING_MODE:M,QUOTE_STRING_MODE:Z,PHRASAL_WORDS_MODE:R,COMMENT:j,C_LINE_COMMENT_MODE:N,C_BLOCK_COMMENT_MODE:D,HASH_COMMENT_MODE:O,NUMBER_MODE:P,C_NUMBER_MODE:G,BINARY_NUMBER_MODE:V,REGEXP_MODE:H,TITLE_MODE:z,UNDERSCORE_TITLE_MODE:q,METHOD_GUARD:$,END_SAME_AS_BEGIN:W});function Y(e,t){const n=e.input[e.index-1];"."===n&&t.ignoreMatch()}function U(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function X(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Y,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function K(e,t){Array.isArray(e.illegal)&&(e.illegal=b(...e.illegal))}function J(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function ee(e,t){void 0===e.relevance&&(e.relevance=1)}const te=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]})),e.keywords=n.keywords,e.begin=f(n.beforeMatch,h(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},ne=["of","and","for","in","not","or","if","then","parent","list","value"],ie="keyword";function re(e,t,n=ie){const i=Object.create(null);return"string"===typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((function(n){Object.assign(i,re(e[n],t,n))})),i;function r(e,n){t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((function(t){const n=t.split("|");i[n[0]]=[e,se(n[0],n[1])]}))}}function se(e,t){return t?Number(t):ae(e)?0:1}function ae(e){return ne.includes(e.toLowerCase())}const oe={},le=e=>{console.error(e)},ce=(e,...t)=>{console.log(`WARN: ${e}`,...t)},ue=(e,t)=>{oe[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),oe[`${e}/${t}`]=!0)},Ae=new Error;function de(e,t,{key:n}){let i=0;const r=e[n],s={},a={};for(let o=1;o<=t.length;o++)a[o+i]=r[o],s[o+i]=!0,i+=y(t[o-1]);e[n]=a,e[n]._emit=s,e[n]._multi=!0}function pe(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw le("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Ae;if("object"!==typeof e.beginScope||null===e.beginScope)throw le("beginScope must be object"),Ae;de(e,e.begin,{key:"beginScope"}),e.begin=w(e.begin,{joinWith:""})}}function he(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw le("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Ae;if("object"!==typeof e.endScope||null===e.endScope)throw le("endScope must be object"),Ae;de(e,e.end,{key:"endScope"}),e.end=w(e.end,{joinWith:""})}}function ge(e){e.scope&&"object"===typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}function me(e){ge(e),"string"===typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"===typeof e.endScope&&(e.endScope={_wrap:e.endScope}),pe(e),he(e)}function fe(e){function t(t,n){return new RegExp(p(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=y(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map((e=>e[1]));this.matcherRe=t(w(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,i)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}function r(e){const t=new i;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}function s(n,i){const a=n;if(n.isCompiled)return a;[U,J,me,te].forEach((e=>e(n,i))),e.compilerExtensions.forEach((e=>e(n,i))),n.__beforeBegin=null,[X,K,ee].forEach((e=>e(n,i))),n.isCompiled=!0;let o=null;return"object"===typeof n.keywords&&n.keywords.$pattern&&(n.keywords=Object.assign({},n.keywords),o=n.keywords.$pattern,delete n.keywords.$pattern),o=o||/\w+/,n.keywords&&(n.keywords=re(n.keywords,e.case_insensitive)),a.keywordPatternRe=t(o,!0),i&&(n.begin||(n.begin=/\B|\b/),a.beginRe=t(a.begin),n.end||n.endsWithParent||(n.end=/\B|\b/),n.end&&(a.endRe=t(a.end)),a.terminatorEnd=p(a.end)||"",n.endsWithParent&&i.terminatorEnd&&(a.terminatorEnd+=(n.end?"|":"")+i.terminatorEnd)),n.illegal&&(a.illegalRe=t(n.illegal)),n.contains||(n.contains=[]),n.contains=[].concat(...n.contains.map((function(e){return be("self"===e?n:e)}))),n.contains.forEach((function(e){s(e,a)})),n.starts&&s(n.starts,i),a.matcher=r(a),a}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=a(e.classNameAliases||{}),s(e)}function ve(e){return!!e&&(e.endsWithParent||ve(e.starts))}function be(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((function(t){return a(e,{variants:null},t)}))),e.cachedVariants?e.cachedVariants:ve(e)?a(e,{starts:e.starts?a(e.starts):null}):Object.isFrozen(e)?a(e):e}var ye="11.3.1";class Ce extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const Ie=s,we=a,Ee=Symbol("nomatch"),Be=7,xe=function(e){const t=Object.create(null),n=Object.create(null),s=[];let a=!0;const o="Could not find the language '{}', did you forget to load/include a language module?",l={disableAutodetect:!0,name:"Plain text",contains:[]};let c={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:d};function u(e){return c.noHighlightRe.test(e)}function A(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=c.languageDetectRe.exec(t);if(n){const t=Z(n[1]);return t||(ce(o.replace("{}",n[1])),ce("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>u(e)||Z(e)))}function p(e,t,n){let i="",r="";"object"===typeof t?(i=e,n=t.ignoreIllegals,r=t.language):(ue("10.7.0","highlight(lang, code, ...args) has been deprecated."),ue("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),r=e,i=t),void 0===n&&(n=!0);const s={code:i,language:r};O("before:highlight",s);const a=s.result?s.result:v(s.language,s.code,n);return a.code=s.code,O("after:highlight",a),a}function v(e,n,i,s){const l=Object.create(null);function u(e,t){return e.keywords[t]}function A(){if(!S.keywords)return void Q.addText(L);let e=0;S.keywordPatternRe.lastIndex=0;let t=S.keywordPatternRe.exec(L),n="";while(t){n+=L.substring(e,t.index);const i=x.case_insensitive?t[0].toLowerCase():t[0],r=u(S,i);if(r){const[e,s]=r;if(Q.addText(n),n="",l[i]=(l[i]||0)+1,l[i]<=Be&&(M+=s),e.startsWith("_"))n+=t[0];else{const n=x.classNameAliases[e]||e;Q.addKeyword(t[0],n)}}else n+=t[0];e=S.keywordPatternRe.lastIndex,t=S.keywordPatternRe.exec(L)}n+=L.substr(e),Q.addText(n)}function d(){if(""===L)return;let e=null;if("string"===typeof S.subLanguage){if(!t[S.subLanguage])return void Q.addText(L);e=v(S.subLanguage,L,!0,T[S.subLanguage]),T[S.subLanguage]=e._top}else e=I(L,S.subLanguage.length?S.subLanguage:null);S.relevance>0&&(M+=e.relevance),Q.addSublanguage(e._emitter,e.language)}function p(){null!=S.subLanguage?d():A(),L=""}function h(e,t){let n=1;while(void 0!==t[n]){if(!e._emit[n]){n++;continue}const i=x.classNameAliases[e[n]]||e[n],r=t[n];i?Q.addKeyword(r,i):(L=r,A(),L=""),n++}}function g(e,t){return e.scope&&"string"===typeof e.scope&&Q.openNode(x.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(Q.addKeyword(L,x.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),L=""):e.beginScope._multi&&(h(e.beginScope,t),L="")),S=Object.create(e,{parent:{value:S}}),S}function m(e,t,n){let i=C(e.endRe,n);if(i){if(e["on:end"]){const n=new r(e);e["on:end"](t,n),n.isMatchIgnored&&(i=!1)}if(i){while(e.endsParent&&e.parent)e=e.parent;return e}}if(e.endsWithParent)return m(e.parent,t,n)}function f(e){return 0===S.matcher.regexIndex?(L+=e[0],1):(N=!0,0)}function b(e){const t=e[0],n=e.rule,i=new r(n),s=[n.__beforeBegin,n["on:begin"]];for(const r of s)if(r&&(r(e,i),i.isMatchIgnored))return f(t);return n.skip?L+=t:(n.excludeBegin&&(L+=t),p(),n.returnBegin||n.excludeBegin||(L=t)),g(n,e),n.returnBegin?0:t.length}function y(e){const t=e[0],i=n.substr(e.index),r=m(S,e,i);if(!r)return Ee;const s=S;S.endScope&&S.endScope._wrap?(p(),Q.addKeyword(t,S.endScope._wrap)):S.endScope&&S.endScope._multi?(p(),h(S.endScope,e)):s.skip?L+=t:(s.returnEnd||s.excludeEnd||(L+=t),p(),s.excludeEnd&&(L=t));do{S.scope&&Q.closeNode(),S.skip||S.subLanguage||(M+=S.relevance),S=S.parent}while(S!==r.parent);return r.starts&&g(r.starts,e),s.returnEnd?0:t.length}function w(){const e=[];for(let t=S;t!==x;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach((e=>Q.openNode(e)))}let E={};function B(t,r){const s=r&&r[0];if(L+=t,null==s)return p(),0;if("begin"===E.type&&"end"===r.type&&E.index===r.index&&""===s){if(L+=n.slice(r.index,r.index+1),!a){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=E.rule,t}return 1}if(E=r,"begin"===r.type)return b(r);if("illegal"===r.type&&!i){const e=new Error('Illegal lexeme "'+s+'" for mode "'+(S.scope||"")+'"');throw e.mode=S,e}if("end"===r.type){const e=y(r);if(e!==Ee)return e}if("illegal"===r.type&&""===s)return 1;if(j>1e5&&j>3*r.index){const e=new Error("potential infinite loop, way more iterations than matches");throw e}return L+=s,s.length}const x=Z(e);if(!x)throw le(o.replace("{}",e)),new Error('Unknown language: "'+e+'"');const k=fe(x);let _="",S=s||k;const T={},Q=new c.__emitter(c);w();let L="",M=0,R=0,j=0,N=!1;try{for(S.matcher.considerAll();;){j++,N?N=!1:S.matcher.considerAll(),S.matcher.lastIndex=R;const e=S.matcher.exec(n);if(!e)break;const t=n.substring(R,e.index),i=B(t,e);R=e.index+i}return B(n.substr(R)),Q.closeAllNodes(),Q.finalize(),_=Q.toHTML(),{language:e,value:_,relevance:M,illegal:!1,_emitter:Q,_top:S}}catch(D){if(D.message&&D.message.includes("Illegal"))return{language:e,value:Ie(n),illegal:!0,relevance:0,_illegalBy:{message:D.message,index:R,context:n.slice(R-100,R+100),mode:D.mode,resultSoFar:_},_emitter:Q};if(a)return{language:e,value:Ie(n),illegal:!1,relevance:0,errorRaised:D,_emitter:Q,_top:S};throw D}}function y(e){const t={value:Ie(e),illegal:!1,relevance:0,_top:l,_emitter:new c.__emitter(c)};return t._emitter.addText(e),t}function I(e,n){n=n||c.languages||Object.keys(t);const i=y(e),r=n.filter(Z).filter(j).map((t=>v(t,e,!1)));r.unshift(i);const s=r.sort(((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(Z(e.language).supersetOf===t.language)return 1;if(Z(t.language).supersetOf===e.language)return-1}return 0})),[a,o]=s,l=a;return l.secondBest=o,l}function w(e,t,i){const r=t&&n[t]||i;e.classList.add("hljs"),e.classList.add(`language-${r}`)}function E(e){let t=null;const n=A(e);if(u(n))return;if(O("before:highlightElement",{el:e,language:n}),e.children.length>0&&(c.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/issues/2886"),console.warn(e)),c.throwUnescapedHTML)){const t=new Ce("One of your code blocks includes unescaped HTML.",e.innerHTML);throw t}t=e;const i=t.textContent,r=n?p(i,{language:n,ignoreIllegals:!0}):I(i);e.innerHTML=r.value,w(e,n,r.language),e.result={language:r.language,re:r.relevance,relevance:r.relevance},r.secondBest&&(e.secondBest={language:r.secondBest.language,relevance:r.secondBest.relevance}),O("after:highlightElement",{el:e,result:r,text:i})}function B(e){c=we(c,e)}const x=()=>{S(),ue("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function k(){S(),ue("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let _=!1;function S(){if("loading"===document.readyState)return void(_=!0);const e=document.querySelectorAll(c.cssSelector);e.forEach(E)}function T(){_&&S()}function Q(n,i){let r=null;try{r=i(e)}catch(s){if(le("Language definition for '{}' could not be registered.".replace("{}",n)),!a)throw s;le(s),r=l}r.name||(r.name=n),t[n]=r,r.rawDefinition=i.bind(null,e),r.aliases&&R(r.aliases,{languageName:n})}function L(e){delete t[e];for(const t of Object.keys(n))n[t]===e&&delete n[t]}function M(){return Object.keys(t)}function Z(e){return e=(e||"").toLowerCase(),t[e]||t[n[e]]}function R(e,{languageName:t}){"string"===typeof e&&(e=[e]),e.forEach((e=>{n[e.toLowerCase()]=t}))}function j(e){const t=Z(e);return t&&!t.disableAutodetect}function N(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}function D(e){N(e),s.push(e)}function O(e,t){const n=e;s.forEach((function(e){e[n]&&e[n](t)}))}function P(e){return ue("10.7.0","highlightBlock will be removed entirely in v12.0"),ue("10.7.0","Please use highlightElement now."),E(e)}"undefined"!==typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",T,!1),Object.assign(e,{highlight:p,highlightAuto:I,highlightAll:S,highlightElement:E,highlightBlock:P,configure:B,initHighlighting:x,initHighlightingOnLoad:k,registerLanguage:Q,unregisterLanguage:L,listLanguages:M,getLanguage:Z,registerAliases:R,autoDetection:j,inherit:we,addPlugin:D}),e.debugMode=function(){a=!1},e.safeMode=function(){a=!0},e.versionString=ye,e.regex={concat:f,lookahead:h,either:b,optional:m,anyNumberOfTimes:g};for(const r in F)"object"===typeof F[r]&&i(F[r]);return Object.assign(e,F),e};var ke=xe({});e.exports=ke,ke.HighlightJS=ke,ke.default=ke}}]); \ No newline at end of file diff --git a/docs/js/842.49774dc9.js b/docs/js/842.49774dc9.js new file mode 100644 index 0000000..87975b1 --- /dev/null +++ b/docs/js/842.49774dc9.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +"use strict";(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[842],{5590:function(t,e,n){n.d(e,{Z:function(){return m}});var s=function(){var t=this,e=t._self._c;return e("PortalSource",{attrs:{to:"modal-destination",disabled:!t.isVisible}},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.isVisible,expression:"isVisible"}],staticClass:"generic-modal",class:[t.stateClasses,t.themeClass],style:t.modalColors,attrs:{role:"dialog"}},[e("div",{staticClass:"backdrop",on:{click:t.onClickOutside}}),e("div",{ref:"container",staticClass:"container",style:{width:t.width}},[t.showClose?e("button",{ref:"close",staticClass:"close",attrs:{"aria-label":t.$t("verbs.close")},on:{click:function(e){return e.preventDefault(),t.closeModal.apply(null,arguments)}}},[e("CloseIcon")],1):t._e(),e("div",{ref:"content",staticClass:"modal-content"},[t._t("default")],2)])])])},r=[],o=n(9652),i=n(114),a=n(1147),l=n(2433),c=n(1970);const u={light:"light",dark:"dark",dynamic:"dynamic",code:"code"};var h={name:"GenericModal",model:{prop:"visible",event:"update:visible"},components:{CloseIcon:c.Z,PortalSource:l.h_},props:{visible:{type:Boolean,default:!1},isFullscreen:{type:Boolean,default:!1},theme:{type:String,validator:t=>Object.keys(u).includes(t),default:u.light},codeBackgroundColorOverride:{type:String,default:""},backdropBackgroundColorOverride:{type:String,default:""},width:{type:String,default:null},showClose:{type:Boolean,default:!0}},data(){return{lastFocusItem:null,prefersDarkStyle:!1,focusTrapInstance:null}},computed:{isVisible:{get:({visible:t})=>t,set(t){this.$emit("update:visible",t)}},modalColors(){return{"--code-background":this.codeBackgroundColorOverride,"--backdrop-background":this.backdropBackgroundColorOverride}},themeClass({theme:t,prefersDarkStyle:e,isThemeDynamic:n}){let s={};return n&&(s={"theme-light":!e,"theme-dark":e}),[`theme-${t}`,s]},stateClasses:({isFullscreen:t,isVisible:e,showClose:n})=>({"modal-fullscreen":t,"modal-standard":!t,"modal-open":e,"modal-with-close":n}),isThemeDynamic:({theme:t})=>t===u.dynamic||t===u.code},watch:{isVisible(t){t?this.onShow():this.onHide()}},mounted(){if(this.focusTrapInstance=new i.Z,document.addEventListener("keydown",this.onKeydown),this.isThemeDynamic){const t=window.matchMedia("(prefers-color-scheme: dark)");t.addListener(this.onColorSchemePreferenceChange),this.$once("hook:beforeDestroy",(()=>{t.removeListener(this.onColorSchemePreferenceChange)})),this.onColorSchemePreferenceChange(t)}},beforeDestroy(){this.isVisible&&o.Z.unlockScroll(this.$refs.container),document.removeEventListener("keydown",this.onKeydown),this.focusTrapInstance.destroy()},methods:{async onShow(){await this.$nextTick(),o.Z.lockScroll(this.$refs.container),await this.focusCloseButton(),this.focusTrapInstance.updateFocusContainer(this.$refs.container),this.focusTrapInstance.start(),a.Z.hide(this.$refs.container)},onHide(){o.Z.unlockScroll(this.$refs.container),this.focusTrapInstance.stop(),this.lastFocusItem&&(this.lastFocusItem.focus({preventScroll:!0}),this.lastFocusItem=null),this.$emit("close"),a.Z.show(this.$refs.container)},closeModal(){this.isVisible=!1},selectContent(){window.getSelection().selectAllChildren(this.$refs.content)},onClickOutside(){this.closeModal()},onKeydown(t){const{metaKey:e=!1,ctrlKey:n=!1,key:s}=t;this.isVisible&&("a"===s&&(e||n)&&(t.preventDefault(),this.selectContent()),"Escape"===s&&(t.preventDefault(),this.closeModal()))},onColorSchemePreferenceChange({matches:t}){this.prefersDarkStyle=t},async focusCloseButton(){this.lastFocusItem=document.activeElement,await this.$nextTick(),this.$refs.close&&this.$refs.close.focus(),this.$emit("open")}}},d=h,f=n(1001),p=(0,f.Z)(d,s,r,!1,null,"795f7b59",null),m=p.exports},5151:function(t,e,n){n.d(e,{Z:function(){return u}});var s=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"inline-chevron-down-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-chevron-down"}},[e("path",{attrs:{d:"M12.634 2.964l0.76 0.649-6.343 7.426-6.445-7.423 0.755-0.655 5.683 6.545 5.59-6.542z"}})])},r=[],o=n(9742),i={name:"InlineChevronDownIcon",components:{SVGIcon:o.Z}},a=i,l=n(1001),c=(0,l.Z)(a,s,r,!1,null,null,null),u=c.exports},6772:function(t,e,n){n.d(e,{Z:function(){return u}});var s=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"inline-plus-circle-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-plus-circle"}},[e("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),e("path",{attrs:{d:"M4 6.52h6v1h-6v-1z"}}),e("path",{attrs:{d:"M6.5 4.010h1v6h-1v-6z"}})])},r=[],o=n(9742),i={name:"InlinePlusCircleIcon",components:{SVGIcon:o.Z}},a=i,l=n(1001),c=(0,l.Z)(a,s,r,!1,null,null,null),u=c.exports},8093:function(t,e,n){n.d(e,{Z:function(){return y}});var s=function(){var t=this,e=t._self._c;return e("div",{style:t.codeStyle},[t._t("default")],2)},r=[],o=n(8571);const i=0,a=255;function l(t){const e=t.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d+\.?\d*|\.\d+)\s*\)/);if(!e)throw new Error("invalid rgba() input");const n=10;return{r:parseInt(e[1],n),g:parseInt(e[2],n),b:parseInt(e[3],n),a:parseFloat(e[4])}}function c(t){const{r:e,g:n,b:s}=l(t);return.2126*e+.7152*n+.0722*s}function u(t,e){const n=Math.round(a*e),s=l(t),{a:r}=s,[o,c,u]=[s.r,s.g,s.b].map((t=>Math.max(i,Math.min(a,t+n))));return`rgba(${o}, ${c}, ${u}, ${r})`}function h(t,e){return u(t,e)}function d(t,e){return u(t,-1*e)}var f={name:"CodeTheme",data(){return{codeThemeState:o.Z.state}},computed:{codeStyle(){const{codeColors:t}=this.codeThemeState;return t?{"--text":t.text,"--background":t.background,"--line-highlight":t.lineHighlight,"--url":t.commentURL,"--syntax-comment":t.comment,"--syntax-quote":t.comment,"--syntax-keyword":t.keyword,"--syntax-literal":t.keyword,"--syntax-selector-tag":t.keyword,"--syntax-string":t.stringLiteral,"--syntax-bullet":t.stringLiteral,"--syntax-meta":t.keyword,"--syntax-number":t.stringLiteral,"--syntax-symbol":t.stringLiteral,"--syntax-tag":t.stringLiteral,"--syntax-attr":t.typeAnnotation,"--syntax-built_in":t.typeAnnotation,"--syntax-builtin-name":t.typeAnnotation,"--syntax-class":t.typeAnnotation,"--syntax-params":t.typeAnnotation,"--syntax-section":t.typeAnnotation,"--syntax-title":t.typeAnnotation,"--syntax-type":t.typeAnnotation,"--syntax-attribute":t.keyword,"--syntax-identifier":t.text,"--syntax-subst":t.text,"--color-syntax-param-internal-name":this.internalParamNameColor}:null},internalParamNameColor(){const{background:t,text:e}=this.codeThemeState.codeColors;try{const n=c(t),s=n1&&void 0!==arguments[1]?arguments[1]:{};return t.reduce((function(t,n){var s=n.passengers[0],r="function"===typeof s?s(e):n.passengers;return t.concat(r)}),[])}function f(t,e){return t.map((function(t,e){return[e,t]})).sort((function(t,n){return e(t[1],n[1])||t[0]-n[0]})).map((function(t){return t[1]}))}function p(t,e){return e.reduce((function(e,n){return t.hasOwnProperty(n)&&(e[n]=t[n]),e}),{})}var m={},g={},y={},b=r.extend({data:function(){return{transports:m,targets:g,sources:y,trackInstances:u}},methods:{open:function(t){if(u){var e=t.to,n=t.from,s=t.passengers,o=t.order,i=void 0===o?1/0:o;if(e&&n&&s){var a={to:e,from:n,passengers:h(s),order:i},l=Object.keys(this.transports);-1===l.indexOf(e)&&r.set(this.transports,e,[]);var c=this.$_getTransportIndex(a),d=this.transports[e].slice(0);-1===c?d.push(a):d[c]=a,this.transports[e]=f(d,(function(t,e){return t.order-e.order}))}}},close:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.to,s=t.from;if(n&&(s||!1!==e)&&this.transports[n])if(e)this.transports[n]=[];else{var r=this.$_getTransportIndex(t);if(r>=0){var o=this.transports[n].slice(0);o.splice(r,1),this.transports[n]=o}}},registerTarget:function(t,e,n){u&&(this.trackInstances&&!n&&this.targets[t]&&console.warn("[portal-vue]: Target ".concat(t," already exists")),this.$set(this.targets,t,Object.freeze([e])))},unregisterTarget:function(t){this.$delete(this.targets,t)},registerSource:function(t,e,n){u&&(this.trackInstances&&!n&&this.sources[t]&&console.warn("[portal-vue]: source ".concat(t," already exists")),this.$set(this.sources,t,Object.freeze([e])))},unregisterSource:function(t){this.$delete(this.sources,t)},hasTarget:function(t){return!(!this.targets[t]||!this.targets[t][0])},hasSource:function(t){return!(!this.sources[t]||!this.sources[t][0])},hasContentFor:function(t){return!!this.transports[t]&&!!this.transports[t].length},$_getTransportIndex:function(t){var e=t.to,n=t.from;for(var s in this.transports[e])if(this.transports[e][s].from===n)return+s;return-1}}}),v=new b(m),T=1,S=r.extend({name:"portal",props:{disabled:{type:Boolean},name:{type:String,default:function(){return String(T++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}}},created:function(){var t=this;this.$nextTick((function(){v.registerSource(t.name,t)}))},mounted:function(){this.disabled||this.sendUpdate()},updated:function(){this.disabled?this.clear():this.sendUpdate()},beforeDestroy:function(){v.unregisterSource(this.name),this.clear()},watch:{to:function(t,e){e&&e!==t&&this.clear(e),this.sendUpdate()}},methods:{clear:function(t){var e={from:this.name,to:t||this.to};v.close(e)},normalizeSlots:function(){return this.$scopedSlots.default?[this.$scopedSlots.default]:this.$slots.default},normalizeOwnChildren:function(t){return"function"===typeof t?t(this.slotProps):t},sendUpdate:function(){var t=this.normalizeSlots();if(t){var e={from:this.name,to:this.to,passengers:i(t),order:this.order};v.open(e)}else this.clear()}},render:function(t){var e=this.$slots.default||this.$scopedSlots.default||[],n=this.tag;return e&&this.disabled?e.length<=1&&this.slim?this.normalizeOwnChildren(e)[0]:t(n,[this.normalizeOwnChildren(e)]):this.slim?t():t(n,{class:{"v-portal":!0},style:{display:"none"},key:"v-portal-placeholder"})}}),w=r.extend({name:"portalTarget",props:{multiple:{type:Boolean,default:!1},name:{type:String,required:!0},slim:{type:Boolean,default:!1},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},data:function(){return{transports:v.transports,firstRender:!0}},created:function(){var t=this;this.$nextTick((function(){v.registerTarget(t.name,t)}))},watch:{ownTransports:function(){this.$emit("change",this.children().length>0)},name:function(t,e){v.unregisterTarget(e),v.registerTarget(t,this)}},mounted:function(){var t=this;this.transition&&this.$nextTick((function(){t.firstRender=!1}))},beforeDestroy:function(){v.unregisterTarget(this.name)},computed:{ownTransports:function(){var t=this.transports[this.name]||[];return this.multiple?t:0===t.length?[]:[t[t.length-1]]},passengers:function(){return d(this.ownTransports,this.slotProps)}},methods:{children:function(){return 0!==this.passengers.length?this.passengers:this.$scopedSlots.default?this.$scopedSlots.default(this.slotProps):this.$slots.default||[]},noWrapper:function(){var t=this.slim&&!this.transition;return t&&this.children().length>1&&console.warn("[portal-vue]: PortalTarget with `slim` option received more than one child element."),t}},render:function(t){var e=this.noWrapper(),n=this.children(),s=this.transition||this.tag;return e?n[0]:this.slim&&!s?t():t(s,{props:{tag:this.transition&&this.tag?this.tag:void 0},class:{"vue-portal-target":!0}},n)}}),C=0,$=["disabled","name","order","slim","slotProps","tag","to"],k=["multiple","transition"],x=r.extend({name:"MountingPortal",inheritAttrs:!1,props:{append:{type:[Boolean,String]},bail:{type:Boolean},mountTo:{type:String,required:!0},disabled:{type:Boolean},name:{type:String,default:function(){return"mounted_"+String(C++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}},multiple:{type:Boolean,default:!1},targetSlim:{type:Boolean},targetSlotProps:{type:Object,default:function(){return{}}},targetTag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},created:function(){if("undefined"!==typeof document){var t=document.querySelector(this.mountTo);if(t){var e=this.$props;if(v.targets[e.name])e.bail?console.warn("[portal-vue]: Target ".concat(e.name," is already mounted.\n Aborting because 'bail: true' is set")):this.portalTarget=v.targets[e.name];else{var n=e.append;if(n){var s="string"===typeof n?n:"DIV",r=document.createElement(s);t.appendChild(r),t=r}var o=p(this.$props,k);o.slim=this.targetSlim,o.tag=this.targetTag,o.slotProps=this.targetSlotProps,o.name=this.to,this.portalTarget=new w({el:t,parent:this.$parent||this,propsData:o})}}else console.error("[portal-vue]: Mount Point '".concat(this.mountTo,"' not found in document"))}},beforeDestroy:function(){var t=this.portalTarget;if(this.append){var e=t.$el;e.parentNode.removeChild(e)}t.$destroy()},render:function(t){if(!this.portalTarget)return console.warn("[portal-vue] Target wasn't mounted"),t();if(!this.$scopedSlots.manual){var e=p(this.$props,$);return t(S,{props:e,attrs:this.$attrs,on:this.$listeners,scopedSlots:this.$scopedSlots},this.$slots.default)}var n=this.$scopedSlots.manual({to:this.to});return Array.isArray(n)&&(n=n[0]),n||t()}});function I(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.component(e.portalName||"Portal",S),t.component(e.portalTargetName||"PortalTarget",w),t.component(e.MountingPortalName||"MountingPortal",x)}var P={install:I};e.h_=S,e.YC=w},8571:function(t,e){e["Z"]={state:{codeColors:null},reset(){this.state.codeColors=null},updateCodeColors(t){const e=t=>t?`rgba(${t.red}, ${t.green}, ${t.blue}, ${t.alpha})`:null;this.state.codeColors=Object.entries(t).reduce(((t,[n,s])=>({...t,[n]:e(s)})),{})}}},114:function(t,e,n){function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,{Z:function(){return o}});var r=n(7486);class o{constructor(t){s(this,"focusContainer",null),s(this,"tabTargets",[]),s(this,"firstTabTarget",null),s(this,"lastTabTarget",null),s(this,"lastFocusedElement",null),this.focusContainer=t,this.onFocus=this.onFocus.bind(this)}updateFocusContainer(t){this.focusContainer=t}start(){this.collectTabTargets(),this.firstTabTarget?this.focusContainer.contains(document.activeElement)&&r.ZP.isTabbableElement(document.activeElement)||this.firstTabTarget.focus():console.warn("There are no focusable elements. FocusTrap needs at least one."),this.lastFocusedElement=document.activeElement,document.addEventListener("focus",this.onFocus,!0)}stop(){document.removeEventListener("focus",this.onFocus,!0)}collectTabTargets(){this.tabTargets=r.ZP.getTabbableElements(this.focusContainer),this.firstTabTarget=this.tabTargets[0],this.lastTabTarget=this.tabTargets[this.tabTargets.length-1]}onFocus(t){if(this.focusContainer.contains(t.target))this.lastFocusedElement=t.target;else{if(t.preventDefault(),this.collectTabTargets(),this.lastFocusedElement===this.lastTabTarget||!this.lastFocusedElement||!document.contains(this.lastFocusedElement))return this.firstTabTarget.focus(),void(this.lastFocusedElement=this.firstTabTarget);this.lastFocusedElement===this.firstTabTarget&&(this.lastTabTarget.focus(),this.lastFocusedElement=this.lastTabTarget)}}destroy(){this.stop(),this.focusContainer=null,this.tabTargets=[],this.firstTabTarget=null,this.lastTabTarget=null,this.lastFocusedElement=null}}}}]); \ No newline at end of file diff --git a/docs/js/866.eea4607d.js b/docs/js/866.eea4607d.js new file mode 100644 index 0000000..6cb6c5b --- /dev/null +++ b/docs/js/866.eea4607d.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[866],{4655:function(e,t,n){"use strict";n.d(t,{Z:function(){return F}});var r,i,s=function(){var e=this,t=e._self._c;return t("div",{staticClass:"asset"},[t(e.assetComponent,e._g(e._b({tag:"component"},"component",e.assetProps,!1),e.assetListeners))],1)},a=[],o=n(6769),l=function(){var e=this,t=e._self._c;return t("ConditionalWrapper",{ref:"wrapper",attrs:{tag:e.DeviceFrameComponent,"should-wrap":!!e.deviceFrame,device:e.deviceFrame}},[t("div",[t("video",{key:e.videoAttributes.url,ref:"video",attrs:{id:e.id,controls:e.showsDefaultControls,"data-orientation":e.orientation,autoplay:e.autoplays,poster:e.normalisedPosterPath,width:e.optimalWidth,"aria-roledescription":e.$t("video.title"),"aria-labelledby":e.showsDefaultControls&&e.alt?e.altTextId:null,playsinline:""},domProps:{muted:e.muted},on:{loadedmetadata:e.setOrientation,playing:function(t){return e.$emit("playing")},pause:function(t){return e.$emit("pause")},ended:function(t){return e.$emit("ended")}}},[t("source",{attrs:{src:e.normalizePath(e.videoAttributes.url)}})]),e.alt?t("span",{attrs:{id:e.altTextId,hidden:""}},[e._v(" "+e._s(e.$t("video.description",{alt:e.alt}))+" ")]):e._e()])])},c=[],u=n(5947),d=n(4030),A=n(9804),p={functional:!0,name:"ConditionalWrapper",props:{tag:[Object,String],shouldWrap:Boolean},render(e,t){return t.props.shouldWrap?e(t.props.tag,t.data,t.children):t.children}},h=p,g=n(1001),f=(0,g.Z)(h,r,i,!1,null,null,null),m=f.exports,v=n(889),b={name:"VideoAsset",components:{ConditionalWrapper:m},props:{variants:{type:Array,required:!0},showsDefaultControls:{type:Boolean,default:()=>!1},autoplays:{type:Boolean,default:()=>!1},posterVariants:{type:Array,required:!1,default:()=>[]},muted:{type:Boolean,default:!1},deviceFrame:{type:String,required:!1},alt:{type:String,required:!1},id:{type:String,required:!0}},data:()=>({appState:d["default"].state,optimalWidth:null,orientation:null}),computed:{DeviceFrameComponent:()=>v.Z,preferredColorScheme:({appState:e})=>e.preferredColorScheme,systemColorScheme:({appState:e})=>e.systemColorScheme,altTextId:({id:e})=>`${e}-alt`,userPrefersDark:({preferredColorScheme:e,systemColorScheme:t})=>e===A.Z.dark||e===A.Z.auto&&t===A.Z.dark,shouldShowDarkVariant:({darkVideoVariantAttributes:e,userPrefersDark:t})=>e&&t,defaultVideoAttributes(){return this.videoVariantsGroupedByAppearance.light[0]||this.darkVideoVariantAttributes||{}},darkVideoVariantAttributes(){return this.videoVariantsGroupedByAppearance.dark[0]},videoVariantsGroupedByAppearance(){return(0,u.XV)(this.variants)},posterVariantsGroupedByAppearance(){const{light:e,dark:t}=(0,u.XV)(this.posterVariants);return{light:(0,u.u)(e),dark:(0,u.u)(t)}},defaultPosterAttributes:({posterVariantsGroupedByAppearance:e,userPrefersDark:t})=>t&&e.dark.length?e.dark[0]:e.light[0]||{},normalisedPosterPath:({defaultPosterAttributes:e})=>(0,u.AH)(e.src),videoAttributes:({darkVideoVariantAttributes:e,defaultVideoAttributes:t,shouldShowDarkVariant:n})=>n?e:t},watch:{normalisedPosterPath:{immediate:!0,handler:"getPosterDimensions"}},methods:{normalizePath:u.AH,async getPosterDimensions(e){if(!e)return void(this.optimalWidth=null);const{density:t}=this.defaultPosterAttributes,n=parseInt(t.match(/\d+/)[0],10),{width:r}=await(0,u.RY)(e);this.optimalWidth=r/n},setOrientation(){const{videoWidth:e,videoHeight:t}=this.$refs.video;this.orientation=(0,u.T8)(e,t)}}},y=b,C=(0,g.Z)(y,l,c,!1,null,null,null),I=C.exports,w=function(){var e=this,t=e._self._c;return t("div",{staticClass:"video-replay-container",attrs:{role:"group","aria-roledescription":e.$t("video.title"),"aria-labelledby":e.showsDefaultControls?null:e.ariaLabelledByContainer}},[t("span",{attrs:{id:`${e.id}-custom-controls`,hidden:""}},[e._v(" "+e._s(e.$t("video.custom-controls"))+" ")]),t("VideoAsset",{ref:"asset",attrs:{variants:e.variants,autoplays:e.autoplays,showsDefaultControls:e.showsDefaultControls,muted:e.muted,posterVariants:e.posterVariants,deviceFrame:e.deviceFrame,alt:e.alt,id:e.id},on:{pause:e.onPause,playing:e.onVideoPlaying,ended:e.onVideoEnd}}),e.showsDefaultControls?e._e():t("a",{staticClass:"control-button",attrs:{href:"#","aria-controls":e.id},on:{click:function(t){return t.preventDefault(),e.togglePlayStatus.apply(null,arguments)}}},[e._v(" "+e._s(e.text)+" "),e.videoEnded?t("InlineReplayIcon",{staticClass:"control-icon icon-inline"}):e.isPlaying?t("PauseIcon",{staticClass:"control-icon icon-inline"}):t("PlayIcon",{staticClass:"control-icon icon-inline"})],1)],1)},E=[],B=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"inline-replay-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-replay"}},[t("path",{attrs:{d:"M2.254 10.201c-1.633-2.613-0.838-6.056 1.775-7.689 2.551-1.594 5.892-0.875 7.569 1.592l0.12 0.184-0.848 0.53c-1.34-2.145-4.166-2.797-6.311-1.457s-2.797 4.166-1.457 6.311 4.166 2.797 6.311 1.457c1.006-0.629 1.71-1.603 2.003-2.723l0.056-0.242 0.98 0.201c-0.305 1.487-1.197 2.792-2.51 3.612-2.613 1.633-6.056 0.838-7.689-1.775z"}}),t("path",{attrs:{d:"M10.76 1.355l0.984-0.18 0.851 4.651-4.56-1.196 0.254-0.967 3.040 0.796z"}})])},x=[],k=n(9742),S={name:"InlineReplayIcon",components:{SVGIcon:k.Z}},_=S,T=(0,g.Z)(_,B,x,!1,null,null,null),L=T.exports,P=n(6698),Q=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"pause-icon",attrs:{viewBox:"0 0 14 14",themeId:"pause"}},[t("path",{attrs:{d:"M5 4h1v6h-1z"}}),t("path",{attrs:{d:"M8 4h1v6h-1z"}}),t("path",{attrs:{d:"M7 0.5c-3.6 0-6.5 2.9-6.5 6.5s2.9 6.5 6.5 6.5 6.5-2.9 6.5-6.5-2.9-6.5-6.5-6.5zM7 12.5c-3 0-5.5-2.5-5.5-5.5s2.5-5.5 5.5-5.5 5.5 2.5 5.5 5.5-2.5 5.5-5.5 5.5z"}})])},M=[],Z={name:"PauseIcon",components:{SVGIcon:k.Z}},D=Z,O=(0,g.Z)(D,Q,M,!1,null,null,null),N=O.exports,R={name:"ReplayableVideoAsset",components:{PauseIcon:N,PlayIcon:P.Z,InlineReplayIcon:L,VideoAsset:I},props:{variants:{type:Array,required:!0},alt:{type:String,required:!1},id:{type:String,required:!0},showsDefaultControls:{type:Boolean,default:()=>!1},autoplays:{type:Boolean,default:()=>!1},muted:{type:Boolean,default:!1},posterVariants:{type:Array,default:()=>[]},deviceFrame:{type:String,required:!1}},computed:{text(){return this.videoEnded?this.$t("video.replay"):this.isPlaying?this.$t("video.pause"):this.$t("video.play")},ariaLabelledByContainer:({id:e,alt:t})=>t?`${e}-custom-controls ${e}-alt`:`${e}-custom-controls`},data(){return{isPlaying:!1,videoEnded:!1}},methods:{async togglePlayStatus(){const e=this.$refs.asset.$refs.video;e&&(this.isPlaying&&!this.videoEnded?await e.pause():await e.play())},onVideoEnd(){this.isPlaying=!1,this.videoEnded=!0},onVideoPlaying(){const{video:e}=this.$refs.asset.$refs;this.isPlaying=!e.paused,this.videoEnded=e.ended},onPause(){const{video:e}=this.$refs.asset.$refs;!this.showsDefaultControls&&this.isPlaying&&(this.isPlaying=!1),this.videoEnded=e.ended}}},j=R,G=(0,g.Z)(j,w,E,!1,null,"3fb37a97",null),V=G.exports,$=n(5953);const z={video:"video",image:"image"};var q={name:"Asset",components:{ImageAsset:o.Z,VideoAsset:I},constants:{AssetTypes:z},mixins:[$.Z],props:{identifier:{type:String,required:!0},showsReplayButton:{type:Boolean,default:()=>!0},showsVideoControls:{type:Boolean,default:()=>!1},videoAutoplays:{type:Boolean,default:()=>!1},videoMuted:{type:Boolean,default:!1},deviceFrame:{type:String,required:!1}},computed:{rawAsset(){return this.references[this.identifier]||{}},isRawAssetVideo:({rawAsset:e})=>e.type===z.video,videoPoster(){return this.isRawAssetVideo&&this.references[this.rawAsset.poster]},asset(){return this.isRawAssetVideo&&this.prefersReducedMotion&&this.videoPoster||this.rawAsset},assetComponent(){switch(this.asset.type){case z.image:return o.Z;case z.video:return this.showsReplayButton?V:I;default:return}},prefersReducedMotion(){return window.matchMedia("(prefers-reduced-motion)").matches},assetProps(){return{[z.image]:this.imageProps,[z.video]:this.videoProps}[this.asset.type]},imageProps(){return{alt:this.asset.alt,variants:this.asset.variants}},videoProps(){return{variants:this.asset.variants,showsDefaultControls:this.showsVideoControls,muted:this.videoMuted,autoplays:!this.prefersReducedMotion&&this.videoAutoplays,posterVariants:this.videoPoster?this.videoPoster.variants:[],deviceFrame:this.deviceFrame,alt:this.asset.alt,id:this.identifier}},assetListeners(){return{[z.image]:null,[z.video]:{ended:()=>this.$emit("videoEnded")}}[this.asset.type]}}},H=q,W=(0,g.Z)(H,s,a,!1,null,"6ab0b718",null),F=W.exports},7188:function(e,t,n){"use strict";n.d(t,{default:function(){return h}});var r=n(5381);const i=e=>e?`(max-width: ${e}px)`:"",s=e=>e?`(min-width: ${e}px)`:"";function a({minWidth:e,maxWidth:t}){return["only screen",s(e),i(t)].filter(Boolean).join(" and ")}function o({maxWidth:e,minWidth:t}){return window.matchMedia(a({minWidth:t,maxWidth:e}))}var l,c,u={name:"BreakpointEmitter",constants:{BreakpointAttributes:r.kB,BreakpointName:r.L3,BreakpointScopes:r.lU},props:{scope:{type:String,default:()=>r.lU["default"],validator:e=>e in r.lU}},render(){return this.$scopedSlots.default?this.$scopedSlots.default({matchingBreakpoint:this.matchingBreakpoint}):null},data:()=>({matchingBreakpoint:null}),methods:{initMediaQuery(e,t){const n=o(t),r=t=>this.handleMediaQueryChange(t,e);n.addListener(r),this.$once("hook:beforeDestroy",(()=>{n.removeListener(r)})),r(n)},handleMediaQueryChange(e,t){e.matches&&(this.matchingBreakpoint=t,this.$emit("change",t))}},mounted(){const e=r.kB[this.scope]||{};Object.entries(e).forEach((([e,t])=>{this.initMediaQuery(e,t)}))}},d=u,A=n(1001),p=(0,A.Z)(d,l,c,!1,null,null,null),h=p.exports},5281:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=function(){var e=this,t=e._self._c;return t(e.resolvedComponent,e._b({tag:"component",staticClass:"button-cta",class:{"is-dark":e.isDark}},"component",e.componentProps,!1),[e._t("default")],2)},i=[],s=n(4260),a={name:"ButtonLink",components:{Reference:s.Z},props:{url:{type:String,required:!1},isDark:{type:Boolean,default:!1}},computed:{resolvedComponent:({url:e})=>e?s.Z:"button",componentProps:({url:e})=>e?{url:e}:{}}},o=a,l=n(1001),c=(0,l.Z)(o,r,i,!1,null,"c9c81868",null),u=c.exports},7605:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=function(){var e=this,t=e._self._c;return e.action?t("DestinationDataProvider",{attrs:{destination:e.action},scopedSlots:e._u([{key:"default",fn:function({url:n,title:r}){return[t("ButtonLink",{attrs:{url:n,isDark:e.isDark}},[e._v(" "+e._s(r)+" ")])]}}],null,!1,710653997)}):e._e()},i=[],s=n(5281),a=n(1295),o={name:"CallToActionButton",components:{DestinationDataProvider:a.Z,ButtonLink:s.Z},props:{action:{type:Object,required:!0},isDark:{type:Boolean,default:!1}}},l=o,c=n(1001),u=(0,c.Z)(l,r,i,!1,null,null,null),d=u.exports},3917:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=function(){var e=this,t=e._self._c;return t("code",{attrs:{tabindex:"0","data-before-code":e.$t("accessibility.code.start"),"data-after-code":e.$t("accessibility.code.end")}},[e._t("default")],2)},i=[],s={name:"CodeBlock"},a=s,o=n(1001),l=(0,o.Z)(a,r,i,!1,null,"08295b2f",null),c=l.exports},9519:function(e,t,n){"use strict";n.r(t),n.d(t,{BlockType:function(){return St},default:function(){return Rt}});var r=n(5953),i=n(7587),s=n(5996),a=n(8039),o=n(2020),l=function(){var e=this,t=e._self._c;return t("div",{staticClass:"DictionaryExample"},[e._t("default"),t("CollapsibleCodeListing",{attrs:{content:e.example.content,showLineNumbers:""}})],2)},c=[],u=function(){var e=this,t=e._self._c;return t("div",{staticClass:"collapsible-code-listing",class:{"single-line":1===e.content[0].code.length}},[t("pre",[t("CodeBlock",e._l(this.content,(function(n,r){return t("div",{key:r,class:["container-general",{collapsible:!0===n.collapsible},{collapsed:!0===n.collapsible&&e.collapsed}]},e._l(n.code,(function(n,r){return t("div",{key:r,staticClass:"code-line-container"},[e._v("\n "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.showLineNumbers,expression:"showLineNumbers"}],staticClass:"code-number"}),e._v("\n "),t("div",{staticClass:"code-line"},[e._v(e._s(n))]),e._v("\n ")])})),0)})),0)],1)])},d=[],A=n(3917),p={name:"CollapsibleCodeListing",components:{CodeBlock:A.Z},props:{collapsed:{type:Boolean,required:!1},content:{type:Array,required:!0},showLineNumbers:{type:Boolean,default:()=>!0}}},h=p,g=n(1001),f=(0,g.Z)(h,u,d,!1,null,"25a17a0e",null),m=f.exports,v={name:"DictionaryExample",components:{CollapsibleCodeListing:m},props:{example:{type:Object,required:!0}}},b=v,y=(0,g.Z)(b,l,c,!1,null,null,null),C=y.exports,I=function(){var e=this,t=e._self._c;return t("Row",{staticClass:"endpoint-example"},[t("Column",{staticClass:"example-code"},[e._t("default"),t("Tabnav",{model:{value:e.currentTab,callback:function(t){e.currentTab=t},expression:"currentTab"}},[t("TabnavItem",{attrs:{value:e.Tab.request}},[e._v(e._s(e.$t("tab.request")))]),t("TabnavItem",{attrs:{value:e.Tab.response}},[e._v(e._s(e.$t("tab.response")))])],1),t("div",{staticClass:"output"},[e.isCurrent(e.Tab.request)?t("div",{staticClass:"code"},[t("CollapsibleCodeListing",e._b({attrs:{collapsed:e.isCollapsed,showLineNumbers:""}},"CollapsibleCodeListing",e.request,!1))],1):e._e(),e.isCurrent(e.Tab.response)?t("div",{staticClass:"code"},[t("CollapsibleCodeListing",e._b({attrs:{collapsed:e.isCollapsed,showLineNumbers:""}},"CollapsibleCodeListing",e.response,!1))],1):e._e()]),e.isCollapsible?t("div",{staticClass:"controls"},[e.isCollapsed?t("a",{staticClass:"toggle",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.showMore.apply(null,arguments)}}},[t("InlinePlusCircleSolidIcon",{staticClass:"control-icon icon-inline"}),e._v(" "+e._s(e.$t("more"))+" ")],1):t("a",{staticClass:"toggle",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.showLess.apply(null,arguments)}}},[t("InlineMinusCircleSolidIcon",{staticClass:"control-icon icon-inline"}),e._v(" "+e._s(e.$t("less"))+" ")],1)]):e._e()],2)],1)},w=[],E=n(9649),B=n(1576),x=function(){var e=this,t=e._self._c;return t("nav",{staticClass:"tabnav",class:{[`tabnav--${e.position}`]:e.position,"tabnav--vertical":e.vertical}},[t("ul",{staticClass:"tabnav-items"},[e._t("default")],2)])},k=[];const S="tabnavData";var _={name:"Tabnav",constants:{ProvideKey:S},provide(){const e={selectTab:this.selectTab};return Object.defineProperty(e,"activeTab",{enumerable:!0,get:()=>this.value}),{[S]:e}},props:{position:{type:String,required:!1,validator:e=>new Set(["start","center","end"]).has(e)},vertical:{type:Boolean,default:!1},value:{type:[String,Number],required:!0}},methods:{selectTab(e){this.$emit("input",e)}}},T=_,L=(0,g.Z)(T,x,k,!1,null,"5572fe1d",null),P=L.exports,Q=function(){var e=this,t=e._self._c;return t("li",{staticClass:"tabnav-item"},[t("a",{staticClass:"tabnav-link",class:{active:e.isActive},attrs:{href:"#","aria-current":e.isActive?"true":"false"},on:{click:function(t){return t.preventDefault(),e.tabnavData.selectTab(e.value)}}},[e._t("default")],2)])},M=[],Z={name:"TabnavItem",inject:{tabnavData:{default:{activeTab:null,selectTab:()=>{}}}},props:{value:{type:[String,Number],default:null}},computed:{isActive({tabnavData:e,value:t}){return e.activeTab===t}}},D=Z,O=(0,g.Z)(D,Q,M,!1,null,"6aa9882a",null),N=O.exports,R=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"inline-plus-circle-solid-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-plus-circle-solid"}},[t("path",{attrs:{d:"M7.005 0.5h-0.008c-1.791 0.004-3.412 0.729-4.589 1.9l0-0c-1.179 1.177-1.908 2.803-1.908 4.6 0 3.59 2.91 6.5 6.5 6.5s6.5-2.91 6.5-6.5c0-3.587-2.906-6.496-6.492-6.5h-0zM4.005 7.52v-1h2.5v-2.51h1v2.51h2.5v1h-2.501v2.49h-1v-2.49z"}})])},j=[],G=n(9742),V={name:"InlinePlusCircleSolidIcon",components:{SVGIcon:G.Z}},$=V,z=(0,g.Z)($,R,j,!1,null,null,null),q=z.exports,H=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"inline-minus-circle-solid-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-minus-circle-solid"}},[t("path",{attrs:{d:"m6.98999129.48999129c3.58985091 0 6.50000001 2.91014913 6.50000001 6.5 0 3.58985091-2.9101491 6.50000001-6.50000001 6.50000001-3.58985087 0-6.5-2.9101491-6.5-6.50000001 0-3.58985087 2.91014913-6.5 6.5-6.5zm3 6.02001742h-6v1h6z","fill-rule":"evenodd"}})])},W=[],F={name:"InlineMinusCircleSolidIcon",components:{SVGIcon:G.Z}},U=F,Y=(0,g.Z)(U,H,W,!1,null,null,null),X=Y.exports;const K={request:"Request",response:"Response"};var J={name:"EndpointExample",components:{InlineMinusCircleSolidIcon:X,InlinePlusCircleSolidIcon:q,TabnavItem:N,Tabnav:P,CollapsibleCodeListing:m,Row:E.Z,Column:B.Z},constants:{Tab:K},props:{request:{type:Object,required:!0},response:{type:Object,required:!0}},data(){return{isCollapsed:!0,currentTab:K.request}},computed:{Tab:()=>K,isCollapsible:({response:e,request:t,currentTab:n})=>{const r={[K.request]:t.content,[K.response]:e.content}[n]||[];return r.some((({collapsible:e})=>e))}},methods:{isCurrent(e){return this.currentTab===e},showMore(){this.isCollapsed=!1},showLess(){this.isCollapsed=!0}}},ee=J,te=(0,g.Z)(ee,I,w,!1,null,"c84e62a6",null),ne=te.exports,re=function(){var e=this,t=e._self._c;return t("figure",{attrs:{id:e.anchor}},[e._t("default")],2)},ie=[],se={name:"Figure",props:{anchor:{type:String,required:!1}}},ae=se,oe=(0,g.Z)(ae,re,ie,!1,null,null,null),le=oe.exports,ce=function(){var e=this,t=e._self._c;return t(e.tag,{tag:"component",staticClass:"caption",class:{trailing:e.trailing}},[e.title?[t("strong",[e._v(e._s(e.title))]),e._v(" "),e._t("default")]:[e._t("default")]],2)},ue=[];const de={caption:"caption",figcaption:"figcaption"},Ae={leading:"leading",trailing:"trailing"};var pe={name:"Caption",constants:{CaptionPosition:Ae,CaptionTag:de},props:{title:{type:String,required:!1},tag:{type:String,required:!0,validator:e=>Object.hasOwnProperty.call(de,e)},position:{type:String,default:()=>Ae.leading,validator:e=>Object.hasOwnProperty.call(Ae,e)}},computed:{trailing:({position:e})=>e===Ae.trailing}},he=pe,ge=(0,g.Z)(he,ce,ue,!1,null,"869c6f6e",null),fe=ge.exports,me=function(){var e=this,t=e._self._c;return t("ImageAsset",{attrs:{alt:e.alt,variants:e.variants}})},ve=[],be=n(6769),ye={name:"InlineImage",components:{ImageAsset:be.Z},props:{alt:{type:String,default:""},variants:{type:Array,required:!0}}},Ce=ye,Ie=(0,g.Z)(Ce,me,ve,!1,null,"bf997940",null),we=Ie.exports,Ee=n(4260),Be=function(){var e=this,t=e._self._c;return t("div",{staticClass:"table-wrapper"},[t("table",{class:{spanned:e.spanned}},[e._t("default")],2)])},xe=[],ke={name:"Table",props:{spanned:{type:Boolean,default:!1}}},Se=ke,_e=(0,g.Z)(Se,Be,xe,!1,null,"f3322390",null),Te=_e.exports,Le=function(){var e=this,t=e._self._c;return t("s",{attrs:{"data-before-text":e.$t("accessibility.strike.start"),"data-after-text":e.$t("accessibility.strike.end")}},[e._t("default")],2)},Pe=[],Qe={name:"StrikeThrough"},Me=Qe,Ze=(0,g.Z)(Me,Le,Pe,!1,null,"7fc51673",null),De=Ze.exports,Oe=function(){var e=this,t=e._self._c;return t("small",[e._t("default")],2)},Ne=[],Re={name:"Small"},je=Re,Ge=(0,g.Z)(je,Oe,Ne,!1,null,"77035f61",null),Ve=Ge.exports,$e=function(){var e=this,t=e._self._c;return t("Asset",{attrs:{identifier:e.identifier,deviceFrame:e.deviceFrame}})},ze=[],qe=n(4655),He={name:"BlockVideo",components:{Asset:qe.Z},props:{identifier:{type:String,required:!0},deviceFrame:{type:String,required:!1}}},We=He,Fe=(0,g.Z)(We,$e,ze,!1,null,"4f18340d",null),Ue=Fe.exports,Ye=n(3938),Xe=n(3002),Ke=function(){var e=this,t=e._self._c;return t("div",{staticClass:"TabNavigator",class:[{"tabs--vertical":e.vertical}]},[t("Tabnav",e._b({model:{value:e.currentTitle,callback:function(t){e.currentTitle=t},expression:"currentTitle"}},"Tabnav",{position:e.position,vertical:e.vertical},!1),e._l(e.titles,(function(n){return t("TabnavItem",{key:n,attrs:{value:n}},[e._v(" "+e._s(n)+" ")])})),1),t("div",{staticClass:"tabs-content"},[t("div",{staticClass:"tabs-content-container"},[t("transition-group",{attrs:{name:"fade"}},[e._l(e.titles,(function(n){return[t("div",{directives:[{name:"show",rawName:"v-show",value:n===e.currentTitle,expression:"title === currentTitle"}],key:n,staticClass:"tab-container",class:{active:n===e.currentTitle}},[e._t(n)],2)]}))],2)],1)])],1)},Je=[],et={name:"TabNavigator",components:{TabnavItem:N,Tabnav:P},props:{vertical:{type:Boolean,default:!1},position:{type:String,default:"start",validator:e=>new Set(["start","center","end"]).has(e)},titles:{type:Array,required:!0,default:()=>[]}},data(){return{currentTitle:this.titles[0]}},watch:{titles(e,t){if(e.length!t.includes(e)));this.currentTitle=n||this.currentTitle}}}},tt=et,nt=(0,g.Z)(tt,Ke,Je,!1,null,"e671a734",null),rt=nt.exports,it=function(){var e=this,t=e._self._c;return t("ul",{staticClass:"tasklist"},e._l(e.tasks,(function(n,r){return t("li",{key:r},[e.showCheckbox(n)?t("input",{attrs:{type:"checkbox",disabled:""},domProps:{checked:n.checked}}):e._e(),e._t("task",null,{task:n})],2)})),0)},st=[];const at="checked",ot=e=>Object.hasOwnProperty.call(e,at);var lt={name:"TaskList",props:{tasks:{required:!0,type:Array,validator:e=>e.some(ot)}},methods:{showCheckbox:ot}},ct=lt,ut=(0,g.Z)(ct,it,st,!1,null,"6a56a858",null),dt=ut.exports,At=function(){var e=this,t=e._self._c;return e.isListStyle?t("div",{staticClass:"links-block"},e._l(e.items,(function(e){return t("TopicsLinkBlock",{key:e.identifier,staticClass:"topic-link-block",attrs:{topic:e}})})),1):t("TopicsLinkCardGrid",{staticClass:"links-block",attrs:{items:e.items,"topic-style":e.blockStyle}})},pt=[],ht=n(1105),gt=n(3946),ft={name:"LinksBlock",mixins:[r.Z],components:{TopicsLinkBlock:()=>Promise.all([n.e(104),n.e(989)]).then(n.bind(n,8104)),TopicsLinkCardGrid:ht.Z},props:{identifiers:{type:Array,required:!0},blockStyle:{type:String,default:gt.o.compactGrid}},computed:{isListStyle:({blockStyle:e})=>e===gt.o.list,items:({identifiers:e,references:t})=>e.reduce(((e,n)=>t[n]?e.concat(t[n]):e),[])}},mt=ft,vt=(0,g.Z)(mt,At,pt,!1,null,"b1a75c1c",null),bt=vt.exports,yt=n(889),Ct=function(){var e=this,t=e._self._c;return t("hr",{staticClass:"thematic-break"})},It=[],wt={},Et=(0,g.Z)(wt,Ct,It,!1,null,"62d2922a",null),Bt=Et.exports;const{CaptionPosition:xt,CaptionTag:kt}=fe.constants,St={aside:"aside",codeListing:"codeListing",endpointExample:"endpointExample",heading:"heading",orderedList:"orderedList",paragraph:"paragraph",table:"table",termList:"termList",unorderedList:"unorderedList",dictionaryExample:"dictionaryExample",small:"small",video:"video",row:"row",tabNavigator:"tabNavigator",links:"links",thematicBreak:"thematicBreak"},_t={codeVoice:"codeVoice",emphasis:"emphasis",image:"image",inlineHead:"inlineHead",link:"link",newTerm:"newTerm",reference:"reference",strong:"strong",text:"text",superscript:"superscript",subscript:"subscript",strikethrough:"strikethrough"},Tt={both:"both",column:"column",none:"none",row:"row"},Lt={left:"left",right:"right",center:"center",unset:"unset"},Pt=7;function Qt(e,t){const n=n=>n.map(Qt(e,t)),r=t=>t.map((t=>e("li",{},n(t.content)))),l=(t,r,i,s,a,o,l)=>{const{colspan:c,rowspan:u}=o[`${a}_${s}`]||{};if(0===c||0===u)return null;const d=l[s]||Lt.unset;let A=null;return d!==Lt.unset&&(A=`${d}-cell`),e(t,{attrs:{...r,colspan:c,rowspan:u},class:A},n(i))},c=(t,n=Tt.none,r={},i=[])=>{switch(n){case Tt.both:{const[n,...s]=t;return[e("thead",{},[e("tr",{},n.map(((e,t)=>l("th",{scope:"col"},e,t,0,r,i))))]),e("tbody",{},s.map((([t,...n],s)=>e("tr",{},[l("th",{scope:"row"},t,0,s+1,r,i),...n.map(((e,t)=>l("td",{},e,t+1,s+1,r,i)))]))))]}case Tt.column:return[e("tbody",{},t.map((([t,...n],s)=>e("tr",{},[l("th",{scope:"row"},t,0,s,r,i),...n.map(((e,t)=>l("td",{},e,t+1,s,r,i)))]))))];case Tt.row:{const[n,...s]=t;return[e("thead",{},[e("tr",{},n.map(((e,t)=>l("th",{scope:"col"},e,t,0,r,i))))]),e("tbody",{},s.map(((t,n)=>e("tr",{},t.map(((e,t)=>l("td",{},e,t,n+1,r,i)))))))]}default:return[e("tbody",{},t.map(((t,n)=>e("tr",{},t.map(((e,t)=>l("td",{},e,t,n,r,i)))))))]}},u=({metadata:{abstract:t=[],anchor:r,title:i,...s},...a})=>{const o={...a,metadata:s},l=[n([o])];if(i&&t.length||t.length){const r=i?xt.leading:xt.trailing,s=r===xt.trailing?1:0,a=kt.figcaption;l.splice(s,0,e(fe,{props:{title:i,position:r,tag:a}},n(t)))}return e(le,{props:{anchor:r}},l)},d=({metadata:{deviceFrame:t},...r})=>e(yt.Z,{props:{device:t}},n([r]));return function(l){switch(l.type){case St.aside:{const t={kind:l.style,name:l.name};return e(i.Z,{props:t},n(l.content))}case St.codeListing:{if(l.metadata&&l.metadata.anchor)return u(l);const t={syntax:l.syntax,fileType:l.fileType,content:l.code,showLineNumbers:l.showLineNumbers};return e(s.Z,{props:t})}case St.endpointExample:{const t={request:l.request,response:l.response};return e(ne,{props:t},n(l.summary||[]))}case St.heading:{const t={anchor:l.anchor,level:l.level};return e(a.Z,{props:t},l.text)}case St.orderedList:return e("ol",{attrs:{start:l.start}},r(l.items));case St.paragraph:{const t=1===l.inlineContent.length&&l.inlineContent[0].type===_t.image,r=t?{class:["inline-image-container"]}:{};return e("p",r,n(l.inlineContent))}case St.table:{const t=c(l.rows,l.header,l.extendedData,l.alignments);if(l.metadata&&l.metadata.abstract){const{title:r}=l.metadata,i=r?xt.leading:xt.trailing,s=kt.caption;t.unshift(e(fe,{props:{title:r,position:i,tag:s}},n(l.metadata.abstract)))}return e(Te,{attrs:{id:l.metadata&&l.metadata.anchor},props:{spanned:!!l.extendedData}},t)}case St.termList:return e("dl",{},l.items.map((({term:t,definition:r})=>[e("dt",{},n(t.inlineContent)),e("dd",{},n(r.content))])));case St.unorderedList:{const t=e=>dt.props.tasks.validator(e.items);return t(l)?e(dt,{props:{tasks:l.items},scopedSlots:{task:e=>n(e.task.content)}}):e("ul",{},r(l.items))}case St.dictionaryExample:{const t={example:l.example};return e(C,{props:t},n(l.summary||[]))}case St.small:return e("p",{},[e(Ve,{},n(l.inlineContent))]);case St.video:{if(l.metadata&&l.metadata.abstract)return u(l);if(!t[l.identifier])return null;const{deviceFrame:n}=l.metadata||{};return e(Ue,{props:{identifier:l.identifier,deviceFrame:n}})}case St.row:{const t=l.numberOfColumns?{large:l.numberOfColumns}:void 0;return e(Xe.Z,{props:{columns:t}},l.columns.map((t=>e(Ye.Z,{props:{span:t.size}},n(t.content)))))}case St.tabNavigator:{const t=l.tabs.length>Pt,r=l.tabs.map((e=>e.title)),i=l.tabs.reduce(((e,t)=>({...e,[t.title]:()=>n(t.content)})),{});return e(rt,{props:{titles:r,vertical:t},scopedSlots:i})}case St.links:return e(bt,{props:{blockStyle:l.style,identifiers:l.items}});case St.thematicBreak:return e(Bt);case _t.codeVoice:return e(o.Z,{},l.code);case _t.emphasis:case _t.newTerm:return e("em",n(l.inlineContent));case _t.image:{if(l.metadata&&(l.metadata.anchor||l.metadata.abstract))return u(l);const n=t[l.identifier];return n?l.metadata&&l.metadata.deviceFrame?d(l):e(we,{props:{alt:n.alt,variants:n.variants}}):null}case _t.link:return e("a",{attrs:{href:l.destination},class:"inline-link"},l.title);case _t.reference:{const r=t[l.identifier];if(!r)return null;const i=l.overridingTitleInlineContent||r.titleInlineContent,s=l.overridingTitle||r.title;return e(Ee.Z,{props:{url:r.url,kind:r.kind,role:r.role,isActive:l.isActive,ideTitle:r.ideTitle,titleStyle:r.titleStyle,hasInlineFormatting:!!i},class:"inline-link"},i?n(i):s)}case _t.strong:case _t.inlineHead:return e("strong",n(l.inlineContent));case _t.text:return"\n"===l.text?e("br"):l.text;case _t.superscript:return e("sup",n(l.inlineContent));case _t.subscript:return e("sub",n(l.inlineContent));case _t.strikethrough:return e(De,n(l.inlineContent));default:return null}}}var Mt,Zt,Dt={name:"ContentNode",constants:{TableHeaderStyle:Tt,TableColumnAlignments:Lt},mixins:[r.Z],render:function(e){return e(this.tag,{class:"content"},this.content.map(Qt(e,this.references),this))},props:{content:{type:Array,required:!0},tag:{type:String,default:()=>"div"}},methods:{map(e){function t(n=[]){return n.map((n=>{switch(n.type){case St.aside:return e({...n,content:t(n.content)});case St.dictionaryExample:return e({...n,summary:t(n.summary)});case St.paragraph:case _t.emphasis:case _t.strong:case _t.inlineHead:case _t.superscript:case _t.subscript:case _t.strikethrough:case _t.newTerm:return e({...n,inlineContent:t(n.inlineContent)});case St.orderedList:case St.unorderedList:return e({...n,items:n.items.map((e=>({...e,content:t(e.content)})))});case St.table:return e({...n,rows:n.rows.map((e=>e.map(t)))});case St.termList:return e({...n,items:n.items.map((e=>({...e,term:{inlineContent:t(e.term.inlineContent)},definition:{content:t(e.definition.content)}})))});default:return e(n)}}))}return t(this.content)},forEach(e){function t(n=[]){n.forEach((n=>{switch(e(n),n.type){case St.aside:t(n.content);break;case St.paragraph:case _t.emphasis:case _t.strong:case _t.inlineHead:case _t.newTerm:case _t.superscript:case _t.subscript:case _t.strikethrough:t(n.inlineContent);break;case St.orderedList:case St.unorderedList:n.items.forEach((e=>t(e.content)));break;case St.dictionaryExample:t(n.summary);break;case St.table:n.rows.forEach((e=>{e.forEach(t)}));break;case St.termList:n.items.forEach((e=>{t(e.term.inlineContent),t(e.definition.content)}));break}}))}return t(this.content)},reduce(e,t){let n=t;return this.forEach((t=>{n=e(n,t)})),n}},computed:{plaintext(){const{references:e={}}=this;return this.reduce(((t,n)=>{if(n.type===St.paragraph)return`${t}\n`;if(n.type===_t.codeVoice)return`${t}${n.code}`;if(n.type===_t.text)return`${t}${n.text}`;if(n.type===_t.reference){const r=e[n.identifier]?.title??"";return`${t}${r}`}return t}),"").trim()}},BlockType:St,InlineType:_t},Ot=Dt,Nt=(0,g.Z)(Ot,Mt,Zt,!1,null,null,null),Rt=Nt.exports},7587:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=function(){var e=this,t=e._self._c;return t("aside",{class:e.kind,attrs:{"aria-label":e.kind}},[t("p",{staticClass:"label"},[e._v(e._s(e.name||e.$t(e.label)))]),e._t("default")],2)},i=[];const s={deprecated:"deprecated",experiment:"experiment",important:"important",note:"note",tip:"tip",warning:"warning"};var a={name:"Aside",props:{kind:{type:String,required:!0,validator:e=>Object.prototype.hasOwnProperty.call(s,e)},name:{type:String,required:!1}},computed:{label:({kind:e})=>`aside-kind.${e}`}},o=a,l=n(1001),c=(0,l.Z)(o,r,i,!1,null,"3ccce809",null),u=c.exports},5996:function(e,t,n){"use strict";n.d(t,{Z:function(){return J}});var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"code-listing",class:{"single-line":1===e.syntaxHighlightedLines.length},attrs:{"data-syntax":e.syntaxNameNormalized}},[e.fileName?t("Filename",{attrs:{isActionable:e.isFileNameActionable,fileType:e.fileType},on:{click:function(t){return e.$emit("file-name-click")}}},[e._v(e._s(e.fileName)+" ")]):e._e(),t("div",{staticClass:"container-general"},[t("pre",[t("CodeBlock",[e._l(e.syntaxHighlightedLines,(function(n,r){return[t("span",{key:r,class:["code-line-container",{highlighted:e.isHighlighted(r)}]},[e.showLineNumbers?t("span",{staticClass:"code-number",attrs:{"data-line-number":e.lineNumberFor(r)}}):e._e(),t("span",{staticClass:"code-line",domProps:{innerHTML:e._s(n)}})]),e._v("\n")]}))],2)],1)])],1)},i=[],s=n(3208),a=n(3078),o=n(3917),l=n(3390),c=l;const u={objectivec:["objective-c"]},d={bash:["sh","zsh"],c:["h"],cpp:["cc","c++","h++","hpp","hh","hxx","cxx"],css:[],diff:["patch"],http:["https"],java:["jsp"],javascript:["js","jsx","mjs","cjs"],json:[],llvm:[],markdown:["md","mkdown","mkd"],objectivec:["mm","objc","obj-c"].concat(u.objectivec),perl:["pl","pm"],php:[],python:["py","gyp","ipython"],ruby:["rb","gemspec","podspec","thor","irb"],scss:[],shell:["console","shellsession"],swift:[],xml:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],...{NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_HLJS_LANGUAGES?Object.fromEntries({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_HLJS_LANGUAGES.split(",").map((e=>[e,[]]))):void 0},A=new Set(["markdown","swift"]),p=Object.entries(d),h=new Set(Object.keys(d)),g=new Map;async function f(e){const t=[e];try{return await t.reduce((async(e,t)=>{let r;await e,r=A.has(t)?await n(3685)(`./${t}`):await n(2122)(`./${t}.js`),c.registerLanguage(t,r.default)}),Promise.resolve()),!0}catch(r){return console.error(`Could not load ${e} file`),!1}}function m(e){if(h.has(e))return e;const t=p.find((([,t])=>t.includes(e)));return t?t[0]:null}function v(e){if(g.has(e))return g.get(e);const t=m(e);return g.set(e,t),t}c.configure({classPrefix:"syntax-",languages:[...h]});const b=async e=>{const t=v(e);return!(!t||c.listLanguages().includes(t))&&f(t)},y=/\r\n|\r|\n/g,C=/syntax-/;function I(e){return 0===e.length?[]:e.split(y)}function w(e){return(e.trim().match(y)||[]).length}function E(e){const t=document.createElement("template");return t.innerHTML=e,t.content.childNodes}function B(e){const{className:t}=e;if(!C.test(t))return null;const n=I(e.innerHTML).reduce(((e,n)=>`${e}${n}\n`),"");return E(n.trim())}function x(e){return Array.from(e.childNodes).forEach((e=>{if(w(e.textContent))try{const t=e.childNodes.length?x(e):B(e);t&&e.replaceWith(...t)}catch(t){console.error(t)}})),B(e)}function k(e,t){const n=m(t);if(!c.getLanguage(n))throw new Error(`Unsupported language for syntax highlighting: ${t}`);return c.highlight(e,{language:n,ignoreIllegals:!0}).value}function S(e,t){const n=e.join("\n"),r=k(n,t),i=document.createElement("code");return i.innerHTML=r,x(i),I(i.innerHTML)}var _=function(){var e=this,t=e._self._c;return t("span",{staticClass:"filename"},[e.isActionable?t("a",{attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[t("FileIcon",{attrs:{fileType:e.fileType}}),e._t("default")],2):t("span",[t("FileIcon",{attrs:{fileType:e.fileType}}),e._t("default")],2)])},T=[],L=function(){var e=this,t=e._self._c;return"swift"===e.fileType?t("SwiftFileIcon",{staticClass:"file-icon"}):t("GenericFileIcon",{staticClass:"file-icon"})},P=[],Q=n(7834),M=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"generic-file-icon",attrs:{viewBox:"0 0 14 14",themeId:"generic-file"}},[t("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),t("path",{attrs:{d:"M7 1h1v4h-1z"}}),t("path",{attrs:{d:"M7 5h5v1h-5z"}})])},Z=[],D=n(9742),O={name:"GenericFileIcon",components:{SVGIcon:D.Z}},N=O,R=n(1001),j=(0,R.Z)(N,M,Z,!1,null,null,null),G=j.exports,V={name:"CodeListingFileIcon",components:{SwiftFileIcon:Q.Z,GenericFileIcon:G},props:{fileType:String}},$=V,z=(0,R.Z)($,L,P,!1,null,"7c381064",null),q=z.exports,H={name:"CodeListingFilename",components:{FileIcon:q},props:{isActionable:{type:Boolean,default:()=>!1},fileType:String}},W=H,F=(0,R.Z)(W,_,T,!1,null,"c8c40662",null),U=F.exports,Y={name:"CodeListing",components:{Filename:U,CodeBlock:o.Z},data(){return{syntaxHighlightedLines:[]}},props:{fileName:String,isFileNameActionable:{type:Boolean,default:()=>!1},syntax:String,fileType:String,content:{type:Array,required:!0},startLineNumber:{type:Number,default:()=>1},highlights:{type:Array,default:()=>[]},showLineNumbers:{type:Boolean,default:()=>!1}},computed:{escapedContent:({content:e})=>e.map(s.Xv),highlightedLineNumbers(){return new Set(this.highlights.map((({line:e})=>e)))},syntaxNameNormalized(){const e={occ:a.Z.objectiveC.key.url};return e[this.syntax]||this.syntax}},watch:{content:{handler:"syntaxHighlightLines",immediate:!0}},methods:{isHighlighted(e){return this.highlightedLineNumbers.has(this.lineNumberFor(e))},lineNumberFor(e){return this.startLineNumber+e},async syntaxHighlightLines(){let e;try{await b(this.syntaxNameNormalized),e=S(this.content,this.syntaxNameNormalized)}catch(t){e=this.escapedContent}this.syntaxHighlightedLines=e.map((e=>""===e?"\n":e))}}},X=Y,K=(0,R.Z)(X,r,i,!1,null,"13e6923e",null),J=K.exports},2020:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=function(){var e=this,t=e._self._c;return t("WordBreak",{attrs:{tag:"code"}},[e._t("default")],2)},i=[],s=n(352),a={name:"CodeVoice",components:{WordBreak:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,r,i,!1,null,"05f4a5b7",null),u=c.exports},3938:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"column",style:e.style},[e._t("default")],2)},i=[],s={name:"Column",props:{span:{type:Number,default:null}},computed:{style:({span:e})=>({"--col-span":e})}},a=s,o=n(1001),l=(0,o.Z)(a,r,i,!1,null,"0f654188",null),c=l.exports},889:function(e,t,n){"use strict";n.d(t,{Z:function(){return A}});var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"device-frame",class:e.classes,style:e.styles,attrs:{"data-device":e.device}},[t("div",{staticClass:"device-screen",class:{"with-device":e.currentDeviceAttrs}},[e._t("default")],2),t("div",{staticClass:"device"})])},i=[],s={},a=n(9089);const o=e=>e&&e!==1/0;var l={name:"DeviceFrame",props:{device:{type:String,required:!0}},provide:{insideDeviceFrame:!0},computed:{currentDeviceAttrs:({device:e})=>(0,a.$8)(["theme","device-frames",e],s[e]),styles:({toPixel:e,toUrl:t,toPct:n,currentDeviceAttrs:r={},toVal:i})=>{const{screenTop:s,screenLeft:a,screenWidth:o,frameWidth:l,lightUrl:c,darkUrl:u,screenHeight:d,frameHeight:A}=r;return{"--screen-top":n(s/A),"--screen-left":n(a/l),"--screen-width":n(o/l),"--screen-height":n(d/A),"--screen-aspect":i(o/d),"--frame-width":e(l),"--frame-aspect":i(l/A),"--device-light-url":t(c),"--device-dark-url":t(u)}},classes:({currentDeviceAttrs:e})=>({"no-device":!e})},methods:{toPixel:e=>o(e)?`${e}px`:null,toUrl:e=>o(e)?`url(${e})`:null,toPct:e=>o(e)?100*e+"%":null,toVal:e=>o(e)?e:null}},c=l,u=n(1001),d=(0,u.Z)(c,r,i,!1,null,"c2eac128",null),A=d.exports},8039:function(e,t,n){"use strict";n.d(t,{Z:function(){return m}});var r=function(){var e=this,t=e._self._c;return t(`h${e.level}`,{tag:"component",attrs:{id:e.anchor}},[e.shouldLink?t("router-link",{staticClass:"header-anchor",attrs:{to:{hash:`#${e.anchor}`},"data-after-text":e.$t("accessibility.in-page-link")},on:{click:function(t){return e.handleFocusAndScroll(e.anchor)}}},[e._t("default"),t("LinkIcon",{staticClass:"icon",attrs:{"aria-hidden":"true"}})],2):[e._t("default")]],2)},i=[],s=n(3704),a=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"link-icon",attrs:{viewBox:"0 0 20 20"}},[t("path",{attrs:{d:"M19.34,4.88L15.12,.66c-.87-.87-2.3-.87-3.17,0l-3.55,3.56-1.38,1.38-1.4,1.4c-.47,.47-.68,1.09-.64,1.7,.02,.29,.09,.58,.21,.84,.11,.23,.24,.44,.43,.63l4.22,4.22h0l.53-.53,.53-.53h0l-4.22-4.22c-.29-.29-.29-.77,0-1.06l1.4-1.4,.91-.91,.58-.58,.55-.55,2.9-2.9c.29-.29,.77-.29,1.06,0l4.22,4.22c.29,.29,.29,.77,0,1.06l-2.9,2.9c.14,.24,.24,.49,.31,.75,.08,.32,.11,.64,.09,.96l3.55-3.55c.87-.87,.87-2.3,0-3.17Z"}}),t("path",{attrs:{d:"M14.41,9.82s0,0,0,0l-4.22-4.22h0l-.53,.53-.53,.53h0l4.22,4.22c.29,.29,.29,.77,0,1.06l-1.4,1.4-.91,.91-.58,.58-.55,.55h0l-2.9,2.9c-.29,.29-.77,.29-1.06,0L1.73,14.04c-.29-.29-.29-.77,0-1.06l2.9-2.9c-.14-.24-.24-.49-.31-.75-.08-.32-.11-.64-.09-.97L.68,11.93c-.87,.87-.87,2.3,0,3.17l4.22,4.22c.87,.87,2.3,.87,3.17,0l3.55-3.55,1.38-1.38,1.4-1.4c.47-.47,.68-1.09,.64-1.7-.02-.29-.09-.58-.21-.84-.11-.22-.24-.44-.43-.62Z"}})])},o=[],l=n(9742),c={name:"LinkIcon",components:{SVGIcon:l.Z}},u=c,d=n(1001),A=(0,d.Z)(u,a,o,!1,null,null,null),p=A.exports,h={name:"LinkableHeading",mixins:[s.Z],components:{LinkIcon:p},props:{anchor:{type:String,required:!1},level:{type:Number,default:()=>2,validator:e=>e>=1&&e<=6}},inject:{enableMinimized:{default:()=>!1},isTargetIDE:{default:()=>!1}},computed:{shouldLink:({anchor:e,enableMinimized:t,isTargetIDE:n})=>!!e&&!t&&!n}},g=h,f=(0,d.Z)(g,r,i,!1,null,"24fddf6a",null),m=f.exports},4260:function(e,t,n){"use strict";n.d(t,{Z:function(){return O}});var r=function(){var e=this,t=e._self._c;return t(e.refComponent,{tag:"component",attrs:{url:e.urlWithParams,"is-active":e.isActiveComputed}},[e._t("default")],2)},i=[],s=n(2449),a=n(7192),o=n(4589),l=function(){var e=this,t=e._self._c;return t("ReferenceExternal",e._b({},"ReferenceExternal",e.$props,!1),[t("CodeVoice",[e._t("default")],2)],1)},c=[],u=function(){var e=this,t=e._self._c;return e.url&&e.isActive?t("a",{attrs:{href:e.url}},[e._t("default")],2):t("span",[e._t("default")],2)},d=[],A={name:"ReferenceExternal",props:{url:{type:String,required:!1},isActive:{type:Boolean,default:!0}}},p=A,h=n(1001),g=(0,h.Z)(p,u,d,!1,null,null,null),f=g.exports,m=n(2020),v={name:"ReferenceExternalSymbol",props:f.props,components:{ReferenceExternal:f,CodeVoice:m.Z}},b=v,y=(0,h.Z)(b,l,c,!1,null,null,null),C=y.exports,I=function(){var e=this,t=e._self._c;return t("ReferenceInternal",e._b({},"ReferenceInternal",e.$props,!1),[t("CodeVoice",[e._t("default")],2)],1)},w=[],E=function(){var e=this,t=e._self._c;return e.url&&e.isActive?t("router-link",{attrs:{to:e.url}},[e._t("default")],2):t("span",[e._t("default")],2)},B=[],x={name:"ReferenceInternal",props:{url:{type:String,required:!1},isActive:{type:Boolean,default:!0}}},k=x,S=(0,h.Z)(k,E,B,!1,null,null,null),_=S.exports,T={name:"ReferenceInternalSymbol",props:_.props,components:{ReferenceInternal:_,CodeVoice:m.Z}},L=T,P=(0,h.Z)(L,I,w,!1,null,null,null),Q=P.exports,M={name:"Reference",computed:{isInternal({url:e}){if(!e)return!1;if(!e.startsWith("/")&&!e.startsWith("#"))return!1;const{resolved:{name:t}={}}=this.$router.resolve(e)||{};return t!==o.vL},isSymbolReference(){return"symbol"===this.kind&&!this.hasInlineFormatting&&(this.role===a.L.symbol||this.role===a.L.dictionarySymbol)},isDisplaySymbol({isSymbolReference:e,titleStyle:t,ideTitle:n}){return n?e&&"symbol"===t:e},refComponent({isInternal:e,isDisplaySymbol:t}){return e?t?Q:_:t?C:f},urlWithParams({isInternal:e}){return e?(0,s.Q2)(this.url,this.$route.query):this.url},isActiveComputed({url:e,isActive:t}){return!(!e||!t)}},props:{url:{type:String,required:!1},kind:{type:String,required:!1},role:{type:String,required:!1},isActive:{type:Boolean,required:!1,default:!0},ideTitle:{type:String,required:!1},titleStyle:{type:String,required:!1},hasInlineFormatting:{type:Boolean,default:!1}}},Z=M,D=(0,h.Z)(Z,r,i,!1,null,null,null),O=D.exports},3002:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"row",class:{"with-columns":e.columns},style:e.style},[e._t("default")],2)},i=[],s=n(5381),a={name:"Row",props:{columns:{type:Object,required:!1,validator:e=>Object.entries(e).every((([e,t])=>s.L3[e]&&"number"===typeof t))},gap:{type:Number,required:!1}},computed:{style:({columns:e={},gap:t})=>({"--col-count-large":e.large,"--col-count-medium":e.medium,"--col-count-small":e.small||1,"--col-gap":t&&`${t}px`})}},o=a,l=n(1001),c=(0,l.Z)(o,r,i,!1,null,"1bcb2d0f",null),u=c.exports},1295:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(5953);const i={link:"link",reference:"reference",text:"text"};var s,a,o={name:"DestinationDataProvider",mixins:[r.Z],props:{destination:{type:Object,required:!0,default:()=>({})}},inject:{isTargetIDE:{default:()=>!1}},constants:{DestinationType:i},computed:{isExternal:({reference:e,destination:t})=>e.type===i.link||t.type===i.link,shouldAppendOpensInBrowser:({isExternal:e,isTargetIDE:t})=>e&&t,reference:({references:e,destination:t})=>e[t.identifier]||{},linkUrl:({destination:e,reference:t})=>({[i.link]:e.destination,[i.reference]:t.url,[i.text]:e.text}[e.type]),linkTitle:({reference:e,destination:t})=>({[i.link]:t.title,[i.reference]:t.overridingTitle||e.title,[i.text]:""}[t.type])},methods:{formatAriaLabel(e){return this.shouldAppendOpensInBrowser?`${e} (opens in browser)`:e}},render(){return this.$scopedSlots.default({url:this.linkUrl||"",title:this.linkTitle||"",formatAriaLabel:this.formatAriaLabel,isExternal:this.isExternal})}},l=o,c=n(1001),u=(0,c.Z)(l,s,a,!1,null,null,null),d=u.exports},1105:function(e,t,n){"use strict";n.d(t,{Z:function(){return Ae}});var r=function(){var e=this,t=e._self._c;return t("Pager",{class:["TopicsLinkCardGrid",e.topicStyle],attrs:{"aria-label":e.$t("links-grid.label"),pages:e.pages},scopedSlots:e._u([{key:"page",fn:function({page:n}){return[t("Row",{attrs:{columns:{large:e.compactCards?3:2,medium:e.compactCards?3:2}}},e._l(n,(function(n){return t("Column",{key:n.title},[t("TopicsLinkCardGridItem",{attrs:{item:n,compact:e.compactCards}})],1)})),1)]}}])},[t("BreakpointEmitter",{on:{change:e.handleBreakpointChange}})],1)},i=[],s=n(7188),a=n(3938),o=function(){var e=this,t=e._self._c;return t("div",{class:["pager",{"with-compact-controls":e.shouldUseCompactControls}],attrs:{role:"region","aria-roledescription":e.$t("pager.roledescription")}},[1===e.pages.length?[e._t("page",null,{page:e.pages[0]})]:[t("div",{staticClass:"container"},[t("Gutter",{staticClass:"left"},[t("ControlPrevious",{attrs:{disabled:!e.hasPreviousPage},nativeOn:{click:function(t){return e.previous.apply(null,arguments)}}})],1),t("div",{ref:"viewport",staticClass:"viewport",attrs:{role:"group"}},e._l(e.keyedPages,(function({page:n,key:r},i){return t("div",{key:r,ref:"pages",refInFor:!0,class:["page",e.pageStates(i)],attrs:{"aria-label":e.$t("pager.page.label",{index:i+1,count:e.keyedPages.length}),id:r}},[e._t("page",null,{page:n})],2)})),0),t("Gutter",{staticClass:"right"},[t("ControlNext",{attrs:{disabled:!e.hasNextPage},nativeOn:{click:function(t){return e.next.apply(null,arguments)}}})],1)],1),t("div",{staticClass:"compact-controls",attrs:{role:"group","aria-label":"Controls"}},[t("ControlPrevious",{attrs:{disabled:!e.hasPreviousPage},nativeOn:{click:function(t){return e.previous.apply(null,arguments)}}}),t("ControlNext",{attrs:{disabled:!e.hasNextPage},nativeOn:{click:function(t){return e.next.apply(null,arguments)}}})],1),t("div",{staticClass:"indicators"},e._l(e.keyedPages,(function({key:n},r){return t("a",{key:n,class:["indicator",e.pageStates(r)],attrs:{"aria-current":e.isActivePage(r),href:`#${n}`},on:{click:function(t){return e.setActivePage(t,r)}}})})),0)],e._t("default")],2)},l=[],c=function(){var e=this,t=e._self._c;return t("button",{class:["pager-control",e.action],attrs:{"aria-label":e.$t(`pager.control.navigate-${e.action}`)}},[t("ChevronRoundedIcon",{staticClass:"icon"})],1)},u=[],d=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"chevron-rounded-icon",attrs:{viewBox:"0 0 14 25",themeId:"chevron-rounded"}},[t("path",{attrs:{d:"M1,24.4a.9.9,0,0,0,.7-.3L13.4,13a1,1,0,0,0,0-1.6L1.7.3A.9.9,0,0,0,1,0,.9.9,0,0,0,0,1a.9.9,0,0,0,.3.7l11,10.5L.3,22.7a.9.9,0,0,0-.3.7A.9.9,0,0,0,1,24.4Z"}})])},A=[],p=n(9742),h={name:"ChevronRoundedIcon",components:{SVGIcon:p.Z}},g=h,f=n(1001),m=(0,f.Z)(g,d,A,!1,null,null,null),v=m.exports;const b={previous:"previous",next:"next"};var y={name:"PagerControl",components:{ChevronRoundedIcon:v},props:{action:{type:String,required:!0,validator:e=>Object.hasOwnProperty.call(b,e)}},Action:b},C=y,I=(0,f.Z)(C,c,u,!1,null,"58c8390a",null),w=I.exports,E=n(5381),B=n(220);const x=174;function k(e){return e.scrollIntoView({behavior:"auto",block:"nearest",inline:"start"}),new Promise((t=>{const n=60,r=2;let i=null,s=0;function a(){const o=e.getBoundingClientRect().left;s>r&&(o===i||s>=n)?t():(i=o,s+=1,requestAnimationFrame(a))}requestAnimationFrame(a)}))}var S={name:"Pager",components:{ControlNext:{render(e){return e(w,{props:{action:w.Action.next}})}},ControlPrevious:{render(e){return e(w,{props:{action:w.Action.previous}})}},Gutter:{render(e){return e("div",{class:"gutter"},this.$slots.default)}}},props:{pages:{type:Array,required:!0,validator:e=>e.length>0}},data:()=>({activePageIndex:0,appState:B.Z.state}),computed:{indices:({keyedPages:e})=>e.reduce(((e,t,n)=>({...e,[t.key]:n})),{}),keyedPages:({_uid:e,pages:t})=>t.map(((t,n)=>({key:`pager-${e}-page-${n}`,page:t}))),hasNextPage:({activePageIndex:e,pages:t})=>ee>0,contentWidth:({appState:e})=>e.contentWidth,shouldUseCompactControls:({contentWidth:e})=>window.innerWidth>E.kB["default"].large.minWidth?e=this.$refs.pages.length)return;const n=this.$refs.pages[t];this.pauseObservingPages(),await k(n),this.startObservingPages(),this.activePageIndex=t},next(e){this.setActivePage(e,this.activePageIndex+1)},previous(e){this.setActivePage(e,this.activePageIndex-1)},observePages(e){const t=e.find((e=>e.isIntersecting))?.target?.id;t&&(this.activePageIndex=this.indices[t])},setupObserver(){this.observer=new IntersectionObserver(this.observePages,{root:this.$refs.viewport,threshold:.5}),this.startObservingPages()},startObservingPages(){this.$refs.pages.forEach((e=>{this.observer?.observe(e)}))},pauseObservingPages(){this.$refs.pages.forEach((e=>{this.observer?.unobserve(e)}))}},mounted(){this.pages.length>1&&this.setupObserver()},beforeDestroy(){this.observer?.disconnect()}},_=S,T=(0,f.Z)(_,o,l,!1,null,"1ed6aae0",null),L=T.exports,P=n(3002),Q=n(3946),M=n(5654),Z=function(){var e=this,t=e._self._c;return t("Card",{staticClass:"reference-card-grid-item",attrs:{url:e.item.url,image:e.imageReferences.card,title:e.item.title,"floating-style":"",size:e.cardSize,"link-text":e.compact?"":e.$t(e.linkText)},scopedSlots:e._u([e.imageReferences.card?null:{key:"cover",fn:function({classes:n}){return[t("div",{staticClass:"reference-card-grid-item__image",class:n},[t("TopicTypeIcon",{staticClass:"reference-card-grid-item__icon",attrs:{type:e.item.role,"image-override":e.references[e.imageReferences.icon]}})],1)]}}],null,!0)},[e.compact?e._e():t("ContentNode",{attrs:{content:e.item.abstract}})],1)},D=[],O=function(){var e=this,t=e._self._c;return t("Reference",e._b({staticClass:"card",class:e.classes,attrs:{url:e.url}},"Reference",e.linkAriaTags,!1),[t("CardCover",{attrs:{variants:e.imageVariants,rounded:e.floatingStyle,alt:e.imageReference.alt,"aria-hidden":"true"},scopedSlots:e._u([{key:"default",fn:function(t){return[e._t("cover",null,null,t)]}}],null,!0)}),t("div",{staticClass:"details",attrs:{"aria-hidden":"true"}},[e.eyebrow?t("div",{staticClass:"eyebrow",attrs:{id:e.eyebrowId,"aria-label":e.formatAriaLabel(`- ${e.eyebrow}`)}},[e._v(" "+e._s(e.eyebrow)+" ")]):e._e(),t("div",{staticClass:"title",attrs:{id:e.titleId}},[e._v(" "+e._s(e.title)+" ")]),e.$slots.default?t("div",{staticClass:"card-content",attrs:{id:e.contentId}},[e._t("default")],2):e._e(),e.linkText?t(e.hasButton?"ButtonLink":"div",{tag:"component",staticClass:"link"},[e._v(" "+e._s(e.linkText)+" "),e.showExternalLinks?t("DiagonalArrowIcon",{staticClass:"icon-inline link-icon"}):e.hasButton?e._e():t("InlineChevronRightIcon",{staticClass:"icon-inline link-icon"})],1):e._e()],1)],1)},N=[],R=n(5281),j=n(8785),G=n(6817),V=n(4260),$={small:"small",large:"large"},z=n(5953),q=function(){var e=this,t=e._self._c;return t("div",{staticClass:"card-cover-wrap",class:{rounded:e.rounded}},[e._t("default",(function(){return[t("ImageAsset",{staticClass:"card-cover",attrs:{variants:e.variants,alt:e.alt}})]}),{classes:"card-cover"})],2)},H=[],W=n(6769),F={name:"CardCover",components:{ImageAsset:W.Z},props:{variants:{type:Array,required:!0},rounded:{type:Boolean,default:!1},alt:{type:String,default:null}}},U=F,Y=(0,f.Z)(U,q,H,!1,null,"28b14a83",null),X=Y.exports,K={name:"Card",components:{Reference:V.Z,DiagonalArrowIcon:G.Z,InlineChevronRightIcon:j.Z,CardCover:X,ButtonLink:R.Z},constants:{CardSize:$},mixins:[z.Z],computed:{titleId:({_uid:e})=>`card_title_${e}`,contentId:({_uid:e})=>`card_content_${e}`,eyebrowId:({_uid:e})=>`card_eyebrow_${e}`,linkAriaTags:({titleId:e,eyebrowId:t,contentId:n,eyebrow:r,$slots:i})=>({"aria-labelledby":e.concat(r?` ${t}`:""),"aria-describedby":i.default?`${n}`:null}),classes:({size:e,floatingStyle:t})=>[e,{"floating-style":t}],imageReference:({image:e,references:t})=>t[e]||{},imageVariants:({imageReference:e})=>e.variants||[]},props:{linkText:{type:String,required:!1},url:{type:String,required:!1,default:""},eyebrow:{type:String,required:!1},image:{type:String,required:!1},size:{type:String,validator:e=>Object.prototype.hasOwnProperty.call($,e)},title:{type:String,required:!0},hasButton:{type:Boolean,default:()=>!1},floatingStyle:{type:Boolean,default:!1},showExternalLinks:{type:Boolean,default:!1},formatAriaLabel:{type:Function,default:e=>e}}},J=K,ee=(0,f.Z)(J,O,N,!1,null,"0f7a4f31",null),te=ee.exports,ne=n(5921),re=n(7192);const ie={[re.L.article]:"documentation.card.read-article",[re.L.overview]:"documentation.card.start-tutorial",[re.L.collection]:"documentation.card.view-api",[re.L.symbol]:"documentation.card.view-symbol",[re.L.sampleCode]:"documentation.card.view-sample-code"};var se={name:"TopicsLinkCardGridItem",components:{TopicTypeIcon:ne.Z,Card:te,ContentNode:()=>Promise.resolve().then(n.bind(n,9519))},mixins:[z.Z],props:{item:{type:Object,required:!0},compact:{type:Boolean,default:!0}},computed:{imageReferences:({item:e})=>(e.images||[]).reduce(((e,t)=>(e[t.type]=t.identifier,e)),{icon:null,card:null}),linkText:({item:e})=>ie[e.role]||"documentation.card.learn-more",cardSize:({compact:e})=>e?void 0:$.large}},ae=se,oe=(0,f.Z)(ae,Z,D,!1,null,"87dd3302",null),le=oe.exports,ce={name:"TopicsLinkCardGrid",components:{BreakpointEmitter:s["default"],Column:a.Z,Pager:L,Row:P.Z,TopicsLinkCardGridItem:le},data:()=>({breakpoint:E.L3.large}),props:{items:{type:Array,required:!0},pageSize:{type:Number,required:!1},topicStyle:{type:String,default:Q.o.compactGrid,validator:e=>e===Q.o.compactGrid||e===Q.o.detailedGrid},usePager:{type:Boolean,default:!1}},computed:{compactCards:({topicStyle:e})=>e===Q.o.compactGrid,defaultPageSize:({breakpoint:e,items:t,topicStyle:n,usePager:r})=>r?{[Q.o.compactGrid]:{[E.L3.large]:6,[E.L3.medium]:6,[E.L3.small]:1},[Q.o.detailedGrid]:{[E.L3.large]:4,[E.L3.medium]:2,[E.L3.small]:1}}[n][e]:t.length,pages:({items:e,defaultPageSize:t,pageSize:n})=>(0,M.Md)(e,n||t)},methods:{handleBreakpointChange(e){this.breakpoint=e}}},ue=ce,de=(0,f.Z)(ue,r,i,!1,null,null,null),Ae=de.exports},1576:function(e,t,n){"use strict";n.d(t,{Z:function(){return g}});var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"col",class:e.classes},[e._t("default")],2)},i=[];const s=0,a=12,o=new Set(["large","medium","small"]),l=e=>({type:Object,default:()=>({}),validator:t=>Object.keys(t).every((n=>o.has(n)&&e(t[n])))}),c=l((e=>"boolean"===typeof e)),u=l((e=>"number"===typeof e&&e>=s&&e<=a));var d={name:"GridColumn",props:{isCentered:c,isUnCentered:c,span:{...u,default:()=>({large:a})}},computed:{classes:function(){return{[`large-${this.span.large}`]:void 0!==this.span.large,[`medium-${this.span.medium}`]:void 0!==this.span.medium,[`small-${this.span.small}`]:void 0!==this.span.small,"large-centered":!!this.isCentered.large,"medium-centered":!!this.isCentered.medium,"small-centered":!!this.isCentered.small,"large-uncentered":!!this.isUnCentered.large,"medium-uncentered":!!this.isUnCentered.medium,"small-uncentered":!!this.isUnCentered.small}}}},A=d,p=n(1001),h=(0,p.Z)(A,r,i,!1,null,"2ee3ad8b",null),g=h.exports},9649:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"row"},[e._t("default")],2)},i=[],s={name:"GridRow"},a=s,o=n(1001),l=(0,o.Z)(a,r,i,!1,null,"be73599c",null),c=l.exports},5692:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"article-icon",attrs:{viewBox:"0 0 14 14",themeId:"article"}},[t("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),t("path",{attrs:{d:"M7 1h1v4h-1z"}}),t("path",{attrs:{d:"M7 5h5v1h-5z"}})])},i=[],s=n(9742),a={name:"ArticleIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,r,i,!1,null,null,null),u=c.exports},7775:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"curly-brackets-icon",attrs:{viewBox:"0 0 14 14",themeId:"curly-brackets"}},[t("path",{attrs:{d:"M9.987 14h-0.814v-0.916h0.36c0.137 0 0.253-0.038 0.349-0.116 0.099-0.080 0.179-0.188 0.239-0.318 0.064-0.134 0.11-0.298 0.139-0.483 0.031-0.186 0.045-0.38 0.045-0.58v-2.115c0-0.417 0.046-0.781 0.139-1.083 0.092-0.3 0.2-0.554 0.322-0.754 0.127-0.203 0.246-0.353 0.366-0.458 0.087-0.076 0.155-0.131 0.207-0.169-0.052-0.037-0.12-0.093-0.207-0.167-0.12-0.105-0.239-0.255-0.366-0.459-0.122-0.2-0.23-0.453-0.322-0.754-0.093-0.3-0.139-0.665-0.139-1.082v-2.13c0-0.199-0.014-0.392-0.045-0.572-0.029-0.182-0.076-0.345-0.139-0.483-0.060-0.137-0.141-0.246-0.239-0.328-0.095-0.076-0.212-0.115-0.349-0.115h-0.36v-0.916h0.814c0.442 0 0.788 0.18 1.030 0.538 0.238 0.352 0.358 0.826 0.358 1.407v2.236c0 0.3 0.015 0.597 0.044 0.886 0.030 0.287 0.086 0.544 0.164 0.765 0.077 0.216 0.184 0.392 0.318 0.522 0.129 0.124 0.298 0.188 0.503 0.188h0.058v0.916h-0.058c-0.206 0-0.374 0.064-0.503 0.188-0.134 0.129-0.242 0.305-0.318 0.521-0.078 0.223-0.134 0.48-0.164 0.766-0.029 0.288-0.044 0.587-0.044 0.884v2.236c0 0.582-0.12 1.055-0.358 1.409-0.242 0.358-0.588 0.538-1.030 0.538z"}}),t("path",{attrs:{d:"M4.827 14h-0.814c-0.442 0-0.788-0.18-1.030-0.538-0.238-0.352-0.358-0.825-0.358-1.409v-2.221c0-0.301-0.015-0.599-0.045-0.886-0.029-0.287-0.085-0.544-0.163-0.764-0.077-0.216-0.184-0.393-0.318-0.522-0.131-0.127-0.296-0.188-0.503-0.188h-0.058v-0.916h0.058c0.208 0 0.373-0.063 0.503-0.188 0.135-0.129 0.242-0.304 0.318-0.522 0.078-0.22 0.134-0.477 0.163-0.765 0.030-0.286 0.045-0.585 0.045-0.886v-2.251c0-0.582 0.12-1.055 0.358-1.407 0.242-0.358 0.588-0.538 1.030-0.538h0.814v0.916h-0.36c-0.138 0-0.252 0.038-0.349 0.116-0.099 0.079-0.179 0.189-0.239 0.327-0.064 0.139-0.11 0.302-0.141 0.483-0.029 0.18-0.044 0.373-0.044 0.572v2.13c0 0.417-0.046 0.782-0.138 1.082-0.092 0.302-0.201 0.556-0.324 0.754-0.123 0.201-0.246 0.356-0.366 0.459-0.086 0.074-0.153 0.13-0.206 0.167 0.052 0.038 0.12 0.093 0.206 0.169 0.12 0.103 0.243 0.258 0.366 0.458s0.232 0.453 0.324 0.754c0.092 0.302 0.138 0.666 0.138 1.083v2.115c0 0.2 0.015 0.394 0.044 0.58 0.030 0.186 0.077 0.349 0.139 0.482 0.062 0.132 0.142 0.239 0.241 0.32 0.096 0.079 0.21 0.116 0.349 0.116h0.36z"}})])},i=[],s=n(9742),a={name:"CurlyBracketsIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,r,i,!1,null,null,null),u=c.exports},6817:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"diagonal-arrow",attrs:{viewBox:"0 0 14 14",themeId:"diagonal-arrow"}},[t("path",{attrs:{d:"M0.010 12.881l10.429-10.477-3.764 0.824-0.339-1.549 7.653-1.679-1.717 7.622-1.546-0.349 0.847-3.759-10.442 10.487z"}})])},i=[],s=n(9742),a={name:"DiagonalArrowIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,r,i,!1,null,null,null),u=c.exports},8633:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=function(){var e=this,t=e._self._c;return t("SVGIcon",{attrs:{viewBox:"0 0 14 14",themeId:"path"}},[t("path",{attrs:{d:"M0 0.948h2.8v2.8h-2.8z"}}),t("path",{attrs:{d:"M11.2 10.252h2.8v2.8h-2.8z"}}),t("path",{attrs:{d:"M6.533 1.852h0.933v10.267h-0.933z"}}),t("path",{attrs:{d:"M2.8 1.852h4.667v0.933h-4.667z"}}),t("path",{attrs:{d:"M6.533 11.186h4.667v0.933h-4.667z"}})])},i=[],s=n(9742),a={name:"PathIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,r,i,!1,null,null,null),u=c.exports},6698:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"play-icon",attrs:{viewBox:"0 0 14 14",themeId:"play"}},[t("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),t("path",{attrs:{d:"M10.195 7.010l-5 3v-6l5 3z"}})])},i=[],s=n(9742),a={name:"PlayIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,r,i,!1,null,null,null),u=c.exports},7834:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"swift-file-icon",attrs:{viewBox:"0 0 15 14",themeId:"swift-file"}},[t("path",{attrs:{d:"M14.93,13.56A2.15,2.15,0,0,0,15,13a5.37,5.37,0,0,0-1.27-3.24A6.08,6.08,0,0,0,14,7.91,9.32,9.32,0,0,0,9.21.31a8.51,8.51,0,0,1,1.78,5,6.4,6.4,0,0,1-.41,2.18A45.06,45.06,0,0,1,3.25,1.54,44.57,44.57,0,0,0,7.54,6.9,45.32,45.32,0,0,1,1.47,2.32,35.69,35.69,0,0,0,8.56,9.94a6.06,6.06,0,0,1-3.26.85A9.48,9.48,0,0,1,0,8.91a10,10,0,0,0,8.1,4.72c2.55,0,3.25-1.2,4.72-1.2a2.09,2.09,0,0,1,1.91,1.15C14.79,13.69,14.88,13.75,14.93,13.56Z"}})])},i=[],s=n(9742),a={name:"SwiftFileIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,r,i,!1,null,"c01a6890",null),u=c.exports},9001:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"technology-icon",attrs:{viewBox:"0 0 14 14",themeId:"technology"}},[t("path",{attrs:{d:"M3.39,9l3.16,1.84.47.28.47-.28L10.61,9l.45.26,1.08.63L7,12.91l-5.16-3,1.08-.64L3.39,9M7,0,0,4.1,2.47,5.55,0,7,2.47,8.44,0,9.9,7,14l7-4.1L11.53,8.45,14,7,11.53,5.56,14,4.1ZM7,7.12,5.87,6.45l-1.54-.9L3.39,5,1.85,4.1,7,1.08l5.17,3L10.6,5l-.93.55-1.54.91ZM7,10,3.39,7.9,1.85,7,3.4,6.09,4.94,7,7,8.2,9.06,7,10.6,6.1,12.15,7l-1.55.9Z"}})])},i=[],s=n(9742),a={name:"TechnologyIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,r,i,!1,null,null,null),u=c.exports},8638:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"tutorial-icon",attrs:{viewBox:"0 0 14 14",themeId:"tutorial"}},[t("path",{attrs:{d:"M0.933 6.067h3.733v1.867h-3.733v-1.867z"}}),t("path",{attrs:{d:"M0.933 1.867h3.733v1.867h-3.733v-1.867z"}}),t("path",{attrs:{d:"M13.067 1.867v10.267h-7.467v-10.267zM12.133 2.8h-5.6v8.4h5.6z"}}),t("path",{attrs:{d:"M0.933 10.267h3.733v1.867h-3.733v-1.867z"}})])},i=[],s=n(9742),a={name:"TutorialIcon",components:{SVGIcon:s.Z}},o=a,l=n(1001),c=(0,l.Z)(o,r,i,!1,null,null,null),u=c.exports},6769:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var r=function(){var e=this,t=e._self._c;return e.fallbackImageSrcSet?t("img",{staticClass:"fallback",attrs:{title:e.$t("error.image"),decoding:"async",alt:e.alt,srcset:e.fallbackImageSrcSet}}):t("picture",[e.prefersAuto&&e.darkVariantAttributes?t("source",{attrs:{media:"(prefers-color-scheme: dark)",srcset:e.darkVariantAttributes.srcSet}}):e._e(),e.prefersDark&&e.darkVariantAttributes?t("img",e._b({ref:"img",attrs:{decoding:"async","data-orientation":e.orientation,loading:e.loading,alt:e.alt,width:e.darkVariantAttributes.width||e.optimalWidth,height:e.darkVariantAttributes.width||e.optimalWidth?"auto":null},on:{error:e.handleImageLoadError}},"img",e.darkVariantAttributes,!1)):t("img",e._b({ref:"img",attrs:{decoding:"async","data-orientation":e.orientation,loading:e.loading,alt:e.alt,width:e.defaultAttributes.width||e.optimalWidth,height:e.defaultAttributes.width||e.optimalWidth?"auto":null},on:{error:e.handleImageLoadError}},"img",e.defaultAttributes,!1))])},i=[],s=n(5947),a={props:{variants:{type:Array,required:!0}},computed:{variantsGroupedByAppearance(){return(0,s.XV)(this.variants)},lightVariants(){return(0,s.u)(this.variantsGroupedByAppearance.light)},darkVariants(){return(0,s.u)(this.variantsGroupedByAppearance.dark)}}},o=n(4030),l=n(9804),c="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJZCAYAAABRKlHVAAAACXBIWXMAABYlAAAWJQFJUiTwAAAXvUlEQVR4nO3d72pU57vH4aWmSoIBqSGpQaFgsVDoMexj22e2D6Cvav8plVq0amK0rbGJ9V83d+hs/Llb80wy6ztr1lwXBPoizcyamRfz8XmedZ/56quv/qcDAAAIWOm67r+80AAAQMJZrzIAAJAiQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQs+KlBmBR3L59u1tdXe0uX77cra2ted8AFpAAAWAhHBwcdPv7+0c/u7u73fnz57utra3u0qVLR/8NwGIQIAAshCdPnvzH03z58mV37969o5+KkPqplREAhk2AALAQ3g+Qd/32229HPxUjm5ub3fb2tjcVYKAcQgdg8Cou3rx5c+zTrN9ZWfFvawBDJkAAGLwKkFa2YQEMmwABYNBqVeND26/eVedAzp075w0FGDABAsCgTbP6UQECwLAJEAAGbWdnp+np1cqH7VcAwydAABisutXu4eFh09Oz+gGwGAQIAIO1t7fX/NTq9rsADJ8AAWCwWg+f1yT0tbU1byTAAhAgAAzS/v7+0RasFs5+ACwOAQLAILWufpSNjQ1vIsCCECAADFLr7XfX19ePtmABsBgECACDU6sfNYCwhe1XAItFgAAwOK2rHzX7w+13ARbLivcL4MNu377tFZqRGzduHPuH6uB5a4CcPXu2u3PnziCubaLlGgGWmQABOEbdjYnTa90q9fTp0+bHevXq1dEPAIvDFiwAIlq3Su3s7HhDAEZMgADQu9azGgcHB93r16+9IQAjJkAA6F3r6sfe3p43A2DkBAgAvWs9/zHN8EEAFpMAAaBXNSSwhgUep+589fbtW28GwMgJEAB61br96vHjx94IgCUgQADoVcv2q5p6/uzZM28EwBIQIAD0prZfra2tHfvnWwcPArD4DCIEmIH6ot160HqZtJz96KaY/XHmzJnuk08+mcsrWAfka0o7AKcjQABm4MKFC9329raX8gTqS/3h4WHT//jxxx/P7XV+/vy5AAGYAVuwAJiraSafb25uerMAFpwAAWCuWs9/tJ4nAWDYBAgAc7O/v9+8rWlra8sbBTACAgSAuZlm8nnrPBEAhk2AADAXNfujdftV3U2rtmABsPgECABzUfFREdLCLY4BxkOAADAXrasf586ds/0KYEQECABxdfC8NUAqPipCABgHAQJAXGt8dLZfAYyOAAEgrnX4YB08rwPoAIyHAAEg6uDgoHn2h7MfAOOz4j0FWCz1Bf758+fd69ev/+N5r6ysdBcvXhz8tPDd3d3m3zV8EGB8BAjAAqgVg9q2VIP7jrt1bW1bqnMT9eV9iIe3W89/rK6umv0BMEICBGDgHjx40D18+LD5SVas1O/XSsP29na3ubk5mAucZvaH1Q+AcRIgAANVX9Rv3brVHR4enugJ1v9/7969oy/9169fH8RqSK3gtHL+A2CcHEIHGKA653Hz5s0Tx8e79vf3j0KmdeWhL/X4Zn8AIEAABqa+qN+9e3emwVAhUxEyT9Osfpj9ATBeAgRgYCo+ZrHy8b76m7Ula1729vaaHrlWPmy/AhgvAQIwILVFaZop4dOqg+m1vSutDsa3RpXVD4BxEyAAA5JYobh//378glsnn3cCBGD0BAjAQNTKR+uE8NOoQ+mJx3lX66pOzf0Y+iBFAE5HgAAMRJ9br96XfqzW4DH7A2D8BAjAQNTKRMpQY8fhc4DxEyAAA5HcFpU6iD7t7I/aggXAuAkQgAFIrn50f4dBQsVH62NZ/QBYDgIEgN60Dh+s2R/ufgWwHAQIAL2oLWWtKztWPwCWhwABGID19fXok6gVh761Tj7vzP4AWCoCBGAgElEwkZi10br9qg6epwMMgPkRIAADkfwSfvHixV7/ft1lq/WuXlY/AJaLAAEYiOQ5iL4fa3d3t/l3NzY2en0uAAyLAAEYiFoJSMzBqJWWvrdgtc7+WF1dNfsDYMkIEIAB2d7e7v3JXLlypde/X2c/Wmd/bG1t9fpcABgeAQIwILUKUqsCfamtV32fNWld/ejcfhdgKQkQgIH57LPPerkjVoXNp59+2uvF1spHa4BUbCXv/AXAMAgQgIGpMxE3btyY6Zfz+lt9hc27Wm+9251i9aN1excAwyRAAAaoDolXhMzigHatfHz55ZeRw96twwcrhE4SIBUft27d6u7du3eCZwfAEAgQgIGqCPniiy9ONSdjc3Oz+/zzzyNbnWr2x+HhYdPvnuSaJvFRj1G3+Z1mtQWA4VjxXgAMV4VDnduoL+z1hbvlS/dkdaHuqJW8xe00QTBtgLwbHxO1ClKrO4mp7gDMjgABWAB156r6uXbtWre/v/9/k8Yn08bri3iFx+T35mGa2R/TRsP78dH9HSW3b98+2l7mMDvA4hAgAAtksroxtNvXVnxMYug4004+v3v37r9u7ZqsjNRWNQAWgzMgAJxaX7M/Kj6O29pVcVK/B8BiECAAnEqtQrSe/6j4aD2X0hIfE63nYwCYPwECwKn0sfoxTXy8+//U2RgAhk2AAHAqraFQ51da7n51kviYqEPpBhUCDJsAAeDE6uB53ZWrRcvqx2nio3vnUDoAwyVAADix1snn3d9DET/ktPEx4VA6wLAJEABOrDUY6uD5h2Z/zCo+Jupv1bR0AIZHgABwIrX1qnX2x4fOfsw6PiZqUnrr9jAAcgQIwIKoL/tDOmA9TTT82/DBvuJj4s6dO82RBECGAAFYAPUv+d99993RAeuhREjr7XfX19f/cfZHYnZHvVY//vijO2MBDIgAARi4+pI+ub1sHbAeQoTUc2p9Dv+0/ar+/9RB8XrNajsWAMMgQAAG7J++qNcX6ps3b8516N5phg8m4+Pdx3QoHWAYBAjAQNWX9H/7ol6rD7UqMo8IqTMVrQFSqx81gHBiHvExUasg04QTAP0QIAAD1HI4ezJ0L/2l+qSrH/OMj4l6/HmuHAEgQAAGpaLi22+/bT6c/fbt26M7Pe3s7MQuo3X4YB08nwTIEOKj+/v1refhUDrA/AgQgIGoL8V1p6sXL15M/YTu37/f/fzzz71fSK0e1BmUFkOLjwmT0gHmS4AADEB9sf/mm29ONbOiViZ++OGHXi9mmtvm1vmPocXHRG0je/DgwTCeDMCSESAAc1bxUWc5Xr9+feon8scffxyFTF9aA2R1dXXwKw0PHz50KB1gDgQIwBzVF/pataizHLPy559/Ht2md9bnHOrLeuvfrABZhG1ODqUD5AkQgDmZbE/666+/Zv4EaivX119/faotXe+bZrXg6dOnM3vcPjmUDpAnQADm4Jdfful9haBWVeqOWq2Hxj+kvqC3br86c+bMqR8vqV6fupMYABkCBCDsp59+6h49ehR50IqQurPWaVckpln96GNFp2/7+/tHgwoB6J8AAQiZTC+fx/akip7TPG5yzsi87O7uTnWXLwBORoAABFR81GHz+pf2eakIqa1f06pzJLPYxrUIahXEoXSAfgkQgJ7VF9rvv//+RAMGZ622fk07sLB18vkYVCjWeRCH0gH6I0AAejSZ8VG3xh2KCopaDWn1+PHjpfqI1IqPQ+kA/REgAD2p7VYVH7Oc8TErredB6hpmMSBx0dR1L8IcE4BFJEAAelCHmevA+RDjo6yvrzf93jJtv3pfvYcOpQPMngABmLG6m9LQ//X86tWrx/5OnYOY5va7Y2RSOsDsCRCAGaqzFUOfJ/HRRx91a2trx/5excdQV3CSaiXLoXSA2REgADNy2lkbKRsbG02PtAjXklDxUWd5AJiNFa8jwOnVLXbnOeNjGi0BUneCevbs2ZCe9lzVHJQLFy4s8SsAMDtWQABm4NWrVwvxMq6urnbnz58/9veW/ezHPxnSrZQBFpkAAVgiW1tbTRdbAwsBoA8CBGCJXLp06diLrbs+LcqKDgCLR4AALImKj3Pnzh17sWZfANAnAQKwJC5fvtx0ocs8fBCA/gkQgCVQKx8t26/M/gCgbwIEYAm0xEdn9QOAAAECsAQ2NzePvcgauPf777/7OADQKwECMHI192Ntbe3YizT7A4AEAQIwcq2Hz83+ACBBgACM3MbGxrEX+PLly+7Fixc+CgD0ToAAjNjq6urRFqzj7Ozs+BgAECFAAEZsa2ur6eJ+/fVXHwMAIgQIwIi13H53f3+/e/XqlY8BABECBGCkKj5qAOFxnjx54iMAQIwAARiplrtf1ewP268ASBIgACNUKx8t269q9sfbt299BACIESAAI9QSH2Vvb8/bD0CUAAEYoc3NzWMvqmZ/PH/+3NsPQJQAARiZmvuxtrZ27EXV9isASBMgACPTcvi8PHr0yFsPQJwAARiZjY2NYy/o4ODA7A8A5kKAAIzI6urq0Ras4+zu7nrbAZgLAQIwIltbW00XY/YHAPMiQABGxOwPAIZuxTsE8GFXrlxZiFfowoULRwMIj/PkyZPmv1krKmfP+rcqAGZHgAAcY3t7ezQv0Zs3b5pvv1urKVevXu39OQGwXPyzFsASmWb1o/V2vgAwDQECsET29vaaLra2crWcJwGAaQkQgCXx8uXL7vDwsOlirX4A0BcBArAkdnZ2mi9UgADQFwECsCRaD5/XIMO1tTUfCwB6IUAAlkDFR23BatE6zBAATkKAACyB1tWPrnGYIQCclAABGLlpZ3/UFiwA6IsAARi5io+KkBZWPwDomwABGLnW4YM1+8PdrwDomwABGLE6eL6/v990gVY/AEgQIAAj1jr5vDP7A4AQAQIwYq3br+rg+fr6uo8CAL0TIAAjdXBw0Dz7w+oHACkCBGDEWs91bGxs+BgAELHiZQYYp7W1te769etHt+CtrVh1HuTw8PD/Xevq6qrZHwDECBCAkavb625ubh791JasnZ2do9kgk+1ZW1tbPgIAxAgQgCVSKx3Xrl07+qkIqR+33wUgSYAALKkKD/EBQJpD6AAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAEDMStd1/+3lBgAAetd13f8C5ofqtHojInUAAAAASUVORK5CYII=";const u=10;function d(e){if(!e.length)return null;const t=e.map((e=>`${(0,s.AH)(e.src)} ${e.density}`)).join(", "),n=e[0],r={srcSet:t,src:(0,s.AH)(n.src)},{width:i}=n.size||{width:null};return i&&(r.width=i,r.height="auto"),r}var A={name:"ImageAsset",mixins:[a],inject:{imageLoadingStrategy:{default:null}},data:()=>({appState:o["default"].state,fallbackImageSrcSet:null,optimalWidth:null,optimalHeight:null}),computed:{allVariants:({lightVariants:e=[],darkVariants:t=[]})=>e.concat(t),defaultAttributes:({lightVariantAttributes:e,darkVariantAttributes:t})=>e||t,darkVariantAttributes:({darkVariants:e})=>d(e),lightVariantAttributes:({lightVariants:e})=>d(e),loading:({appState:e,imageLoadingStrategy:t})=>t||e.imageLoadingStrategy,preferredColorScheme:({appState:e})=>e.preferredColorScheme,prefersAuto:({preferredColorScheme:e})=>e===l.Z.auto,prefersDark:({preferredColorScheme:e})=>e===l.Z.dark,orientation:({optimalWidth:e,optimalHeight:t})=>(0,s.T8)(e,t)},props:{alt:{type:String,default:""},variants:{type:Array,required:!0},shouldCalculateOptimalWidth:{type:Boolean,default:!0}},methods:{handleImageLoadError(){this.fallbackImageSrcSet=`${c} 2x`},async calculateOptimalDimensions(){const{$refs:{img:{currentSrc:e}},allVariants:t}=this,{density:n}=t.find((({src:t})=>e.endsWith(t))),r=parseInt(n.match(/\d+/)[0],u),i=await(0,s.RY)(e),a=i.width/r,o=i.height/r;return{width:a,height:o}},async optimizeImageSize(){if(!this.defaultAttributes.width&&this.$refs.img)try{const e=await this.calculateOptimalDimensions();this.optimalWidth=e.width,this.optimalHeight=e.height}catch{console.error("Unable to calculate optimal image width")}}},mounted(){this.shouldCalculateOptimalWidth&&this.$refs.img.addEventListener("load",this.optimizeImageSize)}},p=A,h=n(1001),g=(0,h.Z)(p,r,i,!1,null,null,null),f=g.exports},2586:function(e,t,n){"use strict";n.d(t,{Z:function(){return I}});var r=function(){var e=this,t=e._self._c;return t("nav",{ref:"nav",staticClass:"nav",class:e.rootClasses,attrs:{role:"navigation"}},[t("div",{ref:"wrapper",staticClass:"nav__wrapper"},[t("div",{staticClass:"nav__background"}),e.hasOverlay?t("div",{staticClass:"nav-overlay",on:{click:e.closeNav}}):e._e(),t("div",{staticClass:"nav-content"},[e._t("pre-title",null,{className:"pre-title"},{closeNav:e.closeNav,inBreakpoint:e.inBreakpoint,currentBreakpoint:e.currentBreakpoint,isOpen:e.isOpen}),e.$slots.default?t("div",{staticClass:"nav-title"},[e._t("default")],2):e._e(),e._t("after-title"),t("div",{staticClass:"nav-menu"},[t("a",{ref:"axToggle",staticClass:"nav-ax-toggle",attrs:{href:"#",role:"button"},on:{click:function(t){return t.preventDefault(),e.toggleNav.apply(null,arguments)}}},[t("span",{staticClass:"visuallyhidden"},[e.isOpen?[e._v(" "+e._s(e.$t("documentation.nav.close-menu"))+" ")]:[e._v(" "+e._s(e.$t("documentation.nav.open-menu"))+" ")]],2)]),t("div",{ref:"tray",staticClass:"nav-menu-tray",on:{transitionend:function(t){return t.target!==t.currentTarget?null:e.onTransitionEnd.apply(null,arguments)},click:e.handleTrayClick}},[e._t("tray",(function(){return[t("NavMenuItems",[e._t("menu-items")],2)]}),{closeNav:e.closeNav})],2)]),e.showActions?t("div",{staticClass:"nav-actions"},[t("a",{ref:"toggle",staticClass:"nav-menucta",attrs:{href:"#",tabindex:"-1","aria-hidden":"true"},on:{click:function(t){return t.preventDefault(),e.toggleNav.apply(null,arguments)}}},[t("span",{staticClass:"nav-menucta-chevron"})])]):e._e()],2),e._t("after-content")],2),t("BreakpointEmitter",{attrs:{scope:e.BreakpointScopes.nav},on:{change:e.onBreakpointChange}})],1)},i=[],s=n(9146),a=n(2853),o=n(7188),l=n(9652),c=n(1716),u=n(5381),d=n(1147),A=n(5657);const{noClose:p}=c.MenuLinkModifierClasses,{BreakpointName:h,BreakpointScopes:g}=o["default"].constants,f=8,m={isDark:"theme-dark",isOpen:"nav--is-open",inBreakpoint:"nav--in-breakpoint-range",isTransitioning:"nav--is-transitioning",isSticking:"nav--is-sticking",hasSolidBackground:"nav--solid-background",hasNoBorder:"nav--noborder",hasFullWidthBorder:"nav--fullwidth-border",isWideFormat:"nav--is-wide-format",noBackgroundTransition:"nav--no-bg-transition"};var v={name:"NavBase",components:{NavMenuItems:a.Z,BreakpointEmitter:o["default"]},constants:{NavStateClasses:m,NoBGTransitionFrames:f},props:{breakpoint:{type:String,default:h.small},hasOverlay:{type:Boolean,default:!0},hasSolidBackground:{type:Boolean,default:!1},hasNoBorder:{type:Boolean,default:!1},hasFullWidthBorder:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1},isWideFormat:{type:Boolean,default:!1},showActions:{type:Boolean,default:!0}},mixins:[s["default"]],data(){return{isOpen:!1,isTransitioning:!1,isSticking:!1,noBackgroundTransition:!0,currentBreakpoint:h.large}},computed:{BreakpointScopes:()=>g,inBreakpoint:({currentBreakpoint:e,breakpoint:t})=>!(0,u.fr)(e,t),rootClasses:({isOpen:e,inBreakpoint:t,isTransitioning:n,isSticking:r,hasSolidBackground:i,hasNoBorder:s,hasFullWidthBorder:a,isDark:o,isWideFormat:l,noBackgroundTransition:c})=>({[m.isDark]:o,[m.isOpen]:e,[m.inBreakpoint]:t,[m.isTransitioning]:n,[m.isSticking]:r,[m.hasSolidBackground]:i,[m.hasNoBorder]:s,[m.hasFullWidthBorder]:a,[m.isWideFormat]:l,[m.noBackgroundTransition]:c})},watch:{isOpen(e){this.$emit("change",e),e?this.onExpand():this.onClose()}},async mounted(){window.addEventListener("keydown",this.onEscape),window.addEventListener("popstate",this.closeNav),window.addEventListener("orientationchange",this.closeNav),document.addEventListener("click",this.handleClickOutside),this.handleFlashOnMount(),await this.$nextTick()},beforeDestroy(){window.removeEventListener("keydown",this.onEscape),window.removeEventListener("popstate",this.closeNav),window.removeEventListener("orientationchange",this.closeNav),document.removeEventListener("click",this.handleClickOutside),this.isOpen&&this.toggleScrollLock(!1)},methods:{getIntersectionTargets(){return[document.getElementById(c.EA)||this.$el]},toggleNav(){this.isOpen=!this.isOpen,this.isTransitioning=!0},closeNav(){const e=this.isOpen;return this.isOpen=!1,this.resolveOnceTransitionsEnd(e)},resolveOnceTransitionsEnd(e){return e&&this.inBreakpoint?(this.isTransitioning=!0,new Promise((e=>{const t=this.$watch("isTransitioning",(()=>{e(),t()}))}))):Promise.resolve()},async onTransitionEnd({propertyName:e}){"max-height"===e&&(this.$emit("changed",this.isOpen),this.isTransitioning=!1,this.isOpen?(this.$emit("opened"),this.toggleScrollLock(!0)):this.$emit("closed"))},onBreakpointChange(e){this.currentBreakpoint=e,this.inBreakpoint||this.closeNav()},onIntersect({intersectionRatio:e}){window.scrollY<0||(this.isSticking=1!==e)},onEscape({key:e}){"Escape"===e&&this.isOpen&&(this.closeNav(),this.$refs.axToggle.focus())},handleTrayClick({target:e}){e.href&&!e.classList.contains(p)&&this.closeNav()},handleClickOutside({target:e}){this.$refs.nav.contains(e)||this.closeNav()},toggleScrollLock(e){e?l.Z.lockScroll(this.$refs.tray):l.Z.unlockScroll(this.$refs.tray)},onExpand(){this.$emit("open"),d.Z.hide(this.$refs.wrapper),document.activeElement===this.$refs.toggle&&document.activeElement.blur()},onClose(){this.$emit("close"),this.toggleScrollLock(!1),d.Z.show(this.$refs.wrapper)},async handleFlashOnMount(){await(0,A.J)(f),this.noBackgroundTransition=!1}}},b=v,y=n(1001),C=(0,y.Z)(b,r,i,!1,null,"40ae4336",null),I=C.exports},535:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=function(){var e=this,t=e._self._c;return t("li",{staticClass:"nav-menu-item",class:{"nav-menu-item--animated":e.animate}},[e._t("default")],2)},i=[],s={name:"NavMenuItemBase",props:{animate:{type:Boolean,default:!0}}},a=s,o=n(1001),l=(0,o.Z)(a,r,i,!1,null,"296e4e0c",null),c=l.exports},2853:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=function(){var e=this,t=e._self._c;return t("ul",{staticClass:"nav-menu-items"},[e._t("default")],2)},i=[],s={name:"NavMenuItems"},a=s,o=n(1001),l=(0,o.Z)(a,r,i,!1,null,"a101abb4",null),c=l.exports},5921:function(e,t,n){"use strict";n.d(t,{Z:function(){return le}});var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"TopicTypeIcon",style:e.styles},[e.imageOverride?t("OverridableAsset",{staticClass:"icon-inline",attrs:{imageOverride:e.imageOverride,shouldCalculateOptimalWidth:e.shouldCalculateOptimalWidth}}):t(e.icon,e._b({tag:"component",staticClass:"icon-inline"},"component",e.iconProps,!1))],1)},i=[],s=n(8633),a=n(9001),o=n(5692),l=n(8638),c=function(){var e=this,t=e._self._c;return t("SVGIcon",{attrs:{viewBox:"0 0 14 14",height:"14",themeId:"topic-func"}},[t("path",{attrs:{d:"M13 1v12h-12v-12zM12.077 1.923h-10.154v10.154h10.154z"}}),t("path",{attrs:{d:"M5.191 9.529c0.044 0.002 0.089 0.004 0.133 0.004 0.108 0 0.196-0.025 0.262-0.074s0.122-0.113 0.166-0.188c0.044-0.077 0.078-0.159 0.103-0.247s0.049-0.173 0.074-0.251l0.598-2.186h-0.709l0.207-0.702h0.702l0.288-1.086c0.083-0.384 0.256-0.667 0.517-0.849s0.591-0.273 0.99-0.273c0.108 0 0.212 0.007 0.314 0.022s0.203 0.027 0.306 0.037l-0.207 0.761c-0.054-0.006-0.106-0.011-0.155-0.018s-0.102-0.011-0.155-0.011c-0.108 0-0.196 0.016-0.262 0.048s-0.122 0.075-0.166 0.129-0.080 0.115-0.107 0.185c-0.028 0.068-0.055 0.14-0.085 0.214l-0.222 0.842h0.768l-0.192 0.702h-0.783l-0.628 2.319c-0.059 0.222-0.129 0.419-0.21 0.594s-0.182 0.322-0.303 0.443-0.269 0.214-0.443 0.281-0.385 0.1-0.631 0.1c-0.084 0-0.168-0.004-0.251-0.011s-0.168-0.014-0.251-0.018l0.207-0.768c0.040 0 0.081 0.001 0.126 0.004z"}})])},u=[],d=n(9742),A={name:"TopicFuncIcon",components:{SVGIcon:d.Z}},p=A,h=n(1001),g=(0,h.Z)(p,c,u,!1,null,null,null),f=g.exports,m=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"collection-icon",attrs:{viewBox:"0 0 14 14",themeId:"collection"}},[t("path",{attrs:{d:"m1 1v12h12v-12zm11 11h-10v-10h10z"}}),t("path",{attrs:{d:"m3 4h8v1h-8zm0 2.5h8v1h-8zm0 2.5h8v1h-8z"}}),t("path",{attrs:{d:"m3 4h8v1h-8z"}}),t("path",{attrs:{d:"m3 6.5h8v1h-8z"}}),t("path",{attrs:{d:"m3 9h8v1h-8z"}})])},v=[],b={name:"CollectionIcon",components:{SVGIcon:d.Z}},y=b,C=(0,h.Z)(y,m,v,!1,null,null,null),I=C.exports,w=function(){var e=this,t=e._self._c;return t("SVGIcon",{attrs:{viewBox:"0 0 14 14",height:"14",themeId:"topic-func-op"}},[t("path",{attrs:{d:"M13 13h-12v-12h12zM1.923 12.077h10.154v-10.154h-10.154z"}}),t("path",{attrs:{d:"M5.098 4.968v-1.477h-0.738v1.477h-1.477v0.738h1.477v1.477h0.738v-1.477h1.477v-0.738z"}}),t("path",{attrs:{d:"M8.030 4.807l-2.031 5.538h0.831l2.031-5.538z"}}),t("path",{attrs:{d:"M8.894 8.805v0.923h2.215v-0.923z"}})])},E=[],B={name:"TopicFuncOpIcon",components:{SVGIcon:d.Z}},x=B,k=(0,h.Z)(x,w,E,!1,null,null,null),S=k.exports,_=n(7775),T=function(){var e=this,t=e._self._c;return t("SVGIcon",{attrs:{viewBox:"0 0 14 14",height:"14",themeId:"topic-subscript"}},[t("path",{attrs:{d:"M13 13h-12v-12h12zM1.923 12.077h10.154v-10.154h-10.154z"}}),t("path",{attrs:{d:"M4.133 3.633v6.738h1.938v-0.831h-0.923v-5.077h0.923v-0.831z"}}),t("path",{attrs:{d:"M9.856 10.371v-6.738h-1.938v0.831h0.923v5.077h-0.923v0.831z"}})])},L=[],P={name:"TopicSubscriptIcon",components:{SVGIcon:d.Z}},Q=P,M=(0,h.Z)(Q,T,L,!1,null,null,null),Z=M.exports,D=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"two-letter-icon",attrs:{width:"16px",height:"16px",viewBox:"0 0 16 16",themeId:"two-letter"}},[t("g",{attrs:{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"}},[t("g",{attrs:{transform:"translate(1.000000, 1.000000)"}},[t("rect",{attrs:{stroke:"currentColor",x:"0.5",y:"0.5",width:"13",height:"13"}}),t("text",{attrs:{"font-size":"8","font-weight":"bold",fill:"currentColor"}},[t("tspan",{attrs:{x:"8.2",y:"11"}},[e._v(e._s(e.second))])]),t("text",{attrs:{"font-size":"11","font-weight":"bold",fill:"currentColor"}},[t("tspan",{attrs:{x:"1.7",y:"11"}},[e._v(e._s(e.first))])])])])])},O=[],N={name:"TwoLetterSymbolIcon",components:{SVGIcon:d.Z},props:{first:{type:String,required:!0},second:{type:String,required:!0}}},R=N,j=(0,h.Z)(R,D,O,!1,null,null,null),G=j.exports,V=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"single-letter-icon",attrs:{width:"16px",height:"16px",viewBox:"0 0 16 16",themeId:"single-letter"}},[t("g",{attrs:{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"}},[t("rect",{attrs:{stroke:"currentColor",x:"1",y:"1",width:"14",height:"14"}}),t("text",{attrs:{"font-size":"11","font-weight":"bold",fill:"currentColor",x:"49%",y:"12","text-anchor":"middle"}},[t("tspan",[e._v(e._s(e.symbol))])])])])},$=[],z={name:"SingleLetterSymbolIcon",components:{SVGIcon:d.Z},props:{symbol:{type:String,required:!0}}},q=z,H=(0,h.Z)(q,V,$,!1,null,null,null),W=H.exports,F=n(5629),U=n(1869),Y=function(){var e=this,t=e._self._c;return e.shouldUseAsset?t("ImageAsset",e._b({},"ImageAsset",{variants:e.variants,loading:null,shouldCalculateOptimalWidth:e.shouldCalculateOptimalWidth,alt:e.alt},!1)):t("SVGIcon",{attrs:{"icon-url":e.iconUrl,themeId:e.themeId}})},X=[],K=n(6769),J={name:"OverridableAsset",components:{SVGIcon:d.Z,ImageAsset:K.Z},props:{imageOverride:{type:Object,default:null},shouldCalculateOptimalWidth:{type:Boolean,default:!0}},computed:{variants:({imageOverride:e})=>e?e.variants:[],alt:({imageOverride:e})=>e.alt,firstVariant:({variants:e})=>e[0],iconUrl:({firstVariant:e})=>e&&e.url,themeId:({firstVariant:e})=>e&&e.svgID,isSameOrigin:({iconUrl:e,sameOrigin:t})=>t(e),shouldUseAsset:({isSameOrigin:e,themeId:t})=>!e||!t},methods:{sameOrigin(e){if(!e)return!1;const t=new URL(e,window.location),n=new URL(window.location);return t.origin===n.origin}}},ee=J,te=(0,h.Z)(ee,Y,X,!1,null,null,null),ne=te.exports;const re={[F.t.article]:o.Z,[F.t.associatedtype]:I,[F.t.buildSetting]:I,[F.t["class"]]:W,[F.t.collection]:I,[F.t.dictionarySymbol]:W,[F.t.container]:I,[F.t["enum"]]:W,[F.t.extension]:G,[F.t.func]:f,[F.t.op]:S,[F.t.httpRequest]:W,[F.t.languageGroup]:I,[F.t.learn]:s.Z,[F.t.method]:W,[F.t.macro]:W,[F.t.module]:a.Z,[F.t.namespace]:W,[F.t.overview]:s.Z,[F.t.protocol]:G,[F.t.property]:W,[F.t.propertyListKey]:W,[F.t.resources]:s.Z,[F.t.sampleCode]:_.Z,[F.t.struct]:W,[F.t.subscript]:Z,[F.t.symbol]:I,[F.t.tutorial]:l.Z,[F.t.typealias]:W,[F.t.union]:W,[F.t["var"]]:W},ie={[F.t["class"]]:{symbol:"C"},[F.t.dictionarySymbol]:{symbol:"O"},[F.t["enum"]]:{symbol:"E"},[F.t.extension]:{first:"E",second:"x"},[F.t.httpRequest]:{symbol:"E"},[F.t.method]:{symbol:"M"},[F.t.macro]:{symbol:"#"},[F.t.namespace]:{symbol:"N"},[F.t.protocol]:{first:"P",second:"r"},[F.t.property]:{symbol:"P"},[F.t.propertyListKey]:{symbol:"K"},[F.t.struct]:{symbol:"S"},[F.t.typealias]:{symbol:"T"},[F.t.union]:{symbol:"U"},[F.t["var"]]:{symbol:"V"}};var se={name:"TopicTypeIcon",components:{OverridableAsset:ne,SVGIcon:d.Z,SingleLetterSymbolIcon:W},constants:{TopicTypeIcons:re,TopicTypeProps:ie},props:{type:{type:String,required:!0},withColors:{type:Boolean,default:!1},imageOverride:{type:Object,default:null},shouldCalculateOptimalWidth:{type:Boolean,default:!0}},computed:{normalisedType:({type:e})=>F.$[e]||e,icon:({normalisedType:e})=>re[e]||I,iconProps:({normalisedType:e})=>ie[e]||{},color:({normalisedType:e})=>U.g[e],styles:({color:e,withColors:t})=>t&&e?{"--icon-color":`var(--color-type-icon-${e})`}:{}}},ae=se,oe=(0,h.Z)(ae,r,i,!1,null,"3b1b4787",null),le=oe.exports},352:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r,i,s={functional:!0,name:"WordBreak",render(e,{props:t,slots:n,data:r}){const i=n().default||[],s=i.filter((e=>e.text&&!e.tag));if(0===s.length||s.length!==i.length)return e(t.tag,r,i);const a=s.map((({text:e})=>e)).join(),o=[];let l=null,c=0;while(null!==(l=t.safeBoundaryPattern.exec(a))){const t=l.index+1;o.push(a.slice(c,t)),o.push(e("wbr",{key:l.index})),c=t}return o.push(a.slice(c,a.length)),e(t.tag,r,o)},props:{safeBoundaryPattern:{type:RegExp,default:()=>/([a-z](?=[A-Z])|(:)\w|\w(?=[._]\w))/g},tag:{type:String,default:()=>"span"}}},a=s,o=n(1001),l=(0,o.Z)(a,r,i,!1,null,null,null),c=l.exports},2122:function(e,t,n){var r={"./bash.js":[8780,393],"./c.js":[612,546],"./cpp.js":[6248,621],"./css.js":[5064,864],"./diff.js":[7731,213],"./http.js":[8937,878],"./java.js":[8257,788],"./javascript.js":[978,814],"./json.js":[14,82],"./llvm.js":[4972,133],"./markdown.js":[1312,113],"./objectivec.js":[2446,637],"./perl.js":[2482,645],"./php.js":[2656,596],"./python.js":[8245,435],"./ruby.js":[7905,623],"./scss.js":[1062,392],"./shell.js":[7874,176],"./swift.js":[7690,527],"./xml.js":[4610,490]};function i(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],i=t[0];return n.e(t[1]).then((function(){return n.t(i,23)}))}i.keys=function(){return Object.keys(r)},i.id=2122,e.exports=i},9426:function(e,t,n){"use strict";n.d(t,{Ag:function(){return s},UG:function(){return i},yf:function(){return r}});const r={added:"added",modified:"modified",deprecated:"deprecated"},i=[r.modified,r.added,r.deprecated],s={[r.modified]:"change-type.modified",[r.added]:"change-type.added",[r.deprecated]:"change-type.deprecated"}},1869:function(e,t,n){"use strict";n.d(t,{c:function(){return s},g:function(){return a}});var r=n(5629),i=n(7192);const s={blue:"blue",teal:"teal",orange:"orange",purple:"purple",green:"green",sky:"sky",pink:"pink"},a={[r.t.article]:s.teal,[r.t.init]:s.blue,[r.t["case"]]:s.orange,[r.t["class"]]:s.purple,[r.t.collection]:s.pink,[i.L.collectionGroup]:s.teal,[r.t.dictionarySymbol]:s.purple,[r.t["enum"]]:s.orange,[r.t.extension]:s.orange,[r.t.func]:s.green,[r.t.op]:s.green,[r.t.httpRequest]:s.green,[r.t.module]:s.sky,[r.t.method]:s.blue,[r.t.macro]:s.pink,[r.t.protocol]:s.purple,[r.t.property]:s.teal,[r.t.propertyListKey]:s.green,[r.t.propertyListKeyReference]:s.green,[r.t.sampleCode]:s.purple,[r.t.struct]:s.purple,[r.t.subscript]:s.blue,[r.t.typealias]:s.orange,[r.t.union]:s.purple,[r.t["var"]]:s.purple}},3078:function(e,t){"use strict";t["Z"]={objectiveC:{name:"Objective-C",key:{api:"occ",url:"objc"}},swift:{name:"Swift",key:{api:"swift",url:"swift"}}}},3946:function(e,t,n){"use strict";n.d(t,{o:function(){return r}});const r={list:"list",compactGrid:"compactGrid",detailedGrid:"detailedGrid",hidden:"hidden"}},5629:function(e,t,n){"use strict";n.d(t,{$:function(){return i},t:function(){return r}});const r={article:"article",associatedtype:"associatedtype",buildSetting:"buildSetting",case:"case",collection:"collection",class:"class",container:"container",dictionarySymbol:"dictionarySymbol",enum:"enum",extension:"extension",func:"func",groupMarker:"groupMarker",httpRequest:"httpRequest",init:"init",languageGroup:"languageGroup",learn:"learn",macro:"macro",method:"method",module:"module",namespace:"namespace",op:"op",overview:"overview",project:"project",property:"property",propertyListKey:"propertyListKey",propertyListKeyReference:"propertyListKeyReference",protocol:"protocol",resources:"resources",root:"root",sampleCode:"sampleCode",section:"section",struct:"struct",subscript:"subscript",symbol:"symbol",tutorial:"tutorial",typealias:"typealias",union:"union",var:"var"},i={[r.init]:r.method,[r.case]:r.enum,[r.propertyListKeyReference]:r.propertyListKey,[r.project]:r.tutorial}},7192:function(e,t,n){"use strict";n.d(t,{L:function(){return r}});const r={article:"article",codeListing:"codeListing",collection:"collection",collectionGroup:"collectionGroup",containerSymbol:"containerSymbol",devLink:"devLink",dictionarySymbol:"dictionarySymbol",generic:"generic",link:"link",media:"media",pseudoCollection:"pseudoCollection",pseudoSymbol:"pseudoSymbol",restRequestSymbol:"restRequestSymbol",sampleCode:"sampleCode",symbol:"symbol",table:"table",learn:"learn",overview:"overview",project:"project",tutorial:"tutorial",resources:"resources"}},1789:function(e,t){"use strict";t["Z"]={inject:{performanceMetricsEnabled:{default:!1},isTargetIDE:{default:!1}},methods:{newContentMounted(){let e;this.performanceMetricsEnabled&&(e=Math.round(window.performance.now()),window.renderedTimes||(window.renderedTimes=[]),window.renderedTimes.push(e)),this.$bridge.send({type:"rendered",data:{time:e}})},handleContentUpdateFromBridge(e){this.topicData=e}}}},2974:function(e,t,n){"use strict";var r=n(3465),i=n(3208),s=n(2449),a=n(9519);t["Z"]={methods:{extractFirstParagraphText(e=[]){const{references:t={}}=this,n=a["default"].computed.plaintext.bind({...a["default"].methods,content:e,references:t})();return(0,i.id)(n)}},computed:{pagePath:({$route:{path:e="/"}={}})=>e,pageURL:({pagePath:e="/"})=>(0,s.HH)(e),disableMetadata:()=>!1},mounted(){this.disableMetadata||(0,r.X)({title:this.pageTitle,description:this.pageDescription,url:this.pageURL,currentLocale:this.$i18n.locale})}}},9146:function(e,t,n){"use strict";const r={up:"up",down:"down"};t["default"]={constants:{IntersectionDirections:r},data(){return{intersectionObserver:null,intersectionPreviousScrollY:0,intersectionScrollDirection:r.down}},computed:{intersectionThreshold(){const e=[];for(let t=0;t<=1;t+=.01)e.push(t);return e},intersectionRoot(){return null},intersectionRootMargin(){return"0px 0px 0px 0px"},intersectionObserverOptions(){return{root:this.intersectionRoot,rootMargin:this.intersectionRootMargin,threshold:this.intersectionThreshold}}},async mounted(){await n.e(337).then(n.t.bind(n,6337,23)),this.intersectionObserver=new IntersectionObserver((e=>{this.detectIntersectionScrollDirection();const t=this.onIntersect;t?e.forEach(t):console.warn("onIntersect not implemented")}),this.intersectionObserverOptions),this.getIntersectionTargets().forEach((e=>{this.intersectionObserver.observe(e)}))},beforeDestroy(){this.intersectionObserver&&this.intersectionObserver.disconnect()},methods:{getIntersectionTargets(){return[this.$el]},detectIntersectionScrollDirection(){window.scrollYthis.intersectionPreviousScrollY&&(this.intersectionScrollDirection=r.up),this.intersectionPreviousScrollY=window.scrollY}}}},5184:function(e,t,n){"use strict";var r=n(4030),i=n(1265),s=n(3704);function a(e){return new Promise(((t,n)=>{e.complete?t():(e.addEventListener("load",t,{once:!0}),e.addEventListener("error",n,{once:!0}))}))}function o(){return Promise.allSettled([...document.getElementsByTagName("img")].map(a))}t["Z"]={mixins:[s.Z],mounted(){this.scrollToElementIfAnchorPresent()},updated(){this.scrollToElementIfAnchorPresent()},methods:{async scrollToElementIfAnchorPresent(){const{hash:e}=this.$route;if(!e)return;const{imageLoadingStrategy:t}=r["default"].state;r["default"].setImageLoadingStrategy(i.Z.eager),await this.$nextTick(),await o(),this.scrollToElement(e),r["default"].setImageLoadingStrategy(t)}}}},5953:function(e,t,n){"use strict";var r=n(4030);const i=new Set(["section","topic"]);t["Z"]={inject:{store:{default:()=>({state:{references:{}},setReferences(){},reset(){}})}},data:()=>({appState:r["default"].state}),computed:{references(){const{isFromIncludedArchive:e,store:{state:{references:t={}}}}=this;return Object.keys(t).reduce(((n,r)=>{const s=t[r],{url:a,...o}=s;return i.has(s.type)?{...n,[r]:e(r)?t[r]:o}:{...n,[r]:s}}),{})}},methods:{isFromIncludedArchive(e){const{includedArchiveIdentifiers:t=[]}=this.appState;return!t.length||t.some((t=>e?.startsWith(`doc://${t}/`)))}}}},3704:function(e,t,n){"use strict";var r=n(5657);t["Z"]={methods:{async scrollToElement(e){await(0,r.J)(8);const t=this.$router.resolve({hash:e}),{selector:n,offset:i}=await this.$router.options.scrollBehavior(t.route),s=document.querySelector(n);return s?(s.scrollIntoView(),window.scrollY+window.innerHeight({[i.yf.modified]:0,[i.yf.added]:0,[i.yf.deprecated]:0});var a={state:{apiChanges:null,apiChangesCounts:s(),selectedAPIChangesVersion:null},setAPIChanges(e){this.state.apiChanges=e},setSelectedAPIChangesVersion(e){this.state.selectedAPIChangesVersion=e},resetApiChanges(){this.state.apiChanges=null,this.state.apiChangesCounts=s()},async updateApiChangesCounts(){await r["default"].nextTick(),Object.keys(this.state.apiChangesCounts).forEach((e=>{this.state.apiChangesCounts[e]=this.countChangeType(e)}))},countChangeType(e){if(document&&document.querySelectorAll){const t=`.changed-${e}:not(.changed-total)`;return document.querySelectorAll(t).length}return 0}},o={state:{onThisPageSections:[],currentPageAnchor:null},resetPageSections(){this.state.onThisPageSections=[],this.state.currentPageAnchor=null},addOnThisPageSection(e,{i18n:t=!0}={}){this.state.onThisPageSections.push({...e,i18n:t})},setCurrentPageSection(e){const t=this.state.onThisPageSections.findIndex((({anchor:t})=>t===e));-1!==t&&(this.state.currentPageAnchor=e)}},l=n(5394);const{state:c,...u}=a,{state:d,...A}=o;var p={state:{preferredLanguage:l.Z.preferredLanguage,contentWidth:0,...c,...d,references:{}},reset(){this.state.preferredLanguage=l.Z.preferredLanguage,this.state.references={},this.resetApiChanges()},setPreferredLanguage(e){this.state.preferredLanguage=e,l.Z.preferredLanguage=this.state.preferredLanguage},setContentWidth(e){this.state.contentWidth=e},setReferences(e){this.state.references=e},...u,...A}},7486:function(e,t,n){"use strict";const r=["input","select","textarea","button","optgroup","option","menuitem","fieldset","object","a[href]","*[tabindex]","*[contenteditable]"],i=r.join(",");t["ZP"]={getTabbableElements(e){const t=e.querySelectorAll(i),n=t.length;let r;const s=[];for(r=0;r=0},isFocusableElement(e){const t=e.nodeName.toLowerCase(),n=r.includes(t);return!("a"!==t||!e.getAttribute("href"))||(n?!e.disabled:"true"===e.getAttribute("contenteditable")||!Number.isNaN(parseFloat(e.getAttribute("tabindex"))))}}},5654:function(e,t,n){"use strict";n.d(t,{Md:function(){return a},Xy:function(){return i},Z$:function(){return r}});const r=e=>e[e.length-1],i=(e,t)=>JSON.stringify(e)===JSON.stringify(t);function*s(e,t){for(let n=0;n{o(e,s),o(e,a),e.setAttribute(s,"true"),e.setAttribute(a,"-1");const t=r.ZP.getTabbableElements(e);let n=t.length-1;while(n>=0)o(t[n],a),t[n].setAttribute(a,"-1"),n-=1},d=e=>{l(e,s),l(e,a);const t=e.querySelectorAll(`[${i+a}]`);let n=t.length-1;while(n>=0)l(t[n],a),n-=1};t["Z"]={hide(e){c(e,u)},show(e){c(e,d)}}},8841:function(e,t,n){"use strict";n.d(t,{d9:function(){return h},k_:function(){return p},Ek:function(){return d},LR:function(){return g},Us:function(){return A}});var r=n(5947),i=n(2449),s=n(1944);class a extends Error{constructor({location:e,response:t}){super("Request redirected"),this.location=e,this.response=t}}class o extends Error{constructor(e){super("Unable to fetch data"),this.route=e}}async function l(e,t={},n={}){function r(e){return("ide"!=={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET||0!==e.status)&&!e.ok}const o=(0,i.WN)(e),l=(0,i.Ex)(t);l&&(o.search=l);const c=await fetch(o.href,n);if(r(c))throw c;if(c.redirected)throw new a({location:c.url,response:c});const u=await c.json();return(0,s.ZP)(u.schemaVersion),u}function c(e){const t=e.replace(/\/$/,"");return`${(0,r.AH)(["/data",t])}.json`}function u(e){const{pathname:t,search:n}=new URL(e),r=/\/data(\/.*).json$/,i=r.exec(t);return i?i[1]+n:t+n}async function d(e,t,n){const r=c(e.path);let i;try{i=await l(r,e.query)}catch(s){if("ide"==={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET)throw console.error(s),!1;if(s instanceof a)throw u(s.location);s.status&&404===s.status?n({name:"not-found",params:[e.path]}):n(new o(e))}return i}function A(e,t){return!(0,i.Lp)(e,t)}async function p(e,t={}){const n=c(e);return l(n,{},t)}function h(e){return JSON.parse(JSON.stringify(e))}async function g({slug:e}){const t=(0,i.WN)(["/index/",e,"index.json"]);return l(t)}},1944:function(e,t,n){"use strict";n.d(t,{W1:function(){return i},ZP:function(){return d},n4:function(){return a}});const r={major:0,minor:3,patch:0};function i({major:e,minor:t,patch:n}){return[e,t,n].join(".")}function s(e){const[t=0,n=0,r=0]=e.split(".");return[Number(t),Number(n),Number(r)]}function a(e,t){const n=s(e),r=s(t);for(let i=0;ir[i])return 1;if(n[i]`[Swift-DocC-Render] The render node version for this page (${e}) has a different major version component than Swift-DocC-Render supports (${o}). Compatibility is not guaranteed.`;function u(e){const{major:t,minor:n}=e,{major:s,minor:a}=r;return t!==s?c(i(e)):n>a?l(i(e)):""}function d(e){if(!e)return;const t=u(e);t&&console.warn(t)}},9652:function(e,t,n){"use strict";n.d(t,{n:function(){return a}});let r=!1,i=-1,s=0;const a="data-scroll-lock-disable",o=()=>window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1);function l(e){e.touches.length>1||e.preventDefault()}const c=e=>!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight;function u(){s=document.body.getBoundingClientRect().top,document.body.style.overflow="hidden scroll",document.body.style.top=`${s}px`,document.body.style.position="fixed",document.body.style.width="100%"}function d(e){e&&(e.ontouchstart=null,e.ontouchmove=null),document.removeEventListener("touchmove",l)}function A(e,t){const n=e.targetTouches[0].clientY-i,r=e.target.closest(`[${a}]`)||t;return 0===r.scrollTop&&n>0||c(r)&&n<0?l(e):(e.stopPropagation(),!0)}function p(e){document.addEventListener("touchmove",l,{passive:!1}),e&&(e.ontouchstart=e=>{1===e.targetTouches.length&&(i=e.targetTouches[0].clientY)},e.ontouchmove=t=>{1===t.targetTouches.length&&A(t,e)})}t["Z"]={lockScroll(e){r||(o()?p(e):u(),r=!0)},unlockScroll(e){r&&(o()?d(e):(document.body.style.removeProperty("overflow"),document.body.style.removeProperty("top"),document.body.style.removeProperty("position"),document.body.style.removeProperty("width"),window.scrollTo(0,Math.abs(s))),r=!1)}}},3685:function(e,t,n){var r={"./markdown":[2003,642],"./markdown.js":[2003,642],"./swift":[7467,217],"./swift.js":[7467,217]};function i(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],i=t[0];return n.e(t[1]).then((function(){return n(i)}))}i.keys=function(){return Object.keys(r)},i.id=3685,e.exports=i},3390:function(e){var t={exports:{}};function n(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((function(t){var r=e[t];"object"!=typeof r||Object.isFrozen(r)||n(r)})),e}t.exports=n,t.exports.default=n;var r=t.exports;class i{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function s(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function a(e,...t){const n=Object.create(null);for(const r in e)n[r]=e[r];return t.forEach((function(e){for(const t in e)n[t]=e[t]})),n}const o="",l=e=>!!e.kind,c=(e,{prefix:t})=>{if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")}return`${t}${e}`};class u{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=s(e)}openNode(e){if(!l(e))return;let t=e.kind;t=e.sublanguage?`language-${t}`:c(t,{prefix:this.classPrefix}),this.span(t)}closeNode(e){l(e)&&(this.buffer+=o)}value(){return this.buffer}span(e){this.buffer+=``}}class d{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){while(this.closeNode());}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"===typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){"string"!==typeof e&&e.children&&(e.children.every((e=>"string"===typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{d._collapse(e)})))}}class A extends d{constructor(e){super(),this.options=e}addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){const e=new u(this,this.options);return e.value()}finalize(){return!0}}function p(e){return e?"string"===typeof e?e:e.source:null}function h(e){return m("(?=",e,")")}function g(e){return m("(?:",e,")*")}function f(e){return m("(?:",e,")?")}function m(...e){const t=e.map((e=>p(e))).join("");return t}function v(e){const t=e[e.length-1];return"object"===typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function b(...e){const t=v(e),n="("+(t.capture?"":"?:")+e.map((e=>p(e))).join("|")+")";return n}function y(e){return new RegExp(e.toString()+"|").exec("").length-1}function C(e,t){const n=e&&e.exec(t);return n&&0===n.index}const I=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function w(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n;let r=p(e),i="";while(r.length>0){const e=I.exec(r);if(!e){i+=r;break}i+=r.substring(0,e.index),r=r.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?i+="\\"+String(Number(e[1])+t):(i+=e[0],"("===e[0]&&n++)}return i})).map((e=>`(${e})`)).join(t)}const E=/\b\B/,B="[a-zA-Z]\\w*",x="[a-zA-Z_]\\w*",k="\\b\\d+(\\.\\d+)?",S="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",_="\\b(0b[01]+)",T="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",L=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=m(t,/.*\b/,e.binary,/\b.*/)),a({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},P={begin:"\\\\[\\s\\S]",relevance:0},Q={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[P]},M={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[P]},Z={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},D=function(e,t,n={}){const r=a({scope:"comment",begin:e,end:t,contains:[]},n);r.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const i=b("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:m(/[ ]+/,"(",i,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),r},O=D("//","$"),N=D("/\\*","\\*/"),R=D("#","$"),j={scope:"number",begin:k,relevance:0},G={scope:"number",begin:S,relevance:0},V={scope:"number",begin:_,relevance:0},$={begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[P,{begin:/\[/,end:/\]/,relevance:0,contains:[P]}]}]},z={scope:"title",begin:B,relevance:0},q={scope:"title",begin:x,relevance:0},H={begin:"\\.\\s*"+x,relevance:0},W=function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})};var F=Object.freeze({__proto__:null,MATCH_NOTHING_RE:E,IDENT_RE:B,UNDERSCORE_IDENT_RE:x,NUMBER_RE:k,C_NUMBER_RE:S,BINARY_NUMBER_RE:_,RE_STARTERS_RE:T,SHEBANG:L,BACKSLASH_ESCAPE:P,APOS_STRING_MODE:Q,QUOTE_STRING_MODE:M,PHRASAL_WORDS_MODE:Z,COMMENT:D,C_LINE_COMMENT_MODE:O,C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:R,NUMBER_MODE:j,C_NUMBER_MODE:G,BINARY_NUMBER_MODE:V,REGEXP_MODE:$,TITLE_MODE:z,UNDERSCORE_TITLE_MODE:q,METHOD_GUARD:H,END_SAME_AS_BEGIN:W});function U(e,t){const n=e.input[e.index-1];"."===n&&t.ignoreMatch()}function Y(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function X(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=U,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function K(e,t){Array.isArray(e.illegal)&&(e.illegal=b(...e.illegal))}function J(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function ee(e,t){void 0===e.relevance&&(e.relevance=1)}const te=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]})),e.keywords=n.keywords,e.begin=m(n.beforeMatch,h(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},ne=["of","and","for","in","not","or","if","then","parent","list","value"],re="keyword";function ie(e,t,n=re){const r=Object.create(null);return"string"===typeof e?i(n,e.split(" ")):Array.isArray(e)?i(n,e):Object.keys(e).forEach((function(n){Object.assign(r,ie(e[n],t,n))})),r;function i(e,n){t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((function(t){const n=t.split("|");r[n[0]]=[e,se(n[0],n[1])]}))}}function se(e,t){return t?Number(t):ae(e)?0:1}function ae(e){return ne.includes(e.toLowerCase())}const oe={},le=e=>{console.error(e)},ce=(e,...t)=>{console.log(`WARN: ${e}`,...t)},ue=(e,t)=>{oe[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),oe[`${e}/${t}`]=!0)},de=new Error;function Ae(e,t,{key:n}){let r=0;const i=e[n],s={},a={};for(let o=1;o<=t.length;o++)a[o+r]=i[o],s[o+r]=!0,r+=y(t[o-1]);e[n]=a,e[n]._emit=s,e[n]._multi=!0}function pe(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw le("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),de;if("object"!==typeof e.beginScope||null===e.beginScope)throw le("beginScope must be object"),de;Ae(e,e.begin,{key:"beginScope"}),e.begin=w(e.begin,{joinWith:""})}}function he(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw le("skip, excludeEnd, returnEnd not compatible with endScope: {}"),de;if("object"!==typeof e.endScope||null===e.endScope)throw le("endScope must be object"),de;Ae(e,e.end,{key:"endScope"}),e.end=w(e.end,{joinWith:""})}}function ge(e){e.scope&&"object"===typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}function fe(e){ge(e),"string"===typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"===typeof e.endScope&&(e.endScope={_wrap:e.endScope}),pe(e),he(e)}function me(e){function t(t,n){return new RegExp(p(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=y(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map((e=>e[1]));this.matcherRe=t(w(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),r=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,r)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}function i(e){const t=new r;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}function s(n,r){const a=n;if(n.isCompiled)return a;[Y,J,fe,te].forEach((e=>e(n,r))),e.compilerExtensions.forEach((e=>e(n,r))),n.__beforeBegin=null,[X,K,ee].forEach((e=>e(n,r))),n.isCompiled=!0;let o=null;return"object"===typeof n.keywords&&n.keywords.$pattern&&(n.keywords=Object.assign({},n.keywords),o=n.keywords.$pattern,delete n.keywords.$pattern),o=o||/\w+/,n.keywords&&(n.keywords=ie(n.keywords,e.case_insensitive)),a.keywordPatternRe=t(o,!0),r&&(n.begin||(n.begin=/\B|\b/),a.beginRe=t(a.begin),n.end||n.endsWithParent||(n.end=/\B|\b/),n.end&&(a.endRe=t(a.end)),a.terminatorEnd=p(a.end)||"",n.endsWithParent&&r.terminatorEnd&&(a.terminatorEnd+=(n.end?"|":"")+r.terminatorEnd)),n.illegal&&(a.illegalRe=t(n.illegal)),n.contains||(n.contains=[]),n.contains=[].concat(...n.contains.map((function(e){return be("self"===e?n:e)}))),n.contains.forEach((function(e){s(e,a)})),n.starts&&s(n.starts,r),a.matcher=i(a),a}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=a(e.classNameAliases||{}),s(e)}function ve(e){return!!e&&(e.endsWithParent||ve(e.starts))}function be(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((function(t){return a(e,{variants:null},t)}))),e.cachedVariants?e.cachedVariants:ve(e)?a(e,{starts:e.starts?a(e.starts):null}):Object.isFrozen(e)?a(e):e}var ye="11.3.1";class Ce extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const Ie=s,we=a,Ee=Symbol("nomatch"),Be=7,xe=function(e){const t=Object.create(null),n=Object.create(null),s=[];let a=!0;const o="Could not find the language '{}', did you forget to load/include a language module?",l={disableAutodetect:!0,name:"Plain text",contains:[]};let c={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:A};function u(e){return c.noHighlightRe.test(e)}function d(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=c.languageDetectRe.exec(t);if(n){const t=M(n[1]);return t||(ce(o.replace("{}",n[1])),ce("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>u(e)||M(e)))}function p(e,t,n){let r="",i="";"object"===typeof t?(r=e,n=t.ignoreIllegals,i=t.language):(ue("10.7.0","highlight(lang, code, ...args) has been deprecated."),ue("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),i=e,r=t),void 0===n&&(n=!0);const s={code:r,language:i};R("before:highlight",s);const a=s.result?s.result:v(s.language,s.code,n);return a.code=s.code,R("after:highlight",a),a}function v(e,n,r,s){const l=Object.create(null);function u(e,t){return e.keywords[t]}function d(){if(!_.keywords)return void L.addText(P);let e=0;_.keywordPatternRe.lastIndex=0;let t=_.keywordPatternRe.exec(P),n="";while(t){n+=P.substring(e,t.index);const r=x.case_insensitive?t[0].toLowerCase():t[0],i=u(_,r);if(i){const[e,s]=i;if(L.addText(n),n="",l[r]=(l[r]||0)+1,l[r]<=Be&&(Q+=s),e.startsWith("_"))n+=t[0];else{const n=x.classNameAliases[e]||e;L.addKeyword(t[0],n)}}else n+=t[0];e=_.keywordPatternRe.lastIndex,t=_.keywordPatternRe.exec(P)}n+=P.substr(e),L.addText(n)}function A(){if(""===P)return;let e=null;if("string"===typeof _.subLanguage){if(!t[_.subLanguage])return void L.addText(P);e=v(_.subLanguage,P,!0,T[_.subLanguage]),T[_.subLanguage]=e._top}else e=I(P,_.subLanguage.length?_.subLanguage:null);_.relevance>0&&(Q+=e.relevance),L.addSublanguage(e._emitter,e.language)}function p(){null!=_.subLanguage?A():d(),P=""}function h(e,t){let n=1;while(void 0!==t[n]){if(!e._emit[n]){n++;continue}const r=x.classNameAliases[e[n]]||e[n],i=t[n];r?L.addKeyword(i,r):(P=i,d(),P=""),n++}}function g(e,t){return e.scope&&"string"===typeof e.scope&&L.openNode(x.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(L.addKeyword(P,x.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),P=""):e.beginScope._multi&&(h(e.beginScope,t),P="")),_=Object.create(e,{parent:{value:_}}),_}function f(e,t,n){let r=C(e.endRe,n);if(r){if(e["on:end"]){const n=new i(e);e["on:end"](t,n),n.isMatchIgnored&&(r=!1)}if(r){while(e.endsParent&&e.parent)e=e.parent;return e}}if(e.endsWithParent)return f(e.parent,t,n)}function m(e){return 0===_.matcher.regexIndex?(P+=e[0],1):(O=!0,0)}function b(e){const t=e[0],n=e.rule,r=new i(n),s=[n.__beforeBegin,n["on:begin"]];for(const i of s)if(i&&(i(e,r),r.isMatchIgnored))return m(t);return n.skip?P+=t:(n.excludeBegin&&(P+=t),p(),n.returnBegin||n.excludeBegin||(P=t)),g(n,e),n.returnBegin?0:t.length}function y(e){const t=e[0],r=n.substr(e.index),i=f(_,e,r);if(!i)return Ee;const s=_;_.endScope&&_.endScope._wrap?(p(),L.addKeyword(t,_.endScope._wrap)):_.endScope&&_.endScope._multi?(p(),h(_.endScope,e)):s.skip?P+=t:(s.returnEnd||s.excludeEnd||(P+=t),p(),s.excludeEnd&&(P=t));do{_.scope&&L.closeNode(),_.skip||_.subLanguage||(Q+=_.relevance),_=_.parent}while(_!==i.parent);return i.starts&&g(i.starts,e),s.returnEnd?0:t.length}function w(){const e=[];for(let t=_;t!==x;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach((e=>L.openNode(e)))}let E={};function B(t,i){const s=i&&i[0];if(P+=t,null==s)return p(),0;if("begin"===E.type&&"end"===i.type&&E.index===i.index&&""===s){if(P+=n.slice(i.index,i.index+1),!a){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=E.rule,t}return 1}if(E=i,"begin"===i.type)return b(i);if("illegal"===i.type&&!r){const e=new Error('Illegal lexeme "'+s+'" for mode "'+(_.scope||"")+'"');throw e.mode=_,e}if("end"===i.type){const e=y(i);if(e!==Ee)return e}if("illegal"===i.type&&""===s)return 1;if(D>1e5&&D>3*i.index){const e=new Error("potential infinite loop, way more iterations than matches");throw e}return P+=s,s.length}const x=M(e);if(!x)throw le(o.replace("{}",e)),new Error('Unknown language: "'+e+'"');const k=me(x);let S="",_=s||k;const T={},L=new c.__emitter(c);w();let P="",Q=0,Z=0,D=0,O=!1;try{for(_.matcher.considerAll();;){D++,O?O=!1:_.matcher.considerAll(),_.matcher.lastIndex=Z;const e=_.matcher.exec(n);if(!e)break;const t=n.substring(Z,e.index),r=B(t,e);Z=e.index+r}return B(n.substr(Z)),L.closeAllNodes(),L.finalize(),S=L.toHTML(),{language:e,value:S,relevance:Q,illegal:!1,_emitter:L,_top:_}}catch(N){if(N.message&&N.message.includes("Illegal"))return{language:e,value:Ie(n),illegal:!0,relevance:0,_illegalBy:{message:N.message,index:Z,context:n.slice(Z-100,Z+100),mode:N.mode,resultSoFar:S},_emitter:L};if(a)return{language:e,value:Ie(n),illegal:!1,relevance:0,errorRaised:N,_emitter:L,_top:_};throw N}}function y(e){const t={value:Ie(e),illegal:!1,relevance:0,_top:l,_emitter:new c.__emitter(c)};return t._emitter.addText(e),t}function I(e,n){n=n||c.languages||Object.keys(t);const r=y(e),i=n.filter(M).filter(D).map((t=>v(t,e,!1)));i.unshift(r);const s=i.sort(((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(M(e.language).supersetOf===t.language)return 1;if(M(t.language).supersetOf===e.language)return-1}return 0})),[a,o]=s,l=a;return l.secondBest=o,l}function w(e,t,r){const i=t&&n[t]||r;e.classList.add("hljs"),e.classList.add(`language-${i}`)}function E(e){let t=null;const n=d(e);if(u(n))return;if(R("before:highlightElement",{el:e,language:n}),e.children.length>0&&(c.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/issues/2886"),console.warn(e)),c.throwUnescapedHTML)){const t=new Ce("One of your code blocks includes unescaped HTML.",e.innerHTML);throw t}t=e;const r=t.textContent,i=n?p(r,{language:n,ignoreIllegals:!0}):I(r);e.innerHTML=i.value,w(e,n,i.language),e.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest&&(e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}),R("after:highlightElement",{el:e,result:i,text:r})}function B(e){c=we(c,e)}const x=()=>{_(),ue("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function k(){_(),ue("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let S=!1;function _(){if("loading"===document.readyState)return void(S=!0);const e=document.querySelectorAll(c.cssSelector);e.forEach(E)}function T(){S&&_()}function L(n,r){let i=null;try{i=r(e)}catch(s){if(le("Language definition for '{}' could not be registered.".replace("{}",n)),!a)throw s;le(s),i=l}i.name||(i.name=n),t[n]=i,i.rawDefinition=r.bind(null,e),i.aliases&&Z(i.aliases,{languageName:n})}function P(e){delete t[e];for(const t of Object.keys(n))n[t]===e&&delete n[t]}function Q(){return Object.keys(t)}function M(e){return e=(e||"").toLowerCase(),t[e]||t[n[e]]}function Z(e,{languageName:t}){"string"===typeof e&&(e=[e]),e.forEach((e=>{n[e.toLowerCase()]=t}))}function D(e){const t=M(e);return t&&!t.disableAutodetect}function O(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}function N(e){O(e),s.push(e)}function R(e,t){const n=e;s.forEach((function(e){e[n]&&e[n](t)}))}function j(e){return ue("10.7.0","highlightBlock will be removed entirely in v12.0"),ue("10.7.0","Please use highlightElement now."),E(e)}"undefined"!==typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",T,!1),Object.assign(e,{highlight:p,highlightAuto:I,highlightAll:_,highlightElement:E,highlightBlock:j,configure:B,initHighlighting:x,initHighlightingOnLoad:k,registerLanguage:L,unregisterLanguage:P,listLanguages:Q,getLanguage:M,registerAliases:Z,autoDetection:D,inherit:we,addPlugin:N}),e.debugMode=function(){a=!1},e.safeMode=function(){a=!0},e.versionString=ye,e.regex={concat:m,lookahead:h,either:b,optional:f,anyNumberOfTimes:g};for(const i in F)"object"===typeof F[i]&&r(F[i]);return Object.assign(e,F),e};var ke=xe({});e.exports=ke,ke.HighlightJS=ke,ke.default=ke}}]); \ No newline at end of file diff --git a/docs/js/903.b3710a74.js b/docs/js/903.b3710a74.js deleted file mode 100644 index f2c7563..0000000 --- a/docs/js/903.b3710a74.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -"use strict";(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[903],{5590:function(t,e,n){n.d(e,{Z:function(){return m}});var s=function(){var t=this,e=t._self._c;return e("PortalSource",{attrs:{to:"modal-destination",disabled:!t.isVisible}},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.isVisible,expression:"isVisible"}],staticClass:"generic-modal",class:[t.stateClasses,t.themeClass],style:t.modalColors,attrs:{role:"dialog"}},[e("div",{staticClass:"backdrop",on:{click:t.onClickOutside}}),e("div",{ref:"container",staticClass:"container",style:{width:t.width}},[t.showClose?e("button",{ref:"close",staticClass:"close",attrs:{"aria-label":t.$t("verbs.close")},on:{click:function(e){return e.preventDefault(),t.closeModal.apply(null,arguments)}}},[e("CloseIcon")],1):t._e(),e("div",{ref:"content",staticClass:"modal-content"},[t._t("default")],2)])])])},r=[],o=n(9652),i=n(114),a=n(1147),l=n(2433),c=n(1970);const u={light:"light",dark:"dark",dynamic:"dynamic",code:"code"};var h={name:"GenericModal",model:{prop:"visible",event:"update:visible"},components:{CloseIcon:c.Z,PortalSource:l.h_},props:{visible:{type:Boolean,default:!1},isFullscreen:{type:Boolean,default:!1},theme:{type:String,validator:t=>Object.keys(u).includes(t),default:u.light},codeBackgroundColorOverride:{type:String,default:""},backdropBackgroundColorOverride:{type:String,default:""},width:{type:String,default:null},showClose:{type:Boolean,default:!0}},data(){return{lastFocusItem:null,prefersDarkStyle:!1,focusTrapInstance:null}},computed:{isVisible:{get:({visible:t})=>t,set(t){this.$emit("update:visible",t)}},modalColors(){return{"--code-background":this.codeBackgroundColorOverride,"--backdrop-background":this.backdropBackgroundColorOverride}},themeClass({theme:t,prefersDarkStyle:e,isThemeDynamic:n}){let s={};return n&&(s={"theme-light":!e,"theme-dark":e}),[`theme-${t}`,s]},stateClasses:({isFullscreen:t,isVisible:e,showClose:n})=>({"modal-fullscreen":t,"modal-standard":!t,"modal-open":e,"modal-with-close":n}),isThemeDynamic:({theme:t})=>t===u.dynamic||t===u.code},watch:{isVisible(t){t?this.onShow():this.onHide()}},mounted(){if(this.focusTrapInstance=new i.Z,document.addEventListener("keydown",this.onKeydown),this.isThemeDynamic){const t=window.matchMedia("(prefers-color-scheme: dark)");t.addListener(this.onColorSchemePreferenceChange),this.$once("hook:beforeDestroy",(()=>{t.removeListener(this.onColorSchemePreferenceChange)})),this.onColorSchemePreferenceChange(t)}},beforeDestroy(){this.isVisible&&o.Z.unlockScroll(this.$refs.container),document.removeEventListener("keydown",this.onKeydown),this.focusTrapInstance.destroy()},methods:{async onShow(){await this.$nextTick(),o.Z.lockScroll(this.$refs.container),await this.focusCloseButton(),this.focusTrapInstance.updateFocusContainer(this.$refs.container),this.focusTrapInstance.start(),a.Z.hide(this.$refs.container)},onHide(){o.Z.unlockScroll(this.$refs.container),this.focusTrapInstance.stop(),this.lastFocusItem&&(this.lastFocusItem.focus({preventScroll:!0}),this.lastFocusItem=null),this.$emit("close"),a.Z.show(this.$refs.container)},closeModal(){this.isVisible=!1},selectContent(){window.getSelection().selectAllChildren(this.$refs.content)},onClickOutside(){this.closeModal()},onKeydown(t){const{metaKey:e=!1,ctrlKey:n=!1,key:s}=t;this.isVisible&&("a"===s&&(e||n)&&(t.preventDefault(),this.selectContent()),"Escape"===s&&(t.preventDefault(),this.closeModal()))},onColorSchemePreferenceChange({matches:t}){this.prefersDarkStyle=t},async focusCloseButton(){this.lastFocusItem=document.activeElement,await this.$nextTick(),this.$refs.close&&this.$refs.close.focus(),this.$emit("open")}}},d=h,f=n(1001),p=(0,f.Z)(d,s,r,!1,null,"795f7b59",null),m=p.exports},5151:function(t,e,n){n.d(e,{Z:function(){return u}});var s=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"inline-chevron-down-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-chevron-down"}},[e("path",{attrs:{d:"M12.634 2.964l0.76 0.649-6.343 7.426-6.445-7.423 0.755-0.655 5.683 6.545 5.59-6.542z"}})])},r=[],o=n(3453),i={name:"InlineChevronDownIcon",components:{SVGIcon:o.Z}},a=i,l=n(1001),c=(0,l.Z)(a,s,r,!1,null,null,null),u=c.exports},8093:function(t,e,n){n.d(e,{Z:function(){return y}});var s=function(){var t=this,e=t._self._c;return e("div",{style:t.codeStyle},[t._t("default")],2)},r=[],o=n(8571);const i=0,a=255;function l(t){const e=t.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d+\.?\d*|\.\d+)\s*\)/);if(!e)throw new Error("invalid rgba() input");const n=10;return{r:parseInt(e[1],n),g:parseInt(e[2],n),b:parseInt(e[3],n),a:parseFloat(e[4])}}function c(t){const{r:e,g:n,b:s}=l(t);return.2126*e+.7152*n+.0722*s}function u(t,e){const n=Math.round(a*e),s=l(t),{a:r}=s,[o,c,u]=[s.r,s.g,s.b].map((t=>Math.max(i,Math.min(a,t+n))));return`rgba(${o}, ${c}, ${u}, ${r})`}function h(t,e){return u(t,e)}function d(t,e){return u(t,-1*e)}var f={name:"CodeTheme",data(){return{codeThemeState:o.Z.state}},computed:{codeStyle(){const{codeColors:t}=this.codeThemeState;return t?{"--text":t.text,"--background":t.background,"--line-highlight":t.lineHighlight,"--url":t.commentURL,"--syntax-comment":t.comment,"--syntax-quote":t.comment,"--syntax-keyword":t.keyword,"--syntax-literal":t.keyword,"--syntax-selector-tag":t.keyword,"--syntax-string":t.stringLiteral,"--syntax-bullet":t.stringLiteral,"--syntax-meta":t.keyword,"--syntax-number":t.stringLiteral,"--syntax-symbol":t.stringLiteral,"--syntax-tag":t.stringLiteral,"--syntax-attr":t.typeAnnotation,"--syntax-built_in":t.typeAnnotation,"--syntax-builtin-name":t.typeAnnotation,"--syntax-class":t.typeAnnotation,"--syntax-params":t.typeAnnotation,"--syntax-section":t.typeAnnotation,"--syntax-title":t.typeAnnotation,"--syntax-type":t.typeAnnotation,"--syntax-attribute":t.keyword,"--syntax-identifier":t.text,"--syntax-subst":t.text,"--color-syntax-param-internal-name":this.internalParamNameColor}:null},internalParamNameColor(){const{background:t,text:e}=this.codeThemeState.codeColors;try{const n=c(t),s=n1&&void 0!==arguments[1]?arguments[1]:{};return t.reduce((function(t,n){var s=n.passengers[0],r="function"===typeof s?s(e):n.passengers;return t.concat(r)}),[])}function f(t,e){return t.map((function(t,e){return[e,t]})).sort((function(t,n){return e(t[1],n[1])||t[0]-n[0]})).map((function(t){return t[1]}))}function p(t,e){return e.reduce((function(e,n){return t.hasOwnProperty(n)&&(e[n]=t[n]),e}),{})}var m={},g={},y={},b=r.extend({data:function(){return{transports:m,targets:g,sources:y,trackInstances:u}},methods:{open:function(t){if(u){var e=t.to,n=t.from,s=t.passengers,o=t.order,i=void 0===o?1/0:o;if(e&&n&&s){var a={to:e,from:n,passengers:h(s),order:i},l=Object.keys(this.transports);-1===l.indexOf(e)&&r.set(this.transports,e,[]);var c=this.$_getTransportIndex(a),d=this.transports[e].slice(0);-1===c?d.push(a):d[c]=a,this.transports[e]=f(d,(function(t,e){return t.order-e.order}))}}},close:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.to,s=t.from;if(n&&(s||!1!==e)&&this.transports[n])if(e)this.transports[n]=[];else{var r=this.$_getTransportIndex(t);if(r>=0){var o=this.transports[n].slice(0);o.splice(r,1),this.transports[n]=o}}},registerTarget:function(t,e,n){u&&(this.trackInstances&&!n&&this.targets[t]&&console.warn("[portal-vue]: Target ".concat(t," already exists")),this.$set(this.targets,t,Object.freeze([e])))},unregisterTarget:function(t){this.$delete(this.targets,t)},registerSource:function(t,e,n){u&&(this.trackInstances&&!n&&this.sources[t]&&console.warn("[portal-vue]: source ".concat(t," already exists")),this.$set(this.sources,t,Object.freeze([e])))},unregisterSource:function(t){this.$delete(this.sources,t)},hasTarget:function(t){return!(!this.targets[t]||!this.targets[t][0])},hasSource:function(t){return!(!this.sources[t]||!this.sources[t][0])},hasContentFor:function(t){return!!this.transports[t]&&!!this.transports[t].length},$_getTransportIndex:function(t){var e=t.to,n=t.from;for(var s in this.transports[e])if(this.transports[e][s].from===n)return+s;return-1}}}),v=new b(m),T=1,S=r.extend({name:"portal",props:{disabled:{type:Boolean},name:{type:String,default:function(){return String(T++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}}},created:function(){var t=this;this.$nextTick((function(){v.registerSource(t.name,t)}))},mounted:function(){this.disabled||this.sendUpdate()},updated:function(){this.disabled?this.clear():this.sendUpdate()},beforeDestroy:function(){v.unregisterSource(this.name),this.clear()},watch:{to:function(t,e){e&&e!==t&&this.clear(e),this.sendUpdate()}},methods:{clear:function(t){var e={from:this.name,to:t||this.to};v.close(e)},normalizeSlots:function(){return this.$scopedSlots.default?[this.$scopedSlots.default]:this.$slots.default},normalizeOwnChildren:function(t){return"function"===typeof t?t(this.slotProps):t},sendUpdate:function(){var t=this.normalizeSlots();if(t){var e={from:this.name,to:this.to,passengers:i(t),order:this.order};v.open(e)}else this.clear()}},render:function(t){var e=this.$slots.default||this.$scopedSlots.default||[],n=this.tag;return e&&this.disabled?e.length<=1&&this.slim?this.normalizeOwnChildren(e)[0]:t(n,[this.normalizeOwnChildren(e)]):this.slim?t():t(n,{class:{"v-portal":!0},style:{display:"none"},key:"v-portal-placeholder"})}}),w=r.extend({name:"portalTarget",props:{multiple:{type:Boolean,default:!1},name:{type:String,required:!0},slim:{type:Boolean,default:!1},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},data:function(){return{transports:v.transports,firstRender:!0}},created:function(){var t=this;this.$nextTick((function(){v.registerTarget(t.name,t)}))},watch:{ownTransports:function(){this.$emit("change",this.children().length>0)},name:function(t,e){v.unregisterTarget(e),v.registerTarget(t,this)}},mounted:function(){var t=this;this.transition&&this.$nextTick((function(){t.firstRender=!1}))},beforeDestroy:function(){v.unregisterTarget(this.name)},computed:{ownTransports:function(){var t=this.transports[this.name]||[];return this.multiple?t:0===t.length?[]:[t[t.length-1]]},passengers:function(){return d(this.ownTransports,this.slotProps)}},methods:{children:function(){return 0!==this.passengers.length?this.passengers:this.$scopedSlots.default?this.$scopedSlots.default(this.slotProps):this.$slots.default||[]},noWrapper:function(){var t=this.slim&&!this.transition;return t&&this.children().length>1&&console.warn("[portal-vue]: PortalTarget with `slim` option received more than one child element."),t}},render:function(t){var e=this.noWrapper(),n=this.children(),s=this.transition||this.tag;return e?n[0]:this.slim&&!s?t():t(s,{props:{tag:this.transition&&this.tag?this.tag:void 0},class:{"vue-portal-target":!0}},n)}}),C=0,$=["disabled","name","order","slim","slotProps","tag","to"],k=["multiple","transition"],x=r.extend({name:"MountingPortal",inheritAttrs:!1,props:{append:{type:[Boolean,String]},bail:{type:Boolean},mountTo:{type:String,required:!0},disabled:{type:Boolean},name:{type:String,default:function(){return"mounted_"+String(C++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}},multiple:{type:Boolean,default:!1},targetSlim:{type:Boolean},targetSlotProps:{type:Object,default:function(){return{}}},targetTag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},created:function(){if("undefined"!==typeof document){var t=document.querySelector(this.mountTo);if(t){var e=this.$props;if(v.targets[e.name])e.bail?console.warn("[portal-vue]: Target ".concat(e.name," is already mounted.\n Aborting because 'bail: true' is set")):this.portalTarget=v.targets[e.name];else{var n=e.append;if(n){var s="string"===typeof n?n:"DIV",r=document.createElement(s);t.appendChild(r),t=r}var o=p(this.$props,k);o.slim=this.targetSlim,o.tag=this.targetTag,o.slotProps=this.targetSlotProps,o.name=this.to,this.portalTarget=new w({el:t,parent:this.$parent||this,propsData:o})}}else console.error("[portal-vue]: Mount Point '".concat(this.mountTo,"' not found in document"))}},beforeDestroy:function(){var t=this.portalTarget;if(this.append){var e=t.$el;e.parentNode.removeChild(e)}t.$destroy()},render:function(t){if(!this.portalTarget)return console.warn("[portal-vue] Target wasn't mounted"),t();if(!this.$scopedSlots.manual){var e=p(this.$props,$);return t(S,{props:e,attrs:this.$attrs,on:this.$listeners,scopedSlots:this.$scopedSlots},this.$slots.default)}var n=this.$scopedSlots.manual({to:this.to});return Array.isArray(n)&&(n=n[0]),n||t()}});function I(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.component(e.portalName||"Portal",S),t.component(e.portalTargetName||"PortalTarget",w),t.component(e.MountingPortalName||"MountingPortal",x)}var F={install:I};e.h_=S,e.YC=w},8571:function(t,e){e["Z"]={state:{codeColors:null},reset(){this.state.codeColors=null},updateCodeColors(t){const e=t=>t?`rgba(${t.red}, ${t.green}, ${t.blue}, ${t.alpha})`:null;this.state.codeColors=Object.entries(t).reduce(((t,[n,s])=>({...t,[n]:e(s)})),{})}}},114:function(t,e,n){function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,{Z:function(){return o}});var r=n(7486);class o{constructor(t){s(this,"focusContainer",null),s(this,"tabTargets",[]),s(this,"firstTabTarget",null),s(this,"lastTabTarget",null),s(this,"lastFocusedElement",null),this.focusContainer=t,this.onFocus=this.onFocus.bind(this)}updateFocusContainer(t){this.focusContainer=t}start(){this.collectTabTargets(),this.firstTabTarget?this.focusContainer.contains(document.activeElement)&&r.ZP.isTabbableElement(document.activeElement)||this.firstTabTarget.focus():console.warn("There are no focusable elements. FocusTrap needs at least one."),this.lastFocusedElement=document.activeElement,document.addEventListener("focus",this.onFocus,!0)}stop(){document.removeEventListener("focus",this.onFocus,!0)}collectTabTargets(){this.tabTargets=r.ZP.getTabbableElements(this.focusContainer),this.firstTabTarget=this.tabTargets[0],this.lastTabTarget=this.tabTargets[this.tabTargets.length-1]}onFocus(t){if(this.focusContainer.contains(t.target))this.lastFocusedElement=t.target;else{if(t.preventDefault(),this.collectTabTargets(),this.lastFocusedElement===this.lastTabTarget||!this.lastFocusedElement||!document.contains(this.lastFocusedElement))return this.firstTabTarget.focus(),void(this.lastFocusedElement=this.firstTabTarget);this.lastFocusedElement===this.firstTabTarget&&(this.lastTabTarget.focus(),this.lastFocusedElement=this.lastTabTarget)}}destroy(){this.stop(),this.focusContainer=null,this.tabTargets=[],this.firstTabTarget=null,this.lastTabTarget=null,this.lastFocusedElement=null}}}}]); \ No newline at end of file diff --git a/docs/js/documentation-topic.09a6ef86.js b/docs/js/documentation-topic.09a6ef86.js new file mode 100644 index 0000000..1a4480f --- /dev/null +++ b/docs/js/documentation-topic.09a6ef86.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[982,989],{7181:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var i=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"inline-close-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-close"}},[t("path",{attrs:{d:"M11.91 1l1.090 1.090-4.917 4.915 4.906 4.905-1.090 1.090-4.906-4.905-4.892 4.894-1.090-1.090 4.892-4.894-4.903-4.904 1.090-1.090 4.903 4.904z"}})])},a=[],s=n(9742),r={name:"InlineCloseIcon",components:{SVGIcon:s.Z}},o=r,l=n(1001),c=(0,l.Z)(o,i,a,!1,null,null,null),d=c.exports},9732:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var i,a,s={name:"TransitionExpand",functional:!0,render(e,t){const n={props:{name:"expand"},on:{afterEnter(e){e.style.height="auto"},enter(e){const{width:t}=getComputedStyle(e);e.style.width=t,e.style.position="absolute",e.style.visibility="hidden",e.style.height="auto";const{height:n}=getComputedStyle(e);e.style.width=null,e.style.position=null,e.style.visibility=null,e.style.height=0,getComputedStyle(e).height,requestAnimationFrame((()=>{e.style.height=n}))},leave(e){const{height:t}=getComputedStyle(e);e.style.height=t,getComputedStyle(e).height,requestAnimationFrame((()=>{e.style.height=0}))}}};return e("transition",n,t.children)}},r=s,o=n(1001),l=(0,o.Z)(r,i,a,!1,null,null,null),c=l.exports},5073:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return vh}});var i=function(){var e=this,t=e._self._c;return t("CodeTheme",[e.topicData?t("DocumentationLayout",e._b({scopedSlots:e._u([{key:"nav-title",fn:function({className:n}){return[t(e.rootLink?"router-link":"h2",{tag:"component",class:n,attrs:{to:e.rootLink}},[e._v(" "+e._s(e.$t("documentation.title"))+" ")])]}},{key:"content",fn:function(){return[t("Topic",e._b({key:e.topicKey,attrs:{disableHeroBackground:e.disableHeroBackground,objcPath:e.objcPath,swiftPath:e.swiftPath,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,languagePaths:e.languagePaths,enableOnThisPageNav:e.enableOnThisPageNav,enableMinimized:e.enableMinimized,hierarchyItems:e.hierarchyItems}},"Topic",e.topicProps,!1))]},proxy:!0}],null,!1,402783128)},"DocumentationLayout",e.documentationLayoutProps,!1)):e._e()],1)},a=[];const s="/";function r(e){return e.replace(/~[0,1]/g,(e=>({"~0":"~","~1":"/"}[e]||e)))}function*o(e){const t=1;if(e.lengtht)throw new Error(`invalid array index ${e}`);return n}function*p(e,t,n={strict:!1}){let i=e;for(const a of o(t)){if(n.strict&&!Object.prototype.hasOwnProperty.call(i,a))throw new u(t);i=i[a],yield{node:i,token:a}}}function g(e,t){let n=e;for(const{node:i}of p(e,t,{strict:!0}))n=i;return n}function f(e,t,n){let i=null,a=e,s=null;for(const{node:o,token:l}of p(e,t))i=a,a=o,s=l;if(!i)throw new u(t);if(Array.isArray(i))try{const e=h(s,i);i.splice(e,0,n)}catch(r){throw new u(t)}else Object.assign(i,{[s]:n});return e}function m(e,t){let n=null,i=e,a=null;for(const{node:r,token:o}of p(e,t))n=i,i=r,a=o;if(!n)throw new u(t);if(Array.isArray(n))try{const e=h(a,n);n.splice(e,1)}catch(s){throw new u(t)}else{if(!i)throw new u(t);delete n[a]}return e}function y(e,t,n){return m(e,t),f(e,t,n),e}function v(e,t,n){const i=g(e,t);return m(e,t),f(e,n,i),e}function b(e,t,n){return f(e,n,g(e,t)),e}function T(e,t,n){function i(e,t){const n=typeof e,a=typeof t;if(n!==a)return!1;switch(n){case d:{const n=Object.keys(e),a=Object.keys(t);return n.length===a.length&&n.every(((n,s)=>n===a[s]&&i(e[n],t[n])))}default:return e===t}}const a=g(e,t);if(!i(n,a))throw new Error("test failed");return e}const _={add:(e,{path:t,value:n})=>f(e,t,n),copy:(e,{from:t,path:n})=>b(e,t,n),move:(e,{from:t,path:n})=>v(e,t,n),remove:(e,{path:t})=>m(e,t),replace:(e,{path:t,value:n})=>y(e,t,n),test:(e,{path:t,value:n})=>T(e,t,n)};function S(e,{op:t,...n}){const i=_[t];if(!i)throw new Error("unknown operation");return i(e,n)}function k(e,t){return t.reduce(S,e)}var C=n(7192),w=n(9089),x=n(8841),I=function(){var e=this,t=e._self._c;return t("div",{staticClass:"doc-topic",class:{"with-on-this-page":e.enableOnThisPageNav&&e.isOnThisPageNavVisible}},[t(e.isTargetIDE?"div":"main",{tag:"component",staticClass:"main",attrs:{id:"app-main"}},[t("DocumentationHero",{attrs:{role:e.role,enhanceBackground:e.enhanceBackground,enableMinimized:e.enableMinimized,shortHero:e.shortHero,shouldShowLanguageSwitcher:e.shouldShowLanguageSwitcher,iconOverride:e.references[e.pageIcon],standardColorIdentifier:e.standardColorIdentifier},scopedSlots:e._u([{key:"above-content",fn:function(){return[e._t("above-hero-content")]},proxy:!0}],null,!0)},[e._t("above-title"),!e.parentTopics.length||e.enableMinimized||e.isTargetIDE?e._e():t("Hierarchy",{attrs:{currentTopicTitle:e.title,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,parentTopics:e.parentTopics,currentTopicTags:e.tags}}),e.shouldShowLanguageSwitcher?t("LanguageSwitcher",{attrs:{interfaceLanguage:e.interfaceLanguage,objcPath:e.objcPath,swiftPath:e.swiftPath}}):e._e(),t("Title",{class:{"minimized-title":e.enableMinimized},attrs:{eyebrow:e.enableMinimized?null:e.roleHeading},scopedSlots:e._u([e.isSymbolDeprecated||e.isSymbolBeta?{key:"after",fn:function(){return[t("small",{class:e.tagName,attrs:{"data-tag-name":e.tagName}})]},proxy:!0}:null],null,!0)},[t(e.titleBreakComponent,{tag:"component"},[e._v(e._s(e.title))])],1),e.abstract?t("Abstract",{class:{"minimized-abstract":e.enableMinimized},attrs:{content:e.abstract}}):e._e(),e.sampleCodeDownload?t("div",[t("DownloadButton",{staticClass:"sample-download",attrs:{action:e.sampleCodeDownload.action}})],1):e._e(),e.shouldShowAvailability?t("Availability",{attrs:{platforms:e.platforms,technologies:e.technologies}}):e._e(),e.declarations.length?t("div",{staticClass:"declarations-container",class:{"minimized-container":e.enableMinimized}},e._l(e.declarations,(function(n,i){return t("Declaration",{key:i,attrs:{conformance:e.conformance,declarations:n.declarations,source:e.remoteSource,declListExpanded:e.declListExpanded},on:{"update:declListExpanded":function(t){e.declListExpanded=t},"update:decl-list-expanded":function(t){e.declListExpanded=t}}})})),1):e._e()],2),t("div",{staticClass:"doc-content-wrapper"},[t("div",{staticClass:"doc-content",class:{"no-primary-content":!e.hasPrimaryContent&&e.enhanceBackground}},[e.hasPrimaryContent||e.showOtherDeclarations?t("div",{class:["container",{"minimized-container":e.enableMinimized}]},[e.declListExpanded?e._e():t("div",{staticClass:"description",class:{"after-enhanced-hero":e.enhanceBackground}},[e.isRequirement?t("RequirementMetadata",{attrs:{defaultImplementationsCount:e.defaultImplementationsCount}}):e._e(),e.deprecationSummary&&e.deprecationSummary.length?t("Aside",{attrs:{kind:"deprecated"}},[t("ContentNode",{attrs:{content:e.deprecationSummary}})],1):e._e(),e.downloadNotAvailableSummary&&e.downloadNotAvailableSummary.length?t("Aside",{attrs:{kind:"note"}},[t("ContentNode",{attrs:{content:e.downloadNotAvailableSummary}})],1):e._e()],1),e.showOtherDeclarations?t("div",{staticClass:"declaration-list-menu"},[t("button",{staticClass:"declaration-list-toggle",on:{click:e.toggleDeclList}},[e._v(" "+e._s(e.declListToggleText)+" "),t("div",{staticClass:"icon"},[t("InlinePlusCircleIcon",{class:{expand:e.declListExpanded}})],1)])]):e._e(),e.primaryContentSectionsSanitized&&e.primaryContentSectionsSanitized.length?t("PrimaryContent",{class:{"with-border":!e.enhanceBackground},attrs:{conformance:e.conformance,source:e.remoteSource,sections:e.primaryContentSectionsSanitized}}):e._e()],1):e._e(),e.shouldRenderTopicSection?t("Topics",{attrs:{sections:e.topicSections,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,topicStyle:e.topicSectionsStyle}}):e._e(),e.defaultImplementationsSections&&!e.enableMinimized?t("DefaultImplementations",{attrs:{sections:e.defaultImplementationsSections,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta}}):e._e(),e.relationshipsSections?t("Relationships",{attrs:{sections:e.relationshipsSections,enableMinimized:e.enableMinimized}}):e._e(),e.seeAlsoSections&&!e.enableMinimized?t("SeeAlso",{attrs:{sections:e.seeAlsoSections}}):e._e(),e.shouldShowViewMoreLink?t("ViewMore",{staticClass:"minimized-container",attrs:{url:e.viewMoreLink}}):e._e()],1),e.enableOnThisPageNav?[t("OnThisPageStickyContainer",{directives:[{name:"show",rawName:"v-show",value:e.isOnThisPageNavVisible,expression:"isOnThisPageNavVisible"}]},[e.topicState.onThisPageSections.length>2?t("OnThisPageNav"):e._e()],1)]:e._e()],2),!e.isTargetIDE&&e.hasBetaContent?t("BetaLegalText"):e._e()],1),t("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"polite"}},[e._v(" "+e._s(e.$t("documentation.current-page",{title:e.pageTitle}))+" ")])],1)},$=[],D=n(3078),P={class:"class",enum:"enum",protocol:"protocol",struct:"struct",uid:"uid",module:"module"},L=n(2974),O=n(2449),A=n(5947),N=n(5654),R=n(4030),B=n(7587),E=function(){var e=this,t=e._self._c;return t("div",{staticClass:"betainfo"},[t("div",{staticClass:"betainfo-container"},[t("GridRow",[t("GridColumn",{attrs:{span:{large:12}}},[t("p",{staticClass:"betainfo-label"},[e._v(e._s(e.$t("metadata.beta.software")))]),t("div",{staticClass:"betainfo-content"},[e._t("content",(function(){return[t("p",[e._v(e._s(e.$t("metadata.beta.legal")))])]}))],2),e._t("after")],2)],1)],1)])},M=[],z=n(9649),K=n(1576),Z={name:"BetaLegalText",components:{GridColumn:K.Z,GridRow:z.Z}},q=Z,j=n(1001),F=(0,j.Z)(q,E,M,!1,null,"ba3b3cc0",null),H=F.exports,V=function(){var e=this,t=e._self._c;return t("Section",{staticClass:"language",attrs:{role:"complementary","aria-label":e.$t("language")}},[t("Title",[e._v(e._s(e.$t("formats.colon",{content:e.$t("language")})))]),t("div",{staticClass:"language-list"},[t("LanguageSwitcherLink",{staticClass:"language-option swift",class:{active:e.swift.active},attrs:{url:e.swift.active?null:e.swift.url},on:{click:function(t){return e.chooseLanguage(e.swift)}}},[e._v(" "+e._s(e.swift.name)+" ")]),t("LanguageSwitcherLink",{staticClass:"language-option objc",class:{active:e.objc.active},attrs:{url:e.objc.active?null:e.objc.url},on:{click:function(t){return e.chooseLanguage(e.objc)}}},[e._v(" "+e._s(e.objc.name)+" ")])],1)],1)},W=[],U=function(){var e=this,t=e._self._c;return e.url?t("a",{attrs:{href:e.url},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[e._t("default")],2):t("span",[e._t("default")],2)},Q=[],G={name:"LanguageSwitcherLink",props:{url:[String,Object]}},X=G,Y=(0,j.Z)(X,U,Q,!1,null,"2ca5e993",null),J=Y.exports,ee=function(){var e=this,t=e._self._c;return t("div",{staticClass:"summary-section"},[e._t("default")],2)},te=[],ne={name:"Section"},ie=ne,ae=(0,j.Z)(ie,ee,te,!1,null,"3aa6f694",null),se=ae.exports,re=function(){var e=this,t=e._self._c;return t("p",{staticClass:"title"},[e._t("default")],2)},oe=[],le={name:"Title"},ce=le,de=(0,j.Z)(ce,re,oe,!1,null,"246c819c",null),ue=de.exports,he={name:"LanguageSwitcher",components:{LanguageSwitcherLink:J,Section:se,Title:ue},inject:{isTargetIDE:{default:()=>!1},store:{default(){return{setPreferredLanguage(){}}}}},props:{interfaceLanguage:{type:String,required:!0},objcPath:{type:String,required:!0},swiftPath:{type:String,required:!0}},computed:{objc:({interfaceLanguage:e,objcPath:t,$route:{query:n}})=>({...D.Z.objectiveC,active:D.Z.objectiveC.key.api===e,url:(0,O.Q2)((0,A.Jf)(t),{...n,language:D.Z.objectiveC.key.url})}),swift:({interfaceLanguage:e,swiftPath:t,$route:{query:n}})=>({...D.Z.swift,active:D.Z.swift.key.api===e,url:(0,O.Q2)((0,A.Jf)(t),{...n,language:void 0})})},methods:{chooseLanguage(e){this.isTargetIDE||this.store.setPreferredLanguage(e.key.url),this.$router.push(e.url)}}},pe=he,ge=(0,j.Z)(pe,V,W,!1,null,"0e39c0ba",null),fe=ge.exports,me=function(){var e=this,t=e._self._c;return t("div",{staticClass:"view-more-link"},[t("router-link",{staticClass:"base-link",attrs:{to:e.url}},[e._t("default",(function(){return[e._v(e._s(e.$t("documentation.view-more")))]}))],2)],1)},ye=[],ve={name:"ViewMore",props:{url:{type:String,required:!0}}},be=ve,Te=(0,j.Z)(be,me,ye,!1,null,"3f54e653",null),_e=Te.exports,Se=function(){var e=this,t=e._self._c;return t("div",{class:["documentation-hero",{"documentation-hero--disabled":!e.enhanceBackground}],style:e.styles},[t("div",{staticClass:"icon"},[e.enhanceBackground?t("TopicTypeIcon",{key:"first",staticClass:"background-icon first-icon",attrs:{type:e.type,"image-override":e.iconOverride,"with-colors":""}}):e._e()],1),t("div",{staticClass:"documentation-hero__above-content"},[e._t("above-content")],2),t("div",{staticClass:"documentation-hero__content",class:{"short-hero":e.shortHero,"extra-bottom-padding":e.shouldShowLanguageSwitcher,"minimized-hero":e.enableMinimized}},[e._t("default")],2)])},ke=[],Ce=n(5921),we=n(5629),xe=n(1869);const Ie={red:"red",orange:"orange",yellow:"yellow",blue:"blue",green:"green",purple:"purple",gray:"gray"};var $e={name:"DocumentationHero",components:{TopicTypeIcon:Ce.Z},props:{role:{type:String,required:!0},enhanceBackground:{type:Boolean,required:!0},enableMinimized:{type:Boolean,default:!1},shortHero:{type:Boolean,required:!0},shouldShowLanguageSwitcher:{type:Boolean,required:!0},iconOverride:{type:Object,required:!1},standardColorIdentifier:{type:String,required:!1,validator:e=>Object.prototype.hasOwnProperty.call(Ie,e)}},computed:{color:({type:e})=>xe.g[we.$[e]||e]||xe.c.teal,styles:({color:e,standardColorIdentifier:t})=>({"--accent-color":`var(--color-documentation-intro-accent, var(--color-type-icon-${e}))`,"--standard-accent-color":t&&`var(--color-standard-${t}-documentation-intro-fill, var(--color-standard-${t}))`}),type:({role:e})=>{switch(e){case C.L.collection:return we.t.module;case C.L.collectionGroup:return we.t.collection;default:return e}}}},De=$e,Pe=(0,j.Z)(De,Se,ke,!1,null,"283b44ff",null),Le=Pe.exports,Oe=n(352),Ae=n(3946),Ne=function(){var e=this,t=e._self._c;return t("div",{staticClass:"OnThisPageNav"},[t("ul",{staticClass:"items"},e._l(e.onThisPageSections,(function(n){return t("li",{key:n.anchor,class:e.getItemClasses(n)},[t("router-link",{staticClass:"base-link",attrs:{to:n.url},nativeOn:{click:function(t){return e.handleFocusAndScroll(n.anchor)}}},[t(e.getWrapperComponent(n),{tag:"component"},[e._v(" "+e._s(e.getTextContent(n))+" ")])],1)],1)})),0)])},Re=[];function Be(e,t){let n,i;return function(...a){const s=this;if(!i)return e.apply(s,a),void(i=Date.now());clearTimeout(n),n=setTimeout((()=>{Date.now()-i>=t&&(e.apply(s,a),i=Date.now())}),t-(Date.now()-i))}}var Ee=n(5657),Me=n(3704),ze={name:"OnThisPageNav",components:{WordBreak:Oe.Z},mixins:[Me.Z],inject:{store:{default(){return{state:{onThisPageSections:[],currentPageAnchor:null}}}}},computed:{onThisPageSections:({store:e,$route:t})=>e.state.onThisPageSections.map((e=>({...e,url:(0,O.Q2)(`#${e.anchor}`,t.query)}))),currentPageAnchor:({store:e})=>e.state.currentPageAnchor},async mounted(){window.addEventListener("scroll",this.onScroll,!1),this.$once("hook:beforeDestroy",(()=>{window.removeEventListener("scroll",this.onScroll)}))},watch:{onThisPageSections:{immediate:!0,async handler(){await(0,Ee.J)(8),this.onScroll()}}},methods:{onScroll:Be((function(){const e=this.onThisPageSections.length;if(!e)return;const{scrollY:t,innerHeight:n}=window,{scrollHeight:i}=document.body,a=t+n>=i,s=t<=0,r=.3*n+t;if(s||a){const t=s?0:e-1;return void this.store.setCurrentPageSection(this.onThisPageSections[t].anchor)}let o,l,c=null;for(o=0;ot.concat(n).concat(e),space:()=>({type:Ue.Z.InlineType.text,text:" "})}},Ge=Qe,Xe=(0,j.Z)(Ge,Ve,We,!1,null,"4c6f3ed1",null),Ye=Xe.exports,Je=function(){var e=this,t=e._self._c;return t("div",{staticClass:"declaration-list"},e._l(e.declarationTokens,(function(n){return t("transition-expand",{key:n.identifier},[!e.hasOtherDeclarations||n.identifier===e.selectedIdentifier||e.isExpanded?t("div",{staticClass:"declaration-pill",class:{"declaration-pill--expanded":e.hasOtherDeclarations&&e.isExpanded,[e.changeClasses]:e.changeType&&n.identifier===e.selectedIdentifier,"selected-declaration":e.isSelectedDeclaration(n.identifier)}},[t(e.getWrapperComponent(n),{tag:"component",staticClass:"declaration-group-wrapper",on:{click:function(t){return e.selectDeclaration(n.identifier)}}},[t("DeclarationGroup",e._b({},"DeclarationGroup",e.getDeclProp(n),!1))],1)],1):e._e()])})),1)},et=[],tt=function(){var e=this,t=e._self._c;return t("div",{ref:"apiChangesDiff",staticClass:"declaration-group",class:e.classes},[e.shouldCaption?t("p",{staticClass:"platforms"},[t("strong",[e._v(e._s(e.caption))])]):e._e(),t("Source",{attrs:{tokens:e.declaration.tokens,language:e.interfaceLanguage}})],1)},nt=[],it=function(){var e=this,t=e._self._c;return t("pre",{ref:"declarationGroup",staticClass:"source",class:{[e.multipleLinesClass]:e.displaysMultipleLines,"has-multiple-lines":e.hasMultipleLines}},[t("CodeBlock",{ref:"code"},e._l(e.formattedTokens,(function(n,i){return t("Token",e._b({key:i,class:e.extraClassesFor(n)},"Token",e.propsFor(n),!1))})),1)],1)},at=[];const st={instance:"-",klass:"+"};function rt(e){const t=e.textContent??"";if(!t.startsWith(st.instance)&&!t.startsWith(st.klass))return;const n=e.getElementsByClassName("token-identifier");if(n.length<2)return;const i=e.textContent.indexOf(":")+1;for(let a=1;a(0,w.$8)(["theme","code","indentationWidth"],pt),formattedTokens:({language:e,formattedSwiftTokens:t,tokens:n})=>e===D.Z.swift.key.api?t:n,formattedSwiftTokens:({indentationWidth:e,tokens:t})=>{const n=" ".repeat(e);let i=!1;const a=[];let s=0,r=null,o=null,l=null,c=null,d=0,u=null;while(se===ht.attribute||e===ht.externalParam;e.text&&e.text.endsWith(", ")&&g&&f(g)&&(h.text=`${e.text.trimEnd()}\n${n}`,i=!0),a.push(h),s+=1}if(i&&null!==r){const e=a[r].text;a[r].text=`${e}\n${n}`}if(i&&null!==l){const e=a[l].text,t=e.slice(0,c),n=e.slice(c),i=`${t}\n${n}`;a[l].text=i}return a},hasMultipleLines({formattedTokens:e}){return e.reduce(((t,n,i)=>{let a=/\n/g;return i===e.length-1&&(a=/\n(?!$)/g),n.text?t+(n.text.match(a)||[]).length:t}),1)>=2}},methods:{propsFor(e){return{kind:e.kind,identifier:e.identifier,text:e.text,tokens:e.tokens}},handleWindowResize(){this.displaysMultipleLines=(0,lt.s)(this.$refs.declarationGroup)},extraClassesFor(e){return{highlighted:e.highlight===gt.changed}}},async mounted(){window.addEventListener("resize",this.handleWindowResize),this.language===D.Z.objectiveC.key.api&&(await this.$nextTick(),ot(this.$refs.code.$el,this.language)),this.handleWindowResize()},beforeDestroy(){window.removeEventListener("resize",this.handleWindowResize)}},mt=ft,yt=(0,j.Z)(mt,it,at,!1,null,"dc9cfb3a",null),vt=yt.exports,bt=n(1842),Tt={name:"DeclarationGroup",components:{Source:vt},mixins:[bt.PH],inject:{languages:{default:()=>new Set},interfaceLanguage:{default:()=>D.Z.swift.key.api},symbolKind:{default:()=>{}}},props:{declaration:{type:Object,required:!0},shouldCaption:{type:Boolean,default:!1},changeType:{type:String,required:!1}},computed:{classes:({changeType:e,multipleLinesClass:t,displaysMultipleLinesAfterAPIChanges:n})=>({[`declaration-group--changed declaration-group--${e}`]:e,[t]:n}),caption(){return this.declaration.platforms.join(", ")}}},_t=Tt,St=(0,j.Z)(_t,tt,nt,!1,null,"f961f3da",null),kt=St.exports,Ct=n(9732),wt={name:"DeclarationList",components:{DeclarationGroup:kt,TransitionExpand:Ct.Z},data(){return{selectedIdentifier:this.identifier}},inject:{store:{default:()=>({state:{references:{}}})},identifier:{default:()=>{}}},props:{declaration:{type:Object,required:!0},shouldCaption:{type:Boolean,default:!1},changeType:{type:String,required:!1},declListExpanded:{type:Boolean,default:!1}},computed:{changeClasses:({changeType:e})=>`changed changed-${e}`,hasOtherDeclarations:({declaration:e})=>e.otherDeclarations||null,declarationTokens:({declaration:e,hasOtherDeclarations:t,identifier:n})=>{if(!t)return[{...e,identifier:n}];const{otherDeclarations:{declarations:i,displayIndex:a},tokens:s}=e;return[...i.slice(0,a),{tokens:s,identifier:n},...i.slice(a)]},references:({store:e})=>e.state.references,isExpanded:{get:({declListExpanded:e})=>e,set(e){this.$emit("update:declListExpanded",e)}}},methods:{async selectDeclaration(e){if(e===this.identifier||!this.isExpanded)return;this.selectedIdentifier=e,await this.$nextTick(),this.isExpanded=!1,await(0,Ee.X)(500);const t=(0,O.Q2)(this.references[e].url,this.$route.query);this.$router.push(t)},getWrapperComponent(e){return this.isExpanded&&e.identifier!==this.identifier?"button":"div"},getDeclProp(e){return this.hasOtherDeclarations&&e.identifier!==this.identifier?{declaration:e}:{declaration:e,shouldCaption:this.shouldCaption,changeType:this.changeType}},isSelectedDeclaration(e){return e===this.selectedIdentifier}}},xt=wt,It=(0,j.Z)(xt,Je,et,!1,null,"18e7c20c",null),$t=It.exports,Dt=function(){var e=this,t=e._self._c;return t("div",{staticClass:"declaration-diff"},[t("div",{staticClass:"declaration-diff-current"},[t("div",{staticClass:"declaration-diff-version"},[e._v("Current")]),e._l(e.currentDeclarations,(function(n,i){return t("DeclarationList",{key:i,attrs:{declaration:n,"should-caption":e.currentDeclarations.length>1}})}))],2),t("div",{staticClass:"declaration-diff-previous"},[t("div",{staticClass:"declaration-diff-version"},[e._v("Previous")]),e._l(e.previousDeclarations,(function(n,i){return t("DeclarationList",{key:i,attrs:{declaration:n,"should-caption":e.previousDeclarations.length>1}})}))],2)])},Pt=[],Lt={name:"DeclarationDiff",components:{DeclarationList:$t},props:{changes:{type:Object,required:!0}},computed:{previousDeclarations:({changes:e})=>e.declaration.previous||[],currentDeclarations:({changes:e})=>e.declaration.new||[]}},Ot=Lt,At=(0,j.Z)(Ot,Dt,Pt,!1,null,"0c2301a5",null),Nt=At.exports,Rt=function(){var e=this,t=e._self._c;return t("a",{staticClass:"declaration-source-link",attrs:{href:e.url,title:`Open source file for ${e.fileName}`,target:"_blank"}},[e.isSwiftFile?t("SwiftFileIcon",{staticClass:"declaration-icon"}):e._e(),t("WordBreak",[e._v(e._s(e.fileName))])],1)},Bt=[],Et=n(7834),Mt={name:"DeclarationSourceLink",components:{WordBreak:Oe.Z,SwiftFileIcon:Et.Z},props:{url:{type:String,required:!0},fileName:{type:String,required:!0}},computed:{isSwiftFile:({fileName:e})=>e.endsWith(".swift")}},zt=Mt,Kt=(0,j.Z)(zt,Rt,Bt,!1,null,"5863919c",null),Zt=Kt.exports,qt=n(9426),jt={name:"Declaration",components:{DeclarationDiff:Nt,DeclarationList:$t,DeclarationSourceLink:Zt,ConditionalConstraints:Ye},constants:{ChangeTypes:qt.yf,multipleLinesClass:ct._},inject:["identifier","store"],data:({store:{state:e}})=>({state:e,multipleLinesClass:ct._}),props:{conformance:{type:Object,required:!1},source:{type:Object,required:!1},declarations:{type:Array,required:!0},declListExpanded:{type:Boolean,default:!1}},computed:{hasPlatformVariants:({declarations:e})=>!e.every((({platforms:t})=>(0,N.Xy)(t,e[0].platforms))),hasModifiedChanges({declarationChanges:e}){if(!e||!e.declaration)return!1;const t=e.declaration;return!(!(t.new||[]).length||!(t.previous||[]).length)},declarationChanges:({state:{apiChanges:e},identifier:t})=>e&&e[t],changeType:({declarationChanges:e,hasModifiedChanges:t})=>{if(!e)return;const n=e.declaration;return n?t?qt.yf.modified:e.change:e.change===qt.yf.added?qt.yf.added:void 0},changeClasses:({changeType:e})=>({[`changed changed-${e}`]:e}),isExpanded:{get:({declListExpanded:e})=>e,set(e){this.$emit("update:declListExpanded",e)}}}},Ft=jt,Ht=(0,j.Z)(Ft,Fe,He,!1,null,"722d45cf",null),Vt=Ht.exports,Wt=n(6772),Ut=function(){var e=this,t=e._self._c;return t("ContentNode",e._b({staticClass:"abstract"},"ContentNode",e.$props,!1))},Qt=[],Gt={name:"Abstract",components:{ContentNode:Ue.Z},props:Ue.Z.props},Xt=Gt,Yt=(0,j.Z)(Xt,Ut,Qt,!1,null,"f3f57cbe",null),Jt=Yt.exports,en=n(7605),tn=function(){var e=this,t=e._self._c;return t("TopicsTable",{attrs:{anchor:e.contentSectionData.anchor,title:e.$t(e.contentSectionData.title),isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,sections:e.sections,wrapTitle:!0}})},nn=[];const an={topics:{title:"sections.topics",anchor:"topics",level:2},defaultImplementations:{title:"sections.default-implementations",anchor:"default-implementations",level:2},relationships:{title:"sections.relationships",anchor:"relationships",level:2},seeAlso:{title:"sections.see-also",anchor:"see-also",level:2}},sn={[je.attributes]:{title:"sections.attributes",anchor:"attributes",level:2},[je.details]:{title:"sections.details",anchor:"details",level:2},[je.parameters]:{title:"sections.parameters",anchor:"parameters",level:2},[je.possibleValues]:{title:"sections.possible-values",anchor:"possibleValues",level:2}};var rn=function(){var e=this,t=e._self._c;return t("ContentTable",{attrs:{anchor:e.anchor,title:e.title}},e._l(e.sectionsWithTopics,(function(n,i){return t("ContentTableSection",{key:`${n.title}_${i}`,class:{"no-title":!n.title},attrs:{title:n.title,anchor:n.anchor},scopedSlots:e._u([n.title&&e.wrapTitle?{key:"title",fn:function({className:i}){return[t("LinkableHeading",{class:i,attrs:{level:3,anchor:n.anchor}},[t("WordBreak",[e._v(e._s(n.title))])],1)]}}:null,n.abstract?{key:"abstract",fn:function(){return[t("ContentNode",{attrs:{content:n.abstract}})]},proxy:!0}:null,n.discussion?{key:"discussion",fn:function(){return[t("ContentNode",{attrs:{content:n.discussion.content}})]},proxy:!0}:null],null,!0)},[e.shouldRenderList?e._l(n.topics,(function(n){return t("TopicsLinkBlock",{key:n.identifier,staticClass:"topic",attrs:{topic:n,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta}})})):t("TopicsLinkCardGrid",{staticClass:"topic",attrs:{items:n.topics,topicStyle:e.topicStyle}})],2)})),1)},on=[],ln=n(1105),cn=n(8039),dn=n(5953),un=function(){var e=this,t=e._self._c;return t("section",{staticClass:"contenttable alt-light"},[t("div",{class:["container",{"minimized-container":e.enableMinimized}]},[t("LinkableHeading",{staticClass:"title",attrs:{anchor:e.anchor}},[e._v(e._s(e.title))]),e._t("default")],2)])},hn=[],pn={name:"ContentTable",components:{LinkableHeading:cn.Z},props:{anchor:{type:String,required:!0},title:{type:String,required:!0},enableMinimized:{type:Boolean,default:!1}}},gn=pn,fn=(0,j.Z)(gn,un,hn,!1,null,"0e6b292c",null),mn=fn.exports,yn=function(){var e=this,t=e._self._c;return t("div",{staticClass:"contenttable-section"},[t("div",{staticClass:"section-title"},[e._t("title",(function(){return[e.title?t("LinkableHeading",{class:e.className,attrs:{level:3,anchor:e.anchorComputed}},[e._v(e._s(e.title))]):e._e()]}),{className:e.className})],2),t("div",{staticClass:"section-content"},[e._t("abstract"),e._t("discussion"),e._t("default")],2)])},vn=[],bn=n(3208);const Tn="contenttable-title";var _n={name:"ContentTableSection",components:{LinkableHeading:cn.Z},props:{title:{type:String,required:!1},anchor:{type:String,default:null}},computed:{anchorComputed:({title:e,anchor:t})=>t||(0,bn.HA)(e||""),className:()=>Tn}},Sn=_n,kn=(0,j.Z)(Sn,yn,vn,!1,null,"1b0546d9",null),Cn=kn.exports,wn=n(8104),xn={name:"TopicsTable",mixins:[dn.Z],components:{TopicsLinkCardGrid:ln.Z,WordBreak:Oe.Z,ContentTable:mn,TopicsLinkBlock:wn["default"],ContentNode:Ue.Z,ContentTableSection:Cn,LinkableHeading:cn.Z},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:{type:Array,required:!0},title:{type:String,required:!1,default(){return"Topics"}},anchor:{type:String,required:!1,default(){return"topics"}},wrapTitle:{type:Boolean,default:!1},topicStyle:{type:String,default:Ae.o.list}},computed:{shouldRenderList:({topicStyle:e})=>e===Ae.o.list,sectionsWithTopics(){return this.sections.map((e=>({...e,topics:e.identifiers.reduce(((e,t)=>this.references[t]?e.concat(this.references[t]):e),[])})))}}},In=xn,$n=(0,j.Z)(In,rn,on,!1,null,"1c2724f5",null),Dn=$n.exports,Pn={name:"DefaultImplementations",components:{TopicsTable:Dn},computed:{contentSectionData:()=>an.defaultImplementations},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:Dn.props.sections}},Ln=Pn,On=(0,j.Z)(Ln,tn,nn,!1,null,null,null),An=On.exports,Nn=function(){var e=this,t=e._self._c;return t("div",{staticClass:"primary-content"},e._l(e.sections,(function(n,i){return t(e.componentFor(n),e._b({key:i,tag:"component"},"component",e.propsFor(n),!1))})),1)},Rn=[],Bn=function(){var e=this,t=e._self._c;return t("section",{staticClass:"attributes"},[t("LinkableHeading",{attrs:{anchor:e.section.anchor,level:e.section.level}},[e._v(" "+e._s(e.$t(e.section.title))+" ")]),t("ParameterAttributes",{attrs:{attributes:e.attributes}})],1)},En=[],Mn=function(){var e=this,t=e._self._c;return t("div",{staticClass:"parameter-attributes"},[e.shouldRender(e.AttributeKind.default)?t("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function({attribute:n}){return[e._v(" "+e._s(e.$t("formats.colon",{content:n.title||e.$t("parameters.default")}))),t("code",[e._v(e._s(n.value))])]}}],null,!1,2998238055)},"ParameterMetaAttribute",{kind:e.AttributeKind.default,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.minimum)?t("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function({attribute:n}){return[e._v(" "+e._s(e.$t("formats.colon",{content:n.title||e.$t("parameters.minimum")}))),t("code",[e._v(e._s(n.value))])]}}],null,!1,859757818)},"ParameterMetaAttribute",{kind:e.AttributeKind.minimum,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.minimumExclusive)?t("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function({attribute:n}){return[e._v(" "+e._s(e.$t("formats.colon",{content:n.title||e.$t("parameters.minimum")}))),t("code",[e._v("> "+e._s(n.value))])]}}],null,!1,770347247)},"ParameterMetaAttribute",{kind:e.AttributeKind.minimumExclusive,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.maximum)?t("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function({attribute:n}){return[e._v(" "+e._s(e.$t("formats.colon",{content:n.title||e.$t("parameters.maximum")}))),t("code",[e._v(e._s(n.value))])]}}],null,!1,1190666532)},"ParameterMetaAttribute",{kind:e.AttributeKind.maximum,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.maximumExclusive)?t("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function({attribute:n}){return[e._v(" "+e._s(e.$t("formats.colon",{content:n.title||e.$t("parameters.maximum")}))),t("code",[e._v("< "+e._s(n.value))])]}}],null,!1,1156490099)},"ParameterMetaAttribute",{kind:e.AttributeKind.maximumExclusive,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.allowedTypes)?t("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function({attribute:n}){return[e._v(" "+e._s(e.$t("formats.colon",{content:e.$tc("parameters.possible-types",e.fallbackToValues(n).length)}))),t("code",[e._l(e.fallbackToValues(n),(function(i,a){return[e._l(i,(function(i,s){return[t("DeclarationToken",e._b({key:`${a}-${s}`},"DeclarationToken",i,!1)),a+1({new:null,previous:null})},value:{type:[Object,Array,String,Boolean],default:null},wrapChanges:{type:Boolean,default:!0},renderSingleChange:{type:Boolean,default:!1}},render(e){const{value:t,changes:n={},wrapChanges:i,renderSingleChange:a}=this,{new:s,previous:r}=n,o=(t,n)=>{const a=this.$scopedSlots.default({value:t});return n&&i?e("div",{class:n},[a]):a?a[0]:null};if(s||r){const t=o(s,qn.added),n=o(r,qn.removed);return a?s&&!r?t:n:e("div",{class:"property-changegroup"},[s?t:"",r?n:""])}return o(t)}},Vn=Hn,Wn=(0,j.Z)(Vn,jn,Fn,!1,null,null,null),Un=Wn.exports,Qn={name:"ParameterMetaAttribute",components:{RenderChanged:Un},props:{kind:{type:String,required:!0},attributes:{type:Object,required:!0},changes:{type:Object,default:()=>({})}}},Gn=Qn,Xn=(0,j.Z)(Gn,Kn,Zn,!1,null,"f911f232",null),Yn=Xn.exports;const Jn={allowedTypes:"allowedTypes",allowedValues:"allowedValues",default:"default",maximum:"maximum",maximumExclusive:"maximumExclusive",minimum:"minimum",minimumExclusive:"minimumExclusive"};var ei={name:"ParameterAttributes",components:{ParameterMetaAttribute:Yn,DeclarationToken:ut["default"]},constants:{AttributeKind:Jn},props:{attributes:{type:Array,default:()=>[]},changes:{type:Object,default:()=>({})}},computed:{AttributeKind:()=>Jn,attributesObject:({attributes:e})=>e.reduce(((e,t)=>({...e,[t.kind]:t})),{})},methods:{shouldRender(e){return Object.prototype.hasOwnProperty.call(this.attributesObject,e)},fallbackToValues:e=>{const t=e||[];return Array.isArray(t)?t:t.values}}},ti=ei,ni=(0,j.Z)(ti,Mn,zn,!1,null,null,null),ii=ni.exports,ai={name:"Attributes",components:{LinkableHeading:cn.Z,ParameterAttributes:ii},props:{attributes:{type:Array,required:!0}},computed:{section:({sectionKind:e})=>sn[e],sectionKind:()=>je.attributes}},si=ai,ri=(0,j.Z)(si,Bn,En,!1,null,"c0edcb84",null),oi=ri.exports,li=function(){var e=this,t=e._self._c;return t("section",[t("LinkableHeading",{attrs:{anchor:e.contentSectionData.anchor}},[e._v(" "+e._s(e.$t(e.contentSectionData.title))+" ")]),t("dl",{staticClass:"datalist"},[e._l(e.values,(function(n){return[t("dt",{key:`${n.name}:name`,staticClass:"param-name"},[t("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(n.name))])],1),n.content?t("dd",{key:`${n.name}:content`,staticClass:"value-content"},[t("ContentNode",{attrs:{content:n.content}})],1):e._e()]}))],2)],1)},ci=[],di=n(9519),ui={name:"PossibleValues",components:{ContentNode:di["default"],LinkableHeading:cn.Z,WordBreak:Oe.Z},props:{values:{type:Array,required:!0}},computed:{contentSectionData:()=>sn[je.possibleValues]}},hi=ui,pi=(0,j.Z)(hi,li,ci,!1,null,null,null),gi=pi.exports,fi=function(){var e=this,t=e._self._c;return t("section",[t("LinkableHeading",{attrs:{anchor:e.anchor}},[e._v(e._s(e.title))]),t("DeclarationSource",{attrs:{tokens:e.tokens}})],1)},mi=[],yi={name:"RestEndpoint",components:{DeclarationSource:vt,LinkableHeading:cn.Z},props:{title:{type:String,required:!0},tokens:{type:Array,required:!0}},computed:{anchor:({title:e})=>(0,bn.HA)(e)}},vi=yi,bi=(0,j.Z)(vi,fi,mi,!1,null,null,null),Ti=bi.exports,_i=function(){var e=this,t=e._self._c;return t("section",{staticClass:"details"},[t("LinkableHeading",{attrs:{anchor:e.contentSectionData.anchor}},[e._v(" "+e._s(e.$t(e.contentSectionData.title))+" ")]),t("dl",[e.isSymbol?[t("dt",{key:`${e.details.name}:name`,staticClass:"detail-type"},[e._v(" "+e._s(e.$t("metadata.details.name"))+" ")]),t("dd",{key:`${e.details.ideTitle}:content`,staticClass:"detail-content"},[e._v(" "+e._s(e.details.ideTitle)+" ")])]:e._e(),e.isTitle?[t("dt",{key:`${e.details.name}:key`,staticClass:"detail-type"},[e._v(" "+e._s(e.$t("metadata.details.key"))+" ")]),t("dd",{key:`${e.details.ideTitle}:content`,staticClass:"detail-content"},[e._v(" "+e._s(e.details.name)+" ")])]:e._e(),t("dt",{key:`${e.details.name}:type`,staticClass:"detail-type"},[e._v(" "+e._s(e.$t("metadata.details.type"))+" ")]),t("dd",{staticClass:"detail-content"},[t("PropertyListKeyType",{attrs:{types:e.details.value}})],1)],2)],1)},Si=[],ki=function(){var e=this,t=e._self._c;return t("div",{staticClass:"type"},[e._v(e._s(e.typeOutput))])},Ci=[],wi={name:"PropertyListKeyType",props:{types:{type:Array,required:!0}},computed:{englishTypes(){return this.types.map((({arrayMode:e,baseType:t="*"})=>e?`array of ${this.pluralizeKeyType(t)}`:t))},typeOutput(){return this.englishTypes.length>2?[this.englishTypes.slice(0,this.englishTypes.length-1).join(", "),this.englishTypes[this.englishTypes.length-1]].join(", or "):this.englishTypes.join(" or ")}},methods:{pluralizeKeyType(e){switch(e){case"dictionary":return"dictionaries";case"array":case"number":case"string":return`${e}s`;default:return e}}}},xi=wi,Ii=(0,j.Z)(xi,ki,Ci,!1,null,"791bac44",null),$i=Ii.exports,Di={name:"PropertyListKeyDetails",components:{PropertyListKeyType:$i,LinkableHeading:cn.Z},props:{details:{type:Object,required:!0}},computed:{contentSectionData:()=>sn[je.details],isTitle(){return"title"===this.details.titleStyle&&this.details.ideTitle},isSymbol(){return"symbol"===this.details.titleStyle&&this.details.ideTitle}}},Pi=Di,Li=(0,j.Z)(Pi,_i,Si,!1,null,"d66cd00c",null),Oi=Li.exports,Ai=function(){var e=this,t=e._self._c;return t("section",{staticClass:"parameters"},[t("LinkableHeading",{attrs:{anchor:e.contentSectionData.anchor}},[e._v(" "+e._s(e.$t(e.contentSectionData.title))+" ")]),t("dl",[e._l(e.parameters,(function(n){return[t("dt",{key:`${n.name}:name`,staticClass:"param-name"},[t("code",[e._v(e._s(n.name))])]),t("dd",{key:`${n.name}:content`,staticClass:"param-content"},[t("ContentNode",{attrs:{content:n.content}})],1)]}))],2)],1)},Ni=[],Ri={name:"Parameters",components:{ContentNode:Ue.Z,LinkableHeading:cn.Z},props:{parameters:{type:Array,required:!0}},computed:{contentSectionData:()=>sn[je.parameters]}},Bi=Ri,Ei=(0,j.Z)(Bi,Ai,Ni,!1,null,"5ef1227e",null),Mi=Ei.exports,zi=function(){var e=this,t=e._self._c;return t("section",[t("LinkableHeading",{attrs:{anchor:e.anchor}},[e._v(e._s(e.title))]),t("ParametersTable",{staticClass:"property-table",attrs:{parameters:e.properties,changes:e.propertyChanges},scopedSlots:e._u([{key:"symbol",fn:function({name:n,type:i,content:a,changes:s,deprecated:r}){return[t("div",{staticClass:"property-name",class:{deprecated:r}},[t("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(n))])],1),e.shouldShiftType({name:n,content:a})?e._e():t("PossiblyChangedType",{attrs:{type:i,changes:s.type}})]}},{key:"description",fn:function({name:n,type:i,attributes:a,content:s,required:r,changes:o,deprecated:l,readOnly:c}){return[e.shouldShiftType({name:n,content:s})?t("PossiblyChangedType",{attrs:{type:i,changes:o.type}}):e._e(),l?[t("Badge",{staticClass:"property-deprecated",attrs:{variant:"deprecated"}}),e._v("  ")]:e._e(),t("PossiblyChangedTextAttribute",{attrs:{changes:o.required,value:r}},[e._v(" "+e._s(e.$t("formats.parenthesis",{content:e.$t("required")}))+" ")]),t("PossiblyChangedTextAttribute",{attrs:{changes:o.readOnly,value:c}},[e._v(" "+e._s(e.$t("formats.parenthesis",{content:e.$t("read-only")}))+" ")]),s?t("ContentNode",{attrs:{content:s}}):e._e(),t("ParameterAttributes",{attrs:{attributes:a,changes:o.attributes}})]}}])})],1)},Ki=[],Zi={inject:["identifier","store"],data:({store:{state:e}})=>({state:e}),computed:{apiChanges:({state:{apiChanges:e},identifier:t})=>e&&e[t]}},qi=n(6137),ji=function(){var e=this,t=e._self._c;return t("div",{staticClass:"parameters-table"},e._l(e.parameters,(function(n){return t("Row",{key:n[e.keyBy],staticClass:"param",class:e.changedClasses(n[e.keyBy])},[t("Column",{staticClass:"param-symbol",attrs:{span:{large:3,small:12}}},[e._t("symbol",null,null,e.getProps(n,e.changes[n[e.keyBy]]))],2),t("Column",{staticClass:"param-content",attrs:{span:{large:9,small:12}}},[e._t("description",null,null,e.getProps(n,e.changes[n[e.keyBy]]))],2)],1)})),1)},Fi=[],Hi={name:"ParametersTable",components:{Row:z.Z,Column:K.Z},props:{parameters:{type:Array,required:!0},changes:{type:Object,default:()=>({})},keyBy:{type:String,default:"name"}},methods:{getProps(e,t={}){return{...e,changes:t}},changedClasses(e){const{changes:t}=this,{change:n}=t[e]||{};return{[`changed changed-${n}`]:n}}}},Vi=Hi,Wi=(0,j.Z)(Vi,ji,Fi,!1,null,"eee7e94e",null),Ui=Wi.exports,Qi=function(){var e=this,t=e._self._c;return t("RenderChanged",{attrs:{renderSingleChange:"",value:e.value,changes:e.changes},scopedSlots:e._u([{key:"default",fn:function({value:n}){return[n?t("span",{staticClass:"property-text"},[e._t("default")],2):e._e()]}}],null,!0)})},Gi=[],Xi={name:"PossiblyChangedTextAttribute",components:{RenderChanged:Un},props:{changes:{type:Object,required:!1},value:{type:Boolean,default:!1}}},Yi=Xi,Ji=(0,j.Z)(Yi,Qi,Gi,!1,null,null,null),ea=Ji.exports,ta=function(){var e=this,t=e._self._c;return t("RenderChanged",{attrs:{value:e.type,wrapChanges:!1,changes:e.changes},scopedSlots:e._u([{key:"default",fn:function({value:n}){return[t("DeclarationTokenGroup",{staticClass:"property-metadata property-type",attrs:{type:e.getValues(n)}})]}}])})},na=[],ia=function(){var e=this,t=e._self._c;return e.type&&e.type.length?t("div",[t("code",e._l(e.type,(function(n,i){return t("DeclarationToken",e._b({key:i},"DeclarationToken",n,!1))})),1)]):e._e()},aa=[],sa={name:"DeclarationTokenGroup",components:{DeclarationToken:ut["default"]},props:{type:{type:Array,default:()=>[],required:!1}}},ra=sa,oa=(0,j.Z)(ra,ia,aa,!1,null,null,null),la=oa.exports,ca={name:"PossiblyChangedType",components:{DeclarationTokenGroup:la,RenderChanged:Un},props:{type:{type:Array,required:!0},changes:{type:Object,required:!1}},methods:{getValues(e){return Array.isArray(e)?e:e.values}}},da=ca,ua=(0,j.Z)(da,ta,na,!1,null,"549ed0a8",null),ha=ua.exports,pa={name:"PropertyTable",mixins:[Zi],components:{Badge:qi.Z,WordBreak:Oe.Z,PossiblyChangedTextAttribute:ea,PossiblyChangedType:ha,ParameterAttributes:ii,ContentNode:Ue.Z,ParametersTable:Ui,LinkableHeading:cn.Z},props:{title:{type:String,required:!0},properties:{type:Array,required:!0}},computed:{anchor:({title:e})=>(0,bn.HA)(e),propertyChanges:({apiChanges:e})=>(e||{}).properties},methods:{shouldShiftType:({content:e=[],name:t})=>!e.length&&t}},ga=pa,fa=(0,j.Z)(ga,zi,Ki,!1,null,"39899ccf",null),ma=fa.exports,ya=function(){var e=this,t=e._self._c;return t("section",[t("LinkableHeading",{attrs:{anchor:e.anchor}},[e._v(e._s(e.title))]),t("ParametersTable",{attrs:{parameters:[e.bodyParam],changes:e.bodyChanges,keyBy:"key"},scopedSlots:e._u([{key:"symbol",fn:function({type:n,content:i,changes:a,name:s}){return[e.shouldShiftType({name:s,content:i})?e._e():t("PossiblyChangedType",{attrs:{type:n,changes:a.type}})]}},{key:"description",fn:function({name:n,content:i,mimeType:a,type:s,changes:r}){return[e.shouldShiftType({name:n,content:i})?t("PossiblyChangedType",{attrs:{type:s,changes:r.type}}):e._e(),i?t("ContentNode",{attrs:{content:i}}):e._e(),a?t("PossiblyChangedMimetype",{attrs:{mimetype:a,changes:r.mimetype,change:r.change}}):e._e()]}}])}),e.parts.length?[t("h3",[e._v(e._s(e.$t("sections.parts")))]),t("ParametersTable",{staticClass:"parts",attrs:{parameters:e.parts,changes:e.partsChanges},scopedSlots:e._u([{key:"symbol",fn:function({name:n,type:i,content:a,changes:s}){return[t("div",{staticClass:"part-name"},[t("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(n))])],1),a?t("PossiblyChangedType",{attrs:{type:i,changes:s.type}}):e._e()]}},{key:"description",fn:function({content:n,mimeType:i,required:a,type:s,attributes:r,changes:o,readOnly:l}){return[t("div",[n?e._e():t("PossiblyChangedType",{attrs:{type:s,changes:o.type}}),t("PossiblyChangedTextAttribute",{attrs:{changes:o.required,value:a}},[e._v("(Required) ")]),t("PossiblyChangedTextAttribute",{attrs:{changes:o.readOnly,value:l}},[e._v("(Read only) ")]),n?t("ContentNode",{attrs:{content:n}}):e._e(),i?t("PossiblyChangedMimetype",{attrs:{mimetype:i,changes:o.mimetype,change:o.change}}):e._e(),t("ParameterAttributes",{attrs:{attributes:r,changes:o.attributes}})],1)]}}],null,!1,1779956822)})]:e._e()],2)},va=[],ba=function(){var e=this,t=e._self._c;return t("RenderChanged",{attrs:{changes:e.changeValues,value:e.mimetype},scopedSlots:e._u([{key:"default",fn:function({value:n}){return[t("div",{staticClass:"response-mimetype"},[e._v(" "+e._s(e.$t("content-type",{value:n}))+" ")])]}}])})},Ta=[],_a={name:"PossiblyChangedMimetype",components:{RenderChanged:Un},props:{mimetype:{type:String,required:!0},changes:{type:[Object,String],required:!1},change:{type:String,required:!1}},computed:{changeValues({change:e,changes:t}){return e===qt.yf.modified&&"string"!==typeof t?t:void 0}}},Sa=_a,ka=(0,j.Z)(Sa,ba,Ta,!1,null,"18890a0f",null),Ca=ka.exports;const wa="restRequestBody";var xa={name:"RestBody",mixins:[Zi],components:{PossiblyChangedMimetype:Ca,PossiblyChangedTextAttribute:ea,PossiblyChangedType:ha,WordBreak:Oe.Z,ParameterAttributes:ii,ContentNode:Ue.Z,ParametersTable:Ui,LinkableHeading:cn.Z},constants:{ChangesKey:wa},props:{bodyContentType:{type:Array,required:!0},content:{type:Array},mimeType:{type:String,required:!0},parts:{type:Array,default:()=>[]},title:{type:String,required:!0}},computed:{anchor:({title:e})=>(0,bn.HA)(e),bodyParam:({bodyContentType:e,content:t,mimeType:n})=>({key:wa,content:t,mimeType:n,type:e}),bodyChanges:({apiChanges:e})=>e||{},partsChanges:({bodyChanges:e})=>(e[wa]||{}).parts},methods:{shouldShiftType:({content:e=[],name:t})=>!e.length&&t}},Ia=xa,$a=(0,j.Z)(Ia,ya,va,!1,null,"68facc94",null),Da=$a.exports,Pa=function(){var e=this,t=e._self._c;return t("section",[t("LinkableHeading",{attrs:{anchor:e.anchor}},[e._v(e._s(e.title))]),t("ParametersTable",{attrs:{parameters:e.parameters,changes:e.parameterChanges},scopedSlots:e._u([{key:"symbol",fn:function({name:n,type:i,content:a,changes:s,deprecated:r}){return[t("div",{staticClass:"param-name",class:{deprecated:r}},[t("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(n))])],1),e.shouldShiftType({content:a,name:n})?e._e():t("PossiblyChangedType",{attrs:{type:i,changes:s.type}})]}},{key:"description",fn:function({name:n,type:i,content:a,required:s,attributes:r,changes:o,deprecated:l,readOnly:c}){return[t("div",[e.shouldShiftType({content:a,name:n})?t("PossiblyChangedType",{attrs:{type:i,changes:o.type}}):e._e(),l?[t("Badge",{staticClass:"param-deprecated",attrs:{variant:"deprecated"}}),e._v("  ")]:e._e(),t("PossiblyChangedTextAttribute",{attrs:{changes:o.required,value:s}},[e._v(" "+e._s(e.$t("formats.parenthesis",{content:e.$t("required")}))+" ")]),t("PossiblyChangedTextAttribute",{attrs:{changes:o.readOnly,value:c}},[e._v(" "+e._s(e.$t("formats.parenthesis",{content:e.$t("read-only")}))+" ")]),a?t("ContentNode",{attrs:{content:a}}):e._e(),t("ParameterAttributes",{attrs:{attributes:r,changes:o}})],2)]}}])})],1)},La=[],Oa={name:"RestParameters",mixins:[Zi],components:{Badge:qi.Z,PossiblyChangedType:ha,PossiblyChangedTextAttribute:ea,ParameterAttributes:ii,WordBreak:Oe.Z,ContentNode:Ue.Z,ParametersTable:Ui,LinkableHeading:cn.Z},props:{title:{type:String,required:!0},parameters:{type:Array,required:!0}},computed:{anchor:({title:e})=>(0,bn.HA)(e),parameterChanges:({apiChanges:e})=>(e||{}).restParameters},methods:{shouldShiftType:({content:e=[],name:t})=>!e.length&&t}},Aa=Oa,Na=(0,j.Z)(Aa,Pa,La,!1,null,"0d9b752e",null),Ra=Na.exports,Ba=function(){var e=this,t=e._self._c;return t("section",[t("LinkableHeading",{attrs:{anchor:e.anchor}},[e._v(e._s(e.title))]),t("ParametersTable",{attrs:{parameters:e.sanitizedResponses,changes:e.propertyChanges,"key-by":"status"},scopedSlots:e._u([{key:"symbol",fn:function({status:n,type:i,reason:a,content:s,changes:r}){return[t("div",{staticClass:"response-name"},[t("code",[e._v(" "+e._s(n)+" "),t("span",{staticClass:"reason"},[e._v(e._s(a))])])]),e.shouldShiftType({content:s,reason:a,status:n})?e._e():t("PossiblyChangedType",{attrs:{type:i,changes:r.type}})]}},{key:"description",fn:function({content:n,mimeType:i,reason:a,type:s,status:r,changes:o}){return[e.shouldShiftType({content:n,reason:a,status:r})?t("PossiblyChangedType",{attrs:{type:s,changes:o.type}}):e._e(),t("div",{staticClass:"response-reason"},[t("code",[e._v(e._s(a))])]),n?t("ContentNode",{attrs:{content:n}}):e._e(),i?t("PossiblyChangedMimetype",{attrs:{mimetype:i,changes:o.mimetype,change:o.change}}):e._e()]}}])})],1)},Ea=[],Ma={name:"RestResponses",mixins:[Zi],components:{PossiblyChangedMimetype:Ca,PossiblyChangedType:ha,ContentNode:Ue.Z,ParametersTable:Ui,LinkableHeading:cn.Z},props:{title:{type:String,required:!0},responses:{type:Array,required:!0}},computed:{anchor:({title:e})=>(0,bn.HA)(e),propertyChanges:({apiChanges:e})=>(e||{}).restResponses,sanitizedResponses:({responses:e,sanitizeResponse:t})=>e.map(t)},methods:{sanitizeResponse:({mimetype:e,...t})=>e?{...t,mimeType:e}:t,shouldShiftType:({content:e=[],reason:t,status:n})=>!(e.length||t)&&n}},za=Ma,Ka=(0,j.Z)(za,Ba,Ea,!1,null,"362f5b54",null),Za=Ka.exports,qa=function(){var e=this,t=e._self._c;return e.topics.length?t("section",{staticClass:"mentions"},[t("LinkableHeading",{attrs:{anchor:"mentions"}},[e._v(" "+e._s(e.$t("mentioned-in"))+" ")]),e._l(e.topics,(function(e){return t("Mention",{key:e.identifier,attrs:{url:e.url,title:e.title,role:e.role,kind:e.kind}})}))],2):e._e()},ja=[],Fa=function(){var e=this,t=e._self._c;return t("div",{staticClass:"link-block"},[t("Reference",{staticClass:"link",attrs:{url:e.url,role:e.role,kind:e.kind}},[t("TopicLinkBlockIcon",{staticClass:"mention-icon",attrs:{role:e.role}}),e._v(" "+e._s(e.title)+" ")],1)],1)},Ha=[],Va=n(4260),Wa=n(2970),Ua={components:{Reference:Va.Z,TopicLinkBlockIcon:Wa.Z},mixins:[dn.Z],props:{url:{type:String,required:!0},title:{type:String,required:!0},role:{type:String,required:!1,default:"article"},kind:{type:String,required:!1,default:"article"}}},Qa=Ua,Ga=(0,j.Z)(Qa,Fa,Ha,!1,null,"241f4141",null),Xa=Ga.exports,Ya={name:"MentionedIn",components:{LinkableHeading:cn.Z,Mention:Xa},mixins:[dn.Z],props:{mentions:{type:Array,required:!0}},computed:{topics(){return this.mentions&&this.mentions.length?this.mentions.slice(0,5).flatMap((e=>this.references[e])):[]}}},Ja=Ya,es=(0,j.Z)(Ja,qa,ja,!1,null,null,null),ts=es.exports,ns={name:"PrimaryContent",components:{Attributes:oi,ContentNode:Ue.Z,Parameters:Mi,PropertyListKeyDetails:Oi,PropertyTable:ma,RestBody:Da,RestEndpoint:Ti,RestParameters:Ra,RestResponses:Za,PossibleValues:gi,Mentions:ts},constants:{SectionKind:je},props:{sections:{type:Array,required:!0,validator:e=>e.every((({kind:e})=>Object.prototype.hasOwnProperty.call(je,e)))}},computed:{span(){return{large:9,medium:9,small:12}}},methods:{componentFor(e){return{[je.attributes]:oi,[je.content]:Ue.Z,[je.details]:Oi,[je.parameters]:Mi,[je.properties]:ma,[je.restBody]:Da,[je.restParameters]:Ra,[je.restHeaders]:Ra,[je.restCookies]:Ra,[je.restEndpoint]:Ti,[je.restResponses]:Za,[je.possibleValues]:gi,[je.mentions]:ts}[e.kind]},propsFor(e){const{attributes:t,bodyContentType:n,content:i,details:a,items:s,kind:r,mimeType:o,parameters:l,title:c,tokens:d,values:u,mentions:h}=e;return{[je.attributes]:{attributes:t},[je.content]:{content:i},[je.details]:{details:a},[je.parameters]:{parameters:l},[je.possibleValues]:{values:u},[je.properties]:{properties:s,title:c},[je.restBody]:{bodyContentType:n,content:i,mimeType:o,parts:l,title:c},[je.restCookies]:{parameters:s,title:c},[je.restEndpoint]:{tokens:d,title:c},[je.restHeaders]:{parameters:s,title:c},[je.restParameters]:{parameters:s,title:c},[je.restResponses]:{responses:s,title:c},[je.mentions]:{mentions:h}}[r]}}},is=ns,as=(0,j.Z)(is,Nn,Rn,!1,null,"65c116be",null),ss=as.exports,rs=function(){var e=this,t=e._self._c;return t("ContentTable",{attrs:{anchor:e.contentSectionData.anchor,title:e.$t(e.contentSectionData.title),enableMinimized:e.enableMinimized}},e._l(e.sectionsWithSymbols,(function(e){return t("Section",{key:e.type,attrs:{title:e.title,anchor:e.anchor}},[t("List",{attrs:{symbols:e.symbols,type:e.type}})],1)})),1)},os=[],ls=function(){var e=this,t=e._self._c;return t("ul",{ref:"apiChangesDiff",staticClass:"relationships-list",class:e.classes},e._l(e.symbols,(function(n){return t("li",{key:n.identifier,staticClass:"relationships-item"},[n.url?t("Reference",{staticClass:"link",attrs:{role:n.role,kind:n.kind,url:n.url}},[e._v(e._s(n.title))]):t("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(n.title))]),n.conformance?t("ConditionalConstraints",{attrs:{constraints:n.conformance.constraints,prefix:n.conformance.conformancePrefix}}):e._e()],1)})),0)},cs=[];const ds=3,us={conformsTo:"conformance",inheritsFrom:"inheritance",inheritedBy:"inheritedBy"};var hs={name:"RelationshipsList",components:{ConditionalConstraints:Ye,Reference:Va.Z,WordBreak:Oe.Z},inject:["store","identifier"],mixins:[bt.JY,bt.PH],props:{symbols:{type:Array,required:!0},type:{type:String,required:!0}},data(){return{state:this.store.state}},computed:{classes({changeType:e,multipleLinesClass:t,displaysMultipleLinesAfterAPIChanges:n}){return[{inline:this.shouldDisplayInline,column:!this.shouldDisplayInline,[`changed changed-${e}`]:!!e,[t]:n}]},hasAvailabilityConstraints(){return this.symbols.some((e=>!!(e.conformance||{}).constraints))},changes({identifier:e,state:{apiChanges:t}}){return(t||{})[e]||{}},changeType({changes:e,type:t}){const n=us[t];if(e.change!==qt.yf.modified)return e.change;const i=e[n];if(!i)return;const a=(e,t)=>e.map(((e,n)=>[e,t[n]])),s=a(i.previous,i.new).some((([e,t])=>e.content?0===e.content.length&&t.content.length>0:!!t.content));return s?qt.yf.added:qt.yf.modified},shouldDisplayInline(){const{hasAvailabilityConstraints:e,symbols:t}=this;return t.length<=ds&&!e}}},ps=hs,gs=(0,j.Z)(ps,ls,cs,!1,null,"ba5cad92",null),fs=gs.exports,ms={name:"Relationships",mixins:[dn.Z],components:{ContentTable:mn,List:fs,Section:Cn},props:{sections:{type:Array,required:!0},enableMinimized:{type:Boolean,default:!1}},computed:{contentSectionData:()=>an.relationships,sectionsWithSymbols(){return this.sections.map((e=>({...e,symbols:e.identifiers.reduce(((e,t)=>this.references[t]?e.concat(this.references[t]):e),[])})))}}},ys=ms,vs=(0,j.Z)(ys,rs,os,!1,null,null,null),bs=vs.exports,Ts=n(7120),_s=function(){var e=this,t=e._self._c;return t("Section",{staticClass:"availability",attrs:{role:"complementary","aria-label":e.$t("sections.availability")}},[e._l(e.technologies,(function(n){return t("span",{key:n,staticClass:"technology"},[t("TechnologyIcon",{staticClass:"tech-icon"}),t("span",[e._v(e._s(n))])],1)})),e._l(e.platforms,(function(n){return t("span",{key:n.name,staticClass:"platform",class:e.changesClassesFor(n.name)},[t("AvailabilityRange",{attrs:{deprecatedAt:n.deprecatedAt,introducedAt:n.introducedAt,platformName:n.name}}),n.deprecatedAt?t("Badge",{attrs:{variant:"deprecated"}}):n.beta?t("Badge",{attrs:{variant:"beta"}}):e._e()],1)}))],2)},Ss=[],ks=n(9001),Cs=function(){var e=this,t=e._self._c;return t("span",{attrs:{role:"text","aria-label":e.ariaLabel,title:e.description}},[e._v(e._s(e.text))])},ws=[],xs={name:"AvailabilityRange",props:{deprecatedAt:{type:String,required:!1},introducedAt:{type:String,required:!0},platformName:{type:String,required:!0}},computed:{ariaLabel(){const{deprecatedAt:e,description:t,text:n}=this;return[n].concat(e?this.$t("change-type.deprecated"):[]).concat(t).join(", ")},description(){const{deprecatedAt:e,introducedAt:t,platformName:n}=this;return e?this.$t("availability.introduced-and-deprecated",{name:n,introducedAt:t,deprecatedAt:e}):this.$t("availability.available-on",{name:n,introducedAt:t})},text(){const{deprecatedAt:e,introducedAt:t,platformName:n}=this;return e?`${n} ${t}–${e}`:`${n} ${t}+`}}},Is=xs,$s=(0,j.Z)(Is,Cs,ws,!1,null,null,null),Ds=$s.exports,Ps={name:"Availability",mixins:[bt.JY],inject:["identifier","store"],components:{Badge:qi.Z,AvailabilityRange:Ds,Section:se,TechnologyIcon:ks.Z},props:{platforms:{type:Array,required:!0},technologies:{type:Array,required:!1}},data(){return{state:this.store.state}},methods:{changeFor(e){const{identifier:t,state:{apiChanges:n}}=this,{availability:i={}}=(n||{})[t]||{},a=i[e];if(a)return a.deprecated?qt.yf.deprecated:a.introduced&&!a.introduced.previous?qt.yf.added:qt.yf.modified}}},Ls=Ps,Os=(0,j.Z)(Ls,_s,Ss,!1,null,"3da26baa",null),As=Os.exports,Ns=function(){var e=this,t=e._self._c;return t("TopicsTable",{attrs:{anchor:e.contentSectionData.anchor,title:e.$t(e.contentSectionData.title),isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,sections:e.sections}})},Rs=[],Bs={name:"SeeAlso",components:{TopicsTable:Dn},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:Dn.props.sections},computed:{contentSectionData:()=>an.seeAlso}},Es=Bs,Ms=(0,j.Z)(Es,Ns,Rs,!1,null,null,null),zs=Ms.exports,Ks=function(){var e=this,t=e._self._c;return t("div",{staticClass:"topictitle"},[e.eyebrow?t("span",{staticClass:"eyebrow"},[e._v(e._s(e.eyebrow))]):e._e(),t("h1",{staticClass:"title"},[e._t("default"),e._t("after")],2)])},Zs=[],qs={name:"Title",props:{eyebrow:{type:String,required:!1}}},js=qs,Fs=(0,j.Z)(js,Ks,Zs,!1,null,"6630a012",null),Hs=Fs.exports,Vs=function(){var e=this,t=e._self._c;return t("TopicsTable",{attrs:{anchor:e.contentSectionData.anchor,title:e.$t(e.contentSectionData.title),isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,sections:e.sections,topicStyle:e.topicStyle}})},Ws=[],Us={name:"Topics",components:{TopicsTable:Dn},computed:{contentSectionData:()=>an.topics},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:Dn.props.sections,topicStyle:{type:String,required:!0,validator:e=>Object.hasOwnProperty.call(Ae.o,e)}}},Qs=Us,Gs=(0,j.Z)(Qs,Vs,Ws,!1,null,null,null),Xs=Gs.exports,Ys=function(){var e=this,t=e._self._c;return t("div",{staticClass:"OnThisPageStickyContainer"},[e._t("default")],2)},Js=[],er={name:"OnThisPageStickyContainer"},tr=er,nr=(0,j.Z)(tr,Ys,Js,!1,null,"39ac6ed0",null),ir=nr.exports,ar=function(){var e=this,t=e._self._c;return t("NavMenuItems",{staticClass:"hierarchy",class:{"has-badge":e.hasBadge},attrs:{"aria-label":e.$t("documentation.nav.breadcrumbs")}},[e.root?t("HierarchyItem",{key:e.root.title,staticClass:"root-hierarchy",attrs:{url:e.addQueryParamsToUrl(e.root.url)}},[e._v(" "+e._s(e.root.title)+" ")]):e._e(),e._l(e.collapsibleItems,(function(n){return t("HierarchyItem",{key:n.title,attrs:{isCollapsed:"",url:e.addQueryParamsToUrl(n.url)}},[e._v(" "+e._s(n.title)+" ")])})),e.collapsibleItems.length?t("HierarchyCollapsedItems",{attrs:{topics:e.collapsibleItems}}):e._e(),e._l(e.nonCollapsibleItems,(function(n){return t("HierarchyItem",{key:n.title,attrs:{url:e.addQueryParamsToUrl(n.url)}},[e._v(" "+e._s(n.title)+" ")])})),e.smallViewport?e._e():t("HierarchyItem",{scopedSlots:e._u([{key:"tags",fn:function(){return[e.isSymbolDeprecated?t("Badge",{attrs:{variant:"deprecated"}}):e.isSymbolBeta?t("Badge",{attrs:{variant:"beta"}}):e._e(),e._l(e.currentTopicTags,(function(n){return t("Badge",{key:`${n.type}-${n.text}`,attrs:{variant:n.type}},[e._v(" "+e._s(n.text)+" ")])}))]},proxy:!0}],null,!1,1132636639)},[e._v(" "+e._s(e.currentTopicTitle)+" ")])],2)},sr=[],rr=n(2853),or=n(5381),lr=function(){var e=this,t=e._self._c;return t("li",{staticClass:"hierarchy-collapsed-items"},[t("button",{ref:"btn",staticClass:"toggle",class:{focused:!e.collapsed},on:{click:e.toggleCollapsed}},[t("span",{staticClass:"indicator"},[t("EllipsisIcon",{staticClass:"icon-inline toggle-icon"})],1)]),t("ul",{ref:"dropdown",staticClass:"dropdown",class:{collapsed:e.collapsed}},e._l(e.formattedTopics,(function(n){return t("li",{key:n.title,staticClass:"dropdown-item"},[t("NavMenuLink",{attrs:{url:n.url}},[e._v(" "+e._s(n.title)+" ")])],1)})),0)])},cr=[],dr=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"ellipsis-icon",attrs:{viewBox:"0 0 14 14",themeId:"ellipsis"}},[t("path",{attrs:{d:"m12.439 7.777v-1.554h-1.554v1.554zm-4.662 0v-1.554h-1.554v1.554zm-4.662 0v-1.554h-1.554v1.554z"}})])},ur=[],hr=n(9742),pr={name:"EllipsisIcon",components:{SVGIcon:hr.Z}},gr=pr,fr=(0,j.Z)(gr,dr,ur,!1,null,null,null),mr=fr.exports,yr=function(){var e=this,t=e._self._c;return e.isCurrent?t("span",{staticClass:"nav-menu-link current",attrs:{"aria-current":"page","aria-disabled":"true",role:"link"}},[e._t("default")],2):t("Reference",{staticClass:"nav-menu-link",attrs:{url:e.url,tabindex:"0"}},[e._t("default")],2)},vr=[],br={name:"NavMenuLink",components:{Reference:Va.Z},computed:{isCurrent:({$route:e,url:t})=>"string"===typeof t?t===(0,O.Q2)(e.path,e.query).replace(/\/$/,""):t.name===e.name},props:{url:{type:[Object,String],required:!0}}},Tr=br,_r=(0,j.Z)(Tr,yr,vr,!1,null,"2ad31daf",null),Sr=_r.exports,kr={name:"HierarchyCollapsedItems",components:{EllipsisIcon:mr,NavMenuLink:Sr},data:()=>({collapsed:!0}),props:{topics:{type:Array,required:!0}},watch:{collapsed(e,t){t&&!e?document.addEventListener("click",this.handleDocumentClick,!1):!t&&e&&document.removeEventListener("click",this.handleDocumentClick,!1)}},beforeDestroy(){document.removeEventListener("click",this.handleDocumentClick,!1)},computed:{formattedTopics:({$route:e,topics:t})=>t.map((t=>({...t,url:(0,O.Q2)(t.url,e.query)})))},methods:{handleDocumentClick(e){const{target:t}=e,{collapsed:n,$refs:{btn:i,dropdown:a}}=this,s=!i.contains(t)&&!a.contains(t);!n&&s&&(this.collapsed=!0)},toggleCollapsed(){this.collapsed=!this.collapsed}}},Cr=kr,wr=(0,j.Z)(Cr,lr,cr,!1,null,"7b701104",null),xr=wr.exports,Ir=function(e,t){return e(t.$options.components.NavMenuItemBase,{tag:"component",staticClass:"hierarchy-item",class:[{collapsed:t.props.isCollapsed},t.data.staticClass]},[t.props.url?e("router-link",{staticClass:"parent item nav-menu-link",attrs:{to:t.props.url}},[t._t("default")],2):[e("span",{staticClass:"current item"},[t._t("default")],2),t._t("tags")]],2)},$r=[],Dr=n(535),Pr=n(8785),Lr={name:"HierarchyItem",components:{NavMenuItemBase:Dr.Z,InlineChevronRightIcon:Pr.Z},props:{isCollapsed:Boolean,url:{type:String,required:!1}}},Or=Lr,Ar=(0,j.Z)(Or,Ir,$r,!0,null,"13293168",null),Nr=Ar.exports;const Rr=3,Br=1;var Er={name:"Hierarchy",components:{Badge:qi.Z,NavMenuItems:rr.Z,HierarchyCollapsedItems:xr,HierarchyItem:Nr},constants:{MaxVisibleLinks:Rr},inject:["store"],mixins:[dn.Z],props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,currentTopicTitle:{type:String,required:!0},parentTopics:{type:Array,default:()=>[]},currentTopicTags:{type:Array,default:()=>[]}},computed:{windowWidth:({store:e})=>e.state.contentWidth,root:({parentTopics:e})=>e[0],smallViewport:({windowWidth:e})=>e{const i=n?1:0;return e>1200?Rr-i:e>1e3?Rr-1-i:t?0:Rr-2-i},collapsibleItems:({smallViewport:e,parentTopics:t,linksAfterCollapse:n,currentTopicTitle:i,$route:a})=>{const s=n?t.slice(Br,-n):t.slice(Br);return e&&s.push({title:i,url:a.path}),s},nonCollapsibleItems:({parentTopics:e,linksAfterCollapse:t})=>t?e.slice(Br).slice(-t):[],hasBadge:({isSymbolDeprecated:e,isSymbolBeta:t,currentTopicTags:n})=>e||t||n.length},methods:{addQueryParamsToUrl(e){return(0,O.Q2)(e,this.$route.query)}}},Mr=Er,zr=(0,j.Z)(Mr,ar,sr,!1,null,"d54f3438",null),Kr=zr.exports;const Zr=1050;var qr={name:"DocumentationTopic",mixins:[L.Z],constants:{ON_THIS_PAGE_CONTAINER_BREAKPOINT:Zr},inject:{isTargetIDE:{default(){return!1}},store:{default(){return{reset(){},state:{}}}}},components:{Declaration:Vt,OnThisPageStickyContainer:ir,OnThisPageNav:qe,DocumentationHero:Le,Abstract:Jt,Aside:B.Z,BetaLegalText:H,ContentNode:Ue.Z,DefaultImplementations:An,DownloadButton:en.Z,LanguageSwitcher:fe,PrimaryContent:ss,Relationships:bs,RequirementMetadata:Ts.Z,Availability:As,SeeAlso:zs,Title:Hs,Topics:Xs,ViewMore:_e,WordBreak:Oe.Z,Hierarchy:Kr,InlinePlusCircleIcon:Wt.Z},props:{abstract:{type:Array,required:!1},conformance:{type:Object,required:!1},defaultImplementationsSections:{type:Array,required:!1},downloadNotAvailableSummary:{type:Array,required:!1},deprecationSummary:{type:Array,required:!1},diffAvailability:{type:Object,required:!1},modules:{type:Array,required:!1},hasNoExpandedDocumentation:{type:Boolean,required:!1},hierarchy:{type:Object,default:()=>({})},interfaceLanguage:{type:String,required:!0},identifier:{type:String,required:!0},isRequirement:{type:Boolean,default:()=>!1},platforms:{type:Array,required:!1},primaryContentSections:{type:Array,required:!1},references:{type:Object,required:!0},relationshipsSections:{type:Array,required:!1},roleHeading:{type:String,required:!1},title:{type:String,required:!0},topicSections:{type:Array,required:!1},topicSectionsStyle:{type:String,default:Ae.o.list},sampleCodeDownload:{type:Object,required:!1},seeAlsoSections:{type:Array,required:!1},languagePaths:{type:Object,default:()=>({})},tags:{type:Array,required:!0},objcPath:{type:String,required:!1},swiftPath:{type:String,required:!1},isSymbolDeprecated:{type:Boolean,required:!1},isSymbolBeta:{type:Boolean,required:!1},symbolKind:{type:String,default:""},role:{type:String,default:""},remoteSource:{type:Object,required:!1},pageImages:{type:Array,required:!1},enableMinimized:{type:Boolean,default:!1},enableOnThisPageNav:{type:Boolean,default:!1},disableHeroBackground:{type:Boolean,default:!1},standardColorIdentifier:{type:String,required:!1,validator:e=>Object.prototype.hasOwnProperty.call(Ie,e)},availableLocales:{type:Array,required:!1},hierarchyItems:{type:Array,default:()=>[]}},provide(){return{identifier:this.identifier,languages:new Set(Object.keys(this.languagePaths)),interfaceLanguage:this.interfaceLanguage,symbolKind:this.symbolKind,enableMinimized:this.enableMinimized}},data(){return{topicState:this.store.state,declListExpanded:!1}},computed:{normalizedSwiftPath:({swiftPath:e})=>(0,A.Jf)(e),normalizedObjcPath:({objcPath:e,swiftPath:t})=>(0,A.Jf)(e&&t?(0,O.Q2)(e,{language:D.Z.objectiveC.key.url}):e),defaultImplementationsCount(){return(this.defaultImplementationsSections||[]).reduce(((e,t)=>e+t.identifiers.length),0)},shouldShowAvailability:({platforms:e,technologies:t,enableMinimized:n})=>((e||[]).length||(t||[]).length)&&!n,hasBetaContent:({platforms:e})=>e&&e.length&&e.some((e=>e.beta)),pageTitle:({title:e})=>e,pageDescription:({abstract:e,extractFirstParagraphText:t})=>e?t(e):null,parentTopics:({hierarchyItems:e,references:t,hasOtherDeclarations:n,pageTitle:i})=>{const a=e.reduce(((e,n)=>{const i=t[n];if(i){const{title:t,url:n}=i;return e.concat({title:t,url:n})}return console.error(`Reference for "${n}" is missing`),e}),[]),s=(0,N.Z$)(a);return n&&s?.title===i&&a.pop(),a},shouldShowLanguageSwitcher:({objcPath:e,swiftPath:t,isTargetIDE:n,enableMinimized:i})=>!!(e&&t&&n)&&!i,enhanceBackground:({symbolKind:e,disableHeroBackground:t,enableMinimized:n})=>!t&&!n&&(!e||e===P.module),shortHero:({roleHeading:e,abstract:t,sampleCodeDownload:n,hasAvailability:i,shouldShowLanguageSwitcher:a,declarations:s})=>!!e+!!t+!!n+!!s.length+!!i+a<=1,technologies({modules:e=[]}){const t=e.reduce(((e,t)=>(e.push(t.name),e.concat(t.relatedModules||[]))),[]);return t.length>1?t:[]},titleBreakComponent:({enhanceBackground:e})=>e?"span":Oe.Z,hasPrimaryContent:({isRequirement:e,deprecationSummary:t,downloadNotAvailableSummary:n,primaryContentSectionsSanitized:i,shouldShowViewMoreLink:a})=>e||t&&t.length||n&&n.length||i.length||a,viewMoreLink:({interfaceLanguage:e,normalizedObjcPath:t,normalizedSwiftPath:n})=>e===D.Z.objectiveC.key.api?t:n,shouldShowViewMoreLink:({enableMinimized:e,hasNoExpandedDocumentation:t,viewMoreLink:n})=>e&&!t&&n,tagName(){return this.isSymbolDeprecated?this.$t("aside-kind.deprecated"):this.$t("aside-kind.beta")},pageIcon:({pageImages:e=[]})=>{const t=e.find((({type:e})=>"icon"===e));return t?t.identifier:null},shouldRenderTopicSection:({topicSectionsStyle:e,topicSections:t,enableMinimized:n})=>t&&e!==Ae.o.hidden&&!n,isOnThisPageNavVisible:({topicState:e})=>e.contentWidth>Zr,disableMetadata:({enableMinimized:e})=>e,primaryContentSectionsSanitized({primaryContentSections:e=[],symbolKind:t}){return e.filter((({kind:e})=>e===je.mentions?t!==P.module:e!==je.declarations))},declarations({primaryContentSections:e=[]}){return e.filter((({kind:e})=>e===je.declarations))},showOtherDeclarations({enableMinimized:e,hasOtherDeclarations:t}){return!e&&t},hasOtherDeclarations({declarations:e=[]}){return!!e.length&&e[0].declarations.some((e=>Object.prototype.hasOwnProperty.call(e,"otherDeclarations")))},declListToggleText({declListExpanded:e}){return e?this.$t("declarations.hide-other-declarations"):this.$t("declarations.show-all-declarations")}},methods:{extractProps(e){const{abstract:t,defaultImplementationsSections:n,deprecationSummary:i,downloadNotAvailableSummary:a,diffAvailability:s,hierarchy:r,identifier:{interfaceLanguage:o,url:l},metadata:{conformance:c,hasNoExpandedDocumentation:d,modules:u,availableLocales:h,platforms:p,required:g=!1,roleHeading:f,title:m="",tags:y=[],role:v,symbolKind:b="",remoteSource:T,images:_=[],color:{standardColorIdentifier:S}={}}={},primaryContentSections:k,relationshipsSections:C,references:w={},sampleCodeDownload:x,topicSectionsStyle:I,topicSections:$,seeAlsoSections:P,variantOverrides:L,variants:O=[]}=e,A=O.reduce(((e,t)=>t.traits.reduce(((e,n)=>n.interfaceLanguage?{...e,[n.interfaceLanguage]:(e[n.interfaceLanguage]||[]).concat(t.paths)}:e),e)),{}),{[D.Z.objectiveC.key.api]:[N]=[],[D.Z.swift.key.api]:[R]=[]}=A;return{abstract:t,conformance:c,defaultImplementationsSections:n,deprecationSummary:i,downloadNotAvailableSummary:a,diffAvailability:s,hasNoExpandedDocumentation:d,availableLocales:h,hierarchy:r,role:v,identifier:l,interfaceLanguage:o,isRequirement:g,modules:u,platforms:p,primaryContentSections:k,relationshipsSections:C,references:w,roleHeading:f,sampleCodeDownload:x,title:m,topicSections:$,topicSectionsStyle:I,seeAlsoSections:P,variantOverrides:L,symbolKind:b,tags:y.slice(0,1),remoteSource:T,pageImages:_,objcPath:N,swiftPath:R,standardColorIdentifier:S}},toggleDeclList(){this.declListExpanded=!this.declListExpanded}},created(){if(this.topicState.preferredLanguage===D.Z.objectiveC.key.url&&this.interfaceLanguage!==D.Z.objectiveC.key.api&&this.objcPath&&this.$route.query.language!==D.Z.objectiveC.key.url){const{query:e}=this.$route;this.$nextTick().then((()=>{this.$router.replace({path:(0,A.Jf)(this.objcPath),query:{...e,language:D.Z.objectiveC.key.url}})}))}R["default"].setAvailableLocales(this.availableLocales||[]),this.store.reset(),this.store.setReferences(this.references)},watch:{references(e){this.store.setReferences(e)},availableLocales(e){R["default"].setAvailableLocales(e)}}},jr=qr,Fr=(0,j.Z)(jr,I,$,!1,null,"7ebd4fcd",null),Hr=Fr.exports,Vr=function(){var e=this,t=e._self._c;return t("div",{staticClass:"documentation-layout"},[e.isTargetIDE?e._e():t("Nav",{attrs:{diffAvailability:e.diffAvailability,interfaceLanguage:e.interfaceLanguage,objcPath:e.objcPath,swiftPath:e.swiftPath,displaySidenav:e.enableNavigator},on:{"toggle-sidenav":e.handleToggleSidenav},scopedSlots:e._u([{key:"title",fn:function({className:t}){return[e._t("nav-title",null,{className:t})]}}],null,!0)}),t("AdjustableSidebarWidth",e._g(e._b({staticClass:"full-width-container topic-wrapper",scopedSlots:e._u([{key:"aside",fn:function({scrollLockID:n,breakpoint:i}){return[t("NavigatorDataProvider",{ref:"NavigatorDataProvider",attrs:{"interface-language":e.interfaceLanguage,technologyUrl:e.technology?e.technology.url:"","api-changes-version":e.selectedAPIChangesVersion},scopedSlots:e._u([{key:"default",fn:function(a){return[t("div",{staticClass:"documentation-layout-aside"},[e.enableQuickNavigation?t("QuickNavigationModal",{attrs:{children:a.flatChildren,showQuickNavigationModal:e.showQuickNavigationModal,technology:e.technology?e.technology.title:""},on:{"update:showQuickNavigationModal":function(t){e.showQuickNavigationModal=t},"update:show-quick-navigation-modal":function(t){e.showQuickNavigationModal=t}}}):e._e(),t("transition",{attrs:{name:"delay-hiding"}},[t("Navigator",{directives:[{name:"show",rawName:"v-show",value:e.sidenavVisibleOnMobile||i===e.BreakpointName.large,expression:"sidenavVisibleOnMobile || breakpoint === BreakpointName.large"}],attrs:{flatChildren:a.flatChildren,"parent-topic-identifiers":e.parentTopicIdentifiers,technology:a.technology||e.technology,"is-fetching":a.isFetching,"error-fetching":a.errorFetching,"api-changes":a.apiChanges,references:e.references,"navigator-references":a.references,scrollLockID:n,"render-filter-on-top":i!==e.BreakpointName.large},on:{close:function(t){return e.handleToggleSidenav(i)}},scopedSlots:e._u([e.enableQuickNavigation?{key:"filter",fn:function(){return[t("QuickNavigationButton",{nativeOn:{click:function(t){return e.openQuickNavigationModal.apply(null,arguments)}}})]},proxy:!0}:null,{key:"navigator-head",fn:function({className:t}){return[e._t("nav-title",null,{className:t})]}}],null,!0)})],1)],1)]}}],null,!0)})]}}])},"AdjustableSidebarWidth",e.sidebarProps,!1),e.sidebarListeners),[t("PortalTarget",{attrs:{name:"modal-destination",multiple:""}}),e._t("content")],2)],1)},Wr=[],Ur=n(2433),Qr=function(){var e=this,t=e._self._c;return t("button",{staticClass:"quick-navigation-open",attrs:{"aria-label":e.$t("quicknav.button.label"),title:e.$t("quicknav.button.title")}},[e._v(" / ")])},Gr=[],Xr={name:"QuickNavigationButton"},Yr=Xr,Jr=(0,j.Z)(Yr,Qr,Gr,!1,null,"96c35eb8",null),eo=Jr.exports,to=function(){var e=this,t=e._self._c;return t("GenericModal",{attrs:{isFullscreen:"",showClose:!1,visible:e.isVisible,backdropBackgroundColorOverride:"rgba(0, 0, 0, 0.7)"},on:{"update:visible":function(t){e.isVisible=t}}},[t("div",{staticClass:"quick-navigation"},[t("div",{staticClass:"quick-navigation__container",class:{focus:e.focusedInput}},[t("FilterInput",{staticClass:"quick-navigation__filter",attrs:{placeholder:e.placeholderText,focusInputWhenCreated:"",focusInputWhenEmpty:"",preventBorderStyle:"",selectInputOnFocus:""},on:{focus:function(t){e.focusedInput=!0},blur:function(t){e.focusedInput=!1}},nativeOn:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.handleDownKeyInput.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.handleKeyEnter.apply(null,arguments)}]},scopedSlots:e._u([{key:"icon",fn:function(){return[t("div",{staticClass:"quick-navigation__magnifier-icon-container",class:{blue:e.userInput.length}},[t("MagnifierIcon")],1)]},proxy:!0}]),model:{value:e.userInput,callback:function(t){e.userInput=t},expression:"userInput"}}),t("div",{staticClass:"quick-navigation__match-list",class:{active:e.processedUserInput.length}},[e.noResultsWereFound?t("div",{staticClass:"no-results"},[t("p",[e._v(" "+e._s(e.$t("navigator.no-results"))+" ")])]):[t("div",e._b({staticClass:"quick-navigation__refs",on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusNext.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusPrev.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.handleKeyEnter.apply(null,arguments)}]}},"div",{[e.SCROLL_LOCK_DISABLE_ATTR]:!0},!1),e._l(e.filteredSymbols,(function(n,i){return t("Reference",{key:n.uid,ref:"match",refInFor:!0,staticClass:"quick-navigation__reference",attrs:{url:n.path,tabindex:e.focusedIndex===i?"0":"-1","data-index":i},nativeOn:{click:function(t){return e.closeQuickNavigationModal.apply(null,arguments)}}},[t("div",{staticClass:"quick-navigation__symbol-match",attrs:{role:"list"}},[t("div",{staticClass:"symbol-info"},[t("div",{staticClass:"symbol-name"},[t("TopicTypeIcon",{staticClass:"navigator-icon",attrs:{type:n.type}}),t("div",{staticClass:"symbol-title"},[t("span",{domProps:{textContent:e._s(e.formatSymbolTitle(n.title,0,n.start))}}),t("QuickNavigationHighlighter",{attrs:{text:n.substring,matcherText:e.processedUserInput}}),t("span",{domProps:{textContent:e._s(e.formatSymbolTitle(n.title,n.start+n.matchLength))}})],1)],1),t("div",{staticClass:"symbol-path"},e._l(n.parents,(function(i,a){return t("div",{key:i.title},[t("span",{staticClass:"parent-path",domProps:{textContent:e._s(i.title)}}),a!==n.parents.length-1?t("span",{staticClass:"parent-path",domProps:{textContent:e._s("/")}}):e._e()])})),0)])])])})),1),e.previewState?t("Preview",e._b({staticClass:"quick-navigation__preview",attrs:{json:e.previewJSON,state:e.previewState}},"Preview",{[e.SCROLL_LOCK_DISABLE_ATTR]:!0},!1)):e._e()]],2)],1)])])},no=[],io=function(){var e=this,t=e._self._c;return t("div",{staticClass:"filter",class:{focus:e.showSuggestedTags&&!e.preventBorderStyle},attrs:{role:"search",tabindex:"0","aria-labelledby":e.searchAriaLabelledBy},on:{"!blur":function(t){return e.handleBlur.apply(null,arguments)},"!focus":function(t){return e.handleFocus.apply(null,arguments)}}},[t("div",{class:["filter__wrapper",{"filter__wrapper--reversed":e.positionReversed,"filter__wrapper--no-border-style":e.preventBorderStyle}]},[t("div",{staticClass:"filter__top-wrapper"},[t("button",{staticClass:"filter__filter-button",class:{blue:e.inputIsNotEmpty},attrs:{"aria-hidden":"true",tabindex:"-1"},on:{click:e.focusInput,mousedown:function(e){e.preventDefault()}}},[e._t("icon",(function(){return[t("FilterIcon")]}))],2),t("div",{class:["filter__input-box-wrapper",{scrolling:e.isScrolling}],on:{scroll:e.handleScroll}},[e.hasSelectedTags?t("TagList",e._g(e._b({ref:"selectedTags",staticClass:"filter__selected-tags",attrs:{id:e.SelectedTagsId,input:e.input,tags:e.selectedTags,ariaLabel:e.$tc("filter.selected-tags",e.suggestedTags.length),activeTags:e.activeTags,translatableTags:e.translatableTags,areTagsRemovable:""},on:{"focus-prev":e.handleFocusPrevOnSelectedTags,"focus-next":e.focusInputFromTags,"reset-filters":e.resetFilters,"prevent-blur":function(t){return e.$emit("update:preventedBlur",!0)}}},"TagList",e.virtualKeyboardBind,!1),e.selectedTagsMultipleSelectionListeners)):e._e(),t("label",{staticClass:"filter__input-label",attrs:{id:"filter-label",for:e.FilterInputId,"data-value":e.modelValue,"aria-label":e.placeholder}},[t("input",e._g(e._b({directives:[{name:"model",rawName:"v-model",value:e.modelValue,expression:"modelValue"}],ref:"input",staticClass:"filter__input",attrs:{id:e.FilterInputId,placeholder:e.hasSelectedTags?"":e.placeholder,"aria-expanded":e.displaySuggestedTags?"true":"false",disabled:e.disabled,type:"text"},domProps:{value:e.modelValue},on:{focus:function(t){e.selectInputOnFocus&&e.selectInputAndTags()},keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),e.downHandler.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),e.upHandler.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:e.leftKeyInputHandler.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])||"button"in t&&2!==t.button?null:e.rightKeyInputHandler.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:e.deleteHandler.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"a",void 0,t.key,void 0)?null:t.metaKey?(t.preventDefault(),t.stopPropagation(),e.selectInputAndTags.apply(null,arguments)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"a",void 0,t.key,void 0)?null:t.ctrlKey?(t.preventDefault(),e.selectInputAndTags.apply(null,arguments)):null},function(t){return t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.inputKeydownHandler.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.enterHandler.apply(null,arguments)},function(t){return t.shiftKey?t.ctrlKey||t.altKey||t.metaKey?null:e.inputKeydownHandler.apply(null,arguments):null},function(t){return t.shiftKey&&t.metaKey?t.ctrlKey||t.altKey?null:e.inputKeydownHandler.apply(null,arguments):null},function(t){return t.metaKey?t.ctrlKey||t.shiftKey||t.altKey?null:e.assignEventValues.apply(null,arguments):null},function(t){return t.ctrlKey?t.shiftKey||t.altKey||t.metaKey?null:e.assignEventValues.apply(null,arguments):null}],input:function(t){t.target.composing||(e.modelValue=t.target.value)}}},"input",e.AXinputProperties,!1),e.inputMultipleSelectionListeners))])],1),t("div",{staticClass:"filter__delete-button-wrapper"},[e.input.length||e.displaySuggestedTags||e.hasSelectedTags?t("button",{staticClass:"filter__delete-button",attrs:{"aria-label":e.$t("filter.reset-filter")},on:{click:function(t){return e.resetFilters(!0)},keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.stopPropagation(),e.resetFilters(!0))},mousedown:function(e){e.preventDefault()}}},[t("ClearRoundedIcon")],1):e._e()])]),e.displaySuggestedTags?t("TagList",e._b({ref:"suggestedTags",staticClass:"filter__suggested-tags",attrs:{id:e.SuggestedTagsId,ariaLabel:e.$tc("filter.suggested-tags",e.suggestedTags.length),input:e.input,tags:e.suggestedTags,translatableTags:e.translatableTags},on:{"click-tags":function(t){return e.selectTag(t.tagName)},"prevent-blur":function(t){return e.$emit("update:preventedBlur",!0)},"focus-next":function(t){e.positionReversed?e.focusInput():e.$emit("focus-next")},"focus-prev":function(t){e.positionReversed?e.$emit("focus-prev"):e.focusInput()}}},"TagList",e.virtualKeyboardBind,!1)):e._e()],1)])},ao=[],so=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"clear-rounded-icon",attrs:{viewBox:"0 0 16 16",themeId:"clear-rounded"}},[t("title",[e._v(e._s(e.$t("icons.clear")))]),t("path",{attrs:{d:"M14.55,0l1.45,1.45-6.56,6.55,6.54,6.54-1.45,1.45-6.53-6.53L1.47,15.99,.01,14.53l6.52-6.53L0,1.47,1.45,.02l6.55,6.54L14.55,0Z","fill-rule":"evenodd"}})])},ro=[],oo={name:"ClearRoundedIcon",components:{SVGIcon:hr.Z}},lo=oo,co=(0,j.Z)(lo,so,ro,!1,null,null,null),uo=co.exports;function ho(){if(window.getSelection)try{const{activeElement:e}=document;return e&&e.value?e.value.substring(e.selectionStart,e.selectionEnd):window.getSelection().toString()}catch(e){return""}else if(document.selection&&"Control"!==document.selection.type)return document.selection.createRange().text;return""}function po(e){if("number"===typeof e.selectionStart)e.selectionStart=e.selectionEnd=e.value.length;else if("undefined"!==typeof e.createTextRange){e.focus();const t=e.createTextRange();t.collapse(!1),t.select()}}function go(e){e.selectionStart=e.selectionEnd=0}function fo(e){return/^[\w\W\s]$/.test(e)}function mo(e){const t=e.match(/(.*)<\/data>/);try{return t?JSON.parse(t[1]):null}catch(n){return null}}function yo(e){return"string"!==typeof e&&(e=JSON.stringify(e)),`${e}`}function vo(e,t,n,i){let a,s;return function(...r){function o(){clearTimeout(a),a=null}function l(){o(),e.apply(s,r)}if(s=this,!a||!n&&!i){if(!n)return o(),void(a=setTimeout(l,t));a=setTimeout(o,t),e.apply(s,r)}}}const bo=280,To=100;var _o={data(){return{keyboardIsVirtual:!1,activeTags:[],initTagIndex:null,focusedTagIndex:null,metaKey:!1,shiftKey:!1,tabbing:!1,debouncedHandleDeleteTag:null}},constants:{DebounceDelay:bo,VirtualKeyboardThreshold:To},computed:{virtualKeyboardBind:({keyboardIsVirtual:e})=>({keyboardIsVirtual:e}),allSelectedTagsAreActive:({selectedTags:e,activeTags:t})=>e.every((e=>t.includes(e)))},methods:{selectRangeActiveTags(e=this.focusedTagIndex,t=this.selectedTags.length){this.activeTags=this.selectedTags.slice(e,t)},selectTag(e){this.updateSelectedTags([e]),this.setFilterInput("")},unselectActiveTags(){this.activeTags.length&&(this.deleteTags(this.activeTags),this.resetActiveTags())},async deleteHandler(e){this.activeTags.length>0&&this.setSelectedTags(this.selectedTags.filter((e=>!this.activeTags.includes(e)))),this.inputIsSelected()&&this.allSelectedTagsAreActive?(e.preventDefault(),await this.resetFilters()):0===this.$refs.input.selectionEnd&&this.hasSelectedTags&&(e.preventDefault(),this.keyboardIsVirtual?this.setSelectedTags(this.selectedTags.slice(0,-1)):this.$refs.selectedTags.focusLast()),this.unselectActiveTags()},leftKeyInputHandler(e){if(this.assignEventValues(e),this.hasSelectedTags){if(this.activeTags.length&&!this.shiftKey)return e.preventDefault(),void this.$refs.selectedTags.focusTag(this.activeTags[0]);if(this.shiftKey&&0===this.$refs.input.selectionStart&&"forward"!==this.$refs.input.selectionDirection)return null===this.focusedTagIndex&&(this.focusedTagIndex=this.selectedTags.length),this.focusedTagIndex>0&&(this.focusedTagIndex-=1),this.initTagIndex=this.selectedTags.length,void this.selectTagsPressingShift();(0===this.$refs.input.selectionEnd||this.inputIsSelected())&&this.$refs.selectedTags.focusLast()}},rightKeyInputHandler(e){if(this.assignEventValues(e),this.activeTags.length&&this.shiftKey&&this.focusedTagIndex=To&&(this.keyboardIsVirtual=!0)}),bo),setFilterInput(e){this.$emit("update:input",e)},setSelectedTags(e){this.$emit("update:selectedTags",e)},updateSelectedTags(e){this.setSelectedTags([...new Set([...this.selectedTags,...e])])},handleCopy(e){e.preventDefault();const t=[],n={tags:[],input:ho()};if(this.activeTags.length){const e=this.activeTags;n.tags=e,t.push(e.join(" "))}return t.push(n.input),n.tags.length||n.input.length?(e.clipboardData.setData("text/html",yo(n)),e.clipboardData.setData("text/plain",t.join(" ")),n):n},handleCut(e){e.preventDefault();const{input:t,tags:n}=this.handleCopy(e);if(!t&&!n.length)return;const i=this.selectedTags.filter((e=>!n.includes(e))),a=this.input.replace(t,"");this.setSelectedTags(i),this.setFilterInput(a)},handlePaste(e){e.preventDefault();const{types:t}=e.clipboardData;let n=[],i=e.clipboardData.getData("text/plain");if(t.includes("text/html")){const t=e.clipboardData.getData("text/html"),a=mo(t);a&&({tags:n=[],input:i=""}=a)}const a=ho();i=a.length?this.input.replace(a,i):(0,bn.ZQ)(this.input,i,document.activeElement.selectionStart),this.setFilterInput(i.trim()),n.length&&(this.allSelectedTagsAreActive?this.setSelectedTags(n):this.updateSelectedTags(n)),this.resetActiveTags()},async handleDeleteTag({tagName:e,event:t={}}){const{key:n}=t;this.activeTags.length||this.deleteTags([e]),this.unselectActiveTags(),await this.$nextTick(),po(this.$refs.input),this.hasSelectedTags&&(await this.focusInput(),"Backspace"===n&&go(this.$refs.input))}},mounted(){window.visualViewport&&(window.visualViewport.addEventListener("resize",this.updateKeyboardType),this.$once("hook:beforeDestroy",(()=>{window.visualViewport.removeEventListener("resize",this.updateKeyboardType)})))}};const So=1e3;var ko={constants:{ScrollingDebounceDelay:So},data(){return{isScrolling:!1,scrollRemovedAt:0}},created(){this.deleteScroll=vo(this.deleteScroll,So)},methods:{deleteScroll(){this.isScrolling=!1,this.scrollRemovedAt=Date.now()},handleScroll(e){const{target:t}=e;if(0!==t.scrollTop)return t.scrollTop=0,void e.preventDefault();const n=150,i=t.offsetWidth,a=i+n;if(t.scrollWidth0?this.focusIndex(this.focusedIndex-1):this.startingPointHook())},focusNext({metaKey:e,ctrlKey:t,shiftKey:n}){(e||t)&&n||(this.externalFocusChange=!1,this.focusedIndex0}},Ao=function(){var e=this,t=e._self._c;return t("li",{staticClass:"tag",attrs:{role:"presentation"}},[t("button",{ref:"button",class:{focus:e.isActiveTag},attrs:{role:"option","aria-selected":e.ariaSelected,"aria-roledescription":"tag"},on:{focus:function(t){return e.$emit("focus",{event:t,tagName:e.name})},click:function(t){return t.preventDefault(),e.$emit("click",{event:t,tagName:e.name})},dblclick:function(t){t.preventDefault(),!e.keyboardIsVirtual&&e.deleteTag()},keydown:[function(t){return t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.$emit("keydown",{event:t,tagName:e.name})},function(t){return t.shiftKey?t.ctrlKey||t.altKey||t.metaKey?null:e.$emit("keydown",{event:t,tagName:e.name}):null},function(t){return t.shiftKey&&t.metaKey?t.ctrlKey||t.altKey?null:e.$emit("keydown",{event:t,tagName:e.name}):null},function(t){return t.metaKey?t.ctrlKey||t.shiftKey||t.altKey?null:e.$emit("keydown",{event:t,tagName:e.name}):null},function(t){return t.ctrlKey?t.shiftKey||t.altKey||t.metaKey?null:e.$emit("keydown",{event:t,tagName:e.name}):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:(t.preventDefault(),e.deleteTag.apply(null,arguments))}],mousedown:function(t){return t.preventDefault(),e.focusButton.apply(null,arguments)},copy:e.handleCopy}},[e.isRemovableTag?e._e():t("span",{staticClass:"visuallyhidden"},[e._v(" "+e._s(e.$t("filter.add-tag"))+" - ")]),e.isTranslatableTag?[e._v(" "+e._s(e.$t(e.name))+" ")]:[e._v(" "+e._s(e.name)+" ")],e.isRemovableTag?t("span",{staticClass:"visuallyhidden"},[e._v(" – "+e._s(e.$t("filter.tag-select-remove"))+" ")]):e._e()],2)])},No=[],Ro={name:"Tag",props:{name:{type:String,required:!0},isFocused:{type:Boolean,default:()=>!1},isRemovableTag:{type:Boolean,default:!1},isTranslatableTag:{type:Boolean,default:!1},isActiveTag:{type:Boolean,default:!1},activeTags:{type:Array,required:!1},keyboardIsVirtual:{type:Boolean,default:!1}},watch:{isFocused(e){e&&this.focusButton()}},mounted(){document.addEventListener("copy",this.handleCopy),document.addEventListener("cut",this.handleCut),document.addEventListener("paste",this.handlePaste),this.$once("hook:beforeDestroy",(()=>{document.removeEventListener("copy",this.handleCopy),document.removeEventListener("cut",this.handleCut),document.removeEventListener("paste",this.handlePaste)}))},methods:{isCurrentlyActiveElement(){return document.activeElement===this.$refs.button},handleCopy(e){if(!this.isCurrentlyActiveElement())return;e.preventDefault();let t=[];t=this.activeTags.length>0?this.activeTags:[this.name],e.clipboardData.setData("text/html",yo({tags:t})),e.clipboardData.setData("text/plain",t.join(" "))},handleCut(e){this.isCurrentlyActiveElement()&&this.isRemovableTag&&(this.handleCopy(e),this.deleteTag(e))},handlePaste(e){this.isCurrentlyActiveElement()&&this.isRemovableTag&&(e.preventDefault(),this.deleteTag(e),this.$emit("paste-content",e))},deleteTag(e){this.$emit("delete-tag",{tagName:this.name,event:e}),this.$emit("prevent-blur")},focusButton(e={}){this.keyboardIsVirtual||this.$refs.button.focus(),0===e.buttons&&this.isFocused&&this.deleteTag(e)}},computed:{ariaSelected:({isActiveTag:e,isRemovableTag:t})=>t?e?"true":"false":null}},Bo=Ro,Eo=(0,j.Z)(Bo,Ao,No,!1,null,"7e76f326",null),Mo=Eo.exports,zo={name:"Tags",mixins:[ko,Oo],props:{tags:{type:Array,default:()=>[]},activeTags:{type:Array,default:()=>[]},translatableTags:{type:Array,default:()=>[]},ariaLabel:{type:String,required:!1},id:{type:String,required:!1},input:{type:String,default:null},areTagsRemovable:{type:Boolean,default:!1},keyboardIsVirtual:{type:Boolean,default:!1}},components:{Tag:Mo},methods:{focusTag(e){this.focusIndex(this.tags.indexOf(e))},startingPointHook(){this.$emit("focus-prev")},handleFocus(e,t){this.focusIndex(t),this.isScrolling=!1,this.$emit("focus",e)},endingPointHook(){this.$emit("focus-next")},resetScroll(){this.$refs["scroll-wrapper"].scrollLeft=0},handleKeydown(e){const{key:t}=e,n=this.tags[this.focusedIndex];fo(t)&&n&&this.$emit("delete-tag",{tagName:n.label||n,event:e})}},computed:{totalItemsToNavigate:({tags:e})=>e.length}},Ko=zo,Zo=(0,j.Z)(Ko,Po,Lo,!1,null,"1f2bd813",null),qo=Zo.exports;const jo=5,Fo="filter-input",Ho="selected-tags",Vo="suggested-tags",Wo={autocorrect:"off",autocapitalize:"off",spellcheck:"false",role:"combobox","aria-haspopup":"true","aria-autocomplete":"none","aria-owns":"suggestedTags","aria-controls":"suggestedTags"};var Uo,Qo,Go={name:"FilterInput",mixins:[ko,_o],constants:{FilterInputId:Fo,SelectedTagsId:Ho,SuggestedTagsId:Vo,AXinputProperties:Wo,TagLimit:jo},components:{TagList:qo,ClearRoundedIcon:uo,FilterIcon:Do},props:{positionReversed:{type:Boolean,default:()=>!1},tags:{type:Array,default:()=>[]},selectedTags:{type:Array,default:()=>[]},preventedBlur:{type:Boolean,default:()=>!1},placeholder:{type:String,default:()=>""},disabled:{type:Boolean,default:()=>!1},value:{type:String,default:()=>""},shouldTruncateTags:{type:Boolean,default:!1},focusInputWhenCreated:{type:Boolean,default:!1},focusInputWhenEmpty:{type:Boolean,default:!1},selectInputOnFocus:{type:Boolean,default:!1},preventBorderStyle:{type:Boolean,default:!1},translatableTags:{type:Array,default:()=>[]}},data(){return{resetedTagsViaDeleteButton:!1,FilterInputId:Fo,SelectedTagsId:Ho,SuggestedTagsId:Vo,AXinputProperties:Wo,showSuggestedTags:!1}},computed:{hasSuggestedTags:({suggestedTags:e})=>e.length,hasSelectedTags:({selectedTags:e})=>e.length,inputIsNotEmpty:({input:e,hasSelectedTags:t})=>e.length||t,searchAriaLabelledBy:({hasSelectedTags:e})=>e?Fo.concat(" ",Ho):Fo,modelValue:{get:({value:e})=>e,set(e){this.$emit("input",e)}},input:({value:e})=>e,suggestedTags:({tags:e,selectedTags:t,shouldTruncateTags:n})=>{const i=e.filter((e=>!t.includes(e)));return n?i.slice(0,jo):i},displaySuggestedTags:({showSuggestedTags:e,suggestedTags:t})=>e&&t.length>0,inputMultipleSelectionListeners:({resetActiveTags:e,handleCopy:t,handleCut:n,handlePaste:i})=>({click:e,copy:t,cut:n,paste:i}),selectedTagsMultipleSelectionListeners:({handleSingleTagClick:e,selectInputAndTags:t,handleDeleteTag:n,selectedTagsKeydownHandler:i,focusTagHandler:a,handlePaste:s})=>({"click-tags":e,"select-all":t,"delete-tag":n,keydown:i,focus:a,"paste-tags":s})},watch:{async selectedTags(){this.resetedTagsViaDeleteButton?this.resetedTagsViaDeleteButton=!1:this.$el.contains(document.activeElement)&&await this.focusInput(),this.displaySuggestedTags&&this.hasSuggestedTags&&this.$refs.suggestedTags.resetScroll()},suggestedTags:{immediate:!0,handler(e){this.$emit("suggested-tags",e)}},showSuggestedTags(e){this.$emit("show-suggested-tags",e)}},methods:{async focusInput(){await this.$nextTick(),this.$refs.input.focus(),!this.input&&this.resetActiveTags&&this.resetActiveTags()},async resetFilters(e=!1){if(this.setFilterInput(""),this.setSelectedTags([]),!e)return this.$emit("update:preventedBlur",!0),this.resetActiveTags&&this.resetActiveTags(),void await this.focusInput();this.resetedTagsViaDeleteButton=!0,this.showSuggestedTags=!1,this.$refs.input.blur()},focusFirstTag(e=(()=>{})){this.showSuggestedTags||(this.showSuggestedTags=!0),this.hasSuggestedTags&&this.$refs.suggestedTags?this.$refs.suggestedTags.focusFirst():e()},setFilterInput(e){this.$emit("input",e)},setSelectedTags(e){this.$emit("update:selectedTags",e)},deleteTags(e){this.setSelectedTags(this.selectedTags.filter((t=>!e.includes(t))))},async handleBlur(e){const t=e.relatedTarget;t&&t.matches&&t.matches("button, input, ul")&&this.$el.contains(t)||(await this.$nextTick(),this.resetActiveTags(),this.preventedBlur?this.$emit("update:preventedBlur",!1):(this.showSuggestedTags=!1,this.$emit("blur")))},downHandler(e){const t=()=>this.$emit("focus-next",e);this.positionReversed?t():this.focusFirstTag(t)},upHandler(e){const t=()=>this.$emit("focus-prev",e);this.positionReversed?this.focusFirstTag(t):t()},handleFocusPrevOnSelectedTags(){this.positionReversed?this.focusFirstTag((()=>this.$emit("focus-prev"))):this.$emit("focus-prev")},handleFocus(){this.showSuggestedTags=!0,this.$emit("focus")}},created(){this.focusInputWhenCreated&&document.activeElement!==this.$refs.input&&(this.inputIsNotEmpty||this.focusInputWhenEmpty)&&this.focusInput()}},Xo=Go,Yo=(0,j.Z)(Xo,io,ao,!1,null,"9ad1ed4c",null),Jo=Yo.exports,el=n(5590),tl={name:"QuickNavigationHighlighter",props:{text:{type:String,required:!0},matcherText:{type:String,default:""}},render(e){const{matcherText:t,text:n}=this,i=[];let a=0;return t?([...t].forEach((t=>{const s=n.toLowerCase().indexOf(t.toLowerCase(),a);a&&i.push(e("span",n.slice(a,s)));const r=s+1;i.push(e("span",{class:"match"},n.slice(s,r))),a=r})),e("p",{class:"highlight"},i)):e("span",{class:"highlight"},n)}},nl=tl,il=(0,j.Z)(nl,Uo,Qo,!1,null,"4a2ce75d",null),al=il.exports,sl=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"magnifier-icon",attrs:{viewBox:"0 0 14 14",themeId:"magnifier"}},[t("path",{attrs:{d:"M15.0013 14.0319L10.9437 9.97424C11.8165 8.88933 12.2925 7.53885 12.2929 6.14645C12.2929 2.75841 9.53449 0 6.14645 0C2.75841 0 0 2.75841 0 6.14645C0 9.53449 2.75841 12.2929 6.14645 12.2929C7.57562 12.2929 8.89486 11.7932 9.94425 10.9637L14.0019 15.0213L15.0013 14.0319ZM6.13645 11.0736C4.83315 11.071 3.58399 10.5521 2.66241 9.63048C1.74084 8.70891 1.22194 7.45974 1.2193 6.15644C1.2193 3.44801 3.41802 1.23928 6.13645 1.23928C8.85488 1.23928 11.0536 3.44801 11.0536 6.15644C11.0636 8.86488 8.85488 11.0736 6.13645 11.0736Z"}})])},rl=[],ol={name:"MagnifierIcon",components:{SVGIcon:hr.Z}},ll=ol,cl=(0,j.Z)(ll,sl,rl,!1,null,null,null),dl=cl.exports,ul=function(){var e=this,t=e._self._c;return t("div",{staticClass:"preview"},[e.state===e.STATE.success?t("DocumentationTopic",e._b({attrs:{enableMinimized:""}},"DocumentationTopic",e.topicProps,!1)):e.state===e.STATE.loadingSlowly?t("div",{staticClass:"loading"},e._l(e.LOADER_ROW_STYLES,(function(e){return t("div",{key:e["--index"],staticClass:"loading-row",style:e})})),0):e.state===e.STATE.error?t("div",{staticClass:"unavailable"},[t("p",[e._v(e._s(e.$t("quicknav.preview-unavailable")))])]):e._e()],1)},hl=[],pl=n(220);const{extractProps:gl}=Hr.methods,fl="hero",ml={error:"error",loading:"loading",loadingSlowly:"loadingSlowly",success:"success"},yl={...pl.Z,state:(0,x.d9)(pl.Z.state)};var vl={name:"QuickNavigationPreview",components:{DocumentationTopic:Hr},constants:{PreviewState:ml,PreviewStore:yl},data(){return{store:yl}},provide(){return{store:this.store}},props:{json:{type:Object,required:!1},state:{type:String,required:!0,validator:e=>Object.hasOwnProperty.call(ml,e)}},computed:{LOADER_ROW_STYLES:()=>[{"--index":0,width:"30%"},{"--index":1,width:"80%"},{"--index":2,width:"50%"}],STATE:()=>ml,topicProps:({json:e})=>{const t=gl(e),{sections:n=[]}=e;let{abstract:i}=t;const a=n.find((({kind:e})=>e===fl));return!i&&a&&(i=a.content),{...t,abstract:i}}}},bl=vl,Tl=(0,j.Z)(bl,ul,hl,!1,null,"779b8b01",null),_l=Tl.exports;class Sl{constructor(e){this.map=new Map,this.maxSize=e}get size(){return this.map.size}get(e){if(!this.map.has(e))return;const t=this.map.get(e);return this.map.delete(e),this.map.set(e,t),t}has(e){return this.map.has(e)}set(e,t){if(this.map.has(e)&&this.map.delete(e),this.map.set(e,t),this.map.size>this.maxSize){const e=this.map.keys().next().value;this.map.delete(e)}}*[Symbol.iterator](){yield*this.map}}const kl="",Cl=32,wl="navigator-hide-button";function xl(e){return e.split("").reduce(((e,t)=>(e<<5)-e+t.charCodeAt(0)|0),0)}function Il(e){const t={},n=e.length;for(let i=0;ie.parent===kl));const i=t[e];return i?(i.childUIDs||[]).map((e=>t[e])):[]}function Ll(e,t){const n=[],i=[e];let a=null;while(i.length){a=i.pop();const e=t[a];if(!e)return[];n.unshift(e),e.parent&&e.parent!==kl&&i.push(e.parent)}return n}function Ol(e,t,n){const i=t[e];return i?Pl(i.parent,t,n):[]}var Al=n(9652);const{PreviewState:Nl}=_l.constants,Rl="AbortError",Bl=20,El=1e3;var Ml={name:"QuickNavigationModal",components:{FilterInput:Jo,GenericModal:el.Z,MagnifierIcon:dl,TopicTypeIcon:Ce.Z,QuickNavigationHighlighter:al,Reference:Va.Z,Preview:_l},mixins:[Oo],created(){this.abortController=null,this.$cachedSymbolResults=new Sl(Bl),this.loadingTimeout=null},data(){return{debouncedInput:"",userInput:"",focusedInput:!1,cachedSymbolResults:{},previewIsLoadingSlowly:!1,SCROLL_LOCK_DISABLE_ATTR:Al.n}},props:{children:{type:Array,required:!0},showQuickNavigationModal:{type:Boolean,required:!0},technology:{type:String,required:!1}},computed:{childrenMap({children:e}){return Il(e)},filteredSymbols:({constructFuzzyRegex:e,children:t,fuzzyMatch:n,processedUserInput:i,childrenMap:a,orderSymbolsByPriority:s})=>{const r=t.filter((e=>"groupMarker"!==e.type&&null!=e.title));if(!i)return[];const o=n({inputLength:i.length,symbols:r,processedInputRegex:new RegExp(e(i),"i"),childrenMap:a}),l=[...new Map(o.map((e=>[e.path,e]))).values()];return s(l).slice(0,Bl)},placeholderText(){return this.technology?this.$t("filter.search-symbols",{technology:this.technology}):this.$t("filter.search")},isVisible:{get:({showQuickNavigationModal:e})=>e,set(e){this.$emit("update:showQuickNavigationModal",e)}},noResultsWereFound:({processedUserInput:e,totalItemsToNavigate:t})=>e.length&&!t,processedUserInput:({debouncedInput:e})=>e.replace(/\s/g,""),totalItemsToNavigate:({filteredSymbols:e})=>e.length,selectedSymbol:({filteredSymbols:e,focusedIndex:t})=>null!==t?e[t]:null,nextSymbol:({filteredSymbols:e,focusedIndex:t})=>{if(null===t)return null;let n=t+1;return n>=e.length&&(n=0),e[n]},focusedMatchElement:({$refs:e,focusedIndex:t})=>e.match.find((({$el:e})=>parseInt(e.dataset.index,10)===t)).$el,previewJSON:({cachedSymbolResults:e,selectedSymbol:t})=>t?(e[t.uid]||{}).json:null,previewState:({cachedSymbolResults:e,previewIsLoadingSlowly:t,selectedSymbol:n})=>n&&Object.hasOwnProperty.call(e,n.uid)?e[n.uid].success?Nl.success:Nl.error:t?Nl.loadingSlowly:Nl.loading},watch:{userInput:"debounceInput",focusedIndex(){this.focusedInput||(this.scrollIntoView(),this.focusReference())},selectedSymbol:"fetchSelectedSymbolData",$route:"closeQuickNavigationModal"},methods:{closeQuickNavigationModal(){this.$emit("update:showQuickNavigationModal",!1)},constructFuzzyRegex(e){return[...e].reduce(((t,n,i)=>t.concat(`[${n}]`).concat(i{const a=n.exec(t.title);if(!a)return!1;const s=a[0].length;return!(s>3*e)&&{uid:t.uid,title:t.title,path:t.path,parents:Ll(t.parent,i),type:t.type,inputLengthDifference:t.title.length-e,matchLength:s,matchLengthDifference:s-e,start:a.index,substring:a[0]}})).filter(Boolean)},handleKeyEnter(){!this.noResultsWereFound&&this.userInput.length&&(this.$router.push(this.filteredSymbols[this.focusedIndex].path),this.closeQuickNavigationModal())},orderSymbolsByPriority(e){return e.sort(((e,t)=>e.matchLengthDifference>t.matchLengthDifference?1:e.matchLengthDifferencet.start?1:e.startt.inputLengthDifference?1:e.inputLengthDifference{this.previewState===Nl.loading&&(this.previewIsLoadingSlowly=!0)}),El),!this.selectedSymbol||this.$cachedSymbolResults.has(this.selectedSymbol.uid))return clearTimeout(this.loadingTimeout),void(this.previewIsLoadingSlowly=!1);const e=async e=>{if(e&&!this.$cachedSymbolResults.has(e.uid))try{const t=await(0,x.k_)(e.path,{signal:this.abortController.signal});this.$cachedSymbolResults.set(e.uid,{success:!0,json:t})}catch(t){t.name!==Rl&&this.$cachedSymbolResults.set(e.uid,{success:!1})}finally{this.cachedSymbolResults=Object.freeze(Object.fromEntries(this.$cachedSymbolResults))}};this.abortController&&this.abortController.abort(),this.abortController=new AbortController,await Promise.all([e(this.selectedSymbol).finally((()=>{clearTimeout(this.loadingTimeout),this.previewIsLoadingSlowly=!1})),e(this.nextSymbol)])}}},zl=Ml,Kl=(0,j.Z)(zl,to,no,!1,null,"2f89fac2",null),Zl=Kl.exports,ql=function(){var e=this,t=e._self._c;return t("div",{staticClass:"adjustable-sidebar-width",class:{dragging:e.isDragging,"sidebar-hidden":!e.enableNavigator||e.hiddenOnLarge}},[e.enableNavigator?t("div",{ref:"sidebar",staticClass:"sidebar"},[t("div",{ref:"aside",staticClass:"aside",class:e.asideClasses,style:e.asideStyles,attrs:{"aria-hidden":e.hiddenOnLarge?"true":null},on:{transitionstart:function(t){return t.target!==t.currentTarget?null:e.trackTransitionStart.apply(null,arguments)},transitionend:function(t){return t.target!==t.currentTarget?null:e.trackTransitionEnd.apply(null,arguments)}}},[e._t("aside",null,{animationClass:"aside-animated-child",scrollLockID:e.scrollLockID,breakpoint:e.breakpoint})],2),e.fixedWidth?e._e():t("div",{staticClass:"resize-handle",on:{mousedown:function(t){return t.preventDefault(),e.startDrag.apply(null,arguments)},touchstart:function(t){return t.preventDefault(),e.startDrag.apply(null,arguments)}}})]):e._e(),t("div",{ref:"content",staticClass:"content"},[e._t("default")],2),e.enableNavigator?t("BreakpointEmitter",{attrs:{scope:e.BreakpointScopes.nav},on:{change:function(t){e.breakpoint=t}}}):e._e()],1)},jl=[],Fl=n(7247),Hl=n(7188),Vl=n(114),Wl=n(1147),Ul=n(1716);const Ql="sidebar",Gl=1521,Xl=543,Yl=400,Jl={touch:{move:"touchmove",end:"touchend"},mouse:{move:"mousemove",end:"mouseup"}},ec=(e,t=window.innerWidth)=>{const n=Math.min(t,Gl);return Math.floor(Math.min(n*(e/100),n))},tc={medium:30,large:30},nc={medium:50,large:40},ic="sidebar-scroll-lock";var ac={name:"AdjustableSidebarWidth",constants:{SCROLL_LOCK_ID:ic},components:{BreakpointEmitter:Hl["default"]},inject:["store"],props:{shownOnMobile:{type:Boolean,default:!1},enableNavigator:{type:Boolean,default:!0},hiddenOnLarge:{type:Boolean,default:!1},fixedWidth:{type:Number,default:null}},data(){const e=window.innerWidth,t=window.innerHeight,n=or.L3.large,i=ec(tc[n]),a=ec(nc[n]),s=e>=Gl?Xl:Yl,r=Fl.tO.get(Ql,s);return{isDragging:!1,width:this.fixedWidth||Math.min(Math.max(r,i),a),isTouch:!1,windowWidth:e,windowHeight:t,breakpoint:n,noTransition:!1,isTransitioning:!1,isOpeningOnLarge:!1,focusTrapInstance:null,mobileTopOffset:0,topOffset:0}},computed:{minWidthPercent:({breakpoint:e})=>tc[e]||0,maxWidthPercent:({breakpoint:e})=>nc[e]||100,maxWidth:({maxWidthPercent:e,windowWidth:t,fixedWidth:n})=>Math.max(n,ec(e,t)),minWidth:({minWidthPercent:e,windowWidth:t,fixedWidth:n})=>Math.min(n||t,ec(e,t)),widthInPx:({width:e})=>`${e}px`,hiddenOnLargeThreshold:({minWidth:e})=>e/2,events:({isTouch:e})=>e?Jl.touch:Jl.mouse,asideStyles:({widthInPx:e,mobileTopOffset:t,topOffset:n,windowHeight:i})=>({width:e,"--top-offset":n?`${n}px`:null,"--top-offset-mobile":`${t}px`,"--app-height":`${i}px`}),asideClasses:({isDragging:e,shownOnMobile:t,noTransition:n,isTransitioning:i,hiddenOnLarge:a,mobileTopOffset:s,isOpeningOnLarge:r})=>({dragging:e,"show-on-mobile":t,"hide-on-large":a,"is-opening-on-large":r,"no-transition":n,"sidebar-transitioning":i,"has-mobile-top-offset":s}),scrollLockID:()=>ic,BreakpointScopes:()=>or.lU},async mounted(){window.addEventListener("keydown",this.onEscapeKeydown),window.addEventListener("resize",this.storeWindowSize,{passive:!0}),window.addEventListener("orientationchange",this.storeWindowSize,{passive:!0}),this.storeTopOffset(),0===this.topOffset&&0===window.scrollY||window.addEventListener("scroll",this.storeTopOffset,{passive:!0}),this.$once("hook:beforeDestroy",(()=>{window.removeEventListener("keydown",this.onEscapeKeydown),window.removeEventListener("resize",this.storeWindowSize),window.removeEventListener("orientationchange",this.storeWindowSize),window.removeEventListener("scroll",this.storeTopOffset),this.shownOnMobile&&this.toggleScrollLock(!1),this.focusTrapInstance&&this.focusTrapInstance.destroy()})),await this.$nextTick(),this.focusTrapInstance=new Vl.Z(this.$refs.aside)},watch:{$route:"closeMobileSidebar",width:{immediate:!0,handler:Be((function(e){this.emitEventChange(e)}),150)},windowWidth:"getWidthInCheck",async breakpoint(e){this.getWidthInCheck(),e===or.L3.large&&this.closeMobileSidebar(),this.noTransition=!0,await(0,Ee.J)(5),this.noTransition=!1},shownOnMobile:"handleExternalOpen",async isTransitioning(e){e?(await(0,Ee.X)(1e3),this.isTransitioning=!1):this.updateContentWidthInStore()},hiddenOnLarge(){this.isTransitioning=!0}},methods:{getWidthInCheck:vo((function(){this.width>this.maxWidth?this.width=this.maxWidth:this.widththis.maxWidth&&(i=this.maxWidth),this.hiddenOnLarge&&i>=this.hiddenOnLargeThreshold&&(this.$emit("update:hiddenOnLarge",!1),this.isOpeningOnLarge=!0),this.width=Math.max(i,this.minWidth),i<=this.hiddenOnLargeThreshold&&this.$emit("update:hiddenOnLarge",!0)},stopDrag(e){e.preventDefault(),this.isDragging&&(this.isDragging=!1,Fl.tO.set(Ql,this.width),document.removeEventListener(this.events.move,this.handleDrag),document.removeEventListener(this.events.end,this.stopDrag),this.emitEventChange(this.width))},emitEventChange(e){this.$emit("width-change",e),this.updateContentWidthInStore()},getTopOffset(){const e=document.getElementById(Ul.EA);if(!e)return 0;const{y:t}=e.getBoundingClientRect();return Math.max(t,0)},handleExternalOpen(e){e&&(this.mobileTopOffset=this.getTopOffset()),this.toggleScrollLock(e)},async updateContentWidthInStore(){await this.$nextTick(),this.store.setContentWidth(this.$refs.content.offsetWidth)},async toggleScrollLock(e){const t=document.getElementById(this.scrollLockID);e?(await this.$nextTick(),Al.Z.lockScroll(t),this.focusTrapInstance.start(),Wl.Z.hide(this.$refs.aside)):(Al.Z.unlockScroll(t),this.focusTrapInstance.stop(),Wl.Z.show(this.$refs.aside))},storeTopOffset:Be((function(){this.topOffset=this.getTopOffset()}),60),async trackTransitionStart({propertyName:e}){"width"!==e&&"transform"!==e||(this.isTransitioning=!0)},trackTransitionEnd({propertyName:e}){"width"!==e&&"transform"!==e||(this.isTransitioning=!1,this.isOpeningOnLarge=!1)}}},sc=ac,rc=(0,j.Z)(sc,ql,jl,!1,null,"1a55f7f5",null),oc=rc.exports,lc=function(){var e=this,t=e._self._c;return t("nav",{staticClass:"navigator",attrs:{"aria-labelledby":e.INDEX_ROOT_KEY}},[t("NavigatorCard",e._b({directives:[{name:"show",rawName:"v-show",value:!e.isFetching,expression:"!isFetching"}],attrs:{type:e.type,children:e.flatChildren,"active-path":e.activePath,scrollLockID:e.scrollLockID,"error-fetching":e.errorFetching,"render-filter-on-top":e.renderFilterOnTop,"api-changes":e.apiChanges,"navigator-references":e.navigatorReferences},on:{close:function(t){return e.$emit("close")}},scopedSlots:e._u([{key:"filter",fn:function(){return[e._t("filter")]},proxy:!0},{key:"navigator-head",fn:function(){return[e._t("navigator-head",null,{className:"nav-title"})]},proxy:!0}],null,!0)},"NavigatorCard",e.technologyProps,!1)),e.isFetching?t("LoadingNavigatorCard",{on:{close:function(t){return e.$emit("close")}}}):e._e(),t("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"polite"}},[e._v(" "+e._s(e.$t("navigator.navigator-is",{state:e.isFetching?e.$t("navigator.state.loading"):e.$t("navigator.state.ready")}))+" ")])],1)},cc=[],dc=function(){var e=this,t=e._self._c;return t("BaseNavigatorCard",e._b({class:{"filter-on-top":e.renderFilterOnTop},on:{close:function(t){return e.$emit("close")}},scopedSlots:e._u([{key:"above-navigator-head",fn:function(){return[e._t("above-navigator-head")]},proxy:!0},{key:"navigator-head",fn:function(){return[e._t("navigator-head")]},proxy:!0},{key:"body",fn:function({className:n}){return[e._t("post-head"),t("div",{class:n,on:{"!keydown":[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:t.altKey?(t.preventDefault(),e.focusFirst.apply(null,arguments)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:t.altKey?(t.preventDefault(),e.focusLast.apply(null,arguments)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusPrev.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusNext.apply(null,arguments))}]}},[e.technology?t("Reference",{class:["technology-title",{"router-link-exact-active":e.isTechnologyRoute}],attrs:{id:e.INDEX_ROOT_KEY,url:e.technologyPath},nativeOn:{click:function(t){return t.altKey?(t.preventDefault(),e.toggleAllNodes.apply(null,arguments)):null}}},[t("h2",{staticClass:"card-link"},[e._v(" "+e._s(e.technology)+" ")]),e.isTechnologyBeta?t("Badge",{attrs:{variant:"beta"}}):e._e()],1):e._e(),t("DynamicScroller",{directives:[{name:"show",rawName:"v-show",value:e.hasNodes,expression:"hasNodes"}],ref:"scroller",staticClass:"scroller",attrs:{id:e.scrollLockID,"aria-label":e.$t("navigator.title"),items:e.navigatorItems,"min-item-size":e.itemSize,"emit-update":"","key-field":"uid"},on:{update:e.handleScrollerUpdate,"!keydown":[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:t.altKey?(t.preventDefault(),e.focusFirst.apply(null,arguments)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:t.altKey?(t.preventDefault(),e.focusLast.apply(null,arguments)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusPrev.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusNext.apply(null,arguments))}]},nativeOn:{focusin:function(t){return e.handleFocusIn.apply(null,arguments)},focusout:function(t){return e.handleFocusOut.apply(null,arguments)}},scopedSlots:e._u([{key:"default",fn:function({item:n,active:i,index:a}){return[t("DynamicScrollerItem",e._b({ref:`dynamicScroller_${n.uid}`},"DynamicScrollerItem",{active:i,item:n,dataIndex:a},!1),[t("NavigatorCardItem",{attrs:{item:n,isRendered:i,"filter-pattern":e.filterPattern,"filter-text":e.debouncedFilter,"is-active":n.uid===e.activeUID,"is-bold":e.activePathMap[n.uid],expanded:e.openNodes[n.uid],"api-change":e.apiChangesObject[n.path],isFocused:e.focusedIndex===a,enableFocus:!e.externalFocusChange,"navigator-references":e.navigatorReferences},on:{toggle:e.toggle,"toggle-full":e.toggleFullTree,"toggle-siblings":e.toggleSiblings,navigate:e.handleNavigationChange,"focus-parent":e.focusNodeParent}})],1)]}}],null,!0)}),t("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"polite"}},[e._v(" "+e._s(e.politeAriaLive)+" ")]),t("div",{staticClass:"no-items-wrapper",attrs:{"aria-live":"assertive"}},[t("p",{staticClass:"no-items"},[e._v(e._s(e.$t(e.assertiveAriaLive)))])])],1),e.errorFetching?e._e():t("div",{staticClass:"filter-wrapper"},[t("div",{staticClass:"navigator-filter"},[t("div",{staticClass:"input-wrapper"},[t("FilterInput",{staticClass:"filter-component",attrs:{tags:e.suggestedTags,translatableTags:e.translatableTags,"selected-tags":e.selectedTags,placeholder:e.$t("filter.title"),"should-keep-open-on-blur":!1,shouldTruncateTags:e.shouldTruncateTags,"position-reversed":!e.renderFilterOnTop},on:{"update:selectedTags":function(t){e.selectedTags=t},"update:selected-tags":function(t){e.selectedTags=t},clear:e.clearFilters},model:{value:e.filter,callback:function(t){e.filter=t},expression:"filter"}})],1),e._t("filter")],2)])]}}],null,!0)},"BaseNavigatorCard",{isTechnologyBeta:e.isTechnologyBeta,technologyPath:e.technologyPath},!1))},uc=[];function hc(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var n=e.indexOf("Trident/");if(n>0){var i=e.indexOf("rv:");return parseInt(e.substring(i+3,e.indexOf(".",i)),10)}var a=e.indexOf("Edge/");return a>0?parseInt(e.substring(a+5,e.indexOf(".",a)),10):-1}var pc=void 0;function gc(){gc.init||(gc.init=!0,pc=-1!==hc())}var fc={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"resize-observer",attrs:{tabindex:"-1"}})},staticRenderFns:[],_scopeId:"data-v-b329ee4c",name:"resize-observer",methods:{compareAndNotify:function(){this._w===this.$el.offsetWidth&&this._h===this.$el.offsetHeight||(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.$emit("notify"))},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!pc&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),delete this._resizeObject.onload)}},mounted:function(){var e=this;gc(),this.$nextTick((function(){e._w=e.$el.offsetWidth,e._h=e.$el.offsetHeight}));var t=document.createElement("object");this._resizeObject=t,t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex",-1),t.onload=this.addResizeHandlers,t.type="text/html",pc&&this.$el.appendChild(t),t.data="about:blank",pc||this.$el.appendChild(t)},beforeDestroy:function(){this.removeResizeHandlers()}};function mc(e){e.component("resize-observer",fc),e.component("ResizeObserver",fc)}var yc={version:"0.4.5",install:mc},vc=null;"undefined"!==typeof window?vc=window.Vue:"undefined"!==typeof n.g&&(vc=n.g.Vue),vc&&vc.use(yc);function bc(e){return bc="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},bc(e)}function Tc(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _c(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{},r=function(r){for(var o=arguments.length,l=new Array(o>1?o-1:0),c=1;c1){var i=e.find((function(e){return e.isIntersecting}));i&&(t=i)}if(n.callback){var a=t.isIntersecting&&t.intersectionRatio>=n.threshold;if(a===n.oldResult)return;n.oldResult=a,n.callback(a,t)}}),this.options.intersection),t.context.$nextTick((function(){n.observer&&n.observer.observe(n.el)}))}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&this.options.intersection.threshold||0}}]),e}();function Lc(e,t,n){var i=t.value;if(i)if("undefined"===typeof IntersectionObserver)console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var a=new Pc(e,i,n);e._vue_visibilityState=a}}function Oc(e,t,n){var i=t.value,a=t.oldValue;if(!Dc(i,a)){var s=e._vue_visibilityState;i?s?s.createObserver(i,n):Lc(e,{value:i},n):Ac(e)}}function Ac(e){var t=e._vue_visibilityState;t&&(t.destroyObserver(),delete e._vue_visibilityState)}var Nc={bind:Lc,update:Oc,unbind:Ac};function Rc(e){e.directive("observe-visibility",Nc)}var Bc={version:"0.4.6",install:Rc},Ec=null;"undefined"!==typeof window?Ec=window.Vue:"undefined"!==typeof n.g&&(Ec=n.g.Vue),Ec&&Ec.use(Bc);var Mc=n(7274),zc=n.n(Mc),Kc=n(144),Zc={itemsLimit:1e3};const qc={items:{type:Array,required:!0},keyField:{type:String,default:"id"},direction:{type:String,default:"vertical",validator:e=>["vertical","horizontal"].includes(e)},listTag:{type:String,default:"div"},itemTag:{type:String,default:"div"}};function jc(){return this.items.length&&"object"!==typeof this.items[0]}let Fc=!1;if("undefined"!==typeof window){Fc=!1;try{var Hc=Object.defineProperty({},"passive",{get(){Fc=!0}});window.addEventListener("test",null,Hc)}catch(bh){}}let Vc=0;var Wc={name:"RecycleScroller",components:{ResizeObserver:fc},directives:{ObserveVisibility:Nc},props:{...qc,itemSize:{type:Number,default:null},gridItems:{type:Number,default:void 0},itemSecondarySize:{type:Number,default:void 0},minItemSize:{type:[Number,String],default:null},sizeField:{type:String,default:"size"},typeField:{type:String,default:"type"},buffer:{type:Number,default:200},pageMode:{type:Boolean,default:!1},prerender:{type:Number,default:0},emitUpdate:{type:Boolean,default:!1},skipHover:{type:Boolean,default:!1},listTag:{type:String,default:"div"},itemTag:{type:String,default:"div"},listClass:{type:[String,Object,Array],default:""},itemClass:{type:[String,Object,Array],default:""}},data(){return{pool:[],totalSize:0,ready:!1,hoverKey:null}},computed:{sizes(){if(null===this.itemSize){const e={"-1":{accumulator:0}},t=this.items,n=this.sizeField,i=this.minItemSize;let a,s=1e4,r=0;for(let o=0,l=t.length;o{this.$_prerender=!1,this.updateVisibleItems(!0),this.ready=!0}))},activated(){const e=this.$_lastUpdateScrollPosition;"number"===typeof e&&this.$nextTick((()=>{this.scrollToPosition(e)}))},beforeDestroy(){this.removeListeners()},methods:{addView(e,t,n,i,a){const s={item:n,position:0},r={id:Vc++,index:t,used:!0,key:i,type:a};return Object.defineProperty(s,"nr",{configurable:!1,value:r}),e.push(s),s},unuseView(e,t=!1){const n=this.$_unusedViews,i=e.nr.type;let a=n.get(i);a||(a=[],n.set(i,a)),a.push(e),t||(e.nr.used=!1,e.position=-9999,this.$_views.delete(e.nr.key))},handleResize(){this.$emit("resize"),this.ready&&this.updateVisibleItems(!1)},handleScroll(e){this.$_scrollDirty||(this.$_scrollDirty=!0,requestAnimationFrame((()=>{this.$_scrollDirty=!1;const{continuous:e}=this.updateVisibleItems(!1,!0);e||(clearTimeout(this.$_refreshTimout),this.$_refreshTimout=setTimeout(this.handleScroll,100))})))},handleVisibilityChange(e,t){this.ready&&(e||0!==t.boundingClientRect.width||0!==t.boundingClientRect.height?(this.$emit("visible"),requestAnimationFrame((()=>{this.updateVisibleItems(!1)}))):this.$emit("hidden"))},updateVisibleItems(e,t=!1){const n=this.itemSize,i=this.gridItems||1,a=this.itemSecondarySize||n,s=this.$_computedMinItemSize,r=this.typeField,o=this.simpleArray?null:this.keyField,l=this.items,c=l.length,d=this.sizes,u=this.$_views,h=this.$_unusedViews,p=this.pool;let g,f,m,y,v,b;if(c)if(this.$_prerender)g=y=0,f=v=Math.min(this.prerender,l.length),m=null;else{const e=this.getScroll();if(t){let t=e.start-this.$_lastUpdateScrollPosition;if(t<0&&(t=-t),null===n&&te.start&&(a=s),s=~~((i+a)/2)}while(s!==n);for(s<0&&(s=0),g=s,m=d[c-1].accumulator,f=s;fc&&(f=c)),y=g;yc&&(f=c),y<0&&(y=0),v>c&&(v=c),m=Math.ceil(c/i)*n}}else g=f=y=v=m=0;f-g>Zc.itemsLimit&&this.itemsLimitError(),this.totalSize=m;const T=g<=this.$_endIndex&&f>=this.$_startIndex;if(this.$_continuous!==T){if(T){u.clear(),h.clear();for(let e=0,t=p.length;e=f)&&this.unuseView(b));const _=T?null:new Map;let S,k,C,w;for(let x=g;x=C.length)&&(b=this.addView(p,x,S,e,k),this.unuseView(b,!0),C=h.get(k)),b=C[w],b.item=S,b.nr.used=!0,b.nr.index=x,b.nr.key=e,b.nr.type=k,_.set(k,w+1),w++),u.set(e,b)),null===n?(b.position=d[x-1].accumulator,b.offset=0):(b.position=Math.floor(x/i)*n,b.offset=x%i*a)):b&&this.unuseView(b)}return this.$_startIndex=g,this.$_endIndex=f,this.emitUpdate&&this.$emit("update",g,f,y,v),clearTimeout(this.$_sortTimer),this.$_sortTimer=setTimeout(this.sortViews,300),{continuous:T}},getListenerTarget(){let e=zc()(this.$el);return!window.document||e!==window.document.documentElement&&e!==window.document.body||(e=window),e},getScroll(){const{$el:e,direction:t}=this,n="vertical"===t;let i;if(this.pageMode){const t=e.getBoundingClientRect(),a=n?t.height:t.width;let s=-(n?t.top:t.left),r=n?window.innerHeight:window.innerWidth;s<0&&(r+=s,s=0),s+r>a&&(r=a-s),i={start:s,end:s+r}}else i=n?{start:e.scrollTop,end:e.scrollTop+e.clientHeight}:{start:e.scrollLeft,end:e.scrollLeft+e.clientWidth};return i},applyPageMode(){this.pageMode?this.addListeners():this.removeListeners()},addListeners(){this.listenerTarget=this.getListenerTarget(),this.listenerTarget.addEventListener("scroll",this.handleScroll,!!Fc&&{passive:!0}),this.listenerTarget.addEventListener("resize",this.handleResize)},removeListeners(){this.listenerTarget&&(this.listenerTarget.removeEventListener("scroll",this.handleScroll),this.listenerTarget.removeEventListener("resize",this.handleResize),this.listenerTarget=null)},scrollToItem(e){let t;t=null===this.itemSize?e>0?this.sizes[e-1].accumulator:0:Math.floor(e/this.gridItems)*this.itemSize,this.scrollToPosition(t)},scrollToPosition(e){const t="vertical"===this.direction?{scroll:"scrollTop",start:"top"}:{scroll:"scrollLeft",start:"left"};let n,i,a;if(this.pageMode){const s=zc()(this.$el),r="HTML"===s.tagName?0:s[t.scroll],o=s.getBoundingClientRect(),l=this.$el.getBoundingClientRect(),c=l[t.start]-o[t.start];n=s,i=t.scroll,a=e+r+c}else n=this.$el,i=t.scroll,a=e;n[i]=a},itemsLimitError(){throw setTimeout((()=>{console.log("It seems the scroller element isn't scrolling, so it tries to render all the items at once.","Scroller:",this.$el),console.log("Make sure the scroller has a fixed height (or width) and 'overflow-y' (or 'overflow-x') set to 'auto' so it can scroll correctly and only render the items visible in the scroll viewport.")})),new Error("Rendered items limit reached")},sortViews(){this.pool.sort(((e,t)=>e.nr.index-t.nr.index))}}};function Uc(e,t,n,i,a,s,r,o,l,c){"boolean"!==typeof r&&(l=o,o=r,r=!1);const d="function"===typeof n?n.options:n;let u;if(e&&e.render&&(d.render=e.render,d.staticRenderFns=e.staticRenderFns,d._compiled=!0,a&&(d.functional=!0)),i&&(d._scopeId=i),s?(u=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,l(e)),e&&e._registeredComponents&&e._registeredComponents.add(s)},d._ssrRegister=u):t&&(u=r?function(e){t.call(this,c(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,o(e))}),u)if(d.functional){const e=d.render;d.render=function(t,n){return u.call(n),e(t,n)}}else{const e=d.beforeCreate;d.beforeCreate=e?[].concat(e,u):[u]}return n}const Qc=Wc;var Gc=function(){var e,t,n=this,i=n.$createElement,a=n._self._c||i;return a("div",{directives:[{name:"observe-visibility",rawName:"v-observe-visibility",value:n.handleVisibilityChange,expression:"handleVisibilityChange"}],staticClass:"vue-recycle-scroller",class:(e={ready:n.ready,"page-mode":n.pageMode},e["direction-"+n.direction]=!0,e),on:{"&scroll":function(e){return n.handleScroll.apply(null,arguments)}}},[n.$slots.before?a("div",{ref:"before",staticClass:"vue-recycle-scroller__slot"},[n._t("before")],2):n._e(),n._v(" "),a(n.listTag,{ref:"wrapper",tag:"component",staticClass:"vue-recycle-scroller__item-wrapper",class:n.listClass,style:(t={},t["vertical"===n.direction?"minHeight":"minWidth"]=n.totalSize+"px",t)},[n._l(n.pool,(function(e){return a(n.itemTag,n._g({key:e.nr.id,tag:"component",staticClass:"vue-recycle-scroller__item-view",class:[n.itemClass,{hover:!n.skipHover&&n.hoverKey===e.nr.key}],style:n.ready?{transform:"translate"+("vertical"===n.direction?"Y":"X")+"("+e.position+"px) translate"+("vertical"===n.direction?"X":"Y")+"("+e.offset+"px)",width:n.gridItems?("vertical"===n.direction&&n.itemSecondarySize||n.itemSize)+"px":void 0,height:n.gridItems?("horizontal"===n.direction&&n.itemSecondarySize||n.itemSize)+"px":void 0}:null},n.skipHover?{}:{mouseenter:function(){n.hoverKey=e.nr.key},mouseleave:function(){n.hoverKey=null}}),[n._t("default",null,{item:e.item,index:e.nr.index,active:e.nr.used})],2)})),n._v(" "),n._t("empty")],2),n._v(" "),n.$slots.after?a("div",{ref:"after",staticClass:"vue-recycle-scroller__slot"},[n._t("after")],2):n._e(),n._v(" "),a("ResizeObserver",{on:{notify:n.handleResize}})],1)},Xc=[];Gc._withStripped=!0;const Yc=void 0,Jc=void 0,ed=void 0,td=!1,nd=Uc({render:Gc,staticRenderFns:Xc},Yc,Qc,Jc,td,ed,!1,void 0,void 0,void 0);var id={name:"DynamicScroller",components:{RecycleScroller:nd},provide(){return"undefined"!==typeof ResizeObserver&&(this.$_resizeObserver=new ResizeObserver((e=>{requestAnimationFrame((()=>{if(Array.isArray(e))for(const t of e)if(t.target){const e=new CustomEvent("resize",{detail:{contentRect:t.contentRect}});t.target.dispatchEvent(e)}}))}))),{vscrollData:this.vscrollData,vscrollParent:this,vscrollResizeObserver:this.$_resizeObserver}},inheritAttrs:!1,props:{...qc,minItemSize:{type:[Number,String],required:!0}},data(){return{vscrollData:{active:!0,sizes:{},validSizes:{},keyField:this.keyField,simpleArray:!1}}},computed:{simpleArray:jc,itemsWithSize(){const e=[],{items:t,keyField:n,simpleArray:i}=this,a=this.vscrollData.sizes,s=t.length;for(let r=0;r=n)break;i+=t[o].size||this.minItemSize,a+=e[o].size||this.minItemSize}const r=a-i;0!==r&&(this.$el.scrollTop+=r)}},beforeCreate(){this.$_updates=[],this.$_undefinedSizes=0,this.$_undefinedMap={}},activated(){this.vscrollData.active=!0},deactivated(){this.vscrollData.active=!1},methods:{onScrollerResize(){const e=this.$refs.scroller;e&&this.forceUpdate(),this.$emit("resize")},onScrollerVisible(){this.$emit("vscroll:update",{force:!1}),this.$emit("visible")},forceUpdate(e=!0){(e||this.simpleArray)&&(this.vscrollData.validSizes={}),this.$emit("vscroll:update",{force:!0})},scrollToItem(e){const t=this.$refs.scroller;t&&t.scrollToItem(e)},getItemSize(e,t=undefined){const n=this.simpleArray?null!=t?t:this.items.indexOf(e):e[this.keyField];return this.vscrollData.sizes[n]||0},scrollToBottom(){if(this.$_scrollingToBottom)return;this.$_scrollingToBottom=!0;const e=this.$el;this.$nextTick((()=>{e.scrollTop=e.scrollHeight+5e3;const t=()=>{e.scrollTop=e.scrollHeight+5e3,requestAnimationFrame((()=>{e.scrollTop=e.scrollHeight+5e3,0===this.$_undefinedSizes?this.$_scrollingToBottom=!1:requestAnimationFrame(t)}))};requestAnimationFrame(t)}))}}};const ad=id;var sd=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("RecycleScroller",e._g(e._b({ref:"scroller",attrs:{items:e.itemsWithSize,"min-item-size":e.minItemSize,direction:e.direction,"key-field":"id","list-tag":e.listTag,"item-tag":e.itemTag},on:{resize:e.onScrollerResize,visible:e.onScrollerVisible},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.item,i=t.index,a=t.active;return[e._t("default",null,null,{item:n.item,index:i,active:a,itemWithSize:n})]}}],null,!0)},"RecycleScroller",e.$attrs,!1),e.listeners),[e._v(" "),n("template",{slot:"before"},[e._t("before")],2),e._v(" "),n("template",{slot:"after"},[e._t("after")],2),e._v(" "),n("template",{slot:"empty"},[e._t("empty")],2)],2)},rd=[];sd._withStripped=!0;const od=void 0,ld=void 0,cd=void 0,dd=!1,ud=Uc({render:sd,staticRenderFns:rd},od,ad,ld,dd,cd,!1,void 0,void 0,void 0);var hd={name:"DynamicScrollerItem",inject:["vscrollData","vscrollParent","vscrollResizeObserver"],props:{item:{required:!0},watchData:{type:Boolean,default:!1},active:{type:Boolean,required:!0},index:{type:Number,default:void 0},sizeDependencies:{type:[Array,Object],default:null},emitResize:{type:Boolean,default:!1},tag:{type:String,default:"div"}},computed:{id(){if(this.vscrollData.simpleArray)return this.index;if(this.item.hasOwnProperty(this.vscrollData.keyField))return this.item[this.vscrollData.keyField];throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`)},size(){return this.vscrollData.validSizes[this.id]&&this.vscrollData.sizes[this.id]||0},finalActive(){return this.active&&this.vscrollData.active}},watch:{watchData:"updateWatchData",id(){this.size||this.onDataUpdate()},finalActive(e){this.size||(e?this.vscrollParent.$_undefinedMap[this.id]||(this.vscrollParent.$_undefinedSizes++,this.vscrollParent.$_undefinedMap[this.id]=!0):this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=!1)),this.vscrollResizeObserver?e?this.observeSize():this.unobserveSize():e&&this.$_pendingVScrollUpdate===this.id&&this.updateSize()}},created(){if(!this.$isServer&&(this.$_forceNextVScrollUpdate=null,this.updateWatchData(),!this.vscrollResizeObserver)){for(const e in this.sizeDependencies)this.$watch((()=>this.sizeDependencies[e]),this.onDataUpdate);this.vscrollParent.$on("vscroll:update",this.onVscrollUpdate),this.vscrollParent.$on("vscroll:update-size",this.onVscrollUpdateSize)}},mounted(){this.vscrollData.active&&(this.updateSize(),this.observeSize())},beforeDestroy(){this.vscrollParent.$off("vscroll:update",this.onVscrollUpdate),this.vscrollParent.$off("vscroll:update-size",this.onVscrollUpdateSize),this.unobserveSize()},methods:{updateSize(){this.finalActive?this.$_pendingSizeUpdate!==this.id&&(this.$_pendingSizeUpdate=this.id,this.$_forceNextVScrollUpdate=null,this.$_pendingVScrollUpdate=null,this.computeSize(this.id)):this.$_forceNextVScrollUpdate=this.id},updateWatchData(){this.watchData&&!this.vscrollResizeObserver?this.$_watchData=this.$watch("item",(()=>{this.onDataUpdate()}),{deep:!0}):this.$_watchData&&(this.$_watchData(),this.$_watchData=null)},onVscrollUpdate({force:e}){!this.finalActive&&e&&(this.$_pendingVScrollUpdate=this.id),this.$_forceNextVScrollUpdate!==this.id&&!e&&this.size||this.updateSize()},onDataUpdate(){this.updateSize()},computeSize(e){this.$nextTick((()=>{if(this.id===e){const e=this.$el.offsetWidth,t=this.$el.offsetHeight;this.applySize(e,t)}this.$_pendingSizeUpdate=null}))},applySize(e,t){const n=~~("vertical"===this.vscrollParent.direction?t:e);n&&this.size!==n&&(this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=void 0),this.$set(this.vscrollData.sizes,this.id,n),this.$set(this.vscrollData.validSizes,this.id,!0),this.emitResize&&this.$emit("resize",this.id))},observeSize(){this.vscrollResizeObserver&&this.$el.parentNode&&(this.vscrollResizeObserver.observe(this.$el.parentNode),this.$el.parentNode.addEventListener("resize",this.onResize))},unobserveSize(){this.vscrollResizeObserver&&(this.vscrollResizeObserver.unobserve(this.$el.parentNode),this.$el.parentNode.removeEventListener("resize",this.onResize))},onResize(e){const{width:t,height:n}=e.detail.contentRect;this.applySize(t,n)}},render(e){return e(this.tag,this.$slots.default)}};const pd=hd,gd=void 0,fd=void 0,md=void 0,yd=void 0,vd=Uc({},gd,pd,fd,yd,md,!1,void 0,void 0,void 0);function bd({idProp:e=(e=>e.item.id)}={}){const t={},n=new Kc["default"]({data(){return{store:t}}});return{data(){return{idState:null}},created(){this.$_id=null,this.$_getId="function"===typeof e?()=>e.call(this,this):()=>this[e],this.$watch(this.$_getId,{handler(e){this.$nextTick((()=>{this.$_id=e}))},immediate:!0}),this.$_updateIdState()},beforeUpdate(){this.$_updateIdState()},methods:{$_idStateInit(e){const i=this.$options.idState;if("function"===typeof i){const a=i.call(this,this);return n.$set(t,e,a),this.$_id=e,a}throw new Error("[mixin IdState] Missing `idState` function on component definition.")},$_updateIdState(){const n=this.$_getId();null==n&&console.warn(`No id found for IdState with idProp: '${e}'.`),n!==this.$_id&&(t[n]||this.$_idStateInit(n),this.idState=t[n])}}}}function Td(e,t){e.component(`${t}recycle-scroller`,nd),e.component(`${t}RecycleScroller`,nd),e.component(`${t}dynamic-scroller`,ud),e.component(`${t}DynamicScroller`,ud),e.component(`${t}dynamic-scroller-item`,vd),e.component(`${t}DynamicScrollerItem`,vd)}const _d={version:"1.1.2",install(e,t){const n=Object.assign({},{installComponents:!0,componentsPrefix:""},t);for(const i in n)"undefined"!==typeof n[i]&&(Zc[i]=n[i]);n.installComponents&&Td(e,n.componentsPrefix)}};let Sd=null;function kd(e){const t=(0,bn.RL)((0,bn.hr)(e));return new RegExp(t,"ig")}"undefined"!==typeof window?Sd=window.Vue:"undefined"!==typeof n.g&&(Sd=n.g.Vue),Sd&&Sd.use(_d);var Cd,wd,xd=function(){var e=this,t=e._self._c;return t("BaseNavigatorCardItem",{class:{expanded:e.expanded,active:e.isActive,"is-group":e.isGroupMarker},style:{"--nesting-index":e.item.depth},attrs:{"data-nesting-index":e.item.depth,id:`container-${e.item.uid}`,"aria-hidden":e.isRendered?null:"true",hideNavigatorIcon:e.isGroupMarker},nativeOn:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:(t.preventDefault(),e.handleLeftKeydown.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])||"button"in t&&2!==t.button||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.handleRightKeydown.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.clickReference.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])?null:t.altKey?"button"in t&&2!==t.button?null:(t.preventDefault(),e.toggleEntireTree.apply(null,arguments)):null}]},scopedSlots:e._u([{key:"depth-spacer",fn:function(){return[t("span",{attrs:{hidden:"",id:e.usageLabel}},[e._v(" "+e._s(e.$t("filter.navigate"))+" ")]),e.isParent?t("button",{staticClass:"tree-toggle",attrs:{tabindex:"-1","aria-labelledby":e.item.uid,"aria-expanded":e.expanded?"true":"false","aria-describedby":e.ariaDescribedBy},on:{click:[function(t){return t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.toggleTree.apply(null,arguments))},function(t){return t.altKey?(t.preventDefault(),e.toggleEntireTree.apply(null,arguments)):null},function(t){return t.metaKey?(t.preventDefault(),e.toggleSiblings.apply(null,arguments)):null}]}},[t("InlineChevronRightIcon",{staticClass:"icon-inline chevron",class:{rotate:e.expanded,animating:e.idState.isOpening}})],1):e._e()]},proxy:!0},{key:"navigator-icon",fn:function({className:n}){return[e.apiChange?t("span",{class:[{[`changed changed-${e.apiChange}`]:e.apiChange},n]}):t("TopicTypeIcon",{key:e.item.uid,class:n,attrs:{type:e.item.type,"image-override":e.item.icon?e.navigatorReferences[e.item.icon]:null,shouldCalculateOptimalWidth:!1}})]}},{key:"title-container",fn:function(){return[e.isParent?t("span",{attrs:{hidden:"",id:e.parentLabel}},[e._v(e._s(e.$tc("filter.parent-label",e.item.childUIDs.length,{"number-siblings":e.item.index+1,"total-siblings":e.item.siblingsCount,"parent-siblings":e.item.parent,"number-parent":e.item.childUIDs.length})))]):e._e(),e.isParent?e._e():t("span",{attrs:{id:e.siblingsLabel,hidden:""}},[e._v(" "+e._s(e.$t("filter.siblings-label",{"number-siblings":e.item.index+1,"total-siblings":e.item.siblingsCount,"parent-siblings":e.item.parent}))+" ")]),t(e.refComponent,{ref:"reference",tag:"component",staticClass:"leaf-link",class:{bolded:e.isBold},attrs:{id:e.item.uid,url:e.isGroupMarker?null:e.item.path||"",tabindex:e.isFocused?"0":"-1","aria-describedby":`${e.ariaDescribedBy} ${e.usageLabel}`},nativeOn:{click:[function(t){return t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.handleClick.apply(null,arguments)},function(t){return t.altKey?(t.preventDefault(),e.toggleEntireTree.apply(null,arguments)):null}]}},[t("HighlightMatches",{attrs:{text:e.item.title,matcher:e.filterPattern}})],1),e.isDeprecated?t("Badge",{attrs:{variant:"deprecated"}}):e.isBeta?t("Badge",{attrs:{variant:"beta"}}):e._e()]},proxy:!0},{key:"content-container",fn:function(){return[e._t("card-item-content")]},proxy:!0}],null,!0)})},Id=[],$d=function(){var e=this,t=e._self._c;return t("div",{staticClass:"navigator-card-item"},[t("div",{staticClass:"head-wrapper"},[t("div",{staticClass:"depth-spacer"},[e._t("depth-spacer")],2),e.hideNavigatorIcon?e._e():t("div",{staticClass:"navigator-icon-wrapper"},[e._t("navigator-icon",null,{className:"navigator-icon"})],2),t("div",{staticClass:"title-container"},[e._t("title-container")],2),t("div",{staticClass:"content-container"},[e._t("content-container")],2)])])},Dd=[],Pd={name:"BaseNavigatorCardItem",props:{hideNavigatorIcon:{type:Boolean,default:()=>!1}}},Ld=Pd,Od=(0,j.Z)(Ld,$d,Dd,!1,null,"5e71f320",null),Ad=Od.exports,Nd={name:"HighlightMatch",props:{text:{type:String,required:!0},matcher:{type:RegExp,default:void 0}},render(e){const{matcher:t,text:n}=this;if(!t)return e("p",{class:"highlight"},n);const i=[];let a=0,s=null;const r=new RegExp(t,"gi");while(null!==(s=r.exec(n))){const t=s[0].length,r=s.index+t,o=n.slice(a,s.index);o&&i.push(e("span",o));const l=n.slice(s.index,r);l&&i.push(e("span",{class:"match"},l)),a=r}const o=n.slice(a,n.length);return o&&i.push(e("span",o)),e("p",{class:"highlight"},i)}},Rd=Nd,Bd=(0,j.Z)(Rd,Cd,wd,!1,null,"7b81ca08",null),Ed=Bd.exports,Md={name:"NavigatorCardItem",mixins:[bd({idProp:e=>e.item.uid})],components:{BaseNavigatorCardItem:Ad,HighlightMatches:Ed,TopicTypeIcon:Ce.Z,InlineChevronRightIcon:Pr.Z,Reference:Va.Z,Badge:qi.Z},props:{isRendered:{type:Boolean,default:!1},item:{type:Object,required:!0},expanded:{type:Boolean,default:!1},filterPattern:{type:RegExp,default:void 0},filterText:{type:String,default:null},isActive:{type:Boolean,default:!1},isBold:{type:Boolean,default:!1},apiChange:{type:String,default:null,validator:e=>qt.UG.includes(e)},isFocused:{type:Boolean,default:()=>!1},enableFocus:{type:Boolean,default:!0},navigatorReferences:{type:Object,default:()=>({})}},idState(){return{isOpening:!1}},computed:{isGroupMarker:({item:{type:e}})=>e===we.t.groupMarker,isParent:({item:e,isGroupMarker:t})=>!!e.childUIDs.length&&!t,parentLabel:({item:e})=>`label-parent-${e.uid}`,siblingsLabel:({item:e})=>`label-${e.uid}`,usageLabel:({item:e})=>`usage-${e.uid}`,ariaDescribedBy:({isParent:e,parentLabel:t,siblingsLabel:n})=>e?`${t}`:`${n}`,isBeta:({item:{beta:e}})=>!!e,isDeprecated:({item:{deprecated:e}})=>!!e,refComponent:({isGroupMarker:e})=>e?"h3":Va.Z},methods:{toggleTree(){this.idState.isOpening=!0,this.$emit("toggle",this.item)},toggleEntireTree(){this.idState.isOpening=!0,this.$emit("toggle-full",this.item)},toggleSiblings(){this.idState.isOpening=!0,this.$emit("toggle-siblings",this.item)},handleLeftKeydown(){this.expanded?this.toggleTree():this.$emit("focus-parent",this.item)},handleRightKeydown(){!this.expanded&&this.isParent&&this.toggleTree()},clickReference(){(this.$refs.reference.$el||this.$refs.reference).click()},focusReference(){(this.$refs.reference.$el||this.$refs.reference).focus()},handleClick(){this.isGroupMarker||this.$emit("navigate",this.item.uid)}},watch:{async isFocused(e){await(0,Ee.J)(8),e&&this.isRendered&&this.enableFocus&&this.focusReference()},async expanded(){await(0,Ee.J)(9),this.idState.isOpening=!1}}},zd=Md,Kd=(0,j.Z)(zd,xd,Id,!1,null,"5148de22",null),Zd=Kd.exports,qd=function(){var e=this,t=e._self._c;return t("div",{staticClass:"navigator-card"},[t("div",{staticClass:"navigator-card-full-height"},[t("div",{staticClass:"navigator-card-inner"},[t("div",{staticClass:"head-wrapper"},[e._t("above-navigator-head"),t("div",{staticClass:"head-inner"},[e._t("navigator-head"),t("button",{staticClass:"close-card",attrs:{id:e.SIDEBAR_HIDE_BUTTON_ID,"aria-label":e.$t("navigator.close-navigator")},on:{click:e.handleHideClick}},[t("InlineCloseIcon",{staticClass:"icon-inline close-icon"})],1)],2)],2),e._t("body",null,{className:"card-body"})],2)])])},jd=[],Fd=n(7181),Hd={name:"BaseNavigatorCard",components:{InlineCloseIcon:Fd.Z},data(){return{SIDEBAR_HIDE_BUTTON_ID:wl}},methods:{async handleHideClick(){this.$emit("close"),await this.$nextTick();const e=document.getElementById(Ul.Yj);e&&e.focus()}}},Vd=Hd,Wd=(0,j.Z)(Vd,qd,jd,!1,null,"584a744a",null),Ud=Wd.exports;const Qd={sampleCode:"filter.tags.sample-code",tutorials:"filter.tags.tutorials",articles:"filter.tags.articles",webServiceEndpoints:"filter.tags.web-service-endpoints"},Gd=qt.Ag,Xd={...Qd,...Gd,hideDeprecated:"filter.tags.hide-deprecated"},Yd={[we.t.article]:Xd.articles,[we.t.learn]:Xd.tutorials,[we.t.overview]:Xd.tutorials,[we.t.resources]:Xd.tutorials,[we.t.sampleCode]:Xd.sampleCode,[we.t.section]:Xd.tutorials,[we.t.tutorial]:Xd.tutorials,[we.t.project]:Xd.tutorials,[we.t.httpRequest]:Xd.webServiceEndpoints};var Jd={computed:{filteredChildren:({children:e,selectedTags:t,apiChanges:n,filterPattern:i,filterChildren:a})=>a(e,t,n,i),navigatorItems:({nodesToRender:e})=>e},methods:{filterChildren(e,t,n,i){const a=new Set(t);return e.filter((({title:e,path:t,type:s,deprecated:r,deprecatedChildrenCount:o,childUIDs:l})=>{const c=!i||i.test(e),d=r||o===l.length;let u=!0;if(a.size){if(u=a.has(Yd[s]),n&&!u){const e=n[t];u=a.has(Xd[e])}a.has(Xd.hideDeprecated)&&(u=!d)}const h=!n||!!n[t];return c&&u&&h}))}}},eu={name:"TagsDataProvider",constants:{TOPIC_TYPE_TO_TAG:Yd},props:{shouldTruncateTags:{type:Boolean,default:!1}},computed:{availableTags:({renderableChildNodesMap:e,apiChangesObject:t,extractTags:n})=>n(e,t),suggestedTags({availableTags:e,selectedTags:t,hideAvailableTags:n}){return n||t.length?[]:e},translatableTags:({availableTags:e})=>[Xd.hideDeprecated,...e]},methods:{extractTags(e,t){const n=new Set(Object.values(Qd)),i={type:[],changes:[],other:[]},a=new Set(Object.values(t));a.size?a.forEach((e=>{n.add(Xd[e])})):n.add(Xd.hideDeprecated);for(const s in e){if(!Object.hasOwnProperty.call(e,s))continue;if(!n.size)break;const{type:a,path:r,deprecated:o}=e[s],l=Yd[a];l&&n.has(l)&&(i.type.push(l),n.delete(l));const c=t[r];c&&n.has(Xd[c])&&(i.changes.push(Xd[c]),n.delete(Xd[c])),o&&n.has(Xd.hideDeprecated)&&(i.other.push(Xd.hideDeprecated),n.delete(Xd.hideDeprecated))}return Object.values(i).flat()}}};const tu="navigator.state",nu="navigator.no-results",iu="navigator.no-children",au="navigator.error-fetching",su="navigator.items-found";var ru={name:"NavigatorCard",constants:{STORAGE_KEY:tu,ERROR_FETCHING:au,ITEMS_FOUND:su},components:{FilterInput:Jo,NavigatorCardItem:Zd,DynamicScroller:ud,DynamicScrollerItem:vd,BaseNavigatorCard:Ud,Reference:Va.Z,Badge:qi.Z},props:{technologyPath:{type:String,default:""},children:{type:Array,required:!0},technology:{type:String,required:!1},activePath:{type:Array,required:!0},type:{type:String,required:!0},scrollLockID:{type:String,default:""},errorFetching:{type:Boolean,default:!1},apiChanges:{type:Object,default:null},isTechnologyBeta:{type:Boolean,default:!1},navigatorReferences:{type:Object,default:()=>{}},renderFilterOnTop:{type:Boolean,default:!1},hideAvailableTags:{type:Boolean,default:!1}},mixins:[Oo,Jd,eu],data(){return{filter:"",debouncedFilter:"",selectedTags:[],openNodes:Object.freeze({}),nodesToRender:Object.freeze([]),activeUID:null,lastFocusTarget:null,allNodesToggled:!1,INDEX_ROOT_KEY:kl}},computed:{isTechnologyRoute:({technologyPath:e,$route:t})=>e.toLowerCase()===t.path.toLowerCase(),politeAriaLive(){const{hasNodes:e,navigatorItems:t}=this;return e?this.$tc(su,t.length,{number:t.length}):""},assertiveAriaLive:({hasNodes:e,hasFilter:t,errorFetching:n})=>e?"":t?nu:n?au:iu,filterPattern:({debouncedFilter:e})=>e?new RegExp(kd(e),"i"):null,itemSize:()=>Cl,childrenMap({children:e}){return Il(e)},activePathChildren({activeUID:e,childrenMap:t}){return e&&t[e]?Ll(e,t):[]},activePathMap:({activePathChildren:e})=>Object.fromEntries(e.map((({uid:e})=>[e,!0]))),activeIndex:({activeUID:e,navigatorItems:t})=>t.findIndex((t=>t.uid===e)),renderableChildNodesMap({hasFilter:e,childrenMap:t,deprecatedHidden:n,filteredChildren:i,removeDeprecated:a}){if(!e)return t;const s=i.length-1,r=new Set([]);for(let o=s;o>=0;o-=1){const e=i[o],s=t[e.groupMarkerUID];if(s&&r.add(s),r.has(e))continue;if(r.has(t[e.parent])&&e.type!==we.t.groupMarker){r.add(e);continue}let l=[];e.childUIDs.length&&(l=a(Dl(e.uid,t),n)),l.concat(Ll(e.uid,t)).forEach((e=>r.add(e)))}return Il([...r])},nodeChangeDeps:({filteredChildren:e,activePathChildren:t,debouncedFilter:n,selectedTags:i})=>[e,t,n,i],hasFilter({debouncedFilter:e,selectedTags:t,apiChanges:n}){return Boolean(e.length||t.length||n)},deprecatedHidden:({selectedTags:e})=>e[0]===Xd.hideDeprecated,apiChangesObject(){return this.apiChanges||{}},hasNodes:({navigatorItems:e})=>!!e.length,totalItemsToNavigate:({navigatorItems:e})=>e.length,lastActivePathItem:({activePath:e})=>(0,N.Z$)(e)},created(){this.restorePersistedState()},watch:{filter:"debounceInput",nodeChangeDeps:"trackOpenNodes",activePath:"handleActivePathChange",apiChanges(e){e||(this.selectedTags=this.selectedTags.filter((e=>!Object.values(Gd).includes(e))))},async activeUID(e,t){await this.$nextTick();const n=this.$refs[`dynamicScroller_${t}`];n&&n.updateSize&&n.updateSize()}},methods:{setUnlessEqual(e,t){(0,N.Xy)(t,this[e])||(this[e]=Object.freeze(t))},toggleAllNodes(){const e=this.children.filter((e=>e.parent===kl&&e.type!==we.t.groupMarker&&e.childUIDs.length));this.allNodesToggled=!this.allNodesToggled,this.allNodesToggled&&(this.openNodes={},this.generateNodesToRender()),e.forEach((e=>{this.toggleFullTree(e)}))},clearFilters(){this.filter="",this.debouncedFilter="",this.selectedTags=[]},scrollToFocus(){this.$refs.scroller.scrollToItem(this.focusedIndex)},debounceInput:vo((function(e){this.debouncedFilter=e,this.lastFocusTarget=null}),200),trackOpenNodes([e,t,n,i],[,a=[],s="",r=[]]=[]){if(n!==s&&!s&&this.getFromStorage("filter")||!(0,N.Xy)(i,r)&&!r.length&&this.getFromStorage("selectedTags",[]).length)return;const o=!(0,N.Xy)(a,t),{childrenMap:l}=this;let c=t;if(!(this.deprecatedHidden&&!this.debouncedFilter.length||o&&this.hasFilter)&&this.hasFilter){const t=new Set,n=e.length-1;for(let i=n;i>=0;i-=1){const n=e[i];t.has(l[n.parent])||t.has(n)||Ll(n.uid,l).slice(0,-1).forEach((e=>t.add(e)))}c=[...t]}const d=o?{...this.openNodes}:{},u=c.reduce(((e,t)=>(e[t.uid]=!0,e)),d);this.setUnlessEqual("openNodes",u),this.generateNodesToRender(),this.updateFocusIndexExternally()},toggle(e){const t=this.openNodes[e.uid];let n=[],i=[];if(t){const t=(0,x.d9)(this.openNodes),n=Dl(e.uid,this.childrenMap);n.forEach((({uid:e})=>{delete t[e]})),this.setUnlessEqual("openNodes",t),i=n.slice(1)}else this.setUnlessEqual("openNodes",{...this.openNodes,[e.uid]:!0}),n=Pl(e.uid,this.childrenMap,this.children).filter((e=>this.renderableChildNodesMap[e.uid]));this.augmentRenderNodes({uid:e.uid,include:n,exclude:i})},toggleFullTree(e){const t=this.openNodes[e.uid],n=(0,x.d9)(this.openNodes),i=Dl(e.uid,this.childrenMap);let a=[],s=[];i.forEach((({uid:e})=>{t?delete n[e]:n[e]=!0})),t?a=i.slice(1):s=i.slice(1).filter((e=>this.renderableChildNodesMap[e.uid])),this.setUnlessEqual("openNodes",n),this.augmentRenderNodes({uid:e.uid,exclude:a,include:s})},toggleSiblings(e){const t=this.openNodes[e.uid],n=(0,x.d9)(this.openNodes),i=Ol(e.uid,this.childrenMap,this.children);i.forEach((({uid:e,childUIDs:i,type:a})=>{if(i.length&&a!==we.t.groupMarker)if(t){const t=Dl(e,this.childrenMap);t.forEach((e=>{delete n[e.uid]})),delete n[e],this.augmentRenderNodes({uid:e,exclude:t.slice(1),include:[]})}else{n[e]=!0;const t=Pl(e,this.childrenMap,this.children).filter((e=>this.renderableChildNodesMap[e.uid]));this.augmentRenderNodes({uid:e,exclude:[],include:t})}})),this.setUnlessEqual("openNodes",n),this.persistState()},removeDeprecated(e,t){return t?e.filter((({deprecated:e})=>!e)):e},generateNodesToRender(){const{children:e,openNodes:t,renderableChildNodesMap:n}=this;this.setUnlessEqual("nodesToRender",e.filter((e=>n[e.uid]&&(e.parent===kl||t[e.parent])))),this.persistState(),this.scrollToElement()},augmentRenderNodes({uid:e,include:t=[],exclude:n=[]}){const i=this.nodesToRender.findIndex((t=>t.uid===e));if(t.length){const e=t.filter((e=>!this.nodesToRender.includes(e))),n=this.nodesToRender.slice(0);n.splice(i+1,0,...e),this.setUnlessEqual("nodesToRender",n)}else if(n.length){const e=new Set(n);this.setUnlessEqual("nodesToRender",this.nodesToRender.filter((t=>!e.has(t))))}this.persistState()},getFromStorage(e,t=null){const n=Fl.y7.get(tu,{}),i=n[this.technologyPath];return i?e?i[e]||t:i:t},persistState(){const e={path:this.lastActivePathItem},{path:t}=this.activeUID&&this.childrenMap[this.activeUID]||e,n={technology:this.technology,path:t,hasApiChanges:!!this.apiChanges,openNodes:Object.keys(this.openNodes).map(Number),nodesToRender:this.nodesToRender.map((({uid:e})=>e)),activeUID:this.activeUID,filter:this.filter,selectedTags:this.selectedTags},i={...Fl.y7.get(tu,{}),[this.technologyPath]:n};Fl.y7.set(tu,i)},clearPersistedState(){const e={...Fl.y7.get(tu,{}),[this.technologyPath]:{}};Fl.y7.set(tu,e)},restorePersistedState(){const e=this.getFromStorage();if(!e||e.path!==this.lastActivePathItem)return this.clearPersistedState(),void this.handleActivePathChange(this.activePath);const{technology:t,nodesToRender:n=[],filter:i="",hasAPIChanges:a=!1,activeUID:s=null,selectedTags:r=[],openNodes:o}=e;if(!n.length&&!i&&!r.length)return this.clearPersistedState(),void this.handleActivePathChange(this.activePath);const{childrenMap:l}=this,c=n.every((e=>l[e])),d=s?(this.childrenMap[s]||{}).path===this.lastActivePathItem:1===this.activePath.length;if(t!==this.technology||!c||a!==Boolean(this.apiChanges)||!d||s&&!i&&!r.length&&!n.includes(s))return this.clearPersistedState(),void this.handleActivePathChange(this.activePath);this.setUnlessEqual("openNodes",Object.fromEntries(o.map((e=>[e,!0])))),this.setUnlessEqual("nodesToRender",n.map((e=>l[e]))),this.selectedTags=r,this.filter=i,this.debouncedFilter=this.filter,this.activeUID=s,this.scrollToElement()},async scrollToElement(){if(await(0,Ee.J)(1),!this.$refs.scroller)return;const e=document.getElementById(this.activeUID);if(e&&0===this.getChildPositionInScroller(e))return;const t=this.nodesToRender.findIndex((e=>e.uid===this.activeUID));-1!==t?this.$refs.scroller.scrollToItem(t):this.hasFilter&&!this.deprecatedHidden&&this.$refs.scroller.scrollToItem(0)},getChildPositionInScroller(e){if(!e)return 0;const{paddingTop:t,paddingBottom:n}=getComputedStyle(this.$refs.scroller.$el),i={top:parseInt(t,10)||0,bottom:parseInt(n,10)||0},{y:a,height:s}=this.$refs.scroller.$el.getBoundingClientRect(),{y:r}=e.getBoundingClientRect();let o=0;e.offsetParent&&(o=e.offsetParent.offsetHeight);const l=r-a-i.top;return l<0?-1:l+o>=s-i.bottom?1:0},isInsideScroller(e){return!!this.$refs.scroller&&this.$refs.scroller.$el.contains(e)},handleFocusIn({target:e,relatedTarget:t}){if(this.lastFocusTarget=e,!t)return;const n=this.getChildPositionInScroller(e);if(0===n)return;const{offsetHeight:i}=e.offsetParent;this.$refs.scroller.$el.scrollBy({top:i*n,left:0})},handleFocusOut(e){e.relatedTarget&&(this.isInsideScroller(e.relatedTarget)||(this.lastFocusTarget=null))},handleScrollerUpdate:vo((async function(){await(0,Ee.X)(300),this.lastFocusTarget&&this.isInsideScroller(this.lastFocusTarget)&&document.activeElement!==this.lastFocusTarget&&this.lastFocusTarget.focus({preventScroll:!0})}),50),setActiveUID(e){this.activeUID=e},handleNavigationChange(e){const t=this.childrenMap[e].path;t.startsWith(this.technologyPath)&&(this.setActiveUID(e),this.$emit("navigate",t))},pathsToFlatChildren(e){const t=e.slice(0).reverse(),{childrenMap:n}=this;let i=this.children;const a=[];while(t.length){const e=t.pop(),s=i.find((t=>t.path===e));if(!s)break;a.push(s),t.length&&(i=s.childUIDs.map((e=>n[e])))}return a},handleActivePathChange(e){const t=this.childrenMap[this.activeUID],n=(0,N.Z$)(e);if(t){if(n===t.path)return;const e=Ol(this.activeUID,this.childrenMap,this.children),i=Pl(this.activeUID,this.childrenMap,this.children),a=Ll(this.activeUID,this.childrenMap),s=[...i,...e,...a].find((e=>e.path===n));if(s)return void this.setActiveUID(s.uid)}const i=this.pathsToFlatChildren(e);i.length?this.setActiveUID(i[i.length-1].uid):this.activeUID?this.setActiveUID(null):this.trackOpenNodes(this.nodeChangeDeps)},updateFocusIndexExternally(){this.externalFocusChange=!0,this.activeIndex>0?this.focusIndex(this.activeIndex):this.focusIndex(0)},focusNodeParent(e){const t=this.childrenMap[e.parent];if(!t)return;const n=this.nodesToRender.findIndex((e=>e.uid===t.uid));-1!==n&&this.focusIndex(n)}}},ou=ru,lu=(0,j.Z)(ou,dc,uc,!1,null,"4fc101dd",null),cu=lu.exports,du=function(){var e=this,t=e._self._c;return t("BaseNavigatorCard",e._b({on:{close:function(t){return e.$emit("close")}},scopedSlots:e._u([{key:"body",fn:function({className:n}){return[t("transition",{attrs:{name:"delay-visibility"}},[t("div",{staticClass:"loading-navigator",class:n,attrs:{"aria-hidden":"true"}},e._l(e.LOADER_ROWS,(function(e,n){return t("LoadingNavigatorItem",{key:n,attrs:{index:n,width:e.width,hideNavigatorIcon:e.hideNavigatorIcon}})})),1)])]}}])},"BaseNavigatorCard",e.$props,!1))},uu=[],hu=function(){var e=this,t=e._self._c;return t("BaseNavigatorCardItem",{staticClass:"loading-navigator-item",style:`--index: ${e.index};`,attrs:{hideNavigatorIcon:e.hideNavigatorIcon},scopedSlots:e._u([{key:"navigator-icon",fn:function({className:e}){return[t("div",{class:e})]}},{key:"title-container",fn:function(){return[t("div",{staticClass:"loader",style:{width:e.width}})]},proxy:!0}])})},pu=[],gu={name:"LoadingNavigatorItem",components:{BaseNavigatorCardItem:Ad},props:{...Ad.props,index:{type:Number,default:0},width:{type:String,default:"50%"}}},fu=gu,mu=(0,j.Z)(fu,hu,pu,!1,null,"0de29914",null),yu=mu.exports;const vu=[{width:"30%",hideNavigatorIcon:!0},{width:"80%"},{width:"50%"}];var bu,Tu,_u={name:"LoadingNavigatorCard",components:{BaseNavigatorCard:Ud,LoadingNavigatorItem:yu},data(){return{LOADER_ROWS:vu}}},Su=_u,ku=(0,j.Z)(Su,du,uu,!1,null,"3b7cf3a4",null),Cu=ku.exports,wu={name:"Navigator",components:{NavigatorCard:cu,LoadingNavigatorCard:Cu},data(){return{INDEX_ROOT_KEY:kl}},props:{flatChildren:{type:Array,required:!0},parentTopicIdentifiers:{type:Array,required:!0},technology:{type:Object,required:!1},isFetching:{type:Boolean,default:!1},references:{type:Object,default:()=>{}},navigatorReferences:{type:Object,default:()=>{}},scrollLockID:{type:String,default:""},errorFetching:{type:Boolean,default:!1},renderFilterOnTop:{type:Boolean,default:!1},apiChanges:{type:Object,default:null}},computed:{parentTopicReferences({references:e,parentTopicIdentifiers:t}){return t.reduce(((t,n)=>{const i=e[n];return i?t.concat(i):(console.error(`Reference for "${n}" is missing`),t)}),[])},activePath({parentTopicReferences:e,$route:{path:t}}){if(t=t.replace(/\/$/,"").toLowerCase(),!e.length)return[t];let n=1;return"technologies"===e[0].kind&&(n=2),e.slice(n).map((e=>e.url)).concat(t)},type:()=>we.t.module,technologyProps:({technology:e})=>e?{technology:e.title,technologyPath:e.path||e.url,isTechnologyBeta:e.beta}:null}},xu=wu,Iu=(0,j.Z)(xu,lc,cc,!1,null,"7c66a058",null),$u=Iu.exports,Du=n(5184),Pu={name:"NavigatorDataProvider",props:{interfaceLanguage:{type:String,default:D.Z.swift.key.url},technologyUrl:{type:String,default:""},apiChangesVersion:{type:String,default:""}},data(){return{isFetching:!1,errorFetching:!1,isFetchingAPIChanges:!1,navigationIndex:{[D.Z.swift.key.url]:[]},navigationReferences:{},diffs:null}},computed:{flatChildren:({technologyWithChildren:e={}})=>$l(e.children||[],null,0,e.beta),technologyPath:({technologyUrl:e})=>{const t=/(\/documentation\/(?:[^/]+))\/?/.exec(e);return t?t[1]:""},technologyWithChildren({navigationIndex:e,interfaceLanguage:t,technologyPath:n}){let i=e[t]||[];i.length||(i=e[D.Z.swift.key.url]||[]);const a=i.find((e=>n.toLowerCase()===e.path.toLowerCase()));return a??i[0]}},methods:{async fetchIndexData(){try{this.isFetching=!0;const{includedArchiveIdentifiers:e=[],interfaceLanguages:t,references:n}=await(0,x.LR)({slug:this.$route.params.locale||""});this.navigationIndex=Object.freeze(t),this.navigationReferences=Object.freeze(n),R["default"].setIncludedArchiveIdentifiers(e)}catch(bh){this.errorFetching=!0}finally{this.isFetching=!1}}},watch:{"$route.params.locale":{handler:"fetchIndexData",immediate:!0}},render(){return this.$scopedSlots.default({technology:this.technologyWithChildren,isFetching:this.isFetching,errorFetching:this.errorFetching,isFetchingAPIChanges:this.isFetchingAPIChanges,apiChanges:this.diffs,flatChildren:this.flatChildren,references:this.navigationReferences})}},Lu=Pu,Ou=(0,j.Z)(Lu,bu,Tu,!1,null,null,null),Au=Ou.exports,Nu=function(){var e=this,t=e._self._c;return t("NavBase",{staticClass:"documentation-nav",attrs:{breakpoint:e.BreakpointName.medium,hasOverlay:!1,hasNoBorder:e.hasNoBorder,isDark:e.isDark,isWideFormat:"",hasFullWidthBorder:"","aria-label":e.$t("api-reference"),showActions:e.hasMenuItems},scopedSlots:e._u([e.displaySidenav?{key:"pre-title",fn:function({closeNav:n,isOpen:i,currentBreakpoint:a,className:s}){return[t("div",{class:s},[t("div",{staticClass:"sidenav-toggle-wrapper"},[t("button",{staticClass:"sidenav-toggle",attrs:{"aria-label":e.$t("navigator.open-navigator"),id:e.baseNavOpenSidenavButtonId,tabindex:i?-1:null},on:{click:function(t){return t.preventDefault(),e.handleSidenavToggle(n,a)}}},[t("span",{staticClass:"sidenav-icon-wrapper"},[t("SidenavIcon",{staticClass:"icon-inline sidenav-icon"})],1)])])])]}}:null,{key:"default",fn:function(){return[e._t("title",null,{className:"nav-title"})]},proxy:!0},{key:"tray",fn:function({closeNav:n}){return[e.hasMenuItems?t("NavMenuItems",{staticClass:"nav-menu-settings"},[e.hasLanguageToggle?t("LanguageToggle",{attrs:{interfaceLanguage:e.interfaceLanguage,objcPath:e.objcPath,swiftPath:e.swiftPath,closeNav:n}}):e._e(),e._t("menu-items")],2):e._e(),e._t("tray-after")]}},{key:"after-content",fn:function(){return[e._t("after-content")]},proxy:!0}],null,!0)})},Ru=[],Bu=n(2586),Eu=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"sidenav-icon",attrs:{viewBox:"0 0 14 14",height:"14",themeId:"sidenav"}},[t("path",{attrs:{d:"M6.533 1.867h-6.533v10.267h14v-10.267zM0.933 11.2v-8.4h4.667v8.4zM13.067 11.2h-6.533v-8.4h6.533z"}}),t("path",{attrs:{d:"M1.867 5.133h2.8v0.933h-2.8z"}}),t("path",{attrs:{d:"M1.867 7.933h2.8v0.933h-2.8z"}})])},Mu=[],zu={name:"SidenavIcon",components:{SVGIcon:hr.Z}},Ku=zu,Zu=(0,j.Z)(Ku,Eu,Mu,!1,null,null,null),qu=Zu.exports,ju=function(){var e=this,t=e._self._c;return t("NavMenuItemBase",{staticClass:"nav-menu-setting language-container"},[t("div",{class:{"language-toggle-container":e.hasLanguages}},[t("select",{ref:"language-sizer",staticClass:"language-dropdown language-sizer",attrs:{"aria-hidden":"true",tabindex:"-1"}},[t("option",{key:e.currentLanguage.name,attrs:{selected:""}},[e._v(e._s(e.currentLanguage.name))])]),t("label",{staticClass:"nav-menu-setting-label",attrs:{for:e.hasLanguages?"language-toggle":null}},[e._v(e._s(e.$t("formats.colon",{content:e.$t("language")})))]),e.hasLanguages?t("select",{directives:[{name:"model",rawName:"v-model",value:e.languageModel,expression:"languageModel"}],staticClass:"language-dropdown nav-menu-link",style:`width: ${e.adjustedWidth}px`,attrs:{id:"language-toggle"},on:{change:[function(t){var n=Array.prototype.filter.call(t.target.options,(function(e){return e.selected})).map((function(e){var t="_value"in e?e._value:e.value;return t}));e.languageModel=t.target.multiple?n:n[0]},function(t){return e.pushRoute(e.currentLanguage.route)}]}},e._l(e.languages,(function(n){return t("option",{key:n.api,domProps:{value:n.api}},[e._v(" "+e._s(n.name)+" ")])})),0):t("span",{staticClass:"nav-menu-toggle-none current-language",attrs:{"aria-current":"page"}},[e._v(e._s(e.currentLanguage.name))]),e.hasLanguages?t("InlineChevronDownIcon",{staticClass:"toggle-icon icon-inline"}):e._e()],1),e.hasLanguages?t("div",{staticClass:"language-list-container"},[t("span",{staticClass:"nav-menu-setting-label"},[e._v(e._s(e.$t("formats.colon",{content:e.$t("language")})))]),t("ul",{staticClass:"language-list"},e._l(e.languages,(function(n){return t("li",{key:n.api,staticClass:"language-list-item"},[n.api===e.languageModel?t("span",{staticClass:"current-language",attrs:{"data-language":n.api,"aria-current":"page"}},[e._v(" "+e._s(n.name)+" ")]):t("a",{staticClass:"nav-menu-link",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.pushRoute(n.route)}}},[e._v(" "+e._s(n.name)+" ")])])})),0)]):e._e()])},Fu=[],Hu=n(5151),Vu={name:"LanguageToggle",components:{InlineChevronDownIcon:Hu.Z,NavMenuItemBase:Dr.Z},inject:{store:{default(){return{setPreferredLanguage(){}}}}},props:{interfaceLanguage:{type:String,required:!0},objcPath:{type:String,required:!1},swiftPath:{type:String,required:!1},closeNav:{type:Function,default:()=>{}}},data(){return{languageModel:null,adjustedWidth:0}},mounted(){const e=Be((async()=>{await(0,Ee.J)(3),this.calculateSelectWidth()}),150);window.addEventListener("resize",e),window.addEventListener("orientationchange",e),this.$once("hook:beforeDestroy",(()=>{window.removeEventListener("resize",e),window.removeEventListener("orientationchange",e)}))},watch:{interfaceLanguage:{immediate:!0,handler(e){this.languageModel=e}},currentLanguage:{immediate:!0,handler:"calculateSelectWidth"}},methods:{getRoute(e){const t=e.query===D.Z.swift.key.url?void 0:e.query;return{query:{...this.$route.query,language:t},path:this.isCurrentPath(e.path)?null:(0,A.Jf)(e.path)}},async pushRoute(e){await this.closeNav(),this.store.setPreferredLanguage(e.query),this.$router.push(this.getRoute(e))},isCurrentPath(e){return this.$route.path.replace(/^\//,"")===e},async calculateSelectWidth(){await this.$nextTick(),this.adjustedWidth=this.$refs["language-sizer"].clientWidth+8}},computed:{languages(){return[{name:D.Z.swift.name,api:D.Z.swift.key.api,route:{path:this.swiftPath,query:D.Z.swift.key.url}},{name:D.Z.objectiveC.name,api:D.Z.objectiveC.key.api,route:{path:this.objcPath,query:D.Z.objectiveC.key.url}}]},currentLanguage:({languages:e,languageModel:t})=>e.find((e=>e.api===t)),hasLanguages:({objcPath:e,swiftPath:t})=>t&&e}},Wu=Vu,Uu=(0,j.Z)(Wu,ju,Fu,!1,null,"4323807e",null),Qu=Uu.exports,Gu={name:"DocumentationNav",components:{SidenavIcon:qu,NavBase:Bu.Z,NavMenuItems:rr.Z,LanguageToggle:Qu},props:{isDark:{type:Boolean,default:!1},hasNoBorder:{type:Boolean,default:!1},interfaceLanguage:{type:String,required:!1},objcPath:{type:String,required:!1},swiftPath:{type:String,required:!1},displaySidenav:{type:Boolean,default:!1}},computed:{baseNavOpenSidenavButtonId:()=>Ul.Yj,BreakpointName:()=>or.L3,hasLanguageToggle:({interfaceLanguage:e,swiftPath:t,objcPath:n})=>!(!e||!t&&!n),hasMenuItems:({hasLanguageToggle:e,$slots:t})=>!(!e&&!t["menu-items"])},methods:{async handleSidenavToggle(e,t){await e(),this.$emit("toggle-sidenav",t),await this.$nextTick();const n=document.getElementById(wl);n&&n.focus()}}},Xu=Gu,Yu=(0,j.Z)(Xu,Nu,Ru,!1,null,"5e58283e",null),Ju=Yu.exports;const eh="navigator-hidden-large";var th={name:"DocumentationLayout",constants:{NAVIGATOR_HIDDEN_ON_LARGE_KEY:eh},components:{Navigator:$u,AdjustableSidebarWidth:oc,NavigatorDataProvider:Au,Nav:Ju,QuickNavigationButton:eo,QuickNavigationModal:Zl,PortalTarget:Ur.YC},mixins:[Du.Z],props:{enableNavigator:Boolean,diffAvailability:{type:Object,required:!1},interfaceLanguage:{type:String,required:!1},references:{type:Object,default:()=>{}},objcPath:{type:String,required:!1},swiftPath:{type:String,required:!1},selectedAPIChangesVersion:{type:String,required:!1},technology:{type:Object,require:!1},parentTopicIdentifiers:{type:Array,default:()=>[]},navigatorFixedWidth:{type:Number,default:null}},data(){return{sidenavVisibleOnMobile:!1,sidenavHiddenOnLarge:Fl.tO.get(eh,!1),showQuickNavigationModal:!1,BreakpointName:or.L3}},computed:{enableQuickNavigation:({isTargetIDE:e})=>!e&&(0,w.$8)(["features","docs","quickNavigation","enable"],!0),sidebarProps:({sidenavVisibleOnMobile:e,enableNavigator:t,sidenavHiddenOnLarge:n,navigatorFixedWidth:i})=>t?{shownOnMobile:e,hiddenOnLarge:n,fixedWidth:i}:{enableNavigator:t},sidebarListeners(){return this.enableNavigator?{"update:shownOnMobile":this.toggleMobileSidenav,"update:hiddenOnLarge":this.toggleLargeSidenav}:{}}},methods:{handleToggleSidenav(e){e===or.L3.large?this.toggleLargeSidenav():this.toggleMobileSidenav()},openQuickNavigationModal(){this.sidenavVisibleOnMobile||(this.showQuickNavigationModal=!0)},toggleLargeSidenav(e=!this.sidenavHiddenOnLarge){this.sidenavHiddenOnLarge=e,Fl.tO.set(eh,e)},toggleMobileSidenav(e=!this.sidenavVisibleOnMobile){this.sidenavVisibleOnMobile=e},onQuickNavigationKeydown(e){("/"===e.key||"o"===e.key&&e.shiftKey&&e.metaKey)&&this.enableNavigator&&"input"!==e.target.tagName.toLowerCase()&&(this.openQuickNavigationModal(),e.preventDefault())}},mounted(){this.enableQuickNavigation&&window.addEventListener("keydown",this.onQuickNavigationKeydown)},beforeDestroy(){this.enableQuickNavigation&&window.removeEventListener("keydown",this.onQuickNavigationKeydown)},inject:{isTargetIDE:{default(){return!1}}}},nh=th,ih=(0,j.Z)(nh,Vr,Wr,!1,null,"8aa6db48",null),ah=ih.exports,sh=n(2717);const rh="symbol";var oh={watch:{topicData:{immediate:!0,handler:"extractOnThisPageSections"}},methods:{shouldRegisterContentSection(e){return e.type===di.BlockType.heading&&e.level<4},extractOnThisPageSections(e){if(!e)return;this.store.resetPageSections();const{metadata:{title:t},primaryContentSections:n,topicSections:i,defaultImplementationsSections:a,relationshipsSections:s,seeAlsoSections:r,kind:o}=e;this.store.addOnThisPageSection({title:t,anchor:sh.$,level:1,isSymbol:o===rh},{i18n:!1}),n&&n.forEach((e=>{switch(e.kind){case je.mentions:this.store.addOnThisPageSection({title:this.$t("mentioned-in"),anchor:(0,bn.HA)("mentions"),level:2});break;case je.content:Ue.Z.methods.forEach.call(e,(e=>{this.shouldRegisterContentSection(e)&&this.store.addOnThisPageSection({title:e.text,anchor:e.anchor||(0,bn.HA)(e.text),level:e.level},{i18n:!1})}));break;case je.properties:case je.restBody:case je.restCookies:case je.restEndpoint:case je.restHeaders:case je.restParameters:case je.restResponses:this.store.addOnThisPageSection({title:e.title,anchor:(0,bn.HA)(e.title),level:2});break;default:sn[e.kind]&&this.store.addOnThisPageSection(sn[e.kind])}})),i&&this.store.addOnThisPageSection(an.topics),a&&this.store.addOnThisPageSection(an.defaultImplementations),s&&this.store.addOnThisPageSection(an.relationships),r&&this.store.addOnThisPageSection(an.seeAlso)}}},lh=n(9030),ch=n(1944),dh=n(1789),uh=n(8093),hh=n(8571);const{extractProps:ph}=Hr.methods,gh="0.3.0";var fh={name:"DocumentationTopicView",constants:{MIN_RENDER_JSON_VERSION_WITH_INDEX:gh},components:{CodeTheme:uh.Z,Topic:Hr,DocumentationLayout:ah},mixins:[oh,dh.Z],props:{enableMinimized:{type:Boolean,default:!1}},data(){return{topicDataDefault:null,topicDataObjc:null,store:pl.Z}},provide(){return{store:this.store}},computed:{disableHeroBackground:()=>!1,documentationLayoutProps:({topicProps:{diffAvailability:e,interfaceLanguage:t,references:n},enableNavigator:i,technology:a,parentTopicIdentifiers:s,objcPath:r,swiftPath:o,store:{state:{selectedAPIChangesVersion:l}}})=>({diffAvailability:e,interfaceLanguage:t,references:n,enableNavigator:i,technology:a,parentTopicIdentifiers:s,objcPath:r,swiftPath:o,selectedAPIChangesVersion:l}),objcOverrides:({topicData:e})=>{const{variantOverrides:t=[]}=e||{},n=({interfaceLanguage:e})=>e===D.Z.objectiveC.key.api,i=({traits:e})=>e.some(n),a=t.find(i);return a?a.patch:null},topicData:{get(){return this.topicDataObjc?this.topicDataObjc:this.topicDataDefault},set(e){this.topicDataDefault=e}},topicKey:({$route:e,topicProps:t})=>[e.path,t.interfaceLanguage].join(),topicProps(){return ph(this.topicData)},parentTopicIdentifiers:({topicProps:{hierarchy:e,references:t},$route:n})=>{if(!e)return[];const{paths:i=[]}=e;return i.length?i.find((e=>{const i=e.find((e=>t[e]&&"technologies"!==t[e].kind)),a=i&&t[i];return a&&n.path.toLowerCase().startsWith(a.url.toLowerCase())}))||i[0]:[]},technology:({$route:e,topicProps:{identifier:t,references:n,role:i,title:a},parentTopicIdentifiers:s})=>{const r={title:a,url:e.path},o=n[t];if(!s.length)return o||r;const l=n[s[0]];return l&&"technologies"!==l.kind?l:(i!==C.L.collection||o)&&(l&&n[s[1]]||o)||r},languagePaths:({topicData:{variants:e=[]}})=>e.reduce(((e,t)=>t.traits.reduce(((e,n)=>n.interfaceLanguage?{...e,[n.interfaceLanguage]:(e[n.interfaceLanguage]||[]).concat(t.paths)}:e),e)),{}),objcPath:({languagePaths:{[D.Z.objectiveC.key.api]:[e]=[]}={}})=>e,swiftPath:({languagePaths:{[D.Z.swift.key.api]:[e]=[]}={}})=>e,isSymbolBeta:({topicProps:{platforms:e}})=>!!(e&&e.length&&e.every((e=>e.beta))),isSymbolDeprecated:({topicProps:{platforms:e,deprecationSummary:t}})=>!!(t&&t.length>0||e&&e.length&&e.every((e=>e.deprecatedAt))),enableOnThisPageNav:({isTargetIDE:e})=>!(0,w.$8)(["features","docs","onThisPageNavigator","disable"],!1)&&!e,enableNavigator:({isTargetIDE:e,topicDataDefault:t})=>!e&&(0,ch.n4)((0,ch.W1)(t.schemaVersion),gh)>=0,rootHierarchyReference:({parentTopicIdentifiers:e,topicProps:{references:t}})=>t[e[0]]||{},isRootTechnologyLink:({rootHierarchyReference:{kind:e}})=>"technologies"===e,hierarchyItems:({parentTopicIdentifiers:e,isRootTechnologyLink:t})=>t?e.slice(1):e,rootLink:({isRootTechnologyLink:e,rootHierarchyReference:t,$route:n})=>e?{path:t.url,query:n.query}:null},methods:{handleCodeColorsChange(e){hh.Z.updateCodeColors(e)},applyObjcOverrides(){this.topicDataObjc=k((0,x.d9)(this.topicData),this.objcOverrides)}},mounted(){this.$bridge.on("contentUpdate",this.handleContentUpdateFromBridge),this.$bridge.on("codeColors",this.handleCodeColorsChange),this.$bridge.send({type:"requestCodeColors"})},beforeDestroy(){this.$bridge.off("contentUpdate",this.handleContentUpdateFromBridge),this.$bridge.off("codeColors",this.handleCodeColorsChange)},inject:{isTargetIDE:{default(){return!1}}},beforeRouteEnter(e,t,n){e.meta.skipFetchingData?n((e=>e.newContentMounted())):(0,x.Ek)(e,t,n).then((t=>n((n=>{(0,lh.jk)(e.params.locale,n),n.topicData=t,e.query.language===D.Z.objectiveC.key.url&&n.objcOverrides&&n.applyObjcOverrides()})))).catch(n)},beforeRouteUpdate(e,t,n){e.path===t.path&&e.query.language===D.Z.objectiveC.key.url&&this.objcOverrides?(this.applyObjcOverrides(),n()):(0,x.Us)(e,t)?(0,x.Ek)(e,t,n).then((t=>{this.topicDataObjc=null,this.topicData=t,e.query.language===D.Z.objectiveC.key.url&&this.objcOverrides&&this.applyObjcOverrides(),(0,lh.jk)(e.params.locale,this),n()})).catch(n):n()},created(){this.store.reset()},watch:{topicData(){this.$nextTick((()=>{this.newContentMounted()}))}}},mh=fh,yh=(0,j.Z)(mh,i,a,!1,null,null,null),vh=yh.exports},7274:function(e,t){var n,i,a;(function(s,r){i=[],n=r,a="function"===typeof n?n.apply(t,i):n,void 0===a||(e.exports=a)})(0,(function(){var e=/(auto|scroll)/,t=function(e,n){return null===e.parentNode?n:t(e.parentNode,n.concat([e]))},n=function(e,t){return getComputedStyle(e,null).getPropertyValue(t)},i=function(e){return n(e,"overflow")+n(e,"overflow-y")+n(e,"overflow-x")},a=function(t){return e.test(i(t))},s=function(e){if(e instanceof HTMLElement||e instanceof SVGElement){for(var n=t(e.parentNode,[]),i=0;i({"~0":"~","~1":"/"}[e]||e)))}function*o(e){const t=1;if(e.lengtht)throw new Error(`invalid array index ${e}`);return n}function*p(e,t,n={strict:!1}){let i=e;for(const s of o(t)){if(n.strict&&!Object.prototype.hasOwnProperty.call(i,s))throw new u(t);i=i[s],yield{node:i,token:s}}}function g(e,t){let n=e;for(const{node:i}of p(e,t,{strict:!0}))n=i;return n}function f(e,t,n){let i=null,s=e,a=null;for(const{node:o,token:l}of p(e,t))i=s,s=o,a=l;if(!i)throw new u(t);if(Array.isArray(i))try{const e=h(a,i);i.splice(e,0,n)}catch(r){throw new u(t)}else Object.assign(i,{[a]:n});return e}function m(e,t){let n=null,i=e,s=null;for(const{node:r,token:o}of p(e,t))n=i,i=r,s=o;if(!n)throw new u(t);if(Array.isArray(n))try{const e=h(s,n);n.splice(e,1)}catch(a){throw new u(t)}else{if(!i)throw new u(t);delete n[s]}return e}function y(e,t,n){return m(e,t),f(e,t,n),e}function v(e,t,n){const i=g(e,t);return m(e,t),f(e,n,i),e}function b(e,t,n){return f(e,n,g(e,t)),e}function T(e,t,n){function i(e,t){const n=typeof e,s=typeof t;if(n!==s)return!1;switch(n){case d:{const n=Object.keys(e),s=Object.keys(t);return n.length===s.length&&n.every(((n,a)=>n===s[a]&&i(e[n],t[n])))}default:return e===t}}const s=g(e,t);if(!i(n,s))throw new Error("test failed");return e}const S={add:(e,{path:t,value:n})=>f(e,t,n),copy:(e,{from:t,path:n})=>b(e,t,n),move:(e,{from:t,path:n})=>v(e,t,n),remove:(e,{path:t})=>m(e,t),replace:(e,{path:t,value:n})=>y(e,t,n),test:(e,{path:t,value:n})=>T(e,t,n)};function _(e,{op:t,...n}){const i=S[t];if(!i)throw new Error("unknown operation");return i(e,n)}function C(e,t){return t.reduce(_,e)}var k=n(7192),w=n(8841),I=n(2433),x=function(){var e=this,t=e._self._c;return t("div",{staticClass:"doc-topic",class:{"with-on-this-page":e.enableOnThisPageNav&&e.isOnThisPageNavVisible}},[t(e.isTargetIDE?"div":"main",{tag:"component",staticClass:"main",attrs:{id:"main"}},[t("DocumentationHero",{attrs:{role:e.role,enhanceBackground:e.enhanceBackground,enableMinimized:e.enableMinimized,shortHero:e.shortHero,shouldShowLanguageSwitcher:e.shouldShowLanguageSwitcher,iconOverride:e.references[e.pageIcon],standardColorIdentifier:e.standardColorIdentifier},scopedSlots:e._u([{key:"above-content",fn:function(){return[e._t("above-hero-content")]},proxy:!0}],null,!0)},[e._t("above-title"),e.shouldShowLanguageSwitcher?t("LanguageSwitcher",{attrs:{interfaceLanguage:e.interfaceLanguage,objcPath:e.objcPath,swiftPath:e.swiftPath}}):e._e(),t("Title",{class:{"minimized-title":e.enableMinimized},attrs:{eyebrow:e.enableMinimized?null:e.roleHeading},scopedSlots:e._u([e.isSymbolDeprecated||e.isSymbolBeta?{key:"after",fn:function(){return[t("small",{class:e.tagName,attrs:{"data-tag-name":e.tagName}})]},proxy:!0}:null],null,!0)},[t(e.titleBreakComponent,{tag:"component"},[e._v(e._s(e.title))])],1),e.abstract?t("Abstract",{class:{"minimized-abstract":e.enableMinimized},attrs:{content:e.abstract}}):e._e(),e.sampleCodeDownload?t("div",[t("DownloadButton",{staticClass:"sample-download",attrs:{action:e.sampleCodeDownload.action}})],1):e._e(),e.shouldShowAvailability?t("Availability",{attrs:{platforms:e.platforms,technologies:e.technologies}}):e._e(),e.declarations.length?t("div",{staticClass:"declarations-container",class:{"minimized-container":e.enableMinimized}},e._l(e.declarations,(function(n,i){return t("Declaration",{key:i,attrs:{conformance:e.conformance,declarations:n.declarations,source:e.remoteSource}})})),1):e._e()],2),t("div",{staticClass:"doc-content-wrapper"},[t("div",{staticClass:"doc-content",class:{"no-primary-content":!e.hasPrimaryContent&&e.enhanceBackground}},[e.hasPrimaryContent?t("div",{class:["container",{"minimized-container":e.enableMinimized}]},[t("div",{staticClass:"description",class:{"after-enhanced-hero":e.enhanceBackground}},[e.isRequirement?t("RequirementMetadata",{attrs:{defaultImplementationsCount:e.defaultImplementationsCount}}):e._e(),e.deprecationSummary&&e.deprecationSummary.length?t("Aside",{attrs:{kind:"deprecated"}},[t("ContentNode",{attrs:{content:e.deprecationSummary}})],1):e._e(),e.downloadNotAvailableSummary&&e.downloadNotAvailableSummary.length?t("Aside",{attrs:{kind:"note"}},[t("ContentNode",{attrs:{content:e.downloadNotAvailableSummary}})],1):e._e()],1),e.primaryContentSectionsSanitized&&e.primaryContentSectionsSanitized.length?t("PrimaryContent",{class:{"with-border":!e.enhanceBackground},attrs:{conformance:e.conformance,source:e.remoteSource,sections:e.primaryContentSectionsSanitized}}):e._e(),e.shouldShowViewMoreLink?t("ViewMore",{attrs:{url:e.viewMoreLink}}):e._e()],1):e._e(),e.shouldRenderTopicSection?t("Topics",{attrs:{sections:e.topicSections,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,topicStyle:e.topicSectionsStyle}}):e._e(),e.defaultImplementationsSections&&!e.enableMinimized?t("DefaultImplementations",{attrs:{sections:e.defaultImplementationsSections,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta}}):e._e(),e.relationshipsSections&&!e.enableMinimized?t("Relationships",{attrs:{sections:e.relationshipsSections}}):e._e(),e.seeAlsoSections&&!e.enableMinimized?t("SeeAlso",{attrs:{sections:e.seeAlsoSections}}):e._e()],1),e.enableOnThisPageNav?[t("OnThisPageStickyContainer",{directives:[{name:"show",rawName:"v-show",value:e.isOnThisPageNavVisible,expression:"isOnThisPageNavVisible"}]},[e.topicState.onThisPageSections.length>2?t("OnThisPageNav"):e._e()],1)]:e._e()],2),!e.isTargetIDE&&e.hasBetaContent?t("BetaLegalText"):e._e()],1),t("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"polite"}},[e._v(" "+e._s(e.$t("documentation.current-page",{title:e.pageTitle}))+" ")])],1)},$=[],D=n(3078),P=n(2974),L=n(2449),A=n(5947),O=n(4030),N=n(7587),R=function(){var e=this,t=e._self._c;return t("div",{staticClass:"betainfo"},[t("div",{staticClass:"betainfo-container"},[t("GridRow",[t("GridColumn",{attrs:{span:{large:12}}},[t("p",{staticClass:"betainfo-label"},[e._v(e._s(e.$t("metadata.beta.software")))]),t("div",{staticClass:"betainfo-content"},[e._t("content",(function(){return[t("p",[e._v(e._s(e.$t("metadata.beta.legal")))])]}))],2),e._t("after")],2)],1)],1)])},B=[],E=n(9649),M=n(1576),z={name:"BetaLegalText",components:{GridColumn:M.Z,GridRow:E.Z}},K=z,Z=n(1001),j=(0,Z.Z)(K,R,B,!1,null,"ba3b3cc0",null),q=j.exports,F=function(){var e=this,t=e._self._c;return t("Section",{staticClass:"language",attrs:{role:"complementary","aria-label":e.$t("language")}},[t("Title",[e._v(e._s(e.$t("formats.colon",{content:e.$t("language")})))]),t("div",{staticClass:"language-list"},[t("LanguageSwitcherLink",{staticClass:"language-option swift",class:{active:e.swift.active},attrs:{url:e.swift.active?null:e.swift.url},on:{click:function(t){return e.chooseLanguage(e.swift)}}},[e._v(" "+e._s(e.swift.name)+" ")]),t("LanguageSwitcherLink",{staticClass:"language-option objc",class:{active:e.objc.active},attrs:{url:e.objc.active?null:e.objc.url},on:{click:function(t){return e.chooseLanguage(e.objc)}}},[e._v(" "+e._s(e.objc.name)+" ")])],1)],1)},H=[],V=function(){var e=this,t=e._self._c;return e.url?t("a",{attrs:{href:e.url},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[e._t("default")],2):t("span",[e._t("default")],2)},W=[],U={name:"LanguageSwitcherLink",props:{url:[String,Object]}},G=U,Q=(0,Z.Z)(G,V,W,!1,null,null,null),J=Q.exports,Y=function(){var e=this,t=e._self._c;return t("div",{staticClass:"summary-section"},[e._t("default")],2)},X=[],ee={name:"Section"},te=ee,ne=(0,Z.Z)(te,Y,X,!1,null,"3aa6f694",null),ie=ne.exports,se=function(){var e=this,t=e._self._c;return t("p",{staticClass:"title"},[e._t("default")],2)},ae=[],re={name:"Title"},oe=re,le=(0,Z.Z)(oe,se,ae,!1,null,"6796f6ea",null),ce=le.exports,de={name:"LanguageSwitcher",components:{LanguageSwitcherLink:J,Section:ie,Title:ce},inject:{isTargetIDE:{default:()=>!1},store:{default(){return{setPreferredLanguage(){}}}}},props:{interfaceLanguage:{type:String,required:!0},objcPath:{type:String,required:!0},swiftPath:{type:String,required:!0}},computed:{objc:({interfaceLanguage:e,objcPath:t,$route:{query:n}})=>({...D.Z.objectiveC,active:D.Z.objectiveC.key.api===e,url:(0,L.Q2)((0,A.Jf)(t),{...n,language:D.Z.objectiveC.key.url})}),swift:({interfaceLanguage:e,swiftPath:t,$route:{query:n}})=>({...D.Z.swift,active:D.Z.swift.key.api===e,url:(0,L.Q2)((0,A.Jf)(t),{...n,language:void 0})})},methods:{chooseLanguage(e){this.isTargetIDE||this.store.setPreferredLanguage(e.key.url),this.$router.push(e.url)}}},ue=de,he=(0,Z.Z)(ue,F,H,!1,null,"1a36493d",null),pe=he.exports,ge=function(){var e=this,t=e._self._c;return t("div",{staticClass:"view-more-link"},[t("router-link",{staticClass:"base-link",attrs:{to:e.url}},[e._t("default",(function(){return[e._v(e._s(e.$t("documentation.view-more")))]}))],2)],1)},fe=[],me={name:"ViewMore",props:{url:{type:String,required:!0}}},ye=me,ve=(0,Z.Z)(ye,ge,fe,!1,null,"3f54e653",null),be=ve.exports,Te=function(){var e=this,t=e._self._c;return t("div",{class:["documentation-hero",{"documentation-hero--disabled":!e.enhanceBackground,"theme-dark":e.enhanceBackground}],style:e.styles},[t("div",{staticClass:"icon"},[e.enhanceBackground?t("TopicTypeIcon",{key:"first",staticClass:"background-icon first-icon",attrs:{type:e.type,"image-override":e.iconOverride,"with-colors":""}}):e._e()],1),t("div",{staticClass:"documentation-hero__above-content"},[e._t("above-content")],2),t("div",{staticClass:"documentation-hero__content",class:{"short-hero":e.shortHero,"extra-bottom-padding":e.shouldShowLanguageSwitcher,"minimized-hero":e.enableMinimized}},[e._t("default")],2)])},Se=[],_e=n(3570),Ce=n(5629),ke=n(1869);const we={red:"red",orange:"orange",yellow:"yellow",blue:"blue",green:"green",purple:"purple",gray:"gray"};var Ie={name:"DocumentationHero",components:{TopicTypeIcon:_e.Z},props:{role:{type:String,required:!0},enhanceBackground:{type:Boolean,required:!0},enableMinimized:{type:Boolean,default:!1},shortHero:{type:Boolean,required:!0},shouldShowLanguageSwitcher:{type:Boolean,required:!0},iconOverride:{type:Object,required:!1},standardColorIdentifier:{type:String,required:!1,validator:e=>Object.prototype.hasOwnProperty.call(we,e)}},computed:{color:({type:e})=>ke.g[Ce.$[e]||e]||ke.c.teal,styles:({color:e,standardColorIdentifier:t})=>({"--accent-color":`var(--color-documentation-intro-accent, var(--color-type-icon-${e}))`,"--standard-accent-color":t&&`var(--color-standard-${t}-documentation-intro-fill, var(--color-standard-${t}))`}),type:({role:e})=>{switch(e){case k.L.collection:return Ce.t.module;case k.L.collectionGroup:return Ce.t.collection;default:return e}}}},xe=Ie,$e=(0,Z.Z)(xe,Te,Se,!1,null,"0a9cf53e",null),De=$e.exports,Pe=n(352),Le=n(3946),Ae=function(){var e=this,t=e._self._c;return t("div",{staticClass:"OnThisPageNav"},[t("ul",{staticClass:"items"},e._l(e.onThisPageSections,(function(n){return t("li",{key:n.anchor,class:e.getItemClasses(n)},[t("router-link",{staticClass:"base-link",attrs:{to:n.url},nativeOn:{click:function(t){return e.handleFocusAndScroll(n.anchor)}}},[t(e.getWrapperComponent(n),{tag:"component"},[e._v(" "+e._s(e.getTextContent(n))+" ")])],1)],1)})),0)])},Oe=[];function Ne(e,t){let n,i;return function(...s){const a=this;if(!i)return e.apply(a,s),void(i=Date.now());clearTimeout(n),n=setTimeout((()=>{Date.now()-i>=t&&(e.apply(a,s),i=Date.now())}),t-(Date.now()-i))}}var Re=n(5657),Be=n(3704),Ee={name:"OnThisPageNav",components:{WordBreak:Pe.Z},mixins:[Be.Z],inject:{store:{default(){return{state:{onThisPageSections:[],currentPageAnchor:null}}}}},computed:{onThisPageSections:({store:e,$route:t})=>e.state.onThisPageSections.map((e=>({...e,url:(0,L.Q2)(`#${e.anchor}`,t.query)}))),currentPageAnchor:({store:e})=>e.state.currentPageAnchor},async mounted(){window.addEventListener("scroll",this.onScroll,!1),this.$once("hook:beforeDestroy",(()=>{window.removeEventListener("scroll",this.onScroll)}))},watch:{onThisPageSections:{immediate:!0,async handler(){await(0,Re.J)(8),this.onScroll()}}},methods:{onScroll:Ne((function(){const e=this.onThisPageSections.length;if(!e)return;const{scrollY:t,innerHeight:n}=window,{scrollHeight:i}=document.body,s=t+n>=i,a=t<=0,r=.3*n+t;if(a||s){const t=a?0:e-1;return void this.store.setCurrentPageSection(this.onThisPageSections[t].anchor)}let o,l,c=null;for(o=0;o(0,Xe.$8)(["theme","code","indentationWidth"],it),formattedTokens:({language:e,formattedSwiftTokens:t,tokens:n})=>e===D.Z.swift.key.api?t:n,formattedSwiftTokens:({indentationWidth:e,tokens:t})=>{const n=" ".repeat(e);let i=!1;const s=[];let a=0,r=null,o=null,l=null,c=null,d=0,u=null;while(ae===nt.attribute||e===nt.externalParam;e.text&&e.text.endsWith(", ")&&g&&f(g)&&(h.text=`${e.text.trimEnd()}\n${n}`,i=!0),s.push(h),a+=1}if(i&&null!==r){const e=s[r].text;s[r].text=`${e}\n${n}`}if(i&&null!==l){const e=s[l].text,t=e.slice(0,c),n=e.slice(c),i=`${t}\n${n}`;s[l].text=i}return s},hasMultipleLines({formattedTokens:e}){return e.reduce(((t,n,i)=>{let s=/\n/g;return i===e.length-1&&(s=/\n(?!$)/g),n.text?t+(n.text.match(s)||[]).length:t}),1)>=2}},methods:{propsFor(e){return{kind:e.kind,identifier:e.identifier,text:e.text,tokens:e.tokens}},handleWindowResize(){this.displaysMultipleLines=(0,Je.s)(this.$refs.declarationGroup)}},async mounted(){window.addEventListener("resize",this.handleWindowResize),this.language===D.Z.objectiveC.key.api&&(await this.$nextTick(),Qe(this.$refs.code.$el,this.language)),this.handleWindowResize()},beforeDestroy(){window.removeEventListener("resize",this.handleWindowResize)}},at=st,rt=(0,Z.Z)(at,We,Ue,!1,null,"d22a3f50",null),ot=rt.exports,lt=n(1842),ct={name:"DeclarationGroup",components:{Source:ot},mixins:[lt.PH],inject:{languages:{default:()=>new Set},interfaceLanguage:{default:()=>D.Z.swift.key.api},symbolKind:{default:()=>{}}},props:{declaration:{type:Object,required:!0},shouldCaption:{type:Boolean,default:!1},changeType:{type:String,required:!1}},computed:{classes:({changeType:e,multipleLinesClass:t,displaysMultipleLinesAfterAPIChanges:n})=>({[`declaration-group--changed declaration-group--${e}`]:e,[t]:n}),caption(){return this.declaration.platforms.join(", ")},isSwift:({interfaceLanguage:e})=>e===D.Z.swift.key.api}},dt=ct,ut=(0,Z.Z)(dt,He,Ve,!1,null,"4f51d8d2",null),ht=ut.exports,pt=function(){var e=this,t=e._self._c;return t("div",{staticClass:"declaration-diff"},[t("div",{staticClass:"declaration-diff-current"},[t("div",{staticClass:"declaration-diff-version"},[e._v("Current")]),e._l(e.currentDeclarations,(function(n,i){return t("DeclarationGroup",{key:i,attrs:{declaration:n,"should-caption":e.currentDeclarations.length>1,changeType:e.changeType}})}))],2),t("div",{staticClass:"declaration-diff-previous"},[t("div",{staticClass:"declaration-diff-version"},[e._v("Previous")]),e._l(e.previousDeclarations,(function(n,i){return t("DeclarationGroup",{key:i,attrs:{declaration:n,"should-caption":e.previousDeclarations.length>1,changeType:e.changeType}})}))],2)])},gt=[],ft={name:"DeclarationDiff",components:{DeclarationGroup:ht},props:{changes:{type:Object,required:!0},changeType:{type:String,required:!0}},computed:{previousDeclarations:({changes:e})=>e.declaration.previous||[],currentDeclarations:({changes:e})=>e.declaration.new||[]}},mt=ft,yt=(0,Z.Z)(mt,pt,gt,!1,null,"b3e21c4a",null),vt=yt.exports,bt=function(){var e=this,t=e._self._c;return t("a",{staticClass:"declaration-source-link",attrs:{href:e.url,title:`Open source file for ${e.fileName}`,target:"_blank"}},[e.isSwiftFile?t("SwiftFileIcon",{staticClass:"declaration-icon"}):e._e(),t("WordBreak",[e._v(e._s(e.fileName))])],1)},Tt=[],St=n(7834),_t={name:"DeclarationSourceLink",components:{WordBreak:Pe.Z,SwiftFileIcon:St.Z},props:{url:{type:String,required:!0},fileName:{type:String,required:!0}},computed:{isSwiftFile:({fileName:e})=>e.endsWith(".swift")}},Ct=_t,kt=(0,Z.Z)(Ct,bt,Tt,!1,null,"5863919c",null),wt=kt.exports,It=n(9426),xt={name:"Declaration",components:{DeclarationDiff:vt,DeclarationGroup:ht,DeclarationSourceLink:wt,ConditionalConstraints:Fe.Z},constants:{ChangeTypes:It.yf,multipleLinesClass:Ye._},inject:["identifier","store"],data:({store:{state:e}})=>({state:e,multipleLinesClass:Ye._}),props:{conformance:{type:Object,required:!1},source:{type:Object,required:!1},declarations:{type:Array,required:!0}},computed:{hasPlatformVariants(){return this.declarations.length>1},hasModifiedChanges({declarationChanges:e}){if(!e||!e.declaration)return!1;const t=e.declaration;return!(!(t.new||[]).length||!(t.previous||[]).length)},declarationChanges:({state:{apiChanges:e},identifier:t})=>e&&e[t],changeType:({declarationChanges:e,hasModifiedChanges:t})=>{if(!e)return;const n=e.declaration;return n?t?It.yf.modified:e.change:e.change===It.yf.added?It.yf.added:void 0},changeClasses:({changeType:e})=>({[`changed changed-${e}`]:e})}},$t=xt,Dt=(0,Z.Z)($t,je,qe,!1,null,"2ab6251b",null),Pt=Dt.exports,Lt=function(){var e=this,t=e._self._c;return t("ContentNode",e._b({staticClass:"abstract"},"ContentNode",e.$props,!1))},At=[],Ot=n(8846),Nt={name:"Abstract",components:{ContentNode:Ot.Z},props:Ot.Z.props},Rt=Nt,Bt=(0,Z.Z)(Rt,Lt,At,!1,null,"cdcaacd2",null),Et=Bt.exports,Mt=n(7605),zt=function(){var e=this,t=e._self._c;return t("TopicsTable",{attrs:{anchor:e.contentSectionData.anchor,title:e.$t(e.contentSectionData.title),isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,sections:e.sections,wrapTitle:!0}})},Kt=[];const Zt={topics:{title:"sections.topics",anchor:"topics",level:2},defaultImplementations:{title:"sections.default-implementations",anchor:"default-implementations",level:2},relationships:{title:"sections.relationships",anchor:"relationships",level:2},seeAlso:{title:"sections.see-also",anchor:"see-also",level:2}},jt={[Ze.details]:{title:"sections.details",anchor:"details",level:2},[Ze.parameters]:{title:"sections.parameters",anchor:"parameters",level:2},[Ze.possibleValues]:{title:"sections.possible-values",anchor:"possibleValues",level:2}};var qt=function(){var e=this,t=e._self._c;return t("ContentTable",{attrs:{anchor:e.anchor,title:e.title}},e._l(e.sectionsWithTopics,(function(n,i){return t("ContentTableSection",{key:`${n.title}_${i}`,class:{"no-title":!n.title},attrs:{title:n.title,anchor:n.anchor},scopedSlots:e._u([n.title&&e.wrapTitle?{key:"title",fn:function({className:i}){return[t("LinkableHeading",{class:i,attrs:{level:3,anchor:n.anchor}},[t("WordBreak",[e._v(e._s(n.title))])],1)]}}:null,n.abstract?{key:"abstract",fn:function(){return[t("ContentNode",{attrs:{content:n.abstract}})]},proxy:!0}:null,n.discussion?{key:"discussion",fn:function(){return[t("ContentNode",{attrs:{content:n.discussion.content}})]},proxy:!0}:null],null,!0)},[e.shouldRenderList?e._l(n.topics,(function(n){return t("TopicsLinkBlock",{key:n.identifier,staticClass:"topic",attrs:{topic:n,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta}})})):t("TopicsLinkCardGrid",{staticClass:"topic",attrs:{items:n.topics,topicStyle:e.topicStyle}})],2)})),1)},Ft=[],Ht=n(2627),Vt=n(8039),Wt=n(5953),Ut=function(){var e=this,t=e._self._c;return t("section",{staticClass:"contenttable alt-light"},[t("div",{staticClass:"container"},[t("LinkableHeading",{staticClass:"title",attrs:{anchor:e.anchor}},[e._v(e._s(e.title))]),e._t("default")],2)])},Gt=[],Qt={name:"ContentTable",components:{LinkableHeading:Vt.Z},props:{anchor:{type:String,required:!0},title:{type:String,required:!0}}},Jt=Qt,Yt=(0,Z.Z)(Jt,Ut,Gt,!1,null,"6e075935",null),Xt=Yt.exports,en=function(){var e=this,t=e._self._c;return t("div",{staticClass:"contenttable-section"},[t("div",{staticClass:"section-title"},[e._t("title",(function(){return[e.title?t("LinkableHeading",{class:e.className,attrs:{level:3,anchor:e.anchorComputed}},[e._v(e._s(e.title))]):e._e()]}),{className:e.className})],2),t("div",{staticClass:"section-content"},[e._t("abstract"),e._t("discussion"),e._t("default")],2)])},tn=[],nn=n(3208);const sn="contenttable-title";var an={name:"ContentTableSection",components:{LinkableHeading:Vt.Z},props:{title:{type:String,required:!1},anchor:{type:String,default:null}},computed:{anchorComputed:({title:e,anchor:t})=>t||(0,nn.HA)(e||""),className:()=>sn}},rn=an,on=(0,Z.Z)(rn,en,tn,!1,null,"1b0546d9",null),ln=on.exports,cn=n(9037),dn={name:"TopicsTable",mixins:[Wt.Z],components:{TopicsLinkCardGrid:Ht.Z,WordBreak:Pe.Z,ContentTable:Xt,TopicsLinkBlock:cn["default"],ContentNode:Ot.Z,ContentTableSection:ln,LinkableHeading:Vt.Z},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:{type:Array,required:!0},title:{type:String,required:!1,default(){return"Topics"}},anchor:{type:String,required:!1,default(){return"topics"}},wrapTitle:{type:Boolean,default:!1},topicStyle:{type:String,default:Le.o.list}},computed:{shouldRenderList:({topicStyle:e})=>e===Le.o.list,sectionsWithTopics(){return this.sections.map((e=>({...e,topics:e.identifiers.reduce(((e,t)=>this.references[t]?e.concat(this.references[t]):e),[])})))}}},un=dn,hn=(0,Z.Z)(un,qt,Ft,!1,null,"1c2724f5",null),pn=hn.exports,gn={name:"DefaultImplementations",components:{TopicsTable:pn},computed:{contentSectionData:()=>Zt.defaultImplementations},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:pn.props.sections}},fn=gn,mn=(0,Z.Z)(fn,zt,Kt,!1,null,null,null),yn=mn.exports,vn=function(){var e=this,t=e._self._c;return t("div",{staticClass:"primary-content"},e._l(e.sections,(function(n,i){return t(e.componentFor(n),e._b({key:i,tag:"component"},"component",e.propsFor(n),!1))})),1)},bn=[],Tn=function(){var e=this,t=e._self._c;return t("section",[t("LinkableHeading",{attrs:{anchor:e.contentSectionData.anchor}},[e._v(" "+e._s(e.$t(e.contentSectionData.title))+" ")]),t("dl",{staticClass:"datalist"},[e._l(e.values,(function(n){return[t("dt",{key:`${n.name}:name`,staticClass:"param-name"},[t("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(n.name))])],1),n.content?t("dd",{key:`${n.name}:content`,staticClass:"value-content"},[t("ContentNode",{attrs:{content:n.content}})],1):e._e()]}))],2)],1)},Sn=[],_n=n(8843),Cn={name:"PossibleValues",components:{ContentNode:_n["default"],LinkableHeading:Vt.Z,WordBreak:Pe.Z},props:{values:{type:Array,required:!0}},computed:{contentSectionData:()=>jt[Ze.possibleValues]}},kn=Cn,wn=(0,Z.Z)(kn,Tn,Sn,!1,null,null,null),In=wn.exports,xn=function(){var e=this,t=e._self._c;return t("section",[t("LinkableHeading",{attrs:{anchor:e.anchor}},[e._v(e._s(e.title))]),t("DeclarationSource",{attrs:{tokens:e.tokens}})],1)},$n=[],Dn={name:"RestEndpoint",components:{DeclarationSource:ot,LinkableHeading:Vt.Z},props:{title:{type:String,required:!0},tokens:{type:Array,required:!0}},computed:{anchor:({title:e})=>(0,nn.HA)(e)}},Pn=Dn,Ln=(0,Z.Z)(Pn,xn,$n,!1,null,null,null),An=Ln.exports,On=function(){var e=this,t=e._self._c;return t("section",{staticClass:"details"},[t("LinkableHeading",{attrs:{anchor:e.contentSectionData.anchor}},[e._v(" "+e._s(e.$t(e.contentSectionData.title))+" ")]),t("dl",[e.isSymbol?[t("dt",{key:`${e.details.name}:name`,staticClass:"detail-type"},[e._v(" "+e._s(e.$t("metadata.details.name"))+" ")]),t("dd",{key:`${e.details.ideTitle}:content`,staticClass:"detail-content"},[e._v(" "+e._s(e.details.ideTitle)+" ")])]:e._e(),e.isTitle?[t("dt",{key:`${e.details.name}:key`,staticClass:"detail-type"},[e._v(" "+e._s(e.$t("metadata.details.key"))+" ")]),t("dd",{key:`${e.details.ideTitle}:content`,staticClass:"detail-content"},[e._v(" "+e._s(e.details.name)+" ")])]:e._e(),t("dt",{key:`${e.details.name}:type`,staticClass:"detail-type"},[e._v(" "+e._s(e.$t("metadata.details.type"))+" ")]),t("dd",{staticClass:"detail-content"},[t("PropertyListKeyType",{attrs:{types:e.details.value}})],1)],2)],1)},Nn=[],Rn=function(){var e=this,t=e._self._c;return t("div",{staticClass:"type"},[e._v(e._s(e.typeOutput))])},Bn=[],En={name:"PropertyListKeyType",props:{types:{type:Array,required:!0}},computed:{englishTypes(){return this.types.map((({arrayMode:e,baseType:t="*"})=>e?`array of ${this.pluralizeKeyType(t)}`:t))},typeOutput(){return this.englishTypes.length>2?[this.englishTypes.slice(0,this.englishTypes.length-1).join(", "),this.englishTypes[this.englishTypes.length-1]].join(", or "):this.englishTypes.join(" or ")}},methods:{pluralizeKeyType(e){switch(e){case"dictionary":return"dictionaries";case"array":case"number":case"string":return`${e}s`;default:return e}}}},Mn=En,zn=(0,Z.Z)(Mn,Rn,Bn,!1,null,"791bac44",null),Kn=zn.exports,Zn={name:"PropertyListKeyDetails",components:{PropertyListKeyType:Kn,LinkableHeading:Vt.Z},props:{details:{type:Object,required:!0}},computed:{contentSectionData:()=>jt[Ze.details],isTitle(){return"title"===this.details.titleStyle&&this.details.ideTitle},isSymbol(){return"symbol"===this.details.titleStyle&&this.details.ideTitle}}},jn=Zn,qn=(0,Z.Z)(jn,On,Nn,!1,null,"d66cd00c",null),Fn=qn.exports,Hn=function(){var e=this,t=e._self._c;return t("section",{staticClass:"parameters"},[t("LinkableHeading",{attrs:{anchor:e.contentSectionData.anchor}},[e._v(" "+e._s(e.$t(e.contentSectionData.title))+" ")]),t("dl",[e._l(e.parameters,(function(n){return[t("dt",{key:`${n.name}:name`,staticClass:"param-name"},[t("code",[e._v(e._s(n.name))])]),t("dd",{key:`${n.name}:content`,staticClass:"param-content"},[t("ContentNode",{attrs:{content:n.content}})],1)]}))],2)],1)},Vn=[],Wn={name:"Parameters",components:{ContentNode:Ot.Z,LinkableHeading:Vt.Z},props:{parameters:{type:Array,required:!0}},computed:{contentSectionData:()=>jt[Ze.parameters]}},Un=Wn,Gn=(0,Z.Z)(Un,Hn,Vn,!1,null,"5ef1227e",null),Qn=Gn.exports,Jn=function(){var e=this,t=e._self._c;return t("section",[t("LinkableHeading",{attrs:{anchor:e.anchor}},[e._v(e._s(e.title))]),t("ParametersTable",{staticClass:"property-table",attrs:{parameters:e.properties,changes:e.propertyChanges},scopedSlots:e._u([{key:"symbol",fn:function({name:n,type:i,content:s,changes:a,deprecated:r}){return[t("div",{staticClass:"property-name",class:{deprecated:r}},[t("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(n))])],1),e.shouldShiftType({name:n,content:s})?e._e():t("PossiblyChangedType",{attrs:{type:i,changes:a.type}})]}},{key:"description",fn:function({name:n,type:i,attributes:s,content:a,required:r,changes:o,deprecated:l,readOnly:c}){return[e.shouldShiftType({name:n,content:a})?t("PossiblyChangedType",{attrs:{type:i,changes:o.type}}):e._e(),l?[t("Badge",{staticClass:"property-deprecated",attrs:{variant:"deprecated"}}),e._v("  ")]:e._e(),t("PossiblyChangedTextAttribute",{attrs:{changes:o.required,value:r}},[e._v(" "+e._s(e.$t("formats.parenthesis",{content:e.$t("required")}))+" ")]),t("PossiblyChangedTextAttribute",{attrs:{changes:o.readOnly,value:c}},[e._v(" "+e._s(e.$t("formats.parenthesis",{content:e.$t("read-only")}))+" ")]),a?t("ContentNode",{attrs:{content:a}}):e._e(),t("ParameterAttributes",{attrs:{attributes:s,changes:o.attributes}})]}}])})],1)},Yn=[],Xn={inject:["identifier","store"],data:({store:{state:e}})=>({state:e}),computed:{apiChanges:({state:{apiChanges:e},identifier:t})=>e&&e[t]}},ei=n(7432),ti=function(){var e=this,t=e._self._c;return t("div",{staticClass:"parameters-table"},e._l(e.parameters,(function(n){return t("Row",{key:n[e.keyBy],staticClass:"param",class:e.changedClasses(n[e.keyBy])},[t("Column",{staticClass:"param-symbol",attrs:{span:{large:3,small:12}}},[e._t("symbol",null,null,e.getProps(n,e.changes[n[e.keyBy]]))],2),t("Column",{staticClass:"param-content",attrs:{span:{large:9,small:12}}},[e._t("description",null,null,e.getProps(n,e.changes[n[e.keyBy]]))],2)],1)})),1)},ni=[],ii={name:"ParametersTable",components:{Row:E.Z,Column:M.Z},props:{parameters:{type:Array,required:!0},changes:{type:Object,default:()=>({})},keyBy:{type:String,default:"name"}},methods:{getProps(e,t={}){return{...e,changes:t}},changedClasses(e){const{changes:t}=this,{change:n}=t[e]||{};return{[`changed changed-${n}`]:n}}}},si=ii,ai=(0,Z.Z)(si,ti,ni,!1,null,"eee7e94e",null),ri=ai.exports,oi=function(){var e=this,t=e._self._c;return t("div",{staticClass:"parameter-attributes"},[e.shouldRender(e.AttributeKind.default)?t("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function({attribute:n}){return[e._v(" "+e._s(e.$t("formats.colon",{content:n.title||e.$t("parameters.default")}))),t("code",[e._v(e._s(n.value))])]}}],null,!1,2998238055)},"ParameterMetaAttribute",{kind:e.AttributeKind.default,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.minimum)?t("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function({attribute:n}){return[e._v(" "+e._s(e.$t("formats.colon",{content:n.title||e.$t("parameters.minimum")}))),t("code",[e._v(e._s(n.value))])]}}],null,!1,859757818)},"ParameterMetaAttribute",{kind:e.AttributeKind.minimum,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.minimumExclusive)?t("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function({attribute:n}){return[e._v(" "+e._s(e.$t("formats.colon",{content:n.title||e.$t("parameters.minimum")}))),t("code",[e._v("> "+e._s(n.value))])]}}],null,!1,770347247)},"ParameterMetaAttribute",{kind:e.AttributeKind.minimumExclusive,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.maximum)?t("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function({attribute:n}){return[e._v(" "+e._s(e.$t("formats.colon",{content:n.title||e.$t("parameters.maximum")}))),t("code",[e._v(e._s(n.value))])]}}],null,!1,1190666532)},"ParameterMetaAttribute",{kind:e.AttributeKind.maximum,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.maximumExclusive)?t("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function({attribute:n}){return[e._v(" "+e._s(e.$t("formats.colon",{content:n.title||e.$t("parameters.maximum")}))),t("code",[e._v("< "+e._s(n.value))])]}}],null,!1,1156490099)},"ParameterMetaAttribute",{kind:e.AttributeKind.maximumExclusive,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.allowedTypes)?t("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function({attribute:n}){return[e._v(" "+e._s(e.$t("formats.colon",{content:e.$tc("parameters.possible-types",e.fallbackToValues(n).length)}))),t("code",[e._l(e.fallbackToValues(n),(function(i,s){return[e._l(i,(function(i,a){return[t("DeclarationToken",e._b({key:`${s}-${a}`},"DeclarationToken",i,!1)),s+1({new:null,previous:null})},value:{type:[Object,Array,String,Boolean],default:null},wrapChanges:{type:Boolean,default:!0},renderSingleChange:{type:Boolean,default:!1}},render(e){const{value:t,changes:n={},wrapChanges:i,renderSingleChange:s}=this,{new:a,previous:r}=n,o=(t,n)=>{const s=this.$scopedSlots.default({value:t});return n&&i?e("div",{class:n},[s]):s?s[0]:null};if(a||r){const t=o(a,ui.added),n=o(r,ui.removed);return s?a&&!r?t:n:e("div",{class:"property-changegroup"},[a?t:"",r?n:""])}return o(t)}},fi=gi,mi=(0,Z.Z)(fi,hi,pi,!1,null,null,null),yi=mi.exports,vi={name:"ParameterMetaAttribute",components:{RenderChanged:yi},props:{kind:{type:String,required:!0},attributes:{type:Object,required:!0},changes:{type:Object,default:()=>({})}}},bi=vi,Ti=(0,Z.Z)(bi,ci,di,!1,null,"f911f232",null),Si=Ti.exports;const _i={allowedTypes:"allowedTypes",allowedValues:"allowedValues",default:"default",maximum:"maximum",maximumExclusive:"maximumExclusive",minimum:"minimum",minimumExclusive:"minimumExclusive"};var Ci={name:"ParameterAttributes",components:{ParameterMetaAttribute:Si,DeclarationToken:tt["default"]},constants:{AttributeKind:_i},props:{attributes:{type:Array,default:()=>[]},changes:{type:Object,default:()=>({})}},computed:{AttributeKind:()=>_i,attributesObject:({attributes:e})=>e.reduce(((e,t)=>({...e,[t.kind]:t})),{})},methods:{shouldRender(e){return Object.prototype.hasOwnProperty.call(this.attributesObject,e)},fallbackToValues:e=>{const t=e||[];return Array.isArray(t)?t:t.values}}},ki=Ci,wi=(0,Z.Z)(ki,oi,li,!1,null,null,null),Ii=wi.exports,xi=function(){var e=this,t=e._self._c;return t("RenderChanged",{attrs:{renderSingleChange:"",value:e.value,changes:e.changes},scopedSlots:e._u([{key:"default",fn:function({value:n}){return[n?t("span",{staticClass:"property-text"},[e._t("default")],2):e._e()]}}],null,!0)})},$i=[],Di={name:"PossiblyChangedTextAttribute",components:{RenderChanged:yi},props:{changes:{type:Object,required:!1},value:{type:Boolean,default:!1}}},Pi=Di,Li=(0,Z.Z)(Pi,xi,$i,!1,null,null,null),Ai=Li.exports,Oi=function(){var e=this,t=e._self._c;return t("RenderChanged",{attrs:{value:e.type,wrapChanges:!1,changes:e.changes},scopedSlots:e._u([{key:"default",fn:function({value:n}){return[t("DeclarationTokenGroup",{staticClass:"property-metadata property-type",attrs:{type:e.getValues(n)}})]}}])})},Ni=[],Ri=function(){var e=this,t=e._self._c;return e.type&&e.type.length?t("div",[t("code",e._l(e.type,(function(n,i){return t("DeclarationToken",e._b({key:i},"DeclarationToken",n,!1))})),1)]):e._e()},Bi=[],Ei={name:"DeclarationTokenGroup",components:{DeclarationToken:tt["default"]},props:{type:{type:Array,default:()=>[],required:!1}}},Mi=Ei,zi=(0,Z.Z)(Mi,Ri,Bi,!1,null,null,null),Ki=zi.exports,Zi={name:"PossiblyChangedType",components:{DeclarationTokenGroup:Ki,RenderChanged:yi},props:{type:{type:Array,required:!0},changes:{type:Object,required:!1}},methods:{getValues(e){return Array.isArray(e)?e:e.values}}},ji=Zi,qi=(0,Z.Z)(ji,Oi,Ni,!1,null,"549ed0a8",null),Fi=qi.exports,Hi={name:"PropertyTable",mixins:[Xn],components:{Badge:ei.Z,WordBreak:Pe.Z,PossiblyChangedTextAttribute:Ai,PossiblyChangedType:Fi,ParameterAttributes:Ii,ContentNode:Ot.Z,ParametersTable:ri,LinkableHeading:Vt.Z},props:{title:{type:String,required:!0},properties:{type:Array,required:!0}},computed:{anchor:({title:e})=>(0,nn.HA)(e),propertyChanges:({apiChanges:e})=>(e||{}).properties},methods:{shouldShiftType:({content:e=[],name:t})=>!e.length&&t}},Vi=Hi,Wi=(0,Z.Z)(Vi,Jn,Yn,!1,null,"39899ccf",null),Ui=Wi.exports,Gi=function(){var e=this,t=e._self._c;return t("section",[t("LinkableHeading",{attrs:{anchor:e.anchor}},[e._v(e._s(e.title))]),t("ParametersTable",{attrs:{parameters:[e.bodyParam],changes:e.bodyChanges,keyBy:"key"},scopedSlots:e._u([{key:"symbol",fn:function({type:n,content:i,changes:s,name:a}){return[e.shouldShiftType({name:a,content:i})?e._e():t("PossiblyChangedType",{attrs:{type:n,changes:s.type}})]}},{key:"description",fn:function({name:n,content:i,mimeType:s,type:a,changes:r}){return[e.shouldShiftType({name:n,content:i})?t("PossiblyChangedType",{attrs:{type:a,changes:r.type}}):e._e(),i?t("ContentNode",{attrs:{content:i}}):e._e(),s?t("PossiblyChangedMimetype",{attrs:{mimetype:s,changes:r.mimetype,change:r.change}}):e._e()]}}])}),e.parts.length?[t("h3",[e._v(e._s(e.$t("sections.parts")))]),t("ParametersTable",{staticClass:"parts",attrs:{parameters:e.parts,changes:e.partsChanges},scopedSlots:e._u([{key:"symbol",fn:function({name:n,type:i,content:s,changes:a}){return[t("div",{staticClass:"part-name"},[t("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(n))])],1),s?t("PossiblyChangedType",{attrs:{type:i,changes:a.type}}):e._e()]}},{key:"description",fn:function({content:n,mimeType:i,required:s,type:a,attributes:r,changes:o,readOnly:l}){return[t("div",[n?e._e():t("PossiblyChangedType",{attrs:{type:a,changes:o.type}}),t("PossiblyChangedTextAttribute",{attrs:{changes:o.required,value:s}},[e._v("(Required) ")]),t("PossiblyChangedTextAttribute",{attrs:{changes:o.readOnly,value:l}},[e._v("(Read only) ")]),n?t("ContentNode",{attrs:{content:n}}):e._e(),i?t("PossiblyChangedMimetype",{attrs:{mimetype:i,changes:o.mimetype,change:o.change}}):e._e(),t("ParameterAttributes",{attrs:{attributes:r,changes:o.attributes}})],1)]}}],null,!1,1779956822)})]:e._e()],2)},Qi=[],Ji=function(){var e=this,t=e._self._c;return t("RenderChanged",{attrs:{changes:e.changeValues,value:e.mimetype},scopedSlots:e._u([{key:"default",fn:function({value:n}){return[t("div",{staticClass:"response-mimetype"},[e._v(" "+e._s(e.$t("content-type",{value:n}))+" ")])]}}])})},Yi=[],Xi={name:"PossiblyChangedMimetype",components:{RenderChanged:yi},props:{mimetype:{type:String,required:!0},changes:{type:[Object,String],required:!1},change:{type:String,required:!1}},computed:{changeValues({change:e,changes:t}){return e===It.yf.modified&&"string"!==typeof t?t:void 0}}},es=Xi,ts=(0,Z.Z)(es,Ji,Yi,!1,null,"18890a0f",null),ns=ts.exports;const is="restRequestBody";var ss={name:"RestBody",mixins:[Xn],components:{PossiblyChangedMimetype:ns,PossiblyChangedTextAttribute:Ai,PossiblyChangedType:Fi,WordBreak:Pe.Z,ParameterAttributes:Ii,ContentNode:Ot.Z,ParametersTable:ri,LinkableHeading:Vt.Z},constants:{ChangesKey:is},props:{bodyContentType:{type:Array,required:!0},content:{type:Array},mimeType:{type:String,required:!0},parts:{type:Array,default:()=>[]},title:{type:String,required:!0}},computed:{anchor:({title:e})=>(0,nn.HA)(e),bodyParam:({bodyContentType:e,content:t,mimeType:n})=>({key:is,content:t,mimeType:n,type:e}),bodyChanges:({apiChanges:e})=>e||{},partsChanges:({bodyChanges:e})=>(e[is]||{}).parts},methods:{shouldShiftType:({content:e=[],name:t})=>!e.length&&t}},as=ss,rs=(0,Z.Z)(as,Gi,Qi,!1,null,"68facc94",null),os=rs.exports,ls=function(){var e=this,t=e._self._c;return t("section",[t("LinkableHeading",{attrs:{anchor:e.anchor}},[e._v(e._s(e.title))]),t("ParametersTable",{attrs:{parameters:e.parameters,changes:e.parameterChanges},scopedSlots:e._u([{key:"symbol",fn:function({name:n,type:i,content:s,changes:a,deprecated:r}){return[t("div",{staticClass:"param-name",class:{deprecated:r}},[t("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(n))])],1),e.shouldShiftType({content:s,name:n})?e._e():t("PossiblyChangedType",{attrs:{type:i,changes:a.type}})]}},{key:"description",fn:function({name:n,type:i,content:s,required:a,attributes:r,changes:o,deprecated:l,readOnly:c}){return[t("div",[e.shouldShiftType({content:s,name:n})?t("PossiblyChangedType",{attrs:{type:i,changes:o.type}}):e._e(),l?[t("Badge",{staticClass:"param-deprecated",attrs:{variant:"deprecated"}}),e._v("  ")]:e._e(),t("PossiblyChangedTextAttribute",{attrs:{changes:o.required,value:a}},[e._v(" "+e._s(e.$t("formats.parenthesis",{content:e.$t("required")}))+" ")]),t("PossiblyChangedTextAttribute",{attrs:{changes:o.readOnly,value:c}},[e._v(" "+e._s(e.$t("formats.parenthesis",{content:e.$t("read-only")}))+" ")]),s?t("ContentNode",{attrs:{content:s}}):e._e(),t("ParameterAttributes",{attrs:{attributes:r,changes:o}})],2)]}}])})],1)},cs=[],ds={name:"RestParameters",mixins:[Xn],components:{Badge:ei.Z,PossiblyChangedType:Fi,PossiblyChangedTextAttribute:Ai,ParameterAttributes:Ii,WordBreak:Pe.Z,ContentNode:Ot.Z,ParametersTable:ri,LinkableHeading:Vt.Z},props:{title:{type:String,required:!0},parameters:{type:Array,required:!0}},computed:{anchor:({title:e})=>(0,nn.HA)(e),parameterChanges:({apiChanges:e})=>(e||{}).restParameters},methods:{shouldShiftType:({content:e=[],name:t})=>!e.length&&t}},us=ds,hs=(0,Z.Z)(us,ls,cs,!1,null,"0d9b752e",null),ps=hs.exports,gs=function(){var e=this,t=e._self._c;return t("section",[t("LinkableHeading",{attrs:{anchor:e.anchor}},[e._v(e._s(e.title))]),t("ParametersTable",{attrs:{parameters:e.responses,changes:e.propertyChanges,"key-by":"status"},scopedSlots:e._u([{key:"symbol",fn:function({status:n,type:i,reason:s,content:a,changes:r}){return[t("div",{staticClass:"response-name"},[t("code",[e._v(" "+e._s(n)+" "),t("span",{staticClass:"reason"},[e._v(e._s(s))])])]),e.shouldShiftType({content:a,reason:s,status:n})?e._e():t("PossiblyChangedType",{attrs:{type:i,changes:r.type}})]}},{key:"description",fn:function({content:n,mimetype:i,reason:s,type:a,status:r,changes:o}){return[e.shouldShiftType({content:n,reason:s,status:r})?t("PossiblyChangedType",{attrs:{type:a,changes:o.type}}):e._e(),t("div",{staticClass:"response-reason"},[t("code",[e._v(e._s(s))])]),n?t("ContentNode",{attrs:{content:n}}):e._e(),i?t("PossiblyChangedMimetype",{attrs:{mimetype:i,changes:o.mimetype,change:o.change}}):e._e()]}}])})],1)},fs=[],ms={name:"RestResponses",mixins:[Xn],components:{PossiblyChangedMimetype:ns,PossiblyChangedType:Fi,ContentNode:Ot.Z,ParametersTable:ri,LinkableHeading:Vt.Z},props:{title:{type:String,required:!0},responses:{type:Array,required:!0}},computed:{anchor:({title:e})=>(0,nn.HA)(e),propertyChanges:({apiChanges:e})=>(e||{}).restResponses},methods:{shouldShiftType:({content:e=[],reason:t,status:n})=>!(e.length||t)&&n}},ys=ms,vs=(0,Z.Z)(ys,gs,fs,!1,null,"ee5b05cc",null),bs=vs.exports,Ts={name:"PrimaryContent",components:{ContentNode:Ot.Z,Parameters:Qn,PropertyListKeyDetails:Fn,PropertyTable:Ui,RestBody:os,RestEndpoint:An,RestParameters:ps,RestResponses:bs,PossibleValues:In},constants:{SectionKind:Ze},props:{sections:{type:Array,required:!0,validator:e=>e.every((({kind:e})=>Object.prototype.hasOwnProperty.call(Ze,e)))}},computed:{span(){return{large:9,medium:9,small:12}}},methods:{componentFor(e){return{[Ze.content]:Ot.Z,[Ze.details]:Fn,[Ze.parameters]:Qn,[Ze.properties]:Ui,[Ze.restBody]:os,[Ze.restParameters]:ps,[Ze.restHeaders]:ps,[Ze.restCookies]:ps,[Ze.restEndpoint]:An,[Ze.restResponses]:bs,[Ze.possibleValues]:In}[e.kind]},propsFor(e){const{bodyContentType:t,content:n,details:i,items:s,kind:a,mimeType:r,parameters:o,title:l,tokens:c,values:d}=e;return{[Ze.content]:{content:n},[Ze.details]:{details:i},[Ze.parameters]:{parameters:o},[Ze.possibleValues]:{values:d},[Ze.properties]:{properties:s,title:l},[Ze.restBody]:{bodyContentType:t,content:n,mimeType:r,parts:o,title:l},[Ze.restCookies]:{parameters:s,title:l},[Ze.restEndpoint]:{tokens:c,title:l},[Ze.restHeaders]:{parameters:s,title:l},[Ze.restParameters]:{parameters:s,title:l},[Ze.restResponses]:{responses:s,title:l}}[a]}}},Ss=Ts,_s=(0,Z.Z)(Ss,vn,bn,!1,null,"56ef0742",null),Cs=_s.exports,ks=function(){var e=this,t=e._self._c;return t("ContentTable",{attrs:{anchor:e.contentSectionData.anchor,title:e.$t(e.contentSectionData.title)}},e._l(e.sectionsWithSymbols,(function(e){return t("Section",{key:e.type,attrs:{title:e.title,anchor:e.anchor}},[t("List",{attrs:{symbols:e.symbols,type:e.type}})],1)})),1)},ws=[],Is=function(){var e=this,t=e._self._c;return t("ul",{ref:"apiChangesDiff",staticClass:"relationships-list",class:e.classes},e._l(e.symbols,(function(n){return t("li",{key:n.identifier,staticClass:"relationships-item"},[n.url?t("Reference",{staticClass:"link",attrs:{role:n.role,kind:n.kind,url:n.url}},[e._v(e._s(n.title))]):t("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(n.title))]),n.conformance?t("ConditionalConstraints",{attrs:{constraints:n.conformance.constraints,prefix:n.conformance.conformancePrefix}}):e._e()],1)})),0)},xs=[],$s=n(2387);const Ds=3,Ps={conformsTo:"conformance",inheritsFrom:"inheritance",inheritedBy:"inheritedBy"};var Ls={name:"RelationshipsList",components:{ConditionalConstraints:Fe.Z,Reference:$s.Z,WordBreak:Pe.Z},inject:["store","identifier"],mixins:[lt.JY,lt.PH],props:{symbols:{type:Array,required:!0},type:{type:String,required:!0}},data(){return{state:this.store.state}},computed:{classes({changeType:e,multipleLinesClass:t,displaysMultipleLinesAfterAPIChanges:n}){return[{inline:this.shouldDisplayInline,column:!this.shouldDisplayInline,[`changed changed-${e}`]:!!e,[t]:n}]},hasAvailabilityConstraints(){return this.symbols.some((e=>!!(e.conformance||{}).constraints))},changes({identifier:e,state:{apiChanges:t}}){return(t||{})[e]||{}},changeType({changes:e,type:t}){const n=Ps[t];if(e.change!==It.yf.modified)return e.change;const i=e[n];if(!i)return;const s=(e,t)=>e.map(((e,n)=>[e,t[n]])),a=s(i.previous,i.new).some((([e,t])=>e.content?0===e.content.length&&t.content.length>0:!!t.content));return a?It.yf.added:It.yf.modified},shouldDisplayInline(){const{hasAvailabilityConstraints:e,symbols:t}=this;return t.length<=Ds&&!e}}},As=Ls,Os=(0,Z.Z)(As,Is,xs,!1,null,"ba5cad92",null),Ns=Os.exports,Rs={name:"Relationships",mixins:[Wt.Z],components:{ContentTable:Xt,List:Ns,Section:ln},props:{sections:{type:Array,required:!0}},computed:{contentSectionData:()=>Zt.relationships,sectionsWithSymbols(){return this.sections.map((e=>({...e,symbols:e.identifiers.reduce(((e,t)=>this.references[t]?e.concat(this.references[t]):e),[])})))}}},Bs=Rs,Es=(0,Z.Z)(Bs,ks,ws,!1,null,null,null),Ms=Es.exports,zs=n(7120),Ks=function(){var e=this,t=e._self._c;return t("Section",{staticClass:"availability",attrs:{role:"complementary","aria-label":e.$t("sections.availability")}},[e._l(e.technologies,(function(n){return t("Badge",{key:n,staticClass:"technology"},[t("TechnologyIcon",{staticClass:"tech-icon"}),e._v(" "+e._s(n)+" ")],1)})),e._l(e.platforms,(function(n){return t("Badge",{key:n.name,staticClass:"platform",class:e.changesClassesFor(n.name)},[t("AvailabilityRange",{attrs:{deprecatedAt:n.deprecatedAt,introducedAt:n.introducedAt,platformName:n.name}}),n.deprecatedAt?t("span",{staticClass:"deprecated"},[e._v(" "+e._s(e.$t("aside-kind.deprecated"))+" ")]):n.beta?t("span",{staticClass:"beta"},[e._v(e._s(e.$t("aside-kind.beta")))]):e._e()],1)}))],2)},Zs=[],js=n(9001),qs=function(){var e=this,t=e._self._c;return t("span",{attrs:{role:"text","aria-label":e.ariaLabel,title:e.description}},[e._v(" "+e._s(e.text)+" ")])},Fs=[],Hs={name:"AvailabilityRange",props:{deprecatedAt:{type:String,required:!1},introducedAt:{type:String,required:!0},platformName:{type:String,required:!0}},computed:{ariaLabel(){const{deprecatedAt:e,description:t,text:n}=this;return[n].concat(e?this.$t("change-type.deprecated"):[]).concat(t).join(", ")},description(){const{deprecatedAt:e,introducedAt:t,platformName:n}=this;return e?this.$t("availability.introduced-and-deprecated",{name:n,introducedAt:t,deprecatedAt:e}):this.$t("availability.available-on",{name:n,introducedAt:t})},text(){const{deprecatedAt:e,introducedAt:t,platformName:n}=this;return e?`${n} ${t}–${e}`:`${n} ${t}+`}}},Vs=Hs,Ws=(0,Z.Z)(Vs,qs,Fs,!1,null,null,null),Us=Ws.exports,Gs={name:"Availability",mixins:[lt.JY],inject:["identifier","store"],components:{Badge:ei.Z,AvailabilityRange:Us,Section:ie,TechnologyIcon:js.Z},props:{platforms:{type:Array,required:!0},technologies:{type:Array,required:!1}},data(){return{state:this.store.state}},methods:{changeFor(e){const{identifier:t,state:{apiChanges:n}}=this,{availability:i={}}=(n||{})[t]||{},s=i[e];if(s)return s.deprecated?It.yf.deprecated:s.introduced&&!s.introduced.previous?It.yf.added:It.yf.modified}}},Qs=Gs,Js=(0,Z.Z)(Qs,Ks,Zs,!1,null,"602d8130",null),Ys=Js.exports,Xs=function(){var e=this,t=e._self._c;return t("TopicsTable",{attrs:{anchor:e.contentSectionData.anchor,title:e.$t(e.contentSectionData.title),isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,sections:e.sections}})},ea=[],ta={name:"SeeAlso",components:{TopicsTable:pn},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:pn.props.sections},computed:{contentSectionData:()=>Zt.seeAlso}},na=ta,ia=(0,Z.Z)(na,Xs,ea,!1,null,null,null),sa=ia.exports,aa=function(){var e=this,t=e._self._c;return t("div",{staticClass:"topictitle"},[e.eyebrow?t("span",{staticClass:"eyebrow"},[e._v(e._s(e.eyebrow))]):e._e(),t("h1",{staticClass:"title"},[e._t("default"),e._t("after")],2)])},ra=[],oa={name:"Title",props:{eyebrow:{type:String,required:!1}}},la=oa,ca=(0,Z.Z)(la,aa,ra,!1,null,"4492c658",null),da=ca.exports,ua=function(){var e=this,t=e._self._c;return t("TopicsTable",{attrs:{anchor:e.contentSectionData.anchor,title:e.$t(e.contentSectionData.title),isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,sections:e.sections,topicStyle:e.topicStyle}})},ha=[],pa={name:"Topics",components:{TopicsTable:pn},computed:{contentSectionData:()=>Zt.topics},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:pn.props.sections,topicStyle:{type:String,required:!0,validator:e=>Object.hasOwnProperty.call(Le.o,e)}}},ga=pa,fa=(0,Z.Z)(ga,ua,ha,!1,null,null,null),ma=fa.exports,ya=function(){var e=this,t=e._self._c;return t("div",{staticClass:"OnThisPageStickyContainer"},[e._t("default")],2)},va=[],ba={name:"OnThisPageStickyContainer"},Ta=ba,Sa=(0,Z.Z)(Ta,ya,va,!1,null,"39ac6ed0",null),_a=Sa.exports;const Ca=1050;var ka={name:"DocumentationTopic",mixins:[P.Z],constants:{ON_THIS_PAGE_CONTAINER_BREAKPOINT:Ca},inject:{isTargetIDE:{default(){return!1}},store:{default(){return{reset(){},state:{}}}}},components:{Declaration:Pt,OnThisPageStickyContainer:_a,OnThisPageNav:Ke,DocumentationHero:De,Abstract:Et,Aside:N.Z,BetaLegalText:q,ContentNode:Ot.Z,DefaultImplementations:yn,DownloadButton:Mt.Z,LanguageSwitcher:pe,PrimaryContent:Cs,Relationships:Ms,RequirementMetadata:zs.Z,Availability:Ys,SeeAlso:sa,Title:da,Topics:ma,ViewMore:be,WordBreak:Pe.Z},props:{abstract:{type:Array,required:!1},conformance:{type:Object,required:!1},defaultImplementationsSections:{type:Array,required:!1},downloadNotAvailableSummary:{type:Array,required:!1},deprecationSummary:{type:Array,required:!1},diffAvailability:{type:Object,required:!1},modules:{type:Array,required:!1},hasNoExpandedDocumentation:{type:Boolean,required:!1},hierarchy:{type:Object,default:()=>({})},interfaceLanguage:{type:String,required:!0},identifier:{type:String,required:!0},isRequirement:{type:Boolean,default:()=>!1},platforms:{type:Array,required:!1},primaryContentSections:{type:Array,required:!1},references:{type:Object,required:!0},relationshipsSections:{type:Array,required:!1},roleHeading:{type:String,required:!1},title:{type:String,required:!0},topicSections:{type:Array,required:!1},topicSectionsStyle:{type:String,default:Le.o.list},sampleCodeDownload:{type:Object,required:!1},seeAlsoSections:{type:Array,required:!1},languagePaths:{type:Object,default:()=>({})},tags:{type:Array,required:!0},objcPath:{type:String,required:!1},swiftPath:{type:String,required:!1},isSymbolDeprecated:{type:Boolean,required:!1},isSymbolBeta:{type:Boolean,required:!1},symbolKind:{type:String,default:""},role:{type:String,default:""},remoteSource:{type:Object,required:!1},pageImages:{type:Array,required:!1},enableMinimized:{type:Boolean,default:!1},enableOnThisPageNav:{type:Boolean,default:!1},disableHeroBackground:{type:Boolean,default:!1},standardColorIdentifier:{type:String,required:!1,validator:e=>Object.prototype.hasOwnProperty.call(we,e)},availableLocales:{type:Array,required:!1}},provide(){return{identifier:this.identifier,languages:new Set(Object.keys(this.languagePaths)),interfaceLanguage:this.interfaceLanguage,symbolKind:this.symbolKind,enableMinimized:this.enableMinimized}},data(){return{topicState:this.store.state}},computed:{normalizedSwiftPath:({swiftPath:e})=>(0,A.Jf)(e),normalizedObjcPath:({objcPath:e,swiftPath:t})=>(0,A.Jf)(e&&t?(0,L.Q2)(e,{language:D.Z.objectiveC.key.url}):e),defaultImplementationsCount(){return(this.defaultImplementationsSections||[]).reduce(((e,t)=>e+t.identifiers.length),0)},shouldShowAvailability:({platforms:e,technologies:t,enableMinimized:n})=>((e||[]).length||(t||[]).length)&&!n,hasBetaContent:({platforms:e})=>e&&e.length&&e.some((e=>e.beta)),pageTitle:({title:e})=>e,pageDescription:({abstract:e,extractFirstParagraphText:t})=>e?t(e):null,shouldShowLanguageSwitcher:({objcPath:e,swiftPath:t,isTargetIDE:n,enableMinimized:i})=>!!(e&&t&&n)&&!i,enhanceBackground:({symbolKind:e,disableHeroBackground:t,enableMinimized:n})=>!t&&!n&&(!e||"module"===e),shortHero:({roleHeading:e,abstract:t,sampleCodeDownload:n,hasAvailability:i,shouldShowLanguageSwitcher:s,declarations:a})=>!!e+!!t+!!n+!!a.length+!!i+s<=1,technologies({modules:e=[]}){const t=e.reduce(((e,t)=>(e.push(t.name),e.concat(t.relatedModules||[]))),[]);return t.length>1?t:[]},titleBreakComponent:({enhanceBackground:e})=>e?"span":Pe.Z,hasPrimaryContent:({isRequirement:e,deprecationSummary:t,downloadNotAvailableSummary:n,primaryContentSectionsSanitized:i,shouldShowViewMoreLink:s})=>e||t&&t.length||n&&n.length||i.length||s,viewMoreLink:({interfaceLanguage:e,normalizedObjcPath:t,normalizedSwiftPath:n})=>e===D.Z.objectiveC.key.api?t:n,shouldShowViewMoreLink:({enableMinimized:e,hasNoExpandedDocumentation:t,viewMoreLink:n})=>e&&!t&&n,tagName(){return this.isSymbolDeprecated?this.$t("aside-kind.deprecated"):this.$t("aside-kind.beta")},pageIcon:({pageImages:e=[]})=>{const t=e.find((({type:e})=>"icon"===e));return t?t.identifier:null},shouldRenderTopicSection:({topicSectionsStyle:e,topicSections:t,enableMinimized:n})=>t&&e!==Le.o.hidden&&!n,isOnThisPageNavVisible:({topicState:e})=>e.contentWidth>Ca,disableMetadata:({enableMinimized:e})=>e,primaryContentSectionsSanitized({primaryContentSections:e=[]}){return e.filter((({kind:e})=>e!==Ze.declarations))},declarations({primaryContentSections:e=[]}){return e.filter((({kind:e})=>e===Ze.declarations))}},methods:{extractProps(e){const{abstract:t,defaultImplementationsSections:n,deprecationSummary:i,downloadNotAvailableSummary:s,diffAvailability:a,hierarchy:r,identifier:{interfaceLanguage:o,url:l},metadata:{conformance:c,hasNoExpandedDocumentation:d,modules:u,availableLocales:h,platforms:p,required:g=!1,roleHeading:f,title:m="",tags:y=[],role:v,symbolKind:b="",remoteSource:T,images:S=[],color:{standardColorIdentifier:_}={}}={},primaryContentSections:C,relationshipsSections:k,references:w={},sampleCodeDownload:I,topicSectionsStyle:x,topicSections:$,seeAlsoSections:P,variantOverrides:L,variants:A=[]}=e,O=A.reduce(((e,t)=>t.traits.reduce(((e,n)=>n.interfaceLanguage?{...e,[n.interfaceLanguage]:(e[n.interfaceLanguage]||[]).concat(t.paths)}:e),e)),{}),{[D.Z.objectiveC.key.api]:[N]=[],[D.Z.swift.key.api]:[R]=[]}=O;return{abstract:t,conformance:c,defaultImplementationsSections:n,deprecationSummary:i,downloadNotAvailableSummary:s,diffAvailability:a,hasNoExpandedDocumentation:d,availableLocales:h,hierarchy:r,role:v,identifier:l,interfaceLanguage:o,isRequirement:g,modules:u,platforms:p,primaryContentSections:C,relationshipsSections:k,references:w,roleHeading:f,sampleCodeDownload:I,title:m,topicSections:$,topicSectionsStyle:x,seeAlsoSections:P,variantOverrides:L,symbolKind:b,tags:y.slice(0,1),remoteSource:T,pageImages:S,objcPath:N,swiftPath:R,standardColorIdentifier:_}}},created(){if(this.topicState.preferredLanguage===D.Z.objectiveC.key.url&&this.interfaceLanguage!==D.Z.objectiveC.key.api&&this.objcPath&&this.$route.query.language!==D.Z.objectiveC.key.url){const{query:e}=this.$route;this.$nextTick().then((()=>{this.$router.replace({path:(0,A.Jf)(this.objcPath),query:{...e,language:D.Z.objectiveC.key.url}})}))}O["default"].setAvailableLocales(this.availableLocales||[]),this.store.reset(),this.store.setReferences(this.references)},watch:{references(e){this.store.setReferences(e)},availableLocales(e){O["default"].setAvailableLocales(e)}}},wa=ka,Ia=(0,Z.Z)(wa,x,$,!1,null,"2ff03362",null),xa=Ia.exports,$a=n(144);const Da=()=>({[It.yf.modified]:0,[It.yf.added]:0,[It.yf.deprecated]:0});var Pa={state:{apiChanges:null,apiChangesCounts:Da(),selectedAPIChangesVersion:null},setAPIChanges(e){this.state.apiChanges=e},setSelectedAPIChangesVersion(e){this.state.selectedAPIChangesVersion=e},resetApiChanges(){this.state.apiChanges=null,this.state.apiChangesCounts=Da()},async updateApiChangesCounts(){await $a["default"].nextTick(),Object.keys(this.state.apiChangesCounts).forEach((e=>{this.state.apiChangesCounts[e]=this.countChangeType(e)}))},countChangeType(e){if(document&&document.querySelectorAll){const t=`.changed-${e}:not(.changed-total)`;return document.querySelectorAll(t).length}return 0}},La={state:{onThisPageSections:[],currentPageAnchor:null},resetPageSections(){this.state.onThisPageSections=[],this.state.currentPageAnchor=null},addOnThisPageSection(e,{i18n:t=!0}={}){this.state.onThisPageSections.push({...e,i18n:t})},setCurrentPageSection(e){const t=this.state.onThisPageSections.findIndex((({anchor:t})=>t===e));-1!==t&&(this.state.currentPageAnchor=e)}},Aa=n(5394);const{state:Oa,...Na}=Pa,{state:Ra,...Ba}=La;var Ea={state:{preferredLanguage:Aa.Z.preferredLanguage,contentWidth:0,...Oa,...Ra,references:{}},reset(){this.state.preferredLanguage=Aa.Z.preferredLanguage,this.state.references={},this.resetApiChanges()},setPreferredLanguage(e){this.state.preferredLanguage=e,Aa.Z.preferredLanguage=this.state.preferredLanguage},setContentWidth(e){this.state.contentWidth=e},setReferences(e){this.state.references=e},...Na,...Ba},Ma=n(8093),za=n(8571),Ka=n(1789),Za=n(5184);const ja="",qa=32,Fa="navigator-hide-button";function Ha(e){return e.split("").reduce(((e,t)=>(e<<5)-e+t.charCodeAt(0)|0),0)}function Va(e){const t={},n=e.length;for(let i=0;ie.parent===ja));const i=t[e];return i?(i.childUIDs||[]).map((e=>t[e])):[]}function Qa(e,t){const n=[],i=[e];let s=null;while(i.length){s=i.pop();const e=t[s];if(!e)return[];n.unshift(e),e.parent&&e.parent!==ja&&i.push(e.parent)}return n}function Ja(e,t,n){const i=t[e];return i?Ga(i.parent,t,n):[]}var Ya,Xa,er={name:"NavigatorDataProvider",props:{interfaceLanguage:{type:String,default:D.Z.swift.key.url},technologyUrl:{type:String,required:!0},apiChangesVersion:{type:String,default:""}},data(){return{isFetching:!1,errorFetching:!1,isFetchingAPIChanges:!1,navigationIndex:{[D.Z.swift.key.url]:[]},navigationReferences:{},diffs:null}},computed:{flatChildren:({technologyWithChildren:e={}})=>Wa(e.children||[],null,0,e.beta),technologyPath:({technologyUrl:e})=>{const t=/(\/documentation\/(?:[^/]+))\/?/.exec(e);return t?t[1]:""},technologyWithChildren({navigationIndex:e,interfaceLanguage:t,technologyPath:n}){let i=e[t]||[];return i.length||(i=e[D.Z.swift.key.url]||[]),i.find((e=>n.toLowerCase()===e.path.toLowerCase()))}},methods:{async fetchIndexData(){try{this.isFetching=!0;const{interfaceLanguages:e,references:t}=await(0,w.LR)({slug:this.$route.params.locale||""});this.navigationIndex=Object.freeze(e),this.navigationReferences=Object.freeze(t)}catch(e){this.errorFetching=!0}finally{this.isFetching=!1}}},watch:{"$route.params.locale":{handler:"fetchIndexData",immediate:!0}},render(){return this.$scopedSlots.default({technology:this.technologyWithChildren,isFetching:this.isFetching,errorFetching:this.errorFetching,isFetchingAPIChanges:this.isFetchingAPIChanges,apiChanges:this.diffs,flatChildren:this.flatChildren,references:this.navigationReferences})}},tr=er,nr=(0,Z.Z)(tr,Ya,Xa,!1,null,null,null),ir=nr.exports,sr=function(){var e=this,t=e._self._c;return t("button",{staticClass:"quick-navigation-open",attrs:{"aria-label":e.$t("quicknav.button.label"),title:e.$t("quicknav.button.title")}},[e._v(" / ")])},ar=[],rr={name:"QuickNavigationButton"},or=rr,lr=(0,Z.Z)(or,sr,ar,!1,null,"53faf852",null),cr=lr.exports,dr=function(){var e=this,t=e._self._c;return t("GenericModal",{attrs:{isFullscreen:"",showClose:!1,visible:e.isVisible,backdropBackgroundColorOverride:"rgba(0, 0, 0, 0.7)"},on:{"update:visible":function(t){e.isVisible=t}}},[t("div",{staticClass:"quick-navigation"},[t("div",{staticClass:"quick-navigation__container",class:{focus:e.focusedInput}},[t("FilterInput",{staticClass:"quick-navigation__filter",attrs:{placeholder:e.$t("filter.search-symbols",{technology:e.technology}),focusInputWhenCreated:"",focusInputWhenEmpty:"",preventBorderStyle:"",selectInputOnFocus:""},on:{focus:function(t){e.focusedInput=!0},blur:function(t){e.focusedInput=!1}},nativeOn:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.handleDownKeyInput.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.handleKeyEnter.apply(null,arguments)}]},scopedSlots:e._u([{key:"icon",fn:function(){return[t("div",{staticClass:"quick-navigation__magnifier-icon-container",class:{blue:e.userInput.length}},[t("MagnifierIcon")],1)]},proxy:!0}]),model:{value:e.userInput,callback:function(t){e.userInput=t},expression:"userInput"}}),t("div",{staticClass:"quick-navigation__match-list",class:{active:e.processedUserInput.length}},[e.noResultsWereFound?t("div",{staticClass:"no-results"},[t("p",[e._v(" "+e._s(e.$t("navigator.no-results"))+" ")])]):[t("div",e._b({staticClass:"quick-navigation__refs",on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusNext.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusPrev.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.handleKeyEnter.apply(null,arguments)}]}},"div",{[e.SCROLL_LOCK_DISABLE_ATTR]:!0},!1),e._l(e.filteredSymbols,(function(n,i){return t("Reference",{key:n.uid,ref:"match",refInFor:!0,staticClass:"quick-navigation__reference",attrs:{url:n.path,tabindex:e.focusedIndex===i?"0":"-1"},nativeOn:{click:function(t){return e.closeQuickNavigationModal.apply(null,arguments)}}},[t("div",{staticClass:"quick-navigation__symbol-match",attrs:{role:"list"}},[t("div",{staticClass:"symbol-info"},[t("div",{staticClass:"symbol-name"},[t("TopicTypeIcon",{staticClass:"navigator-icon",attrs:{type:n.type}}),t("div",{staticClass:"symbol-title"},[t("span",{domProps:{textContent:e._s(e.formatSymbolTitle(n.title,0,n.start))}}),t("QuickNavigationHighlighter",{attrs:{text:n.substring,matcherText:e.processedUserInput}}),t("span",{domProps:{textContent:e._s(e.formatSymbolTitle(n.title,n.start+n.matchLength))}})],1)],1),t("div",{staticClass:"symbol-path"},e._l(n.parents,(function(i,s){return t("div",{key:i.title},[t("span",{staticClass:"parent-path",domProps:{textContent:e._s(i.title)}}),s!==n.parents.length-1?t("span",{staticClass:"parent-path",domProps:{textContent:e._s("/")}}):e._e()])})),0)])])])})),1),e.previewState?t("Preview",e._b({staticClass:"quick-navigation__preview",attrs:{json:e.previewJSON,state:e.previewState}},"Preview",{[e.SCROLL_LOCK_DISABLE_ATTR]:!0},!1)):e._e()]],2)],1)])])},ur=[],hr=function(){var e=this,t=e._self._c;return t("div",{staticClass:"filter",class:{focus:e.showSuggestedTags&&!e.preventBorderStyle},attrs:{role:"search",tabindex:"0","aria-labelledby":e.searchAriaLabelledBy},on:{"!blur":function(t){return e.handleBlur.apply(null,arguments)},"!focus":function(t){return e.handleFocus.apply(null,arguments)}}},[t("div",{class:["filter__wrapper",{"filter__wrapper--reversed":e.positionReversed,"filter__wrapper--no-border-style":e.preventBorderStyle}]},[t("div",{staticClass:"filter__top-wrapper"},[t("button",{staticClass:"filter__filter-button",class:{blue:e.inputIsNotEmpty},attrs:{"aria-hidden":"true",tabindex:"-1"},on:{click:e.focusInput,mousedown:function(e){e.preventDefault()}}},[e._t("icon",(function(){return[t("FilterIcon")]}))],2),t("div",{class:["filter__input-box-wrapper",{scrolling:e.isScrolling}],on:{scroll:e.handleScroll}},[e.hasSelectedTags?t("TagList",e._g(e._b({ref:"selectedTags",staticClass:"filter__selected-tags",attrs:{id:e.SelectedTagsId,input:e.input,tags:e.selectedTags,ariaLabel:e.$tc("filter.selected-tags",e.suggestedTags.length),activeTags:e.activeTags,translatableTags:e.translatableTags,areTagsRemovable:""},on:{"focus-prev":e.handleFocusPrevOnSelectedTags,"focus-next":e.focusInputFromTags,"reset-filters":e.resetFilters,"prevent-blur":function(t){return e.$emit("update:preventedBlur",!0)}}},"TagList",e.virtualKeyboardBind,!1),e.selectedTagsMultipleSelectionListeners)):e._e(),t("label",{staticClass:"filter__input-label",attrs:{id:"filter-label",for:e.FilterInputId,"data-value":e.modelValue,"aria-label":e.placeholder}},[t("input",e._g(e._b({directives:[{name:"model",rawName:"v-model",value:e.modelValue,expression:"modelValue"}],ref:"input",staticClass:"filter__input",attrs:{id:e.FilterInputId,placeholder:e.hasSelectedTags?"":e.placeholder,"aria-expanded":e.displaySuggestedTags?"true":"false",disabled:e.disabled,type:"text"},domProps:{value:e.modelValue},on:{focus:function(t){e.selectInputOnFocus&&e.selectInputAndTags()},keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),e.downHandler.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),e.upHandler.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:e.leftKeyInputHandler.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])||"button"in t&&2!==t.button?null:e.rightKeyInputHandler.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:e.deleteHandler.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"a",void 0,t.key,void 0)?null:t.metaKey?(t.preventDefault(),t.stopPropagation(),e.selectInputAndTags.apply(null,arguments)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"a",void 0,t.key,void 0)?null:t.ctrlKey?(t.preventDefault(),e.selectInputAndTags.apply(null,arguments)):null},function(t){return t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.inputKeydownHandler.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.enterHandler.apply(null,arguments)},function(t){return t.shiftKey?t.ctrlKey||t.altKey||t.metaKey?null:e.inputKeydownHandler.apply(null,arguments):null},function(t){return t.shiftKey&&t.metaKey?t.ctrlKey||t.altKey?null:e.inputKeydownHandler.apply(null,arguments):null},function(t){return t.metaKey?t.ctrlKey||t.shiftKey||t.altKey?null:e.assignEventValues.apply(null,arguments):null},function(t){return t.ctrlKey?t.shiftKey||t.altKey||t.metaKey?null:e.assignEventValues.apply(null,arguments):null}],input:function(t){t.target.composing||(e.modelValue=t.target.value)}}},"input",e.AXinputProperties,!1),e.inputMultipleSelectionListeners))])],1),t("div",{staticClass:"filter__delete-button-wrapper"},[e.input.length||e.displaySuggestedTags||e.hasSelectedTags?t("button",{staticClass:"filter__delete-button",attrs:{"aria-label":e.$t("filter.reset-filter")},on:{click:function(t){return e.resetFilters(!0)},keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.stopPropagation(),e.resetFilters(!0))},mousedown:function(e){e.preventDefault()}}},[t("ClearRoundedIcon")],1):e._e()])]),e.displaySuggestedTags?t("TagList",e._b({ref:"suggestedTags",staticClass:"filter__suggested-tags",attrs:{id:e.SuggestedTagsId,ariaLabel:e.$tc("filter.suggested-tags",e.suggestedTags.length),input:e.input,tags:e.suggestedTags,translatableTags:e.translatableTags},on:{"click-tags":function(t){return e.selectTag(t.tagName)},"prevent-blur":function(t){return e.$emit("update:preventedBlur",!0)},"focus-next":function(t){e.positionReversed?e.focusInput():e.$emit("focus-next")},"focus-prev":function(t){e.positionReversed?e.$emit("focus-prev"):e.focusInput()}}},"TagList",e.virtualKeyboardBind,!1)):e._e()],1)])},pr=[],gr=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"clear-rounded-icon",attrs:{viewBox:"0 0 16 16",themeId:"clear-rounded"}},[t("title",[e._v(e._s(e.$t("icons.clear")))]),t("path",{attrs:{d:"M14.55,0l1.45,1.45-6.56,6.55,6.54,6.54-1.45,1.45-6.53-6.53L1.47,15.99,.01,14.53l6.52-6.53L0,1.47,1.45,.02l6.55,6.54L14.55,0Z","fill-rule":"evenodd"}})])},fr=[],mr=n(3453),yr={name:"ClearRoundedIcon",components:{SVGIcon:mr.Z}},vr=yr,br=(0,Z.Z)(vr,gr,fr,!1,null,null,null),Tr=br.exports;function Sr(){if(window.getSelection)try{const{activeElement:e}=document;return e&&e.value?e.value.substring(e.selectionStart,e.selectionEnd):window.getSelection().toString()}catch(e){return""}else if(document.selection&&"Control"!==document.selection.type)return document.selection.createRange().text;return""}function _r(e){if("number"===typeof e.selectionStart)e.selectionStart=e.selectionEnd=e.value.length;else if("undefined"!==typeof e.createTextRange){e.focus();const t=e.createTextRange();t.collapse(!1),t.select()}}function Cr(e){e.selectionStart=e.selectionEnd=0}function kr(e){return/^[\w\W\s]$/.test(e)}function wr(e){const t=e.match(/(.*)<\/data>/);try{return t?JSON.parse(t[1]):null}catch(n){return null}}function Ir(e){return"string"!==typeof e&&(e=JSON.stringify(e)),`${e}`}function xr(e,t,n,i){let s,a;return function(...r){function o(){clearTimeout(s),s=null}function l(){o(),e.apply(a,r)}if(a=this,!s||!n&&!i){if(!n)return o(),void(s=setTimeout(l,t));s=setTimeout(o,t),e.apply(a,r)}}}const $r=280,Dr=100;var Pr={data(){return{keyboardIsVirtual:!1,activeTags:[],initTagIndex:null,focusedTagIndex:null,metaKey:!1,shiftKey:!1,tabbing:!1,debouncedHandleDeleteTag:null}},constants:{DebounceDelay:$r,VirtualKeyboardThreshold:Dr},computed:{virtualKeyboardBind:({keyboardIsVirtual:e})=>({keyboardIsVirtual:e}),allSelectedTagsAreActive:({selectedTags:e,activeTags:t})=>e.every((e=>t.includes(e)))},methods:{selectRangeActiveTags(e=this.focusedTagIndex,t=this.selectedTags.length){this.activeTags=this.selectedTags.slice(e,t)},selectTag(e){this.updateSelectedTags([e]),this.clearFilterOnTagSelect&&this.setFilterInput("")},unselectActiveTags(){this.activeTags.length&&(this.deleteTags(this.activeTags),this.resetActiveTags())},async deleteHandler(e){this.activeTags.length>0&&this.setSelectedTags(this.selectedTags.filter((e=>!this.activeTags.includes(e)))),this.inputIsSelected()&&this.allSelectedTagsAreActive?(e.preventDefault(),await this.resetFilters()):0===this.$refs.input.selectionEnd&&this.hasSelectedTags&&(e.preventDefault(),this.keyboardIsVirtual?this.setSelectedTags(this.selectedTags.slice(0,-1)):this.$refs.selectedTags.focusLast()),this.unselectActiveTags()},leftKeyInputHandler(e){if(this.assignEventValues(e),this.hasSelectedTags){if(this.activeTags.length&&!this.shiftKey)return e.preventDefault(),void this.$refs.selectedTags.focusTag(this.activeTags[0]);if(this.shiftKey&&0===this.$refs.input.selectionStart&&"forward"!==this.$refs.input.selectionDirection)return null===this.focusedTagIndex&&(this.focusedTagIndex=this.selectedTags.length),this.focusedTagIndex>0&&(this.focusedTagIndex-=1),this.initTagIndex=this.selectedTags.length,void this.selectTagsPressingShift();(0===this.$refs.input.selectionEnd||this.inputIsSelected())&&this.$refs.selectedTags.focusLast()}},rightKeyInputHandler(e){if(this.assignEventValues(e),this.activeTags.length&&this.shiftKey&&this.focusedTagIndex=Dr&&(this.keyboardIsVirtual=!0)}),$r),setFilterInput(e){this.$emit("update:input",e)},setSelectedTags(e){this.$emit("update:selectedTags",e)},updateSelectedTags(e){this.setSelectedTags([...new Set([...this.selectedTags,...e])])},handleCopy(e){e.preventDefault();const t=[],n={tags:[],input:Sr()};if(this.activeTags.length){const e=this.activeTags;n.tags=e,t.push(e.join(" "))}return t.push(n.input),n.tags.length||n.input.length?(e.clipboardData.setData("text/html",Ir(n)),e.clipboardData.setData("text/plain",t.join(" ")),n):n},handleCut(e){e.preventDefault();const{input:t,tags:n}=this.handleCopy(e);if(!t&&!n.length)return;const i=this.selectedTags.filter((e=>!n.includes(e))),s=this.input.replace(t,"");this.setSelectedTags(i),this.setFilterInput(s)},handlePaste(e){e.preventDefault();const{types:t}=e.clipboardData;let n=[],i=e.clipboardData.getData("text/plain");if(t.includes("text/html")){const t=e.clipboardData.getData("text/html"),s=wr(t);s&&({tags:n=[],input:i=""}=s)}const s=Sr();i=s.length?this.input.replace(s,i):(0,nn.ZQ)(this.input,i,document.activeElement.selectionStart),this.setFilterInput(i.trim()),this.allSelectedTagsAreActive?this.setSelectedTags(n):this.updateSelectedTags(n),this.resetActiveTags()},async handleDeleteTag({tagName:e,event:t={}}){const{key:n}=t;this.activeTags.length||this.deleteTags([e]),this.unselectActiveTags(),await this.$nextTick(),_r(this.$refs.input),this.hasSelectedTags&&(await this.focusInput(),"Backspace"===n&&Cr(this.$refs.input))}},mounted(){window.visualViewport&&(window.visualViewport.addEventListener("resize",this.updateKeyboardType),this.$once("hook:beforeDestroy",(()=>{window.visualViewport.removeEventListener("resize",this.updateKeyboardType)})))}};const Lr=1e3;var Ar={constants:{ScrollingDebounceDelay:Lr},data(){return{isScrolling:!1,scrollRemovedAt:0}},created(){this.deleteScroll=xr(this.deleteScroll,Lr)},methods:{deleteScroll(){this.isScrolling=!1,this.scrollRemovedAt=Date.now()},handleScroll(e){const{target:t}=e;if(0!==t.scrollTop)return t.scrollTop=0,void e.preventDefault();const n=150,i=t.offsetWidth,s=i+n;if(t.scrollWidth0?this.focusIndex(this.focusedIndex-1):this.startingPointHook())},focusNext({metaKey:e,ctrlKey:t,shiftKey:n}){(e||t)&&n||(this.externalFocusChange=!1,this.focusedIndex0}},jr=function(){var e=this,t=e._self._c;return t("li",{staticClass:"tag",attrs:{role:"presentation"}},[t("button",{ref:"button",class:{focus:e.isActiveTag},attrs:{role:"option","aria-selected":e.ariaSelected,"aria-roledescription":"tag"},on:{focus:function(t){return e.$emit("focus",{event:t,tagName:e.name})},click:function(t){return t.preventDefault(),e.$emit("click",{event:t,tagName:e.name})},dblclick:function(t){t.preventDefault(),!e.keyboardIsVirtual&&e.deleteTag()},keydown:[function(t){return t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.$emit("keydown",{event:t,tagName:e.name})},function(t){return t.shiftKey?t.ctrlKey||t.altKey||t.metaKey?null:e.$emit("keydown",{event:t,tagName:e.name}):null},function(t){return t.shiftKey&&t.metaKey?t.ctrlKey||t.altKey?null:e.$emit("keydown",{event:t,tagName:e.name}):null},function(t){return t.metaKey?t.ctrlKey||t.shiftKey||t.altKey?null:e.$emit("keydown",{event:t,tagName:e.name}):null},function(t){return t.ctrlKey?t.shiftKey||t.altKey||t.metaKey?null:e.$emit("keydown",{event:t,tagName:e.name}):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:(t.preventDefault(),e.deleteTag.apply(null,arguments))}],mousedown:function(t){return t.preventDefault(),e.focusButton.apply(null,arguments)},copy:e.handleCopy}},[e.isRemovableTag?e._e():t("span",{staticClass:"visuallyhidden"},[e._v(" "+e._s(e.$t("filter.add-tag"))+" - ")]),e.isTranslatableTag?[e._v(" "+e._s(e.$t(e.name))+" ")]:[e._v(" "+e._s(e.name)+" ")],e.isRemovableTag?t("span",{staticClass:"visuallyhidden"},[e._v(" – "+e._s(e.$t("filter.tag-select-remove"))+" ")]):e._e()],2)])},qr=[],Fr={name:"Tag",props:{name:{type:String,required:!0},isFocused:{type:Boolean,default:()=>!1},isRemovableTag:{type:Boolean,default:!1},isTranslatableTag:{type:Boolean,default:!1},isActiveTag:{type:Boolean,default:!1},activeTags:{type:Array,required:!1},keyboardIsVirtual:{type:Boolean,default:!1}},watch:{isFocused(e){e&&this.focusButton()}},mounted(){document.addEventListener("copy",this.handleCopy),document.addEventListener("cut",this.handleCut),document.addEventListener("paste",this.handlePaste),this.$once("hook:beforeDestroy",(()=>{document.removeEventListener("copy",this.handleCopy),document.removeEventListener("cut",this.handleCut),document.removeEventListener("paste",this.handlePaste)}))},methods:{isCurrentlyActiveElement(){return document.activeElement===this.$refs.button},handleCopy(e){if(!this.isCurrentlyActiveElement())return;e.preventDefault();let t=[];t=this.activeTags.length>0?this.activeTags:[this.name],e.clipboardData.setData("text/html",Ir({tags:t})),e.clipboardData.setData("text/plain",t.join(" "))},handleCut(e){this.isCurrentlyActiveElement()&&this.isRemovableTag&&(this.handleCopy(e),this.deleteTag(e))},handlePaste(e){this.isCurrentlyActiveElement()&&this.isRemovableTag&&(e.preventDefault(),this.deleteTag(e),this.$emit("paste-content",e))},deleteTag(e){this.$emit("delete-tag",{tagName:this.name,event:e}),this.$emit("prevent-blur")},focusButton(e={}){this.keyboardIsVirtual||this.$refs.button.focus(),0===e.buttons&&this.isFocused&&this.deleteTag(e)}},computed:{ariaSelected:({isActiveTag:e,isRemovableTag:t})=>t?e?"true":"false":null}},Hr=Fr,Vr=(0,Z.Z)(Hr,jr,qr,!1,null,"7e76f326",null),Wr=Vr.exports,Ur={name:"Tags",mixins:[Ar,Zr],props:{tags:{type:Array,default:()=>[]},activeTags:{type:Array,default:()=>[]},translatableTags:{type:Array,default:()=>[]},ariaLabel:{type:String,required:!1},id:{type:String,required:!1},input:{type:String,default:null},areTagsRemovable:{type:Boolean,default:!1},keyboardIsVirtual:{type:Boolean,default:!1}},components:{Tag:Wr},methods:{focusTag(e){this.focusIndex(this.tags.indexOf(e))},startingPointHook(){this.$emit("focus-prev")},handleFocus(e,t){this.focusIndex(t),this.isScrolling=!1,this.$emit("focus",e)},endingPointHook(){this.$emit("focus-next")},resetScroll(){this.$refs["scroll-wrapper"].scrollLeft=0},handleKeydown(e){const{key:t}=e,n=this.tags[this.focusedIndex];kr(t)&&n&&this.$emit("delete-tag",{tagName:n.label||n,event:e})}},computed:{totalItemsToNavigate:({tags:e})=>e.length}},Gr=Ur,Qr=(0,Z.Z)(Gr,zr,Kr,!1,null,"1f2bd813",null),Jr=Qr.exports;const Yr=5,Xr="filter-input",eo="selected-tags",to="suggested-tags",no={autocorrect:"off",autocapitalize:"off",spellcheck:"false",role:"combobox","aria-haspopup":"true","aria-autocomplete":"none","aria-owns":"suggestedTags","aria-controls":"suggestedTags"};var io,so,ao={name:"FilterInput",mixins:[Ar,Pr],constants:{FilterInputId:Xr,SelectedTagsId:eo,SuggestedTagsId:to,AXinputProperties:no,TagLimit:Yr},components:{TagList:Jr,ClearRoundedIcon:Tr,FilterIcon:Mr},props:{positionReversed:{type:Boolean,default:()=>!1},tags:{type:Array,default:()=>[]},selectedTags:{type:Array,default:()=>[]},preventedBlur:{type:Boolean,default:()=>!1},placeholder:{type:String,default:()=>""},disabled:{type:Boolean,default:()=>!1},value:{type:String,default:()=>""},shouldTruncateTags:{type:Boolean,default:!1},focusInputWhenCreated:{type:Boolean,default:!1},focusInputWhenEmpty:{type:Boolean,default:!1},selectInputOnFocus:{type:Boolean,default:!1},clearFilterOnTagSelect:{type:Boolean,default:!0},preventBorderStyle:{type:Boolean,default:!1},translatableTags:{type:Array,default:()=>[]}},data(){return{resetedTagsViaDeleteButton:!1,FilterInputId:Xr,SelectedTagsId:eo,SuggestedTagsId:to,AXinputProperties:no,showSuggestedTags:!1}},computed:{hasSuggestedTags:({suggestedTags:e})=>e.length,hasSelectedTags:({selectedTags:e})=>e.length,inputIsNotEmpty:({input:e,hasSelectedTags:t})=>e.length||t,searchAriaLabelledBy:({hasSelectedTags:e})=>e?Xr.concat(" ",eo):Xr,modelValue:{get:({value:e})=>e,set(e){this.$emit("input",e)}},input:({value:e})=>e,suggestedTags:({tags:e,selectedTags:t,shouldTruncateTags:n})=>{const i=e.filter((e=>!t.includes(e)));return n?i.slice(0,Yr):i},displaySuggestedTags:({showSuggestedTags:e,suggestedTags:t})=>e&&t.length>0,inputMultipleSelectionListeners:({resetActiveTags:e,handleCopy:t,handleCut:n,handlePaste:i})=>({click:e,copy:t,cut:n,paste:i}),selectedTagsMultipleSelectionListeners:({handleSingleTagClick:e,selectInputAndTags:t,handleDeleteTag:n,selectedTagsKeydownHandler:i,focusTagHandler:s,handlePaste:a})=>({"click-tags":e,"select-all":t,"delete-tag":n,keydown:i,focus:s,"paste-tags":a})},watch:{async selectedTags(){this.resetedTagsViaDeleteButton?this.resetedTagsViaDeleteButton=!1:this.$el.contains(document.activeElement)&&await this.focusInput(),this.displaySuggestedTags&&this.hasSuggestedTags&&this.$refs.suggestedTags.resetScroll()},suggestedTags:{immediate:!0,handler(e){this.$emit("suggested-tags",e)}},showSuggestedTags(e){this.$emit("show-suggested-tags",e)}},methods:{async focusInput(){await this.$nextTick(),this.$refs.input.focus(),!this.input&&this.resetActiveTags&&this.resetActiveTags()},async resetFilters(e=!1){if(this.setFilterInput(""),this.setSelectedTags([]),!e)return this.$emit("update:preventedBlur",!0),this.resetActiveTags&&this.resetActiveTags(),void await this.focusInput();this.resetedTagsViaDeleteButton=!0,this.showSuggestedTags=!1,this.$refs.input.blur()},focusFirstTag(e=(()=>{})){this.showSuggestedTags||(this.showSuggestedTags=!0),this.hasSuggestedTags&&this.$refs.suggestedTags?this.$refs.suggestedTags.focusFirst():e()},setFilterInput(e){this.$emit("input",e)},setSelectedTags(e){this.$emit("update:selectedTags",e)},deleteTags(e){this.setSelectedTags(this.selectedTags.filter((t=>!e.includes(t))))},async handleBlur(e){const t=e.relatedTarget;t&&t.matches&&t.matches("button, input, ul")&&this.$el.contains(t)||(await this.$nextTick(),this.resetActiveTags(),this.preventedBlur?this.$emit("update:preventedBlur",!1):(this.showSuggestedTags=!1,this.$emit("blur")))},downHandler(e){const t=()=>this.$emit("focus-next",e);this.positionReversed?t():this.focusFirstTag(t)},upHandler(e){const t=()=>this.$emit("focus-prev",e);this.positionReversed?this.focusFirstTag(t):t()},handleFocusPrevOnSelectedTags(){this.positionReversed?this.focusFirstTag((()=>this.$emit("focus-prev"))):this.$emit("focus-prev")},handleFocus(){this.showSuggestedTags=!0,this.$emit("focus")}},created(){this.focusInputWhenCreated&&document.activeElement!==this.$refs.input&&(this.inputIsNotEmpty||this.focusInputWhenEmpty)&&this.focusInput()}},ro=ao,oo=(0,Z.Z)(ro,hr,pr,!1,null,"7a79f6ea",null),lo=oo.exports,co=n(5590),uo={name:"QuickNavigationHighlighter",props:{text:{type:String,required:!0},matcherText:{type:String,default:""}},render(e){const{matcherText:t,text:n}=this,i=[];let s=0;return t?([...t].forEach((t=>{const a=n.toLowerCase().indexOf(t.toLowerCase(),s);s&&i.push(e("span",n.slice(s,a)));const r=a+1;i.push(e("span",{class:"match"},n.slice(a,r))),s=r})),e("p",{class:"highlight"},i)):e("span",{class:"highlight"},n)}},ho=uo,po=(0,Z.Z)(ho,io,so,!1,null,"4a2ce75d",null),go=po.exports,fo=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"magnifier-icon",attrs:{viewBox:"0 0 14 14",themeId:"magnifier"}},[t("path",{attrs:{d:"M15.0013 14.0319L10.9437 9.97424C11.8165 8.88933 12.2925 7.53885 12.2929 6.14645C12.2929 2.75841 9.53449 0 6.14645 0C2.75841 0 0 2.75841 0 6.14645C0 9.53449 2.75841 12.2929 6.14645 12.2929C7.57562 12.2929 8.89486 11.7932 9.94425 10.9637L14.0019 15.0213L15.0013 14.0319ZM6.13645 11.0736C4.83315 11.071 3.58399 10.5521 2.66241 9.63048C1.74084 8.70891 1.22194 7.45974 1.2193 6.15644C1.2193 3.44801 3.41802 1.23928 6.13645 1.23928C8.85488 1.23928 11.0536 3.44801 11.0536 6.15644C11.0636 8.86488 8.85488 11.0736 6.13645 11.0736Z"}})])},mo=[],yo={name:"MagnifierIcon",components:{SVGIcon:mr.Z}},vo=yo,bo=(0,Z.Z)(vo,fo,mo,!1,null,null,null),To=bo.exports,So=function(){var e=this,t=e._self._c;return t("div",{staticClass:"preview"},[e.state===e.STATE.success?t("DocumentationTopic",e._b({attrs:{enableMinimized:""}},"DocumentationTopic",e.topicProps,!1)):e.state===e.STATE.loadingSlowly?t("div",{staticClass:"loading"},e._l(e.LOADER_ROW_STYLES,(function(e){return t("div",{key:e["--index"],staticClass:"loading-row",style:e})})),0):e.state===e.STATE.error?t("div",{staticClass:"unavailable"},[t("p",[e._v(e._s(e.$t("quicknav.preview-unavailable")))])]):e._e()],1)},_o=[];const{extractProps:Co}=xa.methods,ko="hero",wo={error:"error",loading:"loading",loadingSlowly:"loadingSlowly",success:"success"},Io={...Ea,state:(0,w.d9)(Ea.state)};var xo={name:"QuickNavigationPreview",components:{DocumentationTopic:xa},constants:{PreviewState:wo,PreviewStore:Io},data(){return{store:Io}},provide(){return{store:this.store}},props:{json:{type:Object,required:!1},state:{type:String,required:!0,validator:e=>Object.hasOwnProperty.call(wo,e)}},computed:{LOADER_ROW_STYLES:()=>[{"--index":0,width:"30%"},{"--index":1,width:"80%"},{"--index":2,width:"50%"}],STATE:()=>wo,topicProps:({json:e})=>{const t=Co(e),{sections:n=[]}=e;let{abstract:i}=t;const s=n.find((({kind:e})=>e===ko));return!i&&s&&(i=s.content),{...t,abstract:i}}}},$o=xo,Do=(0,Z.Z)($o,So,_o,!1,null,"779b8b01",null),Po=Do.exports;class Lo{constructor(e){this.map=new Map,this.maxSize=e}get size(){return this.map.size}get(e){if(!this.map.has(e))return;const t=this.map.get(e);return this.map.delete(e),this.map.set(e,t),t}has(e){return this.map.has(e)}set(e,t){if(this.map.has(e)&&this.map.delete(e),this.map.set(e,t),this.map.size>this.maxSize){const e=this.map.keys().next().value;this.map.delete(e)}}*[Symbol.iterator](){yield*this.map}}var Ao=n(9652);const{PreviewState:Oo}=Po.constants,No="AbortError",Ro=20,Bo=1e3;var Eo={name:"QuickNavigationModal",components:{FilterInput:lo,GenericModal:co.Z,MagnifierIcon:To,TopicTypeIcon:_e.Z,QuickNavigationHighlighter:go,Reference:$s.Z,Preview:Po},mixins:[Zr],created(){this.abortController=null,this.$cachedSymbolResults=new Lo(Ro),this.loadingTimeout=null},data(){return{debouncedInput:"",userInput:"",focusedInput:!1,cachedSymbolResults:{},previewIsLoadingSlowly:!1,SCROLL_LOCK_DISABLE_ATTR:Ao.n}},props:{children:{type:Array,required:!0},showQuickNavigationModal:{type:Boolean,required:!0},technology:{type:String,required:!0}},computed:{childrenMap({children:e}){return Va(e)},filteredSymbols:({constructFuzzyRegex:e,children:t,fuzzyMatch:n,processedUserInput:i,childrenMap:s,orderSymbolsByPriority:a})=>{const r=t.filter((e=>"groupMarker"!==e.type&&null!=e.title));if(!i)return[];const o=n({inputLength:i.length,symbols:r,processedInputRegex:new RegExp(e(i),"i"),childrenMap:s}),l=[...new Map(o.map((e=>[e.path,e]))).values()];return a(l).slice(0,Ro)},isVisible:{get:({showQuickNavigationModal:e})=>e,set(e){this.$emit("update:showQuickNavigationModal",e)}},noResultsWereFound:({processedUserInput:e,totalItemsToNavigate:t})=>e.length&&!t,processedUserInput:({debouncedInput:e})=>e.replace(/\s/g,""),totalItemsToNavigate:({filteredSymbols:e})=>e.length,selectedSymbol:({filteredSymbols:e,focusedIndex:t})=>null!==t?e[t]:null,nextSymbol:({filteredSymbols:e,focusedIndex:t})=>{if(null===t)return null;let n=t+1;return n>=e.length&&(n=0),e[n]},focusedMatchElement:({$refs:e,focusedIndex:t})=>e.match[t].$el,previewJSON:({cachedSymbolResults:e,selectedSymbol:t})=>t?(e[t.uid]||{}).json:null,previewState:({cachedSymbolResults:e,previewIsLoadingSlowly:t,selectedSymbol:n})=>n&&Object.hasOwnProperty.call(e,n.uid)?e[n.uid].success?Oo.success:Oo.error:t?Oo.loadingSlowly:Oo.loading},watch:{userInput:"debounceInput",focusedIndex(){this.focusedInput||(this.scrollIntoView(),this.focusReference())},selectedSymbol:"fetchSelectedSymbolData",$route:"closeQuickNavigationModal"},methods:{closeQuickNavigationModal(){this.$emit("update:showQuickNavigationModal",!1)},constructFuzzyRegex(e){return[...e].reduce(((t,n,i)=>t.concat(`[${n}]`).concat(i{const s=n.exec(t.title);if(!s)return!1;const a=s[0].length;return!(a>3*e)&&{uid:t.uid,title:t.title,path:t.path,parents:Qa(t.parent,i),type:t.type,inputLengthDifference:t.title.length-e,matchLength:a,matchLengthDifference:a-e,start:s.index,substring:s[0]}})).filter(Boolean)},handleKeyEnter(){!this.noResultsWereFound&&this.userInput.length&&(this.$router.push(this.filteredSymbols[this.focusedIndex].path),this.closeQuickNavigationModal())},orderSymbolsByPriority(e){return e.sort(((e,t)=>e.matchLengthDifference>t.matchLengthDifference?1:e.matchLengthDifferencet.start?1:e.startt.inputLengthDifference?1:e.inputLengthDifference{this.previewState===Oo.loading&&(this.previewIsLoadingSlowly=!0)}),Bo),!this.selectedSymbol||this.$cachedSymbolResults.has(this.selectedSymbol.uid))return clearTimeout(this.loadingTimeout),void(this.previewIsLoadingSlowly=!1);const e=async e=>{if(e&&!this.$cachedSymbolResults.has(e.uid))try{const t=await(0,w.k_)(e.path,{signal:this.abortController.signal});this.$cachedSymbolResults.set(e.uid,{success:!0,json:t})}catch(t){t.name!==No&&this.$cachedSymbolResults.set(e.uid,{success:!1})}finally{this.cachedSymbolResults=Object.freeze(Object.fromEntries(this.$cachedSymbolResults))}};this.abortController&&this.abortController.abort(),this.abortController=new AbortController,await Promise.all([e(this.selectedSymbol).finally((()=>{clearTimeout(this.loadingTimeout),this.previewIsLoadingSlowly=!1})),e(this.nextSymbol)])}}},Mo=Eo,zo=(0,Z.Z)(Mo,dr,ur,!1,null,"479a2da8",null),Ko=zo.exports,Zo=function(){var e=this,t=e._self._c;return t("div",{staticClass:"adjustable-sidebar-width",class:{dragging:e.isDragging,"sidebar-hidden":e.hiddenOnLarge}},[t("div",{ref:"sidebar",staticClass:"sidebar"},[t("div",{ref:"aside",staticClass:"aside",class:e.asideClasses,style:e.asideStyles,attrs:{"aria-hidden":e.hiddenOnLarge?"true":null},on:{transitionstart:function(t){return t.target!==t.currentTarget?null:e.trackTransitionStart.apply(null,arguments)},transitionend:function(t){return t.target!==t.currentTarget?null:e.trackTransitionEnd.apply(null,arguments)}}},[e._t("aside",null,{animationClass:"aside-animated-child",scrollLockID:e.scrollLockID,breakpoint:e.breakpoint})],2),e.fixedWidth?e._e():t("div",{staticClass:"resize-handle",on:{mousedown:function(t){return t.preventDefault(),e.startDrag.apply(null,arguments)},touchstart:function(t){return t.preventDefault(),e.startDrag.apply(null,arguments)}}})]),t("div",{ref:"content",staticClass:"content"},[e._t("default")],2),t("BreakpointEmitter",{attrs:{scope:e.BreakpointScopes.nav},on:{change:function(t){e.breakpoint=t}}})],1)},jo=[],qo=n(7247),Fo=n(7188),Ho=n(5381),Vo=n(114),Wo=n(1147),Uo=n(1716);const Go="sidebar",Qo=1921,Jo=543,Yo=400,Xo={touch:{move:"touchmove",end:"touchend"},mouse:{move:"mousemove",end:"mouseup"}},el=(e,t=window.innerWidth)=>{const n=Math.min(t,Qo);return Math.floor(Math.min(n*(e/100),n))},tl={medium:30,large:20},nl={medium:50,large:50},il="sidebar-scroll-lock";var sl={name:"AdjustableSidebarWidth",constants:{SCROLL_LOCK_ID:il},components:{BreakpointEmitter:Fo["default"]},inject:["store"],props:{shownOnMobile:{type:Boolean,default:!1},hiddenOnLarge:{type:Boolean,default:!1},fixedWidth:{type:Number,default:null}},data(){const e=window.innerWidth,t=window.innerHeight,n=Ho.L3.large,i=el(tl[n]),s=el(nl[n]),a=e>=Qo?Jo:Yo,r=qo.tO.get(Go,a);return{isDragging:!1,width:this.fixedWidth||Math.min(Math.max(r,i),s),isTouch:!1,windowWidth:e,windowHeight:t,breakpoint:n,noTransition:!1,isTransitioning:!1,isOpeningOnLarge:!1,focusTrapInstance:null,mobileTopOffset:0,topOffset:0}},computed:{minWidthPercent:({breakpoint:e})=>tl[e]||0,maxWidthPercent:({breakpoint:e})=>nl[e]||100,maxWidth:({maxWidthPercent:e,windowWidth:t,fixedWidth:n})=>Math.max(n,el(e,t)),minWidth:({minWidthPercent:e,windowWidth:t,fixedWidth:n})=>Math.min(n||t,el(e,t)),widthInPx:({width:e})=>`${e}px`,hiddenOnLargeThreshold:({minWidth:e})=>e/2,events:({isTouch:e})=>e?Xo.touch:Xo.mouse,asideStyles:({widthInPx:e,mobileTopOffset:t,topOffset:n,windowHeight:i})=>({width:e,"--top-offset":n?`${n}px`:null,"--top-offset-mobile":`${t}px`,"--app-height":`${i}px`}),asideClasses:({isDragging:e,shownOnMobile:t,noTransition:n,isTransitioning:i,hiddenOnLarge:s,mobileTopOffset:a,isOpeningOnLarge:r})=>({dragging:e,"show-on-mobile":t,"hide-on-large":s,"is-opening-on-large":r,"no-transition":n,"sidebar-transitioning":i,"has-mobile-top-offset":a}),scrollLockID:()=>il,BreakpointScopes:()=>Ho.lU},async mounted(){window.addEventListener("keydown",this.onEscapeKeydown),window.addEventListener("resize",this.storeWindowSize,{passive:!0}),window.addEventListener("orientationchange",this.storeWindowSize,{passive:!0}),this.storeTopOffset(),0===this.topOffset&&0===window.scrollY||window.addEventListener("scroll",this.storeTopOffset,{passive:!0}),this.$once("hook:beforeDestroy",(()=>{window.removeEventListener("keydown",this.onEscapeKeydown),window.removeEventListener("resize",this.storeWindowSize),window.removeEventListener("orientationchange",this.storeWindowSize),window.removeEventListener("scroll",this.storeTopOffset),this.shownOnMobile&&this.toggleScrollLock(!1),this.focusTrapInstance&&this.focusTrapInstance.destroy()})),await this.$nextTick(),this.focusTrapInstance=new Vo.Z(this.$refs.aside)},watch:{$route:"closeMobileSidebar",width:{immediate:!0,handler:Ne((function(e){this.emitEventChange(e)}),150)},windowWidth:"getWidthInCheck",async breakpoint(e){this.getWidthInCheck(),e===Ho.L3.large&&this.closeMobileSidebar(),this.noTransition=!0,await(0,Re.J)(5),this.noTransition=!1},shownOnMobile:"handleExternalOpen",async isTransitioning(e){e?(await(0,Re.X)(1e3),this.isTransitioning=!1):this.updateContentWidthInStore()},hiddenOnLarge(){this.isTransitioning=!0}},methods:{getWidthInCheck:xr((function(){this.width>this.maxWidth?this.width=this.maxWidth:this.widththis.maxWidth&&(i=this.maxWidth),this.hiddenOnLarge&&i>=this.hiddenOnLargeThreshold&&(this.$emit("update:hiddenOnLarge",!1),this.isOpeningOnLarge=!0),this.width=Math.max(i,this.minWidth),i<=this.hiddenOnLargeThreshold&&this.$emit("update:hiddenOnLarge",!0)},stopDrag(e){e.preventDefault(),this.isDragging&&(this.isDragging=!1,qo.tO.set(Go,this.width),document.removeEventListener(this.events.move,this.handleDrag),document.removeEventListener(this.events.end,this.stopDrag),this.emitEventChange(this.width))},emitEventChange(e){this.$emit("width-change",e),this.updateContentWidthInStore()},getTopOffset(){const e=document.getElementById(Uo.EA);if(!e)return 0;const{y:t}=e.getBoundingClientRect();return Math.max(t,0)},handleExternalOpen(e){e&&(this.mobileTopOffset=this.getTopOffset()),this.toggleScrollLock(e)},async updateContentWidthInStore(){await this.$nextTick(),this.store.setContentWidth(this.$refs.content.offsetWidth)},async toggleScrollLock(e){const t=document.getElementById(this.scrollLockID);e?(await this.$nextTick(),Ao.Z.lockScroll(t),this.focusTrapInstance.start(),Wo.Z.hide(this.$refs.aside)):(Ao.Z.unlockScroll(t),this.focusTrapInstance.stop(),Wo.Z.show(this.$refs.aside))},storeTopOffset:Ne((function(){this.topOffset=this.getTopOffset()}),60),async trackTransitionStart({propertyName:e}){"width"!==e&&"transform"!==e||(this.isTransitioning=!0)},trackTransitionEnd({propertyName:e}){"width"!==e&&"transform"!==e||(this.isTransitioning=!1,this.isOpeningOnLarge=!1)}}},al=sl,rl=(0,Z.Z)(al,Zo,jo,!1,null,"5cd50784",null),ol=rl.exports,ll=function(){var e=this,t=e._self._c;return t("nav",{staticClass:"navigator",attrs:{"aria-labelledby":e.INDEX_ROOT_KEY}},[e.isFetching?t("LoadingNavigatorCard",e._b({on:{close:function(t){return e.$emit("close")}}},"LoadingNavigatorCard",e.technologyProps,!1)):t("NavigatorCard",e._b({attrs:{type:e.type,children:e.flatChildren,"active-path":e.activePath,scrollLockID:e.scrollLockID,"error-fetching":e.errorFetching,"render-filter-on-top":e.renderFilterOnTop,"api-changes":e.apiChanges,"allow-hiding":e.allowHiding,"navigator-references":e.navigatorReferences},on:{close:function(t){return e.$emit("close")}},scopedSlots:e._u([{key:"filter",fn:function(){return[e._t("filter")]},proxy:!0}],null,!0)},"NavigatorCard",e.technologyProps,!1)),t("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"polite"}},[e._v(" "+e._s(e.$t("navigator.navigator-is",{state:e.isFetching?e.$t("navigator.state.loading"):e.$t("navigator.state.ready")}))+" ")])],1)},cl=[],dl=function(){var e=this,t=e._self._c;return t("BaseNavigatorCard",e._b({class:{"filter-on-top":e.renderFilterOnTop},on:{close:function(t){return e.$emit("close")},"head-click-alt":e.toggleAllNodes},scopedSlots:e._u([{key:"body",fn:function({className:n}){return[e._t("post-head"),t("div",{class:n,on:{"!keydown":[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:t.altKey?(t.preventDefault(),e.focusFirst.apply(null,arguments)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:t.altKey?(t.preventDefault(),e.focusLast.apply(null,arguments)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusPrev.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusNext.apply(null,arguments))}]}},[t("DynamicScroller",{directives:[{name:"show",rawName:"v-show",value:e.hasNodes,expression:"hasNodes"}],ref:"scroller",staticClass:"scroller",attrs:{id:e.scrollLockID,"aria-label":e.$t("navigator.title"),items:e.nodesToRender,"min-item-size":e.itemSize,"emit-update":"","key-field":"uid"},on:{update:e.handleScrollerUpdate,"!keydown":[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:t.altKey?(t.preventDefault(),e.focusFirst.apply(null,arguments)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:t.altKey?(t.preventDefault(),e.focusLast.apply(null,arguments)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusPrev.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusNext.apply(null,arguments))}]},nativeOn:{focusin:function(t){return e.handleFocusIn.apply(null,arguments)},focusout:function(t){return e.handleFocusOut.apply(null,arguments)}},scopedSlots:e._u([{key:"default",fn:function({item:n,active:i,index:s}){return[t("DynamicScrollerItem",e._b({ref:`dynamicScroller_${n.uid}`},"DynamicScrollerItem",{active:i,item:n,dataIndex:s},!1),[t("NavigatorCardItem",{attrs:{item:n,isRendered:i,"filter-pattern":e.filterPattern,"is-active":n.uid===e.activeUID,"is-bold":e.activePathMap[n.uid],expanded:e.openNodes[n.uid],"api-change":e.apiChangesObject[n.path],isFocused:e.focusedIndex===s,enableFocus:!e.externalFocusChange,"navigator-references":e.navigatorReferences},on:{toggle:e.toggle,"toggle-full":e.toggleFullTree,"toggle-siblings":e.toggleSiblings,navigate:e.handleNavigationChange,"focus-parent":e.focusNodeParent}})],1)]}}],null,!0)}),t("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"polite"}},[e._v(" "+e._s(e.politeAriaLive)+" ")]),t("div",{staticClass:"no-items-wrapper",attrs:{"aria-live":"assertive"}},[t("p",{staticClass:"no-items"},[e._v(" "+e._s(e.$t(e.assertiveAriaLive))+" ")])])],1),e.errorFetching?e._e():t("div",{staticClass:"filter-wrapper"},[t("div",{staticClass:"navigator-filter"},[t("div",{staticClass:"input-wrapper"},[t("FilterInput",{staticClass:"filter-component",attrs:{tags:e.availableTags,translatableTags:e.translatableTags,"selected-tags":e.selectedTagsModelValue,placeholder:e.$t("filter.title"),"should-keep-open-on-blur":!1,"position-reversed":!e.renderFilterOnTop,"clear-filter-on-tag-select":!1},on:{"update:selectedTags":function(t){e.selectedTagsModelValue=t},"update:selected-tags":function(t){e.selectedTagsModelValue=t},clear:e.clearFilters},model:{value:e.filter,callback:function(t){e.filter=t},expression:"filter"}})],1),e._t("filter")],2)])]}}],null,!0)},"BaseNavigatorCard",{technology:e.technology,isTechnologyBeta:e.isTechnologyBeta,technologyPath:e.technologyPath},!1))},ul=[];function hl(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var n=e.indexOf("Trident/");if(n>0){var i=e.indexOf("rv:");return parseInt(e.substring(i+3,e.indexOf(".",i)),10)}var s=e.indexOf("Edge/");return s>0?parseInt(e.substring(s+5,e.indexOf(".",s)),10):-1}var pl=void 0;function gl(){gl.init||(gl.init=!0,pl=-1!==hl())}var fl={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"resize-observer",attrs:{tabindex:"-1"}})},staticRenderFns:[],_scopeId:"data-v-b329ee4c",name:"resize-observer",methods:{compareAndNotify:function(){this._w===this.$el.offsetWidth&&this._h===this.$el.offsetHeight||(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.$emit("notify"))},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!pl&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),delete this._resizeObject.onload)}},mounted:function(){var e=this;gl(),this.$nextTick((function(){e._w=e.$el.offsetWidth,e._h=e.$el.offsetHeight}));var t=document.createElement("object");this._resizeObject=t,t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex",-1),t.onload=this.addResizeHandlers,t.type="text/html",pl&&this.$el.appendChild(t),t.data="about:blank",pl||this.$el.appendChild(t)},beforeDestroy:function(){this.removeResizeHandlers()}};function ml(e){e.component("resize-observer",fl),e.component("ResizeObserver",fl)}var yl={version:"0.4.5",install:ml},vl=null;"undefined"!==typeof window?vl=window.Vue:"undefined"!==typeof n.g&&(vl=n.g.Vue),vl&&vl.use(yl);function bl(e){return bl="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},bl(e)}function Tl(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Sl(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{},r=function(r){for(var o=arguments.length,l=new Array(o>1?o-1:0),c=1;c1){var i=e.find((function(e){return e.isIntersecting}));i&&(t=i)}if(n.callback){var s=t.isIntersecting&&t.intersectionRatio>=n.threshold;if(s===n.oldResult)return;n.oldResult=s,n.callback(s,t)}}),this.options.intersection),t.context.$nextTick((function(){n.observer&&n.observer.observe(n.el)}))}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&this.options.intersection.threshold||0}}]),e}();function Ll(e,t,n){var i=t.value;if(i)if("undefined"===typeof IntersectionObserver)console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var s=new Pl(e,i,n);e._vue_visibilityState=s}}function Al(e,t,n){var i=t.value,s=t.oldValue;if(!Dl(i,s)){var a=e._vue_visibilityState;i?a?a.createObserver(i,n):Ll(e,{value:i},n):Ol(e)}}function Ol(e){var t=e._vue_visibilityState;t&&(t.destroyObserver(),delete e._vue_visibilityState)}var Nl={bind:Ll,update:Al,unbind:Ol};function Rl(e){e.directive("observe-visibility",Nl)}var Bl={version:"0.4.6",install:Rl},El=null;"undefined"!==typeof window?El=window.Vue:"undefined"!==typeof n.g&&(El=n.g.Vue),El&&El.use(Bl);var Ml=n(7274),zl=n.n(Ml),Kl={itemsLimit:1e3};const Zl={items:{type:Array,required:!0},keyField:{type:String,default:"id"},direction:{type:String,default:"vertical",validator:e=>["vertical","horizontal"].includes(e)},listTag:{type:String,default:"div"},itemTag:{type:String,default:"div"}};function jl(){return this.items.length&&"object"!==typeof this.items[0]}let ql=!1;if("undefined"!==typeof window){ql=!1;try{var Fl=Object.defineProperty({},"passive",{get(){ql=!0}});window.addEventListener("test",null,Fl)}catch(Mu){}}let Hl=0;var Vl={name:"RecycleScroller",components:{ResizeObserver:fl},directives:{ObserveVisibility:Nl},props:{...Zl,itemSize:{type:Number,default:null},gridItems:{type:Number,default:void 0},itemSecondarySize:{type:Number,default:void 0},minItemSize:{type:[Number,String],default:null},sizeField:{type:String,default:"size"},typeField:{type:String,default:"type"},buffer:{type:Number,default:200},pageMode:{type:Boolean,default:!1},prerender:{type:Number,default:0},emitUpdate:{type:Boolean,default:!1},skipHover:{type:Boolean,default:!1},listTag:{type:String,default:"div"},itemTag:{type:String,default:"div"},listClass:{type:[String,Object,Array],default:""},itemClass:{type:[String,Object,Array],default:""}},data(){return{pool:[],totalSize:0,ready:!1,hoverKey:null}},computed:{sizes(){if(null===this.itemSize){const e={"-1":{accumulator:0}},t=this.items,n=this.sizeField,i=this.minItemSize;let s,a=1e4,r=0;for(let o=0,l=t.length;o{this.$_prerender=!1,this.updateVisibleItems(!0),this.ready=!0}))},activated(){const e=this.$_lastUpdateScrollPosition;"number"===typeof e&&this.$nextTick((()=>{this.scrollToPosition(e)}))},beforeDestroy(){this.removeListeners()},methods:{addView(e,t,n,i,s){const a={item:n,position:0},r={id:Hl++,index:t,used:!0,key:i,type:s};return Object.defineProperty(a,"nr",{configurable:!1,value:r}),e.push(a),a},unuseView(e,t=!1){const n=this.$_unusedViews,i=e.nr.type;let s=n.get(i);s||(s=[],n.set(i,s)),s.push(e),t||(e.nr.used=!1,e.position=-9999,this.$_views.delete(e.nr.key))},handleResize(){this.$emit("resize"),this.ready&&this.updateVisibleItems(!1)},handleScroll(e){this.$_scrollDirty||(this.$_scrollDirty=!0,requestAnimationFrame((()=>{this.$_scrollDirty=!1;const{continuous:e}=this.updateVisibleItems(!1,!0);e||(clearTimeout(this.$_refreshTimout),this.$_refreshTimout=setTimeout(this.handleScroll,100))})))},handleVisibilityChange(e,t){this.ready&&(e||0!==t.boundingClientRect.width||0!==t.boundingClientRect.height?(this.$emit("visible"),requestAnimationFrame((()=>{this.updateVisibleItems(!1)}))):this.$emit("hidden"))},updateVisibleItems(e,t=!1){const n=this.itemSize,i=this.gridItems||1,s=this.itemSecondarySize||n,a=this.$_computedMinItemSize,r=this.typeField,o=this.simpleArray?null:this.keyField,l=this.items,c=l.length,d=this.sizes,u=this.$_views,h=this.$_unusedViews,p=this.pool;let g,f,m,y,v,b;if(c)if(this.$_prerender)g=y=0,f=v=Math.min(this.prerender,l.length),m=null;else{const e=this.getScroll();if(t){let t=e.start-this.$_lastUpdateScrollPosition;if(t<0&&(t=-t),null===n&&te.start&&(s=a),a=~~((i+s)/2)}while(a!==n);for(a<0&&(a=0),g=a,m=d[c-1].accumulator,f=a;fc&&(f=c)),y=g;yc&&(f=c),y<0&&(y=0),v>c&&(v=c),m=Math.ceil(c/i)*n}}else g=f=y=v=m=0;f-g>Kl.itemsLimit&&this.itemsLimitError(),this.totalSize=m;const T=g<=this.$_endIndex&&f>=this.$_startIndex;if(this.$_continuous!==T){if(T){u.clear(),h.clear();for(let e=0,t=p.length;e=f)&&this.unuseView(b));const S=T?null:new Map;let _,C,k,w;for(let I=g;I=k.length)&&(b=this.addView(p,I,_,e,C),this.unuseView(b,!0),k=h.get(C)),b=k[w],b.item=_,b.nr.used=!0,b.nr.index=I,b.nr.key=e,b.nr.type=C,S.set(C,w+1),w++),u.set(e,b)),null===n?(b.position=d[I-1].accumulator,b.offset=0):(b.position=Math.floor(I/i)*n,b.offset=I%i*s)):b&&this.unuseView(b)}return this.$_startIndex=g,this.$_endIndex=f,this.emitUpdate&&this.$emit("update",g,f,y,v),clearTimeout(this.$_sortTimer),this.$_sortTimer=setTimeout(this.sortViews,300),{continuous:T}},getListenerTarget(){let e=zl()(this.$el);return!window.document||e!==window.document.documentElement&&e!==window.document.body||(e=window),e},getScroll(){const{$el:e,direction:t}=this,n="vertical"===t;let i;if(this.pageMode){const t=e.getBoundingClientRect(),s=n?t.height:t.width;let a=-(n?t.top:t.left),r=n?window.innerHeight:window.innerWidth;a<0&&(r+=a,a=0),a+r>s&&(r=s-a),i={start:a,end:a+r}}else i=n?{start:e.scrollTop,end:e.scrollTop+e.clientHeight}:{start:e.scrollLeft,end:e.scrollLeft+e.clientWidth};return i},applyPageMode(){this.pageMode?this.addListeners():this.removeListeners()},addListeners(){this.listenerTarget=this.getListenerTarget(),this.listenerTarget.addEventListener("scroll",this.handleScroll,!!ql&&{passive:!0}),this.listenerTarget.addEventListener("resize",this.handleResize)},removeListeners(){this.listenerTarget&&(this.listenerTarget.removeEventListener("scroll",this.handleScroll),this.listenerTarget.removeEventListener("resize",this.handleResize),this.listenerTarget=null)},scrollToItem(e){let t;t=null===this.itemSize?e>0?this.sizes[e-1].accumulator:0:Math.floor(e/this.gridItems)*this.itemSize,this.scrollToPosition(t)},scrollToPosition(e){const t="vertical"===this.direction?{scroll:"scrollTop",start:"top"}:{scroll:"scrollLeft",start:"left"};let n,i,s;if(this.pageMode){const a=zl()(this.$el),r="HTML"===a.tagName?0:a[t.scroll],o=a.getBoundingClientRect(),l=this.$el.getBoundingClientRect(),c=l[t.start]-o[t.start];n=a,i=t.scroll,s=e+r+c}else n=this.$el,i=t.scroll,s=e;n[i]=s},itemsLimitError(){throw setTimeout((()=>{console.log("It seems the scroller element isn't scrolling, so it tries to render all the items at once.","Scroller:",this.$el),console.log("Make sure the scroller has a fixed height (or width) and 'overflow-y' (or 'overflow-x') set to 'auto' so it can scroll correctly and only render the items visible in the scroll viewport.")})),new Error("Rendered items limit reached")},sortViews(){this.pool.sort(((e,t)=>e.nr.index-t.nr.index))}}};function Wl(e,t,n,i,s,a,r,o,l,c){"boolean"!==typeof r&&(l=o,o=r,r=!1);const d="function"===typeof n?n.options:n;let u;if(e&&e.render&&(d.render=e.render,d.staticRenderFns=e.staticRenderFns,d._compiled=!0,s&&(d.functional=!0)),i&&(d._scopeId=i),a?(u=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,l(e)),e&&e._registeredComponents&&e._registeredComponents.add(a)},d._ssrRegister=u):t&&(u=r?function(e){t.call(this,c(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,o(e))}),u)if(d.functional){const e=d.render;d.render=function(t,n){return u.call(n),e(t,n)}}else{const e=d.beforeCreate;d.beforeCreate=e?[].concat(e,u):[u]}return n}const Ul=Vl;var Gl=function(){var e,t,n=this,i=n.$createElement,s=n._self._c||i;return s("div",{directives:[{name:"observe-visibility",rawName:"v-observe-visibility",value:n.handleVisibilityChange,expression:"handleVisibilityChange"}],staticClass:"vue-recycle-scroller",class:(e={ready:n.ready,"page-mode":n.pageMode},e["direction-"+n.direction]=!0,e),on:{"&scroll":function(e){return n.handleScroll.apply(null,arguments)}}},[n.$slots.before?s("div",{ref:"before",staticClass:"vue-recycle-scroller__slot"},[n._t("before")],2):n._e(),n._v(" "),s(n.listTag,{ref:"wrapper",tag:"component",staticClass:"vue-recycle-scroller__item-wrapper",class:n.listClass,style:(t={},t["vertical"===n.direction?"minHeight":"minWidth"]=n.totalSize+"px",t)},[n._l(n.pool,(function(e){return s(n.itemTag,n._g({key:e.nr.id,tag:"component",staticClass:"vue-recycle-scroller__item-view",class:[n.itemClass,{hover:!n.skipHover&&n.hoverKey===e.nr.key}],style:n.ready?{transform:"translate"+("vertical"===n.direction?"Y":"X")+"("+e.position+"px) translate"+("vertical"===n.direction?"X":"Y")+"("+e.offset+"px)",width:n.gridItems?("vertical"===n.direction&&n.itemSecondarySize||n.itemSize)+"px":void 0,height:n.gridItems?("horizontal"===n.direction&&n.itemSecondarySize||n.itemSize)+"px":void 0}:null},n.skipHover?{}:{mouseenter:function(){n.hoverKey=e.nr.key},mouseleave:function(){n.hoverKey=null}}),[n._t("default",null,{item:e.item,index:e.nr.index,active:e.nr.used})],2)})),n._v(" "),n._t("empty")],2),n._v(" "),n.$slots.after?s("div",{ref:"after",staticClass:"vue-recycle-scroller__slot"},[n._t("after")],2):n._e(),n._v(" "),s("ResizeObserver",{on:{notify:n.handleResize}})],1)},Ql=[];Gl._withStripped=!0;const Jl=void 0,Yl=void 0,Xl=void 0,ec=!1,tc=Wl({render:Gl,staticRenderFns:Ql},Jl,Ul,Yl,ec,Xl,!1,void 0,void 0,void 0);var nc={name:"DynamicScroller",components:{RecycleScroller:tc},provide(){return"undefined"!==typeof ResizeObserver&&(this.$_resizeObserver=new ResizeObserver((e=>{requestAnimationFrame((()=>{if(Array.isArray(e))for(const t of e)if(t.target){const e=new CustomEvent("resize",{detail:{contentRect:t.contentRect}});t.target.dispatchEvent(e)}}))}))),{vscrollData:this.vscrollData,vscrollParent:this,vscrollResizeObserver:this.$_resizeObserver}},inheritAttrs:!1,props:{...Zl,minItemSize:{type:[Number,String],required:!0}},data(){return{vscrollData:{active:!0,sizes:{},validSizes:{},keyField:this.keyField,simpleArray:!1}}},computed:{simpleArray:jl,itemsWithSize(){const e=[],{items:t,keyField:n,simpleArray:i}=this,s=this.vscrollData.sizes,a=t.length;for(let r=0;r=n)break;i+=t[o].size||this.minItemSize,s+=e[o].size||this.minItemSize}const r=s-i;0!==r&&(this.$el.scrollTop+=r)}},beforeCreate(){this.$_updates=[],this.$_undefinedSizes=0,this.$_undefinedMap={}},activated(){this.vscrollData.active=!0},deactivated(){this.vscrollData.active=!1},methods:{onScrollerResize(){const e=this.$refs.scroller;e&&this.forceUpdate(),this.$emit("resize")},onScrollerVisible(){this.$emit("vscroll:update",{force:!1}),this.$emit("visible")},forceUpdate(e=!0){(e||this.simpleArray)&&(this.vscrollData.validSizes={}),this.$emit("vscroll:update",{force:!0})},scrollToItem(e){const t=this.$refs.scroller;t&&t.scrollToItem(e)},getItemSize(e,t=undefined){const n=this.simpleArray?null!=t?t:this.items.indexOf(e):e[this.keyField];return this.vscrollData.sizes[n]||0},scrollToBottom(){if(this.$_scrollingToBottom)return;this.$_scrollingToBottom=!0;const e=this.$el;this.$nextTick((()=>{e.scrollTop=e.scrollHeight+5e3;const t=()=>{e.scrollTop=e.scrollHeight+5e3,requestAnimationFrame((()=>{e.scrollTop=e.scrollHeight+5e3,0===this.$_undefinedSizes?this.$_scrollingToBottom=!1:requestAnimationFrame(t)}))};requestAnimationFrame(t)}))}}};const ic=nc;var sc=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("RecycleScroller",e._g(e._b({ref:"scroller",attrs:{items:e.itemsWithSize,"min-item-size":e.minItemSize,direction:e.direction,"key-field":"id","list-tag":e.listTag,"item-tag":e.itemTag},on:{resize:e.onScrollerResize,visible:e.onScrollerVisible},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.item,i=t.index,s=t.active;return[e._t("default",null,null,{item:n.item,index:i,active:s,itemWithSize:n})]}}],null,!0)},"RecycleScroller",e.$attrs,!1),e.listeners),[e._v(" "),n("template",{slot:"before"},[e._t("before")],2),e._v(" "),n("template",{slot:"after"},[e._t("after")],2),e._v(" "),n("template",{slot:"empty"},[e._t("empty")],2)],2)},ac=[];sc._withStripped=!0;const rc=void 0,oc=void 0,lc=void 0,cc=!1,dc=Wl({render:sc,staticRenderFns:ac},rc,ic,oc,cc,lc,!1,void 0,void 0,void 0);var uc={name:"DynamicScrollerItem",inject:["vscrollData","vscrollParent","vscrollResizeObserver"],props:{item:{required:!0},watchData:{type:Boolean,default:!1},active:{type:Boolean,required:!0},index:{type:Number,default:void 0},sizeDependencies:{type:[Array,Object],default:null},emitResize:{type:Boolean,default:!1},tag:{type:String,default:"div"}},computed:{id(){if(this.vscrollData.simpleArray)return this.index;if(this.item.hasOwnProperty(this.vscrollData.keyField))return this.item[this.vscrollData.keyField];throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`)},size(){return this.vscrollData.validSizes[this.id]&&this.vscrollData.sizes[this.id]||0},finalActive(){return this.active&&this.vscrollData.active}},watch:{watchData:"updateWatchData",id(){this.size||this.onDataUpdate()},finalActive(e){this.size||(e?this.vscrollParent.$_undefinedMap[this.id]||(this.vscrollParent.$_undefinedSizes++,this.vscrollParent.$_undefinedMap[this.id]=!0):this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=!1)),this.vscrollResizeObserver?e?this.observeSize():this.unobserveSize():e&&this.$_pendingVScrollUpdate===this.id&&this.updateSize()}},created(){if(!this.$isServer&&(this.$_forceNextVScrollUpdate=null,this.updateWatchData(),!this.vscrollResizeObserver)){for(const e in this.sizeDependencies)this.$watch((()=>this.sizeDependencies[e]),this.onDataUpdate);this.vscrollParent.$on("vscroll:update",this.onVscrollUpdate),this.vscrollParent.$on("vscroll:update-size",this.onVscrollUpdateSize)}},mounted(){this.vscrollData.active&&(this.updateSize(),this.observeSize())},beforeDestroy(){this.vscrollParent.$off("vscroll:update",this.onVscrollUpdate),this.vscrollParent.$off("vscroll:update-size",this.onVscrollUpdateSize),this.unobserveSize()},methods:{updateSize(){this.finalActive?this.$_pendingSizeUpdate!==this.id&&(this.$_pendingSizeUpdate=this.id,this.$_forceNextVScrollUpdate=null,this.$_pendingVScrollUpdate=null,this.computeSize(this.id)):this.$_forceNextVScrollUpdate=this.id},updateWatchData(){this.watchData&&!this.vscrollResizeObserver?this.$_watchData=this.$watch("item",(()=>{this.onDataUpdate()}),{deep:!0}):this.$_watchData&&(this.$_watchData(),this.$_watchData=null)},onVscrollUpdate({force:e}){!this.finalActive&&e&&(this.$_pendingVScrollUpdate=this.id),this.$_forceNextVScrollUpdate!==this.id&&!e&&this.size||this.updateSize()},onDataUpdate(){this.updateSize()},computeSize(e){this.$nextTick((()=>{if(this.id===e){const e=this.$el.offsetWidth,t=this.$el.offsetHeight;this.applySize(e,t)}this.$_pendingSizeUpdate=null}))},applySize(e,t){const n=~~("vertical"===this.vscrollParent.direction?t:e);n&&this.size!==n&&(this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=void 0),this.$set(this.vscrollData.sizes,this.id,n),this.$set(this.vscrollData.validSizes,this.id,!0),this.emitResize&&this.$emit("resize",this.id))},observeSize(){this.vscrollResizeObserver&&this.$el.parentNode&&(this.vscrollResizeObserver.observe(this.$el.parentNode),this.$el.parentNode.addEventListener("resize",this.onResize))},unobserveSize(){this.vscrollResizeObserver&&(this.vscrollResizeObserver.unobserve(this.$el.parentNode),this.$el.parentNode.removeEventListener("resize",this.onResize))},onResize(e){const{width:t,height:n}=e.detail.contentRect;this.applySize(t,n)}},render(e){return e(this.tag,this.$slots.default)}};const hc=uc,pc=void 0,gc=void 0,fc=void 0,mc=void 0,yc=Wl({},pc,hc,gc,mc,fc,!1,void 0,void 0,void 0);function vc({idProp:e=(e=>e.item.id)}={}){const t={},n=new $a["default"]({data(){return{store:t}}});return{data(){return{idState:null}},created(){this.$_id=null,this.$_getId="function"===typeof e?()=>e.call(this,this):()=>this[e],this.$watch(this.$_getId,{handler(e){this.$nextTick((()=>{this.$_id=e}))},immediate:!0}),this.$_updateIdState()},beforeUpdate(){this.$_updateIdState()},methods:{$_idStateInit(e){const i=this.$options.idState;if("function"===typeof i){const s=i.call(this,this);return n.$set(t,e,s),this.$_id=e,s}throw new Error("[mixin IdState] Missing `idState` function on component definition.")},$_updateIdState(){const n=this.$_getId();null==n&&console.warn(`No id found for IdState with idProp: '${e}'.`),n!==this.$_id&&(t[n]||this.$_idStateInit(n),this.idState=t[n])}}}}function bc(e,t){e.component(`${t}recycle-scroller`,tc),e.component(`${t}RecycleScroller`,tc),e.component(`${t}dynamic-scroller`,dc),e.component(`${t}DynamicScroller`,dc),e.component(`${t}dynamic-scroller-item`,yc),e.component(`${t}DynamicScrollerItem`,yc)}const Tc={version:"1.1.2",install(e,t){const n=Object.assign({},{installComponents:!0,componentsPrefix:""},t);for(const i in n)"undefined"!==typeof n[i]&&(Kl[i]=n[i]);n.installComponents&&bc(e,n.componentsPrefix)}};let Sc=null;function _c(e){const t=(0,nn.RL)((0,nn.hr)(e));return new RegExp(t,"ig")}"undefined"!==typeof window?Sc=window.Vue:"undefined"!==typeof n.g&&(Sc=n.g.Vue),Sc&&Sc.use(Tc);var Cc,kc,wc=function(){var e=this,t=e._self._c;return t("BaseNavigatorCardItem",{class:{expanded:e.expanded,active:e.isActive,"is-group":e.isGroupMarker},style:{"--nesting-index":e.item.depth},attrs:{"data-nesting-index":e.item.depth,id:`container-${e.item.uid}`,"aria-hidden":e.isRendered?null:"true",hideNavigatorIcon:e.isGroupMarker},nativeOn:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:(t.preventDefault(),e.handleLeftKeydown.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])||"button"in t&&2!==t.button||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.handleRightKeydown.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.clickReference.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])?null:t.altKey?"button"in t&&2!==t.button?null:(t.preventDefault(),e.toggleEntireTree.apply(null,arguments)):null}]},scopedSlots:e._u([{key:"depth-spacer",fn:function(){return[t("span",{attrs:{hidden:"",id:e.usageLabel}},[e._v(" "+e._s(e.$t("filter.navigate"))+" ")]),e.isParent?t("button",{staticClass:"tree-toggle",attrs:{tabindex:"-1","aria-labelledby":e.item.uid,"aria-expanded":e.expanded?"true":"false","aria-describedby":e.ariaDescribedBy},on:{click:[function(t){return t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.toggleTree.apply(null,arguments))},function(t){return t.altKey?(t.preventDefault(),e.toggleEntireTree.apply(null,arguments)):null},function(t){return t.metaKey?(t.preventDefault(),e.toggleSiblings.apply(null,arguments)):null}]}},[t("InlineChevronRightIcon",{staticClass:"icon-inline chevron",class:{rotate:e.expanded,animating:e.idState.isOpening}})],1):e._e()]},proxy:!0},{key:"navigator-icon",fn:function({className:n}){return[e.apiChange?t("span",{class:[{[`changed changed-${e.apiChange}`]:e.apiChange},n]}):t("TopicTypeIcon",{key:e.item.uid,class:n,attrs:{type:e.item.type,"image-override":e.item.icon?e.navigatorReferences[e.item.icon]:null,shouldCalculateOptimalWidth:!1}})]}},{key:"title-container",fn:function(){return[e.isParent?t("span",{attrs:{hidden:"",id:e.parentLabel}},[e._v(e._s(e.$tc("filter.parent-label",e.item.childUIDs.length,{"number-siblings":e.item.index+1,"total-siblings":e.item.siblingsCount,"parent-siblings":e.item.parent,"number-parent":e.item.childUIDs.length})))]):e._e(),e.isParent?e._e():t("span",{attrs:{id:e.siblingsLabel,hidden:""}},[e._v(" "+e._s(e.$t("filter.siblings-label",{"number-siblings":e.item.index+1,"total-siblings":e.item.siblingsCount,"parent-siblings":e.item.parent}))+" ")]),t(e.refComponent,{ref:"reference",tag:"component",staticClass:"leaf-link",class:{bolded:e.isBold},attrs:{id:e.item.uid,url:e.isGroupMarker?null:e.item.path||"",tabindex:e.isFocused?"0":"-1","aria-describedby":`${e.ariaDescribedBy} ${e.usageLabel}`},nativeOn:{click:[function(t){return t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:e.handleClick.apply(null,arguments)},function(t){return t.altKey?(t.preventDefault(),e.toggleEntireTree.apply(null,arguments)):null}]}},[t("HighlightMatches",{attrs:{text:e.item.title,matcher:e.filterPattern}})],1),e.isDeprecated?t("Badge",{attrs:{variant:"deprecated"}}):e.isBeta?t("Badge",{attrs:{variant:"beta"}}):e._e()]},proxy:!0}])})},Ic=[],xc=n(8785),$c=function(){var e=this,t=e._self._c;return t("div",{staticClass:"navigator-card-item"},[t("div",{staticClass:"head-wrapper"},[t("div",{staticClass:"depth-spacer"},[e._t("depth-spacer")],2),e.hideNavigatorIcon?e._e():t("div",{staticClass:"navigator-icon-wrapper"},[e._t("navigator-icon",null,{className:"navigator-icon"})],2),t("div",{staticClass:"title-container"},[e._t("title-container")],2)])])},Dc=[],Pc={name:"BaseNavigatorCardItem",props:{hideNavigatorIcon:{type:Boolean,default:()=>!1}}},Lc=Pc,Ac=(0,Z.Z)(Lc,$c,Dc,!1,null,"41ab423b",null),Oc=Ac.exports,Nc={name:"HighlightMatch",props:{text:{type:String,required:!0},matcher:{type:RegExp,default:void 0}},render(e){const{matcher:t,text:n}=this;if(!t)return e("p",{class:"highlight"},n);const i=[];let s=0,a=null;const r=new RegExp(t,"gi");while(null!==(a=r.exec(n))){const t=a[0].length,r=a.index+t,o=n.slice(s,a.index);o&&i.push(e("span",o));const l=n.slice(a.index,r);l&&i.push(e("span",{class:"match"},l)),s=r}const o=n.slice(s,n.length);return o&&i.push(e("span",o)),e("p",{class:"highlight"},i)}},Rc=Nc,Bc=(0,Z.Z)(Rc,Cc,kc,!1,null,"7b81ca08",null),Ec=Bc.exports,Mc={name:"NavigatorCardItem",mixins:[vc({idProp:e=>e.item.uid})],components:{BaseNavigatorCardItem:Oc,HighlightMatches:Ec,TopicTypeIcon:_e.Z,InlineChevronRightIcon:xc.Z,Reference:$s.Z,Badge:ei.Z},props:{isRendered:{type:Boolean,default:!1},item:{type:Object,required:!0},expanded:{type:Boolean,default:!1},filterPattern:{type:RegExp,default:void 0},isActive:{type:Boolean,default:!1},isBold:{type:Boolean,default:!1},apiChange:{type:String,default:null,validator:e=>It.UG.includes(e)},isFocused:{type:Boolean,default:()=>!1},enableFocus:{type:Boolean,default:!0},navigatorReferences:{type:Object,default:()=>({})}},idState(){return{isOpening:!1}},computed:{isGroupMarker:({item:{type:e}})=>e===Ce.t.groupMarker,isParent:({item:e,isGroupMarker:t})=>!!e.childUIDs.length&&!t,parentLabel:({item:e})=>`label-parent-${e.uid}`,siblingsLabel:({item:e})=>`label-${e.uid}`,usageLabel:({item:e})=>`usage-${e.uid}`,ariaDescribedBy:({isParent:e,parentLabel:t,siblingsLabel:n})=>e?`${t}`:`${n}`,isBeta:({item:{beta:e}})=>!!e,isDeprecated:({item:{deprecated:e}})=>!!e,refComponent:({isGroupMarker:e})=>e?"h3":$s.Z},methods:{toggleTree(){this.idState.isOpening=!0,this.$emit("toggle",this.item)},toggleEntireTree(){this.idState.isOpening=!0,this.$emit("toggle-full",this.item)},toggleSiblings(){this.idState.isOpening=!0,this.$emit("toggle-siblings",this.item)},handleLeftKeydown(){this.expanded?this.toggleTree():this.$emit("focus-parent",this.item)},handleRightKeydown(){!this.expanded&&this.isParent&&this.toggleTree()},clickReference(){(this.$refs.reference.$el||this.$refs.reference).click()},focusReference(){(this.$refs.reference.$el||this.$refs.reference).focus()},handleClick(){this.isGroupMarker||this.$emit("navigate",this.item.uid)}},watch:{async isFocused(e){await(0,Re.J)(8),e&&this.isRendered&&this.enableFocus&&this.focusReference()},async expanded(){await(0,Re.J)(9),this.idState.isOpening=!1}}},zc=Mc,Kc=(0,Z.Z)(zc,wc,Ic,!1,null,"c780f74c",null),Zc=Kc.exports,jc=function(){var e=this,t=e._self._c;return t("div",{staticClass:"navigator-card"},[t("div",{staticClass:"navigator-card-full-height"},[t("div",{staticClass:"navigator-card-inner"},[t("div",{staticClass:"head-wrapper"},[t("div",{staticClass:"head-inner"},[t("Reference",{staticClass:"navigator-head",attrs:{id:e.INDEX_ROOT_KEY,url:e.technologyPath},nativeOn:{click:function(t){return t.altKey?(t.preventDefault(),e.$emit("head-click-alt")):null}}},[t("h2",{staticClass:"card-link"},[e._v(" "+e._s(e.technology)+" ")]),e.isTechnologyBeta?t("Badge",{attrs:{variant:"beta"}}):e._e()],1),t("button",{staticClass:"close-card",class:{"hide-on-large":!e.allowHiding},attrs:{id:e.SIDEBAR_HIDE_BUTTON_ID,"aria-label":e.$t("navigator.close-navigator")},on:{click:e.handleHideClick}},[t("SidenavIcon",{staticClass:"icon-inline close-icon"})],1)],1)]),e._t("body",null,{className:"card-body"})],2)])])},qc=[],Fc=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"sidenav-icon",attrs:{viewBox:"0 0 14 14",height:"14",themeId:"sidenav"}},[t("path",{attrs:{d:"M6.533 1.867h-6.533v10.267h14v-10.267zM0.933 11.2v-8.4h4.667v8.4zM13.067 11.2h-6.533v-8.4h6.533z"}}),t("path",{attrs:{d:"M1.867 5.133h2.8v0.933h-2.8z"}}),t("path",{attrs:{d:"M1.867 7.933h2.8v0.933h-2.8z"}})])},Hc=[],Vc={name:"SidenavIcon",components:{SVGIcon:mr.Z}},Wc=Vc,Uc=(0,Z.Z)(Wc,Fc,Hc,!1,null,null,null),Gc=Uc.exports,Qc={name:"BaseNavigatorCard",components:{SidenavIcon:Gc,Reference:$s.Z,Badge:ei.Z},props:{allowHiding:{type:Boolean,default:!0},technologyPath:{type:String,default:""},technology:{type:String,required:!0},isTechnologyBeta:{type:Boolean,default:!1}},data(){return{SIDEBAR_HIDE_BUTTON_ID:Fa,INDEX_ROOT_KEY:ja}},methods:{async handleHideClick(){this.$emit("close"),await this.$nextTick();const e=document.getElementById(Uo.Yj);e&&e.focus()}}},Jc=Qc,Yc=(0,Z.Z)(Jc,jc,qc,!1,null,"60246d6e",null),Xc=Yc.exports;const ed=e=>e[e.length-1],td=(e,t)=>JSON.stringify(e)===JSON.stringify(t),nd="navigator.state",id={sampleCode:"sampleCode",tutorials:"tutorials",articles:"articles"},sd={[id.sampleCode]:"Sample Code",[id.tutorials]:"Tutorials",[id.articles]:"Articles"},ad=Object.fromEntries(Object.entries(sd).map((([e,t])=>[t,e]))),rd={[Ce.t.article]:id.articles,[Ce.t.learn]:id.tutorials,[Ce.t.overview]:id.tutorials,[Ce.t.resources]:id.tutorials,[Ce.t.sampleCode]:id.sampleCode,[Ce.t.section]:id.tutorials,[Ce.t.tutorial]:id.tutorials,[Ce.t.project]:id.tutorials},od="navigator.no-results",ld="navigator.no-children",cd="navigator.error-fetching",dd="navigator.items-found",ud="navigator.tags.hide-deprecated";var hd={name:"NavigatorCard",constants:{STORAGE_KEY:nd,FILTER_TAGS:id,FILTER_TAGS_TO_LABELS:sd,FILTER_LABELS_TO_TAGS:ad,TOPIC_TYPE_TO_TAG:rd,ERROR_FETCHING:cd,ITEMS_FOUND:dd,HIDE_DEPRECATED:ud},components:{FilterInput:lo,NavigatorCardItem:Zc,DynamicScroller:dc,DynamicScrollerItem:yc,BaseNavigatorCard:Xc},props:{...Xc.props,children:{type:Array,required:!0},activePath:{type:Array,required:!0},type:{type:String,required:!0},scrollLockID:{type:String,default:""},errorFetching:{type:Boolean,default:!1},apiChanges:{type:Object,default:null},isTechnologyBeta:{type:Boolean,default:!1},navigatorReferences:{type:Object,default:()=>{}},renderFilterOnTop:{type:Boolean,default:!1},hideAvailableTags:{type:Boolean,default:!1}},mixins:[Zr],data(){return{filter:"",debouncedFilter:"",selectedTags:[],openNodes:Object.freeze({}),nodesToRender:Object.freeze([]),activeUID:null,lastFocusTarget:null,allNodesToggled:!1,translatableTags:[ud]}},computed:{politeAriaLive(){const{hasNodes:e,nodesToRender:t}=this;return e?this.$tc(dd,t.length,{number:t.length}):""},assertiveAriaLive:({hasNodes:e,hasFilter:t,errorFetching:n})=>e?"":t?od:n?cd:ld,availableTags({selectedTags:e,renderableChildNodesMap:t,apiChangesObject:n,hideAvailableTags:i}){if(i||e.length)return[];const s=new Set(Object.values(n)),a=new Set(Object.values(sd)),r=new Set([ud]);s.size&&r.delete(ud);const o={type:[],changes:[],other:[]};for(const l in t){if(!Object.hasOwnProperty.call(t,l))continue;if(!a.size&&!s.size&&!r.size)break;const{type:e,path:i,deprecated:c}=t[l],d=sd[rd[e]],u=n[i];a.has(d)&&(o.type.push(d),a.delete(d)),u&&s.has(u)&&(o.changes.push(this.$t(It.Ag[u])),s.delete(u)),c&&r.has(ud)&&(o.other.push(ud),r.delete(ud))}return o.type.concat(o.changes,o.other)},selectedTagsModelValue:{get(){return this.selectedTags.map((e=>sd[e]||this.$t(It.Ag[e])||e))},set(e){(this.selectedTags.length||e.length)&&(this.selectedTags=e.map((e=>ad[e]||It.ct[e]||e)))}},filterPattern:({debouncedFilter:e})=>e?new RegExp(_c(e),"i"):null,itemSize:()=>qa,childrenMap({children:e}){return Va(e)},activePathChildren({activeUID:e,childrenMap:t}){return e&&t[e]?Qa(e,t):[]},activePathMap:({activePathChildren:e})=>Object.fromEntries(e.map((({uid:e})=>[e,!0]))),activeIndex:({activeUID:e,nodesToRender:t})=>t.findIndex((t=>t.uid===e)),filteredChildren({hasFilter:e,children:t,filterPattern:n,selectedTags:i,apiChanges:s}){if(!e)return[];const a=new Set(i);return t.filter((({title:e,path:t,type:i,deprecated:r,deprecatedChildrenCount:o,childUIDs:l})=>{const c=r||o===l.length,d=!n||n.test(e);let u=!0;a.size&&(u=a.has(rd[i]),s&&!u&&(u=a.has(s[t])),!c&&a.has(ud)&&(u=!0));const h=!s||!!s[t];return d&&u&&h}))},renderableChildNodesMap({hasFilter:e,childrenMap:t,deprecatedHidden:n,filteredChildren:i,removeDeprecated:s}){if(!e)return t;const a=i.length-1,r=new Set([]);for(let o=a;o>=0;o-=1){const e=i[o],a=t[e.groupMarkerUID];if(a&&r.add(a),r.has(e))continue;if(r.has(t[e.parent])&&e.type!==Ce.t.groupMarker){r.add(e);continue}let l=[];e.childUIDs.length&&(l=s(Ua(e.uid,t),n)),l.concat(Qa(e.uid,t)).forEach((e=>r.add(e)))}return Va([...r])},nodeChangeDeps:({filteredChildren:e,activePathChildren:t,debouncedFilter:n,selectedTags:i})=>[e,t,n,i],hasFilter({debouncedFilter:e,selectedTags:t,apiChanges:n}){return Boolean(e.length||t.length||n)},deprecatedHidden:({selectedTags:e})=>e[0]===ud,apiChangesObject(){return this.apiChanges||{}},hasNodes:({nodesToRender:e})=>!!e.length,totalItemsToNavigate:({nodesToRender:e})=>e.length,lastActivePathItem:({activePath:e})=>ed(e)},created(){this.restorePersistedState()},watch:{filter:"debounceInput",nodeChangeDeps:"trackOpenNodes",activePath:"handleActivePathChange",apiChanges(e){e||(this.selectedTags=this.selectedTags.filter((e=>!this.$t(It.Ag[e]))))},async activeUID(e,t){await this.$nextTick();const n=this.$refs[`dynamicScroller_${t}`];n&&n.updateSize&&n.updateSize()}},methods:{setUnlessEqual(e,t){td(t,this[e])||(this[e]=Object.freeze(t))},toggleAllNodes(){const e=this.children.filter((e=>e.parent===ja&&e.type!==Ce.t.groupMarker&&e.childUIDs.length));this.allNodesToggled=!this.allNodesToggled,this.allNodesToggled&&(this.openNodes={},this.generateNodesToRender()),e.forEach((e=>{this.toggleFullTree(e)}))},clearFilters(){this.filter="",this.debouncedFilter="",this.selectedTags=[]},scrollToFocus(){this.$refs.scroller.scrollToItem(this.focusedIndex)},debounceInput:xr((function(e){this.debouncedFilter=e,this.lastFocusTarget=null}),200),trackOpenNodes([e,t,n,i],[,s=[],a="",r=[]]=[]){if(n!==a&&!a&&this.getFromStorage("filter")||!td(i,r)&&!r.length&&this.getFromStorage("selectedTags",[]).length)return;const o=!td(s,t),{childrenMap:l}=this;let c=t;if(!(this.deprecatedHidden&&!this.debouncedFilter.length||o&&this.hasFilter)&&this.hasFilter){const t=new Set,n=e.length-1;for(let i=n;i>=0;i-=1){const n=e[i];t.has(l[n.parent])||t.has(n)||Qa(n.uid,l).slice(0,-1).forEach((e=>t.add(e)))}c=[...t]}const d=o?{...this.openNodes}:{},u=c.reduce(((e,t)=>(e[t.uid]=!0,e)),d);this.setUnlessEqual("openNodes",u),this.generateNodesToRender(),this.updateFocusIndexExternally()},toggle(e){const t=this.openNodes[e.uid];let n=[],i=[];if(t){const t=(0,w.d9)(this.openNodes),n=Ua(e.uid,this.childrenMap);n.forEach((({uid:e})=>{delete t[e]})),this.setUnlessEqual("openNodes",t),i=n.slice(1)}else this.setUnlessEqual("openNodes",{...this.openNodes,[e.uid]:!0}),n=Ga(e.uid,this.childrenMap,this.children).filter((e=>this.renderableChildNodesMap[e.uid]));this.augmentRenderNodes({uid:e.uid,include:n,exclude:i})},toggleFullTree(e){const t=this.openNodes[e.uid],n=(0,w.d9)(this.openNodes),i=Ua(e.uid,this.childrenMap);let s=[],a=[];i.forEach((({uid:e})=>{t?delete n[e]:n[e]=!0})),t?s=i.slice(1):a=i.slice(1).filter((e=>this.renderableChildNodesMap[e.uid])),this.setUnlessEqual("openNodes",n),this.augmentRenderNodes({uid:e.uid,exclude:s,include:a})},toggleSiblings(e){const t=this.openNodes[e.uid],n=(0,w.d9)(this.openNodes),i=Ja(e.uid,this.childrenMap,this.children);i.forEach((({uid:e,childUIDs:i,type:s})=>{if(i.length&&s!==Ce.t.groupMarker)if(t){const t=Ua(e,this.childrenMap);t.forEach((e=>{delete n[e.uid]})),delete n[e],this.augmentRenderNodes({uid:e,exclude:t.slice(1),include:[]})}else{n[e]=!0;const t=Ga(e,this.childrenMap,this.children).filter((e=>this.renderableChildNodesMap[e.uid]));this.augmentRenderNodes({uid:e,exclude:[],include:t})}})),this.setUnlessEqual("openNodes",n),this.persistState()},removeDeprecated(e,t){return t?e.filter((({deprecated:e})=>!e)):e},generateNodesToRender(){const{children:e,openNodes:t,renderableChildNodesMap:n}=this;this.setUnlessEqual("nodesToRender",e.filter((e=>n[e.uid]&&(e.parent===ja||t[e.parent])))),this.persistState(),this.scrollToElement()},augmentRenderNodes({uid:e,include:t=[],exclude:n=[]}){const i=this.nodesToRender.findIndex((t=>t.uid===e));if(t.length){const e=t.filter((e=>!this.nodesToRender.includes(e))),n=this.nodesToRender.slice(0);n.splice(i+1,0,...e),this.setUnlessEqual("nodesToRender",n)}else if(n.length){const e=new Set(n);this.setUnlessEqual("nodesToRender",this.nodesToRender.filter((t=>!e.has(t))))}this.persistState()},getFromStorage(e,t=null){const n=qo.y7.get(nd,{}),i=n[this.technologyPath];return i?e?i[e]||t:i:t},persistState(){const e={path:this.lastActivePathItem},{path:t}=this.activeUID&&this.childrenMap[this.activeUID]||e,n={technology:this.technology,path:t,hasApiChanges:!!this.apiChanges,openNodes:Object.keys(this.openNodes).map(Number),nodesToRender:this.nodesToRender.map((({uid:e})=>e)),activeUID:this.activeUID,filter:this.filter,selectedTags:this.selectedTags},i={...qo.y7.get(nd,{}),[this.technologyPath]:n};qo.y7.set(nd,i)},clearPersistedState(){const e={...qo.y7.get(nd,{}),[this.technologyPath]:{}};qo.y7.set(nd,e)},restorePersistedState(){const e=this.getFromStorage();if(!e||e.path!==this.lastActivePathItem)return this.clearPersistedState(),void this.handleActivePathChange(this.activePath);const{technology:t,nodesToRender:n=[],filter:i="",hasAPIChanges:s=!1,activeUID:a=null,selectedTags:r=[],openNodes:o}=e;if(!n.length&&!i&&!r.length)return this.clearPersistedState(),void this.handleActivePathChange(this.activePath);const{childrenMap:l}=this,c=n.every((e=>l[e])),d=a?(this.childrenMap[a]||{}).path===this.lastActivePathItem:1===this.activePath.length;if(t!==this.technology||!c||s!==Boolean(this.apiChanges)||!d||a&&!i&&!r.length&&!n.includes(a))return this.clearPersistedState(),void this.handleActivePathChange(this.activePath);this.setUnlessEqual("openNodes",Object.fromEntries(o.map((e=>[e,!0])))),this.setUnlessEqual("nodesToRender",n.map((e=>l[e]))),this.selectedTags=r,this.filter=i,this.debouncedFilter=this.filter,this.activeUID=a,this.scrollToElement()},async scrollToElement(){if(await(0,Re.J)(1),!this.$refs.scroller)return;const e=document.getElementById(this.activeUID);if(e&&0===this.getChildPositionInScroller(e))return;const t=this.nodesToRender.findIndex((e=>e.uid===this.activeUID));-1!==t?this.$refs.scroller.scrollToItem(t):this.hasFilter&&!this.deprecatedHidden&&this.$refs.scroller.scrollToItem(0)},getChildPositionInScroller(e){if(!e)return 0;const{paddingTop:t,paddingBottom:n}=getComputedStyle(this.$refs.scroller.$el),i={top:parseInt(t,10)||0,bottom:parseInt(n,10)||0},{y:s,height:a}=this.$refs.scroller.$el.getBoundingClientRect(),{y:r}=e.getBoundingClientRect(),o=e.offsetParent.offsetHeight,l=r-s-i.top;return l<0?-1:l+o>=a-i.bottom?1:0},isInsideScroller(e){return this.$refs.scroller.$el.contains(e)},handleFocusIn({target:e}){this.lastFocusTarget=e;const t=this.getChildPositionInScroller(e);if(0===t)return;const{offsetHeight:n}=e.offsetParent;this.$refs.scroller.$el.scrollBy({top:n*t,left:0})},handleFocusOut(e){e.relatedTarget&&(this.isInsideScroller(e.relatedTarget)||(this.lastFocusTarget=null))},handleScrollerUpdate:xr((async function(){await(0,Re.X)(300),this.lastFocusTarget&&this.isInsideScroller(this.lastFocusTarget)&&document.activeElement!==this.lastFocusTarget&&this.lastFocusTarget.focus({preventScroll:!0})}),50),setActiveUID(e){this.activeUID=e},handleNavigationChange(e){this.childrenMap[e].path.startsWith(this.technologyPath)&&this.setActiveUID(e)},pathsToFlatChildren(e){const t=e.slice(0).reverse(),{childrenMap:n}=this;let i=this.children;const s=[];while(t.length){const e=t.pop(),a=i.find((t=>t.path===e));if(!a)break;s.push(a),t.length&&(i=a.childUIDs.map((e=>n[e])))}return s},handleActivePathChange(e){const t=this.childrenMap[this.activeUID],n=ed(e);if(t){if(n===t.path)return;const e=Ja(this.activeUID,this.childrenMap,this.children),i=Ga(this.activeUID,this.childrenMap,this.children),s=Qa(this.activeUID,this.childrenMap),a=[...i,...e,...s].find((e=>e.path===n));if(a)return void this.setActiveUID(a.uid)}const i=this.pathsToFlatChildren(e);i.length?this.setActiveUID(i[i.length-1].uid):this.activeUID?this.setActiveUID(null):this.trackOpenNodes(this.nodeChangeDeps)},updateFocusIndexExternally(){this.externalFocusChange=!0,this.activeIndex>0?this.focusIndex(this.activeIndex):this.focusIndex(0)},focusNodeParent(e){const t=this.childrenMap[e.parent];if(!t)return;const n=this.nodesToRender.findIndex((e=>e.uid===t.uid));-1!==n&&this.focusIndex(n)}}},pd=hd,gd=(0,Z.Z)(pd,dl,ul,!1,null,"66549638",null),fd=gd.exports,md=function(){var e=this,t=e._self._c;return t("BaseNavigatorCard",e._b({on:{close:function(t){return e.$emit("close")}},scopedSlots:e._u([{key:"body",fn:function({className:n}){return[t("transition",{attrs:{name:"delay-visibility"}},[t("div",{staticClass:"loading-navigator",class:n,attrs:{"aria-hidden":"true"}},e._l(e.LOADER_ROWS,(function(e,n){return t("LoadingNavigatorItem",{key:n,attrs:{index:n,width:e.width,hideNavigatorIcon:e.hideNavigatorIcon}})})),1)])]}}])},"BaseNavigatorCard",e.$props,!1))},yd=[],vd=function(){var e=this,t=e._self._c;return t("BaseNavigatorCardItem",{staticClass:"loading-navigator-item",style:`--index: ${e.index};`,attrs:{hideNavigatorIcon:e.hideNavigatorIcon},scopedSlots:e._u([{key:"navigator-icon",fn:function({className:e}){return[t("div",{class:e})]}},{key:"title-container",fn:function(){return[t("div",{staticClass:"loader",style:{width:e.width}})]},proxy:!0}])})},bd=[],Td={name:"LoadingNavigatorItem",components:{BaseNavigatorCardItem:Oc},props:{...Oc.props,index:{type:Number,default:0},width:{type:String,default:"50%"}}},Sd=Td,_d=(0,Z.Z)(Sd,vd,bd,!1,null,"0de29914",null),Cd=_d.exports;const kd=[{width:"30%",hideNavigatorIcon:!0},{width:"80%"},{width:"50%"}];var wd={name:"LoadingNavigatorCard",components:{BaseNavigatorCard:Xc,LoadingNavigatorItem:Cd},props:{...Xc.props},data(){return{LOADER_ROWS:kd}}},Id=wd,xd=(0,Z.Z)(Id,md,yd,!1,null,"4b6d345f",null),$d=xd.exports,Dd={name:"Navigator",components:{NavigatorCard:fd,LoadingNavigatorCard:$d},data(){return{INDEX_ROOT_KEY:ja}},props:{flatChildren:{type:Array,required:!0},parentTopicIdentifiers:{type:Array,required:!0},technology:{type:Object,required:!0},isFetching:{type:Boolean,default:!1},references:{type:Object,default:()=>{}},navigatorReferences:{type:Object,default:()=>{}},scrollLockID:{type:String,default:""},errorFetching:{type:Boolean,default:!1},renderFilterOnTop:{type:Boolean,default:!1},apiChanges:{type:Object,default:null},allowHiding:{type:Boolean,default:!0}},computed:{parentTopicReferences({references:e,parentTopicIdentifiers:t}){return t.reduce(((t,n)=>{const i=e[n];return i?t.concat(i):(console.error(`Reference for "${n}" is missing`),t)}),[])},activePath({parentTopicReferences:e,$route:{path:t}}){if(t=t.replace(/\/$/,"").toLowerCase(),!e.length)return[t];let n=1;return"technologies"===e[0].kind&&(n=2),e.slice(n).map((e=>e.url)).concat(t)},type:()=>Ce.t.module,technologyProps:({technology:e})=>({technology:e.title,technologyPath:e.path||e.url,isTechnologyBeta:e.beta})}},Pd=Dd,Ld=(0,Z.Z)(Pd,ll,cl,!1,null,"159b9764",null),Ad=Ld.exports,Od=function(){var e=this,t=e._self._c;return t("NavBase",{staticClass:"documentation-nav",attrs:{breakpoint:e.BreakpointName.medium,hasOverlay:!1,hasSolidBackground:"",hasNoBorder:e.hasNoBorder,isDark:e.isDark,isWideFormat:"",hasFullWidthBorder:"","aria-label":e.$t("api-reference")},scopedSlots:e._u([e.displaySidenav?{key:"pre-title",fn:function({closeNav:n,isOpen:i,currentBreakpoint:s,className:a}){return[t("div",{class:a},[t("transition",{attrs:{name:"sidenav-toggle"}},[t("div",{directives:[{name:"show",rawName:"v-show",value:e.sidenavHiddenOnLarge,expression:"sidenavHiddenOnLarge"}],staticClass:"sidenav-toggle-wrapper"},[t("button",{staticClass:"sidenav-toggle",attrs:{"aria-label":e.$t("navigator.open-navigator"),id:e.baseNavOpenSidenavButtonId,tabindex:i?-1:null},on:{click:function(t){return t.preventDefault(),e.handleSidenavToggle(n,s)}}},[t("span",{staticClass:"sidenav-icon-wrapper"},[t("SidenavIcon",{staticClass:"icon-inline sidenav-icon"})],1)]),t("span",{staticClass:"sidenav-toggle__separator"})])])],1)]}}:null,{key:"default",fn:function(){return[e._t("title",(function(){return[e.rootLink?t("router-link",{staticClass:"nav-title-link",attrs:{to:e.rootLink}},[e._v(" "+e._s(e.$t("documentation.title"))+" ")]):t("span",{staticClass:"nav-title-link inactive"},[e._v(e._s(e.$t("documentation.title")))])]}),null,{rootLink:e.rootLink,linkClass:"nav-title-link",inactiveClass:"inactive"})]},proxy:!0},{key:"tray",fn:function({closeNav:n}){return[t("Hierarchy",{attrs:{currentTopicTitle:e.title,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,parentTopicIdentifiers:e.hierarchyItems,currentTopicTags:e.currentTopicTags,references:e.references}}),t("NavMenuItems",{staticClass:"nav-menu-settings",attrs:{previousSiblingChildren:e.breadcrumbCount}},[e.interfaceLanguage&&(e.swiftPath||e.objcPath)?t("LanguageToggle",{attrs:{interfaceLanguage:e.interfaceLanguage,objcPath:e.objcPath,swiftPath:e.swiftPath,closeNav:n}}):e._e(),e._t("menu-items")],2),e._t("tray-after",null,null,{breadcrumbCount:e.breadcrumbCount})]}},{key:"after-content",fn:function(){return[e._t("after-content")]},proxy:!0}],null,!0)})},Nd=[],Rd=n(3975),Bd=n(6302),Ed=function(){var e=this,t=e._self._c;return t("NavMenuItems",{staticClass:"hierarchy",class:{"has-badge":e.hasBadge},attrs:{"aria-label":e.$t("documentation.nav.breadcrumbs")}},[e.root?t("HierarchyItem",{key:e.root.title,staticClass:"root-hierarchy",attrs:{url:e.addQueryParamsToUrl(e.root.url)}},[e._v(" "+e._s(e.root.title)+" ")]):e._e(),e._l(e.collapsibleItems,(function(n){return t("HierarchyItem",{key:n.title,attrs:{isCollapsed:"",url:e.addQueryParamsToUrl(n.url)}},[e._v(" "+e._s(n.title)+" ")])})),e.collapsibleItems.length?t("HierarchyCollapsedItems",{attrs:{topics:e.collapsibleItems}}):e._e(),e._l(e.nonCollapsibleItems,(function(n){return t("HierarchyItem",{key:n.title,attrs:{url:e.addQueryParamsToUrl(n.url)}},[e._v(" "+e._s(n.title)+" ")])})),t("HierarchyItem",{scopedSlots:e._u([{key:"tags",fn:function(){return[e.isSymbolDeprecated?t("Badge",{attrs:{variant:"deprecated"}}):e.isSymbolBeta?t("Badge",{attrs:{variant:"beta"}}):e._e(),e._l(e.currentTopicTags,(function(n){return t("Badge",{key:`${n.type}-${n.text}`,attrs:{variant:n.type}},[e._v(" "+e._s(n.text)+" ")])}))]},proxy:!0}])},[e._v(" "+e._s(e.currentTopicTitle)+" ")])],2)},Md=[],zd=function(){var e=this,t=e._self._c;return t("li",{staticClass:"hierarchy-collapsed-items"},[t("span",{staticClass:"hierarchy-item-icon icon-inline"},[e._v("/")]),t("button",{ref:"btn",staticClass:"toggle",class:{focused:!e.collapsed},on:{click:e.toggleCollapsed}},[t("span",{staticClass:"indicator"},[t("EllipsisIcon",{staticClass:"icon-inline toggle-icon"})],1)]),t("ul",{ref:"dropdown",staticClass:"dropdown",class:{collapsed:e.collapsed}},e._l(e.topicsWithUrls,(function(n){return t("li",{key:n.title,staticClass:"dropdown-item"},[t("router-link",{staticClass:"nav-menu-link",attrs:{to:n.url}},[e._v(e._s(n.title))])],1)})),0)])},Kd=[],Zd=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"ellipsis-icon",attrs:{viewBox:"0 0 14 14",themeId:"ellipsis"}},[t("path",{attrs:{d:"m12.439 7.777v-1.554h-1.554v1.554zm-4.662 0v-1.554h-1.554v1.554zm-4.662 0v-1.554h-1.554v1.554z"}})])},jd=[],qd={name:"EllipsisIcon",components:{SVGIcon:mr.Z}},Fd=qd,Hd=(0,Z.Z)(Fd,Zd,jd,!1,null,null,null),Vd=Hd.exports,Wd={name:"HierarchyCollapsedItems",components:{EllipsisIcon:Vd},data:()=>({collapsed:!0}),props:{topics:{type:Array,required:!0}},watch:{collapsed(e,t){t&&!e?document.addEventListener("click",this.handleDocumentClick,!1):!t&&e&&document.removeEventListener("click",this.handleDocumentClick,!1)}},beforeDestroy(){document.removeEventListener("click",this.handleDocumentClick,!1)},computed:{topicsWithUrls:({$route:e,topics:t})=>t.map((t=>({...t,url:(0,L.Q2)(t.url,e.query)})))},methods:{handleDocumentClick(e){const{target:t}=e,{collapsed:n,$refs:{btn:i,dropdown:s}}=this,a=!i.contains(t)&&!s.contains(t);!n&&a&&(this.collapsed=!0)},toggleCollapsed(){this.collapsed=!this.collapsed}}},Ud=Wd,Gd=(0,Z.Z)(Ud,zd,Kd,!1,null,"f4ced690",null),Qd=Gd.exports,Jd=function(e,t){return e(t.$options.components.NavMenuItemBase,{tag:"component",staticClass:"hierarchy-item",class:[{collapsed:t.props.isCollapsed},t.data.staticClass]},[e("span",{staticClass:"hierarchy-item-icon icon-inline"},[t._v("/")]),t.props.url?e("router-link",{staticClass:"parent item nav-menu-link",attrs:{to:t.props.url}},[t._t("default")],2):[e("span",{staticClass:"current item"},[t._t("default")],2),t._t("tags")]],2)},Yd=[],Xd=n(3822),eu={name:"HierarchyItem",components:{NavMenuItemBase:Xd.Z,InlineChevronRightIcon:xc.Z},props:{isCollapsed:Boolean,url:{type:String,required:!1}}},tu=eu,nu=(0,Z.Z)(tu,Jd,Yd,!0,null,"6cf5f1d1",null),iu=nu.exports;const su=3;var au={name:"Hierarchy",components:{Badge:ei.Z,NavMenuItems:Bd.Z,HierarchyCollapsedItems:Qd,HierarchyItem:iu},constants:{MaxVisibleLinks:su},inject:["store"],props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,references:Object,currentTopicTitle:{type:String,required:!0},parentTopicIdentifiers:{type:Array,default:()=>[]},currentTopicTags:{type:Array,default:()=>[]}},computed:{windowWidth:({store:e})=>e.state.contentWidth,parentTopics(){return this.parentTopicIdentifiers.reduce(((e,t)=>{const n=this.references[t];if(n){const{title:t,url:i}=n;return e.concat({title:t,url:i})}return console.error(`Reference for "${t}" is missing`),e}),[])},root:({parentTopics:e,windowWidth:t})=>t<=1e3?null:e[0],firstItemSlice:({root:e})=>e?1:0,linksAfterCollapse:({windowWidth:e,hasBadge:t})=>{const n=t?1:0;return e>1200?su-n:e>1e3?su-1-n:e>=800?su-2-n:0},collapsibleItems:({parentTopics:e,linksAfterCollapse:t,firstItemSlice:n})=>t?e.slice(n,-t):e.slice(n),nonCollapsibleItems:({parentTopics:e,linksAfterCollapse:t,firstItemSlice:n})=>t?e.slice(n).slice(-t):[],hasBadge:({isSymbolDeprecated:e,isSymbolBeta:t,currentTopicTags:n})=>e||t||n.length},methods:{addQueryParamsToUrl(e){return(0,L.Q2)(e,this.$route.query)}}},ru=au,ou=(0,Z.Z)(ru,Ed,Md,!1,null,"069ffff2",null),lu=ou.exports,cu=function(){var e=this,t=e._self._c;return t("NavMenuItemBase",{staticClass:"nav-menu-setting language-container"},[t("div",{class:{"language-toggle-container":e.hasLanguages}},[t("select",{ref:"language-sizer",staticClass:"language-dropdown language-sizer",attrs:{"aria-hidden":"true",tabindex:"-1"}},[t("option",{key:e.currentLanguage.name,attrs:{selected:""}},[e._v(e._s(e.currentLanguage.name))])]),t("label",{staticClass:"nav-menu-setting-label",attrs:{for:e.hasLanguages?"language-toggle":null}},[e._v(e._s(e.$t("formats.colon",{content:e.$t("language")})))]),e.hasLanguages?t("select",{directives:[{name:"model",rawName:"v-model",value:e.languageModel,expression:"languageModel"}],staticClass:"language-dropdown nav-menu-link",style:`width: ${e.adjustedWidth}px`,attrs:{id:"language-toggle"},on:{change:[function(t){var n=Array.prototype.filter.call(t.target.options,(function(e){return e.selected})).map((function(e){var t="_value"in e?e._value:e.value;return t}));e.languageModel=t.target.multiple?n:n[0]},function(t){return e.pushRoute(e.currentLanguage.route)}]}},e._l(e.languages,(function(n){return t("option",{key:n.api,domProps:{value:n.api}},[e._v(" "+e._s(n.name)+" ")])})),0):t("span",{staticClass:"nav-menu-toggle-none current-language",attrs:{"aria-current":"page"}},[e._v(e._s(e.currentLanguage.name))]),e.hasLanguages?t("InlineChevronDownIcon",{staticClass:"toggle-icon icon-inline"}):e._e()],1),e.hasLanguages?t("div",{staticClass:"language-list-container"},[t("span",{staticClass:"nav-menu-setting-label"},[e._v(e._s(e.$t("formats.colon",{content:e.$t("language")})))]),t("ul",{staticClass:"language-list"},e._l(e.languages,(function(n){return t("li",{key:n.api,staticClass:"language-list-item"},[n.api===e.languageModel?t("span",{staticClass:"current-language",attrs:{"data-language":n.api,"aria-current":"page"}},[e._v(" "+e._s(n.name)+" ")]):t("a",{staticClass:"nav-menu-link",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.pushRoute(n.route)}}},[e._v(" "+e._s(n.name)+" ")])])})),0)]):e._e()])},du=[],uu=n(5151),hu={name:"LanguageToggle",components:{InlineChevronDownIcon:uu.Z,NavMenuItemBase:Xd.Z},inject:{store:{default(){return{setPreferredLanguage(){}}}}},props:{interfaceLanguage:{type:String,required:!0},objcPath:{type:String,required:!1},swiftPath:{type:String,required:!1},closeNav:{type:Function,default:()=>{}}},data(){return{languageModel:null,adjustedWidth:0}},mounted(){const e=Ne((async()=>{await(0,Re.J)(3),this.calculateSelectWidth()}),150);window.addEventListener("resize",e),window.addEventListener("orientationchange",e),this.$once("hook:beforeDestroy",(()=>{window.removeEventListener("resize",e),window.removeEventListener("orientationchange",e)}))},watch:{interfaceLanguage:{immediate:!0,handler(e){this.languageModel=e}},currentLanguage:{immediate:!0,handler:"calculateSelectWidth"}},methods:{getRoute(e){const t=e.query===D.Z.swift.key.url?void 0:e.query;return{query:{...this.$route.query,language:t},path:this.isCurrentPath(e.path)?null:(0,A.Jf)(e.path)}},async pushRoute(e){await this.closeNav(),this.store.setPreferredLanguage(e.query),this.$router.push(this.getRoute(e))},isCurrentPath(e){return this.$route.path.replace(/^\//,"")===e},async calculateSelectWidth(){await this.$nextTick(),this.adjustedWidth=this.$refs["language-sizer"].clientWidth+6}},computed:{languages(){return[{name:D.Z.swift.name,api:D.Z.swift.key.api,route:{path:this.swiftPath,query:D.Z.swift.key.url}},{name:D.Z.objectiveC.name,api:D.Z.objectiveC.key.api,route:{path:this.objcPath,query:D.Z.objectiveC.key.url}}]},currentLanguage:({languages:e,languageModel:t})=>e.find((e=>e.api===t)),hasLanguages:({objcPath:e,swiftPath:t})=>t&&e}},pu=hu,gu=(0,Z.Z)(pu,cu,du,!1,null,"d12167e0",null),fu=gu.exports,mu={name:"DocumentationNav",components:{SidenavIcon:Gc,NavBase:Rd.Z,NavMenuItems:Bd.Z,Hierarchy:lu,LanguageToggle:fu},props:{title:{type:String,required:!1},parentTopicIdentifiers:{type:Array,required:!1},isSymbolBeta:{type:Boolean,required:!1},isSymbolDeprecated:{type:Boolean,required:!1},isDark:{type:Boolean,default:!1},hasNoBorder:{type:Boolean,default:!1},currentTopicTags:{type:Array,required:!0},references:{type:Object,default:()=>({})},interfaceLanguage:{type:String,required:!1},objcPath:{type:String,required:!1},swiftPath:{type:String,required:!1},sidenavHiddenOnLarge:{type:Boolean,default:!1},displaySidenav:{type:Boolean,default:!1}},computed:{baseNavOpenSidenavButtonId:()=>Uo.Yj,BreakpointName:()=>Ho.L3,breadcrumbCount:({hierarchyItems:e})=>e.length+1,rootHierarchyReference:({parentTopicIdentifiers:e,references:t})=>t[e[0]]||{},isRootTechnologyLink:({rootHierarchyReference:{kind:e}})=>"technologies"===e,rootLink:({isRootTechnologyLink:e,rootHierarchyReference:t,$route:n})=>e?{path:t.url,query:n.query}:null,hierarchyItems:({parentTopicIdentifiers:e,isRootTechnologyLink:t})=>t?e.slice(1):e},methods:{async handleSidenavToggle(e,t){await e(),this.$emit("toggle-sidenav",t),await this.$nextTick();const n=document.getElementById(Fa);n&&n.focus()}}},yu=mu,vu=(0,Z.Z)(yu,Od,Nd,!1,null,"78ad19e0",null),bu=vu.exports,Tu=function(){var e=this,t=e._self._c;return t("div",{staticClass:"StaticContentWidth"},[e._t("default")],2)},Su=[],_u={name:"StaticContentWidth",inject:["store"],mounted(){const e=Ne((async()=>{await this.$nextTick(),this.store.setContentWidth(this.$el.offsetWidth)}),150);window.addEventListener("resize",e),window.addEventListener("orientationchange",e),this.$once("hook:beforeDestroy",(()=>{window.removeEventListener("resize",e),window.removeEventListener("orientationchange",e)})),e()}},Cu=_u,ku=(0,Z.Z)(Cu,Tu,Su,!1,null,null,null),wu=ku.exports,Iu=n(1944),xu=n(2717);const $u="symbol";var Du={watch:{topicData:{immediate:!0,handler:"extractOnThisPageSections"}},methods:{shouldRegisterContentSection(e){return e.type===_n.BlockType.heading&&e.level<4},extractOnThisPageSections(e){if(!e)return;this.store.resetPageSections();const{metadata:{title:t},primaryContentSections:n,topicSections:i,defaultImplementationsSections:s,relationshipsSections:a,seeAlsoSections:r,kind:o}=e;this.store.addOnThisPageSection({title:t,anchor:xu.$,level:1,isSymbol:o===$u},{i18n:!1}),n&&n.forEach((e=>{switch(e.kind){case Ze.content:Ot.Z.methods.forEach.call(e,(e=>{this.shouldRegisterContentSection(e)&&this.store.addOnThisPageSection({title:e.text,anchor:e.anchor||(0,nn.HA)(e.text),level:e.level},{i18n:!1})}));break;case Ze.properties:case Ze.restBody:case Ze.restCookies:case Ze.restEndpoint:case Ze.restHeaders:case Ze.restParameters:case Ze.restResponses:this.store.addOnThisPageSection({title:e.title,anchor:(0,nn.HA)(e.title),level:2});break;default:jt[e.kind]&&this.store.addOnThisPageSection(jt[e.kind])}})),i&&this.store.addOnThisPageSection(Zt.topics),s&&this.store.addOnThisPageSection(Zt.defaultImplementations),a&&this.store.addOnThisPageSection(Zt.relationships),r&&this.store.addOnThisPageSection(Zt.seeAlso)}}},Pu=n(9030);const Lu="0.3.0",Au="navigator-hidden-large",{extractProps:Ou}=xa.methods;var Nu={name:"DocumentationTopicView",constants:{MIN_RENDER_JSON_VERSION_WITH_INDEX:Lu,NAVIGATOR_HIDDEN_ON_LARGE_KEY:Au},components:{Navigator:Ad,AdjustableSidebarWidth:ol,StaticContentWidth:wu,NavigatorDataProvider:ir,Topic:xa,CodeTheme:Ma.Z,Nav:bu,QuickNavigationButton:cr,QuickNavigationModal:Ko,PortalTarget:I.YC},mixins:[Ka.Z,Za.Z,Du],props:{enableMinimized:{type:Boolean,default:!1}},data(){return{topicDataDefault:null,topicDataObjc:null,sidenavVisibleOnMobile:!1,sidenavHiddenOnLarge:qo.tO.get(Au,!1),showQuickNavigationModal:!1,store:Ea,BreakpointName:Ho.L3}},computed:{objcOverrides:({topicData:e})=>{const{variantOverrides:t=[]}=e||{},n=({interfaceLanguage:e})=>e===D.Z.objectiveC.key.api,i=({traits:e})=>e.some(n),s=t.find(i);return s?s.patch:null},enableQuickNavigation:({isTargetIDE:e})=>!e&&(0,Xe.$8)(["features","docs","quickNavigation","enable"],!0),topicData:{get(){return this.topicDataObjc?this.topicDataObjc:this.topicDataDefault},set(e){this.topicDataDefault=e}},topicKey:({$route:e,topicProps:t})=>[e.path,t.interfaceLanguage].join(),topicProps(){return Ou(this.topicData)},parentTopicIdentifiers:({topicProps:{hierarchy:{paths:e=[]},references:t},$route:n})=>e.length?e.find((e=>{const i=e.find((e=>t[e]&&"technologies"!==t[e].kind)),s=i&&t[i];return s&&n.path.toLowerCase().startsWith(s.url.toLowerCase())}))||e[0]:[],technology:({$route:e,topicProps:{identifier:t,references:n,role:i,title:s},parentTopicIdentifiers:a})=>{const r={title:s,url:e.path},o=n[t];if(!a.length)return o||r;const l=n[a[0]];return l&&"technologies"!==l.kind?l:(i!==k.L.collection||o)&&(l&&n[a[1]]||o)||r},languagePaths:({topicData:{variants:e=[]}})=>e.reduce(((e,t)=>t.traits.reduce(((e,n)=>n.interfaceLanguage?{...e,[n.interfaceLanguage]:(e[n.interfaceLanguage]||[]).concat(t.paths)}:e),e)),{}),objcPath:({languagePaths:{[D.Z.objectiveC.key.api]:[e]=[]}={}})=>e,swiftPath:({languagePaths:{[D.Z.swift.key.api]:[e]=[]}={}})=>e,isSymbolBeta:({topicProps:{platforms:e}})=>!!(e&&e.length&&e.every((e=>e.beta))),isSymbolDeprecated:({topicProps:{platforms:e,deprecationSummary:t}})=>!!(t&&t.length>0||e&&e.length&&e.every((e=>e.deprecatedAt))),enableNavigator:({isTargetIDE:e,topicDataDefault:t})=>!e&&(0,Iu.n4)((0,Iu.W1)(t.schemaVersion),Lu)>=0,enableOnThisPageNav:({isTargetIDE:e})=>!(0,Xe.$8)(["features","docs","onThisPageNavigator","disable"],!1)&&!e,sidebarProps:({sidenavVisibleOnMobile:e,enableNavigator:t,sidenavHiddenOnLarge:n})=>t?{shownOnMobile:e,hiddenOnLarge:n}:{},sidebarListeners(){return this.enableNavigator?{"update:shownOnMobile":this.toggleMobileSidenav,"update:hiddenOnLarge":this.toggleLargeSidenav}:{}}},methods:{applyObjcOverrides(){this.topicDataObjc=C((0,w.d9)(this.topicData),this.objcOverrides)},handleCodeColorsChange(e){za.Z.updateCodeColors(e)},handleToggleSidenav(e){e===Ho.L3.large?this.toggleLargeSidenav():this.toggleMobileSidenav()},openQuickNavigationModal(){this.sidenavVisibleOnMobile||(this.showQuickNavigationModal=!0)},toggleLargeSidenav(e=!this.sidenavHiddenOnLarge){this.sidenavHiddenOnLarge=e,qo.tO.set(Au,e)},toggleMobileSidenav(e=!this.sidenavVisibleOnMobile){this.sidenavVisibleOnMobile=e},onQuickNavigationKeydown(e){("/"===e.key||"o"===e.key&&e.shiftKey&&e.metaKey)&&this.enableNavigator&&"input"!==e.target.tagName.toLowerCase()&&(this.openQuickNavigationModal(),e.preventDefault())}},mounted(){this.$bridge.on("contentUpdate",this.handleContentUpdateFromBridge),this.$bridge.on("codeColors",this.handleCodeColorsChange),this.$bridge.send({type:"requestCodeColors"}),this.enableQuickNavigation&&window.addEventListener("keydown",this.onQuickNavigationKeydown)},provide(){return{store:this.store}},inject:{isTargetIDE:{default(){return!1}}},beforeDestroy(){this.$bridge.off("contentUpdate",this.handleContentUpdateFromBridge),this.$bridge.off("codeColors",this.handleCodeColorsChange),this.enableQuickNavigation&&window.removeEventListener("keydown",this.onQuickNavigationKeydown)},beforeRouteEnter(e,t,n){e.meta.skipFetchingData?n((e=>e.newContentMounted())):(0,w.Ek)(e,t,n).then((t=>n((n=>{(0,Pu.jk)(e.params.locale,n),n.topicData=t,e.query.language===D.Z.objectiveC.key.url&&n.objcOverrides&&n.applyObjcOverrides()})))).catch(n)},beforeRouteUpdate(e,t,n){e.path===t.path&&e.query.language===D.Z.objectiveC.key.url&&this.objcOverrides?(this.applyObjcOverrides(),n()):(0,w.Us)(e,t)?(0,w.Ek)(e,t,n).then((t=>{this.topicDataObjc=null,this.topicData=t,e.query.language===D.Z.objectiveC.key.url&&this.objcOverrides&&this.applyObjcOverrides(),(0,Pu.jk)(e.params.locale,this),n()})).catch(n):n()},created(){this.store.reset()},watch:{topicData(){this.$nextTick((()=>{this.newContentMounted()}))}}},Ru=Nu,Bu=(0,Z.Z)(Ru,i,s,!1,null,"14c47d72",null),Eu=Bu.exports},7274:function(e,t){var n,i,s;(function(a,r){i=[],n=r,s="function"===typeof n?n.apply(t,i):n,void 0===s||(e.exports=s)})(0,(function(){var e=/(auto|scroll)/,t=function(e,n){return null===e.parentNode?n:t(e.parentNode,n.concat([e]))},n=function(e,t){return getComputedStyle(e,null).getPropertyValue(t)},i=function(e){return n(e,"overflow")+n(e,"overflow-y")+n(e,"overflow-x")},s=function(t){return e.test(i(t))},a=function(e){if(e instanceof HTMLElement||e instanceof SVGElement){for(var n=t(e.parentNode,[]),i=0;ie||(0,i.$8)(["theme","icons",t],void 0)}},s=a,c=n(1001),l=(0,c.Z)(s,r,o,!1,null,"979a134a",null),u=l.exports},5670:function(e,t,n){"use strict";n(647);var r=n(144),o=n(7152),i=n(8345),a=function(){var e=this,t=e._self._c;return t("div",{class:{fromkeyboard:e.fromKeyboard,hascustomheader:e.hasCustomHeader},attrs:{id:"app"}},[t("div",{attrs:{id:e.AppTopID}}),e.isTargetIDE?e._e():t("a",{attrs:{href:"#main",id:"skip-nav"}},[e._v(e._s(e.$t("accessibility.skip-navigation")))]),t("InitialLoadingPlaceholder"),e._t("header",(function(){return[e.enablei18n?t("SuggestLang"):e._e(),e.hasCustomHeader?t("custom-header",{attrs:{"data-color-scheme":e.preferredColorScheme}}):e._e()]}),{isTargetIDE:e.isTargetIDE}),t("div",{attrs:{id:e.baseNavStickyAnchorId}}),e._t("default",(function(){return[t("router-view",{staticClass:"router-content"}),e.hasCustomFooter?t("custom-footer",{attrs:{"data-color-scheme":e.preferredColorScheme}}):e.isTargetIDE?e._e():t("Footer",{scopedSlots:e._u([{key:"default",fn:function({className:n}){return[e.enablei18n?t("div",{class:n},[t("LocaleSelector")],1):e._e()]}}])})]}),{isTargetIDE:e.isTargetIDE}),e._t("footer",null,{isTargetIDE:e.isTargetIDE})],2)},s=[],c=n(4030),l=n(9804),u=function(){var e=this,t=e._self._c;return t("footer",{staticClass:"footer"},[t("div",{staticClass:"row"},[t("ColorSchemeToggle")],1),e._t("default",null,{className:"row"})],2)},d=[],m=function(){var e=this,t=e._self._c;return t("fieldset",{staticClass:"color-scheme-toggle",attrs:{role:"radiogroup"}},[t("legend",{staticClass:"visuallyhidden"},[e._v(e._s(e.$t("color-scheme.select")))]),e._l(e.options,(function(n){return t("label",{key:n},[t("input",{attrs:{type:"radio"},domProps:{checked:n==e.preferredColorScheme,value:n},on:{input:e.setPreferredColorScheme}}),t("div",{staticClass:"text"},[e._v(e._s(e.$t(`color-scheme.${n}`)))])])}))],2)},f=[],h={name:"ColorSchemeToggle",data:()=>({appState:c["default"].state}),computed:{options:({supportsAutoColorScheme:e})=>[l.Z.light,l.Z.dark,...e?[l.Z.auto]:[]],preferredColorScheme:({appState:e})=>e.preferredColorScheme,supportsAutoColorScheme:({appState:e})=>e.supportsAutoColorScheme},methods:{setPreferredColorScheme:e=>{c["default"].setPreferredColorScheme(e.target.value)}},watch:{preferredColorScheme:{immediate:!0,handler(e){document.body.dataset.colorScheme=e}}}},p=h,g=n(1001),v=(0,g.Z)(p,m,f,!1,null,"78690df2",null),b=v.exports,w={name:"Footer",components:{ColorSchemeToggle:b}},y=w,S=(0,g.Z)(y,u,d,!1,null,"4e049dbd",null),C=S.exports,_=function(){var e=this,t=e._self._c;return e.loaded?e._e():t("div",{staticClass:"InitialLoadingPlaceholder",attrs:{id:"loading-placeholder"}})},E=[],L={name:"InitialLoadingPlaceholder",data(){return{loaded:!1}},created(){const e=()=>{this.loaded=!0};this.$router.onReady(e,e)}},P=L,A=(0,g.Z)(P,_,E,!1,null,"35c356b6",null),k=A.exports,T=n(1716),j=n(9089);function I(e,t){return e&&"object"===typeof e&&Object.prototype.hasOwnProperty.call(e,t)&&"string"===typeof e[t]}function x(e,t,n,r){if(!t||"object"!==typeof t||r&&(I(t,"light")||I(t,"dark"))){let o=t;if(I(t,r)&&(o=t[r]),"object"===typeof o)return;n[e]=o}else Object.entries(t).forEach((([t,o])=>{const i=[e,t].join("-");x(i,o,n,r)}))}function N(e,t="light"){const n={},r=e||{};return x("-",r,n,t),n}var $=n(2717),O=function(){var e=this,t=e._self._c;return e.displaySuggestLang?t("div",{staticClass:"suggest-lang"},[t("div",{staticClass:"suggest-lang__wrapper"},[t("router-link",{staticClass:"suggest-lang__link",attrs:{to:e.getLocaleParam(e.preferredLocale),lang:e.getCodeForSlug(e.preferredLocale)},nativeOn:{click:function(t){return e.setPreferredLocale(e.preferredLocale)}}},[e._v(e._s(e.$i18n.messages[e.preferredLocale]["view-in"])),t("InlineChevronRightIcon",{staticClass:"icon-inline"})],1),t("div",{staticClass:"suggest-lang__close-icon-wrapper"},[t("button",{staticClass:"suggest-lang__close-icon-button",attrs:{"aria-label":e.$t("continue-viewing")},on:{click:function(t){return e.setPreferredLocale(e.$i18n.locale)}}},[t("CloseIcon",{staticClass:"icon-inline"})],1)])],1)]):e._e()},D=[],Z=n(8785),R=n(1970),q=n(2412),U=n(9030),V={name:"SuggestLang",components:{InlineChevronRightIcon:Z.Z,CloseIcon:R.Z},computed:{preferredLocale:()=>{const e=c["default"].state.preferredLocale;if(e)return e;const t=q.find((e=>{const t=e.code.split("-")[0],n=window.navigator.language.split("-")[0];return n===t}));return t?t.slug:null},displaySuggestLang:({preferredLocale:e,$i18n:t})=>e&&t.locale!==e},methods:{setPreferredLocale:e=>{c["default"].setPreferredLocale(e)},getCodeForSlug:U.dZ,getLocaleParam:U.KP}},B=V,M=(0,g.Z)(B,O,D,!1,null,"768a347b",null),H=M.exports,F=function(){var e=this,t=e._self._c;return t("div",{staticClass:"locale-selector"},[t("select",{attrs:{"aria-label":e.$t("select-language")},domProps:{value:e.$i18n.locale},on:{change:e.updateRouter}},e._l(e.locales,(function({slug:n,name:r,code:o}){return t("option",{key:n,attrs:{lang:o},domProps:{value:n}},[e._v(" "+e._s(r)+" ")])})),0),t("ChevronThickIcon",{staticClass:"icon-inline"})],1)},W=[],J=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"chevron-thick-icon",attrs:{viewBox:"0 0 14 10.5",themeId:"chevron-thick"}},[t("path",{attrs:{d:"M12.43,0l1.57,1.22L7,10.5,0,1.23,1.58,0,7,7,12.43,0Z"}})])},G=[],K=n(3453),z={name:"ChevronThickIcon",components:{SVGIcon:K.Z}},X=z,Y=(0,g.Z)(X,J,G,!1,null,null,null),Q=Y.exports,ee={name:"LocaleSelector",components:{ChevronThickIcon:Q},methods:{updateRouter({target:{value:e}}){this.$router.push((0,U.KP)(e)),c["default"].setPreferredLocale(e),(0,U.jk)(e,this)}},computed:{availableLocales:()=>c["default"].state.availableLocales,locales:({availableLocales:e})=>q.filter((({code:t})=>e.includes(t)))}},te=ee,ne=(0,g.Z)(te,F,W,!1,null,"d21858a2",null),re=ne.exports,oe={name:"CoreApp",components:{Footer:C,InitialLoadingPlaceholder:k,SuggestLang:H,LocaleSelector:re},provide(){return{isTargetIDE:this.isTargetIDE,performanceMetricsEnabled:"true"==={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_PERFORMANCE_ENABLED}},data(){return{AppTopID:$.$,appState:c["default"].state,fromKeyboard:!1,isTargetIDE:"ide"==={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET,themeSettings:j.S3,baseNavStickyAnchorId:T.EA}},computed:{currentColorScheme:({appState:e})=>e.systemColorScheme,preferredColorScheme:({appState:e})=>e.preferredColorScheme,availableLocales:({appState:e})=>e.availableLocales,CSSCustomProperties:({currentColorScheme:e,preferredColorScheme:t,themeSettings:n})=>N(n.theme,t===l.Z.auto?e:t),hasCustomHeader:()=>!!window.customElements.get("custom-header"),hasCustomFooter:()=>!!window.customElements.get("custom-footer"),enablei18n:({availableLocales:e})=>(0,j.$8)(["features","docs","i18n","enable"],!1)&&e.length>1},props:{enableThemeSettings:{type:Boolean,default:!0}},watch:{CSSCustomProperties:{immediate:!0,handler(e){this.detachStylesFromRoot(e),this.attachStylesToRoot(e)}}},async created(){window.addEventListener("keydown",this.onKeyDown),this.$bridge.on("navigation",this.handleNavigationRequest),this.enableThemeSettings&&Object.assign(this.themeSettings,await(0,j.Kx)()),window.addEventListener("pageshow",this.syncPreferredColorScheme),this.$once("hook:beforeDestroy",(()=>{window.removeEventListener("pageshow",this.syncPreferredColorScheme)}))},mounted(){(document.querySelector(".footer-current-year")||{}).innerText=(new Date).getFullYear(),this.attachColorSchemeListeners()},beforeDestroy(){this.fromKeyboard?window.removeEventListener("mousedown",this.onMouseDown):window.removeEventListener("keydown",this.onKeyDown),this.$bridge.off("navigation",this.handleNavigationRequest),this.detachStylesFromRoot(this.CSSCustomProperties)},methods:{onKeyDown(){this.fromKeyboard=!0,window.addEventListener("mousedown",this.onMouseDown),window.removeEventListener("keydown",this.onKeyDown)},onMouseDown(){this.fromKeyboard=!1,window.addEventListener("keydown",this.onKeyDown),window.removeEventListener("mousedown",this.onMouseDown)},handleNavigationRequest(e){this.$router.push(e)},attachColorSchemeListeners(){if(!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)");e.addListener(this.onColorSchemePreferenceChange),this.$once("hook:beforeDestroy",(()=>{e.removeListener(this.onColorSchemePreferenceChange)})),this.onColorSchemePreferenceChange(e)},onColorSchemePreferenceChange({matches:e}){const t=e?l.Z.dark:l.Z.light;c["default"].setSystemColorScheme(t)},attachStylesToRoot(e){const t=document.body;Object.entries(e).filter((([,e])=>Boolean(e))).forEach((([e,n])=>{t.style.setProperty(e,n)}))},detachStylesFromRoot(e){const t=document.body;Object.entries(e).forEach((([e])=>{t.style.removeProperty(e)}))},syncPreferredColorScheme(){c["default"].syncPreferredColorScheme()}}},ie=oe,ae=(0,g.Z)(ie,a,s,!1,null,"3742c1d7",null),se=ae.exports;class ce{constructor(){this.$send=()=>{}}send(e){this.$send(e)}}class le{constructor(){const{webkit:{messageHandlers:{bridge:e={}}={}}={}}=window;this.bridge=e;const{postMessage:t=(()=>{})}=e;this.$send=t.bind(e)}send(e){this.$send(e)}}class ue{constructor(e=new ce){this.backend=e,this.listeners={}}send(e){this.backend.send(e)}receive(e){this.emit(e.type,e.data)}emit(e,t){this.listeners[e]&&this.listeners[e].forEach((e=>e(t)))}on(e,t){this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t)}off(e,t){this.listeners[e]&&this.listeners[e].delete(t)}}var de={install(e,t){let n;n=t.performanceMetricsEnabled||"ide"===t.appTarget?new le:new ce,e.prototype.$bridge=new ue(n)}};function me(e){return`custom-${e}`}function fe(e){return class extends HTMLElement{constructor(){super();const t=this.attachShadow({mode:"open"}),n=e.content.cloneNode(!0);t.appendChild(n)}}}function he(e){const t=me(e),n=document.getElementById(t);n&&window.customElements.define(t,fe(n))}function pe(e,t={names:["header","footer"]}){const{names:n}=t;e.config.ignoredElements=/^custom-/,n.forEach(he)}function ge(e,t){const{value:n=!1}=t;e.style.display=n?"none":""}var ve={hide:ge};function be(e,{performanceMetrics:t=!1}={}){e.config.productionTip=!1,e.use(pe),e.directive("hide",ve.hide),e.use(de,{appTarget:{NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET,performanceMetricsEnabled:t}),window.bridge=e.prototype.$bridge,e.config.performance=t}var we=n(4589),ye=n(5381),Se=n(5657),Ce=n(3208),_e=n(2449);const Ee=10;function Le(e){const{name:t}=e,n=t.includes(we.J_);return n?Ee:0}function Pe(){const{location:e}=window;return e.pathname+e.search+e.hash}function Ae(){const e=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0);return ePromise.all([n.e(523),n.e(843)]).then(n.bind(n,4586))},{path:"/tutorials/:id/*",name:"topic",component:()=>Promise.all([n.e(523),n.e(903),n.e(162)]).then(n.bind(n,8032))},{path:"/documentation/*",name:we.J_,component:()=>Promise.all([n.e(523),n.e(37),n.e(903),n.e(982)]).then(n.bind(n,5840))},{path:"*",name:we.vL,component:Ge},{path:"*",name:we.Rp,component:Be}];const ze=[{pathPrefix:"/:locale?",nameSuffix:"-locale"}];function Xe(e,t=[],n=ze){return n.reduce(((n,r)=>n.concat(e.filter((e=>!t.includes(e.name))).map((e=>({...e,path:r.pathPrefix+e.path,name:e.name+r.nameSuffix}))))),[])}const Ye=[...Ke,...Xe(Ke,[we.vL,we.Rp])];function Qe(e={}){const t=new i.Z({mode:"history",base:j.FH,scrollBehavior:ke,...e,routes:e.routes||Ye});return t.onReady((()=>{"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual"),Te()})),"ide"!=={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET&&t.onError((e=>{const{route:n={path:"/"}}=e;t.replace({name:"server-error",params:[n.path]})})),window.addEventListener("unload",je),t}var et=n(5559);function tt(e=et){const{defaultLocale:t,messages:n,dateTimeFormats:r={}}=e,i=new o.Z({dateTimeFormats:r,locale:t,fallbackLocale:t,messages:n});return i}r["default"].use(be),r["default"].use(i.Z),r["default"].use(o.Z),new r["default"]({router:Qe(),render:e=>e(se),i18n:tt()}).$mount("#app")},2717:function(e,t,n){"use strict";n.d(t,{$:function(){return r}});const r="app-top"},9804:function(e,t){"use strict";t["Z"]={auto:"auto",dark:"dark",light:"light"}},1265:function(e,t){"use strict";t["Z"]={eager:"eager",lazy:"lazy"}},1716:function(e,t,n){"use strict";n.d(t,{EA:function(){return i},L$:function(){return o},MenuLinkModifierClasses:function(){return s},RS:function(){return r},Yj:function(){return a}});const r=52,o=48,i="nav-sticky-anchor",a="nav-open-navigator",s={noClose:"noclose"}},4589:function(e,t,n){"use strict";n.d(t,{J_:function(){return i},Rp:function(){return o},vL:function(){return r}});const r="not-found",o="server-error",i="documentation-topic"},5559:function(e,t,n){"use strict";n.r(t),n.d(t,{defaultLocale:function(){return a},messages:function(){return s}});var r=JSON.parse('{"view-in":"View in English","continue-viewing":"Continue viewing in English","language":"Language","video":{"replay":"Replay","play":"Play","pause":"Pause","watch":"Watch intro video"},"tutorials":{"title":"Tutorial | Tutorials","step":"Step {number}","submit":"Submit","next":"Next","preview":{"title":"No Preview | Preview | Previews","no-preview-available-step":"No preview available for this step."},"nav":{"chapters":"Chapters","current":"Current {thing}"},"assessment":{"check-your-understanding":"Check Your Understanding","success-message":"Great job, you\'ve answered all the questions for this tutorial.","answer-result":"Answer {answer} is {result}","correct":"correct","incorrect":"incorrect","next-question":"Next question","legend":"Possible answers"},"project-files":"Project files","estimated-time":"Estimated Time","sections":{"chapter":"Chapter {number}"},"question-of":"Question {index} of {total}","section-of":"{number} of {total}","overriding-title":"{newTitle} with {title}","time":{"format":"{number} {minutes}","minutes":{"full":"minute | minutes | {count} minutes","short":"min | mins"},"hours":{"full":"hour | hours"}}},"documentation":{"title":"Documentation","nav":{"breadcrumbs":"Breadcrumbs","menu":"Menu","open-menu":"Open Menu","close-menu":"Close Menu"},"current-page":"Current page is {title}","card":{"learn-more":"Learn More","read-article":"Read article","start-tutorial":"Start tutorial","view-api":"View API collection","view-symbol":"View symbol","view-sample-code":"View sample code"},"view-more":"View more"},"aside-kind":{"beta":"Beta","experiment":"Experiment","important":"Important","note":"Note","tip":"Tip","warning":"Warning","deprecated":"Deprecated"},"change-type":{"added":"Added","modified":"Modified","deprecated":"Deprecated"},"verbs":{"hide":"Hide","show":"Show","close":"Close"},"sections":{"title":"Section {number}","on-this-page":"On this page","topics":"Topics","default-implementations":"Default Implementations","relationships":"Relationships","see-also":"See Also","declaration":"Declaration","details":"Details","parameters":"Parameters","possible-values":"Possible Values","parts":"Parts","availability":"Availability","resources":"Resources"},"metadata":{"details":{"name":"Name","key":"Key","type":"Type"},"beta":{"legal":"This documentation refers to beta software and may be changed.","software":"Beta Software"},"default-implementation":"Default implementation provided. | Default implementations provided."},"availability":{"introduced-and-deprecated":"Introduced in {name} {introducedAt} and deprecated in {name} {deprecatedAt}","available-on":"Available on {name} {introducedAt} and later"},"more":"More","less":"Less","api-reference":"API Reference","filter":{"title":"Filter","search-symbols":"Search symbols in {technology}","suggested-tags":"Suggested tag | Suggested tags","selected-tags":"Selected tag | Selected tags","add-tag":"Add tag","tag-select-remove":"Tag. Select to remove from list.","navigate":"To navigate the symbols, press Up Arrow, Down Arrow, Left Arrow or Right Arrow","siblings-label":"{number-siblings} of {total-siblings} symbols inside {parent-siblings}","parent-label":"{number-siblings} of {total-siblings} symbols inside {parent-siblings} containing one symbol | {number-siblings} of {total-siblings} symbols inside {parent-siblings} containing {number-parent} symbols","reset-filter":"Reset Filter"},"navigator":{"title":"Documentation Navigator","open-navigator":"Open Documentation Navigator","close-navigator":"Close Documentation Navigator","no-results":"No results found.","no-children":"No data available.","error-fetching":"There was an error fetching the data.","items-found":"No items were found | 1 item was found | {number} items were found. Tab back to navigate through them.","navigator-is":"Navigator is {state}","state":{"loading":"loading","ready":"ready"},"tags":{"hide-deprecated":"Hide Deprecated"}},"tab":{"request":"Request","response":"Response"},"required":"Required","parameters":{"default":"Default","minimum":"Minimum","maximum":"Maximum","possible-types":"Type | Possible types","possible-values":"Value | Possible Values"},"content-type":"Content-Type: {value}","read-only":"Read-only","error":{"unknown":"An unknown error occurred.","image":"Image failed to load","not-found":"The page you\'re looking for can\'t be found."},"color-scheme":{"select":"Select a color scheme preference","auto":"Auto","dark":"Dark","light":"Light"},"accessibility":{"strike":{"start":"start of stricken text","end":"end of stricken text"},"code":{"start":"start of code block","end":"end of code block"},"skip-navigation":"Skip Navigation","in-page-link":"in page link"},"select-language":"Select the language for this page","icons":{"clear":"Clear","web-service-endpoint":"Web Service Endpoint","search":"Search"},"formats":{"parenthesis":"({content})","colon":"{content}: "},"quicknav":{"button":{"label":"Open Quick Navigation","title":"Click or type / for quick navigation"},"preview-unavailable":"Preview unavailable"}}'),o=JSON.parse('{"view-in":"以中文查看","continue-viewing":"继续以中文查看","language":"语言","video":{"replay":"重新播放","play":"播放","pause":"暂停","watch":"观看介绍视频"},"tutorials":{"title":"教程","step":"第 {number} 步","submit":"提交","next":"下一步","preview":{"title":"无预览 | 预览","no-preview-available-step":"这一步没有预览。"},"nav":{"chapters":"章节","current":"当前{thing}"},"assessment":{"check-your-understanding":"检查你的理解程度","success-message":"很棒,你回答了此教程的所有问题。","answer-number-is":"第 {index} 个答案","correct":"正确","incorrect":"错误","next-question":"下一个问题"},"project-files":"项目文件","estimated-time":"预计时间","sections":{"chapter":"第 {number} 章"},"question-of":"第 {index} 个问题(共 {total} 个)","section-of":"{number}/{total}","overriding-title":"{newTitle}{title}","time":{"format":"{number} {minutes}","minutes":{"full":"分钟 | {count} 分钟","short":"分钟"},"hours":{"full":"小时"}}},"documentation":{"title":"文档","nav":{"breadcrumbs":"面包屑导航","menu":"菜单","open-menu":"打开菜单","close-menu":"关闭菜单"},"current-page":"当前页面为:{title}","card":{"learn-more":"进一步了解","read-article":"阅读文章","start-tutorial":"开始教程","view-api":"查看 API 集合","view-symbol":"查看符号","view-sample-code":"查看示例代码"}},"aside-kind":{"beta":"Beta 版","experiment":"试验","important":"重要事项","note":"注","tip":"提示","warning":"警告","deprecated":"已弃用"},"change-type":{"added":"已添加","modified":"已修改","deprecated":"已弃用"},"verbs":{"hide":"隐藏","show":"显示","close":"关闭"},"sections":{"title":"第 {number} 部分","on-this-page":"在此页面上","topics":"主题","default-implementations":"默认实现","relationships":"关系","see-also":"另请参阅","declaration":"声明","details":"详细信息","parameters":"参数","possible-values":"可能值","parts":"部件","availability":"可用性","resources":"资源"},"metadata":{"details":{"name":"名称","key":"密钥","type":"类型"},"beta":{"legal":"此文档涉及 Beta 版软件且可能会改动。","software":"Beta 版软件"},"default-implementation":"提供默认实现。| 提供默认实现方法。"},"availability":{"introduced-and-deprecated":"{name} {introducedAt} 中引入,{name} {deprecatedAt} 中弃用","available-on":"{name} {introducedAt} 及更高版本中可用"},"more":"更多","less":"更少","api-reference":"API 参考","filter":{"title":"过滤","search-symbols":"在 {technology} 搜索符号","suggested-tags":"建议标签","selected-tags":"所选标签","add-tag":"添加标签","tag-select-remove":"标签。选择以从列表中移除。","navigate":"若要导航符号,请按下上箭头、下箭头、左箭头或右箭头。","siblings-label":"{parent-siblings} 内含 {number-siblings} 个符号(共 {total-siblings} 个)","parent-label":"{parent-siblings} 内含 {number-siblings} 个符号(共 {total-siblings} 个)包含一个符号 | {parent-siblings} 内含 {number-siblings} 个符号(共 {total-siblings} 个)包含 {number-parent} 个符号","reset-filter":"还原过滤条件"},"navigator":{"title":"文档导航器","open-navigator":"打开文档导航器","close-navigator":"关闭文档导航器","no-results":"未找到结果。","no-children":"无可用数据。","error-fetching":"获取数据时出错。","items-found":"未找到任何项目 | 找到 1 个项目 | 找到 {number} 个项目。按下 Tab 键导航。","navigator-is":"导航器{state}","state":{"loading":"正在载入","ready":"准备就绪"},"tags":{"hide-deprecated":"隐藏已弃用"}},"tab":{"request":"请求","response":"回复"},"required":"必需","parameters":{"default":"默认","minimum":"最小值","maximum":"最大值","possible-types":"类型 | 可能类型","possible-values":"值 | 可能值"},"content-type":"内容类型:{value}","read-only":"只读","error":{"unknown":"出现未知错误。","image":"图像无法载入"},"color-scheme":{"select":"选择首选颜色方案","auto":"自动","dark":"深色","light":"浅色"},"accessibility":{"strike":{"start":"删除线文本开始","end":"删除线文本结束"},"code":{"start":"代码块开头","end":"代码块结尾"},"skip-navigation":"跳过导航"},"select-language":"选择此页面的语言","icons":{"clear":"清除","web-service-endpoint":"网络服务端点","search":"搜索"},"formats":{"parenthesis":"({content})","colon":"{content}: "},"quicknav":{"button":{"label":"打开快速导航","title":"点按或键入 / 进行快速导航"}}}'),i=JSON.parse('{"view-in":"日本語で表示","continue-viewing":"日本語で表示を続ける","language":"言語","video":{"replay":"リプレイ","play":"再生","pause":"一時停止","watch":"概要のビデオを観る"},"tutorials":{"title":"チュートリアル | チュートリアル","step":"手順{number}","submit":"送信","next":"次へ","preview":{"title":"プレビューなし | プレビュー | プレビュー","no-preview-available-step":"この手順では利用可能なプレビューがありません。"},"nav":{"chapters":"章","current":"現在の{thing}"},"assessment":{"check-your-understanding":"理解度を確認する","success-message":"よくできました。このチュートリアルの問題にすべて回答しました。","answer-number-is":"問題番号{index}は","correct":"正解です","incorrect":"不正解です","next-question":"次の問題"},"project-files":"プロジェクトファイル","estimated-time":"予測時間","sections":{"chapter":"{number}章"},"question-of":"{total}問中の{index}問","section-of":"{total}件中の{number}件","overriding-title":"{title}の{newTitle}","time":{"format":"{number} {minutes}","minutes":{"full":"分 | 分 | {count}分","short":"分 | 分"},"hours":{"full":"時間 | 時間"}}},"documentation":{"title":"ドキュメント","nav":{"breadcrumbs":"パンくずリスト","menu":"メニュー","open-menu":"メニューを開く","close-menu":"メニューを閉じる"},"current-page":"現在のページは{title}です","card":{"learn-more":"詳しい情報","read-article":"記事を読む","start-tutorial":"チュートリアルを開始","view-api":"APIのコレクションを表示","view-symbol":"記号を表示","view-sample-code":"サンプルコードを表示"}},"aside-kind":{"beta":"ベータ版","experiment":"試験運用版","important":"重要","note":"注意","tip":"ヒント","warning":"警告","deprecated":"非推奨"},"change-type":{"added":"追加","modified":"変更","deprecated":"非推奨"},"verbs":{"hide":"非表示","show":"表示","close":"閉じる"},"sections":{"title":"セクション{number}","on-this-page":"このページの内容","topics":"トピック","default-implementations":"デフォルト実装","relationships":"関連項目","see-also":"参照","declaration":"宣言","details":"詳細","parameters":"パラメータ","possible-values":"使用できる値","parts":"パーツ","availability":"利用可能","resources":"リソース"},"metadata":{"details":{"name":"名前","key":"キー","type":"タイプ"},"beta":{"legal":"このドキュメントはベータ版のソフトウェアのもので、変更される可能性があります。","software":"ベータ版ソフトウェア"},"default-implementation":"デフォルト実装あり。| デフォルト実装あり。"},"availability":{"introduced-and-deprecated":"{name} {introducedAt}で導入され、{name} {deprecatedAt}で非推奨になりました","available-on":"{name} {introducedAt}以降で使用できます"},"more":"さらに表示","less":"表示を減らす","api-reference":"APIリファレンス","filter":{"title":"フィルタ","search-symbols":"{technology}でシンボルを検索","suggested-tags":"提案されたタグ | 提案されたタグ","selected-tags":"選択したタグ | 選択したタグ","add-tag":"タグを追加","tag-select-remove":"タグ。選択してリストから削除します。","navigate":"シンボルを移動するには、上下左右の矢印キーを押します。","siblings-label":"{total-siblings}個中{number-siblings}個のシンボルが{parent-siblings}の中にあります","parent-label":"{total-siblings}個中{number-siblings}個のシンボルが1個のシンボルを含む{parent-siblings}の中にあります | {total-siblings}個中{number-siblings}個のシンボルが{number-parent}個のシンボルを含む{parent-siblings}の中にあります","reset-filter":"フィルタをリセット"},"navigator":{"title":"ドキュメントナビゲータ","open-navigator":"ドキュメントナビゲータを開く","close-navigator":"ドキュメントナビゲータを閉じる","no-results":"結果が見つかりません。","no-children":"使用できるデータがありません。","error-fetching":"データを取得する際にエラーが起きました。","items-found":"項目が見つかりません | 1個の項目が見つかりました | {number}個の項目が見つかりましたTabキーを押すと項目をナビゲートできます。","navigator-is":"ナビゲータは{state}です","state":{"loading":"読み込み中","ready":"準備完了"},"tags":{"hide-deprecated":"非推奨の項目を非表示"}},"tab":{"request":"リクエスト","response":"レスポンス"},"required":"必須","parameters":{"default":"デフォルト","minimum":"最小","maximum":"最大","possible-types":"タイプ | 使用できるタイプ","possible-values":"値 | 使用できる値"},"content-type":"Content-Type: {value}","read-only":"読み出し専用","error":{"unknown":"原因不明のエラーが起きました。","image":"イメージを読み込めませんでした"},"color-scheme":{"select":"カラースキーム環境設定を選択","auto":"自動","dark":"ダーク","light":"ライト"},"accessibility":{"strike":{"start":"取り消し線テキストの開始","end":"取り消し線テキストの終了"},"code":{"start":"コードブロックの開始","end":"コードブロックの終了"},"skip-navigation":"ナビゲーションをスキップ"},"select-language":"このページの言語を選択","icons":{"clear":"消去","web-service-endpoint":"Webサービスのエンドポイント","search":"検索"},"formats":{"parenthesis":"({content})","colon":"{content}: "},"quicknav":{"button":{"label":"クイックナビゲーションを開く","title":"クリックするか「/」を入力すると素早く移動します"}}}');const a="en-US",s={"en-US":r,"zh-CN":o,"ja-JP":i}},4030:function(e,t,n){"use strict";var r=n(9804),o=n(1265),i=n(5394),a=n(2412);const s="undefined"!==typeof window.matchMedia&&[r.Z.light,r.Z.dark,"no-preference"].some((e=>window.matchMedia(`(prefers-color-scheme: ${e})`).matches)),c=s?r.Z.auto:r.Z.light;t["default"]={state:{imageLoadingStrategy:"ide"==={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET?o.Z.eager:o.Z.lazy,preferredColorScheme:i.Z.preferredColorScheme||c,preferredLocale:i.Z.preferredLocale,supportsAutoColorScheme:s,systemColorScheme:r.Z.light,availableLocales:[]},reset(){this.state.imageLoadingStrategy="ide"==={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET?o.Z.eager:o.Z.lazy,this.state.preferredColorScheme=i.Z.preferredColorScheme||c,this.state.supportsAutoColorScheme=s,this.state.systemColorScheme=r.Z.light},setImageLoadingStrategy(e){this.state.imageLoadingStrategy=e},setPreferredColorScheme(e){this.state.preferredColorScheme=e,i.Z.preferredColorScheme=e},setAllLocalesAreAvailable(){const e=a.map((e=>e.code));this.state.availableLocales=e},setAvailableLocales(e=[]){this.state.availableLocales=e},setPreferredLocale(e){this.state.preferredLocale=e,i.Z.preferredLocale=this.state.preferredLocale},setSystemColorScheme(e){this.state.systemColorScheme=e},syncPreferredColorScheme(){i.Z.preferredColorScheme&&i.Z.preferredColorScheme!==this.state.preferredColorScheme&&(this.state.preferredColorScheme=i.Z.preferredColorScheme)}}},5947:function(e,t,n){"use strict";function r(e){return e.reduce(((e,t)=>(t.traits.includes("dark")?e.dark.push(t):e.light.push(t),e)),{light:[],dark:[]})}function o(e){const t=["1x","2x","3x"];return t.reduce(((t,n)=>{const r=e.find((e=>e.traits.includes(n)));return r?t.concat({density:n,src:r.url,size:r.size}):t}),[])}function i(e){const t="/",n=new RegExp(`${t}+`,"g");return e.join(t).replace(n,t)}function a(e){const{baseUrl:t}=window,n=Array.isArray(e)?i(e):e;return n&&"string"===typeof n&&!n.startsWith(t)&&n.startsWith("/")?i([t,n]):n}function s(e){return e?e.startsWith("/")?e:`/${e}`:e}function c(e){return e?`url('${a(e)}')`:void 0}function l(e){return new Promise(((t,n)=>{const r=new Image;r.src=e,r.onerror=n,r.onload=()=>t({width:r.width,height:r.height})}))}n.d(t,{AH:function(){return a},Jf:function(){return s},RY:function(){return l},T8:function(){return d},XV:function(){return r},eZ:function(){return c},u:function(){return o}});const u={landscape:"landscape",portrait:"portrait",square:"square"};function d(e,t){return e&&t?et?u.landscape:u.square:null}},5381:function(e,t,n){"use strict";n.d(t,{L3:function(){return r},fr:function(){return s},kB:function(){return i},lU:function(){return o}});const r={large:"large",medium:"medium",small:"small"},o={default:"default",nav:"nav"},i={[o.default]:{[r.large]:{minWidth:1069,contentWidth:980},[r.medium]:{minWidth:736,maxWidth:1068,contentWidth:692},[r.small]:{minWidth:320,maxWidth:735,contentWidth:280}},[o.nav]:{[r.large]:{minWidth:1024},[r.medium]:{minWidth:768,maxWidth:1023},[r.small]:{minWidth:320,maxWidth:767}}},a={[r.small]:0,[r.medium]:1,[r.large]:2};function s(e,t){return a[e]>a[t]}},9030:function(e,t,n){"use strict";n.d(t,{KP:function(){return l},dZ:function(){return s},jk:function(){return u}});var r=n(2412),o=n(5559),i=n(3465);const a=r.reduce(((e,t)=>({...e,[t.slug]:t.code})),{});function s(e){return a[e]}function c(e){return!!a[e]}function l(e){return{params:{locale:e===o.defaultLocale?void 0:e}}}function u(e=o.defaultLocale,t={}){if(!c(e))return;t.$i18n.locale=e;const n=s(e);(0,i.e)(n)}},5657:function(e,t,n){"use strict";function r(e){let t=null,n=e-1;const r=new Promise((e=>{t=e}));return requestAnimationFrame((function e(){n-=1,n<=0?t():requestAnimationFrame(e)})),r}function o(e){return new Promise((t=>{setTimeout(t,e)}))}n.d(t,{J:function(){return r},X:function(){return o}})},3465:function(e,t,n){"use strict";n.d(t,{X:function(){return u},e:function(){return d}});var r=n(9089),o=n(2449);const i=(0,r.$8)(["meta","title"],"Documentation"),a=({title:e,description:t,url:n,currentLocale:r})=>[{name:"description",content:t},{property:"og:locale",content:r},{property:"og:site_name",content:i},{property:"og:type",content:"website"},{property:"og:title",content:e},{property:"og:description",content:t},{property:"og:url",content:n},{property:"og:image",content:(0,o.HH)("/developer-og.jpg")},{name:"twitter:image",content:(0,o.HH)("/developer-og-twitter.jpg")},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:description",content:t},{name:"twitter:title",content:e},{name:"twitter:url",content:n}],s=e=>[e,i].filter(Boolean).join(" | "),c=e=>{const{content:t}=e,n=e.property?"property":"name",r=e[n],o=document.querySelector(`meta[${n}="${r}"]`);if(o&&t)o.setAttribute("content",t);else if(o&&!t)o.remove();else if(t){const t=document.createElement("meta");t.setAttribute(n,e[n]),t.setAttribute("content",e.content),document.getElementsByTagName("head")[0].appendChild(t)}},l=e=>{document.title=e};function u({title:e,description:t,url:n,currentLocale:r}){const o=s(e);l(o),a({title:o,description:t,url:n,currentLocale:r}).forEach((e=>c(e)))}function d(e){document.querySelector("html").setAttribute("lang",e)}},5394:function(e,t,n){"use strict";var r=n(7247);const o={preferredColorScheme:"developer.setting.preferredColorScheme",preferredLocale:"developer.setting.preferredLocale",preferredLanguage:"docs.setting.preferredLanguage"},i={preferredColorScheme:"docs.setting.preferredColorScheme"};t["Z"]=Object.defineProperties({},Object.keys(o).reduce(((e,t)=>({...e,[t]:{get:()=>{const e=i[t],n=r.mr.getItem(o[t]);return e?n||r.mr.getItem(e):n},set:e=>r.mr.setItem(o[t],e)}})),{}))},7247:function(e,t,n){"use strict";n.d(t,{mr:function(){return a},tO:function(){return c},y7:function(){return l}});const r="developer.setting.";function o(e=localStorage){return{getItem:t=>{try{return e.getItem(t)}catch(n){return null}},setItem:(t,n)=>{try{e.setItem(t,n)}catch(r){}},removeItem:t=>{try{e.removeItem(t)}catch(n){}}}}function i(e){return{get:(t,n)=>{const o=JSON.parse(e.getItem(r+t));return null!==o?o:n},set:(t,n)=>e.setItem(r+t,JSON.stringify(n)),remove:t=>e.removeItem(r+t)}}const a=o(window.localStorage),s=o(window.sessionStorage),c=i(a),l=i(s)},3208:function(e,t,n){"use strict";n.d(t,{HA:function(){return a},RL:function(){return u},Xv:function(){return s},ZQ:function(){return d},hr:function(){return l},id:function(){return m},sj:function(){return c}});n(8269);const r=/(?:\s+|[`"<>])/g,o=/^-+/,i=/["'&<>]/g;function a(e){return e.trim().replace(r,"-").replace(o,"").toLowerCase()}function s(e){const t=e=>({'"':""","'":"'","&":"&","<":"<",">":">"}[e]||e);return e.replace(i,t)}function c(e){return e.replace(/#(.*)/,((e,t)=>`#${CSS.escape(t)}`))}function l(e){return e.replace(/[.*+\-?^${}()|[\]\\]/g,"\\$&")}function u(e){let t,n;const r="\\s*",o=" ",i=e.trim(),a=i.length;if(!a)return o;const s=[];for(t=0;te.json())).catch((()=>({})))}const c=(e,t)=>r(i,e,t)},2449:function(e,t,n){"use strict";n.d(t,{Lp:function(){return s},Q2:function(){return a},WN:function(){return c},Ex:function(){return i},HH:function(){return l}});var r=n(5947),o={input:"input",tags:"tags"};function i(e={}){return Object.entries(e).reduce(((e,[t,n])=>n?e.concat(`${encodeURIComponent(t)}=${encodeURIComponent(n)}`):e),[]).join("&")}function a(e,{changes:t,language:n,context:r}={}){const[o,a]=e.split("#"),s=o.match(/\?.*/),c=i({changes:t,language:n,context:r}),l=s?"&":"?",u=a?o:e,d=c?`${l}${c}`:"",m=a?`#${a}`:"";return`${u}${d}${m}`}function s(e,t){const{query:{changes:n,[o.input]:r,[o.tags]:i,...a}={}}=e,{query:{changes:s,[o.input]:c,[o.tags]:l,...u}={}}=t;return e.name===t.name&&JSON.stringify({path:e.path,query:a})===JSON.stringify({path:t.path,query:u})}function c(e,t=window.location.href){return new URL((0,r.AH)(e),t)}function l(e,t){return c(e,t).href}},647:function(e,t,n){n.p=window.baseUrl},2412:function(e){"use strict";e.exports=JSON.parse('[{"code":"en-US","name":"English","slug":"en-US"},{"code":"zh-CN","name":"简体中文","slug":"zh-CN"},{"code":"ja-JP","name":"日本語","slug":"ja-JP"}]')}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}n.m=e,function(){var e=[];n.O=function(t,r,o,i){if(!r){var a=1/0;for(u=0;u=i)&&Object.keys(n.O).every((function(e){return n.O[e](r[c])}))?r.splice(c--,1):(s=!1,i0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[r,o,i]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){var e,t=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};n.t=function(r,o){if(1&o&&(r=this(r)),8&o)return r;if("object"===typeof r&&r){if(4&o&&r.__esModule)return r;if(16&o&&"function"===typeof r.then)return r}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&r;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((function(e){a[e]=function(){return r[e]}}));return a["default"]=function(){return r},n.d(i,a),i}}(),function(){n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}}(),function(){n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))}}(),function(){n.u=function(e){return"js/"+({82:"highlight-js-json-js",113:"highlight-js-markdown-js",133:"highlight-js-llvm-js",162:"topic",176:"highlight-js-shell-js",213:"highlight-js-diff-js",217:"highlight-js-custom-swift",392:"highlight-js-scss-js",393:"highlight-js-bash-js",435:"highlight-js-python-js",490:"highlight-js-xml-js",527:"highlight-js-swift-js",546:"highlight-js-c-js",596:"highlight-js-php-js",621:"highlight-js-cpp-js",623:"highlight-js-ruby-js",637:"highlight-js-objectivec-js",642:"highlight-js-custom-markdown",645:"highlight-js-perl-js",788:"highlight-js-java-js",814:"highlight-js-javascript-js",843:"tutorials-overview",864:"highlight-js-css-js",878:"highlight-js-http-js",982:"documentation-topic"}[e]||e)+"."+{37:"3cabdf6d",82:"2a1856ba",113:"a2f456af",133:"26121771",162:"2687cdff",176:"0ad5b20f",213:"4db9a783",217:"738731d1",337:"274a8ccc",392:"adcd11a2",393:"702f0c5c",435:"60354774",490:"0d78f903",523:"3af1b2ef",527:"bdd5bff5",546:"063069d3",596:"c458ffa4",621:"458a9ae4",623:"7272231f",637:"74dea052",642:"78c9f6ed",645:"da6eda82",675:"1d13263d",788:"4fe21e94",814:"dfc9d16d",843:"2eff1231",864:"bfc4251f",878:"f78e83c2",903:"b3710a74",982:"f9ef3692"}[e]+".js"}}(),function(){n.miniCssF=function(e){return"css/"+({162:"topic",843:"tutorials-overview",982:"documentation-topic"}[e]||e)+"."+{162:"672a9049",523:"e9a069b0",675:"40c3bcb2",843:"6eb589ed",982:"b186e79f"}[e]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="swift-docc-render:";n.l=function(r,o,i,a){if(e[r])e[r].push(o);else{var s,c;if(void 0!==i)for(var l=document.getElementsByTagName("script"),u=0;ue||(0,i.$8)(["theme","icons",t],void 0)}},s=a,l=n(1001),c=(0,l.Z)(s,r,o,!1,null,"3434f4d2",null),u=c.exports},686:function(e,t,n){"use strict";n(647);var r=n(144),o=n(7152),i=n(8345),a=function(){var e=this,t=e._self._c;return t("div",{class:{fromkeyboard:e.fromKeyboard,hascustomheader:e.hasCustomHeader},attrs:{id:"app"}},[t("div",{attrs:{id:e.AppTopID}}),e.isTargetIDE?e._e():t("a",{attrs:{href:"#app-main",id:"skip-nav"}},[e._v(" "+e._s(e.$t("accessibility.skip-navigation"))+" ")]),e._t("header",(function(){return[e.enablei18n?t("SuggestLang"):e._e(),e.hasCustomHeader?t("custom-header",{attrs:{"data-color-scheme":e.preferredColorScheme}}):e._e()]}),{isTargetIDE:e.isTargetIDE}),t("div",{attrs:{id:e.baseNavStickyAnchorId}}),t("InitialLoadingPlaceholder"),e._t("default",(function(){return[t("router-view",{staticClass:"router-content"}),e.hasCustomFooter?t("custom-footer",{attrs:{"data-color-scheme":e.preferredColorScheme}}):e.isTargetIDE?e._e():t("Footer",{scopedSlots:e._u([{key:"default",fn:function({className:n}){return[e.enablei18n?t("div",{class:n},[t("LocaleSelector")],1):e._e()]}}])})]}),{isTargetIDE:e.isTargetIDE}),e._t("footer",null,{isTargetIDE:e.isTargetIDE})],2)},s=[],l=n(4030),c=n(9804),u=function(){var e=this,t=e._self._c;return t("footer",{staticClass:"footer"},[t("div",{staticClass:"row"},[t("ColorSchemeToggle")],1),e._t("default",null,{className:"row"})],2)},d=[],m=function(){var e=this,t=e._self._c;return t("fieldset",{staticClass:"color-scheme-toggle",attrs:{role:"radiogroup"}},[t("legend",{staticClass:"visuallyhidden"},[e._v(e._s(e.$t("color-scheme.select")))]),e._l(e.options,(function(n){return t("label",{key:n},[t("input",{attrs:{type:"radio"},domProps:{checked:n==e.preferredColorScheme,value:n},on:{input:e.setPreferredColorScheme}}),t("div",{staticClass:"text"},[e._v(e._s(e.$t(`color-scheme.${n}`)))])])}))],2)},p=[],h={name:"ColorSchemeToggle",data:()=>({appState:l["default"].state}),computed:{options:({supportsAutoColorScheme:e})=>[c.Z.light,c.Z.dark,...e?[c.Z.auto]:[]],preferredColorScheme:({appState:e})=>e.preferredColorScheme,supportsAutoColorScheme:({appState:e})=>e.supportsAutoColorScheme},methods:{setPreferredColorScheme:e=>{l["default"].setPreferredColorScheme(e.target.value)}},watch:{preferredColorScheme:{immediate:!0,handler(e){document.body.dataset.colorScheme=e}}}},f=h,g=n(1001),v=(0,g.Z)(f,m,p,!1,null,"0c0360ce",null),b=v.exports,w={name:"Footer",components:{ColorSchemeToggle:b}},y=w,S=(0,g.Z)(y,u,d,!1,null,"f1d65b2a",null),C=S.exports,_=function(){var e=this,t=e._self._c;return e.loaded?e._e():t("div",{staticClass:"InitialLoadingPlaceholder",attrs:{id:"loading-placeholder"}})},E=[],A={name:"InitialLoadingPlaceholder",data(){return{loaded:!1}},created(){const e=()=>{this.loaded=!0};this.$router.onReady(e,e)}},k=A,P=(0,g.Z)(k,_,E,!1,null,"35c356b6",null),L=P.exports,T=n(1716),j=n(9089);function x(e,t){return e&&"object"===typeof e&&Object.prototype.hasOwnProperty.call(e,t)&&"string"===typeof e[t]}function I(e,t,n,r){if(!t||"object"!==typeof t||r&&(x(t,"light")||x(t,"dark"))){let o=t;if(x(t,r)&&(o=t[r]),"object"===typeof o)return;n[e]=o}else Object.entries(t).forEach((([t,o])=>{const i=[e,t].join("-");I(i,o,n,r)}))}function N(e,t="light"){const n={},r=e||{};return I("-",r,n,t),n}var $=n(2717),O=function(){var e=this,t=e._self._c;return e.displaySuggestLang?t("div",{staticClass:"suggest-lang"},[t("div",{staticClass:"suggest-lang__wrapper"},[t("router-link",{staticClass:"suggest-lang__link",attrs:{to:e.getLocaleParam(e.preferredLocale),lang:e.getCodeForSlug(e.preferredLocale)},nativeOn:{click:function(t){return e.setPreferredLocale(e.preferredLocale)}}},[e._v(e._s(e.$i18n.messages[e.preferredLocale]["view-in"])),t("InlineChevronRightIcon",{staticClass:"icon-inline"})],1),t("div",{staticClass:"suggest-lang__close-icon-wrapper"},[t("button",{staticClass:"suggest-lang__close-icon-button",attrs:{"aria-label":e.$t("continue-viewing")},on:{click:function(t){return e.setPreferredLocale(e.$i18n.locale)}}},[t("CloseIcon",{staticClass:"icon-inline"})],1)])],1)]):e._e()},R=[],D=n(8785),Z=n(1970),q=n(2412),U=n(9030),V={name:"SuggestLang",components:{InlineChevronRightIcon:D.Z,CloseIcon:Z.Z},computed:{preferredLocale:()=>{const e=l["default"].state.preferredLocale;if(e)return e;const t=q.find((e=>{const t=e.code.split("-")[0],n=window.navigator.language.split("-")[0];return n===t}));return t?t.slug:null},displaySuggestLang:({preferredLocale:e,$i18n:t})=>e&&t.locale!==e},methods:{setPreferredLocale:e=>{l["default"].setPreferredLocale(e)},getCodeForSlug:U.dZ,getLocaleParam:U.KP}},B=V,M=(0,g.Z)(B,O,R,!1,null,"c2dca0ae",null),H=M.exports,W=function(){var e=this,t=e._self._c;return t("div",{staticClass:"locale-selector"},[t("select",{attrs:{"aria-label":e.$t("select-language")},domProps:{value:e.$i18n.locale},on:{change:e.updateRouter}},e._l(e.locales,(function({slug:n,name:r,code:o}){return t("option",{key:n,attrs:{lang:o},domProps:{value:n}},[e._v(" "+e._s(r)+" ")])})),0),t("ChevronThickIcon",{staticClass:"icon-inline"})],1)},F=[],J=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"chevron-thick-icon",attrs:{viewBox:"0 0 14 10.5",themeId:"chevron-thick"}},[t("path",{attrs:{d:"M12.43,0l1.57,1.22L7,10.5,0,1.23,1.58,0,7,7,12.43,0Z"}})])},K=[],G=n(9742),z={name:"ChevronThickIcon",components:{SVGIcon:G.Z}},X=z,Y=(0,g.Z)(X,J,K,!1,null,null,null),Q=Y.exports,ee={name:"LocaleSelector",components:{ChevronThickIcon:Q},methods:{updateRouter({target:{value:e}}){this.$router.push((0,U.KP)(e)),l["default"].setPreferredLocale(e),(0,U.jk)(e,this)}},computed:{availableLocales:()=>l["default"].state.availableLocales,locales:({availableLocales:e})=>q.filter((({code:t})=>e.includes(t)))}},te=ee,ne=(0,g.Z)(te,W,F,!1,null,"d21858a2",null),re=ne.exports,oe={name:"CoreApp",components:{Footer:C,InitialLoadingPlaceholder:L,SuggestLang:H,LocaleSelector:re},provide(){return{isTargetIDE:this.isTargetIDE,performanceMetricsEnabled:"true"==={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_PERFORMANCE_ENABLED}},data(){return{AppTopID:$.$,appState:l["default"].state,fromKeyboard:!1,isTargetIDE:"ide"==={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET,themeSettings:j.S3,baseNavStickyAnchorId:T.EA}},computed:{currentColorScheme:({appState:e})=>e.systemColorScheme,preferredColorScheme:({appState:e})=>e.preferredColorScheme,availableLocales:({appState:e})=>e.availableLocales,CSSCustomProperties:({currentColorScheme:e,preferredColorScheme:t,themeSettings:n})=>N(n.theme,t===c.Z.auto?e:t),hasCustomHeader:()=>!!window.customElements.get("custom-header"),hasCustomFooter:()=>!!window.customElements.get("custom-footer"),enablei18n:({availableLocales:e})=>(0,j.$8)(["features","docs","i18n","enable"],!1)&&e.length>1},props:{enableThemeSettings:{type:Boolean,default:!0}},watch:{CSSCustomProperties:{immediate:!0,handler(e){this.detachStylesFromRoot(e),this.attachStylesToRoot(e)}}},async created(){window.addEventListener("keydown",this.onKeyDown),this.$bridge.on("navigation",this.handleNavigationRequest),this.enableThemeSettings&&Object.assign(this.themeSettings,await(0,j.Kx)()),window.addEventListener("pageshow",this.syncPreferredColorScheme),this.$once("hook:beforeDestroy",(()=>{window.removeEventListener("pageshow",this.syncPreferredColorScheme)}))},mounted(){(document.querySelector(".footer-current-year")||{}).innerText=(new Date).getFullYear(),this.attachColorSchemeListeners()},beforeDestroy(){this.fromKeyboard?window.removeEventListener("mousedown",this.onMouseDown):window.removeEventListener("keydown",this.onKeyDown),this.$bridge.off("navigation",this.handleNavigationRequest),this.detachStylesFromRoot(this.CSSCustomProperties)},methods:{onKeyDown(){this.fromKeyboard=!0,window.addEventListener("mousedown",this.onMouseDown),window.removeEventListener("keydown",this.onKeyDown)},onMouseDown(){this.fromKeyboard=!1,window.addEventListener("keydown",this.onKeyDown),window.removeEventListener("mousedown",this.onMouseDown)},handleNavigationRequest(e){this.$router.push(e)},attachColorSchemeListeners(){if(!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)");e.addListener(this.onColorSchemePreferenceChange),this.$once("hook:beforeDestroy",(()=>{e.removeListener(this.onColorSchemePreferenceChange)})),this.onColorSchemePreferenceChange(e)},onColorSchemePreferenceChange({matches:e}){const t=e?c.Z.dark:c.Z.light;l["default"].setSystemColorScheme(t)},attachStylesToRoot(e){const t=document.body;Object.entries(e).filter((([,e])=>Boolean(e))).forEach((([e,n])=>{t.style.setProperty(e,n)}))},detachStylesFromRoot(e){const t=document.body;Object.entries(e).forEach((([e])=>{t.style.removeProperty(e)}))},syncPreferredColorScheme(){l["default"].syncPreferredColorScheme()}}},ie=oe,ae=(0,g.Z)(ie,a,s,!1,null,"1fc6db09",null),se=ae.exports;class le{constructor(){this.$send=()=>{}}send(e){this.$send(e)}}class ce{constructor(){const{webkit:{messageHandlers:{bridge:e={}}={}}={}}=window;this.bridge=e;const{postMessage:t=(()=>{})}=e;this.$send=t.bind(e)}send(e){this.$send(e)}}class ue{constructor(e=new le){this.backend=e,this.listeners={}}send(e){this.backend.send(e)}receive(e){this.emit(e.type,e.data)}emit(e,t){this.listeners[e]&&this.listeners[e].forEach((e=>e(t)))}on(e,t){this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t)}off(e,t){this.listeners[e]&&this.listeners[e].delete(t)}}var de={install(e,t){let n;n=t.performanceMetricsEnabled||"ide"===t.appTarget?new ce:new le,e.prototype.$bridge=new ue(n)}};function me(e){return`custom-${e}`}function pe(e){return class extends HTMLElement{constructor(){super();const t=this.attachShadow({mode:"open"}),n=e.content.cloneNode(!0);t.appendChild(n)}}}function he(e){const t=me(e),n=document.getElementById(t);n&&window.customElements.define(t,pe(n))}function fe(e,t={names:["header","footer"]}){const{names:n}=t;e.config.ignoredElements=/^custom-/,n.forEach(he)}function ge(e,t){const{value:n=!1}=t;e.style.display=n?"none":""}var ve={hide:ge};function be(e,{performanceMetrics:t=!1}={}){e.config.productionTip=!1,e.use(fe),e.directive("hide",ve.hide),e.use(de,{appTarget:{NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET,performanceMetricsEnabled:t}),window.bridge=e.prototype.$bridge,e.config.performance=t}var we=n(4589),ye=n(5381),Se=n(5657),Ce=n(3208),_e=n(2449);const Ee=10;function Ae(e){const{name:t}=e,n=t.includes(we.J_);return n?Ee:0}function ke(){const{location:e}=window;return e.pathname+e.search+e.hash}function Pe(){const e=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0);return ePromise.all([n.e(866),n.e(843)]).then(n.bind(n,578))},{path:"/tutorials/:id/*",name:"topic",component:()=>Promise.all([n.e(866),n.e(842),n.e(162)]).then(n.bind(n,2726))},{path:"/documentation*",name:we.J_,component:()=>Promise.all([n.e(866),n.e(104),n.e(842),n.e(982)]).then(n.bind(n,5073))},{path:"*",name:we.vL,component:Ke},{path:"*",name:we.Rp,component:Be}];const ze=[{pathPrefix:"/:locale?",nameSuffix:"-locale"}];function Xe(e,t=[],n=ze){return n.reduce(((n,r)=>n.concat(e.filter((e=>!t.includes(e.name))).map((e=>({...e,path:r.pathPrefix+e.path,name:e.name+r.nameSuffix}))))),[])}const Ye=[...Ge,...Xe(Ge,[we.vL,we.Rp])];function Qe(e={}){const t=new i.Z({mode:"history",base:j.FH,scrollBehavior:Le,...e,routes:e.routes||Ye});return t.onReady((()=>{"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual"),Te()})),"ide"!=={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET&&t.onError((e=>{const{route:n={path:"/"}}=e;t.replace({name:"server-error",params:[n.path]})})),window.addEventListener("unload",je),t}var et=n(7788);function tt(e=et){const{defaultLocale:t,messages:n,dateTimeFormats:r={}}=e,i=new o.Z({dateTimeFormats:r,locale:t,fallbackLocale:t,messages:n});return i}r["default"].use(be),r["default"].use(i.Z),r["default"].use(o.Z),document.documentElement.classList.remove("no-js"),new r["default"]({router:Qe(),render:e=>e(se),i18n:tt()}).$mount("#app")},2717:function(e,t,n){"use strict";n.d(t,{$:function(){return r}});const r="app-top"},9804:function(e,t){"use strict";t["Z"]={auto:"auto",dark:"dark",light:"light"}},1265:function(e,t){"use strict";t["Z"]={eager:"eager",lazy:"lazy"}},1716:function(e,t,n){"use strict";n.d(t,{EA:function(){return i},L$:function(){return o},MenuLinkModifierClasses:function(){return s},RS:function(){return r},Yj:function(){return a}});const r=52,o=48,i="nav-sticky-anchor",a="nav-open-navigator",s={noClose:"noclose"}},4589:function(e,t,n){"use strict";n.d(t,{J_:function(){return i},Rp:function(){return o},vL:function(){return r}});const r="not-found",o="server-error",i="documentation-topic"},7788:function(e,t,n){"use strict";n.r(t),n.d(t,{defaultLocale:function(){return s},messages:function(){return l}});var r=JSON.parse('{"view-in":"View in English","continue-viewing":"Continue viewing in English","language":"Language","video":{"title":"Video","replay":"Replay","play":"Play","pause":"Pause","watch":"Watch intro video","description":"Content description: {alt}","custom-controls":"Video with custom controls."},"tutorials":{"title":"Tutorial | Tutorials","step":"Step {number}","submit":"Submit","next":"Next","preview":{"title":"No Preview | Preview | Previews","no-preview-available-step":"No preview available for this step."},"nav":{"chapters":"Chapters","current":"Current {thing}"},"assessment":{"check-your-understanding":"Check Your Understanding","success-message":"Great job, you\'ve answered all the questions for this tutorial.","answer-result":"Answer {answer} is {result}","correct":"correct","incorrect":"incorrect","next-question":"Next question","legend":"Possible answers"},"project-files":"Project files","estimated-time":"Estimated Time","sections":{"chapter":"Chapter {number}"},"question-of":"Question {index} of {total}","section-of":"{number} of {total}","overriding-title":"{newTitle} with {title}","time":{"format":"{number} {minutes}","minutes":{"full":"minute | minutes | {count} minutes","short":"min | mins"},"hours":{"full":"hour | hours"}}},"documentation":{"title":"Documentation","nav":{"breadcrumbs":"Breadcrumbs","menu":"Menu","open-menu":"Open Menu","close-menu":"Close Menu"},"current-page":"Current page is {title}","card":{"learn-more":"Learn More","read-article":"Read article","start-tutorial":"Start tutorial","view-api":"View API collection","view-symbol":"View symbol","view-sample-code":"View sample code"},"view-more":"View more"},"declarations":{"hide-other-declarations":"Hide other declarations","show-all-declarations":"Show all declarations"},"aside-kind":{"beta":"Beta","experiment":"Experiment","important":"Important","note":"Note","tip":"Tip","warning":"Warning","deprecated":"Deprecated"},"change-type":{"added":"Added","modified":"Modified","deprecated":"Deprecated"},"verbs":{"hide":"Hide","show":"Show","close":"Close"},"sections":{"attributes":"Attributes","title":"Section {number}","on-this-page":"On this page","topics":"Topics","default-implementations":"Default Implementations","relationships":"Relationships","see-also":"See Also","declaration":"Declaration","details":"Details","parameters":"Parameters","possible-values":"Possible Values","parts":"Parts","availability":"Availability","resources":"Resources"},"metadata":{"details":{"name":"Name","key":"Key","type":"Type"},"beta":{"legal":"This documentation refers to beta software and may be changed.","software":"Beta Software"},"default-implementation":"Default implementation provided. | Default implementations provided."},"availability":{"introduced-and-deprecated":"Introduced in {name} {introducedAt} and deprecated in {name} {deprecatedAt}","available-on":"Available on {name} {introducedAt} and later"},"more":"More","less":"Less","api-reference":"API Reference","filter":{"title":"Filter","search":"Search","search-symbols":"Search symbols in {technology}","suggested-tags":"Suggested tag | Suggested tags","selected-tags":"Selected tag | Selected tags","add-tag":"Add tag","tag-select-remove":"Tag. Select to remove from list.","navigate":"To navigate the symbols, press Up Arrow, Down Arrow, Left Arrow or Right Arrow","siblings-label":"{number-siblings} of {total-siblings} symbols inside {parent-siblings}","parent-label":"{number-siblings} of {total-siblings} symbols inside {parent-siblings} containing one symbol | {number-siblings} of {total-siblings} symbols inside {parent-siblings} containing {number-parent} symbols","reset-filter":"Reset Filter","tags":{"sample-code":"Sample Code","tutorials":"Tutorials","articles":"Articles","web-service-endpoints":"Web Service Endpoints","hide-deprecated":"Hide Deprecated"}},"navigator":{"title":"Documentation Navigator","open-navigator":"Open Documentation Navigator","close-navigator":"Close Documentation Navigator","no-results":"No results found.","no-children":"No data available.","error-fetching":"There was an error fetching the data.","items-found":"No items were found | 1 item was found | {number} items were found. Tab back to navigate through them.","navigator-is":"Navigator is {state}","state":{"loading":"loading","ready":"ready"}},"tab":{"request":"Request","response":"Response"},"required":"Required","parameters":{"default":"Default","minimum":"Minimum","maximum":"Maximum","possible-types":"Type | Possible types","possible-values":"Value | Possible Values"},"content-type":"Content-Type: {value}","read-only":"Read-only","error":{"unknown":"An unknown error occurred.","image":"Image failed to load","not-found":"The page you\'re looking for can\'t be found."},"color-scheme":{"select":"Select a color scheme preference","auto":"Auto","dark":"Dark","light":"Light"},"accessibility":{"strike":{"start":"start of stricken text","end":"end of stricken text"},"code":{"start":"start of code block","end":"end of code block"},"skip-navigation":"Skip Navigation","in-page-link":"in page link"},"select-language":"Select the language for this page","icons":{"clear":"Clear","web-service-endpoint":"Web Service Endpoint","search":"Search"},"formats":{"parenthesis":"({content})","colon":"{content}: "},"quicknav":{"button":{"label":"Open Quick Navigation","title":"Click or type / for quick navigation"},"preview-unavailable":"Preview unavailable"},"mentioned-in":"Mentioned in","pager":{"roledescription":"content slider","page":{"label":"content page {index} of {count}"},"control":{"navigate-previous":"navigate to previous page of content","navigate-next":"navigate to next page of content"}},"links-grid":{"label":"grid of links"}}'),o=JSON.parse('{"view-in":"以中文查看","continue-viewing":"继续以中文查看","language":"语言","video":{"title":"视频","replay":"重新播放","play":"播放","pause":"暂停","watch":"观看介绍视频","description":"此视频的内容描述:{alt}","custom-controls":"可用自定义控件如下"},"tutorials":{"title":"教程","step":"第 {number} 步","submit":"提交","next":"下一步","preview":{"title":"无预览 | 预览","no-preview-available-step":"这一步没有预览。"},"nav":{"chapters":"章节","current":"当前{thing}"},"assessment":{"check-your-understanding":"检查你的理解程度","success-message":"很棒,你回答了此教程的所有问题。","answer-result":"答案 {answer} 是 {result}","correct":"正确","incorrect":"错误","next-question":"下一个问题","legend":"可能的答案"},"project-files":"项目文件","estimated-time":"预计时间","sections":{"chapter":"第 {number} 章"},"question-of":"第 {index} 个问题(共 {total} 个)","section-of":"{number}/{total}","overriding-title":"{newTitle}{title}","time":{"format":"{number} {minutes}","minutes":{"full":"分钟 | {count} 分钟","short":"分钟"},"hours":{"full":"小时"}}},"documentation":{"title":"文档","nav":{"breadcrumbs":"面包屑导航","menu":"菜单","open-menu":"打开菜单","close-menu":"关闭菜单"},"current-page":"当前页面为:{title}","card":{"learn-more":"进一步了解","read-article":"阅读文章","start-tutorial":"开始教程","view-api":"查看 API 集合","view-symbol":"查看符号","view-sample-code":"查看示例代码"},"view-more":"查看更多"},"declarations":{"hide-other-declarations":"隐藏其他声明","show-all-declarations":"显示所有声明"},"aside-kind":{"beta":"Beta 版","experiment":"试验","important":"重要事项","note":"注","tip":"提示","warning":"警告","deprecated":"已弃用"},"change-type":{"added":"已添加","modified":"已修改","deprecated":"已弃用"},"verbs":{"hide":"隐藏","show":"显示","close":"关闭"},"sections":{"title":"第 {number} 部分","on-this-page":"在此页面上","topics":"主题","default-implementations":"默认实现","relationships":"关系","see-also":"另请参阅","declaration":"声明","details":"详细信息","parameters":"参数","possible-values":"可能值","parts":"部件","availability":"可用性","resources":"资源"},"metadata":{"details":{"name":"名称","key":"密钥","type":"类型"},"beta":{"legal":"此文档涉及 Beta 版软件且可能会改动。","software":"Beta 版软件"},"default-implementation":"提供默认实现。| 提供默认实现方法。"},"availability":{"introduced-and-deprecated":"{name} {introducedAt} 中引入,{name} {deprecatedAt} 中弃用","available-on":"{name} {introducedAt} 及更高版本中可用"},"more":"更多","less":"更少","api-reference":"API 参考","filter":{"title":"过滤","search":"搜索","search-symbols":"在 {technology} 搜索符号","suggested-tags":"建议标签","selected-tags":"所选标签","add-tag":"添加标签","tag-select-remove":"标签。选择以从列表中移除。","navigate":"若要导航符号,请按下上箭头、下箭头、左箭头或右箭头。","siblings-label":"{parent-siblings} 内含 {number-siblings} 个符号(共 {total-siblings} 个)","parent-label":"{parent-siblings} 内含 {number-siblings} 个符号(共 {total-siblings} 个)包含一个符号 | {parent-siblings} 内含 {number-siblings} 个符号(共 {total-siblings} 个)包含 {number-parent} 个符号","reset-filter":"还原过滤条件","tags":{"sample-code":"示例代码","tutorials":"教程","articles":"文章","web-service-endpoints":"网络服务端点","hide-deprecated":"隐藏已弃用"}},"navigator":{"title":"文档导航器","open-navigator":"打开文档导航器","close-navigator":"关闭文档导航器","no-results":"未找到结果。","no-children":"无可用数据。","error-fetching":"获取数据时出错。","items-found":"未找到任何项目 | 找到 1 个项目 | 找到 {number} 个项目。按下 Tab 键导航。","navigator-is":"导航器{state}","state":{"loading":"正在载入","ready":"准备就绪"}},"tab":{"request":"请求","response":"回复"},"required":"必需","parameters":{"default":"默认","minimum":"最小值","maximum":"最大值","possible-types":"类型 | 可能类型","possible-values":"值 | 可能值"},"content-type":"内容类型:{value}","read-only":"只读","error":{"unknown":"出现未知错误。","image":"图像无法载入","not-found":"找不到你所查找的页面。"},"color-scheme":{"select":"选择首选颜色方案","auto":"自动","dark":"深色","light":"浅色"},"accessibility":{"strike":{"start":"删除线文本开始","end":"删除线文本结束"},"code":{"start":"代码块开头","end":"代码块结尾"},"skip-navigation":"跳过导航","in-page-link":"在页面链接中"},"select-language":"选择此页面的语言","icons":{"clear":"清除","web-service-endpoint":"网络服务端点","search":"搜索"},"formats":{"parenthesis":"({content})","colon":"{content}: "},"quicknav":{"button":{"label":"打开快速导航","title":"点按或键入 / 进行快速导航"},"preview-unavailable":"预览不可用"},"mentioned-in":"提及于","pager":{"roledescription":"内容滑块","page":{"label":"第 {index}/{count} 个内容页面"},"control":{"navigate-previous":"导览至上个内容页面","navigate-next":"导览至下个内容页面"}},"links-grid":{"label":"链接网格"}}'),i=JSON.parse('{"view-in":"日本語で表示","continue-viewing":"日本語で表示を続ける","language":"言語","video":{"title":"ビデオ","replay":"リプレイ","play":"再生","pause":"一時停止","watch":"概要のビデオを観る","description":"このビデオコンテンツの説明: {alt}","custom-controls":"以下のカスタムコントロールを使用できます"},"tutorials":{"title":"チュートリアル | チュートリアル","step":"手順{number}","submit":"送信","next":"次へ","preview":{"title":"プレビューなし | プレビュー | プレビュー","no-preview-available-step":"この手順では利用可能なプレビューがありません。"},"nav":{"chapters":"章","current":"現在の{thing}"},"assessment":{"check-your-understanding":"理解度を確認する","success-message":"よくできました。このチュートリアルの問題にすべて解答しました。","answer-result":"解答{answer}は{result}です","correct":"正解","incorrect":"不正解","next-question":"次の問題","legend":"解答例"},"project-files":"プロジェクトファイル","estimated-time":"予測時間","sections":{"chapter":"{number}章"},"question-of":"{total}問中の{index}問","section-of":"{total}件中の{number}件","overriding-title":"{title}の{newTitle}","time":{"format":"{number} {minutes}","minutes":{"full":"分 | 分 | {count}分","short":"分 | 分"},"hours":{"full":"時間 | 時間"}}},"documentation":{"title":"ドキュメント","nav":{"breadcrumbs":"パンくずリスト","menu":"メニュー","open-menu":"メニューを開く","close-menu":"メニューを閉じる"},"current-page":"現在のページは{title}です","card":{"learn-more":"詳しい情報","read-article":"記事を読む","start-tutorial":"チュートリアルを開始","view-api":"APIのコレクションを表示","view-symbol":"記号を表示","view-sample-code":"サンプルコードを表示"},"view-more":"さらに表示"},"declarations":{"hide-other-declarations":"ほかの宣言を非表示","show-all-declarations":"すべての宣言を表示"},"aside-kind":{"beta":"ベータ版","experiment":"試験運用版","important":"重要","note":"注意","tip":"ヒント","warning":"警告","deprecated":"非推奨"},"change-type":{"added":"追加","modified":"変更","deprecated":"非推奨"},"verbs":{"hide":"非表示","show":"表示","close":"閉じる"},"sections":{"title":"セクション{number}","on-this-page":"このページの内容","topics":"トピック","default-implementations":"デフォルト実装","relationships":"関連項目","see-also":"参照","declaration":"宣言","details":"詳細","parameters":"パラメータ","possible-values":"使用できる値","parts":"パーツ","availability":"利用可能","resources":"リソース"},"metadata":{"details":{"name":"名前","key":"キー","type":"タイプ"},"beta":{"legal":"このドキュメントはベータ版のソフトウェアのもので、変更される可能性があります。","software":"ベータ版ソフトウェア"},"default-implementation":"デフォルト実装あり。| デフォルト実装あり。"},"availability":{"introduced-and-deprecated":"{name} {introducedAt}で導入され、{name} {deprecatedAt}で非推奨になりました","available-on":"{name} {introducedAt}以降で使用できます"},"more":"さらに表示","less":"表示を減らす","api-reference":"APIリファレンス","filter":{"title":"フィルタ","search":"検索","search-symbols":"{technology}でシンボルを検索","suggested-tags":"提案されたタグ | 提案されたタグ","selected-tags":"選択したタグ | 選択したタグ","add-tag":"タグを追加","tag-select-remove":"タグ。選択してリストから削除します。","navigate":"シンボルを移動するには、上下左右の矢印キーを押します。","siblings-label":"{total-siblings}個中{number-siblings}個のシンボルが{parent-siblings}の中にあります","parent-label":"{total-siblings}個中{number-siblings}個のシンボルが1個のシンボルを含む{parent-siblings}の中にあります | {total-siblings}個中{number-siblings}個のシンボルが{number-parent}個のシンボルを含む{parent-siblings}の中にあります","reset-filter":"フィルタをリセット","tags":{"sample-code":"サンプルコード","tutorials":"チュートリアル","articles":"記事","web-service-endpoints":"Webサービスのエンドポイント","hide-deprecated":"非推奨の項目を非表示"}},"navigator":{"title":"ドキュメントナビゲータ","open-navigator":"ドキュメントナビゲータを開く","close-navigator":"ドキュメントナビゲータを閉じる","no-results":"結果が見つかりません。","no-children":"使用できるデータがありません。","error-fetching":"データを取得する際にエラーが起きました。","items-found":"項目が見つかりません | 1個の項目が見つかりました | {number}個の項目が見つかりましたTabキーを押すと項目をナビゲートできます。","navigator-is":"ナビゲータは{state}です","state":{"loading":"読み込み中","ready":"準備完了"}},"tab":{"request":"リクエスト","response":"レスポンス"},"required":"必須","parameters":{"default":"デフォルト","minimum":"最小","maximum":"最大","possible-types":"タイプ | 使用できるタイプ","possible-values":"値 | 使用できる値"},"content-type":"Content-Type: {value}","read-only":"読み出し専用","error":{"unknown":"原因不明のエラーが起きました。","image":"イメージを読み込めませんでした","not-found":"探しているページが見つかりません。"},"color-scheme":{"select":"カラースキーム環境設定を選択","auto":"自動","dark":"ダーク","light":"ライト"},"accessibility":{"strike":{"start":"取り消し線テキストの開始","end":"取り消し線テキストの終了"},"code":{"start":"コードブロックの開始","end":"コードブロックの終了"},"skip-navigation":"ナビゲーションをスキップ","in-page-link":"ページ内リンク"},"select-language":"このページの言語を選択","icons":{"clear":"消去","web-service-endpoint":"Webサービスのエンドポイント","search":"検索"},"formats":{"parenthesis":"({content})","colon":"{content}: "},"quicknav":{"button":{"label":"クイックナビゲーションを開く","title":"クリックするか「/」を入力すると素早く移動します"},"preview-unavailable":"プレビューできません"},"mentioned-in":"言及: ","pager":{"roledescription":"コンテンツスライダー","page":{"label":"コンテンツページ{index}/{count}"},"control":{"navigate-previous":"前のコンテンツページに移動","navigate-next":"次のコンテンツページに移動"}},"links-grid":{"label":"リンクのグリッド"}}'),a=JSON.parse('{"view-in":"한국어로 보기","continue-viewing":"한국어로 계속 보기","language":"언어","video":{"title":"비디오","replay":"다시 재생","play":"재생","pause":"일시 정지","watch":"소개 비디오 시청하기","description":"이 비디오의 콘텐츠 설명: {alt}","custom-controls":"사용자 설정 제어기는 아래에서 사용 가능"},"tutorials":{"title":"튜토리얼 | 튜토리얼","step":"{number}단계","submit":"제출","next":"다음","preview":{"title":"미리보기 없음 | 미리보기 | 미리보기","no-preview-available-step":"이 단계에서는 사용 가능한 미리보기가 없습니다."},"nav":{"chapters":"챕터","current":"현재 {thing}"},"assessment":{"check-your-understanding":"얼마나 이해했는지 확인하기","success-message":"잘 하셨습니다. 이 튜토리얼에 대한 모든 질문에 답하셨습니다.","answer-result":"답 {answer}은(는) {result}입니다.","correct":"정답","incorrect":"오답","next-question":"다음 질문","legend":"가능한 답"},"project-files":"프로젝트 파일","estimated-time":"예상 시간","sections":{"chapter":"{number}챕터"},"question-of":"총 {total}개 중 {index}번째 질문","section-of":"{total} 중 {number}","overriding-title":"{title}의 {newTitle}","time":{"format":"{number}{minutes}","minutes":{"full":"분 | 분 | {count}분","short":"분 | 분"},"hours":{"full":"시간 | 시간"}}},"documentation":{"title":"문서","nav":{"breadcrumbs":"브레드크럼","menu":"메뉴","open-menu":"메뉴 열기","close-menu":"메뉴 닫기"},"current-page":"현재 {title} 페이지","card":{"learn-more":"더 알아보기","read-article":"문서 읽기","start-tutorial":"튜토리얼 시작","view-api":"API 모음 보기","view-symbol":"기호 보기","view-sample-code":"샘플 코드 보기"},"view-more":"더 보기"},"declarations":{"hide-other-declarations":"다른 선언 가리기","show-all-declarations":"모든 선언 표시하기"},"aside-kind":{"beta":"베타","experiment":"실험","important":"중요","note":"참고","tip":"팁","warning":"경고","deprecated":"제거됨"},"change-type":{"added":"추가됨","modified":"수정됨","deprecated":"제거됨"},"verbs":{"hide":"가리기","show":"보기","close":"닫기"},"sections":{"title":"{number}섹션","on-this-page":"이 페이지에서","topics":"주제","default-implementations":"기본 구현","relationships":"관계","see-also":"추가 정보","declaration":"선언","details":"세부사항","parameters":"매개변수","possible-values":"가능한 값","parts":"파트","availability":"사용 가능 여부","resources":"리소스"},"metadata":{"details":{"name":"이름","key":"키","type":"유형"},"beta":{"legal":"이 문서는 베타 소프트웨어에 대해서 다루고 있으며, 변경될 수 있습니다.","software":"베타 소프트웨어"},"default-implementation":"기본 구현 제공됨. | 기본 구현 제공됨."},"availability":{"introduced-and-deprecated":"{name} {introducedAt}에서 소개되었고 {name} {deprecatedAt}에서 제거됨","available-on":"{name} {introducedAt} 이상에서 사용할 수 있음"},"more":"더 보기","less":"간략히","api-reference":"API 참조","filter":{"title":"필터","search":"검색","search-symbols":"{technology}에서 기호 찾기","suggested-tags":"권장 태그 | 권장 태그","selected-tags":"선택한 태그 | 선택한 태그","add-tag":"태그 추가","tag-select-remove":"태그. 목록에서 제거하려면 선택하십시오.","navigate":"기호를 탐색하려면 위쪽 화살표, 아래쪽 화살표, 왼쪽 화살표 또는 오른쪽 화살표를 누르십시오.","siblings-label":"{parent-siblings} 내의 총 {total-siblings}개의 기호 중 {number-siblings}개","parent-label":"한 개의 기호를 포함하는 {parent-siblings} 내의 총 {total-siblings}개의 기호 중 {number-siblings}개 | {number-parent}개의 기호를 포함하는 {parent-siblings} 내의 총 {total-siblings}개의 기호 중 {number-siblings}개","reset-filter":"필터 재설정","tags":{"sample-code":"샘플 코드","tutorials":"튜토리얼","articles":"문서","web-service-endpoints":"웹 서비스 엔드포인트","hide-deprecated":"제거된 항목 가리기"}},"navigator":{"title":"문서 탐색기","open-navigator":"문서 탐색기 열기","close-navigator":"문서 탐색기 닫기","no-results":"결과 찾을 수 없습니다.","no-children":"사용 가능한 데이터가 없습니다.","error-fetching":"데이터를 가져오는 동안 오류가 발생했습니다.","items-found":"항목을 찾을 수 없음 | 1개의 항목 발견됨 | {number}개의 항목이 발견됨. 다시 탭하여 탐색하십시오.","navigator-is":"내비게이터가 {state}입니다.","state":{"loading":"로드 중","ready":"준비 완료 상태"}},"tab":{"request":"요청","response":"응답"},"required":"필수 사항","parameters":{"default":"기본","minimum":"최소","maximum":"최대","possible-types":"유형 | 가능한 유형","possible-values":"값 | 가능한 값"},"content-type":"콘텐츠 유형: {value}","read-only":"읽기 전용","error":{"unknown":"알 수 없는 오류가 발생했습니다.","image":"이미지를 로드하는 데 실패함","not-found":"해당 페이지를 찾을 수 없습니다."},"color-scheme":{"select":"색상 모드 환경설정 선택","auto":"자동","dark":"다크","light":"라이트"},"accessibility":{"strike":{"start":"취소선이 그어진 텍스트 시작","end":"취소선이 그어진 텍스트 종료"},"code":{"start":"코드 블록 시작","end":"코드 블록 종료"},"skip-navigation":"탐색 건너뛰기","in-page-link":"페이지 링크에서"},"select-language":"이 페이지의 언어 선택","icons":{"clear":"지우기","web-service-endpoint":"웹 서비스 엔드포인트","search":"검색"},"formats":{"parenthesis":"({content})","colon":"{content}: "},"quicknav":{"button":{"label":"빠른 이동 열기","title":"클릭하거나 /를 입력하여 빠르게 이동"},"preview-unavailable":"미리보기 사용할 수 없음"},"mentioned-in":"다음에서 언급됨","pager":{"roledescription":"콘텐츠 슬라이더","page":{"label":"{count} 중 {index}번째 콘텐츠 페이지"},"control":{"navigate-previous":"콘텐츠의 이전 페이지로 이동","navigate-next":"콘텐츠의 다음 페이지로 이동"}},"links-grid":{"label":"링크의 격자"}}');const s="en-US",l={"en-US":r,"zh-CN":o,"ja-JP":i,"ko-KR":a}},4030:function(e,t,n){"use strict";var r=n(9804),o=n(1265),i=n(5394),a=n(2412);const s="undefined"!==typeof window.matchMedia&&[r.Z.light,r.Z.dark,"no-preference"].some((e=>window.matchMedia(`(prefers-color-scheme: ${e})`).matches)),l=s?r.Z.auto:r.Z.light;t["default"]={state:{imageLoadingStrategy:"ide"==={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET?o.Z.eager:o.Z.lazy,preferredColorScheme:i.Z.preferredColorScheme||l,preferredLocale:i.Z.preferredLocale,supportsAutoColorScheme:s,systemColorScheme:r.Z.light,availableLocales:[],includedArchiveIdentifiers:[]},reset(){this.state.imageLoadingStrategy="ide"==={NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}.VUE_APP_TARGET?o.Z.eager:o.Z.lazy,this.state.preferredColorScheme=i.Z.preferredColorScheme||l,this.state.supportsAutoColorScheme=s,this.state.systemColorScheme=r.Z.light,this.state.includedArchiveIdentifiers=[]},setImageLoadingStrategy(e){this.state.imageLoadingStrategy=e},setPreferredColorScheme(e){this.state.preferredColorScheme=e,i.Z.preferredColorScheme=e},setAllLocalesAreAvailable(){const e=a.map((e=>e.code));this.state.availableLocales=e},setAvailableLocales(e=[]){this.state.availableLocales=e},setPreferredLocale(e){this.state.preferredLocale=e,i.Z.preferredLocale=this.state.preferredLocale},setSystemColorScheme(e){this.state.systemColorScheme=e},setIncludedArchiveIdentifiers(e){this.state.includedArchiveIdentifiers=e},syncPreferredColorScheme(){i.Z.preferredColorScheme&&i.Z.preferredColorScheme!==this.state.preferredColorScheme&&(this.state.preferredColorScheme=i.Z.preferredColorScheme)}}},5947:function(e,t,n){"use strict";function r(e){return e.reduce(((e,t)=>(t.traits.includes("dark")?e.dark.push(t):e.light.push(t),e)),{light:[],dark:[]})}function o(e){const t=["1x","2x","3x"];return t.reduce(((t,n)=>{const r=e.find((e=>e.traits.includes(n)));return r?t.concat({density:n,src:r.url,size:r.size}):t}),[])}function i(e){const t="/",n=new RegExp(`${t}+`,"g");return e.join(t).replace(n,t)}function a(e){const{baseUrl:t}=window,n=Array.isArray(e)?i(e):e;return n&&"string"===typeof n&&!n.startsWith(t)&&n.startsWith("/")?i([t,n]):n}function s(e){return e?e.startsWith("/")?e:`/${e}`:e}function l(e){return e?`url('${a(e)}')`:void 0}function c(e){return new Promise(((t,n)=>{const r=new Image;r.src=e,r.onerror=n,r.onload=()=>t({width:r.width,height:r.height})}))}n.d(t,{AH:function(){return a},Jf:function(){return s},RY:function(){return c},T8:function(){return d},XV:function(){return r},eZ:function(){return l},u:function(){return o}});const u={landscape:"landscape",portrait:"portrait",square:"square"};function d(e,t){return e&&t?et?u.landscape:u.square:null}},5381:function(e,t,n){"use strict";n.d(t,{L3:function(){return r},fr:function(){return s},kB:function(){return i},lU:function(){return o}});const r={xlarge:"xlarge",large:"large",medium:"medium",small:"small"},o={default:"default",nav:"nav"},i={[o.default]:{[r.xlarge]:{minWidth:1920,contentWidth:1536},[r.large]:{minWidth:1251,contentWidth:980},[r.medium]:{minWidth:736,maxWidth:1068,contentWidth:692},[r.small]:{minWidth:320,maxWidth:735,contentWidth:280}},[o.nav]:{[r.large]:{minWidth:1024},[r.medium]:{minWidth:768,maxWidth:1023},[r.small]:{minWidth:320,maxWidth:767}}},a={[r.small]:0,[r.medium]:1,[r.large]:2};function s(e,t){return a[e]>a[t]}},9030:function(e,t,n){"use strict";n.d(t,{KP:function(){return c},dZ:function(){return s},jk:function(){return u}});var r=n(2412),o=n(7788),i=n(3465);const a=r.reduce(((e,t)=>({...e,[t.slug]:t.code})),{});function s(e){return a[e]}function l(e){return!!a[e]}function c(e){return{params:{locale:e===o.defaultLocale?void 0:e}}}function u(e=o.defaultLocale,t={}){if(!l(e))return;t.$i18n.locale=e;const n=s(e);(0,i.e)(n)}},5657:function(e,t,n){"use strict";function r(e){let t=null,n=e-1;const r=new Promise((e=>{t=e}));return requestAnimationFrame((function e(){n-=1,n<=0?t():requestAnimationFrame(e)})),r}function o(e){return new Promise((t=>{setTimeout(t,e)}))}n.d(t,{J:function(){return r},X:function(){return o}})},3465:function(e,t,n){"use strict";n.d(t,{X:function(){return u},e:function(){return d}});var r=n(9089),o=n(2449);const i=(0,r.$8)(["meta","title"],"Documentation"),a=({title:e,description:t,url:n,currentLocale:r})=>[{name:"description",content:t},{property:"og:locale",content:r},{property:"og:site_name",content:i},{property:"og:type",content:"website"},{property:"og:title",content:e},{property:"og:description",content:t},{property:"og:url",content:n},{property:"og:image",content:(0,o.HH)("/developer-og.jpg")},{name:"twitter:image",content:(0,o.HH)("/developer-og-twitter.jpg")},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:description",content:t},{name:"twitter:title",content:e},{name:"twitter:url",content:n}],s=e=>[e,i].filter(Boolean).join(" | "),l=e=>{const{content:t}=e,n=e.property?"property":"name",r=e[n],o=document.querySelector(`meta[${n}="${r}"]`);if(o&&t)o.setAttribute("content",t);else if(o&&!t)o.remove();else if(t){const t=document.createElement("meta");t.setAttribute(n,e[n]),t.setAttribute("content",e.content),document.getElementsByTagName("head")[0].appendChild(t)}},c=e=>{document.title=e};function u({title:e,description:t,url:n,currentLocale:r}){const o=s(e);c(o),a({title:o,description:t,url:n,currentLocale:r}).forEach((e=>l(e)))}function d(e){document.querySelector("html").setAttribute("lang",e)}},5394:function(e,t,n){"use strict";var r=n(7247);const o={preferredColorScheme:"developer.setting.preferredColorScheme",preferredLocale:"developer.setting.preferredLocale",preferredLanguage:"docs.setting.preferredLanguage"},i={preferredColorScheme:"docs.setting.preferredColorScheme"};t["Z"]=Object.defineProperties({},Object.keys(o).reduce(((e,t)=>({...e,[t]:{get:()=>{const e=i[t],n=r.mr.getItem(o[t]);return e?n||r.mr.getItem(e):n},set:e=>r.mr.setItem(o[t],e)}})),{}))},7247:function(e,t,n){"use strict";n.d(t,{mr:function(){return a},tO:function(){return l},y7:function(){return c}});const r="developer.setting.";function o(e=localStorage){return{getItem:t=>{try{return e.getItem(t)}catch(n){return null}},setItem:(t,n)=>{try{e.setItem(t,n)}catch(r){}},removeItem:t=>{try{e.removeItem(t)}catch(n){}}}}function i(e){return{get:(t,n)=>{const o=JSON.parse(e.getItem(r+t));return null!==o?o:n},set:(t,n)=>e.setItem(r+t,JSON.stringify(n)),remove:t=>e.removeItem(r+t)}}const a=o(window.localStorage),s=o(window.sessionStorage),l=i(a),c=i(s)},3208:function(e,t,n){"use strict";n.d(t,{HA:function(){return a},RL:function(){return u},Xv:function(){return s},ZQ:function(){return d},hr:function(){return c},id:function(){return m},sj:function(){return l}});n(8269);const r=/(?:\s+|[`"<>])/g,o=/^-+/,i=/["'&<>]/g;function a(e){return e.trim().replace(r,"-").replace(o,"").toLowerCase()}function s(e){const t=e=>({'"':""","'":"'","&":"&","<":"<",">":">"}[e]||e);return e.replace(i,t)}function l(e){return e.replace(/#(.*)/,((e,t)=>`#${CSS.escape(t)}`))}function c(e){return e.replace(/[.*+\-?^${}()|[\]\\]/g,"\\$&")}function u(e){let t,n;const r="\\s*",o=" ",i=e.trim(),a=i.length;if(!a)return o;const s=[];for(t=0;te.json())).catch((()=>({})))}const l=(e,t)=>r(i,e,t)},2449:function(e,t,n){"use strict";n.d(t,{Lp:function(){return s},Q2:function(){return a},WN:function(){return l},Ex:function(){return i},HH:function(){return c}});var r=n(5947),o={input:"input",tags:"tags"};function i(e={}){return Object.entries(e).reduce(((e,[t,n])=>n?e.concat(`${encodeURIComponent(t)}=${encodeURIComponent(n)}`):e),[]).join("&")}function a(e,{changes:t,language:n,context:r}={}){const[o,a]=e.split("#"),s=o.match(/\?.*/),l=i({changes:t,language:n,context:r}),c=s?"&":"?",u=a?o:e,d=l?`${c}${l}`:"",m=a?`#${a}`:"";return`${u}${d}${m}`}function s(e,t){const{query:{changes:n,[o.input]:r,[o.tags]:i,...a}={}}=e,{query:{changes:s,[o.input]:l,[o.tags]:c,...u}={}}=t;return e.name===t.name&&JSON.stringify({path:e.path,query:a})===JSON.stringify({path:t.path,query:u})}function l(e,t=window.location.href){return new URL((0,r.AH)(e),t)}function c(e,t){return l(e,t).href}},647:function(e,t,n){n.p=window.baseUrl},2412:function(e){"use strict";e.exports=JSON.parse('[{"code":"en-US","name":"English","slug":"en-US"},{"code":"zh-CN","name":"简体中文","slug":"zh-CN"},{"code":"ja-JP","name":"日本語","slug":"ja-JP"},{"code":"ko-KR","name":"한국어","slug":"ko-KR"}]')}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}n.m=e,function(){var e=[];n.O=function(t,r,o,i){if(!r){var a=1/0;for(u=0;u=i)&&Object.keys(n.O).every((function(e){return n.O[e](r[l])}))?r.splice(l--,1):(s=!1,i0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[r,o,i]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){var e,t=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};n.t=function(r,o){if(1&o&&(r=this(r)),8&o)return r;if("object"===typeof r&&r){if(4&o&&r.__esModule)return r;if(16&o&&"function"===typeof r.then)return r}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&r;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((function(e){a[e]=function(){return r[e]}}));return a["default"]=function(){return r},n.d(i,a),i}}(),function(){n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}}(),function(){n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))}}(),function(){n.u=function(e){return"js/"+({82:"highlight-js-json-js",113:"highlight-js-markdown-js",133:"highlight-js-llvm-js",162:"topic",176:"highlight-js-shell-js",213:"highlight-js-diff-js",217:"highlight-js-custom-swift",392:"highlight-js-scss-js",393:"highlight-js-bash-js",435:"highlight-js-python-js",490:"highlight-js-xml-js",527:"highlight-js-swift-js",546:"highlight-js-c-js",596:"highlight-js-php-js",621:"highlight-js-cpp-js",623:"highlight-js-ruby-js",637:"highlight-js-objectivec-js",642:"highlight-js-custom-markdown",645:"highlight-js-perl-js",788:"highlight-js-java-js",814:"highlight-js-javascript-js",843:"tutorials-overview",864:"highlight-js-css-js",878:"highlight-js-http-js",982:"documentation-topic"}[e]||e)+"."+{82:"2a1856ba",104:"fe5974d0",113:"a2f456af",133:"26121771",162:"37e71576",176:"0ad5b20f",213:"4db9a783",217:"738731d1",337:"274a8ccc",392:"adcd11a2",393:"702f0c5c",435:"60354774",490:"0d78f903",527:"bdd5bff5",546:"063069d3",596:"c458ffa4",621:"458a9ae4",623:"7272231f",637:"74dea052",642:"78c9f6ed",645:"da6eda82",788:"4fe21e94",814:"dfc9d16d",842:"49774dc9",843:"acb09e8a",864:"bfc4251f",866:"eea4607d",878:"f78e83c2",982:"09a6ef86",989:"c46c769c"}[e]+".js"}}(),function(){n.miniCssF=function(e){return"css/"+({162:"topic",843:"tutorials-overview",982:"documentation-topic"}[e]||e)+"."+{162:"4be8f56d",843:"7942d777",866:"60f074fd",982:"91c07ba9",989:"4f123103"}[e]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="swift-docc-render:";n.l=function(r,o,i,a){if(e[r])e[r].push(o);else{var s,l;if(void 0!==i)for(var c=document.getElementsByTagName("script"),u=0;ue.anchor===t.anchor?{...t,visibility:e.visibility}:t))},updateBreakpoint(e){this.state.breakpoint=e},setReferences(e){this.state.references=e}},d=function(){var e=this,t=e._self._c;return t("div",{staticClass:"article"},[e.isTargetIDE?e._e():t("NavigationBar",{attrs:{chapters:e.hierarchy.modules,technology:e.metadata.category,topic:e.heroTitle||"",rootReference:e.hierarchy.reference,identifierUrl:e.identifierUrl}}),t("main",{attrs:{id:"main",tabindex:"0"}},[e._t("above-hero"),e._l(e.sections,(function(n,s){return t(e.componentFor(n),e._b({key:s,tag:"component"},"component",e.propsFor(n),!1))}))],2),t("PortalTarget",{attrs:{name:"modal-destination",multiple:""}})],1)},p=[],h=n(2433),m=n(4030),v=function(){var e=this,t=e._self._c;return t("NavBase",{attrs:{id:"nav","aria-label":e.technology,hasSolidBackground:""},scopedSlots:e._u([{key:"default",fn:function(){return[t("ReferenceUrlProvider",{attrs:{reference:e.rootReference},scopedSlots:e._u([{key:"default",fn:function({urlWithParams:n}){return[t("NavTitleContainer",{attrs:{to:n},scopedSlots:e._u([{key:"default",fn:function(){return[e._v(e._s(e.technology))]},proxy:!0},{key:"subhead",fn:function(){return[e._v(e._s(e.$tc("tutorials.title",2)))]},proxy:!0}],null,!0)})]}}])})]},proxy:!0},{key:"after-title",fn:function(){return[t("div",{staticClass:"separator"})]},proxy:!0},{key:"tray",fn:function(){return[t("div",{staticClass:"mobile-dropdown-container"},[t("MobileDropdown",{attrs:{options:e.chapters,sections:e.optionsForSections,currentOption:e.currentSection?e.currentSection.title:""},on:{"select-section":e.onSelectSection}})],1),t("div",{staticClass:"dropdown-container"},[t("PrimaryDropdown",{staticClass:"primary-dropdown",attrs:{options:e.chapters,currentOption:e.topic}}),t("ChevronIcon",{staticClass:"icon-inline"}),e.currentSection?t("SecondaryDropdown",{staticClass:"secondary-dropdown",attrs:{options:e.optionsForSections,currentOption:e.currentSection.title,sectionTracker:e.sectionIndicatorText},on:{"select-section":e.onSelectSection}}):e._e()],1),e._t("tray",null,{siblings:e.chapters.length+e.optionsForSections.length})]},proxy:!0}],null,!0)})},f=[],g=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"chevron-icon",attrs:{viewBox:"0 0 14 14",themeId:"chevron"}},[t("path",{attrs:{d:"M3.22 1.184l0.325-0.38 7.235 6.201-7.235 6.19-0.325-0.38 6.792-5.811-6.792-5.82z"}})])},y=[],C=n(3453),b={name:"ChevronIcon",components:{SVGIcon:C.Z}},_=b,w=n(1001),k=(0,w.Z)(_,g,y,!1,null,null,null),S=k.exports,x=n(2449),I=n(5953),T={name:"ReferenceUrlProvider",mixins:[I.Z],props:{reference:{type:String,required:!0}},computed:{resolvedReference:({references:e,reference:t})=>e[t]||{},url:({resolvedReference:e})=>e.url,title:({resolvedReference:e})=>e.title},render(){return this.$scopedSlots.default({url:this.url,urlWithParams:(0,x.Q2)(this.url,this.$route.query),title:this.title,reference:this.resolvedReference})}},A=T,$=(0,w.Z)(A,l,c,!1,null,null,null),N=$.exports,P=n(3704),q=n(3975),D=n(2573),Z=function(){var e=this,t=e._self._c;return t("NavMenuItems",{staticClass:"mobile-dropdown"},e._l(e.options,(function(n){return t("ReferenceUrlProvider",{key:n.reference,attrs:{reference:n.reference},scopedSlots:e._u([{key:"default",fn:function({title:s}){return[t("NavMenuItemBase",{staticClass:"chapter-list",attrs:{role:"group"}},[t("p",{staticClass:"chapter-name"},[e._v(e._s(s))]),t("ul",{staticClass:"tutorial-list"},e._l(n.projects,(function(n){return t("ReferenceUrlProvider",{key:n.reference,attrs:{reference:n.reference},scopedSlots:e._u([{key:"default",fn:function({url:n,urlWithParams:s,title:i}){return[t("li",{staticClass:"tutorial-list-item"},[t("router-link",{staticClass:"option tutorial",attrs:{to:s,value:i}},[e._v(" "+e._s(i)+" ")]),n===e.$route.path?t("ul",{staticClass:"section-list",attrs:{role:"listbox"}},e._l(e.sections,(function(n){return t("li",{key:n.title},[t("router-link",{class:e.classesFor(n),attrs:{to:{path:n.path,query:e.$route.query},value:n.title},nativeOn:{click:function(t){return e.onClick(n)}}},[e._v(" "+e._s(n.title)+" ")])],1)})),0):e._e()],1)]}}],null,!0)})})),1)])]}}],null,!0)})})),1)},R=[],M=n(3822),O=n(6302),B={name:"MobileDropdown",components:{NavMenuItems:O.Z,NavMenuItemBase:M.Z,ReferenceUrlProvider:N},props:{options:{type:Array,required:!0},currentOption:{type:String,required:!0},sections:{type:Array,required:!1,default:()=>[]}},methods:{classesFor(e){return["option","section",{active:this.currentOption===e.title},this.depthClass(e)]},depthClass(e){const{depth:t=0}=e;return`depth${t}`},onClick(e){this.$emit("select-section",e.path)}}},L=B,F=(0,w.Z)(L,Z,R,!1,null,"2c27d339",null),V=F.exports,j=function(){var e=this,t=e._self._c;return t("DropdownCustom",{staticClass:"tutorial-dropdown",attrs:{value:e.currentOption,"aria-label":e.$t("tutorials.nav.current",{thing:e.$t("sections.title")}),isSmall:""},scopedSlots:e._u([{key:"toggle-post-content",fn:function(){return[t("span",{staticClass:"section-tracker"},[e._v(e._s(e.sectionTracker))])]},proxy:!0},{key:"default",fn:function({closeAndFocusToggler:n,contentClasses:s,navigateOverOptions:i,OptionClass:r,ActiveOptionClass:o}){return[t("ul",{staticClass:"options",class:s,attrs:{role:"listbox",tabindex:"0"}},e._l(e.options,(function(s){return t("router-link",{key:s.title,attrs:{to:{path:s.path,query:e.$route.query},custom:""},scopedSlots:e._u([{key:"default",fn:function({navigate:a}){return[t("li",{class:[r,{[o]:e.currentOption===s.title}],attrs:{value:s.title,"aria-selected":e.currentOption===s.title,"aria-current":e.ariaCurrent(s.title),tabindex:-1},on:{click:function(t){return e.setActive(s,a,n,t)},keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.setActive(s,a,n,t)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:n.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"tab",9,t.key,"Tab")?null:n.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),i(t,1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),i(t,-1))}]}},[e._v(" "+e._s(s.title)+" ")])]}}],null,!0)})})),1)]}}])})},E=[],H=function(){var e=this,t=e._self._c;return t("BaseDropdown",{staticClass:"dropdown-custom",class:{[e.OpenedClass]:e.isOpen,"dropdown-small":e.isSmall},attrs:{value:e.value},scopedSlots:e._u([{key:"dropdown",fn:function({dropdownClasses:n}){return[t("span",{staticClass:"visuallyhidden",attrs:{id:`DropdownLabel_${e._uid}`}},[e._v(e._s(e.ariaLabel))]),t("button",{ref:"dropdownToggle",staticClass:"form-dropdown-toggle",class:n,attrs:{id:`DropdownToggle_${e._uid}`,"aria-labelledby":`DropdownLabel_${e._uid} DropdownToggle_${e._uid}`,"aria-expanded":e.isOpen?"true":"false","aria-haspopup":"true"},on:{click:e.toggleDropdown,keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.openDropdown.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.closeAndFocusToggler.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),e.openDropdown.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),e.openDropdown.apply(null,arguments))}]}},[t("span",{staticClass:"form-dropdown-title"},[e._v(e._s(e.value))]),e._t("toggle-post-content")],2)]}},{key:"eyebrow",fn:function(){return[e._t("eyebrow")]},proxy:!0},{key:"after",fn:function(){return[e._t("default",null,null,{value:e.value,isOpen:e.isOpen,contentClasses:["form-dropdown-content",{"is-open":e.isOpen}],closeDropdown:e.closeDropdown,onChangeAction:e.onChangeAction,closeAndFocusToggler:e.closeAndFocusToggler,navigateOverOptions:e.navigateOverOptions,OptionClass:e.OptionClass,ActiveOptionClass:e.ActiveOptionClass})]},proxy:!0}],null,!0)})},U=[],z=function(){var e=this,t=e._self._c;return t("div",{staticClass:"form-element"},[e._t("dropdown",(function(){return[t("select",e._b({directives:[{name:"model",rawName:"v-model",value:e.modelValue,expression:"modelValue"}],class:e.dropdownClasses,on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,(function(e){return e.selected})).map((function(e){var t="_value"in e?e._value:e.value;return t}));e.modelValue=t.target.multiple?n:n[0]}}},"select",e.$attrs,!1),[e._t("default")],2)]}),{dropdownClasses:e.dropdownClasses,value:e.value}),t("InlineChevronDownIcon",{staticClass:"form-icon",attrs:{"aria-hidden":"true"}}),e.$slots.eyebrow?t("span",{staticClass:"form-label",attrs:{"aria-hidden":"true"}},[e._t("eyebrow")],2):e._e(),e._t("after")],2)},G=[],W=n(5151),Q={name:"BaseDropdown",inheritAttrs:!1,props:{value:{type:String,default:""}},components:{InlineChevronDownIcon:W.Z},computed:{modelValue:{get:({value:e})=>e,set(e){this.$emit("input",e)}},dropdownClasses({value:e}){return["form-dropdown",{"form-dropdown-selectnone":""===e,"no-eyebrow":!this.$slots.eyebrow}]}}},K=Q,X=(0,w.Z)(K,z,G,!1,null,"47dfd245",null),Y=X.exports;const J="is-open",ee="option",te="option-active";var ne={name:"DropdownCustom",components:{BaseDropdown:Y},constants:{OpenedClass:J,OptionClass:ee,ActiveOptionClass:te},props:{value:{type:String,default:""},ariaLabel:{type:String,default:""},isSmall:{type:Boolean,default:!1}},data(){return{isOpen:!1,OpenedClass:J,OptionClass:ee,ActiveOptionClass:te}},mounted(){document.addEventListener("click",this.closeOnLoseFocus)},beforeDestroy(){document.removeEventListener("click",this.closeOnLoseFocus)},methods:{onChangeAction(e){this.$emit("input",e)},toggleDropdown(){this.isOpen?this.closeDropdown():this.openDropdown()},async closeAndFocusToggler(){this.closeDropdown(),await this.$nextTick(),this.$refs.dropdownToggle.focus({preventScroll:!0})},closeDropdown(){this.isOpen=!1,this.$emit("close")},openDropdown(){this.isOpen=!0,this.$emit("open"),this.focusActiveLink()},closeOnLoseFocus(e){!this.$el.contains(e.target)&&this.isOpen&&this.closeDropdown()},navigateOverOptions({target:e},t){const n=this.$el.querySelectorAll(`.${ee}`),s=Array.from(n),i=s.indexOf(e),r=s[i+t];r&&r.focus({preventScroll:!0})},async focusActiveLink(){const e=this.$el.querySelector(`.${te}`);e&&(await this.$nextTick(),e.focus({preventScroll:!0}))}}},se=ne,ie=(0,w.Z)(se,H,U,!1,null,"6adda760",null),re=ie.exports,oe={name:"SecondaryDropdown",components:{DropdownCustom:re},props:{options:{type:Array,required:!0},currentOption:{type:String,required:!0},sectionTracker:{type:String,required:!1}},methods:{ariaCurrent(e){return this.currentOption===e&&"section"},setActive(e,t,n,s){t(s),this.$emit("select-section",e.path),n()}}},ae=oe,le=(0,w.Z)(ae,j,E,!1,null,"618ff780",null),ce=le.exports,ue=function(){var e=this,t=e._self._c;return t("DropdownCustom",{staticClass:"tutorial-dropdown",attrs:{value:e.currentOption,"aria-label":e.$t("tutorials.nav.current",{thing:e.$tc("tutorials.title",1)}),isSmall:""},scopedSlots:e._u([{key:"default",fn:function({closeAndFocusToggler:n,contentClasses:s,closeDropdown:i,navigateOverOptions:r,OptionClass:o,ActiveOptionClass:a}){return[t("ul",{staticClass:"options",class:s,attrs:{tabindex:"0"}},e._l(e.options,(function(s){return t("ReferenceUrlProvider",{key:s.reference,attrs:{reference:s.reference},scopedSlots:e._u([{key:"default",fn:function({title:l}){return[t("li",{staticClass:"chapter-list",attrs:{role:"group"}},[t("p",{staticClass:"chapter-name"},[e._v(e._s(l))]),t("ul",{attrs:{role:"listbox"}},e._l(s.projects,(function(s){return t("ReferenceUrlProvider",{key:s.reference,attrs:{reference:s.reference},scopedSlots:e._u([{key:"default",fn:function({urlWithParams:s,title:l}){return[t("router-link",{attrs:{to:s,custom:""},scopedSlots:e._u([{key:"default",fn:function({navigate:s,isActive:c}){return[t("li",{class:{[o]:!0,[a]:c},attrs:{value:l,"aria-selected":c,"aria-current":!!c&&"tutorial",tabindex:-1},on:{click:function(t){return e.setActive(s,i,t)},keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.setActive(s,i,t)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:n.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"tab",9,t.key,"Tab")?null:n.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),r(t,1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),r(t,-1))}]}},[e._v(" "+e._s(l)+" ")])]}}],null,!0)})]}}],null,!0)})})),1)])]}}],null,!0)})})),1)]}}])})},de=[],pe={name:"PrimaryDropdown",components:{DropdownCustom:re,ReferenceUrlProvider:N},props:{options:{type:Array,required:!0},currentOption:{type:String,required:!0}},methods:{setActive(e,t,n){e(n),t()}}},he=pe,me=(0,w.Z)(he,ue,de,!1,null,"03cbd7f7",null),ve=me.exports;const fe={title:"Introduction",url:"#introduction",reference:"introduction",sectionNumber:0,depth:0};var ge={name:"NavigationBar",components:{NavTitleContainer:D.Z,NavBase:q.Z,ReferenceUrlProvider:N,PrimaryDropdown:ve,SecondaryDropdown:ce,MobileDropdown:V,ChevronIcon:S},mixins:[P.Z,I.Z],props:{chapters:{type:Array,required:!0},technology:{type:String,required:!0},topic:{type:String,required:!0},rootReference:{type:String,required:!0},identifierUrl:{type:String,required:!0}},data(){return{currentSection:fe,tutorialState:this.store.state}},watch:{pageSectionWithHighestVisibility(e){e&&(this.currentSection=e)}},computed:{currentProject(){return this.chapters.reduce(((e,{projects:t})=>e.concat(t)),[]).find((e=>e.reference===this.identifierUrl))},pageSections(){if(!this.currentProject)return[];const e=[fe].concat(this.currentProject.sections);return this.tutorialState.linkableSections.map(((t,n)=>{const s=e[n],i=this.references[s.reference],{url:r,title:o}=i||s;return{...t,title:o,path:r}}))},optionsForSections(){return this.pageSections.map((({depth:e,path:t,title:n})=>({depth:e,path:t,title:n})))},pageSectionWithHighestVisibility(){return[...this.pageSections].sort(((e,t)=>t.visibility-e.visibility)).find((e=>e.visibility>0))},sectionIndicatorText(){const e=this.tutorialState.linkableSections.length-1,{sectionNumber:t}=this.currentSection||{};if(0!==t)return this.$t("tutorials.section-of",{number:t,total:e})}},methods:{onSelectSection(e){const t=e.split("#")[1];this.handleFocusAndScroll(t)}}},ye=ge,Ce=(0,w.Z)(ye,v,f,!1,null,"5381d5f3",null),be=Ce.exports,_e=n(2974),we=function(){var e=this,t=e._self._c;return t("div",{staticClass:"body"},[t("BodyContent",{attrs:{content:e.content}})],1)},ke=[],Se=function(){var e=this,t=e._self._c;return t("article",{staticClass:"body-content"},e._l(e.content,(function(n,s){return t(e.componentFor(n),e._b({key:s,tag:"component",staticClass:"layout"},"component",e.propsFor(n),!1))})),1)},xe=[],Ie=function(){var e=this,t=e._self._c;return t("div",{staticClass:"columns",class:e.classes},[e._l(e.columns,(function(n,s){return[t("Asset",{key:n.media,attrs:{identifier:n.media,videoAutoplays:!1}}),n.content?t("ContentNode",{key:s,attrs:{content:n.content}}):e._e()]}))],2)},Te=[],Ae=n(5465),$e=function(){var e=this,t=e._self._c;return t("BaseContentNode",{attrs:{content:e.articleContent}})},Ne=[],Pe=n(8843),qe={name:"ContentNode",components:{BaseContentNode:Pe["default"]},props:Pe["default"].props,computed:{articleContent(){return this.map((e=>{switch(e.type){case Pe["default"].BlockType.codeListing:return{...e,showLineNumbers:!0};case Pe["default"].BlockType.heading:{const{anchor:t,...n}=e;return n}default:return e}}))}},methods:Pe["default"].methods,BlockType:Pe["default"].BlockType,InlineType:Pe["default"].InlineType},De=qe,Ze=(0,w.Z)(De,$e,Ne,!1,null,"0861b5be",null),Re=Ze.exports,Me={name:"Columns",components:{Asset:Ae.Z,ContentNode:Re},props:{columns:{type:Array,required:!0}},computed:{classes(){return{"cols-2":2===this.columns.length,"cols-3":3===this.columns.length}}}},Oe=Me,Be=(0,w.Z)(Oe,Ie,Te,!1,null,"30edf911",null),Le=Be.exports,Fe=function(){var e=this,t=e._self._c;return t("div",{staticClass:"content-and-media",class:e.classes},[t("ContentNode",{attrs:{content:e.content}}),t("Asset",{attrs:{identifier:e.media}})],1)},Ve=[];const je={leading:"leading",trailing:"trailing"};var Ee={name:"ContentAndMedia",components:{Asset:Ae.Z,ContentNode:Re},props:{content:Re.props.content,media:Ae.Z.props.identifier,mediaPosition:{type:String,default:()=>je.trailing,validator:e=>Object.prototype.hasOwnProperty.call(je,e)}},computed:{classes(){return{"media-leading":this.mediaPosition===je.leading,"media-trailing":this.mediaPosition===je.trailing}}},MediaPosition:je},He=Ee,Ue=(0,w.Z)(He,Fe,Ve,!1,null,"3fa44f9e",null),ze=Ue.exports,Ge=function(){var e=this,t=e._self._c;return t("div",{staticClass:"full-width"},e._l(e.groups,(function(n,s){return t(e.componentFor(n),e._b({key:s,tag:"component",staticClass:"group"},"component",e.propsFor(n),!1),[t("ContentNode",{attrs:{content:n.content}})],1)})),1)},We=[],Qe=function(){var e=this,t=e._self._c;return t(e.tag,{tag:"component",attrs:{id:e.anchor}},[e._t("default")],2)},Ke=[],Xe=n(9146),Ye={name:"LinkableElement",mixins:[Xe["default"]],inject:{navigationBarHeight:{default(){}},store:{default(){return{addLinkableSection(){},updateLinkableSection(){}}}}},props:{anchor:{type:String,required:!0},depth:{type:Number,default:()=>0},tag:{type:String,default:()=>"div"},title:{type:String,required:!0}},computed:{intersectionRootMargin(){const e=this.navigationBarHeight?`-${this.navigationBarHeight}px`:"0%";return`${e} 0% -50% 0%`}},created(){this.store.addLinkableSection({anchor:this.anchor,depth:this.depth,title:this.title,visibility:0})},methods:{onIntersect(e){const t=Math.min(1,e.intersectionRatio);this.store.updateLinkableSection({anchor:this.anchor,depth:this.depth,title:this.title,visibility:t})}}},Je=Ye,et=(0,w.Z)(Je,Qe,Ke,!1,null,null,null),tt=et.exports;const{BlockType:nt}=Re;var st={name:"FullWidth",components:{ContentNode:Re,LinkableElement:tt},props:Re.props,computed:{groups:({content:e})=>e.reduce(((e,t)=>0===e.length||t.type===nt.heading?[...e,{heading:t.type===nt.heading?t:null,content:[t]}]:[...e.slice(0,e.length-1),{heading:e[e.length-1].heading,content:e[e.length-1].content.concat(t)}]),[])},methods:{componentFor(e){return e.heading?tt:"div"},depthFor(e){switch(e.level){case 1:case 2:return 0;default:return 1}},propsFor(e){return e.heading?{anchor:e.heading.anchor,depth:this.depthFor(e.heading),title:e.heading.text}:{}}}},it=st,rt=(0,w.Z)(it,Ge,We,!1,null,"5b4a8b3c",null),ot=rt.exports;const at={columns:"columns",contentAndMedia:"contentAndMedia",fullWidth:"fullWidth"};var lt={name:"BodyContent",props:{content:{type:Array,required:!0,validator:e=>e.every((({kind:e})=>Object.prototype.hasOwnProperty.call(at,e)))}},methods:{componentFor(e){return{[at.columns]:Le,[at.contentAndMedia]:ze,[at.fullWidth]:ot}[e.kind]},propsFor(e){const{content:t,kind:n,media:s,mediaPosition:i}=e;return{[at.columns]:{columns:t},[at.contentAndMedia]:{content:t,media:s,mediaPosition:i},[at.fullWidth]:{content:t}}[n]}},LayoutKind:at},ct=lt,ut=(0,w.Z)(ct,Se,xe,!1,null,"4d5a806e",null),dt=ut.exports,pt={name:"Body",components:{BodyContent:dt},props:dt.props},ht=pt,mt=(0,w.Z)(ht,we,ke,!1,null,"20dca692",null),vt=mt.exports,ft=function(){var e=this,t=e._self._c;return t("TutorialCTA",e._b({},"TutorialCTA",e.$props,!1))},gt=[],yt=function(){var e=this,t=e._self._c;return t("BaseCTA",e._b({attrs:{label:e.$t("tutorials.next")}},"BaseCTA",e.baseProps,!1))},Ct=[],bt=function(){var e=this,t=e._self._c;return t("div",{staticClass:"call-to-action"},[t("Row",[t("LeftColumn",[t("span",{staticClass:"label"},[e._v(e._s(e.label))]),t("h2",[e._v(" "+e._s(e.title)+" ")]),e.abstract?t("ContentNode",{staticClass:"description",attrs:{content:[e.abstractParagraph]}}):e._e(),e.action?t("Button",{attrs:{action:e.action}}):e._e()],1),t("RightColumn",{staticClass:"right-column"},[e.media?t("Asset",{staticClass:"media",attrs:{identifier:e.media}}):e._e()],1)],1)],1)},_t=[],wt=n(9649),kt=n(1576),St=n(7605),xt={name:"CallToAction",components:{Asset:Ae.Z,Button:St.Z,ContentNode:Pe["default"],LeftColumn:{render(e){return e(kt.Z,{props:{span:{large:5,small:12}}},this.$slots.default)}},RightColumn:{render(e){return e(kt.Z,{props:{span:{large:6,small:12}}},this.$slots.default)}},Row:wt.Z},props:{title:{type:String,required:!0},label:{type:String,required:!0},abstract:{type:Array,required:!1},action:{type:Object,required:!1},media:{type:String,required:!1}},computed:{abstractParagraph(){return{type:"paragraph",inlineContent:this.abstract}}}},It=xt,Tt=(0,w.Z)(It,bt,_t,!1,null,"2bfdf182",null),At=Tt.exports,$t={name:"CallToAction",components:{BaseCTA:At},computed:{baseProps(){return{title:this.title,abstract:this.abstract,action:this.action,media:this.media}}},props:{title:{type:String,required:!0},abstract:{type:Array,required:!1},action:{type:Object,required:!1},media:{type:String,required:!1}}},Nt=$t,Pt=(0,w.Z)(Nt,yt,Ct,!1,null,null,null),qt=Pt.exports,Dt={name:"CallToAction",components:{TutorialCTA:qt},props:qt.props},Zt=Dt,Rt=(0,w.Z)(Zt,ft,gt,!1,null,"426a965c",null),Mt=Rt.exports,Ot=function(){var e=this,t=e._self._c;return t("TutorialHero",e._b({},"TutorialHero",e.$props,!1))},Bt=[],Lt=function(){var e=this,t=e._self._c;return t("LinkableSection",{staticClass:"tutorial-hero",attrs:{anchor:"introduction",title:e.sectionTitle}},[t("div",{staticClass:"hero dark"},[e.backgroundImageUrl?t("div",{staticClass:"bg",style:e.bgStyle}):e._e(),e._t("above-title"),t("Row",[t("Column",[t("Headline",{attrs:{level:1},scopedSlots:e._u([e.chapter?{key:"eyebrow",fn:function(){return[e._v(e._s(e.chapter))]},proxy:!0}:null],null,!0)},[e._v(" "+e._s(e.title)+" ")]),e.content||e.video?t("div",{staticClass:"intro"},[e.content?t("ContentNode",{attrs:{content:e.content}}):e._e(),e.video?[t("p",[t("a",{staticClass:"call-to-action",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.toggleCallToActionModal.apply(null,arguments)}}},[e._v(" Watch intro video "),t("PlayIcon",{staticClass:"cta-icon icon-inline"})],1)]),t("GenericModal",{attrs:{visible:e.callToActionModalVisible,isFullscreen:"",theme:"dark"},on:{"update:visible":function(t){e.callToActionModalVisible=t}}},[t("Asset",{directives:[{name:"show",rawName:"v-show",value:e.callToActionModalVisible,expression:"callToActionModalVisible"}],ref:"asset",staticClass:"video-asset",attrs:{identifier:e.video},on:{videoEnded:e.handleVideoEnd}})],1)]:e._e()],2):e._e(),t("Metadata",{staticClass:"metadata",attrs:{projectFilesUrl:e.projectFilesUrl,estimatedTimeInMinutes:e.estimatedTimeInMinutes,xcodeRequirement:e.xcodeRequirementData}})],1)],1)],2)])},Ft=[],Vt=function(){var e=this,t=e._self._c;return t("div",{staticClass:"headline"},[e.$slots.eyebrow?t("span",{staticClass:"eyebrow"},[e._t("eyebrow")],2):e._e(),t("Heading",{staticClass:"heading",attrs:{level:e.level}},[e._t("default")],2)],1)},jt=[];const Et=1,Ht=6,Ut={type:Number,required:!0,validator:e=>e>=Et&&e<=Ht},zt={name:"Heading",render:function(e){return e(`h${this.level}`,this.$slots.default)},props:{level:Ut}};var Gt={name:"Headline",components:{Heading:zt},props:{level:Ut}},Wt=Gt,Qt=(0,w.Z)(Wt,Vt,jt,!1,null,"d46a1474",null),Kt=Qt.exports,Xt=n(5590),Yt=n(6698),Jt=n(5947),en=function(){var e=this,t=e._self._c;return t("div",{staticClass:"metadata"},[e.estimatedTimeInMinutes?t("div",{staticClass:"item",attrs:{"aria-label":`\n ${e.$tc("tutorials.time.minutes.full",e.estimatedTimeInMinutes,{count:e.estimatedTimeInMinutes})}\n ${e.$t("tutorials.estimated-time")}\n `}},[t("div",{staticClass:"content",attrs:{"aria-hidden":"true"}},[t("i18n",{staticClass:"duration",attrs:{path:"tutorials.time.format",tag:"div"},scopedSlots:e._u([{key:"number",fn:function(){return[e._v(" "+e._s(e.estimatedTimeInMinutes)+" ")]},proxy:!0},{key:"minutes",fn:function(){return[t("div",{staticClass:"minutes"},[e._v(e._s(e.$tc("tutorials.time.minutes.short",e.estimatedTimeInMinutes))+" ")])]},proxy:!0}],null,!1,3313752798)})],1),t("div",{staticClass:"bottom",attrs:{"aria-hidden":"true"}},[e._v(e._s(e.$t("tutorials.estimated-time")))])]):e._e(),e.projectFilesUrl?t("div",{staticClass:"item"},[t("DownloadIcon",{staticClass:"item-large-icon icon-inline"}),t("div",{staticClass:"content bottom"},[t("a",{staticClass:"content-link project-download",attrs:{href:e.projectFilesUrl}},[e._v(" "+e._s(e.$t("tutorials.project-files"))+" "),t("InlineDownloadIcon",{staticClass:"small-icon icon-inline"})],1)])],1):e._e(),e.xcodeRequirement?t("div",{staticClass:"item"},[t("XcodeIcon",{staticClass:"item-large-icon icon-inline"}),t("div",{staticClass:"content bottom"},[e.isTargetIDE?t("span",[e._v(e._s(e.xcodeRequirement.title))]):t("a",{staticClass:"content-link",attrs:{href:e.xcodeRequirement.url}},[e._v(" "+e._s(e.xcodeRequirement.title)+" "),t("InlineChevronRightIcon",{staticClass:"icon-inline small-icon xcode-icon"})],1)])],1):e._e()])},tn=[],nn=n(7214),sn=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"xcode-icon",attrs:{viewBox:"0 0 14 14",themeId:"xcode"}},[t("path",{attrs:{d:"M2.668 4.452l-1.338-2.229 0.891-0.891 2.229 1.338 1.338 2.228 3.667 3.666 0.194-0.194 2.933 2.933c0.13 0.155 0.209 0.356 0.209 0.576 0 0.497-0.403 0.9-0.9 0.9-0.22 0-0.421-0.079-0.577-0.209l0.001 0.001-2.934-2.933 0.181-0.181-3.666-3.666z"}}),t("path",{attrs:{d:"M11.824 1.277l-0.908 0.908c-0.091 0.091-0.147 0.216-0.147 0.354 0 0.106 0.033 0.205 0.090 0.286l-0.001-0.002 0.058 0.069 0.185 0.185c0.090 0.090 0.215 0.146 0.353 0.146 0.107 0 0.205-0.033 0.286-0.090l-0.002 0.001 0.069-0.057 0.909-0.908c0.118 0.24 0.187 0.522 0.187 0.82 0 1.045-0.848 1.893-1.893 1.893-0.296 0-0.577-0.068-0.826-0.189l0.011 0.005-5.5 5.5c0.116 0.238 0.184 0.518 0.184 0.813 0 1.045-0.848 1.893-1.893 1.893-0.296 0-0.576-0.068-0.826-0.189l0.011 0.005 0.908-0.909c0.090-0.090 0.146-0.215 0.146-0.353 0-0.107-0.033-0.205-0.090-0.286l0.001 0.002-0.057-0.069-0.185-0.185c-0.091-0.091-0.216-0.147-0.354-0.147-0.106 0-0.205 0.033-0.286 0.090l0.002-0.001-0.069 0.058-0.908 0.908c-0.116-0.238-0.184-0.518-0.184-0.813 0-1.045 0.847-1.892 1.892-1.892 0.293 0 0.571 0.067 0.819 0.186l-0.011-0.005 5.5-5.5c-0.116-0.238-0.184-0.519-0.184-0.815 0-1.045 0.847-1.892 1.892-1.892 0.296 0 0.577 0.068 0.827 0.19l-0.011-0.005z"}})])},rn=[],on={name:"XcodeIcon",components:{SVGIcon:C.Z}},an=on,ln=(0,w.Z)(an,sn,rn,!1,null,null,null),cn=ln.exports,un=n(8785),dn=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"inline-download-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-download"}},[t("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5z"}}),t("path",{attrs:{d:"M7.51 2.964l-0.001 5.431 1.308-2.041 0.842 0.539-2.664 4.162-2.633-4.164 0.845-0.534 1.303 2.059 0.001-5.452z"}})])},pn=[],hn={name:"InlineDownloadIcon",components:{SVGIcon:C.Z}},mn=hn,vn=(0,w.Z)(mn,dn,pn,!1,null,null,null),fn=vn.exports,gn={name:"HeroMetadata",components:{InlineDownloadIcon:fn,InlineChevronRightIcon:un.Z,DownloadIcon:nn.Z,XcodeIcon:cn},inject:["isTargetIDE"],props:{projectFilesUrl:{type:String},estimatedTimeInMinutes:{type:Number},xcodeRequirement:{type:Object,required:!1}}},yn=gn,Cn=(0,w.Z)(yn,en,tn,!1,null,"94ff76c0",null),bn=Cn.exports,_n={name:"Hero",components:{PlayIcon:Yt.Z,GenericModal:Xt.Z,Column:{render(e){return e(kt.Z,{props:{span:{large:7,medium:9,small:12}}},this.$slots.default)}},ContentNode:Pe["default"],Headline:Kt,Metadata:bn,Row:wt.Z,Asset:Ae.Z,LinkableSection:tt},mixins:[I.Z],props:{title:{type:String,required:!0},chapter:{type:String},content:{type:Array},projectFiles:{type:String},estimatedTimeInMinutes:{type:Number},xcodeRequirement:{type:String,required:!1},video:{type:String},backgroundImage:{type:String}},computed:{backgroundImageUrl(){const e=this.references[this.backgroundImage]||{},{variants:t=[]}=e,n=t.find((e=>e.traits.includes("light")));return(0,Jt.AH)((n||{}).url)},projectFilesUrl(){return this.projectFiles?(0,Jt.AH)(this.references[this.projectFiles].url):null},bgStyle(){return{backgroundImage:(0,Jt.eZ)(this.backgroundImageUrl)}},xcodeRequirementData(){return this.references[this.xcodeRequirement]},sectionTitle(){return"Introduction"}},data(){return{callToActionModalVisible:!1}},methods:{async toggleCallToActionModal(){this.callToActionModalVisible=!0,await this.$nextTick();const e=this.$refs.asset.$el.querySelector("video");if(e)try{await e.play(),e.muted=!1}catch(t){}},handleVideoEnd(){this.callToActionModalVisible=!1}}},wn=_n,kn=(0,w.Z)(wn,Lt,Ft,!1,null,"2a434750",null),Sn=kn.exports,xn={name:"Hero",components:{TutorialHero:Sn},props:Sn.props},In=xn,Tn=(0,w.Z)(In,Ot,Bt,!1,null,"35a9482f",null),An=Tn.exports,$n=function(){var e=this,t=e._self._c;return t("TutorialAssessments",e._b({scopedSlots:e._u([{key:"success",fn:function(){return[t("p",[e._v("Great job, you've answered all the questions for this article.")])]},proxy:!0}])},"TutorialAssessments",e.$props,!1))},Nn=[],Pn=function(){var e=this,t=e._self._c;return t("LinkableSection",{staticClass:"assessments-wrapper",attrs:{anchor:e.anchor,title:e.title}},[t("Row",{ref:"assessments",staticClass:"assessments"},[t("MainColumn",[t("Row",{staticClass:"banner"},[t("HeaderColumn",[t("h2",{staticClass:"title"},[e._v(e._s(e.title))])])],1),e.completed?t("div",{staticClass:"success"},[e._t("success",(function(){return[t("p",[e._v(e._s(e.SuccessMessage))])]}))],2):t("div",[t("Progress",e._b({ref:"progress"},"Progress",e.progress,!1)),t("Quiz",{key:e.activeIndex,attrs:{choices:e.activeAssessment.choices,content:e.activeAssessment.content,isLast:e.isLast,title:e.activeAssessment.title},on:{submit:e.onSubmit,advance:e.onAdvance,"see-results":e.onSeeResults}})],1),t("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"assertive"}},[e.completed?e._t("success",(function(){return[e._v(" "+e._s(e.SuccessMessage)+" ")]})):e._e()],2)],1)],1)],1)},qn=[],Dn=function(){var e=this,t=e._self._c;return t("Row",[t("p",{staticClass:"title"},[e._v(e._s(e.$t("tutorials.question-of",{index:e.index,total:e.total})))])])},Zn=[],Rn={name:"AssessmentsProgress",components:{Row:wt.Z},props:{index:{type:Number,required:!0},total:{type:Number,required:!0}}},Mn=Rn,On=(0,w.Z)(Mn,Dn,Zn,!1,null,"28135d78",null),Bn=On.exports,Ln=function(){var e=this,t=e._self._c;return t("div",{staticClass:"quiz"},[t("ContentNode",{staticClass:"title",attrs:{content:e.title}}),e.content?t("ContentNode",{staticClass:"question-content",attrs:{content:e.content}}):e._e(),t("fieldset",{staticClass:"choices"},[t("legend",{staticClass:"visuallyhidden"},[e._v(e._s(e.$t("tutorials.assessment.legend")))]),e._l(e.choices,(function(n,s){return t("label",{key:s,class:e.choiceClasses[s]},[t(e.getIconComponent(s),{tag:"component",staticClass:"choice-icon"}),t("input",{directives:[{name:"model",rawName:"v-model",value:e.selectedIndex,expression:"selectedIndex"}],attrs:{type:"radio",name:"assessment"},domProps:{value:s,checked:e._q(e.selectedIndex,s)},on:{change:function(t){e.selectedIndex=s}}}),t("ContentNode",{staticClass:"question",attrs:{content:n.content}}),e.userChoices[s].checked?[t("ContentNode",{staticClass:"answer",attrs:{content:n.justification}}),n.reaction?t("p",{staticClass:"answer"},[e._v(e._s(n.reaction))]):e._e()]:e._e()],2)}))],2),t("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"assertive"}},[null!=e.checkedIndex?t("i18n",{attrs:{path:"tutorials.assessment.answer-result",tag:"span"},scopedSlots:e._u([{key:"answer",fn:function(){return[t("ContentNode",{staticClass:"question",attrs:{content:e.choices[e.checkedIndex].content}})]},proxy:!0},{key:"result",fn:function(){return[e._v(e._s(e.choices[e.checkedIndex].isCorrect?e.$t("tutorials.assessment.correct"):e.$t("tutorials.assessment.incorrect")))]},proxy:!0}],null,!1,511264553)}):e._e()],1),t("div",{staticClass:"controls"},[t("ButtonLink",{staticClass:"check",attrs:{disabled:null===e.selectedIndex||e.showNextQuestion},nativeOn:{click:function(t){return e.submit.apply(null,arguments)}}},[e._v(" "+e._s(e.$t("tutorials.submit"))+" ")]),e.isLast?t("ButtonLink",{staticClass:"results",attrs:{disabled:!e.showNextQuestion},nativeOn:{click:function(t){return e.seeResults.apply(null,arguments)}}},[e._v(" "+e._s(e.$t("tutorials.next"))+" ")]):t("ButtonLink",{staticClass:"next",attrs:{disabled:!e.showNextQuestion},nativeOn:{click:function(t){return e.advance.apply(null,arguments)}}},[e._v(" "+e._s(e.$t("tutorials.assessment.next-question"))+" ")])],1)],1)},Fn=[],Vn=n(5281),jn=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"reset-circle-icon",attrs:{viewBox:"0 0 14 14",themeId:"reset-circle"}},[t("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),t("path",{attrs:{d:"M3.828 4.539l0.707-0.707 5.657 5.657-0.707 0.707-5.657-5.657z"}}),t("path",{attrs:{d:"M3.828 9.489l5.657-5.657 0.707 0.707-5.657 5.657-0.707-0.707z"}})])},En=[],Hn={name:"ResetCircleIcon",components:{SVGIcon:C.Z}},Un=Hn,zn=(0,w.Z)(Un,jn,En,!1,null,null,null),Gn=zn.exports,Wn=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"check-circle-icon",attrs:{viewBox:"0 0 14 14",themeId:"check-circle"}},[t("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),t("path",{attrs:{d:"M9.626 3.719l0.866 0.5-3.5 6.062-3.464-2 0.5-0.866 2.6 1.5z"}})])},Qn=[],Kn={name:"CheckCircleIcon",components:{SVGIcon:C.Z}},Xn=Kn,Yn=(0,w.Z)(Xn,Wn,Qn,!1,null,null,null),Jn=Yn.exports,es={name:"Quiz",components:{CheckCircleIcon:Jn,ResetCircleIcon:Gn,ContentNode:Pe["default"],ButtonLink:Vn.Z},props:{content:{type:Array,required:!1},choices:{type:Array,required:!0},isLast:{type:Boolean,default:!1},title:{type:Array,required:!0}},data(){return{userChoices:this.choices.map((()=>({checked:!1}))),selectedIndex:null,checkedIndex:null}},computed:{correctChoices(){return this.choices.reduce(((e,t,n)=>t.isCorrect?e.add(n):e),new Set)},choiceClasses(){return this.userChoices.map(((e,t)=>({choice:!0,active:this.selectedIndex===t,disabled:e.checked||this.showNextQuestion,correct:e.checked&&this.choices[t].isCorrect,incorrect:e.checked&&!this.choices[t].isCorrect})))},showNextQuestion(){return Array.from(this.correctChoices).every((e=>this.userChoices[e].checked))}},methods:{getIconComponent(e){const t=this.userChoices[e];if(t&&t.checked)return this.choices[e].isCorrect?Jn:Gn},submit(){this.$set(this.userChoices,this.selectedIndex,{checked:!0}),this.checkedIndex=this.selectedIndex,this.$emit("submit")},advance(){this.$emit("advance")},seeResults(){this.$emit("see-results")}}},ts=es,ns=(0,w.Z)(ts,Ln,Fn,!1,null,"61b03ec2",null),ss=ns.exports;const is=12,rs="tutorials.assessment.success-message";var os={name:"Assessments",constants:{SuccessMessage:rs},components:{LinkableSection:tt,Quiz:ss,Progress:Bn,Row:wt.Z,HeaderColumn:{render(e){return e(kt.Z,{props:{isCentered:{large:!0},span:{large:10}}},this.$slots.default)}},MainColumn:{render(e){return e(kt.Z,{props:{isCentered:{large:!0},span:{large:10,medium:10,small:12}}},this.$slots.default)}}},props:{assessments:{type:Array,required:!0},anchor:{type:String,required:!0}},inject:["navigationBarHeight"],data(){return{activeIndex:0,completed:!1,SuccessMessage:this.$t(rs)}},computed:{activeAssessment(){return this.assessments[this.activeIndex]},isLast(){return this.activeIndex===this.assessments.length-1},progress(){return{index:this.activeIndex+1,total:this.assessments.length}},title(){return this.$t("tutorials.assessment.check-your-understanding")}},methods:{scrollTo(e,t=0){e.scrollIntoView(!0),window.scrollBy(0,-this.navigationBarHeight-t)},onSubmit(){this.$nextTick((()=>{this.scrollTo(this.$refs.progress.$el,is)}))},onAdvance(){this.activeIndex+=1,this.$nextTick((()=>{this.scrollTo(this.$refs.progress.$el,is)}))},onSeeResults(){this.completed=!0,this.$nextTick((()=>{this.scrollTo(this.$refs.assessments.$el,is)}))}}},as=os,ls=(0,w.Z)(as,Pn,qn,!1,null,"65e3c02c",null),cs=ls.exports,us={name:"Assessments",components:{TutorialAssessments:cs},props:cs.props},ds=us,ps=(0,w.Z)(ds,$n,Nn,!1,null,"6db06128",null),hs=ps.exports;const ms={articleBody:"articleBody",callToAction:"callToAction",hero:"hero",assessments:"assessments"};var vs={name:"Article",components:{NavigationBar:be,PortalTarget:h.YC},mixins:[_e.Z],inject:{isTargetIDE:{default:!1},store:{default(){return{reset(){},setReferences(){}}}}},props:{hierarchy:{type:Object,required:!0},metadata:{type:Object,required:!0},references:{type:Object,required:!0},sections:{type:Array,required:!0,validator:e=>e.every((({kind:e})=>Object.prototype.hasOwnProperty.call(ms,e)))},identifierUrl:{type:String,required:!0}},computed:{heroSection(){return this.sections.find(this.isHero)},heroTitle(){return(this.heroSection||{}).title},pageTitle(){return this.heroTitle?`${this.heroTitle} — ${this.metadata.category} Tutorials`:void 0},pageDescription:({heroSection:e,extractFirstParagraphText:t})=>e?t(e.content):null},methods:{componentFor(e){const{kind:t}=e;return{[ms.articleBody]:vt,[ms.callToAction]:Mt,[ms.hero]:An,[ms.assessments]:hs}[t]},isHero(e){return e.kind===ms.hero},propsFor(e){const{abstract:t,action:n,anchor:s,assessments:i,backgroundImage:r,chapter:o,content:a,estimatedTimeInMinutes:l,kind:c,media:u,projectFiles:d,title:p,video:h,xcodeRequirement:m}=e;return{[ms.articleBody]:{content:a},[ms.callToAction]:{abstract:t,action:n,media:u,title:p},[ms.hero]:{backgroundImage:r,chapter:o,content:a,estimatedTimeInMinutes:l,projectFiles:d,title:p,video:h,xcodeRequirement:m},[ms.assessments]:{anchor:s,assessments:i}}[c]}},created(){m["default"].setAvailableLocales(this.metadata.availableLocales),this.store.reset(),this.store.setReferences(this.references)},watch:{references(e){this.store.setReferences(e)},"metadata.availableLocales":function(e){m["default"].setAvailableLocales(e)}},SectionKind:ms},fs=vs,gs=(0,w.Z)(fs,d,p,!1,null,"1b2e3b6a",null),ys=gs.exports,Cs=function(){var e=this,t=e._self._c;return t("div",{staticClass:"tutorial"},[e.isTargetIDE?e._e():t("NavigationBar",{attrs:{technology:e.metadata.category,chapters:e.hierarchy.modules,topic:e.tutorialTitle||"",rootReference:e.hierarchy.reference,identifierUrl:e.identifierUrl}}),t("main",{attrs:{id:"main",tabindex:"0"}},[e._l(e.sections,(function(e,n){return t("Section",{key:n,attrs:{section:e}})})),t("BreakpointEmitter",{on:{change:e.handleBreakpointChange}})],2),t("PortalTarget",{attrs:{name:"modal-destination",multiple:""}})],1)},bs=[],_s=n(8571),ws=n(1825),ks=function(){var e=this,t=e._self._c;return t("div",{staticClass:"sections"},e._l(e.tasks,(function(n,s){return t("Section",e._b({key:s,attrs:{id:n.anchor,sectionNumber:s+1,isRuntimePreviewVisible:e.isRuntimePreviewVisible},on:{"runtime-preview-toggle":e.onRuntimePreviewToggle}},"Section",n,!1))})),1)},Ss=[],xs=function(){var e=this,t=e._self._c;return t("LinkableSection",{staticClass:"section",attrs:{anchor:e.anchor,title:e.introProps.title}},[t("Intro",e._b({},"Intro",e.introProps,!1)),e.stepsSection.length>0?t("Steps",{attrs:{content:e.stepsSection,isRuntimePreviewVisible:e.isRuntimePreviewVisible,sectionNumber:e.sectionNumber},on:{"runtime-preview-toggle":e.onRuntimePreviewToggle}}):e._e()],1)},Is=[],Ts=function(){var e=this,t=e._self._c;return t("div",{staticClass:"intro-container"},[t("Row",{class:["intro",`intro-${e.sectionNumber}`,{ide:e.isTargetIDE}]},[t("Column",{staticClass:"left"},[t("Headline",{attrs:{level:2},scopedSlots:e._u([{key:"eyebrow",fn:function(){return[t("router-link",{attrs:{to:e.sectionLink}},[e._v(" "+e._s(e.$t("sections.title",{number:e.sectionNumber}))+" ")])]},proxy:!0}])},[e._v(" "+e._s(e.title)+" ")]),t("ContentNode",{attrs:{content:e.content}})],1),t("Column",{staticClass:"right"},[t("div",{staticClass:"media"},[e.media?t("Asset",{attrs:{identifier:e.media,showsReplayButton:!e.isClientMobile,showsVideoControls:e.isClientMobile,videoAutoplays:!e.isClientMobile}}):e._e()],1)])],1),e.expandedSections.length>0?t("ExpandedIntro",{staticClass:"expanded-intro",attrs:{content:e.expandedSections}}):e._e()],1)},As=[],$s={name:"SectionIntro",inject:{isClientMobile:{default:()=>!1},isTargetIDE:{default:()=>!1}},components:{Asset:Ae.Z,ContentNode:Pe["default"],ExpandedIntro:dt,Headline:Kt,Row:wt.Z,Column:{render(e){return e(kt.Z,{props:{span:{large:6,small:12}}},this.$slots.default)}}},props:{sectionAnchor:{type:String,required:!0},content:{type:Array,required:!0},media:{type:String,required:!0},title:{type:String,required:!0},sectionNumber:{type:Number,required:!0},expandedSections:{type:Array,default:()=>[]}},methods:{focus(){this.$emit("focus",this.media)}},computed:{sectionLink(){return{path:this.$route.path,hash:this.sectionAnchor,query:this.$route.query}}}},Ns=$s,Ps=(0,w.Z)(Ns,Ts,As,!1,null,"4a7343c7",null),qs=Ps.exports,Ds=function(){var e=this,t=e._self._c;return t("div",{staticClass:"steps"},[t("div",{staticClass:"content-container"},e._l(e.contentNodes,(function(n,s){return t(n.component,e._b({key:s,ref:"contentNodes",refInFor:!0,tag:"component",class:e.contentClass(s),attrs:{currentIndex:e.activeStep}},"component",n.props,!1))})),1),e.isBreakpointSmall?e._e():t("BackgroundTheme",{staticClass:"asset-container",class:e.assetContainerClasses},[t("transition",{attrs:{name:"fade"}},[e.visibleAsset.media?t("div",{key:e.visibleAsset.media,class:["asset-wrapper",{ide:e.isTargetIDE}]},[t("Asset",{ref:"asset",staticClass:"step-asset",attrs:{identifier:e.visibleAsset.media,showsReplayButton:"",showsVideoControls:!1}})],1):e._e(),e.visibleAsset.code?t("CodePreview",{attrs:{code:e.visibleAsset.code,preview:e.visibleAsset.runtimePreview,isRuntimePreviewVisible:e.isRuntimePreviewVisible},on:{"runtime-preview-toggle":e.onRuntimePreviewToggle}},[e.visibleAsset.runtimePreview?t("transition",{attrs:{name:"fade"}},[t("Asset",{key:e.visibleAsset.runtimePreview,attrs:{identifier:e.visibleAsset.runtimePreview}})],1):e._e()],1):e._e()],1)],1)],1)},Zs=[],Rs=function(){var e=this,t=e._self._c;return t("div",{class:["code-preview",{ide:e.isTargetIDE}]},[t("CodeTheme",[e.code?t("CodeListing",e._b({attrs:{showLineNumbers:""}},"CodeListing",e.codeProps,!1)):e._e()],1),t("div",{staticClass:"runtime-preview",class:e.runtimePreviewClasses,style:e.previewStyles},[t("div",{staticClass:"runtimve-preview__container"},[t("button",{staticClass:"header",attrs:{disabled:!e.hasRuntimePreview,title:e.runtimePreviewTitle},on:{click:e.togglePreview}},[t("span",{staticClass:"runtime-preview-label",attrs:{"aria-label":e.textAriaLabel}},[e._v(e._s(e.togglePreviewText))]),t("DiagonalArrowIcon",{staticClass:"icon-inline preview-icon",class:[e.shouldDisplayHideLabel?"preview-hide":"preview-show"]})],1),t("transition",{on:{leave:e.handleLeave}},[t("div",{directives:[{name:"show",rawName:"v-show",value:e.shouldDisplayHideLabel,expression:"shouldDisplayHideLabel"}],staticClass:"runtime-preview-asset"},[e._t("default")],2)])],1)])],1)},Ms=[],Os=n(8233),Bs=n(6817),Ls=n(8093);const{BreakpointName:Fs}=o["default"].constants;function Vs({width:e,height:t},n=1){const s=400,i=e<=s?1.75:3;return{width:e/(i/n),height:t/(i/n)}}var js={name:"CodePreview",inject:{isTargetIDE:{default:!1},store:{default(){return{state:{references:{}}}}}},components:{DiagonalArrowIcon:Bs.Z,CodeListing:Os.Z,CodeTheme:Ls.Z},props:{code:{type:String,required:!0},preview:{type:String,required:!1},isRuntimePreviewVisible:{type:Boolean,required:!0}},data(){return{tutorialState:this.store.state}},computed:{references:({tutorialState:e})=>e.references,currentBreakpoint(){return this.tutorialState.breakpoint},hasRuntimePreview(){return!!this.preview},previewAssetSize(){const e=this.hasRuntimePreview?this.references[this.preview]:{},t=(e.variants||[{}])[0]||{},n={width:900};let s=t.size||{};s.width||s.height||(s=n);const i=this.currentBreakpoint===Fs.medium?.8:1;return Vs(s,i)},previewSize(){const e={width:102};return this.shouldDisplayHideLabel&&this.previewAssetSize?{width:this.previewAssetSize.width}:e},previewStyles(){const{width:e}=this.previewSize;return{width:`${e}px`}},codeProps(){return this.references[this.code]},runtimePreviewClasses(){return{collapsed:!this.shouldDisplayHideLabel,disabled:!this.hasRuntimePreview,"runtime-preview-ide":this.isTargetIDE}},shouldDisplayHideLabel(){return this.hasRuntimePreview&&this.isRuntimePreviewVisible},runtimePreviewTitle(){return this.hasRuntimePreview?null:this.$t("tutorials.preview.no-preview-available-step")},togglePreviewText(){return this.$tc("tutorials.preview.title",this.hasRuntimePreview?1:0)},textAriaLabel(){return`${this.togglePreviewText}, ${this.shouldDisplayHideLabel?this.$t("verbs.hide"):this.$t("verbs.show")}`}},methods:{handleLeave(e,t){setTimeout(t,200)},togglePreview(){this.hasRuntimePreview&&this.$emit("runtime-preview-toggle",!this.isRuntimePreviewVisible)}}},Es=js,Hs=(0,w.Z)(Es,Rs,Ms,!1,null,"395e30cd",null),Us=Hs.exports,zs=n(5657),Gs=function(){var e=this,t=e._self._c;return t("div",{style:e.backgroundStyle},[e._t("default")],2)},Ws=[],Qs={name:"BackgroundTheme",data(){return{codeThemeState:_s.Z.state}},computed:{backgroundStyle(){const{codeColors:e}=this.codeThemeState;return e?{"--background":e.background}:null}}},Ks=Qs,Xs=(0,w.Z)(Ks,Gs,Ws,!1,null,null,null),Ys=Xs.exports,Js=function(){var e=this,t=e._self._c;return t("div",{class:["step-container",`step-${e.stepNumber}`]},[t("div",{ref:"step",staticClass:"step",class:{focused:e.isActive},attrs:{"data-index":e.index}},[t("p",{staticClass:"step-label"},[e._v(e._s(e.$t("tutorials.step",{number:e.stepNumber})))]),t("ContentNode",{attrs:{content:e.content}}),e.caption&&e.caption.length>0?t("ContentNode",{staticClass:"caption",attrs:{content:e.caption}}):e._e()],1),e.isBreakpointSmall||!e.isTargetIDE?t("div",{staticClass:"media-container"},[e.media?t("Asset",{attrs:{identifier:e.media,showsReplayButton:!e.isClientMobile,showsVideoControls:e.isClientMobile,videoAutoplays:!e.isClientMobile}}):e._e(),e.code?t("MobileCodePreview",{attrs:{code:e.code}},[e.runtimePreview?t("Asset",{staticClass:"preview",attrs:{identifier:e.runtimePreview}}):e._e()],1):e._e()],1):e._e()])},ei=[],ti=function(){var e=this,t=e._self._c;return t("BackgroundTheme",{staticClass:"mobile-code-preview"},[e.code?t("GenericModal",{staticClass:"full-code-listing-modal",attrs:{theme:e.isTargetIDE?"code":"light",codeBackgroundColorOverride:e.modalBackgroundColor,isFullscreen:"",visible:e.fullCodeIsVisible},on:{"update:visible":function(t){e.fullCodeIsVisible=t}}},[t("div",{staticClass:"full-code-listing-modal-content"},[t("CodeTheme",[t("CodeListing",e._b({staticClass:"full-code-listing",attrs:{showLineNumbers:""}},"CodeListing",e.codeProps,!1))],1)],1)]):e._e(),t("CodeTheme",[e.code?t("MobileCodeListing",e._b({attrs:{showLineNumbers:""},on:{"file-name-click":e.toggleFullCode}},"MobileCodeListing",e.codeProps,!1)):e._e()],1),t("CodeTheme",{staticClass:"preview-toggle-container"},[t("PreviewToggle",{attrs:{isActionable:!!e.$slots.default},on:{click:e.togglePreview}})],1),e.$slots.default?t("GenericModal",{staticClass:"runtime-preview-modal",attrs:{theme:e.isTargetIDE?"dynamic":"light",isFullscreen:"",visible:e.previewIsVisible},on:{"update:visible":function(t){e.previewIsVisible=t}}},[t("div",{staticClass:"runtime-preview-modal-content"},[t("span",{staticClass:"runtime-preview-label"},[e._v(e._s(e.$tc("tutorials.preview.title",1)))]),e._t("default")],2)]):e._e()],1)},ni=[],si=function(){var e=this,t=e._self._c;return t("div",{staticClass:"code-listing-preview",attrs:{"data-syntax":e.syntax}},[t("CodeListing",{attrs:{fileName:e.fileName,syntax:e.syntax,fileType:e.fileType,content:e.previewedLines,startLineNumber:e.displayedRange.start,highlights:e.highlights,showLineNumbers:"",isFileNameActionable:""},on:{"file-name-click":function(t){return e.$emit("file-name-click")}}})],1)},ii=[],ri={name:"MobileCodeListing",components:{CodeListing:Os.Z},props:{fileName:String,syntax:String,fileType:String,content:{type:Array,required:!0},highlights:{type:Array,default:()=>[]}},computed:{highlightedLineNumbers(){return new Set(this.highlights.map((({line:e})=>e)))},firstHighlightRange(){if(0===this.highlightedLineNumbers.size)return{start:1,end:this.content.length};const e=Math.min(...this.highlightedLineNumbers.values());let t=e;while(this.highlightedLineNumbers.has(t+1))t+=1;return{start:e,end:t}},displayedRange(){const e=this.firstHighlightRange,t=e.start-2<1?1:e.start-2,n=e.end+3>=this.content.length+1?this.content.length+1:e.end+3;return{start:t,end:n}},previewedLines(){return this.content.slice(this.displayedRange.start-1,this.displayedRange.end-1)}}},oi=ri,ai=(0,w.Z)(oi,si,ii,!1,null,"0bdf2f26",null),li=ai.exports,ci=function(){var e=this,t=e._self._c;return t("span",{staticClass:"toggle-preview"},[e.isActionable?t("a",{staticClass:"toggle-text",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[e._v(" "+e._s(e.$tc("tutorials.preview.title",1))+" "),t("InlinePlusCircleIcon",{staticClass:"toggle-icon icon-inline"})],1):t("span",{staticClass:"toggle-text"},[e._v(" "+e._s(e.$tc("tutorials.preview.title",0))+" ")])])},ui=[],di=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"inline-plus-circle-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-plus-circle"}},[t("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),t("path",{attrs:{d:"M4 6.52h6v1h-6v-1z"}}),t("path",{attrs:{d:"M6.5 4.010h1v6h-1v-6z"}})])},pi=[],hi={name:"InlinePlusCircleIcon",components:{SVGIcon:C.Z}},mi=hi,vi=(0,w.Z)(mi,di,pi,!1,null,null,null),fi=vi.exports,gi={name:"MobileCodePreviewToggle",components:{InlinePlusCircleIcon:fi},props:{isActionable:{type:Boolean,required:!0}}},yi=gi,Ci=(0,w.Z)(yi,ci,ui,!1,null,"78763c14",null),bi=Ci.exports,_i={name:"MobileCodePreview",inject:["isTargetIDE"],mixins:[I.Z],components:{GenericModal:Xt.Z,CodeListing:Os.Z,MobileCodeListing:li,PreviewToggle:bi,CodeTheme:Ls.Z,BackgroundTheme:Ys},props:{code:{type:String,required:!0}},computed:{codeProps(){return this.references[this.code]},modalBackgroundColor(){const{codeColors:e}=this.store.state;return e?e.background:null}},data(){return{previewIsVisible:!1,fullCodeIsVisible:!1}},methods:{togglePreview(){this.previewIsVisible=!this.previewIsVisible},toggleFullCode(){this.fullCodeIsVisible=!this.fullCodeIsVisible}}},wi=_i,ki=(0,w.Z)(wi,ti,ni,!1,null,"b1691954",null),Si=ki.exports;const{BreakpointName:xi}=o["default"].constants;var Ii={name:"Step",components:{Asset:Ae.Z,MobileCodePreview:Si,ContentNode:Pe["default"]},inject:["isTargetIDE","isClientMobile","store"],props:{code:{type:String,required:!1},content:{type:Array,required:!0},caption:{type:Array,required:!1},media:{type:String,required:!1},runtimePreview:{type:String,required:!1},sectionNumber:{type:Number,required:!0},stepNumber:{type:Number,required:!0},numberOfSteps:{type:Number,required:!0},index:{type:Number,required:!0},currentIndex:{type:Number,required:!0}},data(){return{tutorialState:this.store.state}},computed:{isBreakpointSmall(){return this.tutorialState.breakpoint===xi.small},isActive:({index:e,currentIndex:t})=>e===t}},Ti=Ii,Ai=(0,w.Z)(Ti,Js,ei,!1,null,"1f74235c",null),$i=Ai.exports;const{BreakpointName:Ni}=o["default"].constants,{IntersectionDirections:Pi}=Xe["default"].constants,qi="-35% 0% -65% 0%";var Di={name:"SectionSteps",components:{ContentNode:Pe["default"],Step:$i,Asset:Ae.Z,CodePreview:Us,BackgroundTheme:Ys},mixins:[Xe["default"]],constants:{IntersectionMargins:qi},inject:["isTargetIDE","store"],data(){const e=this.content.findIndex(this.isStepNode),{code:t,media:n,runtimePreview:s}=this.content[e]||{};return{tutorialState:this.store.state,visibleAsset:{media:n,code:t,runtimePreview:s},activeStep:e}},computed:{assetContainerClasses(){return{"for-step-code":!!this.visibleAsset.code,ide:this.isTargetIDE}},numberOfSteps(){return this.content.filter(this.isStepNode).length},contentNodes(){return this.content.reduce((({stepCounter:e,nodes:t},n,s)=>{const{type:i,...r}=n,o=this.isStepNode(n),a=o?e+1:e;return o?{stepCounter:e+1,nodes:t.concat({component:$i,type:i,props:{...r,stepNumber:a,index:s,numberOfSteps:this.numberOfSteps,sectionNumber:this.sectionNumber}})}:{stepCounter:e,nodes:t.concat({component:Pe["default"],type:i,props:{content:[n]}})}}),{stepCounter:0,nodes:[]}).nodes},isBreakpointSmall(){return this.tutorialState.breakpoint===Ni.small},stepNodes:({contentNodes:e,isStepNode:t})=>e.filter(t),intersectionRootMargin:()=>qi},async mounted(){await(0,zs.J)(8),this.findClosestStepNode()},methods:{isStepNode({type:e}){return"step"===e},contentClass(e){return{[`interstitial interstitial-${e+1}`]:!this.isStepNode(this.content[e])}},onReverseIntoLastStep(){const{asset:e}=this.$refs;if(e){const t=e.$el.querySelector("video");t&&(t.currentTime=0,t.play().catch((()=>{})))}},onFocus(e){const{code:t,media:n,runtimePreview:s}=this.content[e];this.activeStep=e,this.visibleAsset={code:t,media:n,runtimePreview:s}},onRuntimePreviewToggle(e){this.$emit("runtime-preview-toggle",e)},findClosestStepNode(){const e=.333*window.innerHeight;let t=null,n=0;this.stepNodes.forEach((s=>{const{index:i}=s.props,r=this.$refs.contentNodes[i].$refs.step;if(!r)return;const{top:o,bottom:a}=r.getBoundingClientRect(),l=o-e,c=a-e,u=Math.abs(l+c);(0===n||u<=n)&&(n=u,t=i)})),null!==t&&this.onFocus(t)},getIntersectionTargets(){const{stepNodes:e,$refs:t}=this;return e.map((({props:{index:e}})=>t.contentNodes[e].$refs.step))},onIntersect(e){const{target:t,isIntersecting:n}=e;if(!n)return;const s=parseFloat(t.getAttribute("data-index"));this.intersectionScrollDirection===Pi.down&&s===this.stepNodes[this.stepNodes.length-1].props.index&&this.onReverseIntoLastStep(),this.onFocus(s)}},props:{content:{type:Array,required:!0},isRuntimePreviewVisible:{type:Boolean,require:!0},sectionNumber:{type:Number,required:!0}}},Zi=Di,Ri=(0,w.Z)(Zi,Ds,Zs,!1,null,"c87bb95a",null),Mi=Ri.exports,Oi={name:"Section",components:{Intro:qs,LinkableSection:tt,Steps:Mi},computed:{introProps(){const[{content:e,media:t},...n]=this.contentSection;return{content:e,expandedSections:n,media:t,sectionAnchor:this.anchor,sectionNumber:this.sectionNumber,title:this.title}}},props:{anchor:{type:String,required:!0},title:{type:String,required:!0},contentSection:{type:Array,required:!0},stepsSection:{type:Array,required:!0},sectionNumber:{type:Number,required:!0},isRuntimePreviewVisible:{type:Boolean,required:!0}},methods:{onRuntimePreviewToggle(e){this.$emit("runtime-preview-toggle",e)}}},Bi=Oi,Li=(0,w.Z)(Bi,xs,Is,!1,null,"6b3a0b3a",null),Fi=Li.exports,Vi={name:"SectionList",components:{Section:Fi},data(){return{isRuntimePreviewVisible:!0}},props:{tasks:{type:Array,required:!0}},methods:{onRuntimePreviewToggle(e){this.isRuntimePreviewVisible=e}}},ji=Vi,Ei=(0,w.Z)(ji,ks,Ss,!1,null,"79a75e9e",null),Hi=Ei.exports;const Ui={assessments:cs,hero:Sn,tasks:Hi,callToAction:qt},zi=new Set(Object.keys(Ui)),Gi={name:"TutorialSection",render:function(e){const{kind:t,...n}=this.section,s=Ui[t];return s?e(s,{props:n}):null},props:{section:{type:Object,required:!0,validator:e=>zi.has(e.kind)}}};var Wi={name:"Tutorial",mixins:[_e.Z,ws.Z],components:{NavigationBar:be,Section:Gi,PortalTarget:h.YC,BreakpointEmitter:o["default"]},inject:["isTargetIDE","store"],computed:{heroSection(){return this.sections.find((({kind:e})=>"hero"===e))},tutorialTitle(){return(this.heroSection||{}).title},pageTitle(){return this.tutorialTitle?`${this.tutorialTitle} — ${this.metadata.category} Tutorials`:void 0},pageDescription:({heroSection:e,extractFirstParagraphText:t})=>e?t(e.content):null},props:{sections:{type:Array,required:!0},references:{type:Object,required:!0},hierarchy:{type:Object,required:!0},metadata:{type:Object,required:!0},identifierUrl:{type:String,required:!0}},methods:{handleBreakpointChange(e){this.store.updateBreakpoint(e)},handleCodeColorsChange(e){_s.Z.updateCodeColors(e)}},created(){m["default"].setAvailableLocales(this.metadata.availableLocales),this.store.reset(),this.store.setReferences(this.references)},watch:{references(e){this.store.setReferences(e)},"metadata.availableLocales":function(e){m["default"].setAvailableLocales(e)}},mounted(){this.$bridge.on("codeColors",this.handleCodeColorsChange),this.$bridge.send({type:"requestCodeColors"})},provide(){return{isClientMobile:this.isClientMobile}},beforeDestroy(){this.$bridge.off("codeColors",this.handleCodeColorsChange)}},Qi=Wi,Ki=(0,w.Z)(Qi,Cs,bs,!1,null,"566b3655",null),Xi=Ki.exports,Yi=n(1789),Ji=n(5184);const er={article:"article",tutorial:"project"};var tr={name:"Topic",inject:{isTargetIDE:{default:!1}},mixins:[Yi.Z,Ji.Z],data(){return{topicData:null}},computed:{navigationBarHeight(){return this.isTargetIDE?0:52},store(){return u},hierarchy(){const{hierarchy:e={}}=this.topicData,{technologyNavigation:t=["overview","tutorials","resources"]}=e||{};return{...e,technologyNavigation:t}},topicKey:({$route:e,topicData:t})=>[e.path,t.identifier.interfaceLanguage].join()},beforeRouteEnter(e,t,n){e.meta.skipFetchingData?n((e=>e.newContentMounted())):(0,r.Ek)(e,t,n).then((e=>n((t=>{t.topicData=e})))).catch(n)},beforeRouteUpdate(e,t,n){(0,r.Us)(e,t)?(0,r.Ek)(e,t,n).then((e=>{this.topicData=e,n()})).catch(n):n()},created(){this.store.reset()},mounted(){this.$bridge.on("contentUpdate",this.handleContentUpdateFromBridge)},beforeDestroy(){this.$bridge.off("contentUpdate",this.handleContentUpdateFromBridge)},methods:{componentFor(e){const{kind:t}=e;return{[er.article]:ys,[er.tutorial]:Xi}[t]},propsFor(e){const{hierarchy:t,kind:n,metadata:s,references:i,sections:r,identifier:o}=e;return{[er.article]:{hierarchy:t,metadata:s,references:i,sections:r,identifierUrl:o.url},[er.tutorial]:{hierarchy:t,metadata:s,references:i,sections:r,identifierUrl:o.url}}[n]}},provide(){return{navigationBarHeight:this.navigationBarHeight,store:this.store}},watch:{topicData(){this.$nextTick((()=>{this.newContentMounted()}))}}},nr=tr,sr=(0,w.Z)(nr,s,i,!1,null,null,null),ir=sr.exports}}]); \ No newline at end of file diff --git a/docs/js/topic.37e71576.js b/docs/js/topic.37e71576.js new file mode 100644 index 0000000..dd8efc7 --- /dev/null +++ b/docs/js/topic.37e71576.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +"use strict";(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[162],{7214:function(e,t,n){n.d(t,{Z:function(){return u}});var s=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"download-icon",attrs:{viewBox:"0 0 14 14",themeId:"download"}},[t("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5z"}}),t("path",{attrs:{d:"M7.51 2.964l-0.001 5.431 1.308-2.041 0.842 0.539-2.664 4.162-2.633-4.164 0.845-0.534 1.303 2.059 0.001-5.452z"}})])},i=[],r=n(9742),o={name:"DownloadIcon",components:{SVGIcon:r.Z}},a=o,l=n(1001),c=(0,l.Z)(a,s,i,!1,null,null,null),u=c.exports},2573:function(e,t,n){n.d(t,{Z:function(){return c}});var s=function(){var e=this,t=e._self._c;return t("router-link",{staticClass:"nav-title-content",attrs:{to:e.to}},[t("span",{staticClass:"title"},[e._t("default")],2),t("span",{staticClass:"subhead"},[e._v(" "),e._t("subhead")],2)])},i=[],r={name:"NavTitleContainer",props:{to:{type:[String,Object],required:!0}}},o=r,a=n(1001),l=(0,a.Z)(o,s,i,!1,null,"854b4dd6",null),c=l.exports},2726:function(e,t,n){n.r(t),n.d(t,{default:function(){return Yi}});var s=function(){var e=this,t=e._self._c;return t("div",[e.topicData?t(e.componentFor(e.topicData),e._b({key:e.topicKey,tag:"component",attrs:{hierarchy:e.hierarchy}},"component",e.propsFor(e.topicData),!1)):e._e()],1)},i=[],r=n(8841),o=n(7188);const{BreakpointName:a}=o["default"].constants;var l,c,u={state:{linkableSections:[],breakpoint:a.large,references:{}},addLinkableSection(e){const t={...e,visibility:0};t.sectionNumber=this.state.linkableSections.length,this.state.linkableSections.push(t)},reset(){this.state.linkableSections=[],this.state.breakpoint=a.large,this.state.references={}},updateLinkableSection(e){this.state.linkableSections=this.state.linkableSections.map((t=>e.anchor===t.anchor?{...t,visibility:e.visibility}:t))},updateBreakpoint(e){this.state.breakpoint=e},setReferences(e){this.state.references=e}},d=function(){var e=this,t=e._self._c;return t("div",{staticClass:"article"},[e.isTargetIDE?e._e():t("NavigationBar",{attrs:{chapters:e.hierarchy.modules,technology:e.metadata.category,topic:e.heroTitle||"",rootReference:e.hierarchy.reference,identifierUrl:e.identifierUrl}}),t("main",{attrs:{id:"app-main",tabindex:"0"}},[e._t("above-hero"),e._l(e.sections,(function(n,s){return t(e.componentFor(n),e._b({key:s,tag:"component"},"component",e.propsFor(n),!1))}))],2),t("PortalTarget",{attrs:{name:"modal-destination",multiple:""}})],1)},p=[],h=n(2433),m=n(4030),v=function(){var e=this,t=e._self._c;return t("NavBase",{attrs:{id:"nav","aria-label":e.technology,hasSolidBackground:""},scopedSlots:e._u([{key:"default",fn:function(){return[t("ReferenceUrlProvider",{attrs:{reference:e.rootReference},scopedSlots:e._u([{key:"default",fn:function({urlWithParams:n}){return[t("NavTitleContainer",{attrs:{to:n},scopedSlots:e._u([{key:"default",fn:function(){return[e._v(e._s(e.technology))]},proxy:!0},{key:"subhead",fn:function(){return[e._v(e._s(e.$tc("tutorials.title",2)))]},proxy:!0}],null,!0)})]}}])})]},proxy:!0},{key:"after-title",fn:function(){return[t("div",{staticClass:"separator"})]},proxy:!0},{key:"tray",fn:function(){return[t("div",{staticClass:"mobile-dropdown-container"},[t("MobileDropdown",{attrs:{options:e.chapters,sections:e.optionsForSections,currentOption:e.currentSection?e.currentSection.title:""},on:{"select-section":e.onSelectSection}})],1),t("div",{staticClass:"dropdown-container"},[t("PrimaryDropdown",{staticClass:"primary-dropdown",attrs:{options:e.chapters,currentOption:e.topic}}),t("ChevronIcon",{staticClass:"icon-inline"}),e.currentSection?t("SecondaryDropdown",{staticClass:"secondary-dropdown",attrs:{options:e.optionsForSections,currentOption:e.currentSection.title,sectionTracker:e.sectionIndicatorText},on:{"select-section":e.onSelectSection}}):e._e()],1),e._t("tray",null,{siblings:e.chapters.length+e.optionsForSections.length})]},proxy:!0}],null,!0)})},f=[],g=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"chevron-icon",attrs:{viewBox:"0 0 14 14",themeId:"chevron"}},[t("path",{attrs:{d:"M3.22 1.184l0.325-0.38 7.235 6.201-7.235 6.19-0.325-0.38 6.792-5.811-6.792-5.82z"}})])},y=[],C=n(9742),b={name:"ChevronIcon",components:{SVGIcon:C.Z}},_=b,w=n(1001),k=(0,w.Z)(_,g,y,!1,null,null,null),S=k.exports,x=n(2449),A=n(5953),T={name:"ReferenceUrlProvider",mixins:[A.Z],props:{reference:{type:String,required:!0}},computed:{resolvedReference:({references:e,reference:t})=>e[t]||{},url:({resolvedReference:e})=>e.url,title:({resolvedReference:e})=>e.title},render(){return this.$scopedSlots.default({url:this.url,urlWithParams:(0,x.Q2)(this.url,this.$route.query),title:this.title,reference:this.resolvedReference})}},I=T,$=(0,w.Z)(I,l,c,!1,null,null,null),N=$.exports,q=n(3704),P=n(2586),D=n(2573),Z=function(){var e=this,t=e._self._c;return t("NavMenuItems",{staticClass:"mobile-dropdown"},e._l(e.options,(function(n){return t("ReferenceUrlProvider",{key:n.reference,attrs:{reference:n.reference},scopedSlots:e._u([{key:"default",fn:function({title:s}){return[t("NavMenuItemBase",{staticClass:"chapter-list",attrs:{role:"group"}},[t("p",{staticClass:"chapter-name"},[e._v(e._s(s))]),t("ul",{staticClass:"tutorial-list"},e._l(n.projects,(function(n){return t("ReferenceUrlProvider",{key:n.reference,attrs:{reference:n.reference},scopedSlots:e._u([{key:"default",fn:function({url:n,urlWithParams:s,title:i}){return[t("li",{staticClass:"tutorial-list-item"},[t("router-link",{staticClass:"option tutorial",attrs:{to:s,value:i}},[e._v(" "+e._s(i)+" ")]),n===e.$route.path?t("ul",{staticClass:"section-list",attrs:{role:"listbox"}},e._l(e.sections,(function(n){return t("li",{key:n.title},[t("router-link",{class:e.classesFor(n),attrs:{to:{path:n.path,query:e.$route.query},value:n.title},nativeOn:{click:function(t){return e.onClick(n)}}},[e._v(" "+e._s(n.title)+" ")])],1)})),0):e._e()],1)]}}],null,!0)})})),1)])]}}],null,!0)})})),1)},R=[],O=n(535),L=n(2853),B={name:"MobileDropdown",components:{NavMenuItems:L.Z,NavMenuItemBase:O.Z,ReferenceUrlProvider:N},props:{options:{type:Array,required:!0},currentOption:{type:String,required:!0},sections:{type:Array,required:!1,default:()=>[]}},methods:{classesFor(e){return["option","section",{active:this.currentOption===e.title},this.depthClass(e)]},depthClass(e){const{depth:t=0}=e;return`depth${t}`},onClick(e){this.$emit("select-section",e.path)}}},M=B,F=(0,w.Z)(M,Z,R,!1,null,"2c27d339",null),V=F.exports,j=function(){var e=this,t=e._self._c;return t("DropdownCustom",{staticClass:"tutorial-dropdown",attrs:{value:e.currentOption,"aria-label":e.$t("tutorials.nav.current",{thing:e.$t("sections.title")}),isSmall:""},scopedSlots:e._u([{key:"toggle-post-content",fn:function(){return[t("span",{staticClass:"section-tracker"},[e._v(e._s(e.sectionTracker))])]},proxy:!0},{key:"default",fn:function({closeAndFocusToggler:n,contentClasses:s,navigateOverOptions:i,OptionClass:r,ActiveOptionClass:o}){return[t("ul",{staticClass:"options",class:s,attrs:{role:"listbox",tabindex:"0"}},e._l(e.options,(function(s){return t("router-link",{key:s.title,attrs:{to:{path:s.path,query:e.$route.query},custom:""},scopedSlots:e._u([{key:"default",fn:function({navigate:a}){return[t("li",{class:[r,{[o]:e.currentOption===s.title}],attrs:{value:s.title,"aria-selected":e.currentOption===s.title,"aria-current":e.ariaCurrent(s.title),tabindex:-1},on:{click:function(t){return e.setActive(s,a,n,t)},keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.setActive(s,a,n,t)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:n.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"tab",9,t.key,"Tab")?null:n.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),i(t,1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),i(t,-1))}]}},[e._v(" "+e._s(s.title)+" ")])]}}],null,!0)})})),1)]}}])})},E=[],H=function(){var e=this,t=e._self._c;return t("BaseDropdown",{staticClass:"dropdown-custom",class:{[e.OpenedClass]:e.isOpen,"dropdown-small":e.isSmall},attrs:{value:e.value},scopedSlots:e._u([{key:"dropdown",fn:function({dropdownClasses:n}){return[t("span",{staticClass:"visuallyhidden",attrs:{id:`DropdownLabel_${e._uid}`}},[e._v(e._s(e.ariaLabel))]),t("button",{ref:"dropdownToggle",staticClass:"form-dropdown-toggle",class:n,attrs:{id:`DropdownToggle_${e._uid}`,"aria-labelledby":`DropdownLabel_${e._uid} DropdownToggle_${e._uid}`,"aria-expanded":e.isOpen?"true":"false","aria-haspopup":"true"},on:{click:e.toggleDropdown,keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.openDropdown.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.closeAndFocusToggler.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),e.openDropdown.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),e.openDropdown.apply(null,arguments))}]}},[t("span",{staticClass:"form-dropdown-title"},[e._v(e._s(e.value))]),e._t("toggle-post-content")],2)]}},{key:"eyebrow",fn:function(){return[e._t("eyebrow")]},proxy:!0},{key:"after",fn:function(){return[e._t("default",null,null,{value:e.value,isOpen:e.isOpen,contentClasses:["form-dropdown-content",{"is-open":e.isOpen}],closeDropdown:e.closeDropdown,onChangeAction:e.onChangeAction,closeAndFocusToggler:e.closeAndFocusToggler,navigateOverOptions:e.navigateOverOptions,OptionClass:e.OptionClass,ActiveOptionClass:e.ActiveOptionClass})]},proxy:!0}],null,!0)})},U=[],z=function(){var e=this,t=e._self._c;return t("div",{staticClass:"form-element"},[e._t("dropdown",(function(){return[t("select",e._b({directives:[{name:"model",rawName:"v-model",value:e.modelValue,expression:"modelValue"}],class:e.dropdownClasses,on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,(function(e){return e.selected})).map((function(e){var t="_value"in e?e._value:e.value;return t}));e.modelValue=t.target.multiple?n:n[0]}}},"select",e.$attrs,!1),[e._t("default")],2)]}),{dropdownClasses:e.dropdownClasses,value:e.value}),t("InlineChevronDownIcon",{staticClass:"form-icon",attrs:{"aria-hidden":"true"}}),e.$slots.eyebrow?t("span",{staticClass:"form-label",attrs:{"aria-hidden":"true"}},[e._t("eyebrow")],2):e._e(),e._t("after")],2)},G=[],W=n(5151),Q={name:"BaseDropdown",inheritAttrs:!1,props:{value:{type:String,default:""}},components:{InlineChevronDownIcon:W.Z},computed:{modelValue:{get:({value:e})=>e,set(e){this.$emit("input",e)}},dropdownClasses({value:e}){return["form-dropdown",{"form-dropdown-selectnone":""===e,"no-eyebrow":!this.$slots.eyebrow}]}}},K=Q,X=(0,w.Z)(K,z,G,!1,null,"f934959a",null),Y=X.exports;const J="is-open",ee="option",te="option-active";var ne={name:"DropdownCustom",components:{BaseDropdown:Y},constants:{OpenedClass:J,OptionClass:ee,ActiveOptionClass:te},props:{value:{type:String,default:""},ariaLabel:{type:String,default:""},isSmall:{type:Boolean,default:!1}},data(){return{isOpen:!1,OpenedClass:J,OptionClass:ee,ActiveOptionClass:te}},mounted(){document.addEventListener("click",this.closeOnLoseFocus)},beforeDestroy(){document.removeEventListener("click",this.closeOnLoseFocus)},methods:{onChangeAction(e){this.$emit("input",e)},toggleDropdown(){this.isOpen?this.closeDropdown():this.openDropdown()},async closeAndFocusToggler(){this.closeDropdown(),await this.$nextTick(),this.$refs.dropdownToggle.focus({preventScroll:!0})},closeDropdown(){this.isOpen=!1,this.$emit("close")},openDropdown(){this.isOpen=!0,this.$emit("open"),this.focusActiveLink()},closeOnLoseFocus(e){!this.$el.contains(e.target)&&this.isOpen&&this.closeDropdown()},navigateOverOptions({target:e},t){const n=this.$el.querySelectorAll(`.${ee}`),s=Array.from(n),i=s.indexOf(e),r=s[i+t];r&&r.focus({preventScroll:!0})},async focusActiveLink(){const e=this.$el.querySelector(`.${te}`);e&&(await this.$nextTick(),e.focus({preventScroll:!0}))}}},se=ne,ie=(0,w.Z)(se,H,U,!1,null,"6adda760",null),re=ie.exports,oe={name:"SecondaryDropdown",components:{DropdownCustom:re},props:{options:{type:Array,required:!0},currentOption:{type:String,required:!0},sectionTracker:{type:String,required:!1}},methods:{ariaCurrent(e){return this.currentOption===e&&"section"},setActive(e,t,n,s){t(s),this.$emit("select-section",e.path),n()}}},ae=oe,le=(0,w.Z)(ae,j,E,!1,null,"618ff780",null),ce=le.exports,ue=function(){var e=this,t=e._self._c;return t("DropdownCustom",{staticClass:"tutorial-dropdown",attrs:{value:e.currentOption,"aria-label":e.$t("tutorials.nav.current",{thing:e.$tc("tutorials.title",1)}),isSmall:""},scopedSlots:e._u([{key:"default",fn:function({closeAndFocusToggler:n,contentClasses:s,closeDropdown:i,navigateOverOptions:r,OptionClass:o,ActiveOptionClass:a}){return[t("ul",{staticClass:"options",class:s,attrs:{tabindex:"0"}},e._l(e.options,(function(s){return t("ReferenceUrlProvider",{key:s.reference,attrs:{reference:s.reference},scopedSlots:e._u([{key:"default",fn:function({title:l}){return[t("li",{staticClass:"chapter-list",attrs:{role:"group"}},[t("p",{staticClass:"chapter-name"},[e._v(e._s(l))]),t("ul",{attrs:{role:"listbox"}},e._l(s.projects,(function(s){return t("ReferenceUrlProvider",{key:s.reference,attrs:{reference:s.reference},scopedSlots:e._u([{key:"default",fn:function({urlWithParams:s,title:l}){return[t("router-link",{attrs:{to:s,custom:""},scopedSlots:e._u([{key:"default",fn:function({navigate:s,isActive:c}){return[t("li",{class:{[o]:!0,[a]:c},attrs:{value:l,"aria-selected":c,"aria-current":!!c&&"tutorial",tabindex:-1},on:{click:function(t){return e.setActive(s,i,t)},keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.setActive(s,i,t)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:n.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"tab",9,t.key,"Tab")?null:n.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),r(t,1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),r(t,-1))}]}},[e._v(" "+e._s(l)+" ")])]}}],null,!0)})]}}],null,!0)})})),1)])]}}],null,!0)})})),1)]}}])})},de=[],pe={name:"PrimaryDropdown",components:{DropdownCustom:re,ReferenceUrlProvider:N},props:{options:{type:Array,required:!0},currentOption:{type:String,required:!0}},methods:{setActive(e,t,n){e(n),t()}}},he=pe,me=(0,w.Z)(he,ue,de,!1,null,"03cbd7f7",null),ve=me.exports;const fe={title:"Introduction",url:"#introduction",reference:"introduction",sectionNumber:0,depth:0};var ge={name:"NavigationBar",components:{NavTitleContainer:D.Z,NavBase:P.Z,ReferenceUrlProvider:N,PrimaryDropdown:ve,SecondaryDropdown:ce,MobileDropdown:V,ChevronIcon:S},mixins:[q.Z,A.Z],props:{chapters:{type:Array,required:!0},technology:{type:String,required:!0},topic:{type:String,required:!0},rootReference:{type:String,required:!0},identifierUrl:{type:String,required:!0}},data(){return{currentSection:fe,tutorialState:this.store.state}},watch:{pageSectionWithHighestVisibility(e){e&&(this.currentSection=e)}},computed:{currentProject(){return this.chapters.reduce(((e,{projects:t})=>e.concat(t)),[]).find((e=>e.reference===this.identifierUrl))},pageSections(){if(!this.currentProject)return[];const e=[fe].concat(this.currentProject.sections);return this.tutorialState.linkableSections.map(((t,n)=>{const s=e[n],i=this.references[s.reference],{url:r,title:o}=i||s;return{...t,title:o,path:r}}))},optionsForSections(){return this.pageSections.map((({depth:e,path:t,title:n})=>({depth:e,path:t,title:n})))},pageSectionWithHighestVisibility(){return[...this.pageSections].sort(((e,t)=>t.visibility-e.visibility)).find((e=>e.visibility>0))},sectionIndicatorText(){const e=this.tutorialState.linkableSections.length-1,{sectionNumber:t}=this.currentSection||{};if(0!==t)return this.$t("tutorials.section-of",{number:t,total:e})}},methods:{onSelectSection(e){const t=e.split("#")[1];this.handleFocusAndScroll(t)}}},ye=ge,Ce=(0,w.Z)(ye,v,f,!1,null,"1d3fe8ed",null),be=Ce.exports,_e=n(2974),we=function(){var e=this,t=e._self._c;return t("div",{staticClass:"body"},[t("BodyContent",{attrs:{content:e.content}})],1)},ke=[],Se=function(){var e=this,t=e._self._c;return t("article",{staticClass:"body-content"},e._l(e.content,(function(n,s){return t(e.componentFor(n),e._b({key:s,tag:"component",staticClass:"layout"},"component",e.propsFor(n),!1))})),1)},xe=[],Ae=function(){var e=this,t=e._self._c;return t("div",{staticClass:"columns",class:e.classes},[e._l(e.columns,(function(n,s){return[t("Asset",{key:n.media,attrs:{identifier:n.media,videoAutoplays:!1}}),n.content?t("ContentNode",{key:s,attrs:{content:n.content}}):e._e()]}))],2)},Te=[],Ie=n(4655),$e=function(){var e=this,t=e._self._c;return t("BaseContentNode",{attrs:{content:e.articleContent}})},Ne=[],qe=n(9519),Pe={name:"ContentNode",components:{BaseContentNode:qe["default"]},props:qe["default"].props,computed:{articleContent(){return this.map((e=>{switch(e.type){case qe["default"].BlockType.codeListing:return{...e,showLineNumbers:!0};case qe["default"].BlockType.heading:{const{anchor:t,...n}=e;return n}default:return e}}))}},methods:qe["default"].methods,BlockType:qe["default"].BlockType,InlineType:qe["default"].InlineType},De=Pe,Ze=(0,w.Z)(De,$e,Ne,!1,null,"0861b5be",null),Re=Ze.exports,Oe={name:"Columns",components:{Asset:Ie.Z,ContentNode:Re},props:{columns:{type:Array,required:!0}},computed:{classes(){return{"cols-2":2===this.columns.length,"cols-3":3===this.columns.length}}}},Le=Oe,Be=(0,w.Z)(Le,Ae,Te,!1,null,"30edf911",null),Me=Be.exports,Fe=function(){var e=this,t=e._self._c;return t("div",{staticClass:"content-and-media",class:e.classes},[t("ContentNode",{attrs:{content:e.content}}),t("Asset",{attrs:{identifier:e.media}})],1)},Ve=[];const je={leading:"leading",trailing:"trailing"};var Ee={name:"ContentAndMedia",components:{Asset:Ie.Z,ContentNode:Re},props:{content:Re.props.content,media:Ie.Z.props.identifier,mediaPosition:{type:String,default:()=>je.trailing,validator:e=>Object.prototype.hasOwnProperty.call(je,e)}},computed:{classes(){return{"media-leading":this.mediaPosition===je.leading,"media-trailing":this.mediaPosition===je.trailing}}},MediaPosition:je},He=Ee,Ue=(0,w.Z)(He,Fe,Ve,!1,null,"3fa44f9e",null),ze=Ue.exports,Ge=function(){var e=this,t=e._self._c;return t("div",{staticClass:"full-width"},e._l(e.groups,(function(n,s){return t(e.componentFor(n),e._b({key:s,tag:"component",staticClass:"group"},"component",e.propsFor(n),!1),[t("ContentNode",{attrs:{content:n.content}})],1)})),1)},We=[],Qe=function(){var e=this,t=e._self._c;return t(e.tag,{tag:"component",attrs:{id:e.anchor}},[e._t("default")],2)},Ke=[],Xe=n(9146),Ye={name:"LinkableElement",mixins:[Xe["default"]],inject:{navigationBarHeight:{default(){}},store:{default(){return{addLinkableSection(){},updateLinkableSection(){}}}}},props:{anchor:{type:String,required:!0},depth:{type:Number,default:()=>0},tag:{type:String,default:()=>"div"},title:{type:String,required:!0}},computed:{intersectionRootMargin(){const e=this.navigationBarHeight?`-${this.navigationBarHeight}px`:"0%";return`${e} 0% -50% 0%`}},created(){this.store.addLinkableSection({anchor:this.anchor,depth:this.depth,title:this.title,visibility:0})},methods:{onIntersect(e){const t=Math.min(1,e.intersectionRatio);this.store.updateLinkableSection({anchor:this.anchor,depth:this.depth,title:this.title,visibility:t})}}},Je=Ye,et=(0,w.Z)(Je,Qe,Ke,!1,null,null,null),tt=et.exports;const{BlockType:nt}=Re;var st={name:"FullWidth",components:{ContentNode:Re,LinkableElement:tt},props:Re.props,computed:{groups:({content:e})=>e.reduce(((e,t)=>0===e.length||t.type===nt.heading?[...e,{heading:t.type===nt.heading?t:null,content:[t]}]:[...e.slice(0,e.length-1),{heading:e[e.length-1].heading,content:e[e.length-1].content.concat(t)}]),[])},methods:{componentFor(e){return e.heading?tt:"div"},depthFor(e){switch(e.level){case 1:case 2:return 0;default:return 1}},propsFor(e){return e.heading?{anchor:e.heading.anchor,depth:this.depthFor(e.heading),title:e.heading.text}:{}}}},it=st,rt=(0,w.Z)(it,Ge,We,!1,null,"5b4a8b3c",null),ot=rt.exports;const at={columns:"columns",contentAndMedia:"contentAndMedia",fullWidth:"fullWidth"};var lt={name:"BodyContent",props:{content:{type:Array,required:!0,validator:e=>e.every((({kind:e})=>Object.prototype.hasOwnProperty.call(at,e)))}},methods:{componentFor(e){return{[at.columns]:Me,[at.contentAndMedia]:ze,[at.fullWidth]:ot}[e.kind]},propsFor(e){const{content:t,kind:n,media:s,mediaPosition:i}=e;return{[at.columns]:{columns:t},[at.contentAndMedia]:{content:t,media:s,mediaPosition:i},[at.fullWidth]:{content:t}}[n]}},LayoutKind:at},ct=lt,ut=(0,w.Z)(ct,Se,xe,!1,null,"4d5a806e",null),dt=ut.exports,pt={name:"Body",components:{BodyContent:dt},props:dt.props},ht=pt,mt=(0,w.Z)(ht,we,ke,!1,null,"20dca692",null),vt=mt.exports,ft=function(){var e=this,t=e._self._c;return t("TutorialCTA",e._b({},"TutorialCTA",e.$props,!1))},gt=[],yt=function(){var e=this,t=e._self._c;return t("BaseCTA",e._b({attrs:{label:e.$t("tutorials.next")}},"BaseCTA",e.baseProps,!1))},Ct=[],bt=function(){var e=this,t=e._self._c;return t("div",{staticClass:"call-to-action"},[t("Row",[t("LeftColumn",[t("span",{staticClass:"label"},[e._v(e._s(e.label))]),t("h2",[e._v(" "+e._s(e.title)+" ")]),e.abstract?t("ContentNode",{staticClass:"description",attrs:{content:[e.abstractParagraph]}}):e._e(),e.action?t("Button",{attrs:{action:e.action}}):e._e()],1),t("RightColumn",{staticClass:"right-column"},[e.media?t("Asset",{staticClass:"media",attrs:{identifier:e.media}}):e._e()],1)],1)],1)},_t=[],wt=n(9649),kt=n(1576),St=n(7605),xt={name:"CallToAction",components:{Asset:Ie.Z,Button:St.Z,ContentNode:qe["default"],LeftColumn:{render(e){return e(kt.Z,{props:{span:{large:5,small:12}}},this.$slots.default)}},RightColumn:{render(e){return e(kt.Z,{props:{span:{large:6,small:12}}},this.$slots.default)}},Row:wt.Z},props:{title:{type:String,required:!0},label:{type:String,required:!0},abstract:{type:Array,required:!1},action:{type:Object,required:!1},media:{type:String,required:!1}},computed:{abstractParagraph(){return{type:"paragraph",inlineContent:this.abstract}}}},At=xt,Tt=(0,w.Z)(At,bt,_t,!1,null,"2bfdf182",null),It=Tt.exports,$t={name:"CallToAction",components:{BaseCTA:It},computed:{baseProps(){return{title:this.title,abstract:this.abstract,action:this.action,media:this.media}}},props:{title:{type:String,required:!0},abstract:{type:Array,required:!1},action:{type:Object,required:!1},media:{type:String,required:!1}}},Nt=$t,qt=(0,w.Z)(Nt,yt,Ct,!1,null,null,null),Pt=qt.exports,Dt={name:"CallToAction",components:{TutorialCTA:Pt},props:Pt.props},Zt=Dt,Rt=(0,w.Z)(Zt,ft,gt,!1,null,"426a965c",null),Ot=Rt.exports,Lt=function(){var e=this,t=e._self._c;return t("TutorialHero",e._b({},"TutorialHero",e.$props,!1))},Bt=[],Mt=function(){var e=this,t=e._self._c;return t("LinkableSection",{staticClass:"tutorial-hero",attrs:{anchor:"introduction",title:e.sectionTitle}},[t("div",{staticClass:"hero dark"},[e.backgroundImageUrl?t("div",{staticClass:"bg",style:e.bgStyle}):e._e(),e._t("above-title"),t("Row",[t("Column",[t("Headline",{attrs:{level:1},scopedSlots:e._u([e.chapter?{key:"eyebrow",fn:function(){return[e._v(e._s(e.chapter))]},proxy:!0}:null],null,!0)},[e._v(" "+e._s(e.title)+" ")]),e.content||e.video?t("div",{staticClass:"intro"},[e.content?t("ContentNode",{attrs:{content:e.content}}):e._e(),e.video?[t("p",[t("a",{staticClass:"call-to-action",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.toggleCallToActionModal.apply(null,arguments)}}},[e._v(" Watch intro video "),t("PlayIcon",{staticClass:"cta-icon icon-inline"})],1)]),t("GenericModal",{attrs:{visible:e.callToActionModalVisible,isFullscreen:"",theme:"dark"},on:{"update:visible":function(t){e.callToActionModalVisible=t}}},[t("Asset",{directives:[{name:"show",rawName:"v-show",value:e.callToActionModalVisible,expression:"callToActionModalVisible"}],ref:"asset",staticClass:"video-asset",attrs:{identifier:e.video},on:{videoEnded:e.handleVideoEnd}})],1)]:e._e()],2):e._e(),t("Metadata",{staticClass:"metadata",attrs:{projectFilesUrl:e.projectFilesUrl,estimatedTimeInMinutes:e.estimatedTimeInMinutes,xcodeRequirement:e.xcodeRequirementData}})],1)],1)],2)])},Ft=[],Vt=function(){var e=this,t=e._self._c;return t("div",{staticClass:"headline"},[e.$slots.eyebrow?t("span",{staticClass:"eyebrow"},[e._t("eyebrow")],2):e._e(),t("Heading",{staticClass:"heading",attrs:{level:e.level}},[e._t("default")],2)],1)},jt=[];const Et=1,Ht=6,Ut={type:Number,required:!0,validator:e=>e>=Et&&e<=Ht},zt={name:"Heading",render:function(e){return e(`h${this.level}`,this.$slots.default)},props:{level:Ut}};var Gt={name:"Headline",components:{Heading:zt},props:{level:Ut}},Wt=Gt,Qt=(0,w.Z)(Wt,Vt,jt,!1,null,"d46a1474",null),Kt=Qt.exports,Xt=n(5590),Yt=n(6698),Jt=n(5947),en=function(){var e=this,t=e._self._c;return t("div",{staticClass:"metadata"},[e.estimatedTimeInMinutes?t("div",{staticClass:"item",attrs:{"aria-label":`\n ${e.$tc("tutorials.time.minutes.full",e.estimatedTimeInMinutes,{count:e.estimatedTimeInMinutes})}\n ${e.$t("tutorials.estimated-time")}\n `}},[t("div",{staticClass:"content",attrs:{"aria-hidden":"true"}},[t("i18n",{staticClass:"duration",attrs:{path:"tutorials.time.format",tag:"div"},scopedSlots:e._u([{key:"number",fn:function(){return[e._v(" "+e._s(e.estimatedTimeInMinutes)+" ")]},proxy:!0},{key:"minutes",fn:function(){return[t("div",{staticClass:"minutes"},[e._v(e._s(e.$tc("tutorials.time.minutes.short",e.estimatedTimeInMinutes))+" ")])]},proxy:!0}],null,!1,3313752798)})],1),t("div",{staticClass:"bottom",attrs:{"aria-hidden":"true"}},[e._v(e._s(e.$t("tutorials.estimated-time")))])]):e._e(),e.projectFilesUrl?t("div",{staticClass:"item"},[t("DownloadIcon",{staticClass:"item-large-icon icon-inline"}),t("div",{staticClass:"content bottom"},[t("a",{staticClass:"content-link project-download",attrs:{href:e.projectFilesUrl}},[e._v(" "+e._s(e.$t("tutorials.project-files"))+" "),t("InlineDownloadIcon",{staticClass:"small-icon icon-inline"})],1)])],1):e._e(),e.xcodeRequirement?t("div",{staticClass:"item"},[t("XcodeIcon",{staticClass:"item-large-icon icon-inline"}),t("div",{staticClass:"content bottom"},[e.isTargetIDE?t("span",[e._v(e._s(e.xcodeRequirement.title))]):t("a",{staticClass:"content-link",attrs:{href:e.xcodeRequirement.url}},[e._v(" "+e._s(e.xcodeRequirement.title)+" "),t("InlineChevronRightIcon",{staticClass:"icon-inline small-icon xcode-icon"})],1)])],1):e._e()])},tn=[],nn=n(7214),sn=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"xcode-icon",attrs:{viewBox:"0 0 14 14",themeId:"xcode"}},[t("path",{attrs:{d:"M2.668 4.452l-1.338-2.229 0.891-0.891 2.229 1.338 1.338 2.228 3.667 3.666 0.194-0.194 2.933 2.933c0.13 0.155 0.209 0.356 0.209 0.576 0 0.497-0.403 0.9-0.9 0.9-0.22 0-0.421-0.079-0.577-0.209l0.001 0.001-2.934-2.933 0.181-0.181-3.666-3.666z"}}),t("path",{attrs:{d:"M11.824 1.277l-0.908 0.908c-0.091 0.091-0.147 0.216-0.147 0.354 0 0.106 0.033 0.205 0.090 0.286l-0.001-0.002 0.058 0.069 0.185 0.185c0.090 0.090 0.215 0.146 0.353 0.146 0.107 0 0.205-0.033 0.286-0.090l-0.002 0.001 0.069-0.057 0.909-0.908c0.118 0.24 0.187 0.522 0.187 0.82 0 1.045-0.848 1.893-1.893 1.893-0.296 0-0.577-0.068-0.826-0.189l0.011 0.005-5.5 5.5c0.116 0.238 0.184 0.518 0.184 0.813 0 1.045-0.848 1.893-1.893 1.893-0.296 0-0.576-0.068-0.826-0.189l0.011 0.005 0.908-0.909c0.090-0.090 0.146-0.215 0.146-0.353 0-0.107-0.033-0.205-0.090-0.286l0.001 0.002-0.057-0.069-0.185-0.185c-0.091-0.091-0.216-0.147-0.354-0.147-0.106 0-0.205 0.033-0.286 0.090l0.002-0.001-0.069 0.058-0.908 0.908c-0.116-0.238-0.184-0.518-0.184-0.813 0-1.045 0.847-1.892 1.892-1.892 0.293 0 0.571 0.067 0.819 0.186l-0.011-0.005 5.5-5.5c-0.116-0.238-0.184-0.519-0.184-0.815 0-1.045 0.847-1.892 1.892-1.892 0.296 0 0.577 0.068 0.827 0.19l-0.011-0.005z"}})])},rn=[],on={name:"XcodeIcon",components:{SVGIcon:C.Z}},an=on,ln=(0,w.Z)(an,sn,rn,!1,null,null,null),cn=ln.exports,un=n(8785),dn=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"inline-download-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-download"}},[t("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5z"}}),t("path",{attrs:{d:"M7.51 2.964l-0.001 5.431 1.308-2.041 0.842 0.539-2.664 4.162-2.633-4.164 0.845-0.534 1.303 2.059 0.001-5.452z"}})])},pn=[],hn={name:"InlineDownloadIcon",components:{SVGIcon:C.Z}},mn=hn,vn=(0,w.Z)(mn,dn,pn,!1,null,null,null),fn=vn.exports,gn={name:"HeroMetadata",components:{InlineDownloadIcon:fn,InlineChevronRightIcon:un.Z,DownloadIcon:nn.Z,XcodeIcon:cn},inject:["isTargetIDE"],props:{projectFilesUrl:{type:String},estimatedTimeInMinutes:{type:Number},xcodeRequirement:{type:Object,required:!1}}},yn=gn,Cn=(0,w.Z)(yn,en,tn,!1,null,"94ff76c0",null),bn=Cn.exports,_n={name:"Hero",components:{PlayIcon:Yt.Z,GenericModal:Xt.Z,Column:{render(e){return e(kt.Z,{props:{span:{large:7,medium:9,small:12}}},this.$slots.default)}},ContentNode:qe["default"],Headline:Kt,Metadata:bn,Row:wt.Z,Asset:Ie.Z,LinkableSection:tt},mixins:[A.Z],props:{title:{type:String,required:!0},chapter:{type:String},content:{type:Array},projectFiles:{type:String},estimatedTimeInMinutes:{type:Number},xcodeRequirement:{type:String,required:!1},video:{type:String},backgroundImage:{type:String}},computed:{backgroundImageUrl(){const e=this.references[this.backgroundImage]||{},{variants:t=[]}=e,n=t.find((e=>e.traits.includes("light")));return(0,Jt.AH)((n||{}).url)},projectFilesUrl(){return this.projectFiles?(0,Jt.AH)(this.references[this.projectFiles].url):null},bgStyle(){return{backgroundImage:(0,Jt.eZ)(this.backgroundImageUrl)}},xcodeRequirementData(){return this.references[this.xcodeRequirement]},sectionTitle(){return"Introduction"}},data(){return{callToActionModalVisible:!1}},methods:{async toggleCallToActionModal(){this.callToActionModalVisible=!0,await this.$nextTick();const e=this.$refs.asset.$el.querySelector("video");if(e)try{await e.play(),e.muted=!1}catch(t){}},handleVideoEnd(){this.callToActionModalVisible=!1}}},wn=_n,kn=(0,w.Z)(wn,Mt,Ft,!1,null,"2a434750",null),Sn=kn.exports,xn={name:"Hero",components:{TutorialHero:Sn},props:Sn.props},An=xn,Tn=(0,w.Z)(An,Lt,Bt,!1,null,"35a9482f",null),In=Tn.exports,$n=function(){var e=this,t=e._self._c;return t("TutorialAssessments",e._b({scopedSlots:e._u([{key:"success",fn:function(){return[t("p",[e._v("Great job, you've answered all the questions for this article.")])]},proxy:!0}])},"TutorialAssessments",e.$props,!1))},Nn=[],qn=function(){var e=this,t=e._self._c;return t("LinkableSection",{staticClass:"assessments-wrapper",attrs:{anchor:e.anchor,title:e.title}},[t("Row",{ref:"assessments",staticClass:"assessments"},[t("MainColumn",[t("Row",{staticClass:"banner"},[t("HeaderColumn",[t("h2",{staticClass:"title"},[e._v(e._s(e.title))])])],1),e.completed?t("div",{staticClass:"success"},[e._t("success",(function(){return[t("p",[e._v(e._s(e.SuccessMessage))])]}))],2):t("div",[t("Progress",e._b({ref:"progress"},"Progress",e.progress,!1)),t("Quiz",{key:e.activeIndex,attrs:{choices:e.activeAssessment.choices,content:e.activeAssessment.content,isLast:e.isLast,title:e.activeAssessment.title},on:{submit:e.onSubmit,advance:e.onAdvance,"see-results":e.onSeeResults}})],1),t("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"assertive"}},[e.completed?e._t("success",(function(){return[e._v(" "+e._s(e.SuccessMessage)+" ")]})):e._e()],2)],1)],1)],1)},Pn=[],Dn=function(){var e=this,t=e._self._c;return t("Row",[t("p",{staticClass:"title"},[e._v(e._s(e.$t("tutorials.question-of",{index:e.index,total:e.total})))])])},Zn=[],Rn={name:"AssessmentsProgress",components:{Row:wt.Z},props:{index:{type:Number,required:!0},total:{type:Number,required:!0}}},On=Rn,Ln=(0,w.Z)(On,Dn,Zn,!1,null,"28135d78",null),Bn=Ln.exports,Mn=function(){var e=this,t=e._self._c;return t("div",{staticClass:"quiz"},[t("ContentNode",{staticClass:"title",attrs:{content:e.title}}),e.content?t("ContentNode",{staticClass:"question-content",attrs:{content:e.content}}):e._e(),t("fieldset",{staticClass:"choices"},[t("legend",{staticClass:"visuallyhidden"},[e._v(e._s(e.$t("tutorials.assessment.legend")))]),e._l(e.choices,(function(n,s){return t("label",{key:s,class:e.choiceClasses[s]},[t(e.getIconComponent(s),{tag:"component",staticClass:"choice-icon"}),t("input",{directives:[{name:"model",rawName:"v-model",value:e.selectedIndex,expression:"selectedIndex"}],attrs:{type:"radio",name:"assessment"},domProps:{value:s,checked:e._q(e.selectedIndex,s)},on:{change:function(t){e.selectedIndex=s}}}),t("ContentNode",{staticClass:"question",attrs:{content:n.content}}),e.userChoices[s].checked?[t("ContentNode",{staticClass:"answer",attrs:{content:n.justification}}),n.reaction?t("p",{staticClass:"answer"},[e._v(e._s(n.reaction))]):e._e()]:e._e()],2)}))],2),t("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"assertive"}},[null!=e.checkedIndex?t("i18n",{attrs:{path:"tutorials.assessment.answer-result",tag:"span"},scopedSlots:e._u([{key:"answer",fn:function(){return[t("ContentNode",{staticClass:"question",attrs:{content:e.choices[e.checkedIndex].content}})]},proxy:!0},{key:"result",fn:function(){return[e._v(e._s(e.choices[e.checkedIndex].isCorrect?e.$t("tutorials.assessment.correct"):e.$t("tutorials.assessment.incorrect")))]},proxy:!0}],null,!1,511264553)}):e._e()],1),t("div",{staticClass:"controls"},[t("ButtonLink",{staticClass:"check",attrs:{disabled:null===e.selectedIndex||e.showNextQuestion},nativeOn:{click:function(t){return e.submit.apply(null,arguments)}}},[e._v(" "+e._s(e.$t("tutorials.submit"))+" ")]),e.isLast?t("ButtonLink",{staticClass:"results",attrs:{disabled:!e.showNextQuestion},nativeOn:{click:function(t){return e.seeResults.apply(null,arguments)}}},[e._v(" "+e._s(e.$t("tutorials.next"))+" ")]):t("ButtonLink",{staticClass:"next",attrs:{disabled:!e.showNextQuestion},nativeOn:{click:function(t){return e.advance.apply(null,arguments)}}},[e._v(" "+e._s(e.$t("tutorials.assessment.next-question"))+" ")])],1)],1)},Fn=[],Vn=n(5281),jn=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"reset-circle-icon",attrs:{viewBox:"0 0 14 14",themeId:"reset-circle"}},[t("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),t("path",{attrs:{d:"M3.828 4.539l0.707-0.707 5.657 5.657-0.707 0.707-5.657-5.657z"}}),t("path",{attrs:{d:"M3.828 9.489l5.657-5.657 0.707 0.707-5.657 5.657-0.707-0.707z"}})])},En=[],Hn={name:"ResetCircleIcon",components:{SVGIcon:C.Z}},Un=Hn,zn=(0,w.Z)(Un,jn,En,!1,null,null,null),Gn=zn.exports,Wn=function(){var e=this,t=e._self._c;return t("SVGIcon",{staticClass:"check-circle-icon",attrs:{viewBox:"0 0 14 14",themeId:"check-circle"}},[t("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),t("path",{attrs:{d:"M9.626 3.719l0.866 0.5-3.5 6.062-3.464-2 0.5-0.866 2.6 1.5z"}})])},Qn=[],Kn={name:"CheckCircleIcon",components:{SVGIcon:C.Z}},Xn=Kn,Yn=(0,w.Z)(Xn,Wn,Qn,!1,null,null,null),Jn=Yn.exports,es={name:"Quiz",components:{CheckCircleIcon:Jn,ResetCircleIcon:Gn,ContentNode:qe["default"],ButtonLink:Vn.Z},props:{content:{type:Array,required:!1},choices:{type:Array,required:!0},isLast:{type:Boolean,default:!1},title:{type:Array,required:!0}},data(){return{userChoices:this.choices.map((()=>({checked:!1}))),selectedIndex:null,checkedIndex:null}},computed:{correctChoices(){return this.choices.reduce(((e,t,n)=>t.isCorrect?e.add(n):e),new Set)},choiceClasses(){return this.userChoices.map(((e,t)=>({choice:!0,active:this.selectedIndex===t,disabled:e.checked||this.showNextQuestion,correct:e.checked&&this.choices[t].isCorrect,incorrect:e.checked&&!this.choices[t].isCorrect})))},showNextQuestion(){return Array.from(this.correctChoices).every((e=>this.userChoices[e].checked))}},methods:{getIconComponent(e){const t=this.userChoices[e];if(t&&t.checked)return this.choices[e].isCorrect?Jn:Gn},submit(){this.$set(this.userChoices,this.selectedIndex,{checked:!0}),this.checkedIndex=this.selectedIndex,this.$emit("submit")},advance(){this.$emit("advance")},seeResults(){this.$emit("see-results")}}},ts=es,ns=(0,w.Z)(ts,Mn,Fn,!1,null,"61b03ec2",null),ss=ns.exports;const is=12,rs="tutorials.assessment.success-message";var os={name:"Assessments",constants:{SuccessMessage:rs},components:{LinkableSection:tt,Quiz:ss,Progress:Bn,Row:wt.Z,HeaderColumn:{render(e){return e(kt.Z,{props:{isCentered:{large:!0},span:{large:10}}},this.$slots.default)}},MainColumn:{render(e){return e(kt.Z,{props:{isCentered:{large:!0},span:{large:10,medium:10,small:12}}},this.$slots.default)}}},props:{assessments:{type:Array,required:!0},anchor:{type:String,required:!0}},inject:["navigationBarHeight"],data(){return{activeIndex:0,completed:!1,SuccessMessage:this.$t(rs)}},computed:{activeAssessment(){return this.assessments[this.activeIndex]},isLast(){return this.activeIndex===this.assessments.length-1},progress(){return{index:this.activeIndex+1,total:this.assessments.length}},title(){return this.$t("tutorials.assessment.check-your-understanding")}},methods:{scrollTo(e,t=0){e.scrollIntoView(!0),window.scrollBy(0,-this.navigationBarHeight-t)},onSubmit(){this.$nextTick((()=>{this.scrollTo(this.$refs.progress.$el,is)}))},onAdvance(){this.activeIndex+=1,this.$nextTick((()=>{this.scrollTo(this.$refs.progress.$el,is)}))},onSeeResults(){this.completed=!0,this.$nextTick((()=>{this.scrollTo(this.$refs.assessments.$el,is)}))}}},as=os,ls=(0,w.Z)(as,qn,Pn,!1,null,"65e3c02c",null),cs=ls.exports,us={name:"Assessments",components:{TutorialAssessments:cs},props:cs.props},ds=us,ps=(0,w.Z)(ds,$n,Nn,!1,null,"6db06128",null),hs=ps.exports;const ms={articleBody:"articleBody",callToAction:"callToAction",hero:"hero",assessments:"assessments"};var vs={name:"Article",components:{NavigationBar:be,PortalTarget:h.YC},mixins:[_e.Z],inject:{isTargetIDE:{default:!1},store:{default(){return{reset(){},setReferences(){}}}}},props:{hierarchy:{type:Object,required:!0},metadata:{type:Object,required:!0},references:{type:Object,required:!0},sections:{type:Array,required:!0,validator:e=>e.every((({kind:e})=>Object.prototype.hasOwnProperty.call(ms,e)))},identifierUrl:{type:String,required:!0}},computed:{heroSection(){return this.sections.find(this.isHero)},heroTitle(){return(this.heroSection||{}).title},pageTitle(){return this.heroTitle?`${this.heroTitle} — ${this.metadata.category} Tutorials`:void 0},pageDescription:({heroSection:e,extractFirstParagraphText:t})=>e?t(e.content):null},methods:{componentFor(e){const{kind:t}=e;return{[ms.articleBody]:vt,[ms.callToAction]:Ot,[ms.hero]:In,[ms.assessments]:hs}[t]},isHero(e){return e.kind===ms.hero},propsFor(e){const{abstract:t,action:n,anchor:s,assessments:i,backgroundImage:r,chapter:o,content:a,estimatedTimeInMinutes:l,kind:c,media:u,projectFiles:d,title:p,video:h,xcodeRequirement:m}=e;return{[ms.articleBody]:{content:a},[ms.callToAction]:{abstract:t,action:n,media:u,title:p},[ms.hero]:{backgroundImage:r,chapter:o,content:a,estimatedTimeInMinutes:l,projectFiles:d,title:p,video:h,xcodeRequirement:m},[ms.assessments]:{anchor:s,assessments:i}}[c]}},created(){m["default"].setAvailableLocales(this.metadata.availableLocales),this.store.reset(),this.store.setReferences(this.references)},watch:{references(e){this.store.setReferences(e)},"metadata.availableLocales":function(e){m["default"].setAvailableLocales(e)}},SectionKind:ms},fs=vs,gs=(0,w.Z)(fs,d,p,!1,null,"9d2d5cc2",null),ys=gs.exports,Cs=function(){var e=this,t=e._self._c;return t("div",{staticClass:"tutorial"},[e.isTargetIDE?e._e():t("NavigationBar",{attrs:{technology:e.metadata.category,chapters:e.hierarchy.modules,topic:e.tutorialTitle||"",rootReference:e.hierarchy.reference,identifierUrl:e.identifierUrl}}),t("main",{attrs:{id:"app-main",tabindex:"0"}},[e._l(e.sections,(function(e,n){return t("Section",{key:n,attrs:{section:e}})})),t("BreakpointEmitter",{on:{change:e.handleBreakpointChange}})],2),t("PortalTarget",{attrs:{name:"modal-destination",multiple:""}})],1)},bs=[],_s=n(8571),ws=function(){var e=this,t=e._self._c;return t("div",{staticClass:"sections"},e._l(e.tasks,(function(n,s){return t("Section",e._b({key:s,attrs:{id:n.anchor,sectionNumber:s+1,isRuntimePreviewVisible:e.isRuntimePreviewVisible},on:{"runtime-preview-toggle":e.onRuntimePreviewToggle}},"Section",n,!1))})),1)},ks=[],Ss=function(){var e=this,t=e._self._c;return t("LinkableSection",{staticClass:"section",attrs:{anchor:e.anchor,title:e.introProps.title}},[t("Intro",e._b({},"Intro",e.introProps,!1)),e.stepsSection.length>0?t("Steps",{attrs:{content:e.stepsSection,isRuntimePreviewVisible:e.isRuntimePreviewVisible,sectionNumber:e.sectionNumber},on:{"runtime-preview-toggle":e.onRuntimePreviewToggle}}):e._e()],1)},xs=[],As=function(){var e=this,t=e._self._c;return t("div",{staticClass:"intro-container"},[t("Row",{class:["intro",`intro-${e.sectionNumber}`,{ide:e.isTargetIDE}]},[t("Column",{staticClass:"left"},[t("Headline",{attrs:{level:2},scopedSlots:e._u([{key:"eyebrow",fn:function(){return[t("router-link",{attrs:{to:e.sectionLink}},[e._v(" "+e._s(e.$t("sections.title",{number:e.sectionNumber}))+" ")])]},proxy:!0}])},[e._v(" "+e._s(e.title)+" ")]),t("ContentNode",{attrs:{content:e.content}})],1),t("Column",{staticClass:"right"},[t("div",{staticClass:"media"},[e.media?t("Asset",{attrs:{videoAutoplays:"",videoMuted:"",identifier:e.media}}):e._e()],1)])],1),e.expandedSections.length>0?t("ExpandedIntro",{staticClass:"expanded-intro",attrs:{content:e.expandedSections}}):e._e()],1)},Ts=[],Is={name:"SectionIntro",inject:{isTargetIDE:{default:()=>!1}},components:{Asset:Ie.Z,ContentNode:qe["default"],ExpandedIntro:dt,Headline:Kt,Row:wt.Z,Column:{render(e){return e(kt.Z,{props:{span:{large:6,small:12}}},this.$slots.default)}}},props:{sectionAnchor:{type:String,required:!0},content:{type:Array,required:!0},media:{type:String,required:!0},title:{type:String,required:!0},sectionNumber:{type:Number,required:!0},expandedSections:{type:Array,default:()=>[]}},methods:{focus(){this.$emit("focus",this.media)}},computed:{sectionLink(){return{path:this.$route.path,hash:this.sectionAnchor,query:this.$route.query}}}},$s=Is,Ns=(0,w.Z)($s,As,Ts,!1,null,"7dcf2d10",null),qs=Ns.exports,Ps=function(){var e=this,t=e._self._c;return t("div",{staticClass:"steps"},[t("div",{staticClass:"content-container"},e._l(e.contentNodes,(function(n,s){return t(n.component,e._b({key:s,ref:"contentNodes",refInFor:!0,tag:"component",class:e.contentClass(s),attrs:{currentIndex:e.activeStep}},"component",n.props,!1))})),1),e.isBreakpointSmall?e._e():t("BackgroundTheme",{staticClass:"asset-container",class:e.assetContainerClasses},[t("transition",{attrs:{name:"fade"}},[e.visibleAsset.media?t("div",{key:e.visibleAsset.media,class:["asset-wrapper",{ide:e.isTargetIDE}]},[t("Asset",{ref:"asset",staticClass:"step-asset",attrs:{videoAutoplays:"",videoMuted:"",identifier:e.visibleAsset.media}})],1):e._e(),e.visibleAsset.code?t("CodePreview",{attrs:{code:e.visibleAsset.code,preview:e.visibleAsset.runtimePreview,isRuntimePreviewVisible:e.isRuntimePreviewVisible},on:{"runtime-preview-toggle":e.onRuntimePreviewToggle}},[e.visibleAsset.runtimePreview?t("transition",{attrs:{name:"fade"}},[t("Asset",{key:e.visibleAsset.runtimePreview,attrs:{identifier:e.visibleAsset.runtimePreview}})],1):e._e()],1):e._e()],1)],1)],1)},Ds=[],Zs=function(){var e=this,t=e._self._c;return t("div",{class:["code-preview",{ide:e.isTargetIDE}]},[t("CodeTheme",[e.code?t("CodeListing",e._b({attrs:{showLineNumbers:""}},"CodeListing",e.codeProps,!1)):e._e()],1),t("div",{staticClass:"runtime-preview",class:e.runtimePreviewClasses,style:e.previewStyles},[t("div",{staticClass:"runtimve-preview__container"},[t("button",{staticClass:"header",attrs:{disabled:!e.hasRuntimePreview,title:e.runtimePreviewTitle},on:{click:e.togglePreview}},[t("span",{staticClass:"runtime-preview-label",attrs:{"aria-label":e.textAriaLabel}},[e._v(e._s(e.togglePreviewText))]),t("DiagonalArrowIcon",{staticClass:"icon-inline preview-icon",class:[e.shouldDisplayHideLabel?"preview-hide":"preview-show"]})],1),t("transition",{on:{leave:e.handleLeave}},[t("div",{directives:[{name:"show",rawName:"v-show",value:e.shouldDisplayHideLabel,expression:"shouldDisplayHideLabel"}],staticClass:"runtime-preview-asset"},[e._t("default")],2)])],1)])],1)},Rs=[],Os=n(5996),Ls=n(6817),Bs=n(8093);const{BreakpointName:Ms}=o["default"].constants;function Fs({width:e,height:t},n=1){const s=400,i=e<=s?1.75:3;return{width:e/(i/n),height:t/(i/n)}}var Vs={name:"CodePreview",inject:{isTargetIDE:{default:!1},store:{default(){return{state:{references:{}}}}}},components:{DiagonalArrowIcon:Ls.Z,CodeListing:Os.Z,CodeTheme:Bs.Z},props:{code:{type:String,required:!0},preview:{type:String,required:!1},isRuntimePreviewVisible:{type:Boolean,required:!0}},data(){return{tutorialState:this.store.state}},computed:{references:({tutorialState:e})=>e.references,currentBreakpoint(){return this.tutorialState.breakpoint},hasRuntimePreview(){return!!this.preview},previewAssetSize(){const e=this.hasRuntimePreview?this.references[this.preview]:{},t=(e.variants||[{}])[0]||{},n={width:900};let s=t.size||{};s.width||s.height||(s=n);const i=this.currentBreakpoint===Ms.medium?.8:1;return Fs(s,i)},previewSize(){const e={width:102};return this.shouldDisplayHideLabel&&this.previewAssetSize?{width:this.previewAssetSize.width}:e},previewStyles(){const{width:e}=this.previewSize;return{width:`${e}px`}},codeProps(){return this.references[this.code]},runtimePreviewClasses(){return{collapsed:!this.shouldDisplayHideLabel,disabled:!this.hasRuntimePreview,"runtime-preview-ide":this.isTargetIDE}},shouldDisplayHideLabel(){return this.hasRuntimePreview&&this.isRuntimePreviewVisible},runtimePreviewTitle(){return this.hasRuntimePreview?null:this.$t("tutorials.preview.no-preview-available-step")},togglePreviewText(){return this.$tc("tutorials.preview.title",this.hasRuntimePreview?1:0)},textAriaLabel(){return`${this.togglePreviewText}, ${this.shouldDisplayHideLabel?this.$t("verbs.hide"):this.$t("verbs.show")}`}},methods:{handleLeave(e,t){setTimeout(t,200)},togglePreview(){this.hasRuntimePreview&&this.$emit("runtime-preview-toggle",!this.isRuntimePreviewVisible)}}},js=Vs,Es=(0,w.Z)(js,Zs,Rs,!1,null,"395e30cd",null),Hs=Es.exports,Us=n(5657),zs=function(){var e=this,t=e._self._c;return t("div",{style:e.backgroundStyle},[e._t("default")],2)},Gs=[],Ws={name:"BackgroundTheme",data(){return{codeThemeState:_s.Z.state}},computed:{backgroundStyle(){const{codeColors:e}=this.codeThemeState;return e?{"--background":e.background}:null}}},Qs=Ws,Ks=(0,w.Z)(Qs,zs,Gs,!1,null,null,null),Xs=Ks.exports,Ys=function(){var e=this,t=e._self._c;return t("div",{class:["step-container",`step-${e.stepNumber}`]},[t("div",{ref:"step",staticClass:"step",class:{focused:e.isActive},attrs:{"data-index":e.index}},[t("p",{staticClass:"step-label"},[e._v(e._s(e.$t("tutorials.step",{number:e.stepNumber})))]),t("ContentNode",{attrs:{content:e.content}}),e.caption&&e.caption.length>0?t("ContentNode",{staticClass:"caption",attrs:{content:e.caption}}):e._e()],1),e.isBreakpointSmall||!e.isTargetIDE?t("div",{staticClass:"media-container"},[e.media?t("Asset",{attrs:{identifier:e.media,videoAutoplays:"",videoMuted:""}}):e._e(),e.code?t("MobileCodePreview",{attrs:{code:e.code}},[e.runtimePreview?t("Asset",{staticClass:"preview",attrs:{identifier:e.runtimePreview}}):e._e()],1):e._e()],1):e._e()])},Js=[],ei=function(){var e=this,t=e._self._c;return t("BackgroundTheme",{staticClass:"mobile-code-preview"},[e.code?t("GenericModal",{staticClass:"full-code-listing-modal",attrs:{theme:e.isTargetIDE?"code":"light",codeBackgroundColorOverride:e.modalBackgroundColor,isFullscreen:"",visible:e.fullCodeIsVisible},on:{"update:visible":function(t){e.fullCodeIsVisible=t}}},[t("div",{staticClass:"full-code-listing-modal-content"},[t("CodeTheme",[t("CodeListing",e._b({staticClass:"full-code-listing",attrs:{showLineNumbers:""}},"CodeListing",e.codeProps,!1))],1)],1)]):e._e(),t("CodeTheme",[e.code?t("MobileCodeListing",e._b({attrs:{showLineNumbers:""},on:{"file-name-click":e.toggleFullCode}},"MobileCodeListing",e.codeProps,!1)):e._e()],1),t("CodeTheme",{staticClass:"preview-toggle-container"},[t("PreviewToggle",{attrs:{isActionable:!!e.$slots.default},on:{click:e.togglePreview}})],1),e.$slots.default?t("GenericModal",{staticClass:"runtime-preview-modal",attrs:{theme:e.isTargetIDE?"dynamic":"light",isFullscreen:"",visible:e.previewIsVisible},on:{"update:visible":function(t){e.previewIsVisible=t}}},[t("div",{staticClass:"runtime-preview-modal-content"},[t("span",{staticClass:"runtime-preview-label"},[e._v(e._s(e.$tc("tutorials.preview.title",1)))]),e._t("default")],2)]):e._e()],1)},ti=[],ni=function(){var e=this,t=e._self._c;return t("div",{staticClass:"code-listing-preview",attrs:{"data-syntax":e.syntax}},[t("CodeListing",{attrs:{fileName:e.fileName,syntax:e.syntax,fileType:e.fileType,content:e.previewedLines,startLineNumber:e.displayedRange.start,highlights:e.highlights,showLineNumbers:"",isFileNameActionable:""},on:{"file-name-click":function(t){return e.$emit("file-name-click")}}})],1)},si=[],ii={name:"MobileCodeListing",components:{CodeListing:Os.Z},props:{fileName:String,syntax:String,fileType:String,content:{type:Array,required:!0},highlights:{type:Array,default:()=>[]}},computed:{highlightedLineNumbers(){return new Set(this.highlights.map((({line:e})=>e)))},firstHighlightRange(){if(0===this.highlightedLineNumbers.size)return{start:1,end:this.content.length};const e=Math.min(...this.highlightedLineNumbers.values());let t=e;while(this.highlightedLineNumbers.has(t+1))t+=1;return{start:e,end:t}},displayedRange(){const e=this.firstHighlightRange,t=e.start-2<1?1:e.start-2,n=e.end+3>=this.content.length+1?this.content.length+1:e.end+3;return{start:t,end:n}},previewedLines(){return this.content.slice(this.displayedRange.start-1,this.displayedRange.end-1)}}},ri=ii,oi=(0,w.Z)(ri,ni,si,!1,null,"0bdf2f26",null),ai=oi.exports,li=function(){var e=this,t=e._self._c;return t("span",{staticClass:"toggle-preview"},[e.isActionable?t("a",{staticClass:"toggle-text",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[e._v(" "+e._s(e.$tc("tutorials.preview.title",1))+" "),t("InlinePlusCircleIcon",{staticClass:"toggle-icon icon-inline"})],1):t("span",{staticClass:"toggle-text"},[e._v(" "+e._s(e.$tc("tutorials.preview.title",0))+" ")])])},ci=[],ui=n(6772),di={name:"MobileCodePreviewToggle",components:{InlinePlusCircleIcon:ui.Z},props:{isActionable:{type:Boolean,required:!0}}},pi=di,hi=(0,w.Z)(pi,li,ci,!1,null,"78763c14",null),mi=hi.exports,vi={name:"MobileCodePreview",inject:["isTargetIDE"],mixins:[A.Z],components:{GenericModal:Xt.Z,CodeListing:Os.Z,MobileCodeListing:ai,PreviewToggle:mi,CodeTheme:Bs.Z,BackgroundTheme:Xs},props:{code:{type:String,required:!0}},computed:{codeProps(){return this.references[this.code]},modalBackgroundColor(){const{codeColors:e}=this.store.state;return e?e.background:null}},data(){return{previewIsVisible:!1,fullCodeIsVisible:!1}},methods:{togglePreview(){this.previewIsVisible=!this.previewIsVisible},toggleFullCode(){this.fullCodeIsVisible=!this.fullCodeIsVisible}}},fi=vi,gi=(0,w.Z)(fi,ei,ti,!1,null,"b1691954",null),yi=gi.exports;const{BreakpointName:Ci}=o["default"].constants;var bi={name:"Step",components:{Asset:Ie.Z,MobileCodePreview:yi,ContentNode:qe["default"]},inject:["isTargetIDE","store"],props:{code:{type:String,required:!1},content:{type:Array,required:!0},caption:{type:Array,required:!1},media:{type:String,required:!1},runtimePreview:{type:String,required:!1},sectionNumber:{type:Number,required:!0},stepNumber:{type:Number,required:!0},numberOfSteps:{type:Number,required:!0},index:{type:Number,required:!0},currentIndex:{type:Number,required:!0}},data(){return{tutorialState:this.store.state}},computed:{isBreakpointSmall(){return this.tutorialState.breakpoint===Ci.small},isActive:({index:e,currentIndex:t})=>e===t}},_i=bi,wi=(0,w.Z)(_i,Ys,Js,!1,null,"d0198556",null),ki=wi.exports;const{BreakpointName:Si}=o["default"].constants,{IntersectionDirections:xi}=Xe["default"].constants,Ai="-35% 0% -65% 0%";var Ti={name:"SectionSteps",components:{ContentNode:qe["default"],Step:ki,Asset:Ie.Z,CodePreview:Hs,BackgroundTheme:Xs},mixins:[Xe["default"]],constants:{IntersectionMargins:Ai},inject:["isTargetIDE","store"],data(){const e=this.content.findIndex(this.isStepNode),{code:t,media:n,runtimePreview:s}=this.content[e]||{};return{tutorialState:this.store.state,visibleAsset:{media:n,code:t,runtimePreview:s},activeStep:e}},computed:{assetContainerClasses(){return{"for-step-code":!!this.visibleAsset.code,ide:this.isTargetIDE}},numberOfSteps(){return this.content.filter(this.isStepNode).length},contentNodes(){return this.content.reduce((({stepCounter:e,nodes:t},n,s)=>{const{type:i,...r}=n,o=this.isStepNode(n),a=o?e+1:e;return o?{stepCounter:e+1,nodes:t.concat({component:ki,type:i,props:{...r,stepNumber:a,index:s,numberOfSteps:this.numberOfSteps,sectionNumber:this.sectionNumber}})}:{stepCounter:e,nodes:t.concat({component:qe["default"],type:i,props:{content:[n]}})}}),{stepCounter:0,nodes:[]}).nodes},isBreakpointSmall(){return this.tutorialState.breakpoint===Si.small},stepNodes:({contentNodes:e,isStepNode:t})=>e.filter(t),intersectionRootMargin:()=>Ai},async mounted(){await(0,Us.J)(8),this.findClosestStepNode()},methods:{isStepNode({type:e}){return"step"===e},contentClass(e){return{[`interstitial interstitial-${e+1}`]:!this.isStepNode(this.content[e])}},onReverseIntoLastStep(){const{asset:e}=this.$refs;if(e){const t=e.$el.querySelector("video");t&&(t.currentTime=0,t.play().catch((()=>{})))}},onFocus(e){const{code:t,media:n,runtimePreview:s}=this.content[e];this.activeStep=e,this.visibleAsset={code:t,media:n,runtimePreview:s}},onRuntimePreviewToggle(e){this.$emit("runtime-preview-toggle",e)},findClosestStepNode(){const e=.333*window.innerHeight;let t=null,n=0;this.stepNodes.forEach((s=>{const{index:i}=s.props,r=this.$refs.contentNodes[i].$refs.step;if(!r)return;const{top:o,bottom:a}=r.getBoundingClientRect(),l=o-e,c=a-e,u=Math.abs(l+c);(0===n||u<=n)&&(n=u,t=i)})),null!==t&&this.onFocus(t)},getIntersectionTargets(){const{stepNodes:e,$refs:t}=this;return e.map((({props:{index:e}})=>t.contentNodes[e].$refs.step))},onIntersect(e){const{target:t,isIntersecting:n}=e;if(!n)return;const s=parseFloat(t.getAttribute("data-index"));this.intersectionScrollDirection===xi.down&&s===this.stepNodes[this.stepNodes.length-1].props.index&&this.onReverseIntoLastStep(),this.onFocus(s)}},props:{content:{type:Array,required:!0},isRuntimePreviewVisible:{type:Boolean,require:!0},sectionNumber:{type:Number,required:!0}}},Ii=Ti,$i=(0,w.Z)(Ii,Ps,Ds,!1,null,"e3061a7c",null),Ni=$i.exports,qi={name:"Section",components:{Intro:qs,LinkableSection:tt,Steps:Ni},computed:{introProps(){const[{content:e,media:t},...n]=this.contentSection;return{content:e,expandedSections:n,media:t,sectionAnchor:this.anchor,sectionNumber:this.sectionNumber,title:this.title}}},props:{anchor:{type:String,required:!0},title:{type:String,required:!0},contentSection:{type:Array,required:!0},stepsSection:{type:Array,required:!0},sectionNumber:{type:Number,required:!0},isRuntimePreviewVisible:{type:Boolean,required:!0}},methods:{onRuntimePreviewToggle(e){this.$emit("runtime-preview-toggle",e)}}},Pi=qi,Di=(0,w.Z)(Pi,Ss,xs,!1,null,"6b3a0b3a",null),Zi=Di.exports,Ri={name:"SectionList",components:{Section:Zi},data(){return{isRuntimePreviewVisible:!0}},props:{tasks:{type:Array,required:!0}},methods:{onRuntimePreviewToggle(e){this.isRuntimePreviewVisible=e}}},Oi=Ri,Li=(0,w.Z)(Oi,ws,ks,!1,null,"79a75e9e",null),Bi=Li.exports;const Mi={assessments:cs,hero:Sn,tasks:Bi,callToAction:Pt},Fi=new Set(Object.keys(Mi)),Vi={name:"TutorialSection",render:function(e){const{kind:t,...n}=this.section,s=Mi[t];return s?e(s,{props:n}):null},props:{section:{type:Object,required:!0,validator:e=>Fi.has(e.kind)}}};var ji={name:"Tutorial",mixins:[_e.Z],components:{NavigationBar:be,Section:Vi,PortalTarget:h.YC,BreakpointEmitter:o["default"]},inject:["isTargetIDE","store"],computed:{heroSection(){return this.sections.find((({kind:e})=>"hero"===e))},tutorialTitle(){return(this.heroSection||{}).title},pageTitle(){return this.tutorialTitle?`${this.tutorialTitle} — ${this.metadata.category} Tutorials`:void 0},pageDescription:({heroSection:e,extractFirstParagraphText:t})=>e?t(e.content):null},props:{sections:{type:Array,required:!0},references:{type:Object,required:!0},hierarchy:{type:Object,required:!0},metadata:{type:Object,required:!0},identifierUrl:{type:String,required:!0}},methods:{handleBreakpointChange(e){this.store.updateBreakpoint(e)},handleCodeColorsChange(e){_s.Z.updateCodeColors(e)}},created(){m["default"].setAvailableLocales(this.metadata.availableLocales),this.store.reset(),this.store.setReferences(this.references)},watch:{references(e){this.store.setReferences(e)},"metadata.availableLocales":function(e){m["default"].setAvailableLocales(e)}},mounted(){this.$bridge.on("codeColors",this.handleCodeColorsChange),this.$bridge.send({type:"requestCodeColors"})},beforeDestroy(){this.$bridge.off("codeColors",this.handleCodeColorsChange)}},Ei=ji,Hi=(0,w.Z)(Ei,Cs,bs,!1,null,"1631abcb",null),Ui=Hi.exports,zi=n(1789),Gi=n(5184);const Wi={article:"article",tutorial:"project"};var Qi={name:"Topic",inject:{isTargetIDE:{default:!1}},mixins:[zi.Z,Gi.Z],data(){return{topicData:null}},computed:{navigationBarHeight(){return this.isTargetIDE?0:52},store(){return u},hierarchy(){const{hierarchy:e={}}=this.topicData,{technologyNavigation:t=["overview","tutorials","resources"]}=e||{};return{...e,technologyNavigation:t}},topicKey:({$route:e,topicData:t})=>[e.path,t.identifier.interfaceLanguage].join()},beforeRouteEnter(e,t,n){e.meta.skipFetchingData?n((e=>e.newContentMounted())):(0,r.Ek)(e,t,n).then((e=>n((t=>{t.topicData=e})))).catch(n)},beforeRouteUpdate(e,t,n){(0,r.Us)(e,t)?(0,r.Ek)(e,t,n).then((e=>{this.topicData=e,n()})).catch(n):n()},created(){this.store.reset()},mounted(){this.$bridge.on("contentUpdate",this.handleContentUpdateFromBridge)},beforeDestroy(){this.$bridge.off("contentUpdate",this.handleContentUpdateFromBridge)},methods:{componentFor(e){const{kind:t}=e;return{[Wi.article]:ys,[Wi.tutorial]:Ui}[t]},propsFor(e){const{hierarchy:t,kind:n,metadata:s,references:i,sections:r,identifier:o}=e;return{[Wi.article]:{hierarchy:t,metadata:s,references:i,sections:r,identifierUrl:o.url},[Wi.tutorial]:{hierarchy:t,metadata:s,references:i,sections:r,identifierUrl:o.url}}[n]}},provide(){return{navigationBarHeight:this.navigationBarHeight,store:this.store}},watch:{topicData(){this.$nextTick((()=>{this.newContentMounted()}))}}},Ki=Qi,Xi=(0,w.Z)(Ki,s,i,!1,null,null,null),Yi=Xi.exports}}]); \ No newline at end of file diff --git a/docs/js/tutorials-overview.2eff1231.js b/docs/js/tutorials-overview.2eff1231.js deleted file mode 100644 index 7cbb46d..0000000 --- a/docs/js/tutorials-overview.2eff1231.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -"use strict";(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[843],{7214:function(t,e,n){n.d(e,{Z:function(){return u}});var i=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"download-icon",attrs:{viewBox:"0 0 14 14",themeId:"download"}},[e("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5z"}}),e("path",{attrs:{d:"M7.51 2.964l-0.001 5.431 1.308-2.041 0.842 0.539-2.664 4.162-2.633-4.164 0.845-0.534 1.303 2.059 0.001-5.452z"}})])},s=[],o=n(3453),a={name:"DownloadIcon",components:{SVGIcon:o.Z}},r=a,l=n(1001),c=(0,l.Z)(r,i,s,!1,null,null,null),u=c.exports},2573:function(t,e,n){n.d(e,{Z:function(){return c}});var i=function(){var t=this,e=t._self._c;return e("router-link",{staticClass:"nav-title-content",attrs:{to:t.to}},[e("span",{staticClass:"title"},[t._t("default")],2),e("span",{staticClass:"subhead"},[t._v(" "),t._t("subhead")],2)])},s=[],o={name:"NavTitleContainer",props:{to:{type:[String,Object],required:!0}}},a=o,r=n(1001),l=(0,r.Z)(a,i,s,!1,null,"854b4dd6",null),c=l.exports},4586:function(t,e,n){n.r(e),n.d(e,{default:function(){return nn}});var i,s,o=function(){var t=this,e=t._self._c;return t.topicData?e("Overview",t._b({key:t.topicKey},"Overview",t.overviewProps,!1)):t._e()},a=[],r=n(8841),l=n(1789),c=function(){var t=this,e=t._self._c;return e("div",{staticClass:"tutorials-overview"},[t.isTargetIDE?t._e():e("Nav",{staticClass:"theme-dark",attrs:{sections:t.otherSections}},[t._v(" "+t._s(t.title)+" ")]),e("main",{staticClass:"main",attrs:{id:"main",tabindex:"0"}},[e("div",{staticClass:"radial-gradient"},[t._t("above-hero"),t.heroSection?e("Hero",{attrs:{action:t.heroSection.action,content:t.heroSection.content,estimatedTime:t.metadata.estimatedTime,image:t.heroSection.image,title:t.heroSection.title}}):t._e()],2),t.otherSections.length>0?e("LearningPath",{attrs:{sections:t.otherSections}}):t._e()],1)],1)},u=[],m=n(4030),d={state:{activeTutorialLink:null,activeVolume:null,references:{}},reset(){this.state.activeTutorialLink=null,this.state.activeVolume=null,this.state.references={}},setActiveSidebarLink(t){this.state.activeTutorialLink=t},setActiveVolume(t){this.state.activeVolume=t},setReferences(t){this.state.references=t}},p=function(){var t=this,e=t._self._c;return e("NavBase",{scopedSlots:t._u([{key:"menu-items",fn:function(){return[e("NavMenuItemBase",{staticClass:"in-page-navigation"},[e("TutorialsNavigation",{attrs:{sections:t.sections}})],1),t._t("menu-items")]},proxy:!0}],null,!0)},[e("NavTitleContainer",{attrs:{to:t.buildUrl(t.$route.path,t.$route.query)},scopedSlots:t._u([{key:"default",fn:function(){return[t._t("default")]},proxy:!0},{key:"subhead",fn:function(){return[t._v(t._s(t.$tc("tutorials.title",2)))]},proxy:!0}],null,!0)})],1)},h=[],v=n(3975),f=function(){var t=this,e=t._self._c;return e("nav",{staticClass:"tutorials-navigation"},[e("TutorialsNavigationList",t._l(t.sections,(function(n,i){return e("li",{key:`${n.name}_${i}`,class:t.sectionClasses(n)},[t.isVolume(n)?e(t.componentForVolume(n),t._b({tag:"component",on:{"select-menu":t.onSelectMenu,"deselect-menu":t.onDeselectMenu}},"component",t.propsForVolume(n),!1),t._l(n.chapters,(function(n){return e("li",{key:n.name},[e("TutorialsNavigationLink",[t._v(" "+t._s(n.name)+" ")])],1)})),0):t.isResources(n)?e("TutorialsNavigationLink",[t._v(" "+t._s(t.$t("sections.resources"))+" ")]):t._e()],1)})),0)],1)},_=[],g=function(){var t=this,e=t._self._c;return e("router-link",{staticClass:"tutorials-navigation-link",class:{active:t.active},attrs:{to:t.fragment},nativeOn:{click:function(e){return t.handleFocusAndScroll(t.fragment.hash)}}},[t._t("default")],2)},C=[],y=n(3208),b=n(3704),T={name:"TutorialsNavigationLink",mixins:[b.Z],inject:{store:{default:()=>({state:{}})}},data(){return{state:this.store.state}},computed:{active:({state:{activeTutorialLink:t},text:e})=>e===t,fragment:({text:t,$route:e})=>({hash:(0,y.HA)(t),query:e.query}),text:({$slots:{default:[{text:t}]}})=>t.trim()}},S=T,k=n(1001),V=(0,k.Z)(S,g,C,!1,null,"e9f9b59c",null),x=V.exports,Z=function(){var t=this,e=t._self._c;return e("ol",{staticClass:"tutorials-navigation-list"},[t._t("default")],2)},I=[],N={name:"TutorialsNavigationList"},A=N,w=(0,k.Z)(A,Z,I,!1,null,"4e0180fa",null),q=w.exports,$=function(){var t=this,e=t._self._c;return e("div",{staticClass:"tutorials-navigation-menu",class:{collapsed:t.collapsed}},[e("button",{staticClass:"toggle",attrs:{"aria-expanded":t.collapsed?"false":"true",type:"button"},on:{click:function(e){return e.stopPropagation(),t.onClick.apply(null,arguments)}}},[e("span",{staticClass:"text"},[t._v(t._s(t.title))]),e("InlineCloseIcon",{staticClass:"toggle-icon icon-inline"})],1),e("transition-expand",[t.collapsed?t._e():e("div",{staticClass:"tutorials-navigation-menu-content"},[e("TutorialsNavigationList",{attrs:{"aria-label":t.$t("tutorials.nav.chapters")}},[t._t("default")],2)],1)])],1)},L=[],M=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"inline-close-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-close"}},[e("path",{attrs:{d:"M11.91 1l1.090 1.090-4.917 4.915 4.906 4.905-1.090 1.090-4.906-4.905-4.892 4.894-1.090-1.090 4.892-4.894-4.903-4.904 1.090-1.090 4.903 4.904z"}})])},D=[],F=n(3453),R={name:"InlineCloseIcon",components:{SVGIcon:F.Z}},O=R,j=(0,k.Z)(O,M,D,!1,null,null,null),B=j.exports,G={name:"TransitionExpand",functional:!0,render(t,e){const n={props:{name:"expand"},on:{afterEnter(t){t.style.height="auto"},enter(t){const{width:e}=getComputedStyle(t);t.style.width=e,t.style.position="absolute",t.style.visibility="hidden",t.style.height="auto";const{height:n}=getComputedStyle(t);t.style.width=null,t.style.position=null,t.style.visibility=null,t.style.height=0,getComputedStyle(t).height,requestAnimationFrame((()=>{t.style.height=n}))},leave(t){const{height:e}=getComputedStyle(t);t.style.height=e,getComputedStyle(t).height,requestAnimationFrame((()=>{t.style.height=0}))}}};return t("transition",n,e.children)}},H=G,z=(0,k.Z)(H,i,s,!1,null,null,null),P=z.exports,E={name:"TutorialsNavigationMenu",components:{InlineCloseIcon:B,TransitionExpand:P,TutorialsNavigationList:q},props:{collapsed:{type:Boolean,default:!0},title:{type:String,required:!0}},methods:{onClick(){this.collapsed?this.$emit("select-menu",this.title):this.$emit("deselect-menu")}}},U=E,K=(0,k.Z)(U,$,L,!1,null,"489416f8",null),Q=K.exports;const J={resources:"resources",volume:"volume"};var W={name:"TutorialsNavigation",components:{TutorialsNavigationLink:x,TutorialsNavigationList:q,TutorialsNavigationMenu:Q},constants:{SectionKind:J},inject:{store:{default:()=>({setActiveVolume(){}})}},data(){return{state:this.store.state}},props:{sections:{type:Array,required:!0}},computed:{activeVolume:({state:t})=>t.activeVolume},methods:{sectionClasses(t){return{volume:this.isVolume(t),"volume--named":this.isNamedVolume(t),resource:this.isResources(t)}},componentForVolume:({name:t})=>t?Q:q,isResources:({kind:t})=>t===J.resources,isVolume:({kind:t})=>t===J.volume,activateFirstNamedVolume(){const{isNamedVolume:t,sections:e}=this,n=e.find(t);n&&this.store.setActiveVolume(n.name)},isNamedVolume(t){return this.isVolume(t)&&t.name},onDeselectMenu(){this.store.setActiveVolume(null)},onSelectMenu(t){this.store.setActiveVolume(t)},propsForVolume({name:t}){const{activeVolume:e}=this;return t?{collapsed:t!==e,title:t}:{"aria-label":"Chapters"}}},created(){this.activateFirstNamedVolume()}},X=W,Y=(0,k.Z)(X,f,_,!1,null,"79093ed6",null),tt=Y.exports,et=n(2573),nt=n(2449),it=n(3822);const st={resources:"resources",volume:"volume"};var ot={name:"Nav",constants:{SectionKind:st},components:{NavMenuItemBase:it.Z,NavTitleContainer:et.Z,TutorialsNavigation:tt,NavBase:v.Z},props:{sections:{type:Array,require:!0}},methods:{buildUrl:nt.Q2}},at=ot,rt=(0,k.Z)(at,p,h,!1,null,"54bcce6d",null),lt=rt.exports,ct=n(2974),ut=function(){var t=this,e=t._self._c;return e("section",{staticClass:"hero"},[e("div",{staticClass:"copy-container"},[e("h1",{staticClass:"title"},[t._v(t._s(t.title))]),t.content?e("ContentNode",{attrs:{content:t.content}}):t._e(),t.estimatedTime?e("p",{staticClass:"meta"},[e("TimerIcon"),e("span",{staticClass:"meta-content"},[e("strong",{staticClass:"time"},[t._v(t._s(t.estimatedTime))]),e("span",[t._v(" "+t._s(t.$t("tutorials.estimated-time")))])])],1):t._e(),t.action?e("CallToActionButton",{attrs:{action:t.action,"aria-label":t.$t("tutorials.overriding-title",{newTitle:t.action.overridingTitle,title:t.title}),isDark:""}}):t._e()],1),t.image?e("Asset",{attrs:{identifier:t.image}}):t._e()],1)},mt=[],dt=n(5465),pt=n(7605),ht=n(8843),vt=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"timer-icon",attrs:{viewBox:"0 0 14 14",themeId:"timer"}},[e("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 2c-2.761 0-5 2.239-5 5s2.239 5 5 5c2.761 0 5-2.239 5-5v0c0-2.761-2.239-5-5-5v0z"}}),e("path",{attrs:{d:"M6.51 3.51h1.5v3.5h-1.5v-3.5z"}}),e("path",{attrs:{d:"M6.51 7.010h4v1.5h-4v-1.5z"}})])},ft=[],_t={name:"TimerIcon",components:{SVGIcon:F.Z}},gt=_t,Ct=(0,k.Z)(gt,vt,ft,!1,null,null,null),yt=Ct.exports,bt={name:"Hero",components:{Asset:dt.Z,CallToActionButton:pt.Z,ContentNode:ht["default"],TimerIcon:yt},props:{action:{type:Object,required:!1},content:{type:Array,required:!1},estimatedTime:{type:String,required:!1},image:{type:String,required:!1},title:{type:String,required:!0}}},Tt=bt,St=(0,k.Z)(Tt,ut,mt,!1,null,"383dab71",null),kt=St.exports,Vt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"learning-path",class:t.classes},[e("div",{staticClass:"main-container"},[t.isTargetIDE?t._e():e("div",{staticClass:"secondary-content-container"},[e("TutorialsNavigation",{attrs:{sections:t.sections,"aria-label":t.$t("sections.on-this-page")}})],1),e("div",{staticClass:"primary-content-container"},[e("div",{staticClass:"content-sections-container"},[t._l(t.volumes,(function(n,i){return e("Volume",t._b({key:`volume_${i}`,staticClass:"content-section"},"Volume",t.propsFor(n),!1))})),t._l(t.otherSections,(function(n,i){return e(t.componentFor(n),t._b({key:`resource_${i}`,tag:"component",staticClass:"content-section"},"component",t.propsFor(n),!1))}))],2)])])])},xt=[],Zt=function(){var t=this,e=t._self._c;return e("section",{staticClass:"resources",attrs:{id:"resources",tabindex:"-1"}},[e("VolumeName",{attrs:{name:t.$t("sections.resources"),content:t.content}}),e("TileGroup",{attrs:{tiles:t.tiles}})],1)},It=[],Nt=n(9146);const At={topOneThird:"-30% 0% -70% 0%",center:"-50% 0% -50% 0%"};var wt={mixins:[Nt["default"]],computed:{intersectionRoot(){return null},intersectionRootMargin(){return At.center}},methods:{onIntersect(t){if(!t.isIntersecting)return;const e=this.onIntersectViewport;e?e():console.warn("onIntersectViewportCenter not implemented")}}},qt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"volume-name"},[t.image?e("Asset",{staticClass:"image",attrs:{identifier:t.image,"aria-hidden":"true"}}):t._e(),e("h2",{staticClass:"name"},[t._v(" "+t._s(t.name)+" ")]),t.content?e("ContentNode",{attrs:{content:t.content}}):t._e()],1)},$t=[],Lt={name:"VolumeName",components:{ContentNode:ht["default"],Asset:dt.Z},props:{image:{type:String,required:!1},content:{type:Array,required:!1},name:{type:String,required:!1}}},Mt=Lt,Dt=(0,k.Z)(Mt,qt,$t,!1,null,"569db166",null),Ft=Dt.exports,Rt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"tile-group",class:t.countClass},t._l(t.tiles,(function(n){return e("Tile",t._b({key:n.title},"Tile",t.propsFor(n),!1))})),1)},Ot=[],jt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"tile"},[t.identifier?e("div",{staticClass:"icon"},[e(t.iconComponent,{tag:"component"})],1):t._e(),e("div",{staticClass:"title"},[t._v(t._s(t.title))]),e("ContentNode",{attrs:{content:t.content}}),t.action?e("DestinationDataProvider",{attrs:{destination:t.action},scopedSlots:t._u([{key:"default",fn:function({url:n,title:i}){return[e("Reference",{staticClass:"link",attrs:{url:n}},[t._v(" "+t._s(i)+" "),e("InlineChevronRightIcon",{staticClass:"link-icon icon-inline"})],1)]}}],null,!1,2081312588)}):t._e()],1)},Bt=[],Gt=n(7775),Ht=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"document-icon",attrs:{viewBox:"0 0 14 14",themeId:"document"}},[e("path",{attrs:{d:"M11.2,5.3,8,2l-.1-.1H2.8V12.1h8.5V6.3l-.1-1ZM8,3.2l2,2.1H8Zm2.4,8H3.6V2.8H7V6.3h3.4Z"}})])},zt=[],Pt={name:"DocumentIcon",components:{SVGIcon:F.Z}},Et=Pt,Ut=(0,k.Z)(Et,Ht,zt,!1,null,"3a80772b",null),Kt=Ut.exports,Qt=n(7214),Jt=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"forum-icon",attrs:{viewBox:"0 0 14 14",themeId:"forum"}},[e("path",{attrs:{d:"M13 1v9h-7l-1.5 3-1.5-3h-2v-9zM12 2h-10v7h1.616l0.884 1.763 0.88-1.763h6.62z"}}),e("path",{attrs:{d:"M3 4h8.001v1h-8.001v-1z"}}),e("path",{attrs:{d:"M3 6h8.001v1h-8.001v-1z"}})])},Wt=[],Xt={name:"ForumIcon",components:{SVGIcon:F.Z}},Yt=Xt,te=(0,k.Z)(Yt,Jt,Wt,!1,null,null,null),ee=te.exports,ne=n(6698),ie=n(2387),se=n(8785),oe=n(1295);const ae={documentation:"documentation",downloads:"downloads",featured:"featured",forums:"forums",sampleCode:"sampleCode",videos:"videos"};var re={name:"Tile",constants:{Identifier:ae},components:{DestinationDataProvider:oe.Z,InlineChevronRightIcon:se.Z,ContentNode:ht["default"],CurlyBracketsIcon:Gt.Z,DocumentIcon:Kt,DownloadIcon:Qt.Z,ForumIcon:ee,PlayIcon:ne.Z,Reference:ie.Z},props:{action:{type:Object,required:!1},content:{type:Array,required:!0},identifier:{type:String,required:!1},title:{type:String,require:!0}},computed:{iconComponent:({identifier:t})=>({[ae.documentation]:Kt,[ae.downloads]:Qt.Z,[ae.forums]:ee,[ae.sampleCode]:Gt.Z,[ae.videos]:ne.Z}[t])}},le=re,ce=(0,k.Z)(le,jt,Bt,!1,null,"74dbeb68",null),ue=ce.exports,me={name:"TileGroup",components:{Tile:ue},props:{tiles:{type:Array,required:!0}},computed:{countClass:({tiles:t})=>`count-${t.length}`},methods:{propsFor:({action:t,content:e,identifier:n,title:i})=>({action:t,content:e,identifier:n,title:i})}},de=me,pe=(0,k.Z)(de,Rt,Ot,!1,null,"4cacce0a",null),he=pe.exports,ve={name:"Resources",mixins:[wt],inject:{store:{default:()=>({setActiveSidebarLink(){},setActiveVolume(){}})}},components:{VolumeName:Ft,TileGroup:he},computed:{intersectionRootMargin:()=>At.topOneThird},props:{content:{type:Array,required:!1},tiles:{type:Array,required:!0}},methods:{onIntersectViewport(){this.store.setActiveSidebarLink("Resources"),this.store.setActiveVolume(null)}}},fe=ve,_e=(0,k.Z)(fe,Zt,It,!1,null,"7f8022c1",null),ge=_e.exports,Ce=function(){var t=this,e=t._self._c;return e("section",{staticClass:"volume"},[t.name?e("VolumeName",t._b({},"VolumeName",{name:t.name,image:t.image,content:t.content},!1)):t._e(),t._l(t.chapters,(function(n,i){return e("Chapter",{key:n.name,staticClass:"tile",attrs:{content:n.content,image:n.image,name:n.name,number:i+1,topics:t.lookupTopics(n.tutorials),volumeHasName:!!t.name}})}))],2)},ye=[],be=function(){var t=this,e=t._self._c;return e("section",{staticClass:"chapter",attrs:{id:t.anchor,tabindex:"-1"}},[e("div",{staticClass:"info"},[e("Asset",{attrs:{identifier:t.image,"aria-hidden":"true"}}),e("div",{staticClass:"intro"},[e(t.volumeHasName?"h3":"h2",{tag:"component",staticClass:"name",attrs:{"aria-label":`${t.name} - ${t.$tc("tutorials.sections.chapter",{number:t.number})}`}},[e("span",{staticClass:"eyebrow",attrs:{"aria-hidden":"true"}},[t._v(" "+t._s(t.$t("tutorials.sections.chapter",{number:t.number}))+" ")]),e("span",{staticClass:"name-text",attrs:{"aria-hidden":"true"}},[t._v(t._s(t.name))])]),t.content?e("ContentNode",{attrs:{content:t.content}}):t._e()],1)],1),e("TopicList",{attrs:{topics:t.topics}})],1)},Te=[],Se=function(){var t=this,e=t._self._c;return e("ol",{staticClass:"topic-list"},t._l(t.topics,(function(n){return e("li",{key:n.url,staticClass:"topic",class:[t.kindClassFor(n),{"no-time-estimate":!n.estimatedTime}]},[e("div",{staticClass:"topic-icon"},[e(t.iconComponent(n),{tag:"component"})],1),e("router-link",{staticClass:"container",attrs:{to:t.buildUrl(n.url,t.$route.query),"aria-label":t.ariaLabelFor(n)}},[e("div",{staticClass:"link"},[t._v(t._s(n.title))]),n.estimatedTime?e("div",{staticClass:"time"},[e("TimerIcon"),e("span",{staticClass:"time-label"},[t._v(t._s(n.estimatedTime))])],1):t._e()])],1)})),0)},ke=[],Ve=n(5692),xe=n(8638);const Ze={article:"article",tutorial:"project"},Ie={article:"article",tutorial:"tutorial"},Ne={[Ze.article]:"Article",[Ze.tutorial]:"Tutorial"};var Ae={name:"ChapterTopicList",components:{TimerIcon:yt},constants:{TopicKind:Ze,TopicKindClass:Ie,TopicKindIconLabel:Ne},props:{topics:{type:Array,required:!0}},methods:{buildUrl:nt.Q2,iconComponent:({kind:t})=>({[Ze.article]:Ve.Z,[Ze.tutorial]:xe.Z}[t]),kindClassFor:({kind:t})=>({[Ze.article]:Ie.article,[Ze.tutorial]:Ie.tutorial}[t]),formatTime(t){return t.replace("min",` ${this.$t("tutorials.time.minutes.full")}`).replace("hrs",` ${this.$t("tutorials.time.hours.full")}`)},ariaLabelFor(t){const{title:e,estimatedTime:n,kind:i}=t,s=[e,Ne[i]];return n&&s.push(`${this.formatTime(n)} ${this.$t("tutorials.estimated-time")}`),s.join(" - ")}}},we=Ae,qe=(0,k.Z)(we,Se,ke,!1,null,"0589dc3b",null),$e=qe.exports,Le={name:"Chapter",mixins:[wt],inject:{store:{default:()=>({setActiveSidebarLink(){},setActiveVolume(){}})}},components:{Asset:dt.Z,ContentNode:ht["default"],TopicList:$e},props:{content:{type:Array,required:!1},image:{type:String,required:!0},name:{type:String,required:!0},number:{type:Number,required:!0},topics:{type:Array,required:!0},volumeHasName:{type:Boolean,default:!1}},computed:{anchor:({name:t})=>(0,y.HA)(t),intersectionRootMargin:()=>At.topOneThird},methods:{onIntersectViewport(){this.store.setActiveSidebarLink(this.name),this.volumeHasName||this.store.setActiveVolume(null)}}},Me=Le,De=(0,k.Z)(Me,be,Te,!1,null,"7468bc5e",null),Fe=De.exports,Re={name:"Volume",mixins:[wt],components:{VolumeName:Ft,Chapter:Fe},computed:{references:({store:t})=>t.state.references,intersectionRootMargin:()=>At.topOneThird},inject:{store:{default:()=>({setActiveVolume(){},state:{references:{}}})}},props:{chapters:{type:Array,required:!0},content:{type:Array,required:!1},image:{type:String,required:!1},name:{type:String,required:!1}},methods:{lookupTopics(t){return t.reduce(((t,e)=>t.concat(this.references[e]||[])),[])},onIntersectViewport(){this.name&&this.store.setActiveVolume(this.name)}}},Oe=Re,je=(0,k.Z)(Oe,Ce,ye,!1,null,"540dbf10",null),Be=je.exports;const Ge={resources:"resources",volume:"volume"};var He={name:"LearningPath",components:{Resources:ge,TutorialsNavigation:tt,Volume:Be},constants:{SectionKind:Ge},inject:{isTargetIDE:{default:!1}},props:{sections:{type:Array,required:!0,validator:t=>t.every((t=>Object.prototype.hasOwnProperty.call(Ge,t.kind)))}},computed:{classes:({isTargetIDE:t})=>({ide:t}),partitionedSections:({sections:t})=>t.reduce((([t,e],n)=>n.kind===Ge.volume?[t.concat(n),e]:[t,e.concat(n)]),[[],[]]),volumes:({partitionedSections:t})=>t[0],otherSections:({partitionedSections:t})=>t[1]},methods:{componentFor:({kind:t})=>({[Ge.resources]:ge,[Ge.volume]:Be}[t]),propsFor:({chapters:t,content:e,image:n,kind:i,name:s,tiles:o})=>({[Ge.resources]:{content:e,tiles:o},[Ge.volume]:{chapters:t,content:e,image:n,name:s}}[i])}},ze=He,Pe=(0,k.Z)(ze,Vt,xt,!1,null,"69a72bbc",null),Ee=Pe.exports;const Ue={hero:"hero",resources:"resources",volume:"volume"};var Ke={name:"TutorialsOverview",components:{Hero:kt,LearningPath:Ee,Nav:lt},mixins:[ct.Z],constants:{SectionKind:Ue},inject:{isTargetIDE:{default:!1}},props:{metadata:{type:Object,default:()=>({})},references:{type:Object,default:()=>({})},sections:{type:Array,default:()=>[],validator:t=>t.every((t=>Object.prototype.hasOwnProperty.call(Ue,t.kind)))}},computed:{pageTitle:({title:t})=>[t,"Tutorials"].filter(Boolean).join(" "),pageDescription:({heroSection:t,extractFirstParagraphText:e})=>t?e(t.content):null,partitionedSections:({sections:t})=>t.reduce((([t,e],n)=>n.kind===Ue.hero?[t.concat(n),e]:[t,e.concat(n)]),[[],[]]),heroSections:({partitionedSections:t})=>t[0],otherSections:({partitionedSections:t})=>t[1],heroSection:({heroSections:t})=>t[0],store:()=>d,title:({metadata:{category:t=""}})=>t},provide(){return{store:this.store}},created(){m["default"].setAvailableLocales(this.metadata.availableLocales),this.store.reset(),this.store.setReferences(this.references)},watch:{references(t){this.store.setReferences(t)},"metadata.availableLocales":function(t){m["default"].setAvailableLocales(t)}}},Qe=Ke,Je=(0,k.Z)(Qe,c,u,!1,null,"40c62c57",null),We=Je.exports,Xe=n(5184),Ye={name:"TutorialsOverview",components:{Overview:We},mixins:[l.Z,Xe.Z],data(){return{topicData:null}},computed:{overviewProps:({topicData:{metadata:t,references:e,sections:n}})=>({metadata:t,references:e,sections:n}),topicKey:({$route:t,topicData:e})=>[t.path,e.identifier.interfaceLanguage].join()},beforeRouteEnter(t,e,n){t.meta.skipFetchingData?n((t=>t.newContentMounted())):(0,r.Ek)(t,e,n).then((t=>n((e=>{e.topicData=t})))).catch(n)},beforeRouteUpdate(t,e,n){(0,r.Us)(t,e)?(0,r.Ek)(t,e,n).then((t=>{this.topicData=t,n()})).catch(n):n()},mounted(){this.$bridge.on("contentUpdate",this.handleContentUpdateFromBridge)},beforeDestroy(){this.$bridge.off("contentUpdate",this.handleContentUpdateFromBridge)},watch:{topicData(){this.$nextTick((()=>{this.newContentMounted()}))}}},tn=Ye,en=(0,k.Z)(tn,o,a,!1,null,null,null),nn=en.exports}}]); \ No newline at end of file diff --git a/docs/js/tutorials-overview.acb09e8a.js b/docs/js/tutorials-overview.acb09e8a.js new file mode 100644 index 0000000..4b22a62 --- /dev/null +++ b/docs/js/tutorials-overview.acb09e8a.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +"use strict";(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[843],{7214:function(t,e,n){n.d(e,{Z:function(){return u}});var i=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"download-icon",attrs:{viewBox:"0 0 14 14",themeId:"download"}},[e("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5z"}}),e("path",{attrs:{d:"M7.51 2.964l-0.001 5.431 1.308-2.041 0.842 0.539-2.664 4.162-2.633-4.164 0.845-0.534 1.303 2.059 0.001-5.452z"}})])},s=[],o=n(9742),a={name:"DownloadIcon",components:{SVGIcon:o.Z}},r=a,l=n(1001),c=(0,l.Z)(r,i,s,!1,null,null,null),u=c.exports},7181:function(t,e,n){n.d(e,{Z:function(){return u}});var i=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"inline-close-icon",attrs:{viewBox:"0 0 14 14",themeId:"inline-close"}},[e("path",{attrs:{d:"M11.91 1l1.090 1.090-4.917 4.915 4.906 4.905-1.090 1.090-4.906-4.905-4.892 4.894-1.090-1.090 4.892-4.894-4.903-4.904 1.090-1.090 4.903 4.904z"}})])},s=[],o=n(9742),a={name:"InlineCloseIcon",components:{SVGIcon:o.Z}},r=a,l=n(1001),c=(0,l.Z)(r,i,s,!1,null,null,null),u=c.exports},2573:function(t,e,n){n.d(e,{Z:function(){return c}});var i=function(){var t=this,e=t._self._c;return e("router-link",{staticClass:"nav-title-content",attrs:{to:t.to}},[e("span",{staticClass:"title"},[t._t("default")],2),e("span",{staticClass:"subhead"},[t._v(" "),t._t("subhead")],2)])},s=[],o={name:"NavTitleContainer",props:{to:{type:[String,Object],required:!0}}},a=o,r=n(1001),l=(0,r.Z)(a,i,s,!1,null,"854b4dd6",null),c=l.exports},9732:function(t,e,n){n.d(e,{Z:function(){return c}});var i,s,o={name:"TransitionExpand",functional:!0,render(t,e){const n={props:{name:"expand"},on:{afterEnter(t){t.style.height="auto"},enter(t){const{width:e}=getComputedStyle(t);t.style.width=e,t.style.position="absolute",t.style.visibility="hidden",t.style.height="auto";const{height:n}=getComputedStyle(t);t.style.width=null,t.style.position=null,t.style.visibility=null,t.style.height=0,getComputedStyle(t).height,requestAnimationFrame((()=>{t.style.height=n}))},leave(t){const{height:e}=getComputedStyle(t);t.style.height=e,getComputedStyle(t).height,requestAnimationFrame((()=>{t.style.height=0}))}}};return t("transition",n,e.children)}},a=o,r=n(1001),l=(0,r.Z)(a,i,s,!1,null,null,null),c=l.exports},578:function(t,e,n){n.r(e),n.d(e,{default:function(){return Ee}});var i=function(){var t=this,e=t._self._c;return t.topicData?e("Overview",t._b({key:t.topicKey},"Overview",t.overviewProps,!1)):t._e()},s=[],o=n(8841),a=n(1789),r=function(){var t=this,e=t._self._c;return e("div",{staticClass:"tutorials-overview"},[t.isTargetIDE?t._e():e("Nav",{staticClass:"theme-dark",attrs:{sections:t.otherSections}},[t._v(" "+t._s(t.title)+" ")]),e("main",{staticClass:"main",attrs:{id:"app-main",tabindex:"0"}},[e("div",{staticClass:"radial-gradient"},[t._t("above-hero"),t.heroSection?e("Hero",{attrs:{action:t.heroSection.action,content:t.heroSection.content,estimatedTime:t.metadata.estimatedTime,image:t.heroSection.image,title:t.heroSection.title}}):t._e()],2),t.otherSections.length>0?e("LearningPath",{attrs:{sections:t.otherSections}}):t._e()],1)],1)},l=[],c=n(4030),u={state:{activeTutorialLink:null,activeVolume:null,references:{}},reset(){this.state.activeTutorialLink=null,this.state.activeVolume=null,this.state.references={}},setActiveSidebarLink(t){this.state.activeTutorialLink=t},setActiveVolume(t){this.state.activeVolume=t},setReferences(t){this.state.references=t}},m=function(){var t=this,e=t._self._c;return e("NavBase",{scopedSlots:t._u([{key:"menu-items",fn:function(){return[e("NavMenuItemBase",{staticClass:"in-page-navigation"},[e("TutorialsNavigation",{attrs:{sections:t.sections}})],1),t._t("menu-items")]},proxy:!0}],null,!0)},[e("NavTitleContainer",{attrs:{to:t.buildUrl(t.$route.path,t.$route.query)},scopedSlots:t._u([{key:"default",fn:function(){return[t._t("default")]},proxy:!0},{key:"subhead",fn:function(){return[t._v(t._s(t.$tc("tutorials.title",2)))]},proxy:!0}],null,!0)})],1)},d=[],p=n(2586),h=function(){var t=this,e=t._self._c;return e("nav",{staticClass:"tutorials-navigation"},[e("TutorialsNavigationList",t._l(t.sections,(function(n,i){return e("li",{key:`${n.name}_${i}`,class:t.sectionClasses(n)},[t.isVolume(n)?e(t.componentForVolume(n),t._b({tag:"component",on:{"select-menu":t.onSelectMenu,"deselect-menu":t.onDeselectMenu}},"component",t.propsForVolume(n),!1),t._l(n.chapters,(function(n){return e("li",{key:n.name},[e("TutorialsNavigationLink",[t._v(" "+t._s(n.name)+" ")])],1)})),0):t.isResources(n)?e("TutorialsNavigationLink",[t._v(" "+t._s(t.$t("sections.resources"))+" ")]):t._e()],1)})),0)],1)},v=[],f=function(){var t=this,e=t._self._c;return e("router-link",{staticClass:"tutorials-navigation-link",class:{active:t.active},attrs:{to:t.fragment},nativeOn:{click:function(e){return t.handleFocusAndScroll(t.fragment.hash)}}},[t._t("default")],2)},_=[],g=n(3208),C=n(3704),y={name:"TutorialsNavigationLink",mixins:[C.Z],inject:{store:{default:()=>({state:{}})}},data(){return{state:this.store.state}},computed:{active:({state:{activeTutorialLink:t},text:e})=>e===t,fragment:({text:t,$route:e})=>({hash:(0,g.HA)(t),query:e.query}),text:({$slots:{default:[{text:t}]}})=>t.trim()}},b=y,T=n(1001),S=(0,T.Z)(b,f,_,!1,null,"e9f9b59c",null),k=S.exports,V=function(){var t=this,e=t._self._c;return e("ol",{staticClass:"tutorials-navigation-list"},[t._t("default")],2)},Z=[],x={name:"TutorialsNavigationList"},I=x,N=(0,T.Z)(I,V,Z,!1,null,"4e0180fa",null),A=N.exports,w=function(){var t=this,e=t._self._c;return e("div",{staticClass:"tutorials-navigation-menu",class:{collapsed:t.collapsed}},[e("button",{staticClass:"toggle",attrs:{"aria-expanded":t.collapsed?"false":"true",type:"button"},on:{click:function(e){return e.stopPropagation(),t.onClick.apply(null,arguments)}}},[e("span",{staticClass:"text"},[t._v(t._s(t.title))]),e("InlineCloseIcon",{staticClass:"toggle-icon icon-inline"})],1),e("transition-expand",[t.collapsed?t._e():e("div",{staticClass:"tutorials-navigation-menu-content"},[e("TutorialsNavigationList",{attrs:{"aria-label":t.$t("tutorials.nav.chapters")}},[t._t("default")],2)],1)])],1)},q=[],$=n(7181),L=n(9732),M={name:"TutorialsNavigationMenu",components:{InlineCloseIcon:$.Z,TransitionExpand:L.Z,TutorialsNavigationList:A},props:{collapsed:{type:Boolean,default:!0},title:{type:String,required:!0}},methods:{onClick(){this.collapsed?this.$emit("select-menu",this.title):this.$emit("deselect-menu")}}},D=M,F=(0,T.Z)(D,w,q,!1,null,"489416f8",null),R=F.exports;const O={resources:"resources",volume:"volume"};var j={name:"TutorialsNavigation",components:{TutorialsNavigationLink:k,TutorialsNavigationList:A,TutorialsNavigationMenu:R},constants:{SectionKind:O},inject:{store:{default:()=>({setActiveVolume(){}})}},data(){return{state:this.store.state}},props:{sections:{type:Array,required:!0}},computed:{activeVolume:({state:t})=>t.activeVolume},methods:{sectionClasses(t){return{volume:this.isVolume(t),"volume--named":this.isNamedVolume(t),resource:this.isResources(t)}},componentForVolume:({name:t})=>t?R:A,isResources:({kind:t})=>t===O.resources,isVolume:({kind:t})=>t===O.volume,activateFirstNamedVolume(){const{isNamedVolume:t,sections:e}=this,n=e.find(t);n&&this.store.setActiveVolume(n.name)},isNamedVolume(t){return this.isVolume(t)&&t.name},onDeselectMenu(){this.store.setActiveVolume(null)},onSelectMenu(t){this.store.setActiveVolume(t)},propsForVolume({name:t}){const{activeVolume:e}=this;return t?{collapsed:t!==e,title:t}:{"aria-label":"Chapters"}}},created(){this.activateFirstNamedVolume()}},B=j,G=(0,T.Z)(B,h,v,!1,null,"79093ed6",null),H=G.exports,z=n(2573),P=n(2449),E=n(535);const U={resources:"resources",volume:"volume"};var K={name:"Nav",constants:{SectionKind:U},components:{NavMenuItemBase:E.Z,NavTitleContainer:z.Z,TutorialsNavigation:H,NavBase:p.Z},props:{sections:{type:Array,require:!0}},methods:{buildUrl:P.Q2}},Q=K,J=(0,T.Z)(Q,m,d,!1,null,"54bcce6d",null),W=J.exports,X=n(2974),Y=function(){var t=this,e=t._self._c;return e("section",{staticClass:"hero"},[e("div",{staticClass:"copy-container"},[e("h1",{staticClass:"title"},[t._v(t._s(t.title))]),t.content?e("ContentNode",{attrs:{content:t.content}}):t._e(),t.estimatedTime?e("p",{staticClass:"meta"},[e("TimerIcon"),e("span",{staticClass:"meta-content"},[e("strong",{staticClass:"time"},[t._v(t._s(t.estimatedTime))]),e("span",[t._v(" "+t._s(t.$t("tutorials.estimated-time")))])])],1):t._e(),t.action?e("CallToActionButton",{attrs:{action:t.action,"aria-label":t.$t("tutorials.overriding-title",{newTitle:t.action.overridingTitle,title:t.title}),isDark:""}}):t._e()],1),t.image?e("Asset",{attrs:{identifier:t.image}}):t._e()],1)},tt=[],et=n(4655),nt=n(7605),it=n(9519),st=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"timer-icon",attrs:{viewBox:"0 0 14 14",themeId:"timer"}},[e("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 2c-2.761 0-5 2.239-5 5s2.239 5 5 5c2.761 0 5-2.239 5-5v0c0-2.761-2.239-5-5-5v0z"}}),e("path",{attrs:{d:"M6.51 3.51h1.5v3.5h-1.5v-3.5z"}}),e("path",{attrs:{d:"M6.51 7.010h4v1.5h-4v-1.5z"}})])},ot=[],at=n(9742),rt={name:"TimerIcon",components:{SVGIcon:at.Z}},lt=rt,ct=(0,T.Z)(lt,st,ot,!1,null,null,null),ut=ct.exports,mt={name:"Hero",components:{Asset:et.Z,CallToActionButton:nt.Z,ContentNode:it["default"],TimerIcon:ut},props:{action:{type:Object,required:!1},content:{type:Array,required:!1},estimatedTime:{type:String,required:!1},image:{type:String,required:!1},title:{type:String,required:!0}}},dt=mt,pt=(0,T.Z)(dt,Y,tt,!1,null,"383dab71",null),ht=pt.exports,vt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"learning-path",class:t.classes},[e("div",{staticClass:"main-container"},[t.isTargetIDE?t._e():e("div",{staticClass:"secondary-content-container"},[e("TutorialsNavigation",{attrs:{sections:t.sections,"aria-label":t.$t("sections.on-this-page")}})],1),e("div",{staticClass:"primary-content-container"},[e("div",{staticClass:"content-sections-container"},[t._l(t.volumes,(function(n,i){return e("Volume",t._b({key:`volume_${i}`,staticClass:"content-section"},"Volume",t.propsFor(n),!1))})),t._l(t.otherSections,(function(n,i){return e(t.componentFor(n),t._b({key:`resource_${i}`,tag:"component",staticClass:"content-section"},"component",t.propsFor(n),!1))}))],2)])])])},ft=[],_t=function(){var t=this,e=t._self._c;return e("section",{staticClass:"resources",attrs:{id:"resources",tabindex:"-1"}},[e("VolumeName",{attrs:{name:t.$t("sections.resources"),content:t.content}}),e("TileGroup",{attrs:{tiles:t.tiles}})],1)},gt=[],Ct=n(9146);const yt={topOneThird:"-30% 0% -70% 0%",center:"-50% 0% -50% 0%"};var bt={mixins:[Ct["default"]],computed:{intersectionRoot(){return null},intersectionRootMargin(){return yt.center}},methods:{onIntersect(t){if(!t.isIntersecting)return;const e=this.onIntersectViewport;e?e():console.warn("onIntersectViewportCenter not implemented")}}},Tt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"volume-name"},[t.image?e("Asset",{staticClass:"image",attrs:{identifier:t.image,"aria-hidden":"true"}}):t._e(),e("h2",{staticClass:"name"},[t._v(" "+t._s(t.name)+" ")]),t.content?e("ContentNode",{attrs:{content:t.content}}):t._e()],1)},St=[],kt={name:"VolumeName",components:{ContentNode:it["default"],Asset:et.Z},props:{image:{type:String,required:!1},content:{type:Array,required:!1},name:{type:String,required:!1}}},Vt=kt,Zt=(0,T.Z)(Vt,Tt,St,!1,null,"569db166",null),xt=Zt.exports,It=function(){var t=this,e=t._self._c;return e("div",{staticClass:"tile-group",class:t.countClass},t._l(t.tiles,(function(n){return e("Tile",t._b({key:n.title},"Tile",t.propsFor(n),!1))})),1)},Nt=[],At=function(){var t=this,e=t._self._c;return e("div",{staticClass:"tile"},[t.identifier?e("div",{staticClass:"icon"},[e(t.iconComponent,{tag:"component"})],1):t._e(),e("div",{staticClass:"title"},[t._v(t._s(t.title))]),e("ContentNode",{attrs:{content:t.content}}),t.action?e("DestinationDataProvider",{attrs:{destination:t.action},scopedSlots:t._u([{key:"default",fn:function({url:n,title:i}){return[e("Reference",{staticClass:"link",attrs:{url:n}},[t._v(" "+t._s(i)+" "),e("InlineChevronRightIcon",{staticClass:"link-icon icon-inline"})],1)]}}],null,!1,2081312588)}):t._e()],1)},wt=[],qt=n(7775),$t=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"document-icon",attrs:{viewBox:"0 0 14 14",themeId:"document"}},[e("path",{attrs:{d:"M11.2,5.3,8,2l-.1-.1H2.8V12.1h8.5V6.3l-.1-1ZM8,3.2l2,2.1H8Zm2.4,8H3.6V2.8H7V6.3h3.4Z"}})])},Lt=[],Mt={name:"DocumentIcon",components:{SVGIcon:at.Z}},Dt=Mt,Ft=(0,T.Z)(Dt,$t,Lt,!1,null,"3a80772b",null),Rt=Ft.exports,Ot=n(7214),jt=function(){var t=this,e=t._self._c;return e("SVGIcon",{staticClass:"forum-icon",attrs:{viewBox:"0 0 14 14",themeId:"forum"}},[e("path",{attrs:{d:"M13 1v9h-7l-1.5 3-1.5-3h-2v-9zM12 2h-10v7h1.616l0.884 1.763 0.88-1.763h6.62z"}}),e("path",{attrs:{d:"M3 4h8.001v1h-8.001v-1z"}}),e("path",{attrs:{d:"M3 6h8.001v1h-8.001v-1z"}})])},Bt=[],Gt={name:"ForumIcon",components:{SVGIcon:at.Z}},Ht=Gt,zt=(0,T.Z)(Ht,jt,Bt,!1,null,null,null),Pt=zt.exports,Et=n(6698),Ut=n(4260),Kt=n(8785),Qt=n(1295);const Jt={documentation:"documentation",downloads:"downloads",featured:"featured",forums:"forums",sampleCode:"sampleCode",videos:"videos"};var Wt={name:"Tile",constants:{Identifier:Jt},components:{DestinationDataProvider:Qt.Z,InlineChevronRightIcon:Kt.Z,ContentNode:it["default"],CurlyBracketsIcon:qt.Z,DocumentIcon:Rt,DownloadIcon:Ot.Z,ForumIcon:Pt,PlayIcon:Et.Z,Reference:Ut.Z},props:{action:{type:Object,required:!1},content:{type:Array,required:!0},identifier:{type:String,required:!1},title:{type:String,require:!0}},computed:{iconComponent:({identifier:t})=>({[Jt.documentation]:Rt,[Jt.downloads]:Ot.Z,[Jt.forums]:Pt,[Jt.sampleCode]:qt.Z,[Jt.videos]:Et.Z}[t])}},Xt=Wt,Yt=(0,T.Z)(Xt,At,wt,!1,null,"74dbeb68",null),te=Yt.exports,ee={name:"TileGroup",components:{Tile:te},props:{tiles:{type:Array,required:!0}},computed:{countClass:({tiles:t})=>`count-${t.length}`},methods:{propsFor:({action:t,content:e,identifier:n,title:i})=>({action:t,content:e,identifier:n,title:i})}},ne=ee,ie=(0,T.Z)(ne,It,Nt,!1,null,"4cacce0a",null),se=ie.exports,oe={name:"Resources",mixins:[bt],inject:{store:{default:()=>({setActiveSidebarLink(){},setActiveVolume(){}})}},components:{VolumeName:xt,TileGroup:se},computed:{intersectionRootMargin:()=>yt.topOneThird},props:{content:{type:Array,required:!1},tiles:{type:Array,required:!0}},methods:{onIntersectViewport(){this.store.setActiveSidebarLink("Resources"),this.store.setActiveVolume(null)}}},ae=oe,re=(0,T.Z)(ae,_t,gt,!1,null,"7f8022c1",null),le=re.exports,ce=function(){var t=this,e=t._self._c;return e("section",{staticClass:"volume"},[t.name?e("VolumeName",t._b({},"VolumeName",{name:t.name,image:t.image,content:t.content},!1)):t._e(),t._l(t.chapters,(function(n,i){return e("Chapter",{key:n.name,staticClass:"tile",attrs:{content:n.content,image:n.image,name:n.name,number:i+1,topics:t.lookupTopics(n.tutorials),volumeHasName:!!t.name}})}))],2)},ue=[],me=function(){var t=this,e=t._self._c;return e("section",{staticClass:"chapter",attrs:{id:t.anchor,tabindex:"-1"}},[e("div",{staticClass:"info"},[e("Asset",{attrs:{identifier:t.image,"aria-hidden":"true"}}),e("div",{staticClass:"intro"},[e(t.volumeHasName?"h3":"h2",{tag:"component",staticClass:"name",attrs:{"aria-label":`${t.name} - ${t.$tc("tutorials.sections.chapter",{number:t.number})}`}},[e("span",{staticClass:"eyebrow",attrs:{"aria-hidden":"true"}},[t._v(" "+t._s(t.$t("tutorials.sections.chapter",{number:t.number}))+" ")]),e("span",{staticClass:"name-text",attrs:{"aria-hidden":"true"}},[t._v(t._s(t.name))])]),t.content?e("ContentNode",{attrs:{content:t.content}}):t._e()],1)],1),e("TopicList",{attrs:{topics:t.topics}})],1)},de=[],pe=function(){var t=this,e=t._self._c;return e("ol",{staticClass:"topic-list"},t._l(t.topics,(function(n){return e("li",{key:n.url,staticClass:"topic",class:[t.kindClassFor(n),{"no-time-estimate":!n.estimatedTime}]},[e("div",{staticClass:"topic-icon"},[e(t.iconComponent(n),{tag:"component"})],1),e("router-link",{staticClass:"container",attrs:{to:t.buildUrl(n.url,t.$route.query),"aria-label":t.ariaLabelFor(n)}},[e("div",{staticClass:"link"},[t._v(t._s(n.title))]),n.estimatedTime?e("div",{staticClass:"time"},[e("TimerIcon"),e("span",{staticClass:"time-label"},[t._v(t._s(n.estimatedTime))])],1):t._e()])],1)})),0)},he=[],ve=n(5692),fe=n(8638);const _e={article:"article",tutorial:"project"},ge={article:"article",tutorial:"tutorial"},Ce={[_e.article]:"Article",[_e.tutorial]:"Tutorial"};var ye={name:"ChapterTopicList",components:{TimerIcon:ut},constants:{TopicKind:_e,TopicKindClass:ge,TopicKindIconLabel:Ce},props:{topics:{type:Array,required:!0}},methods:{buildUrl:P.Q2,iconComponent:({kind:t})=>({[_e.article]:ve.Z,[_e.tutorial]:fe.Z}[t]),kindClassFor:({kind:t})=>({[_e.article]:ge.article,[_e.tutorial]:ge.tutorial}[t]),formatTime(t){return t.replace("min",` ${this.$t("tutorials.time.minutes.full")}`).replace("hrs",` ${this.$t("tutorials.time.hours.full")}`)},ariaLabelFor(t){const{title:e,estimatedTime:n,kind:i}=t,s=[e,Ce[i]];return n&&s.push(`${this.formatTime(n)} ${this.$t("tutorials.estimated-time")}`),s.join(" - ")}}},be=ye,Te=(0,T.Z)(be,pe,he,!1,null,"0589dc3b",null),Se=Te.exports,ke={name:"Chapter",mixins:[bt],inject:{store:{default:()=>({setActiveSidebarLink(){},setActiveVolume(){}})}},components:{Asset:et.Z,ContentNode:it["default"],TopicList:Se},props:{content:{type:Array,required:!1},image:{type:String,required:!0},name:{type:String,required:!0},number:{type:Number,required:!0},topics:{type:Array,required:!0},volumeHasName:{type:Boolean,default:!1}},computed:{anchor:({name:t})=>(0,g.HA)(t),intersectionRootMargin:()=>yt.topOneThird},methods:{onIntersectViewport(){this.store.setActiveSidebarLink(this.name),this.volumeHasName||this.store.setActiveVolume(null)}}},Ve=ke,Ze=(0,T.Z)(Ve,me,de,!1,null,"7468bc5e",null),xe=Ze.exports,Ie={name:"Volume",mixins:[bt],components:{VolumeName:xt,Chapter:xe},computed:{references:({store:t})=>t.state.references,intersectionRootMargin:()=>yt.topOneThird},inject:{store:{default:()=>({setActiveVolume(){},state:{references:{}}})}},props:{chapters:{type:Array,required:!0},content:{type:Array,required:!1},image:{type:String,required:!1},name:{type:String,required:!1}},methods:{lookupTopics(t){return t.reduce(((t,e)=>t.concat(this.references[e]||[])),[])},onIntersectViewport(){this.name&&this.store.setActiveVolume(this.name)}}},Ne=Ie,Ae=(0,T.Z)(Ne,ce,ue,!1,null,"540dbf10",null),we=Ae.exports;const qe={resources:"resources",volume:"volume"};var $e={name:"LearningPath",components:{Resources:le,TutorialsNavigation:H,Volume:we},constants:{SectionKind:qe},inject:{isTargetIDE:{default:!1}},props:{sections:{type:Array,required:!0,validator:t=>t.every((t=>Object.prototype.hasOwnProperty.call(qe,t.kind)))}},computed:{classes:({isTargetIDE:t})=>({ide:t}),partitionedSections:({sections:t})=>t.reduce((([t,e],n)=>n.kind===qe.volume?[t.concat(n),e]:[t,e.concat(n)]),[[],[]]),volumes:({partitionedSections:t})=>t[0],otherSections:({partitionedSections:t})=>t[1]},methods:{componentFor:({kind:t})=>({[qe.resources]:le,[qe.volume]:we}[t]),propsFor:({chapters:t,content:e,image:n,kind:i,name:s,tiles:o})=>({[qe.resources]:{content:e,tiles:o},[qe.volume]:{chapters:t,content:e,image:n,name:s}}[i])}},Le=$e,Me=(0,T.Z)(Le,vt,ft,!1,null,"69a72bbc",null),De=Me.exports;const Fe={hero:"hero",resources:"resources",volume:"volume"};var Re={name:"TutorialsOverview",components:{Hero:ht,LearningPath:De,Nav:W},mixins:[X.Z],constants:{SectionKind:Fe},inject:{isTargetIDE:{default:!1}},props:{metadata:{type:Object,default:()=>({})},references:{type:Object,default:()=>({})},sections:{type:Array,default:()=>[],validator:t=>t.every((t=>Object.prototype.hasOwnProperty.call(Fe,t.kind)))}},computed:{pageTitle:({title:t})=>[t,"Tutorials"].filter(Boolean).join(" "),pageDescription:({heroSection:t,extractFirstParagraphText:e})=>t?e(t.content):null,partitionedSections:({sections:t})=>t.reduce((([t,e],n)=>n.kind===Fe.hero?[t.concat(n),e]:[t,e.concat(n)]),[[],[]]),heroSections:({partitionedSections:t})=>t[0],otherSections:({partitionedSections:t})=>t[1],heroSection:({heroSections:t})=>t[0],store:()=>u,title:({metadata:{category:t=""}})=>t},provide(){return{store:this.store}},created(){c["default"].setAvailableLocales(this.metadata.availableLocales),this.store.reset(),this.store.setReferences(this.references)},watch:{references(t){this.store.setReferences(t)},"metadata.availableLocales":function(t){c["default"].setAvailableLocales(t)}}},Oe=Re,je=(0,T.Z)(Oe,r,l,!1,null,"5381f0aa",null),Be=je.exports,Ge=n(5184),He={name:"TutorialsOverview",components:{Overview:Be},mixins:[a.Z,Ge.Z],data(){return{topicData:null}},computed:{overviewProps:({topicData:{metadata:t,references:e,sections:n}})=>({metadata:t,references:e,sections:n}),topicKey:({$route:t,topicData:e})=>[t.path,e.identifier.interfaceLanguage].join()},beforeRouteEnter(t,e,n){t.meta.skipFetchingData?n((t=>t.newContentMounted())):(0,o.Ek)(t,e,n).then((t=>n((e=>{e.topicData=t})))).catch(n)},beforeRouteUpdate(t,e,n){(0,o.Us)(t,e)?(0,o.Ek)(t,e,n).then((t=>{this.topicData=t,n()})).catch(n):n()},mounted(){this.$bridge.on("contentUpdate",this.handleContentUpdateFromBridge)},beforeDestroy(){this.$bridge.off("contentUpdate",this.handleContentUpdateFromBridge)},watch:{topicData(){this.$nextTick((()=>{this.newContentMounted()}))}}},ze=He,Pe=(0,T.Z)(ze,i,s,!1,null,null,null),Ee=Pe.exports}}]); \ No newline at end of file diff --git a/docs/metadata.json b/docs/metadata.json index 08f5b83..6633899 100644 --- a/docs/metadata.json +++ b/docs/metadata.json @@ -1 +1 @@ -{"bundleIdentifier":"PlaybackSDK","schemaVersion":{"major":0,"patch":0,"minor":1},"bundleDisplayName":"PlaybackSDK"} \ No newline at end of file +{"schemaVersion":{"patch":0,"major":0,"minor":1},"bundleDisplayName":"PlaybackSDK","bundleIdentifier":"PlaybackSDK"} \ No newline at end of file diff --git a/docs/tutorials/playbacksdk/getstarted/index.html b/docs/tutorials/playbacksdk/getstarted/index.html index c25d820..ae6e4e5 100644 --- a/docs/tutorials/playbacksdk/getstarted/index.html +++ b/docs/tutorials/playbacksdk/getstarted/index.html @@ -1 +1 @@ -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/docs/tutorials/table-of-contents/index.html b/docs/tutorials/table-of-contents/index.html index c25d820..ae6e4e5 100644 --- a/docs/tutorials/table-of-contents/index.html +++ b/docs/tutorials/table-of-contents/index.html @@ -1 +1 @@ -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file From 494db35752cc5ce70f7e4d34a5ed622e5211cade Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Mon, 2 Dec 2024 14:31:33 +0100 Subject: [PATCH 24/26] CORE-4594 Playlist API integration - Rollback generate folder structure script for Github build job --- generate_folder_structure.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 generate_folder_structure.sh diff --git a/generate_folder_structure.sh b/generate_folder_structure.sh new file mode 100644 index 0000000..2efdd95 --- /dev/null +++ b/generate_folder_structure.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# Determine the current working directory +CURRENT_DIR=$(pwd) + +# Create the Folder Structure.md file in the specified directory +mkdir -p "$CURRENT_DIR/Tests/PlaybackSDKTests" +echo "# Folder Structure" > "$CURRENT_DIR/Tests/PlaybackSDKTests/Folder Structure.md" +echo "" >> "$CURRENT_DIR/Tests/PlaybackSDKTests/Folder Structure.md" +echo "This file represents the folder structure of the project." >> "$CURRENT_DIR/Tests/PlaybackSDKTests/Folder Structure.md" +echo "You can update it with the actual structure if needed." >> "$CURRENT_DIR/Tests/PlaybackSDKTests/Folder Structure.md" + +echo "Folder Structure.md generated successfully in $CURRENT_DIR/Tests/PlaybackSDKTests" \ No newline at end of file From 2318ff70fbb314e79bd40bfc78295b3bc26c1016 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Thu, 5 Dec 2024 12:30:02 +0100 Subject: [PATCH 25/26] CORE-4594 Playlist API integration - Convert PlaybackVideoDetails class to struct as @artem-y-pamediagroup suggested on PR #26 --- Sources/PlaybackSDK/Playback API/PlaybackVideoDetails.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/PlaybackSDK/Playback API/PlaybackVideoDetails.swift b/Sources/PlaybackSDK/Playback API/PlaybackVideoDetails.swift index dfdf764..5e46cc8 100644 --- a/Sources/PlaybackSDK/Playback API/PlaybackVideoDetails.swift +++ b/Sources/PlaybackSDK/Playback API/PlaybackVideoDetails.swift @@ -8,7 +8,7 @@ #if !os(macOS) import Foundation -public class PlaybackVideoDetails { +public struct PlaybackVideoDetails { public var videoId: String public var url: String? From b351d102c66af031af25ebcad8150c1c2088eec6 Mon Sep 17 00:00:00 2001 From: Stefano Russello Date: Thu, 5 Dec 2024 13:32:08 +0100 Subject: [PATCH 26/26] CORE-4594 Playlist API integration - Changed generate_folder_structure script to create Folder Structure md file automatically - Updated Folder Structure file for Tests and Sources directories --- Sources/PlaybackSDK/Folder Structure.md | 23 ++++++++++++++++++++++ Tests/PlaybackSDKTests/Folder Structure.md | 6 ++++++ generate_folder_structure.sh | 23 ++++++++++++++++++---- 3 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 Sources/PlaybackSDK/Folder Structure.md create mode 100644 Tests/PlaybackSDKTests/Folder Structure.md diff --git a/Sources/PlaybackSDK/Folder Structure.md b/Sources/PlaybackSDK/Folder Structure.md new file mode 100644 index 0000000..3a21423 --- /dev/null +++ b/Sources/PlaybackSDK/Folder Structure.md @@ -0,0 +1,23 @@ +# Folder Structure + +PlaybackSDK +├── Playback API +│   ├── PlaybackAPI.swift +│   ├── PlaybackAPIService.swift +│   ├── PlaybackResponseModel.swift +│   └── PlaybackVideoDetails.swift +├── Playback Configuration API +│   ├── PlayerInformationAPI.swift +│   ├── PlayerInformationAPIService.swift +│   └── PlayerInformationResponseModel.swift +├── PlaybackSDKManager.swift +├── Player Plugin +│   ├── BitMovinPlugin +│   │   ├── BitmovinPlayerPlugin.swift +│   │   └── BitmovinPlayerView.swift +│   ├── VideoPlayerConfig.swift +│   ├── VideoPlayerPlugin.swift +│   └── VideoPlayerPluginManager.swift +└── PlayerUIView + ├── PlaybackUIView.swift + └── UtilsUIView.swift diff --git a/Tests/PlaybackSDKTests/Folder Structure.md b/Tests/PlaybackSDKTests/Folder Structure.md new file mode 100644 index 0000000..d0b2974 --- /dev/null +++ b/Tests/PlaybackSDKTests/Folder Structure.md @@ -0,0 +1,6 @@ +# Folder Structure + +PlaybackSDKTests +├── PlaybackSDKManagerTests.swift +├── PlaybackSDKTests.swift +└── TestConfig.swift diff --git a/generate_folder_structure.sh b/generate_folder_structure.sh index 2efdd95..32e081e 100644 --- a/generate_folder_structure.sh +++ b/generate_folder_structure.sh @@ -3,11 +3,26 @@ # Determine the current working directory CURRENT_DIR=$(pwd) -# Create the Folder Structure.md file in the specified directory +# Check for tree using Homebrew, installs it if needed +if ! command -v tree &> /dev/null; then + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + brew install tree +fi + +# Create the Folder Structure.md file in the Tests directory mkdir -p "$CURRENT_DIR/Tests/PlaybackSDKTests" echo "# Folder Structure" > "$CURRENT_DIR/Tests/PlaybackSDKTests/Folder Structure.md" echo "" >> "$CURRENT_DIR/Tests/PlaybackSDKTests/Folder Structure.md" -echo "This file represents the folder structure of the project." >> "$CURRENT_DIR/Tests/PlaybackSDKTests/Folder Structure.md" -echo "You can update it with the actual structure if needed." >> "$CURRENT_DIR/Tests/PlaybackSDKTests/Folder Structure.md" -echo "Folder Structure.md generated successfully in $CURRENT_DIR/Tests/PlaybackSDKTests" \ No newline at end of file +cd "$CURRENT_DIR/Tests/" +tree --noreport -I "*.md" "PlaybackSDKTests" >> "$CURRENT_DIR/Tests/PlaybackSDKTests/Folder Structure.md" +echo "Folder Structure.md generated successfully in $CURRENT_DIR/Tests/PlaybackSDKTests" + +# Create the Folder Structure.md file in the Sources directory +mkdir -p "$CURRENT_DIR/Sources/PlaybackSDK" +echo "# Folder Structure" > "$CURRENT_DIR/Sources/PlaybackSDK/Folder Structure.md" +echo "" >> "$CURRENT_DIR/Sources/PlaybackSDK/Folder Structure.md" + +cd "$CURRENT_DIR/Sources/" +tree --noreport -I "*.md|*.docc|*.xcprivacy" "PlaybackSDK" >> "$CURRENT_DIR/Sources/PlaybackSDK/Folder Structure.md" +echo "Folder Structure.md generated successfully in $CURRENT_DIR/Sources/PlaybackSDK"