diff --git a/.gitignore b/.gitignore index 29bc6d517..145c06a18 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,7 @@ xcuserdata *.xcscmblueprint ## Obj-C/Swift specific -*.hmap \ No newline at end of file +*.hmap + +## External libraries +/Pods/ \ No newline at end of file diff --git a/Pods/Local Podspecs/AltSign.podspec.json b/Pods/Local Podspecs/AltSign.podspec.json deleted file mode 100644 index 8e8943d0e..000000000 --- a/Pods/Local Podspecs/AltSign.podspec.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "name": "AltSign", - "version": "0.1", - "summary": "Open source iOS code-signing framework.", - "description": "iOS framework to manage Apple developer accounts and resign apps.", - "homepage": "https://github.com/rileytestut/altsign", - "license": "MIT", - "platforms": { - "ios": "12.0" - }, - "source": { - "git": "https://github.com/rileytestut/AltSign.git" - }, - "authors": { - "Riley Testut": "riley@rileytestut.com" - }, - "social_media_url": "https://twitter.com/rileytestut", - "source_files": [ - "AltSign", - "AltSign/**/*.{h,m,mm,hpp,cpp,swift}" - ], - "public_header_files": "AltSign/**/*.h", - "resources": "AltSign/Resources/apple.pem", - "libraries": "c++", - "xcconfig": { - "OTHER_CFLAGS": "-DCORECRYPTO_DONOT_USE_TRANSPARENT_UNION=1", - "GCC_PREPROCESSOR_DEFINITIONS": "INCLUDE_PRIVATE_API=1 CORECRYPTO_DONOT_USE_TRANSPARENT_UNION=1", - "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "$(inherited) INCLUDE_PRIVATE_API", - "SWIFT_INCLUDE_PATHS": "$(PODS_ROOT)/../Dependencies/AltSign/Dependencies/corecrypto/", - "SYSTEM_HEADER_SEARCH_PATHS": "$(PODS_ROOT)/Headers/Private/AltSign/" - }, - "subspecs": [ - { - "name": "OpenSSL", - "source_files": "Dependencies/OpenSSL/ios/include/openssl/*.h", - "header_mappings_dir": "Dependencies/OpenSSL/ios/include", - "private_header_files": "Dependencies/OpenSSL/ios/include/openssl/*.h", - "vendored_libraries": [ - "Dependencies/OpenSSL/ios/lib/libcrypto.a", - "Dependencies/OpenSSL/ios/lib/libssl.a" - ] - }, - { - "name": "ldid", - "source_files": [ - "AltSign/ldid/*.{hpp,h,c,cpp}", - "Dependencies/ldid/*.{hpp,h,c,cpp}" - ], - "private_header_files": [ - "AltSign/ldid/*.hpp", - "Dependencies/ldid/*.{hpp,h}" - ], - "header_mappings_dir": "" - }, - { - "name": "plist", - "source_files": [ - "Dependencies/ldid/libplist/include/plist/*.h", - "Dependencies/ldid/libplist/src/*.{c,cpp}", - "Dependencies/ldid/libplist/libcnary/**/*.{h,c}" - ], - "exclude_files": [ - "Dependencies/ldid/libplist/include/plist/String.h", - "Dependencies/ldid/libplist/include/plist/Node.h" - ], - "private_header_files": [ - "Dependencies/ldid/libplist/include/plist/*.h", - "Dependencies/ldid/libplist/libcnary/**/*.h" - ], - "header_mappings_dir": "Dependencies/ldid/libplist", - "xcconfig": { - "HEADER_SEARCH_PATHS": "\"$(SRCROOT)/../Dependencies/AltSign/Dependencies/ldid/libplist/include\" \"$(SRCROOT)/../Dependencies/AltSign/Dependencies/ldid/libplist/src\"" - } - }, - { - "name": "minizip", - "source_files": "Dependencies/minizip/*.{h,c}", - "exclude_files": [ - "Dependencies/minizip/iowin32.*", - "Dependencies/minizip/minizip.c", - "Dependencies/minizip/miniunz.c" - ], - "private_header_files": "Dependencies/minizip/*.h", - "header_mappings_dir": "Dependencies" - }, - { - "name": "CoreCrypto", - "source_files": "Dependencies/corecrypto/*.{h,m,swift,modulemap}", - "exclude_files": "Dependencies/corecrypto/ccperf.h", - "private_header_files": "Dependencies/corecrypto/*.h", - "header_mappings_dir": "Dependencies" - } - ] -} diff --git a/Pods/Local Podspecs/Roxas.podspec.json b/Pods/Local Podspecs/Roxas.podspec.json deleted file mode 100644 index 4697aa184..000000000 --- a/Pods/Local Podspecs/Roxas.podspec.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "Roxas", - "version": "0.1", - "summary": "Private iOS Development Framework", - "description": "Private iOS Development Framework used by me in my projects.", - "homepage": "https://github.com/rileytestut/roxas", - "platforms": { - "ios": "12.0" - }, - "source": { - "git": "http://github.com/rileytestut/Roxas.git" - }, - "authors": { - "Riley Testut": "riley@rileytestut.com" - }, - "social_media_url": "https://twitter.com/rileytestut", - "source_files": "Roxas/*.{h,m}", - "public_header_files": "Roxas/*.h", - "private_header_files": "Roxas/RSTCellContentDataSource_Subclasses.h", - "prefix_header_file": "Roxas/Roxas-Prefix.pch", - "resources": "Roxas/*.xib" -} diff --git a/Pods/Local Podspecs/STPrivilegedTask.podspec.json b/Pods/Local Podspecs/STPrivilegedTask.podspec.json deleted file mode 100644 index 2b80b5479..000000000 --- a/Pods/Local Podspecs/STPrivilegedTask.podspec.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "STPrivilegedTask", - "version": "1.0.8", - "summary": "An NSTask-like wrapper around the macOS Security Framework's AuthorizationExecuteWithPrivileges()", - "description": "An NSTask-like wrapper around AuthorizationExecuteWithPrivileges() in the Security API to run shell commands with root privileges on macOS.", - "homepage": "http://github.com/sveinbjornt/STPrivilegedTask", - "license": { - "type": "BSD" - }, - "authors": { - "Sveinbjorn Thordarson": "sveinbjorn@sveinbjorn.org" - }, - "platforms": { - "osx": "10.8" - }, - "source": { - "git": "https://github.com/sveinbjornt/STPrivilegedTask.git", - "tag": "1.0.8" - }, - "source_files": "STPrivilegedTask.{h,m}", - "exclude_files": "PrivilegedTaskExample", - "public_header_files": "STPrivilegedTask.h", - "frameworks": "Security", - "requires_arc": true -} diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock deleted file mode 100644 index 67591e3d5..000000000 --- a/Pods/Manifest.lock +++ /dev/null @@ -1,32 +0,0 @@ -PODS: - - Nuke (10.7.1) - - Sparkle (2.3.2) - - STPrivilegedTask (1.0.8) - -DEPENDENCIES: - - Nuke (~> 10.0) - - Sparkle (~> 2.3) - - STPrivilegedTask (from `https://github.com/rileytestut/STPrivilegedTask.git`) - -SPEC REPOS: - trunk: - - Nuke - - Sparkle - -EXTERNAL SOURCES: - STPrivilegedTask: - :git: https://github.com/rileytestut/STPrivilegedTask.git - -CHECKOUT OPTIONS: - STPrivilegedTask: - :commit: 02ab5081c4f1d7f6a70f5413c88d32dbbea66f4c - :git: https://github.com/rileytestut/STPrivilegedTask.git - -SPEC CHECKSUMS: - Nuke: 279f17a599fd1c83cf51de5e0e1f2db143a287b0 - Sparkle: b36a51855e81585a1c38e32e53101d36c00f4304 - STPrivilegedTask: 3a3f6add7c567b1be8c326328eb3dd6dc5daed91 - -PODFILE CHECKSUM: c3f735f2bd43afbd34fff2b719ee9ce81912dd50 - -COCOAPODS: 1.16.2 diff --git a/Pods/Nuke/LICENSE b/Pods/Nuke/LICENSE deleted file mode 100644 index 79a77b17d..000000000 --- a/Pods/Nuke/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2022 Alexander Grebenyuk - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Pods/Nuke/README.md b/Pods/Nuke/README.md deleted file mode 100644 index bf7734342..000000000 --- a/Pods/Nuke/README.md +++ /dev/null @@ -1,77 +0,0 @@ -
- - - -# Image Loading System - -

- - -

- -Nuke ILS provides an efficient way to download and display images in your app. It's easy to learn and use thanks to a clear and concise API. Its architecture enables many powerful features while offering virtually unlimited possibilities for customization. - -Despite the number of features, the framework is lean and compiles in under 2 seconds[¹](#footnote-1). Nuke has an automated test suite 2x the size of the codebase itself, ensuring excellent reliability. Every feature is carefully designed and optimized for [performance](https://kean.blog/post/nuke-9). - -> **Fast LRU memory and disk cache** · **SwiftUI** · **Smart background decompression** · **Image processing** · **Resumable downloads** · **Intelligent deduplication** · **Request prioritization** · **Prefetching** · **Rate limiting** · **Progressive JPEG, HEIF, WebP, SVG, GIF** · **Alamofire** · **Combine** · **Reactive extensions** - -## Sponsors -[![Stream](https://i.imgur.com/oU7XYkk.png)](https://getstream.io/?utm_source=github&utm_medium=nuke&utm_campaign=sponsorship) - -Nuke is proudly sponsored by [Stream](https://getstream.io/?utm_source=github&utm_medium=nuke&utm_campaign=sponsorship), the leading provider in enterprise grade [Feed](https://getstream.io/activity-feeds/?utm_source=github&utm_medium=nuke&utm_campaign=sponsorship) & [Chat](https://getstream.io/chat/?utm_source=github&utm_medium=nuke&utm_campaign=sponsorship) APIs. [Try the iOS Chat Tutorial](https://getstream.io/tutorials/ios-chat/?utm_source=github&utm_medium=nuke&utm_campaign=sponsorship). - -[![Keygen](https://camo.githubusercontent.com/3cb2f34584248f3eb8a7ee4ead0d3d04950f4f62b9797c53316535b9b40d2036/68747470733a2f2f73696e647265736f726875732e636f6d2f6173736574732f7468616e6b732f6b657967656e2d6c6f676f2e737667)](https://keygen.sh/?ref=kean) - -Nuke is also sponsored by [Keygen](https://keygen.sh/?ref=kean), a dead-simple software licensing and distribution API built for developers, by developers. - -## Documentation - -Nuke is easy to learn and use thanks to beautiful [**Nuke Docs**](https://kean.blog/nuke/guides/welcome). Make sure to also check out [**Nuke Demo**](https://github.com/kean/NukeDemo). - -> Upgrading from the previous version? Use a [**Migration Guide**](https://github.com/kean/Nuke/blob/10.0.0/Documentation/Migrations). Switching from another framework? Use a [**Switching Guide**](https://github.com/kean/Nuke/tree/master/Documentation/Switch). - - - - - -Nuke documentation is also available for [download](https://t.co/r03Svmcv8B?amp=1) as an Xcode 13 documentation archive compiled using DocC. - - -## Extensions - -The image pipeline is easy to customize and extend. Check out the following first-class extensions and packages built by the community. - -|Name|Description| -|--|--| -|[**NukeUI**](https://github.com/kean/NukeUI)|Lazy image loading for SwiftUI| -|[**NukeBuilder**](https://github.com/kean/NukeBuilder)|A fun and convenient way to use Nuke| -|[**Alamofire Plugin**](https://github.com/kean/Nuke-Alamofire-Plugin)|Replace networking layer with [Alamofire](https://github.com/Alamofire/Alamofire)| -|[**RxNuke**](https://github.com/kean/RxNuke)|[RxSwift](https://github.com/ReactiveX/RxSwift) extensions for Nuke with examples| -|[**WebP Plugin**](https://github.com/ryokosuge/Nuke-WebP-Plugin)| **Community**. [WebP](https://developers.google.com/speed/webp/) support, built by [Ryo Kosuge](https://github.com/ryokosuge)| -|[**AVIF Plugin**](https://github.com/delneg/Nuke-AVIF-Plugin)| **Community**. [AVIF](https://caniuse.com/avif) support, built by [Denis](https://github.com/delneg)| -|[**Gifu Plugin**](https://github.com/kean/Nuke-Gifu-Plugin)|Use [Gifu](https://github.com/kaishin/Gifu) to load and display animated GIFs| -|[**FLAnimatedImage Plugin**](https://github.com/kean/Nuke-AnimatedImage-Plugin)|Use [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage) to load and display [animated GIFs]((https://www.youtube.com/watch?v=fEJqQMJrET4))| -|[**Xamarin NuGet**](https://github.com/roubachof/Xamarin.Forms.Nuke)| **Community**. Makes it possible to use Nuke from Xamarin| - - -## Contribution - -[Nuke's roadmap](https://trello.com/b/Us4rHryT/nuke) is managed in Trello and is publicly available. - - -## Minimum Requirements - -| Nuke | Swift | Xcode | Platforms | -|---------------|-----------------|-----------------|---------------------------------------------------| -| Nuke 10.0 | Swift 5.3 | Xcode 12.0 | iOS 11.0 / watchOS 4.0 / macOS 10.13 / tvOS 11.0 | -| Nuke 9.0 | Swift 5.1 | Xcode 11.0 | iOS 11.0 / watchOS 4.0 / macOS 10.13 / tvOS 11.0 | - -See [Installation Guide](https://kean.blog/nuke/guides/installation) for information about the older versions. - -## License - -Nuke is available under the MIT license. See the LICENSE file for more info. - ----- - -> ¹ Measured on MacBook Pro 14" 2021 (10-core M1 Pro) diff --git a/Pods/Nuke/Sources/Combine/ImagePublisher.swift b/Pods/Nuke/Sources/Combine/ImagePublisher.swift deleted file mode 100644 index 788bfe0df..000000000 --- a/Pods/Nuke/Sources/Combine/ImagePublisher.swift +++ /dev/null @@ -1,106 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2020-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation -import Combine - -@available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) -public extension ImagePipeline { - /// Returns a publisher which starts a new `ImageTask` when a subscriber is added. - /// - /// - note: For more information, see `ImagePublisher`. - func imagePublisher(with request: ImageRequestConvertible) -> ImagePublisher { - ImagePublisher(request: request.asImageRequest(), pipeline: self) - } -} - -/// A publisher that starts a new `ImageTask` when a subscriber is added. -/// -/// If the requested image is available in the memory cache, the value is -/// delivered immediately. When the subscription is cancelled, the task also -/// gets cancelled. -/// -/// - note: In case the pipeline has `isProgressiveDecodingEnabled` option enabled -/// and the image being downloaded supports progressive decoding, the publisher -/// might emit more than a single value. -@available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) -public struct ImagePublisher: Publisher { - public typealias Output = ImageResponse - public typealias Failure = ImagePipeline.Error - - public let request: ImageRequest - public let pipeline: ImagePipeline - - public init(request: ImageRequest, pipeline: ImagePipeline) { - self.request = request - self.pipeline = pipeline - } - - public func receive(subscriber: S) where S: Subscriber, Failure == S.Failure, Output == S.Input { - let subscription = ImageSubscription( - request: self.request, - pipeline: self.pipeline, - subscriber: subscriber - ) - - subscriber.receive(subscription: subscription) - } -} - -@available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) -private final class ImageSubscription: Subscription where S.Input == ImageResponse, S.Failure == ImagePipeline.Error { - private var task: ImageTask? - private let subscriber: S? - private let request: ImageRequest - private let pipeline: ImagePipeline - private var isStarted = false - - init(request: ImageRequest, pipeline: ImagePipeline, subscriber: S) { - self.pipeline = pipeline - self.request = request - self.subscriber = subscriber - - } - - func request(_ demand: Subscribers.Demand) { - guard demand > 0 else { return } - guard let subscriber = subscriber else { return } - - let request = pipeline.configuration.inheritOptions(self.request) - - if let image = pipeline.cache[request] { - _ = subscriber.receive(ImageResponse(container: image, cacheType: .memory)) - - if !image.isPreview { - subscriber.receive(completion: .finished) - return - } - } - - task = pipeline.loadImage( - with: request, - queue: nil, - progress: { response, _, _ in - if let response = response { - // Send progressively decoded image (if enabled and if any) - _ = subscriber.receive(response) - } - }, - completion: { result in - switch result { - case let .success(response): - _ = subscriber.receive(response) - subscriber.receive(completion: .finished) - case let .failure(error): - subscriber.receive(completion: .failure(error)) - } - } - ) - } - - func cancel() { - task?.cancel() - task = nil - } -} diff --git a/Pods/Nuke/Sources/Core/Caching/DataCache.swift b/Pods/Nuke/Sources/Core/Caching/DataCache.swift deleted file mode 100644 index 9542af614..000000000 --- a/Pods/Nuke/Sources/Core/Caching/DataCache.swift +++ /dev/null @@ -1,510 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// An LRU disk cache that stores data in separate files. -/// -/// The DataCache uses LRU cleanup policy (least recently used items are removed -/// first). The elements stored in the cache are automatically discarded if -/// either *cost* or *count* limit is reached. The sweeps are performed periodically. -/// -/// DataCache always writes and removes data asynchronously. It also allows for -/// reading and writing data in parallel. This is implemented using a "staging" -/// area which stores changes until they are flushed to disk: -/// -/// // Schedules data to be written asynchronously and returns immediately -/// cache[key] = data -/// -/// // The data is returned from the staging area -/// let data = cache[key] -/// -/// // Schedules data to be removed asynchronously and returns immediately -/// cache[key] = nil -/// -/// // Data is nil -/// let data = cache[key] -/// -/// Thread-safe. -/// -/// - warning: It's possible to have more than one instance of `DataCache` with -/// the same `path` but it is not recommended. -public final class DataCache: DataCaching { - /// A cache key. - public typealias Key = String - - /// Size limit in bytes. `150 Mb` by default. - /// - /// Changes to `sizeLimit` will take effect when the next LRU sweep is run. - public var sizeLimit: Int = 1024 * 1024 * 150 - - /// When performing a sweep, the cache will remote entries until the size of - /// the remaining items is lower than or equal to `sizeLimit * trimRatio` and - /// the total count is lower than or equal to `countLimit * trimRatio`. `0.7` - /// by default. - var trimRatio = 0.7 - - /// The path for the directory managed by the cache. - public let path: URL - - /// The number of seconds between each LRU sweep. 30 by default. - /// The first sweep is performed right after the cache is initialized. - /// - /// Sweeps are performed in a background and can be performed in parallel - /// with reading. - public var sweepInterval: TimeInterval = 30 - - /// The delay after which the initial sweep is performed. 10 by default. - /// The initial sweep is performed after a delay to avoid competing with - /// other subsystems for the resources. - private var initialSweepDelay: TimeInterval = 10 - - // Staging - - private let lock = NSLock() - private var staging = Staging() - private var isFlushNeeded = false - private var isFlushScheduled = false - var flushInterval: DispatchTimeInterval = .seconds(1) - - /// A queue which is used for disk I/O. - public let queue = DispatchQueue(label: "com.github.kean.Nuke.DataCache.WriteQueue", qos: .utility) - - /// A function which generates a filename for the given key. A good candidate - /// for a filename generator is a _cryptographic_ hash function like SHA1. - /// - /// The reason why filename needs to be generated in the first place is - /// that filesystems have a size limit for filenames (e.g. 255 UTF-8 characters - /// in AFPS) and do not allow certain characters to be used in filenames. - public typealias FilenameGenerator = (_ key: String) -> String? - - private let filenameGenerator: FilenameGenerator - - /// Creates a cache instance with a given `name`. The cache creates a directory - /// with the given `name` in a `.cachesDirectory` in `.userDomainMask`. - /// - parameter filenameGenerator: Generates a filename for the given URL. - /// The default implementation generates a filename using SHA1 hash function. - public convenience init(name: String, filenameGenerator: @escaping (String) -> String? = DataCache.filename(for:)) throws { - guard let root = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first else { - throw NSError(domain: NSCocoaErrorDomain, code: NSFileNoSuchFileError, userInfo: nil) - } - try self.init(path: root.appendingPathComponent(name, isDirectory: true), filenameGenerator: filenameGenerator) - } - - /// Creates a cache instance with a given path. - /// - parameter filenameGenerator: Generates a filename for the given URL. - /// The default implementation generates a filename using SHA1 hash function. - public init(path: URL, filenameGenerator: @escaping (String) -> String? = DataCache.filename(for:)) throws { - self.path = path - self.filenameGenerator = filenameGenerator - try self.didInit() - - #if TRACK_ALLOCATIONS - Allocations.increment("DataCache") - #endif - } - - deinit { - #if TRACK_ALLOCATIONS - Allocations.decrement("ImageCache") - #endif - } - - /// A `FilenameGenerator` implementation which uses SHA1 hash function to - /// generate a filename from the given key. - public static func filename(for key: String) -> String? { - key.sha1 - } - - private func didInit() throws { - try FileManager.default.createDirectory(at: path, withIntermediateDirectories: true, attributes: nil) - queue.asyncAfter(deadline: .now() + initialSweepDelay) { [weak self] in - self?.performAndScheduleSweep() - } - } - - // MARK: DataCaching - - /// Retrieves data for the given key. - public func cachedData(for key: Key) -> Data? { - if let change = change(for: key) { - switch change { // Change wasn't flushed to disk yet - case let .add(data): - return data - case .remove: - return nil - } - } - guard let url = url(for: key) else { - return nil - } - return try? Data(contentsOf: url) - } - - /// Returns `true` if the cache contains the data for the given key. - public func containsData(for key: String) -> Bool { - if let change = change(for: key) { - switch change { // Change wasn't flushed to disk yet - case .add: - return true - case .remove: - return false - } - } - guard let url = url(for: key) else { - return false - } - return FileManager.default.fileExists(atPath: url.path) - } - - private func change(for key: String) -> Staging.ChangeType? { - lock.lock() - defer { lock.unlock() } - return staging.change(for: key) - } - - /// Stores data for the given key. The method returns instantly and the data - /// is written asynchronously. - public func storeData(_ data: Data, for key: Key) { - stage { staging.add(data: data, for: key) } - } - - /// Removes data for the given key. The method returns instantly, the data - /// is removed asynchronously. - public func removeData(for key: Key) { - stage { staging.removeData(for: key) } - } - - /// Removes all items. The method returns instantly, the data is removed - /// asynchronously. - public func removeAll() { - stage { staging.removeAll() } - } - - private func stage(_ change: () -> Void) { - lock.lock() - change() - setNeedsFlushChanges() - lock.unlock() - } - - /// Accesses the data associated with the given key for reading and writing. - /// - /// When you assign a new data for a key and the key already exists, the cache - /// overwrites the existing data. - /// - /// When assigning or removing data, the subscript adds a requested operation - /// in a staging area and returns immediately. The staging area allows for - /// reading and writing data in parallel. - /// - /// // Schedules data to be written asynchronously and returns immediately - /// cache[key] = data - /// - /// // The data is returned from the staging area - /// let data = cache[key] - /// - /// // Schedules data to be removed asynchronously and returns immediately - /// cache[key] = nil - /// - /// // Data is nil - /// let data = cache[key] - /// - public subscript(key: Key) -> Data? { - get { - cachedData(for: key) - } - set { - if let data = newValue { - storeData(data, for: key) - } else { - removeData(for: key) - } - } - } - - // MARK: Managing URLs - - /// Uses the `FilenameGenerator` that the cache was initialized with to - /// generate and return a filename for the given key. - public func filename(for key: Key) -> String? { - filenameGenerator(key) - } - - /// Returns `url` for the given cache key. - public func url(for key: Key) -> URL? { - guard let filename = self.filename(for: key) else { - return nil - } - return self.path.appendingPathComponent(filename, isDirectory: false) - } - - // MARK: Flush Changes - - /// Synchronously waits on the caller's thread until all outstanding disk I/O - /// operations are finished. - public func flush() { - queue.sync(execute: flushChangesIfNeeded) - } - - /// Synchronously waits on the caller's thread until all outstanding disk I/O - /// operations for the given key are finished. - public func flush(for key: Key) { - queue.sync { - guard let change = lock.sync({ staging.changes[key] }) else { return } - perform(change) - lock.sync { staging.flushed(change) } - } - } - - private func setNeedsFlushChanges() { - guard !isFlushNeeded else { return } - isFlushNeeded = true - scheduleNextFlush() - } - - private func scheduleNextFlush() { - guard !isFlushScheduled else { return } - isFlushScheduled = true - queue.asyncAfter(deadline: .now() + flushInterval, execute: flushChangesIfNeeded) - } - - private func flushChangesIfNeeded() { - // Create a snapshot of the recently made changes - let staging: Staging - lock.lock() - guard isFlushNeeded else { - return lock.unlock() - } - staging = self.staging - isFlushNeeded = false - lock.unlock() - - // Apply the snapshot to disk - performChanges(for: staging) - - // Update the staging area and schedule the next flush if needed - lock.lock() - self.staging.flushed(staging) - isFlushScheduled = false - if isFlushNeeded { - scheduleNextFlush() - } - lock.unlock() - } - - // MARK: - I/O - - private func performChanges(for staging: Staging) { - autoreleasepool { - if let change = staging.changeRemoveAll { - perform(change) - } - for change in staging.changes.values { - perform(change) - } - } - } - - private func perform(_ change: Staging.ChangeRemoveAll) { - try? FileManager.default.removeItem(at: self.path) - try? FileManager.default.createDirectory(at: self.path, withIntermediateDirectories: true, attributes: nil) - } - - /// Performs the IO for the given change. - private func perform(_ change: Staging.Change) { - guard let url = url(for: change.key) else { - return - } - switch change.type { - case let .add(data): - do { - try data.write(to: url) - } catch let error as NSError { - guard error.code == CocoaError.fileNoSuchFile.rawValue && error.domain == CocoaError.errorDomain else { return } - try? FileManager.default.createDirectory(at: self.path, withIntermediateDirectories: true, attributes: nil) - try? data.write(to: url) // re-create a directory and try again - } - case .remove: - try? FileManager.default.removeItem(at: url) - } - } - - // MARK: Sweep - - private func performAndScheduleSweep() { - performSweep() - queue.asyncAfter(deadline: .now() + sweepInterval) { [weak self] in - self?.performAndScheduleSweep() - } - } - - /// Synchronously performs a cache sweep and removes the least recently items - /// which no longer fit in cache. - public func sweep() { - queue.sync(execute: performSweep) - } - - /// Discards the least recently used items first. - private func performSweep() { - var items = contents(keys: [.contentAccessDateKey, .totalFileAllocatedSizeKey]) - guard !items.isEmpty else { - return - } - var size = items.reduce(0) { $0 + ($1.meta.totalFileAllocatedSize ?? 0) } - - guard size > sizeLimit else { - return // All good, no need to perform any work. - } - - let targetSizeLimit = Int(Double(self.sizeLimit) * trimRatio) - - // Most recently accessed items first - let past = Date.distantPast - items.sort { // Sort in place - ($0.meta.contentAccessDate ?? past) > ($1.meta.contentAccessDate ?? past) - } - - // Remove the items until it satisfies both size and count limits. - while size > targetSizeLimit, let item = items.popLast() { - size -= (item.meta.totalFileAllocatedSize ?? 0) - try? FileManager.default.removeItem(at: item.url) - } - } - - // MARK: Contents - - struct Entry { - let url: URL - let meta: URLResourceValues - } - - func contents(keys: [URLResourceKey] = []) -> [Entry] { - guard let urls = try? FileManager.default.contentsOfDirectory(at: path, includingPropertiesForKeys: keys, options: .skipsHiddenFiles) else { - return [] - } - let keys = Set(keys) - return urls.compactMap { - guard let meta = try? $0.resourceValues(forKeys: keys) else { - return nil - } - return Entry(url: $0, meta: meta) - } - } - - // MARK: Inspection - - /// The total number of items in the cache. - /// - warning: Requires disk IO, avoid using from the main thread. - public var totalCount: Int { - contents().count - } - - /// The total file size of items written on disk. - /// - /// Uses `URLResourceKey.fileSizeKey` to calculate the size of each entry. - /// The total allocated size (see `totalAllocatedSize`. on disk might - /// actually be bigger. - /// - /// - warning: Requires disk IO, avoid using from the main thread. - public var totalSize: Int { - contents(keys: [.fileSizeKey]).reduce(0) { - $0 + ($1.meta.fileSize ?? 0) - } - } - - /// The total file allocated size of all the items written on disk. - /// - /// Uses `URLResourceKey.totalFileAllocatedSizeKey`. - /// - /// - warning: Requires disk IO, avoid using from the main thread. - public var totalAllocatedSize: Int { - contents(keys: [.totalFileAllocatedSizeKey]).reduce(0) { - $0 + ($1.meta.totalFileAllocatedSize ?? 0) - } - } -} - -// MARK: - Staging - -/// DataCache allows for parallel reads and writes. This is made possible by -/// DataCacheStaging. -/// -/// For example, when the data is added in cache, it is first added to staging -/// and is removed from staging only after data is written to disk. Removal works -/// the same way. -private struct Staging { - private(set) var changes = [String: Change]() - private(set) var changeRemoveAll: ChangeRemoveAll? - - struct ChangeRemoveAll { - let id: Int - } - - struct Change { - let key: String - let id: Int - let type: ChangeType - } - - enum ChangeType { - case add(Data) - case remove - } - - private var nextChangeId = 0 - - // MARK: Changes - - func change(for key: String) -> ChangeType? { - if let change = changes[key] { - return change.type - } - if changeRemoveAll != nil { - return .remove - } - return nil - } - - // MARK: Register Changes - - mutating func add(data: Data, for key: String) { - nextChangeId += 1 - changes[key] = Change(key: key, id: nextChangeId, type: .add(data)) - } - - mutating func removeData(for key: String) { - nextChangeId += 1 - changes[key] = Change(key: key, id: nextChangeId, type: .remove) - } - - mutating func removeAll() { - nextChangeId += 1 - changeRemoveAll = ChangeRemoveAll(id: nextChangeId) - changes.removeAll() - } - - // MARK: Flush Changes - - mutating func flushed(_ staging: Staging) { - for change in staging.changes.values { - flushed(change) - } - if let change = staging.changeRemoveAll { - flushed(change) - } - } - - mutating func flushed(_ change: Change) { - if let index = changes.index(forKey: change.key), - changes[index].value.id == change.id { - changes.remove(at: index) - } - } - - mutating func flushed(_ change: ChangeRemoveAll) { - if changeRemoveAll?.id == change.id { - changeRemoveAll = nil - } - } -} diff --git a/Pods/Nuke/Sources/Core/Caching/DataCaching.swift b/Pods/Nuke/Sources/Core/Caching/DataCaching.swift deleted file mode 100644 index b94e97dcf..000000000 --- a/Pods/Nuke/Sources/Core/Caching/DataCaching.swift +++ /dev/null @@ -1,27 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// Data cache. -/// -/// - warning: The implementation must be thread safe. -public protocol DataCaching { - /// Retrieves data from cache for the given key. - func cachedData(for key: String) -> Data? - - /// Returns `true` if the cache contains data for the given key. - func containsData(for key: String) -> Bool - - /// Stores data for the given key. - /// - note: The implementation must return immediately and store data - /// asynchronously. - func storeData(_ data: Data, for key: String) - - /// Removes data for the given key. - func removeData(for key: String) - - /// Removes all items. - func removeAll() -} diff --git a/Pods/Nuke/Sources/Core/Caching/ImageCache.swift b/Pods/Nuke/Sources/Core/Caching/ImageCache.swift deleted file mode 100644 index 85ab72e70..000000000 --- a/Pods/Nuke/Sources/Core/Caching/ImageCache.swift +++ /dev/null @@ -1,308 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation -#if !os(macOS) -import UIKit -#else -import Cocoa -#endif - -/// An LRU memory cache. -/// -/// The elements stored in cache are automatically discarded if either *cost* or -/// *count* limit is reached. The default cost limit represents a number of bytes -/// and is calculated based on the amount of physical memory available on the -/// device. The default count limit is set to `Int.max`. -/// -/// `ImageCache` automatically removes all stored elements when it receives a -/// memory warning. It also automatically removes *most* stored elements -/// when the app enters the background. -public final class ImageCache: ImageCaching { - private let impl: Cache - - /// The maximum total cost that the cache can hold. - public var costLimit: Int { - get { impl.costLimit } - set { impl.costLimit = newValue } - } - - /// The maximum number of items that the cache can hold. - public var countLimit: Int { - get { impl.countLimit } - set { impl.countLimit = newValue } - } - - /// Default TTL (time to live) for each entry. Can be used to make sure that - /// the entries get validated at some point. `0` (never expire) by default. - public var ttl: TimeInterval { - get { impl.ttl } - set { impl.ttl = newValue } - } - - /// The total cost of items in the cache. - public var totalCost: Int { - return impl.totalCost - } - - /// The maximum cost of an entry in proportion to the `costLimit`. - /// By default, `0.1`. - public var entryCostLimit: Double = 0.1 - - /// The total number of items in the cache. - public var totalCount: Int { - return impl.totalCount - } - - /// Shared `Cache` instance. - public static let shared = ImageCache() - - deinit { - #if TRACK_ALLOCATIONS - Allocations.decrement("ImageCache") - #endif - } - - /// Initializes `Cache`. - /// - parameter costLimit: Default value representes a number of bytes and is - /// calculated based on the amount of the phisical memory available on the device. - /// - parameter countLimit: `Int.max` by default. - public init(costLimit: Int = ImageCache.defaultCostLimit(), countLimit: Int = Int.max) { - impl = Cache(costLimit: costLimit, countLimit: countLimit) - - #if TRACK_ALLOCATIONS - Allocations.increment("ImageCache") - #endif - } - - /// Returns a recommended cost limit which is computed based on the amount - /// of the phisical memory available on the device. - public static func defaultCostLimit() -> Int { - let physicalMemory = ProcessInfo.processInfo.physicalMemory - let ratio = physicalMemory <= (536_870_912 /* 512 Mb */) ? 0.1 : 0.2 - let limit = physicalMemory / UInt64(1 / ratio) - return limit > UInt64(Int.max) ? Int.max : Int(limit) - } - - public subscript(key: ImageCacheKey) -> ImageContainer? { - get { - return impl.value(forKey: key) - } - set { - if let image = newValue { - let cost = self.cost(for: image) - // Take care of overflow or cache size big enough to fit any - // resonable content (and also of costLimit = Int.max). - let sanitizedEntryLimit = max(0, min(entryCostLimit, 1)) - if costLimit > 2147483647 || cost < Int(sanitizedEntryLimit * Double(costLimit)) { - impl.set(image, forKey: key, cost: cost) - } - } else { - impl.removeValue(forKey: key) - } - } - } - - /// Removes all cached images. - public func removeAll() { - impl.removeAll() - } - /// Removes least recently used items from the cache until the total cost - /// of the remaining items is less than the given cost limit. - public func trim(toCost limit: Int) { - impl.trim(toCost: limit) - } - - /// Removes least recently used items from the cache until the total count - /// of the remaining items is less than the given count limit. - public func trim(toCount limit: Int) { - impl.trim(toCount: limit) - } - - /// Returns cost for the given image by approximating its bitmap size in bytes in memory. - func cost(for container: ImageContainer) -> Int { - let dataCost: Int - if ImagePipeline.Configuration._isAnimatedImageDataEnabled { - dataCost = container.image._animatedImageData?.count ?? 0 - } else { - dataCost = container.data?.count ?? 0 - } - - // bytesPerRow * height gives a rough estimation of how much memory - // image uses in bytes. In practice this algorithm combined with a - // conservative default cost limit works OK. - guard let cgImage = container.image.cgImage else { - return 1 + dataCost - } - return cgImage.bytesPerRow * cgImage.height + dataCost - } -} - -final class Cache { - // Can't use `NSCache` because it is not LRU - - private var map = [Key: LinkedList.Node]() - private let list = LinkedList() - private let lock = NSLock() - private let memoryPressure: DispatchSourceMemoryPressure - - var costLimit: Int { - didSet { lock.sync(_trim) } - } - - var countLimit: Int { - didSet { lock.sync(_trim) } - } - - private(set) var totalCost = 0 - var ttl: TimeInterval = 0 - - var totalCount: Int { - map.count - } - - init(costLimit: Int, countLimit: Int) { - self.costLimit = costLimit - self.countLimit = countLimit - self.memoryPressure = DispatchSource.makeMemoryPressureSource(eventMask: [.warning, .critical], queue: .main) - self.memoryPressure.setEventHandler { [weak self] in - self?.removeAll() - } - self.memoryPressure.resume() - - #if os(iOS) || os(tvOS) - let center = NotificationCenter.default - center.addObserver(self, selector: #selector(clearCacheOnEnterBackground), - name: UIApplication.didEnterBackgroundNotification, - object: nil) - #endif - - #if TRACK_ALLOCATIONS - Allocations.increment("Cache") - #endif - } - - deinit { - memoryPressure.cancel() - - #if TRACK_ALLOCATIONS - Allocations.decrement("Cache") - #endif - } - - func value(forKey key: Key) -> Value? { - lock.lock(); defer { lock.unlock() } - - guard let node = map[key] else { - return nil - } - - guard !node.value.isExpired else { - _remove(node: node) - return nil - } - - // bubble node up to make it last added (most recently used) - list.remove(node) - list.append(node) - - return node.value.value - } - - func set(_ value: Value, forKey key: Key, cost: Int = 0, ttl: TimeInterval? = nil) { - lock.lock(); defer { lock.unlock() } - - let ttl = ttl ?? self.ttl - let expiration = ttl == 0 ? nil : (Date() + ttl) - let entry = Entry(value: value, key: key, cost: cost, expiration: expiration) - _add(entry) - _trim() // _trim is extremely fast, it's OK to call it each time - } - - @discardableResult - func removeValue(forKey key: Key) -> Value? { - lock.lock(); defer { lock.unlock() } - - guard let node = map[key] else { - return nil - } - _remove(node: node) - return node.value.value - } - - private func _add(_ element: Entry) { - if let existingNode = map[element.key] { - _remove(node: existingNode) - } - map[element.key] = list.append(element) - totalCost += element.cost - } - - private func _remove(node: LinkedList.Node) { - list.remove(node) - map[node.value.key] = nil - totalCost -= node.value.cost - } - - @objc - dynamic func removeAll() { - lock.sync { - map.removeAll() - list.removeAll() - totalCost = 0 - } - } - - private func _trim() { - _trim(toCost: costLimit) - _trim(toCount: countLimit) - } - - @objc - private dynamic func clearCacheOnEnterBackground() { - // Remove most of the stored items when entering background. - // This behavior is similar to `NSCache` (which removes all - // items). This feature is not documented and may be subject - // to change in future Nuke versions. - lock.sync { - _trim(toCost: Int(Double(costLimit) * 0.1)) - _trim(toCount: Int(Double(countLimit) * 0.1)) - } - } - - func trim(toCost limit: Int) { - lock.sync { _trim(toCost: limit) } - } - - private func _trim(toCost limit: Int) { - _trim(while: { totalCost > limit }) - } - - func trim(toCount limit: Int) { - lock.sync { _trim(toCount: limit) } - } - - private func _trim(toCount limit: Int) { - _trim(while: { totalCount > limit }) - } - - private func _trim(while condition: () -> Bool) { - while condition(), let node = list.first { // least recently used - _remove(node: node) - } - } - - private struct Entry { - let value: Value - let key: Key - let cost: Int - let expiration: Date? - var isExpired: Bool { - guard let expiration = expiration else { - return false - } - return expiration.timeIntervalSinceNow < 0 - } - } -} diff --git a/Pods/Nuke/Sources/Core/Caching/ImageCaching.swift b/Pods/Nuke/Sources/Core/Caching/ImageCaching.swift deleted file mode 100644 index 32245ca67..000000000 --- a/Pods/Nuke/Sources/Core/Caching/ImageCaching.swift +++ /dev/null @@ -1,48 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// In-memory image cache. -/// -/// The implementation must be thread safe. -public protocol ImageCaching: AnyObject { - /// Access the image cached for the given request. - subscript(key: ImageCacheKey) -> ImageContainer? { get set } - - /// Removes all caches items. - func removeAll() -} - -/// An opaque container that acts as a cache key. -/// -/// In general, you don't construct it directly, and use `ImagePipeline` or `ImagePipeline.Cache` APIs. -public struct ImageCacheKey: Hashable { - let key: Inner - - // This is faster than using AnyHashable (and it shows in performance tests). - enum Inner: Hashable { - case custom(String) - case `default`(CacheKey) - } - - public init(key: String) { - self.key = .custom(key) - } - - init(request: ImageRequest) { - self.key = .default(request.makeImageCacheKey()) - } -} - -public extension ImageCaching { - /// A convenience API for getting an image for the given request. - /// - /// - warning: If you provide a custom key using `ImagePipelineDelegate`, use - /// `ImagePipeline.Cache` instead. - subscript(request: ImageRequestConvertible) -> ImageContainer? { - get { self[ImageCacheKey(request: request.asImageRequest())] } - set { self[ImageCacheKey(request: request.asImageRequest())] = newValue } - } -} diff --git a/Pods/Nuke/Sources/Core/Caching/ImagePipelineCache.swift b/Pods/Nuke/Sources/Core/Caching/ImagePipelineCache.swift deleted file mode 100644 index 788a80078..000000000 --- a/Pods/Nuke/Sources/Core/Caching/ImagePipelineCache.swift +++ /dev/null @@ -1,261 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -extension ImagePipeline { - /// Provides a set of convenience APIs for managing the pipeline cache layers, - /// including `ImageCaching` (memory cache) and `DataCaching` (disk cache). - /// - /// - warning: This class doesn't work with a `URLCache`. For more info, - /// see ["Caching"](https://kean.blog/nuke/guides/caching). - /// - /// Thread-safe. - public struct Cache { - let pipeline: ImagePipeline - private var configuration: ImagePipeline.Configuration { pipeline.configuration } - - // MARK: Subscript (Memory Cache) - - /// Returns an image from the memory cache for the given request. - public subscript(request: ImageRequestConvertible) -> ImageContainer? { - get { self[request.asImageRequest()] } - nonmutating set { self[request.asImageRequest()] = newValue } - } - - subscript(request: ImageRequest) -> ImageContainer? { - get { - cachedImageFromMemoryCache(for: request) - } - nonmutating set { - if let image = newValue { - storeCachedImageInMemoryCache(image, for: request) - } else { - removeCachedImageFromMemoryCache(for: request) - } - } - } - - // MARK: Cached Images - - /// Returns a cached image any of the caches. - /// - /// - note: Respects request options such as `cachePolicy`. - /// - /// - parameter request: The request. Make sure to remove the processors - /// if you want to retrieve an original image (if it's stored). - /// - parameter caches: `[.all]`, by default. - public func cachedImage(for request: ImageRequestConvertible, caches: Caches = [.all]) -> ImageContainer? { - let request = request.asImageRequest() - if caches.contains(.memory) { - if let image = cachedImageFromMemoryCache(for: request) { - return image - } - } - if caches.contains(.disk) { - if let data = cachedData(for: request), - let image = decodeImageData(data, for: request) { - return image - } - } - return nil - } - - /// Stores the image in all caches. To store image in the disk cache, it - /// will be encoded (see `ImageEncoding`) - /// - /// - note: Respects request cache options. - /// - /// - note: Default `DiskCache` stores data asynchronously, so it's safe - /// to call this method even from the main thread. - /// - /// - note: Image previews are not stored. - /// - /// - parameter request: The request. Make sure to remove the processors - /// if you want to retrieve an original image (if it's stored). - /// - parameter caches: `[.all]`, by default. - public func storeCachedImage(_ image: ImageContainer, for request: ImageRequestConvertible, caches: Caches = [.all]) { - let request = request.asImageRequest() - if caches.contains(.memory) { - storeCachedImageInMemoryCache(image, for: request) - } - if caches.contains(.disk) { - if let data = encodeImage(image, for: request) { - storeCachedData(data, for: request) - } - } - } - - /// Removes the image from all caches. - public func removeCachedImage(for request: ImageRequestConvertible, caches: Caches = [.all]) { - let request = request.asImageRequest() - if caches.contains(.memory) { - removeCachedImageFromMemoryCache(for: request) - } - if caches.contains(.disk) { - removeCachedData(for: request) - } - } - - /// Returns `true` if any of the caches contain the image. - public func containsCachedImage(for request: ImageRequestConvertible, caches: Caches = [.all]) -> Bool { - let request = request.asImageRequest() - if caches.contains(.memory) && cachedImageFromMemoryCache(for: request) != nil { - return true - } - if caches.contains(.disk), let dataCache = dataCache(for: request) { - let key = makeDataCacheKey(for: request) - return dataCache.containsData(for: key) - } - return false - } - - private func cachedImageFromMemoryCache(for request: ImageRequest) -> ImageContainer? { - guard !request.options.contains(.disableMemoryCacheReads) else { - return nil - } - let key = makeImageCacheKey(for: request) - if let imageCache = pipeline.imageCache { - return imageCache[key] // Fast path for a default cache (no protocol call) - } - return configuration.imageCache?[key] - } - - private func storeCachedImageInMemoryCache(_ image: ImageContainer, for request: ImageRequest) { - guard !request.options.contains(.disableMemoryCacheWrites) else { - return - } - guard !image.isPreview || configuration.isStoringPreviewsInMemoryCache else { - return - } - let key = makeImageCacheKey(for: request) - configuration.imageCache?[key] = image - } - - private func removeCachedImageFromMemoryCache(for request: ImageRequest) { - let key = makeImageCacheKey(for: request) - configuration.imageCache?[key] = nil - } - - // MARK: Cached Data - - /// Returns cached data for the given request. - public func cachedData(for request: ImageRequestConvertible) -> Data? { - let request = request.asImageRequest() - guard !request.options.contains(.disableDiskCacheReads) else { - return nil - } - guard let dataCache = dataCache(for: request) else { - return nil - } - let key = makeDataCacheKey(for: request) - return dataCache.cachedData(for: key) - } - - /// Stores data for the given request. - /// - /// - note: Default `DiskCache` stores data asynchronously, so it's safe - /// to call this method even from the main thread. - public func storeCachedData(_ data: Data, for request: ImageRequestConvertible) { - let request = request.asImageRequest() - guard let dataCache = dataCache(for: request), - !request.options.contains(.disableDiskCacheWrites) else { - return - } - let key = makeDataCacheKey(for: request) - dataCache.storeData(data, for: key) - } - - /// Returns true if the data cache contains data for the given image - public func containsData(for request: ImageRequestConvertible) -> Bool { - let request = request.asImageRequest() - guard let dataCache = dataCache(for: request) else { - return false - } - return dataCache.containsData(for: makeDataCacheKey(for: request)) - } - - /// Removes cached data for the given request. - public func removeCachedData(for request: ImageRequestConvertible) { - let request = request.asImageRequest() - guard let dataCache = dataCache(for: request) else { - return - } - let key = makeDataCacheKey(for: request) - dataCache.removeData(for: key) - } - - // MARK: Keys - - /// Returns image cache (memory cache) key for the given request. - public func makeImageCacheKey(for request: ImageRequestConvertible) -> ImageCacheKey { - makeImageCacheKey(for: request.asImageRequest()) - } - - func makeImageCacheKey(for request: ImageRequest) -> ImageCacheKey { - if let customKey = pipeline.delegate.cacheKey(for: request, pipeline: pipeline) { - return ImageCacheKey(key: customKey) - } - return ImageCacheKey(request: request) // Use the default key - } - - /// Returns data cache (disk cache) key for the given request. - public func makeDataCacheKey(for request: ImageRequestConvertible) -> String { - makeDataCacheKey(for: request.asImageRequest()) - } - - func makeDataCacheKey(for request: ImageRequest) -> String { - if let customKey = pipeline.delegate.cacheKey(for: request, pipeline: pipeline) { - return customKey - } - return request.makeDataCacheKey() // Use the default key - } - - // MARK: Misc - - /// Removes both images and data from all cache layes. - public func removeAll(caches: Caches = [.all]) { - if caches.contains(.memory) { - configuration.imageCache?.removeAll() - } - if caches.contains(.disk) { - configuration.dataCache?.removeAll() - } - } - - // MARK: Private - - private func decodeImageData(_ data: Data, for request: ImageRequest) -> ImageContainer? { - let context = ImageDecodingContext(request: request, data: data, isCompleted: true, urlResponse: nil) - guard let decoder = pipeline.delegate.imageDecoder(for: context, pipeline: pipeline) else { - return nil - } - return decoder.decode(data, urlResponse: nil, isCompleted: true, cacheType: .disk)?.container - } - - private func encodeImage(_ image: ImageContainer, for request: ImageRequest) -> Data? { - let context = ImageEncodingContext(request: request, image: image.image, urlResponse: nil) - let encoder = pipeline.delegate.imageEncoder(for: context, pipeline: pipeline) - return encoder.encode(image, context: context) - } - - private func dataCache(for request: ImageRequest) -> DataCaching? { - pipeline.delegate.dataCache(for: request, pipeline: pipeline) - } - - // MARK: Options - - /// Describes a set of cache layers to use. - public struct Caches: OptionSet { - public let rawValue: Int - public init(rawValue: Int) { - self.rawValue = rawValue - } - - public static let memory = Caches(rawValue: 1 << 0) - public static let disk = Caches(rawValue: 1 << 1) - public static let all: Caches = [.memory, .disk] - } - } -} diff --git a/Pods/Nuke/Sources/Core/Decoding/AssetType.swift b/Pods/Nuke/Sources/Core/Decoding/AssetType.swift deleted file mode 100644 index 425af7f8c..000000000 --- a/Pods/Nuke/Sources/Core/Decoding/AssetType.swift +++ /dev/null @@ -1,86 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// A uniform type identifier (UTI). -public struct AssetType: ExpressibleByStringLiteral, Hashable { - public let rawValue: String - - public init(rawValue: String) { - self.rawValue = rawValue - } - - public init(stringLiteral value: String) { - self.rawValue = value - } - - public static let png: AssetType = "public.png" - public static let jpeg: AssetType = "public.jpeg" - public static let gif: AssetType = "com.compuserve.gif" - /// HEIF (High Efficiency Image Format) by Apple. - public static let heic: AssetType = "public.heic" - - /// WebP - /// - /// Native decoding support only available on the following platforms: macOS 11, - /// iOS 14, watchOS 7, tvOS 14. - public static let webp: AssetType = "public.webp" - - public static let mp4: AssetType = "public.mpeg4" - - /// The M4V file format is a video container format developed by Apple and - /// is very similar to the MP4 format. The primary difference is that M4V - /// files may optionally be protected by DRM copy protection. - public static let m4v: AssetType = "public.m4v" - - public var isVideo: Bool { - self == .mp4 || self == .m4v - } -} - -public extension AssetType { - /// Determines a type of the image based on the given data. - init?(_ data: Data) { - guard let type = AssetType.make(data) else { - return nil - } - self = type - } - - private static func make(_ data: Data) -> AssetType? { - func _match(_ numbers: [UInt8?], offset: Int = 0) -> Bool { - guard data.count >= numbers.count else { - return false - } - return zip(numbers.indices, numbers).allSatisfy { index, number in - guard let number = number else { return true } - guard (index + offset) < data.count else { return false } - return data[index + offset] == number - } - } - - // JPEG magic numbers https://en.wikipedia.org/wiki/JPEG - if _match([0xFF, 0xD8, 0xFF]) { return .jpeg } - - // PNG Magic numbers https://en.wikipedia.org/wiki/Portable_Network_Graphics - if _match([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A]) { return .png } - - // GIF magic numbers https://en.wikipedia.org/wiki/GIF - if _match([0x47, 0x49, 0x46]) { return .gif } - - // WebP magic numbers https://en.wikipedia.org/wiki/List_of_file_signatures - if _match([0x52, 0x49, 0x46, 0x46, nil, nil, nil, nil, 0x57, 0x45, 0x42, 0x50]) { return .webp } - - // TODO: Extend support to other video formats supported by the system - // see https://stackoverflow.com/questions/21879981/avfoundation-avplayer-supported-formats-no-vob-or-mpg-containers - // https://en.wikipedia.org/wiki/List_of_file_signatures - if _match([0x66, 0x74, 0x79, 0x70, 0x69, 0x73, 0x6F, 0x6D], offset: 4) { return .mp4 } - - if _match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32], offset: 4) { return .m4v } - - // Either not enough data, or we just don't support this format. - return nil - } -} diff --git a/Pods/Nuke/Sources/Core/Decoding/ImageDecoderRegistry.swift b/Pods/Nuke/Sources/Core/Decoding/ImageDecoderRegistry.swift deleted file mode 100644 index d33383da4..000000000 --- a/Pods/Nuke/Sources/Core/Decoding/ImageDecoderRegistry.swift +++ /dev/null @@ -1,100 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// An image decoder which supports automatically registering in the decoder register. -public protocol ImageDecoderRegistering: ImageDecoding { - /// Returns non-nil if the decoder can be used to decode the given data. - /// - /// - parameter data: The same data is going to be delivered to decoder via - /// `decode(_:)` method. The same instance of the decoder is going to be used. - init?(data: Data, context: ImageDecodingContext) - - /// Returns non-nil if the decoder can be used to progressively decode the - /// given partially downloaded data. - /// - /// - parameter data: The first and the next data chunks are going to be - /// delivered to the decoder via `decodePartiallyDownloadedData(_:)` method. - init?(partiallyDownloadedData data: Data, context: ImageDecodingContext) -} - -public extension ImageDecoderRegistering { - /// The default implementation which simply returns `nil` (no progressive - /// decoding available). - init?(partiallyDownloadedData data: Data, context: ImageDecodingContext) { - return nil - } -} - -// MARK: - ImageDecoderRegistry - -/// A registry of image codecs. -public final class ImageDecoderRegistry { - /// A shared registry. - public static let shared = ImageDecoderRegistry() - - private struct Match { - let closure: (ImageDecodingContext) -> ImageDecoding? - } - - private var matches = [Match]() - - public init() { - self.register(ImageDecoders.Default.self) - #if !os(watchOS) - self.register(ImageDecoders.Video.self) - #endif - } - - /// Returns a decoder which matches the given context. - public func decoder(for context: ImageDecodingContext) -> ImageDecoding? { - for match in matches { - if let decoder = match.closure(context) { - return decoder - } - } - return nil - } - - // MARK: - Registering - - /// Registers the given decoder. - public func register(_ decoder: Decoder.Type) { - register { context in - if context.isCompleted { - return decoder.init(data: context.data, context: context) - } else { - return decoder.init(partiallyDownloadedData: context.data, context: context) - } - } - } - - /// Registers a decoder to be used in a given decoding context. The closure - /// is going to be executed before all other already registered closures. - public func register(_ match: @escaping (ImageDecodingContext) -> ImageDecoding?) { - matches.insert(Match(closure: match), at: 0) - } - - /// Removes all registered decoders. - public func clear() { - matches = [] - } -} - -/// Image decoding context used when selecting which decoder to use. -public struct ImageDecodingContext { - public let request: ImageRequest - public let data: Data - /// Returns `true` if the download was completed. - public let isCompleted: Bool - public let urlResponse: URLResponse? - - public init(request: ImageRequest, data: Data, isCompleted: Bool, urlResponse: URLResponse?) { - self.request = request - self.data = data - self.isCompleted = isCompleted - self.urlResponse = urlResponse - } -} diff --git a/Pods/Nuke/Sources/Core/Decoding/ImageDecoders+Default.swift b/Pods/Nuke/Sources/Core/Decoding/ImageDecoders+Default.swift deleted file mode 100644 index df5e1e342..000000000 --- a/Pods/Nuke/Sources/Core/Decoding/ImageDecoders+Default.swift +++ /dev/null @@ -1,226 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -#if !os(macOS) -import UIKit -#else -import Cocoa -#endif - -#if os(watchOS) -import WatchKit -#endif - -/// A namespace with all available decoders. -public enum ImageDecoders {} - -extension ImageDecoders { - - /// A decoder that supports all of the formats natively supported by the system. - /// - /// - note: The decoder automatically sets the scale of the decoded images to - /// match the scale of the screen. - /// - /// - note: The default decoder supports progressive JPEG. It produces a new - /// preview every time it encounters a new full frame. - public final class Default: ImageDecoding, ImageDecoderRegistering { - // Number of scans that the decoder has found so far. The last scan might be - // incomplete at this point. - var numberOfScans: Int { scanner.numberOfScans } - private var scanner = ProgressiveJPEGScanner() - - private var container: ImageContainer? - - private var isDecodingGIFProgressively = false - private var isPreviewForGIFGenerated = false - private var scale: CGFloat? - private var thumbnail: ImageRequest.ThumbnailOptions? - - public init() { } - - public var isAsynchronous: Bool { - thumbnail != nil - } - - public init?(data: Data, context: ImageDecodingContext) { - self.scale = context.request.scale - self.thumbnail = context.request.thubmnail - guard let container = _decode(data) else { - return nil - } - self.container = container - } - - public init?(partiallyDownloadedData data: Data, context: ImageDecodingContext) { - let imageType = AssetType(data) - - self.scale = context.request.scale - self.thumbnail = context.request.thubmnail - - // Determined whether the image supports progressive decoding or not - // (only proressive JPEG is allowed for now, but you can add support - // for other formats by implementing your own decoder). - if imageType == .jpeg, ImageProperties.JPEG(data)?.isProgressive == true { - return - } - - // Generate one preview for GIF. - if imageType == .gif { - self.isDecodingGIFProgressively = true - return - } - - return nil - } - - public func decode(_ data: Data) -> ImageContainer? { - container ?? _decode(data) - } - - private func _decode(_ data: Data) -> ImageContainer? { - func makeImage() -> PlatformImage? { - if let thumbnail = self.thumbnail { - return makeThumbnail(data: data, options: thumbnail) - } - return ImageDecoders.Default._decode(data, scale: scale) - } - guard let image = autoreleasepool(invoking: makeImage) else { - return nil - } - // Keep original data around in case of GIF - let type = AssetType(data) - if ImagePipeline.Configuration._isAnimatedImageDataEnabled, type == .gif { - image._animatedImageData = data - } - var container = ImageContainer(image: image, data: image._animatedImageData) - container.type = type - if type == .gif { - container.data = data - } - if numberOfScans > 0 { - container.userInfo[.scanNumberKey] = numberOfScans - } - if thumbnail != nil { - container.userInfo[.isThumbnailKey] = true - } - return container - } - - public func decodePartiallyDownloadedData(_ data: Data) -> ImageContainer? { - if isDecodingGIFProgressively { // Special handling for GIF - if !isPreviewForGIFGenerated, let image = ImageDecoders.Default._decode(data, scale: scale) { - isPreviewForGIFGenerated = true - return ImageContainer(image: image, type: .gif, isPreview: true, data: nil, userInfo: [:]) - } - return nil - } - - guard let endOfScan = scanner.scan(data), endOfScan > 0 else { - return nil - } - guard let image = ImageDecoders.Default._decode(data[0...endOfScan], scale: scale) else { - return nil - } - return ImageContainer(image: image, type: .jpeg, isPreview: true, userInfo: [.scanNumberKey: numberOfScans]) - } - } -} - -private struct ProgressiveJPEGScanner { - // Number of scans that the decoder has found so far. The last scan might be - // incomplete at this point. - private(set) var numberOfScans = 0 - private var lastStartOfScan: Int = 0 // Index of the last found Start of Scan - private var scannedIndex: Int = -1 // Index at which previous scan was finished - - /// Scans the given data. If finds new scans, returns the last index of the - /// last available scan. - mutating func scan(_ data: Data) -> Int? { - // Check if there is more data to scan. - guard (scannedIndex + 1) < data.count else { - return nil - } - - // Start scaning from the where it left off previous time. - var index = (scannedIndex + 1) - var numberOfScans = self.numberOfScans - while index < (data.count - 1) { - scannedIndex = index - // 0xFF, 0xDA - Start Of Scan - if data[index] == 0xFF, data[index + 1] == 0xDA { - lastStartOfScan = index - numberOfScans += 1 - } - index += 1 - } - - // Found more scans this the previous time - guard numberOfScans > self.numberOfScans else { - return nil - } - self.numberOfScans = numberOfScans - - // `> 1` checks that we've received a first scan (SOS) and then received - // and also received a second scan (SOS). This way we know that we have - // at least one full scan available. - guard numberOfScans > 1 && lastStartOfScan > 0 else { - return nil - } - - return lastStartOfScan - 1 - } -} - -extension ImageDecoders.Default { - private static func _decode(_ data: Data, scale: CGFloat?) -> PlatformImage? { - #if os(macOS) - return NSImage(data: data) - #else - return UIImage(data: data, scale: scale ?? Screen.scale) - #endif - } -} - -enum ImageProperties {} - -// Keeping this private for now, not sure neither about the API, not the implementation. -extension ImageProperties { - struct JPEG { - public var isProgressive: Bool - - public init?(_ data: Data) { - guard let isProgressive = ImageProperties.JPEG.isProgressive(data) else { - return nil - } - self.isProgressive = isProgressive - } - - private static func isProgressive(_ data: Data) -> Bool? { - var index = 3 // start scanning right after magic numbers - while index < (data.count - 1) { - // A example of first few bytes of progressive jpeg image: - // FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 48 00 ... - // - // 0xFF, 0xC0 - Start Of Frame (baseline DCT) - // 0xFF, 0xC2 - Start Of Frame (progressive DCT) - // https://en.wikipedia.org/wiki/JPEG - // - // As an alternative, Image I/O provides facilities to parse - // JPEG metadata via CGImageSourceCopyPropertiesAtIndex. It is a - // bit too convoluted to use and most likely slightly less - // efficient that checking this one special bit directly. - if data[index] == 0xFF { - if data[index + 1] == 0xC2 { - return true - } - if data[index + 1] == 0xC0 { - return false // baseline - } - } - index += 1 - } - return nil - } - } -} diff --git a/Pods/Nuke/Sources/Core/Decoding/ImageDecoders+Empty.swift b/Pods/Nuke/Sources/Core/Decoding/ImageDecoders+Empty.swift deleted file mode 100644 index f27ae678d..000000000 --- a/Pods/Nuke/Sources/Core/Decoding/ImageDecoders+Empty.swift +++ /dev/null @@ -1,38 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -extension ImageDecoders { - /// A decoder that returns an empty placeholder image and attaches image - /// data to the image container. - public struct Empty: ImageDecoding { - public let isProgressive: Bool - private let assetType: AssetType? - - public var isAsynchronous: Bool { - false - } - - /// Initializes the decoder. - /// - /// - Parameters: - /// - type: Image type to be associated with an image container. - /// `nil` by defalt. - /// - isProgressive: If `false`, returns nil for every progressive - /// scan. `false` by default. - public init(assetType: AssetType? = nil, isProgressive: Bool = false) { - self.assetType = assetType - self.isProgressive = isProgressive - } - - public func decodePartiallyDownloadedData(_ data: Data) -> ImageContainer? { - isProgressive ? ImageContainer(image: PlatformImage(), type: assetType, data: data, userInfo: [:]) : nil - } - - public func decode(_ data: Data) -> ImageContainer? { - ImageContainer(image: PlatformImage(), type: assetType, data: data, userInfo: [:]) - } - } -} diff --git a/Pods/Nuke/Sources/Core/Decoding/ImageDecoders+Video.swift b/Pods/Nuke/Sources/Core/Decoding/ImageDecoders+Video.swift deleted file mode 100644 index 9b6fa20b7..000000000 --- a/Pods/Nuke/Sources/Core/Decoding/ImageDecoders+Video.swift +++ /dev/null @@ -1,54 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -#if !os(watchOS) - -import Foundation -import AVKit - -extension ImageDecoders { - public final class Video: ImageDecoding, ImageDecoderRegistering { - private let type: AssetType - private var didProducePreview = false - - public var isAsynchronous: Bool { - true - } - - public init?(data: Data, context: ImageDecodingContext) { - guard let type = AssetType(data), type.isVideo else { return nil } - self.type = type - } - - public convenience init?(partiallyDownloadedData data: Data, context: ImageDecodingContext) { - self.init(data: data, context: context) - } - - public func decode(_ data: Data) -> ImageContainer? { - ImageContainer(image: PlatformImage(), type: type, data: data) - } - - public func decodePartiallyDownloadedData(_ data: Data) -> ImageContainer? { - guard !didProducePreview else { - return nil // We only need one preview - } - guard let preview = makePreview(for: data, type: type) else { - return nil - } - didProducePreview = true - return ImageContainer(image: preview, type: type, isPreview: true, data: data) - } - } -} - -private func makePreview(for data: Data, type: AssetType) -> PlatformImage? { - let asset = AVDataAsset(data: data, type: type) - let generator = AVAssetImageGenerator(asset: asset) - guard let cgImage = try? generator.copyCGImage(at: CMTime(value: 0, timescale: 1), actualTime: nil) else { - return nil - } - return PlatformImage(cgImage: cgImage) -} - -#endif diff --git a/Pods/Nuke/Sources/Core/Decoding/ImageDecoding.swift b/Pods/Nuke/Sources/Core/Decoding/ImageDecoding.swift deleted file mode 100644 index 8b5fa7d10..000000000 --- a/Pods/Nuke/Sources/Core/Decoding/ImageDecoding.swift +++ /dev/null @@ -1,62 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// An image decoder. -/// -/// A decoder is a one-shot object created for a single image decoding session. -/// -/// - note: If you need additional information in the decoder, you can pass -/// anything that you might need from the `ImageDecodingContext`. -public protocol ImageDecoding { - /// Return `true` if you want the decoding to be performed on the decoding - /// queue (see `imageDecodingQueue`). If `false`, the decoding will be - /// performed synchronously on the pipeline operation queue. By default, `true`. - var isAsynchronous: Bool { get } - - /// Produces an image from the given image data. - func decode(_ data: Data) -> ImageContainer? - - /// Produces an image from the given partially dowloaded image data. - /// This method might be called multiple times during a single decoding - /// session. When the image download is complete, `decode(data:)` method is called. - /// - /// - returns: nil by default. - func decodePartiallyDownloadedData(_ data: Data) -> ImageContainer? -} - -extension ImageDecoding { - /// Returns `true` by default. - public var isAsynchronous: Bool { - true - } - - /// The default implementation which simply returns `nil` (no progressive - /// decoding available). - public func decodePartiallyDownloadedData(_ data: Data) -> ImageContainer? { - nil - } -} - -extension ImageDecoding { - func decode(_ data: Data, urlResponse: URLResponse?, isCompleted: Bool, cacheType: ImageResponse.CacheType?) -> ImageResponse? { - func _decode() -> ImageContainer? { - if isCompleted { - return decode(data) - } else { - return decodePartiallyDownloadedData(data) - } - } - guard let container = autoreleasepool(invoking: _decode) else { - return nil - } - #if !os(macOS) - if container.userInfo[.isThumbnailKey] == nil { - ImageDecompression.setDecompressionNeeded(true, for: container.image) - } - #endif - return ImageResponse(container: container, urlResponse: urlResponse, cacheType: cacheType) - } -} diff --git a/Pods/Nuke/Sources/Core/Encoding/ImageEncoders+Default.swift b/Pods/Nuke/Sources/Core/Encoding/ImageEncoders+Default.swift deleted file mode 100644 index 5ad315418..000000000 --- a/Pods/Nuke/Sources/Core/Encoding/ImageEncoders+Default.swift +++ /dev/null @@ -1,39 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -extension ImageEncoders { - /// A default adaptive encoder which uses best encoder available depending - /// on the input image and its configuration. - public struct Default: ImageEncoding { - public var compressionQuality: Float - - /// Set to `true` to switch to HEIF when it is available on the current hardware. - /// `false` by default. - public var isHEIFPreferred = false - - public init(compressionQuality: Float = 0.8) { - self.compressionQuality = compressionQuality - } - - public func encode(_ image: PlatformImage) -> Data? { - guard let cgImage = image.cgImage else { - return nil - } - let type: AssetType - if cgImage.isOpaque { - if isHEIFPreferred && ImageEncoders.ImageIO.isSupported(type: .heic) { - type = .heic - } else { - type = .jpeg - } - } else { - type = .png - } - let encoder = ImageEncoders.ImageIO(type: type, compressionRatio: compressionQuality) - return encoder.encode(image) - } - } -} diff --git a/Pods/Nuke/Sources/Core/Encoding/ImageEncoders+ImageIO.swift b/Pods/Nuke/Sources/Core/Encoding/ImageEncoders+ImageIO.swift deleted file mode 100644 index 9c9557078..000000000 --- a/Pods/Nuke/Sources/Core/Encoding/ImageEncoders+ImageIO.swift +++ /dev/null @@ -1,62 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation -import CoreGraphics -import ImageIO - -extension ImageEncoders { - /// An Image I/O based encoder. - /// - /// Image I/O is a system framework that allows applications to read and - /// write most image file formats. This framework offers high efficiency, - /// color management, and access to image metadata. - public struct ImageIO: ImageEncoding { - public let type: AssetType - public let compressionRatio: Float - - /// - parameter format: The output format. Make sure that the format is - /// supported on the current hardware.s - /// - parameter compressionRatio: 0.8 by default. - public init(type: AssetType, compressionRatio: Float = 0.8) { - self.type = type - self.compressionRatio = compressionRatio - } - - private static let lock = NSLock() - private static var availability = [AssetType: Bool]() - - /// Retuns `true` if the encoding is available for the given format on - /// the current hardware. Some of the most recent formats might not be - /// available so its best to check before using them. - public static func isSupported(type: AssetType) -> Bool { - lock.lock() - defer { lock.unlock() } - if let isAvailable = availability[type] { - return isAvailable - } - let isAvailable = CGImageDestinationCreateWithData( - NSMutableData() as CFMutableData, type.rawValue as CFString, 1, nil - ) != nil - availability[type] = isAvailable - return isAvailable - } - - public func encode(_ image: PlatformImage) -> Data? { - let data = NSMutableData() - let options: NSDictionary = [ - kCGImageDestinationLossyCompressionQuality: compressionRatio - ] - guard let source = image.cgImage, - let destination = CGImageDestinationCreateWithData( - data as CFMutableData, type.rawValue as CFString, 1, nil - ) else { - return nil - } - CGImageDestinationAddImage(destination, source, options) - CGImageDestinationFinalize(destination) - return data as Data - } - } -} diff --git a/Pods/Nuke/Sources/Core/Encoding/ImageEncoders.swift b/Pods/Nuke/Sources/Core/Encoding/ImageEncoders.swift deleted file mode 100644 index ec2829fa8..000000000 --- a/Pods/Nuke/Sources/Core/Encoding/ImageEncoders.swift +++ /dev/null @@ -1,8 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// A namespace with all available encoders. -public enum ImageEncoders {} diff --git a/Pods/Nuke/Sources/Core/Encoding/ImageEncoding.swift b/Pods/Nuke/Sources/Core/Encoding/ImageEncoding.swift deleted file mode 100644 index 4667b82ac..000000000 --- a/Pods/Nuke/Sources/Core/Encoding/ImageEncoding.swift +++ /dev/null @@ -1,39 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -#if !os(macOS) -import UIKit -#else -import Cocoa -#endif - -#if os(watchOS) -import WatchKit -#endif - -import ImageIO - -// MARK: - ImageEncoding - -/// An image encoder. -public protocol ImageEncoding { - /// Encodes the given image. - func encode(_ image: PlatformImage) -> Data? - - /// An optional method which encodes the given image container. - func encode(_ container: ImageContainer, context: ImageEncodingContext) -> Data? -} - -public extension ImageEncoding { - func encode(_ container: ImageContainer, context: ImageEncodingContext) -> Data? { - self.encode(container.image) - } -} - -/// Image encoding context used when selecting which encoder to use. -public struct ImageEncodingContext { - public let request: ImageRequest - public let image: PlatformImage - public let urlResponse: URLResponse? -} diff --git a/Pods/Nuke/Sources/Core/ImagePipeline.swift b/Pods/Nuke/Sources/Core/ImagePipeline.swift deleted file mode 100644 index 20330d000..000000000 --- a/Pods/Nuke/Sources/Core/ImagePipeline.swift +++ /dev/null @@ -1,431 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// `ImagePipeline` is the primary way to load images directly (without a UI). -/// -/// The pipeline is fully customizable. You can change its configuration using -/// `ImagePipeline.Configuration` type: set custom data loader and cache, configure -/// image encoders and decoders, etc. You can also set an `ImagePipelineDelegate` -/// to get even more granular control on a per-request basis. -/// -/// See ["Image Pipeline"](https://kean.blog/nuke/guides/image-pipeline) to learn -/// more about how to use the pipeline. You can also learn about they way it -/// works internally in a [dedicated guide](https://kean.blog/nuke/guides/image-pipeline-guide). -/// -/// `ImagePipeline` also suppors Combine. You can learn more in a dedicated -/// [guide](https://kean.blog/nuke/guides/combine) with some common use-cases. -/// -/// `ImagePipeline` is fully thread-safe. -public final class ImagePipeline { - /// Shared image pipeline. - public static var shared = ImagePipeline(configuration: .withURLCache) - - /// The pipeline configuration. - public let configuration: Configuration - - /// Provides access to the underlying caching subsystems. - public var cache: ImagePipeline.Cache { ImagePipeline.Cache(pipeline: self) } - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use ImagePipelineDelegate") - public var observer: ImagePipelineObserving? - - let delegate: ImagePipelineDelegate // swiftlint:disable:this all - private(set) var imageCache: ImageCache? - - private var tasks = [ImageTask: TaskSubscription]() - - private let tasksLoadData: TaskPool - private let tasksLoadImage: TaskPool - private let tasksFetchDecodedImage: TaskPool - private let tasksFetchOriginalImageData: TaskPool - private let tasksProcessImage: TaskPool - - // The queue on which the entire subsystem is synchronized. - let queue = DispatchQueue(label: "com.github.kean.Nuke.ImagePipeline", qos: .userInitiated) - private var isInvalidated = false - - private var nextTaskId: Int64 { OSAtomicIncrement64(_nextTaskId) } - private let _nextTaskId: UnsafeMutablePointer - - let rateLimiter: RateLimiter? - let id = UUID() - - deinit { - _nextTaskId.deallocate() - - ResumableDataStorage.shared.unregister(self) - #if TRACK_ALLOCATIONS - Allocations.decrement("ImagePipeline") - #endif - } - - /// Initializes `ImagePipeline` instance with the given configuration. - /// - /// - parameter configuration: `Configuration()` by default. - /// - parameter delegate: `nil` by default. - public init(configuration: Configuration = Configuration(), delegate: ImagePipelineDelegate? = nil) { - self.configuration = configuration - self.rateLimiter = configuration.isRateLimiterEnabled ? RateLimiter(queue: queue) : nil - self.delegate = delegate ?? ImagePipelineDefaultDelegate() - - let isCoalescingEnabled = configuration.isTaskCoalescingEnabled - self.tasksLoadData = TaskPool(isCoalescingEnabled) - self.tasksLoadImage = TaskPool(isCoalescingEnabled) - self.tasksFetchDecodedImage = TaskPool(isCoalescingEnabled) - self.tasksFetchOriginalImageData = TaskPool(isCoalescingEnabled) - self.tasksProcessImage = TaskPool(isCoalescingEnabled) - - self._nextTaskId = UnsafeMutablePointer.allocate(capacity: 1) - self._nextTaskId.initialize(to: 0) - - if let imageCache = configuration.imageCache as? ImageCache { - self.imageCache = imageCache - } - - ResumableDataStorage.shared.register(self) - - #if TRACK_ALLOCATIONS - Allocations.increment("ImagePipeline") - #endif - } - - public convenience init(delegate: ImagePipelineDelegate? = nil, _ configure: (inout ImagePipeline.Configuration) -> Void) { - var configuration = ImagePipeline.Configuration() - configure(&configuration) - self.init(configuration: configuration, delegate: delegate) - } - - /// Invalidates the pipeline and cancels all outstanding tasks. No new - /// requests can be started. - public func invalidate() { - queue.async { - guard !self.isInvalidated else { return } - self.isInvalidated = true - self.tasks.keys.forEach(self.cancel) - } - } - - // MARK: - Loading Images - - /// Loads an image for the given request. - @discardableResult public func loadImage( - with request: ImageRequestConvertible, - completion: @escaping (_ result: Result) -> Void - ) -> ImageTask { - loadImage(with: request, queue: nil, progress: nil, completion: completion) - } - - /// Loads an image for the given request. - /// - /// See [Nuke Docs](https://kean.blog/nuke/guides/image-pipeline) to learn more. - /// - /// - parameter request: An image request. - /// - parameter queue: A queue on which to execute `progress` and `completion` - /// callbacks. By default, the pipeline uses `.main` queue. - /// - parameter progress: A closure to be called periodically on the main thread - /// when the progress is updated. `nil` by default. - /// - parameter completion: A closure to be called on the main thread when the - /// request is finished. `nil` by default. - @discardableResult public func loadImage( - with request: ImageRequestConvertible, - queue: DispatchQueue? = nil, - progress: ((_ response: ImageResponse?, _ completed: Int64, _ total: Int64) -> Void)?, - completion: @escaping ((_ result: Result) -> Void) - ) -> ImageTask { - loadImage(with: request.asImageRequest(), isConfined: false, queue: queue, progress: progress, completion: completion) - } - - func loadImage( - with request: ImageRequest, - isConfined: Bool, - queue: DispatchQueue?, - progress: ((_ response: ImageResponse?, _ completed: Int64, _ total: Int64) -> Void)?, - onCancel: (() -> Void)? = nil, - completion: ((_ result: Result) -> Void)? - ) -> ImageTask { - let request = configuration.inheritOptions(request) - let task = ImageTask(taskId: nextTaskId, request: request, isDataTask: false) - task.pipeline = self - if let onCancel = onCancel { - task.onCancel = { [weak self] in self?.dispatchCallback(to: queue, onCancel) } - } - if isConfined { - self.startImageTask(task, callbackQueue: queue, progress: progress, completion: completion) - } else { - self.queue.async { - self.startImageTask(task, callbackQueue: queue, progress: progress, completion: completion) - } - } - return task - } - - private func startImageTask( - _ task: ImageTask, - callbackQueue: DispatchQueue?, - progress progressHandler: ((ImageResponse?, Int64, Int64) -> Void)?, - completion: ((_ result: Result) -> Void)? - ) { - guard !isInvalidated else { return } - - self.send(.started, task) - - tasks[task] = makeTaskLoadImage(for: task.request) - .subscribe(priority: task._priority.taskPriority, subscriber: task) { [weak self, weak task] event in - guard let self = self, let task = task else { return } - - self.send(ImageTaskEvent(event), task) - - if event.isCompleted { - self.tasks[task] = nil - } - - self.dispatchCallback(to: callbackQueue) { - guard !task.isCancelled else { return } - - switch event { - case let .value(response, isCompleted): - if isCompleted { - completion?(.success(response)) - } else { - progressHandler?(response, task.completedUnitCount, task.totalUnitCount) - } - case let .progress(progress): - task.setProgress(progress) - progressHandler?(nil, progress.completed, progress.total) - case let .error(error): - completion?(.failure(error)) - } - } - } - } - - // MARK: - Loading Image Data - - /// Loads the image data for the given request. The data doesn't get decoded - /// or processed in any other way. - @discardableResult public func loadData( - with request: ImageRequestConvertible, - completion: @escaping (Result<(data: Data, response: URLResponse?), Error>) -> Void - ) -> ImageTask { - loadData(with: request, queue: nil, progress: nil, completion: completion) - } - - /// Loads the image data for the given request. The data doesn't get decoded - /// or processed in any other way. - /// - /// You can call `loadImage(:)` for the request at any point after calling - /// `loadData(:)`, the pipeline will use the same operation to load the data, - /// no duplicated work will be performed. - /// - /// - parameter request: An image request. - /// - parameter queue: A queue on which to execute `progress` and `completion` - /// callbacks. By default, the pipeline uses `.main` queue. - /// - parameter progress: A closure to be called periodically on the main thread - /// when the progress is updated. `nil` by default. - /// - parameter completion: A closure to be called on the main thread when the - /// request is finished. - @discardableResult public func loadData( - with request: ImageRequestConvertible, - queue: DispatchQueue? = nil, - progress: ((_ completed: Int64, _ total: Int64) -> Void)?, - completion: @escaping (Result<(data: Data, response: URLResponse?), Error>) -> Void - ) -> ImageTask { - loadData(with: request.asImageRequest(), isConfined: false, queue: queue, progress: progress, completion: completion) - } - - func loadData( - with request: ImageRequest, - isConfined: Bool, - queue callbackQueue: DispatchQueue?, - progress: ((_ completed: Int64, _ total: Int64) -> Void)?, - completion: @escaping (Result<(data: Data, response: URLResponse?), Error>) -> Void - ) -> ImageTask { - let task = ImageTask(taskId: nextTaskId, request: request, isDataTask: true) - task.pipeline = self - if isConfined { - self.startDataTask(task, callbackQueue: callbackQueue, progress: progress, completion: completion) - } else { - self.queue.async { - self.startDataTask(task, callbackQueue: callbackQueue, progress: progress, completion: completion) - } - } - return task - } - - private func startDataTask( - _ task: ImageTask, - callbackQueue: DispatchQueue?, - progress progressHandler: ((_ completed: Int64, _ total: Int64) -> Void)?, - completion: @escaping (Result<(data: Data, response: URLResponse?), Error>) -> Void - ) { - guard !isInvalidated else { return } - - tasks[task] = makeTaskLoadData(for: task.request) - .subscribe(priority: task._priority.taskPriority, subscriber: task) { [weak self, weak task] event in - guard let self = self, let task = task else { return } - - if event.isCompleted { - self.tasks[task] = nil - } - - self.dispatchCallback(to: callbackQueue) { - guard !task.isCancelled else { return } - - switch event { - case let .value(response, isCompleted): - if isCompleted { - completion(.success(response)) - } - case let .progress(progress): - task.setProgress(progress) - progressHandler?(progress.completed, progress.total) - case let .error(error): - completion(.failure(error)) - } - } - } - } - - // MARK: - Errors - - /// Represents all possible image pipeline errors. - public enum Error: Swift.Error, CustomStringConvertible { - /// Data loader failed to load image data with a wrapped error. - case dataLoadingFailed(Swift.Error) - /// Decoder failed to produce a final image. - case decodingFailed - /// Processor failed to produce a final image. - case processingFailed(ImageProcessing) - - public var description: String { - switch self { - case let .dataLoadingFailed(error): return "Failed to load image data: \(error)" - case .decodingFailed: return "Failed to create an image from the image data" - case .processingFailed(let processor): return "Failed to process the image using processor \(processor)" - } - } - - /// Returns underlying data loading error. - public var dataLoadingError: Swift.Error? { - switch self { - case .dataLoadingFailed(let error): - return error - default: - return nil - } - } - } - - // MARK: - Image Task Events - - func imageTaskCancelCalled(_ task: ImageTask) { - queue.async { - self.cancel(task) - } - } - - private func cancel(_ task: ImageTask) { - guard let subscription = self.tasks.removeValue(forKey: task) else { return } - if !task.isDataTask { - self.send(.cancelled, task) - } - task.onCancel?() - subscription.unsubscribe() - } - - func imageTaskUpdatePriorityCalled(_ task: ImageTask, priority: ImageRequest.Priority) { - queue.async { - task._priority = priority - guard let subscription = self.tasks[task] else { return } - if !task.isDataTask { - self.send(.priorityUpdated(priority: priority), task) - } - subscription.setPriority(priority.taskPriority) - } - } - - private func dispatchCallback(to callbackQueue: DispatchQueue?, _ closure: @escaping () -> Void) { - if callbackQueue === self.queue { - closure() - } else { - (callbackQueue ?? self.configuration.callbackQueue).async(execute: closure) - } - } - - // MARK: - Task Factory (Private) - - // When you request an image or image data, the pipeline creates a graph of tasks - // (some tasks are added to the graph on demand). - // - // `loadImage()` call is represented by TaskLoadImage: - // - // TaskLoadImage -> TaskFetchDecodedImage -> TaskFetchOriginalImageData - // -> TaskProcessImage - // - // `loadData()` call is represented by TaskLoadData: - // - // TaskLoadData -> TaskFetchOriginalImageData - // - // - // Each task represents a resource or a piece of work required to produce the - // final result. The pipeline reduces the amount of duplicated work by coalescing - // the tasks that represent the same work. For example, if you all `loadImage()` - // and `loadData()` with the same request, only on `TaskFetchOriginalImageData` - // is created. The work is split between tasks to minimize any duplicated work. - - func makeTaskLoadImage(for request: ImageRequest) -> AsyncTask.Publisher { - tasksLoadImage.publisherForKey(request.makeImageLoadKey()) { - TaskLoadImage(self, request) - } - } - - func makeTaskLoadData(for request: ImageRequest) -> AsyncTask<(Data, URLResponse?), Error>.Publisher { - tasksLoadData.publisherForKey(request.makeImageLoadKey()) { - TaskLoadData(self, request) - } - } - - func makeTaskProcessImage(key: ImageProcessingKey, process: @escaping () -> ImageResponse?) -> AsyncTask.Publisher { - tasksProcessImage.publisherForKey(key) { - OperationTask(self, configuration.imageProcessingQueue, process) - } - } - - func makeTaskFetchDecodedImage(for request: ImageRequest) -> AsyncTask.Publisher { - tasksFetchDecodedImage.publisherForKey(request.makeDecodedImageLoadKey()) { - TaskFetchDecodedImage(self, request) - } - } - - func makeTaskFetchOriginalImageData(for request: ImageRequest) -> AsyncTask<(Data, URLResponse?), Error>.Publisher { - tasksFetchOriginalImageData.publisherForKey(request.makeDataLoadKey()) { - request.publisher == nil ? - TaskFetchOriginalImageData(self, request) : - TaskFetchWithPublisher(self, request) - } - } -} - -// MARK: - Misc (Private) - -extension ImagePipeline: SendEventProtocol { - func send(_ event: ImageTaskEvent, _ task: ImageTask) { - delegate.pipeline(self, imageTask: task, didReceiveEvent: event) - (self as SendEventProtocol)._send(event, task) - } - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use ImagePipelineDelegate") - func _send(_ event: ImageTaskEvent, _ task: ImageTask) { - observer?.pipeline(self, imageTask: task, didReceiveEvent: event) - } -} - -// Just to workaround the deprecation warning. -private protocol SendEventProtocol { - func _send(_ event: ImageTaskEvent, _ task: ImageTask) -} diff --git a/Pods/Nuke/Sources/Core/ImagePipelineConfiguration.swift b/Pods/Nuke/Sources/Core/ImagePipelineConfiguration.swift deleted file mode 100644 index e6a5f3df8..000000000 --- a/Pods/Nuke/Sources/Core/ImagePipelineConfiguration.swift +++ /dev/null @@ -1,242 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation -import os - -// MARK: - ImagePipeline.Configuration - -extension ImagePipeline { - /// The pipeline configuration. - public struct Configuration { - // MARK: - Dependencies - - /// Image cache used by the pipeline. - public var imageCache: ImageCaching? { - // This exists simply to ensure we don't init ImageCache.shared if the - // user provides their own instance. - get { isCustomImageCacheProvided ? customImageCache : ImageCache.shared } - set { - customImageCache = newValue - isCustomImageCacheProvided = true - } - } - private var customImageCache: ImageCaching? - - /// Data loader used by the pipeline. - public var dataLoader: DataLoading - - /// Data cache used by the pipeline. - public var dataCache: DataCaching? - - /// Default implementation uses shared `ImageDecoderRegistry` to create - /// a decoder that matches the context. - public var makeImageDecoder: (ImageDecodingContext) -> ImageDecoding? = ImageDecoderRegistry.shared.decoder(for:) - - /// Returns `ImageEncoders.Default()` by default. - public var makeImageEncoder: (ImageEncodingContext) -> ImageEncoding = { _ in - ImageEncoders.Default() - } - - // MARK: - Operation Queues - - /// Data loading queue. Default maximum concurrent task count is 6. - public var dataLoadingQueue = OperationQueue(maxConcurrentCount: 6) - - /// Data caching queue. Default maximum concurrent task count is 2. - public var dataCachingQueue = OperationQueue(maxConcurrentCount: 2) - - /// Image decoding queue. Default maximum concurrent task count is 1. - public var imageDecodingQueue = OperationQueue(maxConcurrentCount: 1) - - /// Image encoding queue. Default maximum concurrent task count is 1. - public var imageEncodingQueue = OperationQueue(maxConcurrentCount: 1) - - /// Image processing queue. Default maximum concurrent task count is 2. - public var imageProcessingQueue = OperationQueue(maxConcurrentCount: 2) - - #if !os(macOS) - /// Image decompressing queue. Default maximum concurrent task count is 2. - public var imageDecompressingQueue = OperationQueue(maxConcurrentCount: 2) - #endif - - // MARK: - Options - - /// A queue on which all callbacks, like `progress` and `completion` - /// callbacks are called. `.main` by default. - public var callbackQueue = DispatchQueue.main - - #if !os(macOS) - /// Decompresses the loaded images. `true` by default. - /// - /// Decompressing compressed image formats (such as JPEG) can significantly - /// improve drawing performance as it allows a bitmap representation to be - /// created in a background rather than on the main thread. - public var isDecompressionEnabled = true - #endif - - /// `.storeOriginalData` by default. - public var dataCachePolicy = DataCachePolicy.storeOriginalData - - /// Determines what images are stored in the disk cache. - public enum DataCachePolicy { - /// For requests with processors, encode and store processed images. - /// For requests with no processors, store original image data, unless - /// the resource is local (file:// or data:// scheme is used). - /// - /// - warning: With this policy, the pipeline `loadData()` method - /// will not store the images in the disk cache for requests with - /// any processors applied – this method only loads data and doesn't - /// decode images. - case automatic - - /// For all requests, only store the original image data, unless - /// the resource is local (file:// or data:// scheme is used). - case storeOriginalData - - /// For all requests, encode and store decoded images after all - /// processors are applied. - /// - /// - note: This is useful if you want to store images in a format - /// different than provided by a server, e.g. decompressed. In other - /// scenarios, consider using `.automatic` policy instead. - /// - /// - warning: With this policy, the pipeline `loadData()` method - /// will not store the images in the disk cache – this method only - /// loads data and doesn't decode images. - case storeEncodedImages - - /// For requests with processors, encode and store processed images. - /// For all requests, store original image data. - case storeAll - } - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use `dataCachePolicy` instead.") - public var dataCacheOptions: DataCacheOptions = DataCacheOptions() { - didSet { - let items = dataCacheOptions.storedItems - if items == [.finalImage] { - dataCachePolicy = .storeEncodedImages - } else if items == [.originalImageData] { - dataCachePolicy = .storeOriginalData - } else if items == [.finalImage, .originalImageData] { - dataCachePolicy = .storeAll - } - } - } - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use `dataCachePolicy` instead. The recommended policy is the new `.automatic` policy.") - public struct DataCacheOptions { - public var storedItems: Set = [.originalImageData] - } - - // Deprecated in 10.0.0 - var _processors: [ImageProcessing] = [] - - /// `true` by default. If `true` the pipeline avoids duplicated work when - /// loading images. The work only gets cancelled when all the registered - /// requests are. The pipeline also automatically manages the priority of the - /// deduplicated work. - /// - /// Let's take these two requests for example: - /// - /// ```swift - /// let url = URL(string: "http://example.com/image") - /// pipeline.loadImage(with: ImageRequest(url: url, processors: [ - /// ImageProcessors.Resize(size: CGSize(width: 44, height: 44)), - /// ImageProcessors.GaussianBlur(radius: 8) - /// ])) - /// pipeline.loadImage(with: ImageRequest(url: url, processors: [ - /// ImageProcessors.Resize(size: CGSize(width: 44, height: 44)) - /// ])) - /// ``` - /// - /// Nuke will load the image data only once, resize the image once and - /// apply the blur also only once. There is no duplicated work done at - /// any stage. - public var isTaskCoalescingEnabled = true - - /// `true` by default. If `true` the pipeline will rate limit requests - /// to prevent trashing of the underlying systems (e.g. `URLSession`). - /// The rate limiter only comes into play when the requests are started - /// and cancelled at a high rate (e.g. scrolling through a collection view). - public var isRateLimiterEnabled = true - - /// `false` by default. If `true` the pipeline will try to produce a new - /// image each time it receives a new portion of data from data loader. - /// The decoder used by the image loading session determines whether - /// to produce a partial image or not. The default image decoder - /// (`ImageDecoder`) supports progressive JPEG decoding. - public var isProgressiveDecodingEnabled = true - - /// `false` by default. If `true`, the pipeline will store all of the - /// progressively generated previews in the memory cache. All of the - /// previews have `isPreview` flag set to `true`. - public var isStoringPreviewsInMemoryCache = true - - /// If the data task is terminated (either because of a failure or a - /// cancellation) and the image was partially loaded, the next load will - /// resume where it left off. Supports both validators (`ETag`, - /// `Last-Modified`). Resumable downloads are enabled by default. - public var isResumableDataEnabled = true - - // MARK: - Options (Shared) - - /// If `true` pipeline will detect GIFs and set `animatedImageData` - /// (`UIImage` property). It will also disable processing of such images, - /// and alter the way cache cost is calculated. However, this will not - /// enable actual animated image rendering. To do that take a look at - /// satellite projects (FLAnimatedImage and Gifu plugins for Nuke). - /// `false` by default (to preserve resources). - static var _isAnimatedImageDataEnabled = false - - /// `false` by default. If `true`, enables `os_signpost` logging for - /// measuring performance. You can visually see all the performance - /// metrics in `os_signpost` Instrument. For more information see - /// https://developer.apple.com/documentation/os/logging and - /// https://developer.apple.com/videos/play/wwdc2018/405/. - public static var isSignpostLoggingEnabled = false { - didSet { - log = isSignpostLoggingEnabled ? - OSLog(subsystem: "com.github.kean.Nuke.ImagePipeline", category: "Image Loading") : - .disabled - } - } - - private var isCustomImageCacheProvided = false - - var debugIsSyncImageEncoding = false - - // MARK: - Initializer - - /// Instantiates a default pipeline configuration. - /// - /// - parameter dataLoader: `DataLoader()` by default. - public init(dataLoader: DataLoading = DataLoader()) { - self.dataLoader = dataLoader - } - - /// A configuration with a `DataLoader` with an HTTP disk cache (`URLCache`) - /// with a size limit of 150 MB. - public static var withURLCache: Configuration { Configuration() } - - /// A configuration with an aggressive disk cache (`DataCache`) with a - /// size limit of 150 MB. An HTTP cache (`URLCache`) is disabled. - public static var withDataCache: Configuration { - let dataLoader: DataLoader = { - let config = URLSessionConfiguration.default - config.urlCache = nil - return DataLoader(configuration: config) - }() - - var config = Configuration() - config.dataLoader = dataLoader - config.dataCache = try? DataCache(name: "com.github.kean.Nuke.DataCache") - - return config - } - } -} diff --git a/Pods/Nuke/Sources/Core/ImagePipelineDelegate.swift b/Pods/Nuke/Sources/Core/ImagePipelineDelegate.swift deleted file mode 100644 index 69150506e..000000000 --- a/Pods/Nuke/Sources/Core/ImagePipelineDelegate.swift +++ /dev/null @@ -1,115 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// A delegate that allows you to customize the pipleine on a per-request basis. -/// -/// - warning: The delegate methods are performed on the pipeline queue in the -/// background. -public protocol ImagePipelineDelegate: AnyObject { - // MARK: Configuration - - /// Returns data loader for the given request. - func dataLoader(for request: ImageRequest, pipeline: ImagePipeline) -> DataLoading - - /// Retuns disk cache for the given request. Return `nil` to prevent cache - /// reads and writes. - func dataCache(for request: ImageRequest, pipeline: ImagePipeline) -> DataCaching? - - /// Returns image decoder for the given context. - func imageDecoder(for context: ImageDecodingContext, pipeline: ImagePipeline) -> ImageDecoding? - - /// Returns image encoder for the given context. - func imageEncoder(for context: ImageEncodingContext, pipeline: ImagePipeline) -> ImageEncoding - - // MARK: Caching - - /// Returns a cache key identifying the image produced for the given request - /// (including image processors). - /// - /// Return `nil` to use a default key. - func cacheKey(for request: ImageRequest, pipeline: ImagePipeline) -> String? - - /// Gets called when the pipeline is about to save data for the given request. - /// The implementation must call the completion closure passing `non-nil` data - /// to enable caching or `nil` to prevent it. - /// - /// This method calls only if the request parameters and data caching policy - /// of the pipeline already allow caching. - /// - /// - parameter data: Either the original data or the encoded image in case - /// of storing a processed or re-encoded image. - /// - parameter image: Non-nil in case storing an encoded image. - /// - parameter request: The request for which image is being stored. - /// - parameter completion: The implementation must call the completion closure - /// passing `non-nil` data to enable caching or `nil` to prevent it. You can - /// safely call it synchronously. The callback gets called on the background - /// thread. - func willCache(data: Data, image: ImageContainer?, for request: ImageRequest, pipeline: ImagePipeline, completion: @escaping (Data?) -> Void) - - // MARK: Monitoring - - /// Delivers the events produced by the image tasks started via `loadImage` method. - func pipeline(_ pipeline: ImagePipeline, imageTask: ImageTask, didReceiveEvent event: ImageTaskEvent) -} - -public extension ImagePipelineDelegate { - func dataLoader(for request: ImageRequest, pipeline: ImagePipeline) -> DataLoading { - pipeline.configuration.dataLoader - } - - func dataCache(for request: ImageRequest, pipeline: ImagePipeline) -> DataCaching? { - pipeline.configuration.dataCache - } - - func imageDecoder(for context: ImageDecodingContext, pipeline: ImagePipeline) -> ImageDecoding? { - pipeline.configuration.makeImageDecoder(context) - } - - func imageEncoder(for context: ImageEncodingContext, pipeline: ImagePipeline) -> ImageEncoding { - pipeline.configuration.makeImageEncoder(context) - } - - func cacheKey(for request: ImageRequest, pipeline: ImagePipeline) -> String? { - nil - } - - func willCache(data: Data, image: ImageContainer?, for request: ImageRequest, pipeline: ImagePipeline, completion: @escaping (Data?) -> Void) { - completion(data) - } - - func pipeline(_ pipeline: ImagePipeline, imageTask: ImageTask, didReceiveEvent event: ImageTaskEvent) { - // Do nothing - } -} - -/// An image task event sent by the pipeline. -public enum ImageTaskEvent { - case started - case cancelled - case priorityUpdated(priority: ImageRequest.Priority) - case intermediateResponseReceived(response: ImageResponse) - case progressUpdated(completedUnitCount: Int64, totalUnitCount: Int64) - case completed(result: Result) -} - -extension ImageTaskEvent { - init(_ event: AsyncTask.Event) { - switch event { - case let .error(error): - self = .completed(result: .failure(error)) - case let .value(response, isCompleted): - if isCompleted { - self = .completed(result: .success(response)) - } else { - self = .intermediateResponseReceived(response: response) - } - case let .progress(progress): - self = .progressUpdated(completedUnitCount: progress.completed, totalUnitCount: progress.total) - } - } -} - -final class ImagePipelineDefaultDelegate: ImagePipelineDelegate {} diff --git a/Pods/Nuke/Sources/Core/ImageRequest.swift b/Pods/Nuke/Sources/Core/ImageRequest.swift deleted file mode 100644 index 1362d60c5..000000000 --- a/Pods/Nuke/Sources/Core/ImageRequest.swift +++ /dev/null @@ -1,471 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation -import Combine - -#if os(iOS) || os(tvOS) || os(watchOS) -import UIKit -#endif - -#if os(watchOS) -import WatchKit -#endif - -#if os(macOS) -import Cocoa -#endif - -// MARK: - ImageRequest - -/// Represents an image request. -public struct ImageRequest: CustomStringConvertible { - - // MARK: Parameters - - /// Returns the request `URLRequest`. - /// - /// Returns `nil` for publisher-based requests. - public var urlRequest: URLRequest? { - switch ref.resource { - case .url(let url): return url.map { URLRequest(url: $0) } // create lazily - case .urlRequest(let urlRequest): return urlRequest - case .publisher: return nil - } - } - - /// Returns the request `URL`. - /// - /// Returns `nil` for publisher-based requests. - public var url: URL? { - switch ref.resource { - case .url(let url): return url - case .urlRequest(let request): return request.url - case .publisher: return nil - } - } - - /// Returns the ID of the underlying image. For URL-based request, it's an - /// image URL. For publisher – a custom ID. - public var imageId: String? { - switch ref.resource { - case .url(let url): return url?.absoluteString - case .urlRequest(let urlRequest): return urlRequest.url?.absoluteString - case .publisher(let publisher): return publisher.id - } - } - - /// The relative priority of the request. The priority affects the order in - /// which the requests are performed. `.normal` by default. - public var priority: Priority { - get { ref.priority } - set { mutate { $0.priority = newValue } } - } - - /// Processor to be applied to the image. Empty by default. - public var processors: [ImageProcessing] { - get { ref.processors } - set { mutate { $0.processors = newValue } } - } - - /// The request options. - public var options: Options { - get { ref.options } - set { mutate { $0.options = newValue } } - } - - /// Custom info passed alongside the request. - public var userInfo: [UserInfoKey: Any] { - get { ref.userInfo ?? [:] } - set { mutate { $0.userInfo = newValue } } - } - - /// The priority affecting the order in which the requests are performed. - public enum Priority: Int, Comparable { - case veryLow = 0, low, normal, high, veryHigh - - public static func < (lhs: Priority, rhs: Priority) -> Bool { - lhs.rawValue < rhs.rawValue - } - } - - /// A key use in `userInfo`. - public struct UserInfoKey: Hashable, ExpressibleByStringLiteral { - public let rawValue: String - - public init(_ rawValue: String) { - self.rawValue = rawValue - } - - public init(stringLiteral value: String) { - self.rawValue = value - } - - /// By default, a pipeline uses URLs as unique image identifiers for - /// caching and task coalescing. You can override this behavior by - /// providing an `imageIdKey` instead. For example, you can use it to remove - /// transient query parameters from the request. - /// - /// ``` - /// let request = ImageRequest( - /// url: URL(string: "http://example.com/image.jpeg?token=123"), - /// userInfo: [.imageIdKey: "http://example.com/image.jpeg"] - /// ) - /// ``` - public static let imageIdKey: ImageRequest.UserInfoKey = "github.com/kean/nuke/imageId" - - /// The image scale to be used. By default, the scale matches the scale - /// of the current display. - public static let scaleKey: ImageRequest.UserInfoKey = "github.com/kean/nuke/scale" - - /// Specifies whether the pipeline should retreive or generate a thumbnail - /// instead of a full image. The thumbnail creation is generally significantly - /// more efficient, especially in terms of memory usage, than image resizing - /// (`ImageProcessors.Resize`). - /// - /// - note: You must be using the default image decoder to make it work. - public static let thumbnailKey: ImageRequest.UserInfoKey = "github.com/kean/nuke/thumbmnailKey" - } - - // MARK: Initializers - - /// Initializes a request with the given URL. - /// - /// - parameter url: The request URL. - /// - parameter processors: Processors to be apply to the image. `[]` by default. - /// - parameter priority: The priority of the request, `.normal` by default. - /// - parameter options: Image loading options. `[]` by default. - /// - parameter userInfo: Custom info passed alongside the request. `nil` by default. - /// - /// ```swift - /// let request = ImageRequest( - /// url: URL(string: "http://..."), - /// processors: [ImageProcessors.Resize(size: imageView.bounds.size)], - /// priority: .high - /// ) - /// ``` - public init(url: URL?, - processors: [ImageProcessing] = [], - priority: Priority = .normal, - options: Options = [], - userInfo: [UserInfoKey: Any]? = nil) { - self.ref = Container( - resource: Resource.url(url), - processors: processors, - priority: priority, - options: options, - userInfo: userInfo - ) - } - - /// Initializes a request with the given request. - /// - /// - parameter urlRequest: The URLRequest describing the image request. - /// - parameter processors: Processors to be apply to the image. `[]` by default. - /// - parameter priority: The priority of the request, `.normal` by default. - /// - parameter options: Image loading options. `[]` by default. - /// - parameter userInfo: Custom info passed alongside the request. `nil` by default. - /// - /// ```swift - /// let request = ImageRequest( - /// url: URLRequest(url: URL(string: "http://...")), - /// processors: [ImageProcessors.Resize(size: imageView.bounds.size)], - /// priority: .high - /// ) - /// ``` - public init(urlRequest: URLRequest, - processors: [ImageProcessing] = [], - priority: Priority = .normal, - options: Options = [], - userInfo: [UserInfoKey: Any]? = nil) { - self.ref = Container( - resource: Resource.urlRequest(urlRequest), - processors: processors, - priority: priority, - options: options, - userInfo: userInfo - ) - } - - /// Initializes a request with the given data publisher. - /// - /// - parameter id: Uniquely identifies the image data. - /// - parameter data: A data publisher to be used for fetching image data. - /// - parameter processors: Processors to be apply to the image. `[]` by default. - /// - parameter priority: The priority of the request, `.normal` by default. - /// - parameter options: Image loading options. `[]` by default. - /// - parameter userInfo: Custom info passed alongside the request. `nil` by default. - /// - /// For example, here is how you can use it with Photos framework (the - /// `imageDataPublisher()` API is a convenience extension). - /// - /// ```swift - /// let request = ImageRequest( - /// id: asset.localIdentifier, - /// data: PHAssetManager.imageDataPublisher(for: asset) - /// ) - /// ``` - /// - /// - warning: If you don't want data to be stored in the disk cache, make - /// sure to create a pipeline without it or disable it on a per-request basis. - /// You can also disable it dynamically using `ImagePipelineDelegate`. - @available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) - public init

(id: String, data: P, - processors: [ImageProcessing] = [], - priority: Priority = .normal, - options: Options = [], - userInfo: [UserInfoKey: Any]? = nil) where P: Publisher, P.Output == Data { - // It could technically be implemented without any special change to the - // pipeline by using a custom DataLoader, disabling resumable data, and - // passing a publisher in the request userInfo. - self.ref = Container( - resource: .publisher(DataPublisher(id: id, data)), - processors: processors, - priority: priority, - options: options, - userInfo: userInfo - ) - } - - // MARK: Options - - /// Image request options. - public struct Options: OptionSet, Hashable { - /// Returns a raw value. - public let rawValue: UInt16 - - /// Initialializes options with a given raw values. - public init(rawValue: UInt16) { - self.rawValue = rawValue - } - - /// Disables memory cache reads (`ImageCaching`). - public static let disableMemoryCacheReads = Options(rawValue: 1 << 0) - - /// Disables memory cache writes (`ImageCaching`). - public static let disableMemoryCacheWrites = Options(rawValue: 1 << 1) - - /// Disables both memory cache reads and writes (`ImageCaching`). - public static let disableMemoryCache: Options = [.disableMemoryCacheReads, .disableMemoryCacheWrites] - - /// Disables disk cache reads (`DataCaching`). - public static let disableDiskCacheReads = Options(rawValue: 1 << 2) - - /// Disables disk cache writes (`DataCaching`). - public static let disableDiskCacheWrites = Options(rawValue: 1 << 3) - - /// Disables both disk cache reads and writes (`DataCaching`). - public static let disableDiskCache: Options = [.disableDiskCacheReads, .disableDiskCacheWrites] - - /// The image should be loaded only from the originating source. - /// - /// This option only works `ImageCaching` and `DataCaching`, but not - /// `URLCache`. If you want to ignore `URLCache`, initialize the request - /// with `URLRequest` with the respective policy - public static let reloadIgnoringCachedData: Options = [.disableMemoryCacheReads, .disableDiskCacheReads] - - /// Use existing cache data and fail if no cached data is available. - public static let returnCacheDataDontLoad = Options(rawValue: 1 << 4) - } - - /// Thumbnail options. - /// - /// For more info, see https://developer.apple.com/documentation/imageio/cgimagesource/image_source_option_dictionary_keys - public struct ThumbnailOptions: Hashable { - /// The maximum width and height in pixels of a thumbnail. If this key - /// is not specified, the width and height of a thumbnail is not limited - /// and thumbnails may be as big as the image itself. - public var maxPixelSize: CGFloat - - /// Whether a thumbnail should be automatically created for an image if - /// a thumbnail isn't present in the image source file. The thumbnail is - /// created from the full image, subject to the limit specified by - /// `maxPixelSize`. - /// - /// By default, `true`. - public var createThumbnailFromImageIfAbsent = true - - /// Whether a thumbnail should be created from the full image even if a - /// thumbnail is present in the image source file. The thumbnail is created - /// from the full image, subject to the limit specified by - /// `maxPixelSize`. - /// - /// By default, `true`. - public var createThumbnailFromImageAlways = true - - /// Whether the thumbnail should be rotated and scaled according to the - /// orientation and pixel aspect ratio of the full image. - /// - /// By default, `true`. - public var createThumbnailWithTransform = true - - /// Specifies whether image decoding and caching should happen at image - /// creation time. - /// - /// By default, `true`. - public var shouldCacheImmediately = true - - public init(maxPixelSize: CGFloat, - createThumbnailFromImageIfAbsent: Bool = true, - createThumbnailFromImageAlways: Bool = true, - createThumbnailWithTransform: Bool = true, - shouldCacheImmediately: Bool = true) { - self.maxPixelSize = maxPixelSize - self.createThumbnailFromImageIfAbsent = createThumbnailFromImageIfAbsent - self.createThumbnailFromImageAlways = createThumbnailFromImageAlways - self.createThumbnailWithTransform = createThumbnailWithTransform - self.shouldCacheImmediately = shouldCacheImmediately - } - - var identifier: String { - "com.github/kean/nuke/thumbnail?mxs=\(maxPixelSize),options=\(createThumbnailFromImageIfAbsent)\(createThumbnailFromImageAlways)\(createThumbnailWithTransform)\(shouldCacheImmediately)" - } - } - - // MARK: Internal - - private(set) var ref: Container - - private mutating func mutate(_ closure: (Container) -> Void) { - if !isKnownUniquelyReferenced(&ref) { - ref = Container(ref) - } - closure(ref) - } - - /// Just like many Swift built-in types, `ImageRequest` uses CoW approach to - /// avoid memberwise retain/releases when `ImageRequest` is passed around. - final class Container { - // It's benefitial to put resource before priority and options because - // of the resource size/stride of 9/16. Priority (1 byte) and Options - // (2 bytes) slot just right in the remaining space. - let resource: Resource - fileprivate(set) var priority: Priority - fileprivate(set) var options: Options - fileprivate(set) var processors: [ImageProcessing] - fileprivate(set) var userInfo: [UserInfoKey: Any]? - // After trimming down the request size, it is no longer - // as beneficial using CoW for ImageRequest, but there - // still is a small but measurable difference. - - deinit { - #if TRACK_ALLOCATIONS - Allocations.decrement("ImageRequest.Container") - #endif - } - - /// Creates a resource with a default processor. - init(resource: Resource, processors: [ImageProcessing], priority: Priority, options: Options, userInfo: [UserInfoKey: Any]?) { - self.resource = resource - self.processors = processors - self.priority = priority - self.options = options - self.userInfo = userInfo - - #if TRACK_ALLOCATIONS - Allocations.increment("ImageRequest.Container") - #endif - } - - /// Creates a copy. - init(_ ref: Container) { - self.resource = ref.resource - self.processors = ref.processors - self.priority = ref.priority - self.options = ref.options - self.userInfo = ref.userInfo - - #if TRACK_ALLOCATIONS - Allocations.increment("ImageRequest.Container") - #endif - } - } - - // Every case takes 8 bytes and the enum 9 bytes overall (use stride!) - enum Resource: CustomStringConvertible { - case url(URL?) - case urlRequest(URLRequest) - case publisher(DataPublisher) - - var description: String { - switch self { - case .url(let url): return "\(url?.absoluteString ?? "nil")" - case .urlRequest(let urlRequest): return "\(urlRequest)" - case .publisher(let data): return "\(data)" - } - } - } - - public var description: String { - "ImageRequest(resource: \(ref.resource), priority: \(priority), processors: \(processors), options: \(options), userInfo: \(userInfo))" - } - - func withProcessors(_ processors: [ImageProcessing]) -> ImageRequest { - var request = self - request.processors = processors - return request - } - - var preferredImageId: String { - if let imageId = ref.userInfo?[.imageIdKey] as? String { - return imageId - } - return imageId ?? "" - } - - var thubmnail: ThumbnailOptions? { - ref.userInfo?[.thumbnailKey] as? ThumbnailOptions - } - - var scale: CGFloat? { - guard let scale = ref.userInfo?[.scaleKey] as? NSNumber else { - return nil - } - return CGFloat(scale.floatValue) - } - - var publisher: DataPublisher? { - guard case .publisher(let publisher) = ref.resource else { - return nil - } - return publisher - } -} - -// MARK: - ImageRequestConvertible - -/// Represents a type that can be converted to an `ImageRequest`. -public protocol ImageRequestConvertible { - func asImageRequest() -> ImageRequest -} - -extension ImageRequest: ImageRequestConvertible { - public func asImageRequest() -> ImageRequest { - self - } -} - -extension URL: ImageRequestConvertible { - public func asImageRequest() -> ImageRequest { - ImageRequest(url: self) - } -} - -extension Optional: ImageRequestConvertible where Wrapped == URL { - public func asImageRequest() -> ImageRequest { - ImageRequest(url: self) - } -} - -extension URLRequest: ImageRequestConvertible { - public func asImageRequest() -> ImageRequest { - ImageRequest(urlRequest: self) - } -} - -extension String: ImageRequestConvertible { - public func asImageRequest() -> ImageRequest { - ImageRequest(url: URL(string: self)) - } -} diff --git a/Pods/Nuke/Sources/Core/ImageResponse.swift b/Pods/Nuke/Sources/Core/ImageResponse.swift deleted file mode 100644 index 200399ae6..000000000 --- a/Pods/Nuke/Sources/Core/ImageResponse.swift +++ /dev/null @@ -1,144 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -#if !os(watchOS) -import AVKit -#endif - -import Foundation - -#if !os(macOS) -import UIKit.UIImage -#else -import AppKit.NSImage -#endif - -// MARK: - ImageResponse - -/// An image response that contains a fetched image and some metadata. -public struct ImageResponse { - /// An image container with an image and associated metadata. - public let container: ImageContainer - - #if os(macOS) - /// A convenience computed property that returns an image from the container. - public var image: NSImage { container.image } - #else - /// A convenience computed property that returns an image from the container. - public var image: UIImage { container.image } - #endif - - /// A response. `nil` unless the resource was fetched from the network or an - /// HTTP cache. - public let urlResponse: URLResponse? - - /// Contains a cache type in case the image was returned from one of the - /// pipeline caches (not including any of the HTTP caches if enabled). - public let cacheType: CacheType? - - /// Initializes the response with the given image. - public init(container: ImageContainer, urlResponse: URLResponse? = nil, cacheType: CacheType? = nil) { - self.container = container - self.urlResponse = urlResponse - self.cacheType = cacheType - } - - func map(_ transformation: (ImageContainer) -> ImageContainer?) -> ImageResponse? { - return autoreleasepool { - guard let output = transformation(container) else { - return nil - } - return ImageResponse(container: output, urlResponse: urlResponse, cacheType: cacheType) - } - } - - /// A cache type. - public enum CacheType { - /// Memory cache (see `ImageCaching`) - case memory - /// Disk cache (see `DataCaching`) - case disk - } -} - -// MARK: - ImageContainer - -/// An image container with an image and associated metadata. -public struct ImageContainer { - #if os(macOS) - /// A fetched image. - public var image: NSImage - #else - /// A fetched image. - public var image: UIImage - #endif - - /// An image type. - public var type: AssetType? - - /// Returns `true` if the image in the container is a preview of the image. - public var isPreview: Bool - - /// Contains the original image `data`, but only if the decoder decides to - /// attach it to the image. - /// - /// The default decoder (`ImageDecoders.Default`) attaches data to GIFs to - /// allow to display them using a rendering engine of your choice. - /// - /// - note: The `data`, along with the image container itself gets stored - /// in the memory cache. - public var data: Data? - - #if !os(watchOS) - /// Represents in-memory video asset. - public var asset: AVAsset? - #endif - - /// An metadata provided by the user. - public var userInfo: [UserInfoKey: Any] - - /// Initializes the container with the given image. - public init(image: PlatformImage, type: AssetType? = nil, isPreview: Bool = false, data: Data? = nil, userInfo: [UserInfoKey: Any] = [:]) { - self.image = image - self.type = type - self.isPreview = isPreview - self.data = data - self.userInfo = userInfo - - #if !os(watchOS) - if type?.isVideo == true { - self.asset = data.flatMap { - AVDataAsset.init(data: $0, type: type) - } - } - #endif - } - - /// Modifies the wrapped image and keeps all of the rest of the metadata. - public func map(_ closure: (PlatformImage) -> PlatformImage?) -> ImageContainer? { - guard let image = closure(self.image) else { - return nil - } - return ImageContainer(image: image, type: type, isPreview: isPreview, data: data, userInfo: userInfo) - } - - /// A key use in `userInfo`. - public struct UserInfoKey: Hashable, ExpressibleByStringLiteral { - public let rawValue: String - - public init(_ rawValue: String) { - self.rawValue = rawValue - } - - public init(stringLiteral value: String) { - self.rawValue = value - } - - // For internal purposes. - static let isThumbnailKey: UserInfoKey = "com.github/kean/nuke/skip-decompression" - - /// A user info key to get the scan number (Int). - public static let scanNumberKey: UserInfoKey = "com.github/kean/nuke/scan-number" - } -} diff --git a/Pods/Nuke/Sources/Core/ImageTask.swift b/Pods/Nuke/Sources/Core/ImageTask.swift deleted file mode 100644 index 671366a2d..000000000 --- a/Pods/Nuke/Sources/Core/ImageTask.swift +++ /dev/null @@ -1,108 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// A task performed by the `ImagePipeline`. -/// -/// The pipeline maintains a strong reference to the task until the request -/// finishes or fails; you do not need to maintain a reference to the task unless -/// it is useful for your app. -public final class ImageTask: Hashable, CustomStringConvertible { - /// An identifier that uniquely identifies the task within a given pipeline. - /// Unique only within that pipeline. - public let taskId: Int64 - - /// The original request. - public let request: ImageRequest - - let isDataTask: Bool - - /// Updates the priority of the task, even if it is already running. - public var priority: ImageRequest.Priority { - didSet { - pipeline?.imageTaskUpdatePriorityCalled(self, priority: priority) - } - } - var _priority: ImageRequest.Priority // Backing store for access from pipeline - // Putting all smaller units closer together (1 byte / 1 byte / 1 byte) - - weak var pipeline: ImagePipeline? - - // MARK: Progress - - /// The number of bytes that the task has received. - public private(set) var completedUnitCount: Int64 = 0 - - /// A best-guess upper bound on the number of bytes of the resource. - public private(set) var totalUnitCount: Int64 = 0 - - /// Returns a progress object for the task, created lazily. - public var progress: Progress { - if _progress == nil { _progress = Progress() } - return _progress! - } - private var _progress: Progress? - - var isCancelled: Bool { _isCancelled.pointee == 1 } - private let _isCancelled: UnsafeMutablePointer - - var onCancel: (() -> Void)? - - deinit { - self._isCancelled.deallocate() - #if TRACK_ALLOCATIONS - Allocations.decrement("ImageTask") - #endif - } - - init(taskId: Int64, request: ImageRequest, isDataTask: Bool) { - self.taskId = taskId - self.request = request - self._priority = request.priority - self.priority = request.priority - self.isDataTask = isDataTask - - self._isCancelled = UnsafeMutablePointer.allocate(capacity: 1) - self._isCancelled.initialize(to: 0) - - #if TRACK_ALLOCATIONS - Allocations.increment("ImageTask") - #endif - } - - /// Marks task as being cancelled. - /// - /// The pipeline will immediately cancel any work associated with a task - /// unless there is an equivalent outstanding task running (see - /// `ImagePipeline.Configuration.isCoalescingEnabled` for more info). - public func cancel() { - if OSAtomicCompareAndSwap32Barrier(0, 1, _isCancelled) { - pipeline?.imageTaskCancelCalled(self) - } - } - - func setProgress(_ progress: TaskProgress) { - completedUnitCount = progress.completed - totalUnitCount = progress.total - _progress?.completedUnitCount = progress.completed - _progress?.totalUnitCount = progress.total - } - - // MARK: Hashable - - public func hash(into hasher: inout Hasher) { - hasher.combine(ObjectIdentifier(self).hashValue) - } - - public static func == (lhs: ImageTask, rhs: ImageTask) -> Bool { - ObjectIdentifier(lhs) == ObjectIdentifier(rhs) - } - - // MARK: CustomStringConvertible - - public var description: String { - "ImageTask(id: \(taskId), priority: \(priority), completedUnitCount: \(completedUnitCount), totalUnitCount: \(totalUnitCount), isCancelled: \(isCancelled))" - } -} diff --git a/Pods/Nuke/Sources/Core/Loading/DataLoader.swift b/Pods/Nuke/Sources/Core/Loading/DataLoader.swift deleted file mode 100644 index f631c853b..000000000 --- a/Pods/Nuke/Sources/Core/Loading/DataLoader.swift +++ /dev/null @@ -1,210 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// Provides basic networking using `URLSession`. -public final class DataLoader: DataLoading, _DataLoaderObserving { - public let session: URLSession - private let impl = _DataLoader() - - public var observer: DataLoaderObserving? - - deinit { - session.invalidateAndCancel() - - #if TRACK_ALLOCATIONS - Allocations.decrement("DataLoader") - #endif - } - - /// Initializes `DataLoader` with the given configuration. - /// - parameter configuration: `URLSessionConfiguration.default` with - /// `URLCache` with 0 MB memory capacity and 150 MB disk capacity. - public init(configuration: URLSessionConfiguration = DataLoader.defaultConfiguration, - validate: @escaping (URLResponse) -> Swift.Error? = DataLoader.validate) { - let queue = OperationQueue() - queue.maxConcurrentOperationCount = 1 - self.session = URLSession(configuration: configuration, delegate: impl, delegateQueue: queue) - self.session.sessionDescription = "Nuke URLSession" - self.impl.validate = validate - self.impl.observer = self - - #if TRACK_ALLOCATIONS - Allocations.increment("DataLoader") - #endif - } - - /// Returns a default configuration which has a `sharedUrlCache` set - /// as a `urlCache`. - public static var defaultConfiguration: URLSessionConfiguration { - let conf = URLSessionConfiguration.default - conf.urlCache = DataLoader.sharedUrlCache - return conf - } - - /// Validates `HTTP` responses by checking that the status code is 2xx. If - /// it's not returns `DataLoader.Error.statusCodeUnacceptable`. - public static func validate(response: URLResponse) -> Swift.Error? { - guard let response = response as? HTTPURLResponse else { - return nil - } - return (200..<300).contains(response.statusCode) ? nil : Error.statusCodeUnacceptable(response.statusCode) - } - - #if !os(macOS) && !targetEnvironment(macCatalyst) - private static let cachePath = "com.github.kean.Nuke.Cache" - #else - private static let cachePath: String = { - let cachePaths = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true) - if let cachePath = cachePaths.first, let identifier = Bundle.main.bundleIdentifier { - return cachePath.appending("/" + identifier) - } - - return "" - }() - #endif - - /// Shared url cached used by a default `DataLoader`. The cache is - /// initialized with 0 MB memory capacity and 150 MB disk capacity. - public static let sharedUrlCache: URLCache = { - let diskCapacity = 150 * 1024 * 1024 // 150 MB - #if targetEnvironment(macCatalyst) - return URLCache(memoryCapacity: 0, diskCapacity: diskCapacity, directory: URL(fileURLWithPath: cachePath)) - #else - return URLCache(memoryCapacity: 0, diskCapacity: diskCapacity, diskPath: cachePath) - #endif - }() - - public func loadData(with request: URLRequest, - didReceiveData: @escaping (Data, URLResponse) -> Void, - completion: @escaping (Swift.Error?) -> Void) -> Cancellable { - impl.loadData(with: request, session: session, didReceiveData: didReceiveData, completion: completion) - } - - /// Errors produced by `DataLoader`. - public enum Error: Swift.Error, CustomStringConvertible { - /// Validation failed. - case statusCodeUnacceptable(Int) - - public var description: String { - switch self { - case let .statusCodeUnacceptable(code): - return "Response status code was unacceptable: \(code.description)" - } - } - } - - // MARK: _DataLoaderObserving - - func dataTask(_ dataTask: URLSessionDataTask, didReceiveEvent event: DataTaskEvent) { - observer?.dataLoader(self, urlSession: session, dataTask: dataTask, didReceiveEvent: event) - } -} - -// Actual data loader implementation. Hide NSObject inheritance, hide -// URLSessionDataDelegate conformance, and break retain cycle between URLSession -// and URLSessionDataDelegate. -private final class _DataLoader: NSObject, URLSessionDataDelegate { - var validate: (URLResponse) -> Swift.Error? = DataLoader.validate - private var handlers = [URLSessionTask: _Handler]() - weak var observer: _DataLoaderObserving? - - /// Loads data with the given request. - func loadData(with request: URLRequest, - session: URLSession, - didReceiveData: @escaping (Data, URLResponse) -> Void, - completion: @escaping (Error?) -> Void) -> Cancellable { - let task = session.dataTask(with: request) - let handler = _Handler(didReceiveData: didReceiveData, completion: completion) - session.delegateQueue.addOperation { // `URLSession` is configured to use this same queue - self.handlers[task] = handler - } - task.taskDescription = "Nuke Load Data" - task.resume() - send(task, .resumed) - return task - } - - // MARK: URLSessionDelegate - - func urlSession(_ session: URLSession, - dataTask: URLSessionDataTask, - didReceive response: URLResponse, - completionHandler: @escaping (URLSession.ResponseDisposition) -> Void) { - send(dataTask, .receivedResponse(response: response)) - - guard let handler = handlers[dataTask] else { - completionHandler(.cancel) - return - } - if let error = validate(response) { - handler.completion(error) - completionHandler(.cancel) - return - } - completionHandler(.allow) - } - - func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { - assert(task is URLSessionDataTask) - if let dataTask = task as? URLSessionDataTask { - send(dataTask, .completed(error: error)) - } - - guard let handler = handlers[task] else { - return - } - handlers[task] = nil - handler.completion(error) - } - - // MARK: URLSessionDataDelegate - - func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { - send(dataTask, .receivedData(data: data)) - - guard let handler = handlers[dataTask], let response = dataTask.response else { - return - } - // Don't store data anywhere, just send it to the pipeline. - handler.didReceiveData(data, response) - } - - // MARK: Internal - - private func send(_ dataTask: URLSessionDataTask, _ event: DataTaskEvent) { - observer?.dataTask(dataTask, didReceiveEvent: event) - } - - private final class _Handler { - let didReceiveData: (Data, URLResponse) -> Void - let completion: (Error?) -> Void - - init(didReceiveData: @escaping (Data, URLResponse) -> Void, completion: @escaping (Error?) -> Void) { - self.didReceiveData = didReceiveData - self.completion = completion - } - } -} - -// MARK: - DataLoaderObserving - -/// An event send by the data loader. -public enum DataTaskEvent { - case resumed - case receivedResponse(response: URLResponse) - case receivedData(data: Data) - case completed(error: Error?) -} - -/// Allows you to tap into internal events of the data loader. Events are -/// delivered on the internal serial operation queue. -public protocol DataLoaderObserving { - func dataLoader(_ loader: DataLoader, urlSession: URLSession, dataTask: URLSessionDataTask, didReceiveEvent event: DataTaskEvent) -} - -protocol _DataLoaderObserving: AnyObject { - func dataTask(_ dataTask: URLSessionDataTask, didReceiveEvent event: DataTaskEvent) -} diff --git a/Pods/Nuke/Sources/Core/Loading/DataLoading.swift b/Pods/Nuke/Sources/Core/Loading/DataLoading.swift deleted file mode 100644 index 792bdb617..000000000 --- a/Pods/Nuke/Sources/Core/Loading/DataLoading.swift +++ /dev/null @@ -1,23 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// A unit of work that can be cancelled. -public protocol Cancellable: AnyObject { - func cancel() -} - -/// Fetches original image data. -public protocol DataLoading { - /// - parameter didReceiveData: Can be called multiple times if streaming - /// is supported. - /// - parameter completion: Must be called once after all (or none in case - /// of an error) `didReceiveData` closures have been called. - func loadData(with request: URLRequest, - didReceiveData: @escaping (Data, URLResponse) -> Void, - completion: @escaping (Error?) -> Void) -> Cancellable -} - -extension URLSessionTask: Cancellable {} diff --git a/Pods/Nuke/Sources/Core/Prefetching/ImagePrefetcher.swift b/Pods/Nuke/Sources/Core/Prefetching/ImagePrefetcher.swift deleted file mode 100644 index ce2fea286..000000000 --- a/Pods/Nuke/Sources/Core/Prefetching/ImagePrefetcher.swift +++ /dev/null @@ -1,203 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// Prefetches and caches images to eliminate delays when requesting the same -/// images later. -/// -/// The prefetcher cancels all of the outstanding tasks when deallocated. -/// -/// All `ImagePrefetcher` methods are thread-safe and are optimized to be used -/// even from the main thread during scrolling. -public final class ImagePrefetcher { - private let pipeline: ImagePipeline - private var tasks = [ImageLoadKey: Task]() - private let destination: Destination - let queue = OperationQueue() // internal for testing - public var didComplete: (() -> Void)? // called when # of in-flight tasks decrements to 0 - - /// Pauses the prefetching. - /// - /// - note: When you pause, the prefetcher will finish outstanding tasks - /// (by default, there are only 2 at a time), and pause the rest. - public var isPaused: Bool = false { - didSet { queue.isSuspended = isPaused } - } - - /// The priority of the requests. By default, `.low`. - /// - /// Changing the priority also changes the priority of all of the outstanding - /// tasks managed by the prefetcher. - public var priority: ImageRequest.Priority = .low { - didSet { - let newValue = priority - pipeline.queue.async { self.didUpdatePriority(to: newValue) } - } - } - private var _priority: ImageRequest.Priority = .low - - /// Prefetching destination. - public enum Destination { - /// Prefetches the image and stores it in both the memory and the disk - /// cache (make sure to enable it). - case memoryCache - - /// Prefetches the image data and stores it in disk caches. It does not - /// require decoding the image data and therefore requires less CPU. - /// - /// - warning: This option is incompatible with `DataCachePolicy.automatic` - /// (for requests with processors) and `DataCachePolicy.storeEncodedImages`. - case diskCache - } - - /// Initializes the `ImagePrefetcher` instance. - /// - parameter manager: `Loader.shared` by default. - /// - parameter destination: `.memoryCache` by default. - /// - parameter `maxConcurrentRequestCount`: 2 by default. - public init(pipeline: ImagePipeline = ImagePipeline.shared, - destination: Destination = .memoryCache, - maxConcurrentRequestCount: Int = 2) { - self.pipeline = pipeline - self.destination = destination - self.queue.maxConcurrentOperationCount = maxConcurrentRequestCount - self.queue.underlyingQueue = pipeline.queue - - #if TRACK_ALLOCATIONS - Allocations.increment("ImagePrefetcher") - #endif - } - - deinit { - let tasks = self.tasks.values // Make sure we don't retain self - pipeline.queue.async { - for task in tasks { - task.cancel() - } - } - - #if TRACK_ALLOCATIONS - Allocations.decrement("ImagePrefetcher") - #endif - } - - /// Starts prefetching images for the given requests. - /// - /// When you need to display the same image later, use the `ImagePipeline` - /// or the view extensions to load it as usual. The pipeline will take care - /// of coalescing the requests to avoid any duplicate work. - /// - /// The priority of the requests is set to the priority of the prefetcher - /// (`.low` by default). - public func startPrefetching(with requests: [ImageRequestConvertible]) { - pipeline.queue.async { - for request in requests { - var request = request.asImageRequest() - request.priority = self._priority - self._startPrefetching(with: request) - } - } - } - - private func _startPrefetching(with request: ImageRequest) { - guard pipeline.cache[request] == nil else { - return // The image is already in memory cache - } - - let key = request.makeImageLoadKey() - guard tasks[key] == nil else { - return // Already started prefetching - } - - let task = Task(request: request, key: key) - task.operation = queue.add { [weak self] finish in - guard let self = self else { return finish() } - self.loadImage(task: task, finish: finish) - } - tasks[key] = task - } - - private func loadImage(task: Task, finish: @escaping () -> Void) { - switch destination { - case .diskCache: - task.imageTask = pipeline.loadData(with: task.request, isConfined: true, queue: pipeline.queue, progress: nil) { [weak self] _ in - self?._remove(task) - finish() - } - case .memoryCache: - task.imageTask = pipeline.loadImage(with: task.request, isConfined: true, queue: pipeline.queue, progress: nil) { [weak self] _ in - self?._remove(task) - finish() - } - } - task.onCancelled = finish - } - - private func _remove(_ task: Task) { - guard tasks[task.key] === task else { return } // Should never happen - tasks[task.key] = nil - if tasks.isEmpty { - didComplete?() - } - } - - /// Stops prefetching images for the given requests and cancels outstanding - /// requests. - /// - /// You don't need to balance the number of `start` and `stop` requests. - /// If you have multiple screens with prefetching, create multiple instances - /// of `ImagePrefetcher`. - /// - /// - parameter destination: `.memoryCache` by default. - public func stopPrefetching(with requests: [ImageRequestConvertible]) { - pipeline.queue.async { - for request in requests { - self._stopPrefetching(with: request.asImageRequest()) - } - } - } - - private func _stopPrefetching(with request: ImageRequest) { - if let task = tasks.removeValue(forKey: request.makeImageLoadKey()) { - task.cancel() - } - } - - /// Stops all prefetching tasks. - public func stopPrefetching() { - pipeline.queue.async { - self.tasks.values.forEach { $0.cancel() } - self.tasks.removeAll() - } - } - - private func didUpdatePriority(to priority: ImageRequest.Priority) { - guard _priority != priority else { return } - _priority = priority - for task in tasks.values { - task.imageTask?.priority = priority - } - } - - private final class Task { - let key: ImageLoadKey - let request: ImageRequest - weak var imageTask: ImageTask? - weak var operation: Operation? - var onCancelled: (() -> Void)? - - init(request: ImageRequest, key: ImageLoadKey) { - self.request = request - self.key = key - } - - // When task is cancelled, it is removed from the prefetcher and can - // never get cancelled twice. - func cancel() { - operation?.cancel() - imageTask?.cancel() - onCancelled?() - } - } -} diff --git a/Pods/Nuke/Sources/Core/Processing/ImageDecompression.swift b/Pods/Nuke/Sources/Core/Processing/ImageDecompression.swift deleted file mode 100644 index 65dfd6482..000000000 --- a/Pods/Nuke/Sources/Core/Processing/ImageDecompression.swift +++ /dev/null @@ -1,24 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -struct ImageDecompression { - - static func decompress(image: PlatformImage) -> PlatformImage { - image.decompressed() ?? image - } - - // MARK: Managing Decompression State - - static var isDecompressionNeededAK = "ImageDecompressor.isDecompressionNeeded.AssociatedKey" - - static func setDecompressionNeeded(_ isDecompressionNeeded: Bool, for image: PlatformImage) { - objc_setAssociatedObject(image, &isDecompressionNeededAK, isDecompressionNeeded, .OBJC_ASSOCIATION_RETAIN) - } - - static func isDecompressionNeeded(for image: PlatformImage) -> Bool? { - objc_getAssociatedObject(image, &isDecompressionNeededAK) as? Bool - } -} diff --git a/Pods/Nuke/Sources/Core/Processing/ImageProcessing.swift b/Pods/Nuke/Sources/Core/Processing/ImageProcessing.swift deleted file mode 100644 index cf6348aff..000000000 --- a/Pods/Nuke/Sources/Core/Processing/ImageProcessing.swift +++ /dev/null @@ -1,86 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// Performs image processing. -/// -/// For basic processing needs, implement the following method: -/// -/// ``` -/// func process(image: PlatformImage) -> PlatformImage? -/// ``` -/// -/// If your processor needs to manipulate image metadata (`ImageContainer`), or -/// get access to more information via the context (`ImageProcessingContext`), -/// there is an additional method that allows you to do that: -/// -/// ``` -/// func process(image container: ImageContainer, context: ImageProcessingContext) -> ImageContainer? -/// ``` -/// -/// You must implement either one of those methods. -public protocol ImageProcessing { - /// Returns a processed image. By default, returns `nil`. - /// - /// - note: Gets called a background queue managed by the pipeline. - func process(_ image: PlatformImage) -> PlatformImage? - - /// Optional method. Returns a processed image. By default, this calls the - /// basic `process(image:)` method. - /// - /// - note: Gets called a background queue managed by the pipeline. - func process(_ container: ImageContainer, context: ImageProcessingContext) -> ImageContainer? - - /// Returns a string that uniquely identifies the processor. - /// - /// Consider using the reverse DNS notation. - var identifier: String { get } - - /// Returns a unique processor identifier. - /// - /// The default implementation simply returns `var identifier: String` but - /// can be overridden as a performance optimization - creating and comparing - /// strings is _expensive_ so you can opt-in to return something which is - /// fast to create and to compare. See `ImageProcessors.Resize` for an example. - /// - /// - note: A common approach is to make your processor `Hashable` and return `self` - /// from `hashableIdentifier`. - var hashableIdentifier: AnyHashable { get } -} - -public extension ImageProcessing { - /// The default implementation simply calls the basic - /// `process(_ image: PlatformImage) -> PlatformImage?` method. - func process(_ container: ImageContainer, context: ImageProcessingContext) -> ImageContainer? { - container.map(process) - } - - /// The default impleemntation simply returns `var identifier: String`. - var hashableIdentifier: AnyHashable { identifier } -} - -/// Image processing context used when selecting which processor to use. -public struct ImageProcessingContext { - public let request: ImageRequest - public let response: ImageResponse - public let isFinal: Bool - - public init(request: ImageRequest, response: ImageResponse, isFinal: Bool) { - self.request = request - self.response = response - self.isFinal = isFinal - } -} - -func == (lhs: [ImageProcessing], rhs: [ImageProcessing]) -> Bool { - guard lhs.count == rhs.count else { - return false - } - // Lazily creates `hashableIdentifiers` because for some processors the - // identifiers might be expensive to compute. - return zip(lhs, rhs).allSatisfy { - $0.hashableIdentifier == $1.hashableIdentifier - } -} diff --git a/Pods/Nuke/Sources/Core/Processing/ImageProcessingOptions.swift b/Pods/Nuke/Sources/Core/Processing/ImageProcessingOptions.swift deleted file mode 100644 index 127b61814..000000000 --- a/Pods/Nuke/Sources/Core/Processing/ImageProcessingOptions.swift +++ /dev/null @@ -1,70 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -#if os(iOS) || os(tvOS) || os(watchOS) -import UIKit -#endif - -#if os(watchOS) -import WatchKit -#endif - -#if os(macOS) -import Cocoa -#endif - -/// A namespace with shared image processing options. -public enum ImageProcessingOptions { - - public enum Unit: CustomStringConvertible { - case points - case pixels - - public var description: String { - switch self { - case .points: return "points" - case .pixels: return "pixels" - } - } - } - - /// Draws a border. - /// - /// - warning: To make sure that the border looks the way you expect, - /// make sure that the images you display exactly match the size of the - /// views in which they get displayed. If you can't guarantee that, pleasee - /// consider adding border to a view layer. This should be your primary - /// option regardless. - public struct Border: Hashable, CustomStringConvertible { - public let width: CGFloat - - #if os(iOS) || os(tvOS) || os(watchOS) - public let color: UIColor - - /// - parameter color: Border color. - /// - parameter width: Border width. 1 points by default. - /// - parameter unit: Unit of the width, `.points` by default. - public init(color: UIColor, width: CGFloat = 1, unit: Unit = .points) { - self.color = color - self.width = width.converted(to: unit) - } - #else - public let color: NSColor - - /// - parameter color: Border color. - /// - parameter width: Border width. 1 points by default. - /// - parameter unit: Unit of the width, `.points` by default. - public init(color: NSColor, width: CGFloat = 1, unit: Unit = .points) { - self.color = color - self.width = width.converted(to: unit) - } - #endif - - public var description: String { - "Border(color: \(color.hex), width: \(width) pixels)" - } - } -} diff --git a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+Anonymous.swift b/Pods/Nuke/Sources/Core/Processing/ImageProcessors+Anonymous.swift deleted file mode 100644 index 5ca6f6e78..000000000 --- a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+Anonymous.swift +++ /dev/null @@ -1,26 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -extension ImageProcessors { - /// Processed an image using a specified closure. - public struct Anonymous: ImageProcessing, CustomStringConvertible { - public let identifier: String - private let closure: (PlatformImage) -> PlatformImage? - - public init(id: String, _ closure: @escaping (PlatformImage) -> PlatformImage?) { - self.identifier = id - self.closure = closure - } - - public func process(_ image: PlatformImage) -> PlatformImage? { - self.closure(image) - } - - public var description: String { - "AnonymousProcessor(identifier: \(identifier)" - } - } -} diff --git a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+Circle.swift b/Pods/Nuke/Sources/Core/Processing/ImageProcessors+Circle.swift deleted file mode 100644 index 84447f1a3..000000000 --- a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+Circle.swift +++ /dev/null @@ -1,34 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -extension ImageProcessors { - - /// Rounds the corners of an image into a circle. If the image is not a square, - /// crops it to a square first. - public struct Circle: ImageProcessing, Hashable, CustomStringConvertible { - private let border: ImageProcessingOptions.Border? - - /// - parameter border: `nil` by default. - public init(border: ImageProcessingOptions.Border? = nil) { - self.border = border - } - - public func process(_ image: PlatformImage) -> PlatformImage? { - image.processed.byDrawingInCircle(border: border) - } - - public var identifier: String { - let suffix = border.map { "?border=\($0)" } - return "com.github.kean/nuke/circle" + (suffix ?? "") - } - - public var hashableIdentifier: AnyHashable { self } - - public var description: String { - "Circle(border: \(border?.description ?? "nil"))" - } - } -} diff --git a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+Composition.swift b/Pods/Nuke/Sources/Core/Processing/ImageProcessors+Composition.swift deleted file mode 100644 index d2e5fb68f..000000000 --- a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+Composition.swift +++ /dev/null @@ -1,57 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -extension ImageProcessors { - /// Composes multiple processors. - public struct Composition: ImageProcessing, Hashable, CustomStringConvertible { - let processors: [ImageProcessing] - - /// Composes multiple processors. - public init(_ processors: [ImageProcessing]) { - // note: multiple compositions are not flatten by default. - self.processors = processors - } - - public func process(_ image: PlatformImage) -> PlatformImage? { - processors.reduce(image) { image, processor in - autoreleasepool { - image.flatMap { processor.process($0) } - } - } - } - - /// Processes the given image by applying each processor in an order in - /// which they were added. If one of the processors fails to produce - /// an image the processing stops and `nil` is returned. - public func process(_ container: ImageContainer, context: ImageProcessingContext) -> ImageContainer? { - processors.reduce(container) { container, processor in - autoreleasepool { - container.flatMap { processor.process($0, context: context) } - } - } - } - - public var identifier: String { - processors.map({ $0.identifier }).joined() - } - - public var hashableIdentifier: AnyHashable { self } - - public func hash(into hasher: inout Hasher) { - for processor in processors { - hasher.combine(processor.hashableIdentifier) - } - } - - public static func == (lhs: Composition, rhs: Composition) -> Bool { - lhs.processors == rhs.processors - } - - public var description: String { - "Composition(processors: \(processors))" - } - } -} diff --git a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+CoreImage.swift b/Pods/Nuke/Sources/Core/Processing/ImageProcessors+CoreImage.swift deleted file mode 100644 index b6ca76c4c..000000000 --- a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+CoreImage.swift +++ /dev/null @@ -1,87 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -#if os(iOS) || os(tvOS) || os(macOS) - -import Foundation -import CoreImage - -extension ImageProcessors { - - /// Applies Core Image filter (`CIFilter`) to the image. - /// - /// # Performance Considerations. - /// - /// Prefer chaining multiple `CIFilter` objects using `Core Image` facilities - /// instead of using multiple instances of `ImageProcessors.CoreImageFilter`. - /// - /// # References - /// - /// - [Core Image Programming Guide](https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_intro/ci_intro.html) - /// - [Core Image Filter Reference](https://developer.apple.com/library/prerelease/ios/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html) - public struct CoreImageFilter: ImageProcessing, CustomStringConvertible { - private let name: String - private let parameters: [String: Any] - public let identifier: String - - /// - parameter identifier: Uniquely identifies the processor. - public init(name: String, parameters: [String: Any], identifier: String) { - self.name = name - self.parameters = parameters - self.identifier = identifier - } - - public init(name: String) { - self.name = name - self.parameters = [:] - self.identifier = "com.github.kean/nuke/core_image?name=\(name))" - } - - public func process(_ image: PlatformImage) -> PlatformImage? { - let filter = CIFilter(name: name, parameters: parameters) - return CoreImageFilter.apply(filter: filter, to: image) - } - - // MARK: - Apply Filter - - /// A default context shared between all Core Image filters. The context - /// has `.priorityRequestLow` option set to `true`. - public static var context = CIContext(options: [.priorityRequestLow: true]) - - public static func apply(filter: CIFilter?, to image: PlatformImage) -> PlatformImage? { - guard let filter = filter else { - return nil - } - return applyFilter(to: image) { - filter.setValue($0, forKey: kCIInputImageKey) - return filter.outputImage - } - } - - static func applyFilter(to image: PlatformImage, context: CIContext = context, closure: (CoreImage.CIImage) -> CoreImage.CIImage?) -> PlatformImage? { - let ciImage: CoreImage.CIImage? = { - if let image = image.ciImage { - return image - } - if let image = image.cgImage { - return CoreImage.CIImage(cgImage: image) - } - return nil - }() - guard let inputImage = ciImage, let outputImage = closure(inputImage) else { - return nil - } - guard let imageRef = context.createCGImage(outputImage, from: outputImage.extent) else { - return nil - } - return PlatformImage.make(cgImage: imageRef, source: image) - } - - public var description: String { - "CoreImageFilter(name: \(name), parameters: \(parameters))" - } - } -} - -#endif diff --git a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+GaussianBlur.swift b/Pods/Nuke/Sources/Core/Processing/ImageProcessors+GaussianBlur.swift deleted file mode 100644 index 019410072..000000000 --- a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+GaussianBlur.swift +++ /dev/null @@ -1,40 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -#if os(iOS) || os(tvOS) || os(macOS) - -import Foundation -import CoreImage - -extension ImageProcessors { - /// Blurs an image using `CIGaussianBlur` filter. - public struct GaussianBlur: ImageProcessing, Hashable, CustomStringConvertible { - private let radius: Int - - /// Initializes the receiver with a blur radius. - /// - /// - parameter radius: `8` by default. - public init(radius: Int = 8) { - self.radius = radius - } - - /// Applies `CIGaussianBlur` filter to the image. - public func process(_ image: PlatformImage) -> PlatformImage? { - let filter = CIFilter(name: "CIGaussianBlur", parameters: ["inputRadius": radius]) - return CoreImageFilter.apply(filter: filter, to: image) - } - - public var identifier: String { - "com.github.kean/nuke/gaussian_blur?radius=\(radius)" - } - - public var hashableIdentifier: AnyHashable { self } - - public var description: String { - "GaussianBlur(radius: \(radius))" - } - } -} - -#endif diff --git a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+Resize.swift b/Pods/Nuke/Sources/Core/Processing/ImageProcessors+Resize.swift deleted file mode 100644 index 05d27c34a..000000000 --- a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+Resize.swift +++ /dev/null @@ -1,103 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation -import CoreGraphics - -extension ImageProcessors { - /// Scales an image to a specified size. - public struct Resize: ImageProcessing, Hashable, CustomStringConvertible { - private let size: Size - private let contentMode: ContentMode - private let crop: Bool - private let upscale: Bool - - /// An option for how to resize the image. - public enum ContentMode: CustomStringConvertible { - /// Scales the image so that it completely fills the target area. - /// Maintains the aspect ratio of the original image. - case aspectFill - - /// Scales the image so that it fits the target size. Maintains the - /// aspect ratio of the original image. - case aspectFit - - public var description: String { - switch self { - case .aspectFill: return ".aspectFill" - case .aspectFit: return ".aspectFit" - } - } - } - - /// Initializes the processor with the given size. - /// - /// - parameter size: The target size. - /// - parameter unit: Unit of the target size, `.points` by default. - /// - parameter contentMode: `.aspectFill` by default. - /// - parameter crop: If `true` will crop the image to match the target size. - /// Does nothing with content mode .aspectFill. `false` by default. - /// - parameter upscale: `false` by default. - public init(size: CGSize, unit: ImageProcessingOptions.Unit = .points, contentMode: ContentMode = .aspectFill, crop: Bool = false, upscale: Bool = false) { - self.size = Size(size: size, unit: unit) - self.contentMode = contentMode - self.crop = crop - self.upscale = upscale - } - - /// Scales an image to the given width preserving aspect ratio. - /// - /// - parameter width: The target width. - /// - parameter unit: Unit of the target size, `.points` by default. - /// - parameter upscale: `false` by default. - public init(width: CGFloat, unit: ImageProcessingOptions.Unit = .points, upscale: Bool = false) { - self.init(size: CGSize(width: width, height: 9999), unit: unit, contentMode: .aspectFit, crop: false, upscale: upscale) - } - - /// Scales an image to the given height preserving aspect ratio. - /// - /// - parameter height: The target height. - /// - parameter unit: Unit of the target size, `.points` by default. - /// - parameter upscale: `false` by default. - public init(height: CGFloat, unit: ImageProcessingOptions.Unit = .points, upscale: Bool = false) { - self.init(size: CGSize(width: 9999, height: height), unit: unit, contentMode: .aspectFit, crop: false, upscale: upscale) - } - - public func process(_ image: PlatformImage) -> PlatformImage? { - if crop && contentMode == .aspectFill { - return image.processed.byResizingAndCropping(to: size.cgSize) - } - return image.processed.byResizing(to: size.cgSize, contentMode: contentMode, upscale: upscale) - } - - public var identifier: String { - "com.github.kean/nuke/resize?s=\(size.cgSize),cm=\(contentMode),crop=\(crop),upscale=\(upscale)" - } - - public var hashableIdentifier: AnyHashable { self } - - public var description: String { - "Resize(size: \(size.cgSize) pixels, contentMode: \(contentMode), crop: \(crop), upscale: \(upscale))" - } - } -} - -// Adds Hashable without making changes to public CGSize API -private struct Size: Hashable { - let cgSize: CGSize - - /// Creates the size in pixels by scaling to the input size to the screen scale - /// if needed. - init(size: CGSize, unit: ImageProcessingOptions.Unit) { - switch unit { - case .pixels: self.cgSize = size // The size is already in pixels - case .points: self.cgSize = size.scaled(by: Screen.scale) - } - } - - func hash(into hasher: inout Hasher) { - hasher.combine(cgSize.width) - hasher.combine(cgSize.height) - } -} diff --git a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+RoundedCorners.swift b/Pods/Nuke/Sources/Core/Processing/ImageProcessors+RoundedCorners.swift deleted file mode 100644 index 239812acf..000000000 --- a/Pods/Nuke/Sources/Core/Processing/ImageProcessors+RoundedCorners.swift +++ /dev/null @@ -1,42 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation -import CoreGraphics - -extension ImageProcessors { - /// Rounds the corners of an image to the specified radius. - /// - /// - warning: In order for the corners to be displayed correctly, the image must exactly match the size - /// of the image view in which it will be displayed. See `ImageProcessor.Resize` for more info. - public struct RoundedCorners: ImageProcessing, Hashable, CustomStringConvertible { - private let radius: CGFloat - private let border: ImageProcessingOptions.Border? - - /// Initializes the processor with the given radius. - /// - /// - parameter radius: The radius of the corners. - /// - parameter unit: Unit of the radius, `.points` by default. - /// - parameter border: An optional border drawn around the image. - public init(radius: CGFloat, unit: ImageProcessingOptions.Unit = .points, border: ImageProcessingOptions.Border? = nil) { - self.radius = radius.converted(to: unit) - self.border = border - } - - public func process(_ image: PlatformImage) -> PlatformImage? { - image.processed.byAddingRoundedCorners(radius: radius, border: border) - } - - public var identifier: String { - let suffix = border.map { ",border=\($0)" } - return "com.github.kean/nuke/rounded_corners?radius=\(radius)" + (suffix ?? "") - } - - public var hashableIdentifier: AnyHashable { self } - - public var description: String { - "RoundedCorners(radius: \(radius) pixels, border: \(border?.description ?? "nil"))" - } - } -} diff --git a/Pods/Nuke/Sources/Core/Processing/ImageProcessors.swift b/Pods/Nuke/Sources/Core/Processing/ImageProcessors.swift deleted file mode 100644 index e09b62029..000000000 --- a/Pods/Nuke/Sources/Core/Processing/ImageProcessors.swift +++ /dev/null @@ -1,113 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -#if os(iOS) || os(tvOS) || os(watchOS) -import UIKit -#endif - -#if os(watchOS) -import WatchKit -#endif - -#if os(macOS) -import Cocoa -#endif - -/// A namespace for all processors that implement `ImageProcessing` protocol. -public enum ImageProcessors {} - -#if swift(>=5.5) -extension ImageProcessing where Self == ImageProcessors.Resize { - /// Scales an image to a specified size. - /// - /// - parameter size: The target size. - /// - parameter unit: Unit of the target size, `.points` by default. - /// - parameter contentMode: `.aspectFill` by default. - /// - parameter crop: If `true` will crop the image to match the target size. - /// Does nothing with content mode .aspectFill. `false` by default. - /// - parameter upscale: `false` by default. - public static func resize(size: CGSize, unit: ImageProcessingOptions.Unit = .points, contentMode: ImageProcessors.Resize.ContentMode = .aspectFill, crop: Bool = false, upscale: Bool = false) -> ImageProcessors.Resize { - ImageProcessors.Resize(size: size, unit: unit, contentMode: contentMode, crop: crop, upscale: upscale) - } - - /// Scales an image to the given width preserving aspect ratio. - /// - /// - parameter width: The target width. - /// - parameter unit: Unit of the target size, `.points` by default. - /// - parameter upscale: `false` by default. - public static func resize(width: CGFloat, unit: ImageProcessingOptions.Unit = .points, upscale: Bool = false) -> ImageProcessors.Resize { - ImageProcessors.Resize(width: width, unit: unit, upscale: upscale) - } - - /// Scales an image to the given height preserving aspect ratio. - /// - /// - parameter height: The target height. - /// - parameter unit: Unit of the target size, `.points` by default. - /// - parameter upscale: `false` by default. - public static func resize(height: CGFloat, unit: ImageProcessingOptions.Unit = .points, upscale: Bool = false) -> ImageProcessors.Resize { - ImageProcessors.Resize(height: height, unit: unit, upscale: upscale) - } -} - -extension ImageProcessing where Self == ImageProcessors.Circle { - /// Rounds the corners of an image into a circle. If the image is not a square, - /// crops it to a square first. - /// - /// - parameter border: `nil` by default. - public static func circle(border: ImageProcessingOptions.Border? = nil) -> ImageProcessors.Circle { - ImageProcessors.Circle(border: border) - } -} - -extension ImageProcessing where Self == ImageProcessors.RoundedCorners { - /// Rounds the corners of an image to the specified radius. - /// - /// - parameter radius: The radius of the corners. - /// - parameter unit: Unit of the radius, `.points` by default. - /// - parameter border: An optional border drawn around the image. - /// - /// - warning: In order for the corners to be displayed correctly, the image must exactly match the size - /// of the image view in which it will be displayed. See `ImageProcessor.Resize` for more info. - public static func roundedCorners(radius: CGFloat, unit: ImageProcessingOptions.Unit = .points, border: ImageProcessingOptions.Border? = nil) -> ImageProcessors.RoundedCorners { - ImageProcessors.RoundedCorners(radius: radius, unit: unit, border: border) - } -} - -#if os(iOS) || os(tvOS) || os(macOS) - -extension ImageProcessing where Self == ImageProcessors.CoreImageFilter { - /// Applies Core Image filter (`CIFilter`) to the image. - /// - /// - parameter identifier: Uniquely identifies the processor. - public static func coreImageFilter(name: String, parameters: [String: Any], identifier: String) -> ImageProcessors.CoreImageFilter { - ImageProcessors.CoreImageFilter(name: name, parameters: parameters, identifier: identifier) - } - - /// Applies Core Image filter (`CIFilter`) to the image. - /// - public static func coreImageFilter(name: String) -> ImageProcessors.CoreImageFilter { - ImageProcessors.CoreImageFilter(name: name) - } -} - -extension ImageProcessing where Self == ImageProcessors.GaussianBlur { - /// Blurs an image using `CIGaussianBlur` filter. - /// - /// - parameter radius: `8` by default. - public static func gaussianBlur(radius: Int = 8) -> ImageProcessors.GaussianBlur { - ImageProcessors.GaussianBlur(radius: radius) - } -} - -#endif - -extension ImageProcessing where Self == ImageProcessors.Anonymous { - /// Processed an image using a specified closure. - public static func process(id: String, _ closure: @escaping (PlatformImage) -> PlatformImage?) -> ImageProcessors.Anonymous { - ImageProcessors.Anonymous(id: id, closure) - } -} -#endif diff --git a/Pods/Nuke/Sources/Core/Tasks/AsyncTask.swift b/Pods/Nuke/Sources/Core/Tasks/AsyncTask.swift deleted file mode 100644 index 8d11a5382..000000000 --- a/Pods/Nuke/Sources/Core/Tasks/AsyncTask.swift +++ /dev/null @@ -1,382 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// Represents a task with support for multiple observers, cancellation, -/// progress reporting, dependencies – everything that `ImagePipeline` needs. -/// -/// A `AsyncTask` can have zero or more subscriptions (`TaskSubscription`) which can -/// be used to later unsubscribe or change the priority of the subscription. -/// -/// The task has built-in support for operations (`Foundation.Operation`) – it -/// automatically cancels them, updates the priority, etc. Most steps in the -/// image pipeline are represented using Operation to take advantage of these features. -/// -/// - warning: Must be thread-confined! -class AsyncTask: AsyncTaskSubscriptionDelegate { - - private struct Subscription { - let closure: (Event) -> Void - weak var subscriber: AnyObject? - var priority: TaskPriority - } - - // In most situations, especially for intermediate tasks, the almost almost - // only one subscription. - private var inlineSubscription: Subscription? - private var subscriptions: [TaskSubscriptionKey: Subscription]? // Create lazily - private var nextSubscriptionKey = 0 - - var subscribers: [AnyObject] { - var output = [AnyObject?]() - output.append(inlineSubscription?.subscriber) - subscriptions?.values.forEach { output.append($0.subscriber) } - return output.compactMap { $0 } - } - - /// Returns `true` if the task was either cancelled, or was completed. - private(set) var isDisposed = false - private var isStarted = false - - /// Gets called when the task is either cancelled, or was completed. - var onDisposed: (() -> Void)? - - var onCancelled: (() -> Void)? - - var priority: TaskPriority = .normal { - didSet { - guard oldValue != priority else { return } - operation?.queuePriority = priority.queuePriority - dependency?.setPriority(priority) - dependency2?.setPriority(priority) - } - } - - /// A task might have a dependency. The task automatically unsubscribes - /// from the dependency when it gets cancelled, and also updates the - /// priority of the subscription to the dependency when its own - /// priority is updated. - var dependency: TaskSubscription? { - didSet { - dependency?.setPriority(priority) - } - } - - // The tasks only ever need up to 2 dependencies and this code is much faster - // than creating an array. - var dependency2: TaskSubscription? { - didSet { - dependency2?.setPriority(priority) - } - } - - weak var operation: Foundation.Operation? { - didSet { - guard priority != .normal else { return } - operation?.queuePriority = priority.queuePriority - } - } - - /// Publishes the results of the task. - var publisher: Publisher { Publisher(task: self) } - - #if TRACK_ALLOCATIONS - deinit { - Allocations.decrement("AsyncTask") - } - - init() { - Allocations.increment("AsyncTask") - } - #endif - - /// Override this to start image task. Only gets called once. - func start() {} - - // MARK: - Managing Observers - - /// - notes: Returns `nil` if the task was disposed. - private func subscribe(priority: TaskPriority = .normal, subscriber: AnyObject? = nil, _ closure: @escaping (Event) -> Void) -> TaskSubscription? { - guard !isDisposed else { return nil } - - let subscriptionKey = nextSubscriptionKey - nextSubscriptionKey += 1 - let subscription = TaskSubscription(task: self, key: subscriptionKey) - - if subscriptionKey == 0 { - inlineSubscription = Subscription(closure: closure, subscriber: subscriber, priority: priority) - } else { - if subscriptions == nil { subscriptions = [:] } - subscriptions![subscriptionKey] = Subscription(closure: closure, subscriber: subscriber, priority: priority) - } - - updatePriority(suggestedPriority: priority) - - if !isStarted { - isStarted = true - start() - } - - // The task may have been completed synchronously by `starter`. - guard !isDisposed else { return nil } - - return subscription - } - - // MARK: - TaskSubscriptionDelegate - - fileprivate func setPriority(_ priority: TaskPriority, for key: TaskSubscriptionKey) { - guard !isDisposed else { return } - - if key == 0 { - inlineSubscription?.priority = priority - } else { - subscriptions![key]?.priority = priority - } - updatePriority(suggestedPriority: priority) - } - - fileprivate func unsubsribe(key: TaskSubscriptionKey) { - if key == 0 { - guard inlineSubscription != nil else { return } - inlineSubscription = nil - } else { - guard subscriptions!.removeValue(forKey: key) != nil else { return } - } - - guard !isDisposed else { return } - - if inlineSubscription == nil && subscriptions?.isEmpty ?? true { - terminate(reason: .cancelled) - } else { - updatePriority(suggestedPriority: nil) - } - } - - // MARK: - Sending Events - - func send(value: Value, isCompleted: Bool = false) { - send(event: .value(value, isCompleted: isCompleted)) - } - - func send(error: Error) { - send(event: .error(error)) - } - - func send(progress: TaskProgress) { - send(event: .progress(progress)) - } - - private func send(event: Event) { - guard !isDisposed else { return } - - switch event { - case let .value(_, isCompleted): - if isCompleted { - terminate(reason: .finished) - } - case .progress: - break // Simply send the event - case .error: - terminate(reason: .finished) - } - - inlineSubscription?.closure(event) - if let subscriptions = subscriptions { - for subscription in subscriptions.values { - subscription.closure(event) - } - } - } - - // MARK: - Termination - - private enum TerminationReason { - case finished, cancelled - } - - private func terminate(reason: TerminationReason) { - guard !isDisposed else { return } - isDisposed = true - - if reason == .cancelled { - operation?.cancel() - dependency?.unsubscribe() - dependency2?.unsubscribe() - onCancelled?() - } - onDisposed?() - } - - // MARK: - Priority - - private func updatePriority(suggestedPriority: TaskPriority?) { - if let suggestedPriority = suggestedPriority, suggestedPriority >= priority { - // No need to recompute, won't go higher than that - priority = suggestedPriority - return - } - - var newPriority = inlineSubscription?.priority - // Same as subscriptions.map { $0?.priority }.max() but without allocating - // any memory for redundant arrays - if let subscriptions = subscriptions { - for subscription in subscriptions.values { - if newPriority == nil { - newPriority = subscription.priority - } else if subscription.priority > newPriority! { - newPriority = subscription.priority - } - } - } - self.priority = newPriority ?? .normal - } -} - -// MARK: - AsyncTask (Publisher) - -extension AsyncTask { - /// Publishes the results of the task. - struct Publisher { - fileprivate let task: AsyncTask - - /// Attaches the subscriber to the task. - /// - notes: Returns `nil` if the task is already disposed. - func subscribe(priority: TaskPriority = .normal, subscriber: AnyObject? = nil, _ closure: @escaping (Event) -> Void) -> TaskSubscription? { - task.subscribe(priority: priority, subscriber: subscriber, closure) - } - - /// Attaches the subscriber to the task. Automatically forwards progress - /// andd error events to the given task. - /// - notes: Returns `nil` if the task is already disposed. - func subscribe(_ task: AsyncTask, onValue: @escaping (Value, Bool) -> Void) -> TaskSubscription? { - subscribe(subscriber: task) { [weak task] event in - guard let task = task else { return } - switch event { - case let .value(value, isCompleted): - onValue(value, isCompleted) - case let .progress(progress): - task.send(progress: progress) - case let .error(error): - task.send(error: error) - } - } - } - } -} - -struct TaskProgress: Hashable { - let completed: Int64 - let total: Int64 -} - -enum TaskPriority: Int, Comparable { - case veryLow = 0, low, normal, high, veryHigh - - var queuePriority: Operation.QueuePriority { - switch self { - case .veryLow: return .veryLow - case .low: return .low - case .normal: return .normal - case .high: return .high - case .veryHigh: return .veryHigh - } - } - - static func < (lhs: TaskPriority, rhs: TaskPriority) -> Bool { - lhs.rawValue < rhs.rawValue - } -} - -// MARK: - AsyncTask.Event { -extension AsyncTask { - enum Event { - case value(Value, isCompleted: Bool) - case progress(TaskProgress) - case error(Error) - - var isCompleted: Bool { - switch self { - case let .value(_, isCompleted): return isCompleted - case .progress: return false - case .error: return true - } - } - } -} - -extension AsyncTask.Event: Equatable where Value: Equatable, Error: Equatable {} - -// MARK: - TaskSubscription - -/// Represents a subscription to a task. The observer must retain a strong -/// reference to a subscription. -struct TaskSubscription { - private let task: AsyncTaskSubscriptionDelegate - private let key: TaskSubscriptionKey - - fileprivate init(task: AsyncTaskSubscriptionDelegate, key: TaskSubscriptionKey) { - self.task = task - self.key = key - } - - /// Removes the subscription from the task. The observer won't receive any - /// more events from the task. - /// - /// If there are no more subscriptions attached to the task, the task gets - /// cancelled along with its dependencies. The cancelled task is - /// marked as disposed. - func unsubscribe() { - task.unsubsribe(key: key) - } - - /// Updates the priority of the subscription. The priority of the task is - /// calculated as the maximum priority out of all of its subscription. When - /// the priority of the task is updated, the priority of a dependency also is. - /// - /// - note: The priority also automatically gets updated when the subscription - /// is removed from the task. - func setPriority(_ priority: TaskPriority) { - task.setPriority(priority, for: key) - } -} - -private protocol AsyncTaskSubscriptionDelegate: AnyObject { - func unsubsribe(key: TaskSubscriptionKey) - func setPriority(_ priority: TaskPriority, for observer: TaskSubscriptionKey) -} - -private typealias TaskSubscriptionKey = Int - -// MARK: - TaskPool - -/// Contains the tasks which haven't completed yet. -final class TaskPool { - private let isCoalescingEnabled: Bool - private var map = [Key: AsyncTask]() - - init(_ isCoalescingEnabled: Bool) { - self.isCoalescingEnabled = isCoalescingEnabled - } - - /// Creates a task with the given key. If there is an outstanding task with - /// the given key in the pool, the existing task is returned. Tasks are - /// automatically removed from the pool when they are disposed. - func publisherForKey(_ key: @autoclosure () -> Key, _ make: () -> AsyncTask) -> AsyncTask.Publisher { - guard isCoalescingEnabled else { - return make().publisher - } - let key = key() - if let task = map[key] { - return task.publisher - } - let task = make() - map[key] = task - task.onDisposed = { [weak self] in - self?.map[key] = nil - } - return task.publisher - } -} diff --git a/Pods/Nuke/Sources/Core/Tasks/ImagePipelineTask.swift b/Pods/Nuke/Sources/Core/Tasks/ImagePipelineTask.swift deleted file mode 100644 index 6dc145162..000000000 --- a/Pods/Nuke/Sources/Core/Tasks/ImagePipelineTask.swift +++ /dev/null @@ -1,43 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -// Each task holds a strong reference to the pipeline. This is by design. The -// user does not need to hold a strong reference to the pipeline. -class ImagePipelineTask: AsyncTask { - let pipeline: ImagePipeline - // A canonical request representing the unit work performed by the task. - let request: ImageRequest - - init(_ pipeline: ImagePipeline, _ request: ImageRequest) { - self.pipeline = pipeline - self.request = request - } - - /// Executes work on the pipeline synchronization queue. - func async(_ work: @escaping () -> Void) { - pipeline.queue.async(execute: work) - } -} - -// Returns all image tasks subscribed to the current pipeline task. -// A suboptimal approach just to make the new DiskCachPolicy.automatic work. -protocol ImageTaskSubscribers { - var imageTasks: [ImageTask] { get } -} - -extension ImageTask: ImageTaskSubscribers { - var imageTasks: [ImageTask] { - [self] - } -} - -extension ImagePipelineTask: ImageTaskSubscribers { - var imageTasks: [ImageTask] { - subscribers.flatMap { subscribers -> [ImageTask] in - (subscribers as? ImageTaskSubscribers)?.imageTasks ?? [] - } - } -} diff --git a/Pods/Nuke/Sources/Core/Tasks/OperationTask.swift b/Pods/Nuke/Sources/Core/Tasks/OperationTask.swift deleted file mode 100644 index 5a7815261..000000000 --- a/Pods/Nuke/Sources/Core/Tasks/OperationTask.swift +++ /dev/null @@ -1,34 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// A one-shot task for performing a single () -> T function. -final class OperationTask: AsyncTask { - private let pipeline: ImagePipeline - private let queue: OperationQueue - private let process: () -> T? - - init(_ pipeline: ImagePipeline, _ queue: OperationQueue, _ process: @escaping () -> T?) { - self.pipeline = pipeline - self.queue = queue - self.process = process - } - - override func start() { - operation = queue.add { [weak self] in - guard let self = self else { return } - let output = self.process() - self.pipeline.queue.async { - guard let output = output else { - self.send(error: Error()) - return - } - self.send(value: output, isCompleted: true) - } - } - } - - struct Error: Swift.Error {} -} diff --git a/Pods/Nuke/Sources/Core/Tasks/TaskFetchDecodedImage.swift b/Pods/Nuke/Sources/Core/Tasks/TaskFetchDecodedImage.swift deleted file mode 100644 index 8788be4d1..000000000 --- a/Pods/Nuke/Sources/Core/Tasks/TaskFetchDecodedImage.swift +++ /dev/null @@ -1,86 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// Receives data from ``TaskLoadImageData` and decodes it as it arrives. -final class TaskFetchDecodedImage: ImagePipelineTask { - private var decoder: ImageDecoding? - - override func start() { - dependency = pipeline.makeTaskFetchOriginalImageData(for: request).subscribe(self) { [weak self] in - self?.didReceiveData($0.0, urlResponse: $0.1, isCompleted: $1) - } - } - - /// Receiving data from `OriginalDataTask`. - private func didReceiveData(_ data: Data, urlResponse: URLResponse?, isCompleted: Bool) { - guard isCompleted || pipeline.configuration.isProgressiveDecodingEnabled else { - return - } - - if !isCompleted && operation != nil { - return // Back pressure - already decoding another progressive data chunk - } - - if isCompleted { - operation?.cancel() // Cancel any potential pending progressive decoding tasks - } - - // Sanity check - guard !data.isEmpty else { - if isCompleted { - send(error: .decodingFailed) - } - return - } - - guard let decoder = decoder(data: data, urlResponse: urlResponse, isCompleted: isCompleted) else { - if isCompleted { - send(error: .decodingFailed) - } // Try again when more data is downloaded. - return - } - - // Fast-track default decoders, most work is already done during - // initialization anyway. - let decode = { - signpost(log, "DecodeImageData", isCompleted ? "FinalImage" : "ProgressiveImage") { - decoder.decode(data, urlResponse: urlResponse, isCompleted: isCompleted, cacheType: nil) - } - } - if !decoder.isAsynchronous { - self.sendResponse(decode(), isCompleted: isCompleted) - } else { - operation = pipeline.configuration.imageDecodingQueue.add { [weak self] in - guard let self = self else { return } - - let response = decode() - self.async { - self.sendResponse(response, isCompleted: isCompleted) - } - } - } - } - - private func sendResponse(_ response: ImageResponse?, isCompleted: Bool) { - if let response = response { - send(value: response, isCompleted: isCompleted) - } else if isCompleted { - send(error: .decodingFailed) - } - } - - // Lazily creates decoding for task - private func decoder(data: Data, urlResponse: URLResponse?, isCompleted: Bool) -> ImageDecoding? { - // Return the existing processor in case it has already been created. - if let decoder = self.decoder { - return decoder - } - let context = ImageDecodingContext(request: request, data: data, isCompleted: isCompleted, urlResponse: urlResponse) - let decoder = pipeline.delegate.imageDecoder(for: context, pipeline: pipeline) - self.decoder = decoder - return decoder - } -} diff --git a/Pods/Nuke/Sources/Core/Tasks/TaskFetchOriginalImageData.swift b/Pods/Nuke/Sources/Core/Tasks/TaskFetchOriginalImageData.swift deleted file mode 100644 index 42fe58847..000000000 --- a/Pods/Nuke/Sources/Core/Tasks/TaskFetchOriginalImageData.swift +++ /dev/null @@ -1,167 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// Fetches original image from the data loader (`DataLoading`) and stores it -/// in the disk cache (`DataCaching`). -final class TaskFetchOriginalImageData: ImagePipelineTask<(Data, URLResponse?)> { - private var urlResponse: URLResponse? - private var resumableData: ResumableData? - private var resumedDataCount: Int64 = 0 - private lazy var data = Data() - - override func start() { - guard let urlRequest = request.urlRequest else { - self.send(error: .dataLoadingFailed(URLError(.badURL))) - return - } - - if let rateLimiter = pipeline.rateLimiter { - // Rate limiter is synchronized on pipeline's queue. Delayed work is - // executed asynchronously also on the same queue. - rateLimiter.execute { [weak self] in - guard let self = self, !self.isDisposed else { - return false - } - self.loadData(urlRequest: urlRequest) - return true - } - } else { // Start loading immediately. - loadData(urlRequest: urlRequest) - } - } - - private func loadData(urlRequest: URLRequest) { - // Wrap data request in an operation to limit the maximum number of - // concurrent data tasks. - operation = pipeline.configuration.dataLoadingQueue.add { [weak self] finish in - guard let self = self else { - return finish() - } - self.async { - self.loadData(urlRequest: urlRequest, finish: finish) - } - } - } - - // This methods gets called inside data loading operation (Operation). - private func loadData(urlRequest: URLRequest, finish: @escaping () -> Void) { - guard !isDisposed else { - return finish() - } - // Read and remove resumable data from cache (we're going to insert it - // back in the cache if the request fails to complete again). - var urlRequest = urlRequest - if pipeline.configuration.isResumableDataEnabled, - let resumableData = ResumableDataStorage.shared.removeResumableData(for: request, pipeline: pipeline) { - // Update headers to add "Range" and "If-Range" headers - resumableData.resume(request: &urlRequest) - // Save resumable data to be used later (before using it, the pipeline - // verifies that the server returns "206 Partial Content") - self.resumableData = resumableData - } - - signpost(log, self, "LoadImageData", .begin, "URL: \(urlRequest.url?.absoluteString ?? ""), resumable data: \(Formatter.bytes(resumableData?.data.count ?? 0))") - - let dataLoader = pipeline.delegate.dataLoader(for: request, pipeline: pipeline) - let dataTask = dataLoader.loadData(with: urlRequest, didReceiveData: { [weak self] data, response in - guard let self = self else { return } - self.async { - self.dataTask(didReceiveData: data, response: response) - } - }, completion: { [weak self] error in - finish() // Finish the operation! - guard let self = self else { return } - signpost(log, self, "LoadImageData", .end, "Finished with size \(Formatter.bytes(self.data.count))") - self.async { - self.dataTaskDidFinish(error: error) - } - }) - - onCancelled = { [weak self] in - guard let self = self else { return } - - signpost(log, self, "LoadImageData", .end, "Cancelled") - dataTask.cancel() - finish() // Finish the operation! - - self.tryToSaveResumableData() - } - } - - private func dataTask(didReceiveData chunk: Data, response: URLResponse) { - // Check if this is the first response. - if urlResponse == nil { - // See if the server confirmed that the resumable data can be used - if let resumableData = resumableData, ResumableData.isResumedResponse(response) { - data = resumableData.data - resumedDataCount = Int64(resumableData.data.count) - signpost(log, self, "LoadImageData", .event, "Resumed with data \(Formatter.bytes(resumedDataCount))") - } - resumableData = nil // Get rid of resumable data - } - - // Append data and save response - data.append(chunk) - urlResponse = response - - let progress = TaskProgress(completed: Int64(data.count), total: response.expectedContentLength + resumedDataCount) - send(progress: progress) - - // If the image hasn't been fully loaded yet, give decoder a change - // to decode the data chunk. In case `expectedContentLength` is `0`, - // progressive decoding doesn't run. - guard data.count < response.expectedContentLength else { return } - - send(value: (data, response)) - } - - private func dataTaskDidFinish(error: Swift.Error?) { - if let error = error { - tryToSaveResumableData() - send(error: .dataLoadingFailed(error)) - return - } - - // Sanity check, should never happen in practice - guard !data.isEmpty else { - send(error: .dataLoadingFailed(URLError(.unknown, userInfo: [:]))) - return - } - - // Store in data cache - if let dataCache = pipeline.delegate.dataCache(for: request, pipeline: pipeline), shouldStoreDataInDiskCache() { - let key = pipeline.cache.makeDataCacheKey(for: request) - pipeline.delegate.willCache(data: data, image: nil, for: request, pipeline: pipeline) { - guard let data = $0 else { return } - // Important! Storing directly ignoring `ImageRequest.Options`. - dataCache.storeData(data, for: key) - } - } - - send(value: (data, urlResponse), isCompleted: true) - } - - private func shouldStoreDataInDiskCache() -> Bool { - guard request.url?.isCacheable ?? false else { - return false - } - let policy = pipeline.configuration.dataCachePolicy - guard imageTasks.contains(where: { !$0.request.options.contains(.disableDiskCacheWrites) }) else { - return false - } - return policy == .storeOriginalData || policy == .storeAll || (policy == .automatic && imageTasks.contains { $0.request.processors.isEmpty }) - } - - private func tryToSaveResumableData() { - // Try to save resumable data in case the task was cancelled - // (`URLError.cancelled`) or failed to complete with other error. - if pipeline.configuration.isResumableDataEnabled, - let response = urlResponse, !data.isEmpty, - let resumableData = ResumableData(response: response, data: data) { - ResumableDataStorage.shared.storeResumableData(resumableData, for: request, pipeline: pipeline) - } - } -} diff --git a/Pods/Nuke/Sources/Core/Tasks/TaskFetchWithPublisher.swift b/Pods/Nuke/Sources/Core/Tasks/TaskFetchWithPublisher.swift deleted file mode 100644 index 3fce2f35f..000000000 --- a/Pods/Nuke/Sources/Core/Tasks/TaskFetchWithPublisher.swift +++ /dev/null @@ -1,61 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// Fetches data using the publisher provided with the request. -/// Unlike `TaskFetchOriginalImageData`, there is no resumable data involved. -final class TaskFetchWithPublisher: ImagePipelineTask<(Data, URLResponse?)> { - private lazy var data = Data() - - override func start() { - // Wrap data request in an operation to limit the maximum number of - // concurrent data tasks. - operation = pipeline.configuration.dataLoadingQueue.add { [weak self] finish in - guard let self = self else { - return finish() - } - self.async { - self.loadData(finish: finish) - } - } - } - - // This methods gets called inside data loading operation (Operation). - private func loadData(finish: @escaping () -> Void) { - guard !isDisposed else { - return finish() - } - - guard let publisher = request.publisher else { - self.send(error: .dataLoadingFailed(URLError(.unknown, userInfo: [:]))) - return assertionFailure("This should never happen") - } - - let cancellable = publisher.sink(receiveCompletion: { [weak self] result in - finish() // Finish the operation! - guard let self = self else { return } - self.async { - switch result { - case .finished: - guard !self.data.isEmpty else { - return self.send(error: .dataLoadingFailed(URLError(.resourceUnavailable, userInfo: [:]))) - } - self.send(value: (self.data, nil), isCompleted: true) - case .failure(let error): - self.send(error: .dataLoadingFailed(error)) - } - } - }, receiveValue: { [weak self] data in - guard let self = self else { return } - self.async { - self.data.append(data) - } - }) - - onCancelled = { - cancellable.cancel() - } - } -} diff --git a/Pods/Nuke/Sources/Core/Tasks/TaskLoadData.swift b/Pods/Nuke/Sources/Core/Tasks/TaskLoadData.swift deleted file mode 100644 index 770430559..000000000 --- a/Pods/Nuke/Sources/Core/Tasks/TaskLoadData.swift +++ /dev/null @@ -1,56 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// Wrapper for tasks created by `loadData` calls. -final class TaskLoadData: ImagePipelineTask<(Data, URLResponse?)> { - override func start() { - guard let dataCache = pipeline.delegate.dataCache(for: request, pipeline: pipeline), - !request.options.contains(.disableDiskCacheReads) else { - loadData() - return - } - operation = pipeline.configuration.dataCachingQueue.add { [weak self] in - self?.getCachedData(dataCache: dataCache) - } - } - - private func getCachedData(dataCache: DataCaching) { - let data = signpost(log, "ReadCachedImageData") { - pipeline.cache.cachedData(for: request) - } - async { - if let data = data { - self.send(value: (data, nil), isCompleted: true) - } else { - self.loadData() - } - } - } - - private func loadData() { - guard !request.options.contains(.returnCacheDataDontLoad) else { - // Same error that URLSession produces when .returnCacheDataDontLoad is specified and the - // data is no found in the cache. - let error = NSError(domain: URLError.errorDomain, code: URLError.resourceUnavailable.rawValue, userInfo: nil) - return send(error: .dataLoadingFailed(error)) - } - - let request = self.request.withProcessors([]) - dependency = pipeline.makeTaskFetchOriginalImageData(for: request).subscribe(self) { [weak self] in - self?.didReceiveData($0.0, urlResponse: $0.1, isCompleted: $1) - } - } - - private func didReceiveData(_ data: Data, urlResponse: URLResponse?, isCompleted: Bool) { - // Sanity check, should never happen in practice - guard !data.isEmpty else { - send(error: .dataLoadingFailed(URLError(.unknown, userInfo: [:]))) - return - } - - send(value: (data, urlResponse), isCompleted: isCompleted) - } -} diff --git a/Pods/Nuke/Sources/Core/Tasks/TaskLoadImage.swift b/Pods/Nuke/Sources/Core/Tasks/TaskLoadImage.swift deleted file mode 100644 index cb7a46ebd..000000000 --- a/Pods/Nuke/Sources/Core/Tasks/TaskLoadImage.swift +++ /dev/null @@ -1,279 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// Wrapper for tasks created by `loadData` calls. -/// -/// Performs all the quick cache lookups and also manages image processing. -/// The coalesing for image processing is implemented on demand (extends the -/// scenarios in which coalescing can kick in). -final class TaskLoadImage: ImagePipelineTask { - override func start() { - // Memory cache lookup - if let image = pipeline.cache[request] { - let response = ImageResponse(container: image, cacheType: .memory) - send(value: response, isCompleted: !image.isPreview) - if !image.isPreview { - return // Already got the result! - } - } - - // Disk cache lookup - if let dataCache = pipeline.delegate.dataCache(for: request, pipeline: pipeline), - !request.options.contains(.disableDiskCacheReads) { - operation = pipeline.configuration.dataCachingQueue.add { [weak self] in - self?.getCachedData(dataCache: dataCache) - } - return - } - - // Fetch image - fetchImage() - } - - // MARK: Disk Cache Lookup - - private func getCachedData(dataCache: DataCaching) { - let data = signpost(log, "ReadCachedProcessedImageData") { - pipeline.cache.cachedData(for: request) - } - async { - if let data = data { - self.didReceiveCachedData(data) - } else { - self.fetchImage() - } - } - } - - private func didReceiveCachedData(_ data: Data) { - guard !isDisposed else { return } - - let context = ImageDecodingContext(request: request, data: data, isCompleted: true, urlResponse: nil) - guard let decoder = pipeline.delegate.imageDecoder(for: context, pipeline: pipeline) else { - // This shouldn't happen in practice unless encoder/decoder pair - // for data cache is misconfigured. - return fetchImage() - } - - let decode = { - signpost(log, "DecodeCachedProcessedImageData") { - decoder.decode(data, urlResponse: nil, isCompleted: true, cacheType: .disk) - } - } - if !decoder.isAsynchronous { - didDecodeCachedData(decode()) - } else { - operation = pipeline.configuration.imageDecodingQueue.add { [weak self] in - guard let self = self else { return } - let response = decode() - self.async { - self.didDecodeCachedData(response) - } - } - } - } - - private func didDecodeCachedData(_ response: ImageResponse?) { - if let response = response { - decompressImage(response, isCompleted: true, isFromDiskCache: true) - } else { - fetchImage() - } - } - - // MARK: Fetch Image - - private func fetchImage() { - // Memory cache lookup for intermediate images. - // For example, for processors ["p1", "p2"], check only ["p1"]. - // Then apply the remaining processors. - // - // We are not performing data cache lookup for intermediate requests - // for now (because it's not free), but maybe adding an option would be worth it. - // You can emulate this behavior by manually creating intermediate requests. - if request.processors.count > 1 { - var processors = request.processors - var remaining: [ImageProcessing] = [] - if let last = processors.popLast() { - remaining.append(last) - } - while !processors.isEmpty { - if let image = pipeline.cache[request.withProcessors(processors)] { - let response = ImageResponse(container: image, cacheType: .memory) - process(response, isCompleted: !image.isPreview, processors: remaining) - if !image.isPreview { - return // Nothing left to do, just apply the processors - } else { - break - } - } - if let last = processors.popLast() { - remaining.append(last) - } - } - } - - let processors: [ImageProcessing] = request.processors.reversed() - // The only remaining choice is to fetch the image - if request.options.contains(.returnCacheDataDontLoad) { - // Same error that URLSession produces when .returnCacheDataDontLoad - // is specified and the data is no found in the cache. - let error = NSError(domain: URLError.errorDomain, code: URLError.resourceUnavailable.rawValue, userInfo: nil) - send(error: .dataLoadingFailed(error)) - } else if request.processors.isEmpty { - dependency = pipeline.makeTaskFetchDecodedImage(for: request).subscribe(self) { [weak self] in - self?.process($0, isCompleted: $1, processors: processors) - } - } else { - let request = self.request.withProcessors([]) - dependency = pipeline.makeTaskLoadImage(for: request).subscribe(self) { [weak self] in - self?.process($0, isCompleted: $1, processors: processors) - } - } - } - - // MARK: Processing - - /// - parameter processors: Remaining processors to by applied - private func process(_ response: ImageResponse, isCompleted: Bool, processors: [ImageProcessing]) { - guard !(ImagePipeline.Configuration._isAnimatedImageDataEnabled && response.image._animatedImageData != nil) else { - self.decompressImage(response, isCompleted: isCompleted) - return - } - - if isCompleted { - dependency2?.unsubscribe() // Cancel any potential pending progressive processing tasks - } else if dependency2 != nil { - return // Back pressure - already processing another progressive image - } - - _process(response, isCompleted: isCompleted, processors: processors) - } - - /// - parameter processors: Remaining processors to by applied - private func _process(_ response: ImageResponse, isCompleted: Bool, processors: [ImageProcessing]) { - guard let processor = processors.last else { - self.decompressImage(response, isCompleted: isCompleted) - return - } - - let key = ImageProcessingKey(image: response, processor: processor) - dependency2 = pipeline.makeTaskProcessImage(key: key, process: { [request] in - let context = ImageProcessingContext(request: request, response: response, isFinal: isCompleted) - return signpost(log, "ProcessImage", isCompleted ? "FinalImage" : "ProgressiveImage") { - response.map { processor.process($0, context: context) } - } - }).subscribe(priority: priority) { [weak self] event in - guard let self = self else { return } - if event.isCompleted { - self.dependency2 = nil - } - switch event { - case .value(let response, _): - self._process(response, isCompleted: isCompleted, processors: processors.dropLast()) - case .error: - if isCompleted { - self.send(error: .processingFailed(processor)) - } - case .progress: - break // Do nothing (Not reported by OperationTask) - } - } - } - - // MARK: Decompression - - #if os(macOS) - private func decompressImage(_ response: ImageResponse, isCompleted: Bool, isFromDiskCache: Bool = false) { - storeImageInCaches(response, isFromDiskCache: isFromDiskCache) - send(value: response, isCompleted: isCompleted) // There is no decompression on macOS - } - #else - private func decompressImage(_ response: ImageResponse, isCompleted: Bool, isFromDiskCache: Bool = false) { - guard isDecompressionNeeded(for: response) else { - storeImageInCaches(response, isFromDiskCache: isFromDiskCache) - send(value: response, isCompleted: isCompleted) - return - } - - if isCompleted { - operation?.cancel() // Cancel any potential pending progressive decompression tasks - } else if operation != nil { - return // Back-pressure: we are receiving data too fast - } - - guard !isDisposed else { return } - - operation = pipeline.configuration.imageDecompressingQueue.add { [weak self] in - guard let self = self else { return } - - let response = signpost(log, "DecompressImage", isCompleted ? "FinalImage" : "ProgressiveImage") { - response.map { $0.map(ImageDecompression.decompress(image:)) } ?? response - } - - self.async { - self.storeImageInCaches(response, isFromDiskCache: isFromDiskCache) - self.send(value: response, isCompleted: isCompleted) - } - } - } - - private func isDecompressionNeeded(for response: ImageResponse) -> Bool { - return pipeline.configuration.isDecompressionEnabled && - ImageDecompression.isDecompressionNeeded(for: response.image) ?? false && - !(ImagePipeline.Configuration._isAnimatedImageDataEnabled && response.image._animatedImageData != nil) - } - #endif - - // MARK: Caching - - private func storeImageInCaches(_ response: ImageResponse, isFromDiskCache: Bool) { - guard subscribers.contains(where: { $0 is ImageTask }) else { - return // Only store for direct requests - } - // Memory cache (ImageCaching) - pipeline.cache[request] = response.container - // Disk cache (DataCaching) - if !isFromDiskCache { - storeImageInDataCache(response) - } - } - - private func storeImageInDataCache(_ response: ImageResponse) { - guard !response.container.isPreview else { - return - } - guard let dataCache = pipeline.delegate.dataCache(for: request, pipeline: pipeline), shouldStoreFinalImageInDiskCache() else { - return - } - let context = ImageEncodingContext(request: request, image: response.image, urlResponse: response.urlResponse) - let encoder = pipeline.delegate.imageEncoder(for: context, pipeline: pipeline) - let key = pipeline.cache.makeDataCacheKey(for: request) - pipeline.configuration.imageEncodingQueue.addOperation { [weak pipeline, request] in - guard let pipeline = pipeline else { return } - let encodedData = signpost(log, "EncodeImage") { - encoder.encode(response.container, context: context) - } - guard let data = encodedData else { return } - pipeline.delegate.willCache(data: data, image: response.container, for: request, pipeline: pipeline) { - guard let data = $0 else { return } - // Important! Storing directly ignoring `ImageRequest.Options`. - dataCache.storeData(data, for: key) // This is instant, writes are async - } - } - if pipeline.configuration.debugIsSyncImageEncoding { // Only for debug - pipeline.configuration.imageEncodingQueue.waitUntilAllOperationsAreFinished() - } - } - - private func shouldStoreFinalImageInDiskCache() -> Bool { - guard request.url?.isCacheable ?? false else { - return false - } - let policy = pipeline.configuration.dataCachePolicy - return ((policy == .automatic || policy == .storeAll) && !request.processors.isEmpty) || policy == .storeEncodedImages - } -} diff --git a/Pods/Nuke/Sources/Internal/AVDataAsset.swift b/Pods/Nuke/Sources/Internal/AVDataAsset.swift deleted file mode 100644 index cfe6a571d..000000000 --- a/Pods/Nuke/Sources/Internal/AVDataAsset.swift +++ /dev/null @@ -1,75 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import AVKit -import Foundation - -#if !os(watchOS) - -private extension AssetType { - var avFileType: AVFileType? { - switch self { - case .mp4: return .mp4 - case .m4v: return .m4v - default: return nil - } - } -} - -// This class keeps strong pointer to DataAssetResourceLoader -final class AVDataAsset: AVURLAsset { - private let resourceLoaderDelegate: DataAssetResourceLoader - - init(data: Data, type: AssetType?) { - self.resourceLoaderDelegate = DataAssetResourceLoader( - data: data, - contentType: type?.avFileType?.rawValue ?? AVFileType.mp4.rawValue - ) - - // The URL is irrelevant - let url = URL(string: "in-memory-data://\(UUID().uuidString)") ?? URL(fileURLWithPath: "/dev/null") - super.init(url: url, options: nil) - - resourceLoader.setDelegate(resourceLoaderDelegate, queue: .global()) - } -} - -// This allows LazyImage to play video from memory. -private final class DataAssetResourceLoader: NSObject, AVAssetResourceLoaderDelegate { - private let data: Data - private let contentType: String - - init(data: Data, contentType: String) { - self.data = data - self.contentType = contentType - } - - // MARK: - DataAssetResourceLoader - - func resourceLoader( - _ resourceLoader: AVAssetResourceLoader, - shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest - ) -> Bool { - if let contentRequest = loadingRequest.contentInformationRequest { - contentRequest.contentType = contentType - contentRequest.contentLength = Int64(data.count) - contentRequest.isByteRangeAccessSupported = true - } - - if let dataRequest = loadingRequest.dataRequest { - if dataRequest.requestsAllDataToEndOfResource { - dataRequest.respond(with: data[dataRequest.requestedOffset...]) - } else { - let range = dataRequest.requestedOffset..<(dataRequest.requestedOffset + Int64(dataRequest.requestedLength)) - dataRequest.respond(with: data[range]) - } - } - - loadingRequest.finishLoading() - - return true - } -} - -#endif diff --git a/Pods/Nuke/Sources/Internal/Allocations.swift b/Pods/Nuke/Sources/Internal/Allocations.swift deleted file mode 100644 index 264bf9d25..000000000 --- a/Pods/Nuke/Sources/Internal/Allocations.swift +++ /dev/null @@ -1,81 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -#if TRACK_ALLOCATIONS -enum Allocations { - static var allocations = [String: Int]() - static var total = 0 - static let lock = NSLock() - static var timer: Timer? - - static let isPrintingEnabled = ProcessInfo.processInfo.environment["NUKE_PRINT_ALL_ALLOCATIONS"] != nil - static let isTimerEnabled = ProcessInfo.processInfo.environment["NUKE_ALLOCATIONS_PERIODIC_LOG"] != nil - - static func increment(_ name: String) { - lock.lock() - defer { lock.unlock() } - - allocations[name, default: 0] += 1 - total += 1 - - if isPrintingEnabled { - debugPrint("Increment \(name): \(allocations[name] ?? 0) Total: \(totalAllocationCount)") - } - - if isTimerEnabled, timer == nil { - timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in - Allocations.printAllocations() - } - } - } - - static var totalAllocationCount: Int { - allocations.values.reduce(0, +) - } - - static func decrement(_ name: String) { - lock.lock() - defer { lock.unlock() } - - allocations[name, default: 0] -= 1 - - let totalAllocationCount = self.totalAllocationCount - - if isPrintingEnabled { - debugPrint("Decrement \(name): \(allocations[name] ?? 0) Total: \(totalAllocationCount)") - } - - if totalAllocationCount == 0 { - _onDeinitAll?() - _onDeinitAll = nil - } - } - - private static var _onDeinitAll: (() -> Void)? - - static func onDeinitAll(_ closure: @escaping () -> Void) { - lock.lock() - defer { lock.unlock() } - - if totalAllocationCount == 0 { - closure() - } else { - _onDeinitAll = closure - } - } - - static func printAllocations() { - lock.lock() - defer { lock.unlock() } - let allocations = self.allocations - .filter { $0.value > 0 } - .map { "\($0.key): \($0.value)" } - .sorted() - .joined(separator: " ") - debugPrint("Current: \(totalAllocationCount) Overall: \(total) \(allocations)") - } -} -#endif diff --git a/Pods/Nuke/Sources/Internal/Combine.swift b/Pods/Nuke/Sources/Internal/Combine.swift deleted file mode 100644 index 703f81dd2..000000000 --- a/Pods/Nuke/Sources/Internal/Combine.swift +++ /dev/null @@ -1,48 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation -import Combine - -final class DataPublisher { - let id: String - private let _sink: (@escaping ((PublisherCompletion) -> Void), @escaping ((Data) -> Void)) -> Cancellable - - @available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) - init(id: String, _ publisher: P) where P.Output == Data { - self.id = id - self._sink = { onCompletion, onValue in - let cancellable = publisher.sink(receiveCompletion: { - switch $0 { - case .finished: onCompletion(.finished) - case .failure(let error): onCompletion(.failure(error)) - } - }, receiveValue: { - onValue($0) - }) - return AnyCancellable(cancellable.cancel) - } - } - - func sink(receiveCompletion: @escaping ((PublisherCompletion) -> Void), receiveValue: @escaping ((Data) -> Void)) -> Cancellable { - _sink(receiveCompletion, receiveValue) - } -} - -private final class AnyCancellable: Cancellable { - let closure: () -> Void - - init(_ closure: @escaping () -> Void) { - self.closure = closure - } - - func cancel() { - closure() - } -} - -enum PublisherCompletion { - case finished - case failure(Error) -} diff --git a/Pods/Nuke/Sources/Internal/Deprecated.swift b/Pods/Nuke/Sources/Internal/Deprecated.swift deleted file mode 100644 index 9b091273c..000000000 --- a/Pods/Nuke/Sources/Internal/Deprecated.swift +++ /dev/null @@ -1,310 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -// Deprecated in 9.4.1 -@available(*, deprecated, message: "Renamed to ImagePrefetcher") -public typealias ImagePreheater = ImagePrefetcher - -public extension ImagePrefetcher { - // Deprecated in 9.4.1 - @available(*, deprecated, message: "Renamed to startPrefetching") - func startPreheating(with urls: [URL]) { - startPrefetching(with: urls) - } - - // Deprecated in 9.4.1 - @available(*, deprecated, message: "Renamed to startPrefetching") - func startPreheating(with requests: [ImageRequest]) { - startPrefetching(with: requests) - } - - // Deprecated in 9.4.1 - @available(*, deprecated, message: "Renamed to stopPrefetching") - func stopPreheating(with urls: [URL]) { - stopPrefetching(with: urls) - } - - // Deprecated in 9.4.1 - @available(*, deprecated, message: "Renamed to stopPrefetching") - func stopPreheating(with requests: [ImageRequest]) { - stopPrefetching(with: requests) - } - - // Deprecated in 9.4.1 - @available(*, deprecated, message: "Renamed to stopPrefetching") - func stopPreheating() { - stopPrefetching() - } -} - -public extension ImagePipeline { - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Use pipeline.cache[url] instead") - func cachedImage(for url: URL) -> ImageContainer? { - cachedImage(for: ImageRequest(url: url)) - } - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Use pipeline.cache[request] instead") - func cachedImage(for request: ImageRequest) -> ImageContainer? { - cache[request] - } - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "If needed, use pipeline.cache.makeDataCacheKey(for:) instead. For original image data, remove the processors from the request. In general, there should be no need to create the keys manually anymore.") - func cacheKey(for request: ImageRequest, item: DataCacheItem) -> String { - switch item { - case .originalImageData: - var request = request - request.processors = [] - return request.makeDataCacheKey() - case .finalImage: return request.makeDataCacheKey() - } - } - - @available(*, deprecated, message: "Please use `dataCachePolicy` instead. The recommended policy is the new `.automatic` policy.") - enum DataCacheItem { - /// Same as the new `DataCachePolicy.storeOriginalData` - case originalImageData - /// Same as the new `DataCachePolicy.storeEncodedImages` - case finalImage - } -} - -// Deprecated in 10.0.0 -@available(*, deprecated, message: "Please use ImagePipelineDelegate") -public protocol ImagePipelineObserving { - /// Delivers the events produced by the image tasks started via `loadImage` method. - func pipeline(_ pipeline: ImagePipeline, imageTask: ImageTask, didReceiveEvent event: ImageTaskEvent) -} - -// Deprecated in 10.0.0 -@available(*, deprecated, message: "Please use the new initializer with `ImageRequest.Options`. It offers the same options and more. For more information see the migration guide at https://github.com/kean/Nuke/blob/master/Documentation/Migrations/Nuke%2010%20Migration%20Guide.md#imagerequestoptions.") -public struct ImageRequestOptions { - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use `ImagePipeline.Options` instead: `disableMemoryCacheRead`, `disableMemoryCacheWrite`.") - public struct MemoryCacheOptions { - /// `true` by default. - public var isReadAllowed = true - - /// `true` by default. - public var isWriteAllowed = true - - public init(isReadAllowed: Bool = true, isWriteAllowed: Bool = true) { - self.isReadAllowed = isReadAllowed - self.isWriteAllowed = isWriteAllowed - } - } - - /// `MemoryCacheOptions()` (read allowed, write allowed) by default. - public var memoryCacheOptions: MemoryCacheOptions - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please pass ") - var cacheKey: AnyHashable? - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "This API does nothing starting with Nuke 10. If you found an issue in coalescing, please report it on GitHub and consider disabling it using ImagePipeline.Configuration.") - var loadKey: AnyHashable? - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please pass imageId (`ImageRequest.UserInfoKey.imageIdKey`) in the request `userInfo`. The deprecated API does nothing starting with Nuke 10.") - var filteredURL: AnyHashable? - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please pass the `userInfo` directly to the request. The deprecated API does nothing starting with Nuke 10.") - var userInfo: [AnyHashable: Any] - - public init(memoryCacheOptions: MemoryCacheOptions = .init(), - filteredURL: String? = nil, - cacheKey: AnyHashable? = nil, - loadKey: AnyHashable? = nil, - userInfo: [AnyHashable: Any] = [:]) { - self.memoryCacheOptions = memoryCacheOptions - self.filteredURL = filteredURL - self.cacheKey = cacheKey - self.loadKey = loadKey - self.userInfo = userInfo - } -} - -public extension ImageRequest { - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use the new initializer with `ImageRequest.Options`. It offers the same options and more. For more information see the migration guide at https://github.com/kean/Nuke/blob/master/Documentation/Migrations/Nuke%2010%20Migration%20Guide.md#imagerequestoptions.") - init(url: URL, - processors: [ImageProcessing] = [], - cachePolicy: CachePolicy, - priority: ImageRequest.Priority = .normal, - options: ImageRequestOptions = .init()) { - var userInfo = [UserInfoKey: Any]() - if let filteredURL = options.filteredURL { - userInfo[.imageIdKey] = filteredURL - } - let options = ImageRequest.Options(cachePolicy, options) - self.init(url: url, processors: processors, priority: priority, options: options, userInfo: userInfo) - } - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use the new initializer with `ImageRequest.Options`. It offers the same options and more. For more information see the migration guide at https://github.com/kean/Nuke/blob/master/Documentation/Migrations/Nuke%2010%20Migration%20Guide.md#imagerequestoptions") - init(urlRequest: URLRequest, - processors: [ImageProcessing] = [], - cachePolicy: CachePolicy, - priority: ImageRequest.Priority = .normal, - options: ImageRequestOptions = .init()) { - var userInfo = [UserInfoKey: Any]() - if let filteredURL = options.filteredURL { - userInfo[.imageIdKey] = filteredURL - } - let options = ImageRequest.Options(cachePolicy, options) - self.init(urlRequest: urlRequest, processors: processors, priority: priority, options: options, userInfo: userInfo) - } - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use `ImageRequest.Options` instead, it offers the same options under the same names.") - var cachePolicy: CachePolicy { - get { - if options.contains(.returnCacheDataDontLoad) { - return .returnCacheDataDontLoad - } - if options.contains(.reloadIgnoringCachedData) { - return .reloadIgnoringCachedData - } - return .default - } - set { - options.insert(.init(newValue)) - } - } - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use `ImageRequest.Options` instead, it offers the same options under the same names. And .reloadIgnoringCachedData no longer affects URLCache!") - enum CachePolicy { - case `default` - /// The image should be loaded only from the originating source. - /// - /// If you initialize the request with `URLRequest`, make sure to provide - /// the correct policy in the request too. - @available(*, deprecated, message: "Please use `ImageRequest.Options` instead. This option is available under the same name: .reloadIgnoringCachedData. This option is also no longer affects URLCache!") - case reloadIgnoringCachedData - - /// Use existing cache data and fail if no cached data is available. - @available(*, deprecated, message: "Please use `ImageRequest.Options` instead. This option is available under the same name: .returnCacheDataDontLoad.") - case returnCacheDataDontLoad - } -} - -private extension ImageRequest.Options { - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use `ImageRequest.Options` instead, it offers the same options under the same names.") - init(_ cachePolicy: ImageRequest.CachePolicy) { - switch cachePolicy { - case .default: - self = [] - case .reloadIgnoringCachedData: - self = .reloadIgnoringCachedData - case .returnCacheDataDontLoad: - self = .returnCacheDataDontLoad - } - } - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use `ImageRequest.Options` instead, it offers the same options under the same names.") - init(_ cachePolicy: ImageRequest.CachePolicy, _ oldOptions: ImageRequestOptions) { - var options: ImageRequest.Options = .init(cachePolicy) - if !oldOptions.memoryCacheOptions.isReadAllowed { - options.insert(.disableMemoryCacheReads) - } - if !oldOptions.memoryCacheOptions.isWriteAllowed { - options.insert(.disableMemoryCacheWrites) - } - self = options - } -} - -public extension ImageDecoders.Default { - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use `ImageConatainer.UserInfoKey.scanNumber.") - static let scanNumberKey = "ImageDecoders.Default.scanNumberKey" -} - -public extension ImagePipeline.Configuration { - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use `ImageConatainer` `data` instead. The default image decoder now automatically attaches image data to the ImageContainer type. To learn how to implement animated image support using this new type, see the new Image Formats guide https://github.com/kean/Nuke/blob/9.6.0/Documentation/Guides/image-formats.md. Also see Nuke 10 migration guide https://github.com/kean/Nuke/blob/master/Documentation/Migrations/Nuke%2010%20Migration%20Guide.md.") - static var isAnimatedImageDataEnabled: Bool { - get { _isAnimatedImageDataEnabled } - set { _isAnimatedImageDataEnabled = newValue } - } -} - -private var _animatedImageDataAK = "Nuke.AnimatedImageData.AssociatedKey" - -extension PlatformImage { - // Deprecated in 10.0.0 - /// - warning: Soft-deprecated in Nuke 9.0. - @available(*, deprecated, message: "Please use `ImageConatainer` `data` instead") - public var animatedImageData: Data? { - get { _animatedImageData } - set { _animatedImageData = newValue } - } - - // Deprecated in 10.0.0 - internal var _animatedImageData: Data? { - get { objc_getAssociatedObject(self, &_animatedImageDataAK) as? Data } - set { objc_setAssociatedObject(self, &_animatedImageDataAK, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) } - } -} - -extension ImagePipeline.Configuration { - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Please use `ImageConfiguration.default` and provide a `dataLoader` afterwards or use a closure-based ImagePipeline initializer.") - public init(dataLoader: DataLoading = DataLoader(), imageCache: ImageCaching?) { - self.init(dataLoader: dataLoader) - self.imageCache = imageCache - } - - // Deprecated in 10.0.0 - @available(*, deprecated, message: "Renamed to isTaskCoalescingEnabled") - public var isDeduplicationEnabled: Bool { - get { isTaskCoalescingEnabled } - set { isTaskCoalescingEnabled = newValue } - } - - // Deprecated in 10.0.0 - // There is simply no way to make it work consistently across subsystems. - @available(*, deprecated, message: "Deprecated and will be removed. Please use the new ImageLoadingOptions processors option, or create another way to apply processors by default.") - public var processors: [ImageProcessing] { - get { _processors } - set { _processors = newValue } - } - - /// Inherits some of the pipeline configuration options like processors. - func inheritOptions(_ request: ImageRequest) -> ImageRequest { - guard !_processors.isEmpty, request.processors.isEmpty else { - return request - } - var request = request - request.processors = _processors - return request - } -} - -// Deprecated in 10.0.0 -@available(*, deprecated, message: "Please use ImageDecoders.Default directly") -public typealias ImageDecoder = ImageDecoders.Default - -// Deprecated in 10.0.0 -@available(*, deprecated, message: "Please use ImageEncoders.Default directly") -public typealias ImageEncoder = ImageEncoders.Default - -// Deprecated in 10.5.0 -@available(*, deprecated, message: "Please use AssetType instead") -public typealias ImageType = AssetType - -extension ImageDecoders.Empty { - public init(imageType: AssetType, isProgressive: Bool = false) { - self = .init(assetType: imageType, isProgressive: isProgressive) - } -} diff --git a/Pods/Nuke/Sources/Internal/Extensions.swift b/Pods/Nuke/Sources/Internal/Extensions.swift deleted file mode 100644 index 31f2c925b..000000000 --- a/Pods/Nuke/Sources/Internal/Extensions.swift +++ /dev/null @@ -1,62 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation -import CommonCrypto - -extension String { - /// Calculates SHA1 from the given string and returns its hex representation. - /// - /// ```swift - /// print("http://test.com".sha1) - /// // prints "50334ee0b51600df6397ce93ceed4728c37fee4e" - /// ``` - var sha1: String? { - guard !isEmpty, let input = self.data(using: .utf8) else { - return nil - } - - let hash = input.withUnsafeBytes { (bytes: UnsafeRawBufferPointer) -> [UInt8] in - var hash = [UInt8](repeating: 0, count: Int(CC_SHA1_DIGEST_LENGTH)) - CC_SHA1(bytes.baseAddress, CC_LONG(input.count), &hash) - return hash - } - - return hash.map({ String(format: "%02x", $0) }).joined() - } -} - -extension NSLock { - func sync(_ closure: () -> T) -> T { - lock() - defer { unlock() } - return closure() - } -} - -extension URL { - var isCacheable: Bool { - let scheme = self.scheme - return scheme != "file" && scheme != "data" - } -} - -extension OperationQueue { - convenience init(maxConcurrentCount: Int) { - self.init() - self.maxConcurrentOperationCount = maxConcurrentCount - } -} - -extension ImageRequest.Priority { - var taskPriority: TaskPriority { - switch self { - case .veryLow: return .veryLow - case .low: return .low - case .normal: return .normal - case .high: return .high - case .veryHigh: return .veryHigh - } - } -} diff --git a/Pods/Nuke/Sources/Internal/Graphics.swift b/Pods/Nuke/Sources/Internal/Graphics.swift deleted file mode 100644 index b290a2b29..000000000 --- a/Pods/Nuke/Sources/Internal/Graphics.swift +++ /dev/null @@ -1,332 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -#if os(iOS) || os(tvOS) || os(watchOS) -import UIKit -#endif - -#if os(watchOS) -import ImageIO -import CoreGraphics -import WatchKit -#endif - -#if os(macOS) -import Cocoa -#endif - -extension PlatformImage { - var processed: ImageProcessingExtensions { - ImageProcessingExtensions(image: self) - } -} - -struct ImageProcessingExtensions { - let image: PlatformImage - - func byResizing(to targetSize: CGSize, - contentMode: ImageProcessors.Resize.ContentMode, - upscale: Bool) -> PlatformImage? { - guard let cgImage = image.cgImage else { - return nil - } - #if os(iOS) || os(tvOS) || os(watchOS) - let targetSize = targetSize.rotatedForOrientation(image.imageOrientation) - #endif - let scale = cgImage.size.getScale(targetSize: targetSize, contentMode: contentMode) - guard scale < 1 || upscale else { - return image // The image doesn't require scaling - } - let size = cgImage.size.scaled(by: scale).rounded() - return image.draw(inCanvasWithSize: size) - } - - /// Crops the input image to the given size and resizes it if needed. - /// - note: this method will always upscale. - func byResizingAndCropping(to targetSize: CGSize) -> PlatformImage? { - guard let cgImage = image.cgImage else { - return nil - } - #if os(iOS) || os(tvOS) || os(watchOS) - let targetSize = targetSize.rotatedForOrientation(image.imageOrientation) - #endif - let scale = cgImage.size.getScale(targetSize: targetSize, contentMode: .aspectFill) - let scaledSize = cgImage.size.scaled(by: scale) - let drawRect = scaledSize.centeredInRectWithSize(targetSize) - return image.draw(inCanvasWithSize: targetSize, drawRect: drawRect) - } - - func byDrawingInCircle(border: ImageProcessingOptions.Border?) -> PlatformImage? { - guard let squared = byCroppingToSquare(), let cgImage = squared.cgImage else { - return nil - } - let radius = CGFloat(cgImage.width) // Can use any dimension since image is a square - return squared.processed.byAddingRoundedCorners(radius: radius / 2.0, border: border) - } - - /// Draws an image in square by preserving an aspect ratio and filling the - /// square if needed. If the image is already a square, returns an original image. - func byCroppingToSquare() -> PlatformImage? { - guard let cgImage = image.cgImage else { - return nil - } - - guard cgImage.width != cgImage.height else { - return image // Already a square - } - - let imageSize = cgImage.size - let side = min(cgImage.width, cgImage.height) - let targetSize = CGSize(width: side, height: side) - let cropRect = CGRect(origin: .zero, size: targetSize).offsetBy( - dx: max(0, (imageSize.width - targetSize.width) / 2), - dy: max(0, (imageSize.height - targetSize.height) / 2) - ) - guard let cropped = cgImage.cropping(to: cropRect) else { - return nil - } - return PlatformImage.make(cgImage: cropped, source: image) - } - - /// Adds rounded corners with the given radius to the image. - /// - parameter radius: Radius in pixels. - /// - parameter border: Optional stroke border. - func byAddingRoundedCorners(radius: CGFloat, border: ImageProcessingOptions.Border? = nil) -> PlatformImage? { - guard let cgImage = image.cgImage else { - return nil - } - guard let ctx = CGContext.make(cgImage, size: cgImage.size, alphaInfo: .premultipliedLast) else { - return nil - } - let rect = CGRect(origin: CGPoint.zero, size: cgImage.size) - let path = CGPath(roundedRect: rect, cornerWidth: radius, cornerHeight: radius, transform: nil) - ctx.addPath(path) - ctx.clip() - ctx.draw(cgImage, in: CGRect(origin: CGPoint.zero, size: cgImage.size)) - - if let border = border { - ctx.setStrokeColor(border.color.cgColor) - ctx.addPath(path) - ctx.setLineWidth(border.width) - ctx.strokePath() - } - guard let outputCGImage = ctx.makeImage() else { - return nil - } - return PlatformImage.make(cgImage: outputCGImage, source: image) - } -} - -extension PlatformImage { - /// Draws the image in a `CGContext` in a canvas with the given size using - /// the specified draw rect. - /// - /// For example, if the canvas size is `CGSize(width: 10, height: 10)` and - /// the draw rect is `CGRect(x: -5, y: 0, width: 20, height: 10)` it would - /// draw the input image (which is horizontal based on the known draw rect) - /// in a square by centering it in the canvas. - /// - /// - parameter drawRect: `nil` by default. If `nil` will use the canvas rect. - func draw(inCanvasWithSize canvasSize: CGSize, drawRect: CGRect? = nil) -> PlatformImage? { - guard let cgImage = cgImage else { - return nil - } - guard let ctx = CGContext.make(cgImage, size: canvasSize) else { - return nil - } - ctx.draw(cgImage, in: drawRect ?? CGRect(origin: .zero, size: canvasSize)) - guard let outputCGImage = ctx.makeImage() else { - return nil - } - return PlatformImage.make(cgImage: outputCGImage, source: self) - } - - /// Decompresses the input image by drawing in the the `CGContext`. - func decompressed() -> PlatformImage? { - guard let cgImage = cgImage else { - return nil - } - return draw(inCanvasWithSize: cgImage.size, drawRect: CGRect(origin: .zero, size: cgImage.size)) - } -} - -private extension CGContext { - static func make(_ image: CGImage, size: CGSize, alphaInfo: CGImageAlphaInfo? = nil) -> CGContext? { - let alphaInfo: CGImageAlphaInfo = alphaInfo ?? (image.isOpaque ? .noneSkipLast : .premultipliedLast) - - // Create the context which matches the input image. - if let ctx = CGContext( - data: nil, - width: Int(size.width), - height: Int(size.height), - bitsPerComponent: 8, - bytesPerRow: 0, - space: image.colorSpace ?? CGColorSpaceCreateDeviceRGB(), - bitmapInfo: alphaInfo.rawValue - ) { - return ctx - } - - // In case the combination of parameters (color space, bits per component, etc) - // is nit supported by Core Graphics, switch to default context. - // - Quartz 2D Programming Guide - // - https://github.com/kean/Nuke/issues/35 - // - https://github.com/kean/Nuke/issues/57 - return CGContext( - data: nil, - width: Int(size.width), height: Int(size.height), - bitsPerComponent: 8, - bytesPerRow: 0, - space: CGColorSpaceCreateDeviceRGB(), - bitmapInfo: alphaInfo.rawValue - ) - } -} - -extension CGFloat { - func converted(to unit: ImageProcessingOptions.Unit) -> CGFloat { - switch unit { - case .pixels: return self - case .points: return self * Screen.scale - } - } -} - -extension CGSize { - func getScale(targetSize: CGSize, contentMode: ImageProcessors.Resize.ContentMode) -> CGFloat { - let scaleHor = targetSize.width / width - let scaleVert = targetSize.height / height - - switch contentMode { - case .aspectFill: - return max(scaleHor, scaleVert) - case .aspectFit: - return min(scaleHor, scaleVert) - } - } - - /// Calculates a rect such that the output rect will be in the center of - /// the rect of the input size (assuming origin: .zero) - func centeredInRectWithSize(_ targetSize: CGSize) -> CGRect { - // First, resize the original size to fill the target size. - CGRect(origin: .zero, size: self).offsetBy( - dx: -(width - targetSize.width) / 2, - dy: -(height - targetSize.height) / 2 - ) - } -} - -#if os(iOS) || os(tvOS) || os(watchOS) -private extension CGSize { - func rotatedForOrientation(_ imageOrientation: UIImage.Orientation) -> CGSize { - switch imageOrientation { - case .left, .leftMirrored, .right, .rightMirrored: - return CGSize(width: height, height: width) // Rotate 90 degrees - case .up, .upMirrored, .down, .downMirrored: - return self - @unknown default: - return self - } - } -} -#endif - -#if os(macOS) -extension NSImage { - var cgImage: CGImage? { - cgImage(forProposedRect: nil, context: nil, hints: nil) - } - - var ciImage: CIImage? { - cgImage.map { CIImage(cgImage: $0) } - } - - static func make(cgImage: CGImage, source: NSImage) -> NSImage { - NSImage(cgImage: cgImage, size: .zero) - } - - convenience init(cgImage: CGImage) { - self.init(cgImage: cgImage, size: .zero) - } -} -#else -extension UIImage { - static func make(cgImage: CGImage, source: UIImage) -> UIImage { - UIImage(cgImage: cgImage, scale: source.scale, orientation: source.imageOrientation) - } -} -#endif - -extension CGImage { - /// Returns `true` if the image doesn't contain alpha channel. - var isOpaque: Bool { - let alpha = alphaInfo - return alpha == .none || alpha == .noneSkipFirst || alpha == .noneSkipLast - } - - var size: CGSize { - CGSize(width: width, height: height) - } -} - -extension CGSize { - func scaled(by scale: CGFloat) -> CGSize { - CGSize(width: width * scale, height: height * scale) - } - - func rounded() -> CGSize { - CGSize(width: CGFloat(round(width)), height: CGFloat(round(height))) - } -} - -struct Screen { - #if os(iOS) || os(tvOS) - /// Returns the current screen scale. - static var scale: CGFloat { UIScreen.main.scale } - #elseif os(watchOS) - /// Returns the current screen scale. - static var scale: CGFloat { WKInterfaceDevice.current().screenScale } - #elseif os(macOS) - /// Always returns 1. - static var scale: CGFloat { 1 } - #endif -} - -#if os(macOS) -typealias Color = NSColor -#else -typealias Color = UIColor -#endif - -extension Color { - /// Returns a hex representation of the color, e.g. "#FFFFAA". - var hex: String { - var (r, g, b, a) = (CGFloat(0), CGFloat(0), CGFloat(0), CGFloat(0)) - getRed(&r, green: &g, blue: &b, alpha: &a) - let components = [r, g, b, a < 1 ? a : nil] - return "#" + components - .compactMap { $0 } - .map { String(format: "%02lX", lroundf(Float($0) * 255)) } - .joined() - } -} - -/// Creates an image thumbnail. Uses significantly less memory than other options. -func makeThumbnail(data: Data, options: ImageRequest.ThumbnailOptions) -> PlatformImage? { - guard let source = CGImageSourceCreateWithData(data as CFData, [kCGImageSourceShouldCache: false] as CFDictionary) else { - return nil - } - let options = [ - kCGImageSourceCreateThumbnailFromImageAlways: options.createThumbnailFromImageAlways, - kCGImageSourceCreateThumbnailFromImageIfAbsent: options.createThumbnailFromImageIfAbsent, - kCGImageSourceShouldCacheImmediately: options.shouldCacheImmediately, - kCGImageSourceCreateThumbnailWithTransform: options.createThumbnailWithTransform, - kCGImageSourceThumbnailMaxPixelSize: options.maxPixelSize] as CFDictionary - guard let image = CGImageSourceCreateThumbnailAtIndex(source, 0, options) else { - return nil - } - return PlatformImage(cgImage: image) -} diff --git a/Pods/Nuke/Sources/Internal/ImageRequestKeys.swift b/Pods/Nuke/Sources/Internal/ImageRequestKeys.swift deleted file mode 100644 index ac23e15ef..000000000 --- a/Pods/Nuke/Sources/Internal/ImageRequestKeys.swift +++ /dev/null @@ -1,115 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -extension ImageRequest { - - // MARK: - Cache Keys - - /// A key for processed image in memory cache. - func makeImageCacheKey() -> CacheKey { - CacheKey(self) - } - - /// A key for processed image data in disk cache. - func makeDataCacheKey() -> String { - "\(preferredImageId)\(thubmnail?.identifier ?? "")\(ImageProcessors.Composition(processors).identifier)" - } - - // MARK: - Load Keys - - /// A key for deduplicating operations for fetching the processed image. - func makeImageLoadKey() -> ImageLoadKey { - ImageLoadKey(self) - } - - /// A key for deduplicating operations for fetching the decoded image. - func makeDecodedImageLoadKey() -> DecodedImageLoadKey { - DecodedImageLoadKey(self) - } - - /// A key for deduplicating operations for fetching the original image. - func makeDataLoadKey() -> DataLoadKey { - DataLoadKey(self) - } -} - -/// Uniquely identifies a cache processed image. -struct CacheKey: Hashable { - private let imageId: String? - private let thumbnail: ImageRequest.ThumbnailOptions? - private let processors: [ImageProcessing] - - init(_ request: ImageRequest) { - self.imageId = request.preferredImageId - self.thumbnail = request.thubmnail - self.processors = request.ref.processors - } - - func hash(into hasher: inout Hasher) { - hasher.combine(imageId) - hasher.combine(thumbnail) - hasher.combine(processors.count) - } - - static func == (lhs: CacheKey, rhs: CacheKey) -> Bool { - lhs.imageId == rhs.imageId && lhs.thumbnail == rhs.thumbnail && lhs.processors == rhs.processors - } -} - -/// Uniquely identifies a task of retrieving the processed image. -struct ImageLoadKey: Hashable { - let cacheKey: CacheKey - let options: ImageRequest.Options - let thumbnail: ImageRequest.ThumbnailOptions? - let loadKey: DataLoadKey - - init(_ request: ImageRequest) { - self.cacheKey = CacheKey(request) - self.options = request.options - self.thumbnail = request.thubmnail - self.loadKey = DataLoadKey(request) - } -} - -/// Uniquely identifies a task of retrieving the decoded image. -struct DecodedImageLoadKey: Hashable { - let dataLoadKey: DataLoadKey - let thumbnail: ImageRequest.ThumbnailOptions? - - init(_ request: ImageRequest) { - self.dataLoadKey = DataLoadKey(request) - self.thumbnail = request.thubmnail - } -} - -/// Uniquely identifies a task of retrieving the original image dataa. -struct DataLoadKey: Hashable { - private let imageId: String? - private let cachePolicy: URLRequest.CachePolicy - private let allowsCellularAccess: Bool - - init(_ request: ImageRequest) { - self.imageId = request.imageId - switch request.ref.resource { - case .url, .publisher: - self.cachePolicy = .useProtocolCachePolicy - self.allowsCellularAccess = true - case let .urlRequest(urlRequest): - self.cachePolicy = urlRequest.cachePolicy - self.allowsCellularAccess = urlRequest.allowsCellularAccess - } - } -} - -struct ImageProcessingKey: Equatable, Hashable { - let imageId: ObjectIdentifier - let processorId: AnyHashable - - init(image: ImageResponse, processor: ImageProcessing) { - self.imageId = ObjectIdentifier(image.image) - self.processorId = processor.hashableIdentifier - } -} diff --git a/Pods/Nuke/Sources/Internal/LinkedList.swift b/Pods/Nuke/Sources/Internal/LinkedList.swift deleted file mode 100644 index afd492d05..000000000 --- a/Pods/Nuke/Sources/Internal/LinkedList.swift +++ /dev/null @@ -1,85 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// A doubly linked list. -final class LinkedList { - // first <-> node <-> ... <-> last - private(set) var first: Node? - private(set) var last: Node? - - deinit { - removeAll() - - #if TRACK_ALLOCATIONS - Allocations.decrement("LinkedList") - #endif - } - - init() { - #if TRACK_ALLOCATIONS - Allocations.increment("LinkedList") - #endif - } - - var isEmpty: Bool { - last == nil - } - - /// Adds an element to the end of the list. - @discardableResult - func append(_ element: Element) -> Node { - let node = Node(value: element) - append(node) - return node - } - - /// Adds a node to the end of the list. - func append(_ node: Node) { - if let last = last { - last.next = node - node.previous = last - self.last = node - } else { - last = node - first = node - } - } - - func remove(_ node: Node) { - node.next?.previous = node.previous // node.previous is nil if node=first - node.previous?.next = node.next // node.next is nil if node=last - if node === last { - last = node.previous - } - if node === first { - first = node.next - } - node.next = nil - node.previous = nil - } - - func removeAll() { - // avoid recursive Nodes deallocation - var node = first - while let next = node?.next { - node?.next = nil - next.previous = nil - node = next - } - last = nil - first = nil - } - - final class Node { - let value: Element - fileprivate var next: Node? - fileprivate var previous: Node? - - init(value: Element) { - self.value = value - } - } -} diff --git a/Pods/Nuke/Sources/Internal/Log.swift b/Pods/Nuke/Sources/Internal/Log.swift deleted file mode 100644 index 81e24319f..000000000 --- a/Pods/Nuke/Sources/Internal/Log.swift +++ /dev/null @@ -1,73 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation -import os - -func signpost(_ log: OSLog, _ object: AnyObject, _ name: StaticString, _ type: SignpostType) { - guard ImagePipeline.Configuration.isSignpostLoggingEnabled else { return } - if #available(OSX 10.14, iOS 12.0, watchOS 5.0, tvOS 12.0, *) { - let signpostId = OSSignpostID(log: log, object: object) - os_signpost(type.os, log: log, name: name, signpostID: signpostId) - } -} - -func signpost(_ log: OSLog, _ object: AnyObject, _ name: StaticString, _ type: SignpostType, _ message: @autoclosure () -> String) { - guard ImagePipeline.Configuration.isSignpostLoggingEnabled else { return } - if #available(OSX 10.14, iOS 12.0, watchOS 5.0, tvOS 12.0, *) { - let signpostId = OSSignpostID(log: log, object: object) - os_signpost(type.os, log: log, name: name, signpostID: signpostId, "%{public}s", message()) - } -} - -func signpost(_ log: OSLog, _ name: StaticString, _ work: () -> T) -> T { - if #available(OSX 10.14, iOS 12.0, watchOS 5.0, tvOS 12.0, *), ImagePipeline.Configuration.isSignpostLoggingEnabled { - let signpostId = OSSignpostID(log: log) - os_signpost(.begin, log: log, name: name, signpostID: signpostId) - let result = work() - os_signpost(.end, log: log, name: name, signpostID: signpostId) - return result - } else { - return work() - } -} - -func signpost(_ log: OSLog, _ name: StaticString, _ message: @autoclosure () -> String, _ work: () -> T) -> T { - if #available(OSX 10.14, iOS 12.0, watchOS 5.0, tvOS 12.0, *), ImagePipeline.Configuration.isSignpostLoggingEnabled { - let signpostId = OSSignpostID(log: log) - os_signpost(.begin, log: log, name: name, signpostID: signpostId, "%{public}s", message()) - let result = work() - os_signpost(.end, log: log, name: name, signpostID: signpostId) - return result - } else { - return work() - } -} - -var log: OSLog = .disabled - -private let byteFormatter = ByteCountFormatter() - -enum Formatter { - static func bytes(_ count: Int) -> String { - bytes(Int64(count)) - } - - static func bytes(_ count: Int64) -> String { - byteFormatter.string(fromByteCount: count) - } -} - -enum SignpostType { - case begin, event, end - - @available(OSX 10.14, iOS 12.0, watchOS 5.0, tvOS 12.0, *) - var os: OSSignpostType { - switch self { - case .begin: return .begin - case .event: return .event - case .end: return .end - } - } -} diff --git a/Pods/Nuke/Sources/Internal/Operation.swift b/Pods/Nuke/Sources/Internal/Operation.swift deleted file mode 100644 index 7c48ca762..000000000 --- a/Pods/Nuke/Sources/Internal/Operation.swift +++ /dev/null @@ -1,97 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -final class Operation: Foundation.Operation { - private let _isExecuting: UnsafeMutablePointer - private let _isFinished: UnsafeMutablePointer - private let isFinishCalled: UnsafeMutablePointer - - override var isExecuting: Bool { - get { _isExecuting.pointee == 1 } - set { - guard OSAtomicCompareAndSwap32Barrier(newValue ? 0 : 1, newValue ? 1 : 0, _isExecuting) else { - return assertionFailure("Invalid state, operation is already (not) executing") - } - willChangeValue(forKey: "isExecuting") - didChangeValue(forKey: "isExecuting") - } - } - override var isFinished: Bool { - get { _isFinished.pointee == 1 } - set { - guard OSAtomicCompareAndSwap32Barrier(newValue ? 0 : 1, newValue ? 1 : 0, _isFinished) else { - return assertionFailure("Invalid state, operation is already finished") - } - willChangeValue(forKey: "isFinished") - didChangeValue(forKey: "isFinished") - } - } - - typealias Starter = (_ finish: @escaping () -> Void) -> Void - private let starter: Starter - - deinit { - self._isExecuting.deallocate() - self._isFinished.deallocate() - self.isFinishCalled.deallocate() - - #if TRACK_ALLOCATIONS - Allocations.decrement("Operation") - #endif - } - - init(starter: @escaping Starter) { - self.starter = starter - - self._isExecuting = UnsafeMutablePointer.allocate(capacity: 1) - self._isExecuting.initialize(to: 0) - - self._isFinished = UnsafeMutablePointer.allocate(capacity: 1) - self._isFinished.initialize(to: 0) - - self.isFinishCalled = UnsafeMutablePointer.allocate(capacity: 1) - self.isFinishCalled.initialize(to: 0) - - #if TRACK_ALLOCATIONS - Allocations.increment("Operation") - #endif - } - - override func start() { - guard !isCancelled else { - isFinished = true - return - } - isExecuting = true - starter { [weak self] in - self?._finish() - } - } - - private func _finish() { - // Make sure that we ignore if `finish` is called more than once. - if OSAtomicCompareAndSwap32Barrier(0, 1, isFinishCalled) { - isExecuting = false - isFinished = true - } - } -} - -extension OperationQueue { - /// Adds simple `BlockOperation`. - func add(_ closure: @escaping () -> Void) -> BlockOperation { - let operation = BlockOperation(block: closure) - addOperation(operation) - return operation - } - - /// Adds asynchronous operation (`Nuke.Operation`) with the given starter. - func add(_ starter: @escaping Operation.Starter) -> Operation { - let operation = Operation(starter: starter) - addOperation(operation) - return operation - } -} diff --git a/Pods/Nuke/Sources/Internal/RateLimiter.swift b/Pods/Nuke/Sources/Internal/RateLimiter.swift deleted file mode 100644 index 303602235..000000000 --- a/Pods/Nuke/Sources/Internal/RateLimiter.swift +++ /dev/null @@ -1,114 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// Controls the rate at which the work is executed. Uses the classic [token -/// bucket](https://en.wikipedia.org/wiki/Token_bucket) algorithm. -/// -/// The main use case for rate limiter is to support large (infinite) collections -/// of images by preventing trashing of underlying systems, primary URLSession. -/// -/// The implementation supports quick bursts of requests which can be executed -/// without any delays when "the bucket is full". This is important to prevent -/// rate limiter from affecting "normal" requests flow. -final class RateLimiter { - private let bucket: TokenBucket - private let queue: DispatchQueue - private var pending = LinkedList() // fast append, fast remove first - private var isExecutingPendingTasks = false - - typealias Work = () -> Bool - - /// Initializes the `RateLimiter` with the given configuration. - /// - parameter queue: Queue on which to execute pending tasks. - /// - parameter rate: Maximum number of requests per second. 80 by default. - /// - parameter burst: Maximum number of requests which can be executed without - /// any delays when "bucket is full". 25 by default. - init(queue: DispatchQueue, rate: Int = 80, burst: Int = 25) { - self.queue = queue - self.bucket = TokenBucket(rate: Double(rate), burst: Double(burst)) - - #if TRACK_ALLOCATIONS - Allocations.increment("RateLimiter") - #endif - } - - deinit { - #if TRACK_ALLOCATIONS - Allocations.decrement("RateLimiter") - #endif - } - - /// - parameter closure: Returns `true` if the close was executed, `false` - /// if the work was cancelled. - func execute( _ work: @escaping Work) { - if !pending.isEmpty || !bucket.execute(work) { - pending.append(work) - setNeedsExecutePendingTasks() - } - } - - private func setNeedsExecutePendingTasks() { - guard !isExecutingPendingTasks else { - return - } - isExecutingPendingTasks = true - // Compute a delay such that by the time the closure is executed the - // bucket is refilled to a point that is able to execute at least one - // pending task. With a rate of 80 tasks we expect a refill every ~26 ms - // or as soon as the new tasks are added. - let bucketRate = 1000.0 / bucket.rate - let delay = Int(2.1 * bucketRate) // 14 ms for rate 80 (default) - let bounds = min(100, max(15, delay)) - queue.asyncAfter(deadline: .now() + .milliseconds(bounds), execute: executePendingTasks) - } - - private func executePendingTasks() { - while let node = pending.first, bucket.execute(node.value) { - pending.remove(node) - } - isExecutingPendingTasks = false - if !pending.isEmpty { // Not all pending items were executed - setNeedsExecutePendingTasks() - } - } -} - -private final class TokenBucket { - let rate: Double - private let burst: Double // maximum bucket size - private var bucket: Double - private var timestamp: TimeInterval // last refill timestamp - - /// - parameter rate: Rate (tokens/second) at which bucket is refilled. - /// - parameter burst: Bucket size (maximum number of tokens). - init(rate: Double, burst: Double) { - self.rate = rate - self.burst = burst - self.bucket = burst - self.timestamp = CFAbsoluteTimeGetCurrent() - } - - /// Returns `true` if the closure was executed, `false` if dropped. - func execute(_ work: () -> Bool) -> Bool { - refill() - guard bucket >= 1.0 else { - return false // bucket is empty - } - if work() { - bucket -= 1.0 // work was cancelled, no need to reduce the bucket - } - return true - } - - private func refill() { - let now = CFAbsoluteTimeGetCurrent() - bucket += rate * max(0, now - timestamp) // rate * (time delta) - timestamp = now - if bucket > burst { // prevent bucket overflow - bucket = burst - } - } -} diff --git a/Pods/Nuke/Sources/Internal/ResumableData.swift b/Pods/Nuke/Sources/Internal/ResumableData.swift deleted file mode 100644 index bd2a8a5a7..000000000 --- a/Pods/Nuke/Sources/Internal/ResumableData.swift +++ /dev/null @@ -1,133 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -/// Resumable data support. For more info see: -/// - https://developer.apple.com/library/content/qa/qa1761/_index.html -struct ResumableData { - let data: Data - let validator: String // Either Last-Modified or ETag - - init?(response: URLResponse, data: Data) { - // Check if "Accept-Ranges" is present and the response is valid. - guard !data.isEmpty, - let response = response as? HTTPURLResponse, - data.count < response.expectedContentLength, - response.statusCode == 200 /* OK */ || response.statusCode == 206, /* Partial Content */ - let acceptRanges = response.allHeaderFields["Accept-Ranges"] as? String, - acceptRanges.lowercased() == "bytes", - let validator = ResumableData._validator(from: response) else { - return nil - } - - // NOTE: https://developer.apple.com/documentation/foundation/httpurlresponse/1417930-allheaderfields - // HTTP headers are case insensitive. To simplify your code, certain - // header field names are canonicalized into their standard form. - // For example, if the server sends a content-length header, - // it is automatically adjusted to be Content-Length. - - self.data = data; self.validator = validator - } - - private static func _validator(from response: HTTPURLResponse) -> String? { - if let entityTag = response.allHeaderFields["ETag"] as? String { - return entityTag // Prefer ETag - } - // There seems to be a bug with ETag where HTTPURLResponse would canonicalize - // it to Etag instead of ETag - // https://bugs.swift.org/browse/SR-2429 - if let entityTag = response.allHeaderFields["Etag"] as? String { - return entityTag // Prefer ETag - } - if let lastModified = response.allHeaderFields["Last-Modified"] as? String { - return lastModified - } - return nil - } - - func resume(request: inout URLRequest) { - var headers = request.allHTTPHeaderFields ?? [:] - // "bytes=1000-" means bytes from 1000 up to the end (inclusive) - headers["Range"] = "bytes=\(data.count)-" - headers["If-Range"] = validator - request.allHTTPHeaderFields = headers - } - - // Check if the server decided to resume the response. - static func isResumedResponse(_ response: URLResponse) -> Bool { - // "206 Partial Content" (server accepted "If-Range") - (response as? HTTPURLResponse)?.statusCode == 206 - } -} - -/// Shared cache, uses the same memory pool across multiple pipelines. -final class ResumableDataStorage { - static let shared = ResumableDataStorage() - - private let lock = NSLock() - private var registeredPipelines = Set() - - private var cache: Cache? - - // MARK: Registration - - func register(_ pipeline: ImagePipeline) { - lock.lock(); defer { lock.unlock() } - - if registeredPipelines.isEmpty { - // 32 MB - cache = Cache(costLimit: 32000000, countLimit: 100) - } - registeredPipelines.insert(pipeline.id) - } - - func unregister(_ pipeline: ImagePipeline) { - lock.lock(); defer { lock.unlock() } - - registeredPipelines.remove(pipeline.id) - if registeredPipelines.isEmpty { - cache = nil // Deallocate storage - } - } - - func removeAll() { - lock.lock(); defer { lock.unlock() } - - cache?.removeAll() - } - - // MARK: Storage - - func removeResumableData(for request: ImageRequest, pipeline: ImagePipeline) -> ResumableData? { - lock.lock(); defer { lock.unlock() } - - guard let cache = cache, - cache.totalCount > 0, - let key = Key(request: request, pipeline: pipeline) else { - return nil - } - return cache.removeValue(forKey: key) - } - - func storeResumableData(_ data: ResumableData, for request: ImageRequest, pipeline: ImagePipeline) { - lock.lock(); defer { lock.unlock() } - - guard let key = Key(request: request, pipeline: pipeline) else { return } - cache?.set(data, forKey: key, cost: data.data.count) - } - - private struct Key: Hashable { - let pipelineId: UUID - let url: String - - init?(request: ImageRequest, pipeline: ImagePipeline) { - guard let imageId = request.imageId else { - return nil - } - self.pipelineId = pipeline.id - self.url = imageId - } - } -} diff --git a/Pods/Nuke/Sources/UI/FetchImage.swift b/Pods/Nuke/Sources/UI/FetchImage.swift deleted file mode 100644 index 3226ff37b..000000000 --- a/Pods/Nuke/Sources/UI/FetchImage.swift +++ /dev/null @@ -1,234 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import SwiftUI -import Combine - -/// An observable object that simplifies image loading in SwiftUI. -@available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) -public final class FetchImage: ObservableObject, Identifiable { - /// Returns the current fetch result. - @Published public private(set) var result: Result? - - /// Returns the fetched image. - /// - /// - note: In case pipeline has `isProgressiveDecodingEnabled` option enabled - /// and the image being downloaded supports progressive decoding, the `image` - /// might be updated multiple times during the download. - public var image: PlatformImage? { imageContainer?.image } - - /// Returns the fetched image. - /// - /// - note: In case pipeline has `isProgressiveDecodingEnabled` option enabled - /// and the image being downloaded supports progressive decoding, the `image` - /// might be updated multiple times during the download. - @Published public private(set) var imageContainer: ImageContainer? - - /// Returns `true` if the image is being loaded. - @Published public private(set) var isLoading: Bool = false - - /// Animations to be used when displaying the loaded images. By default, `nil`. - /// - /// - note: Animation isn't used when image is available in memory cache. - public var animation: Animation? - - /// The download progress. - public struct Progress: Equatable { - /// The number of bytes that the task has received. - public let completed: Int64 - - /// A best-guess upper bound on the number of bytes the client expects to send. - public let total: Int64 - } - - /// The progress of the image download. - @Published public private(set) var progress = Progress(completed: 0, total: 0) - - /// Updates the priority of the task, even if the task is already running. - /// `nil` by default - public var priority: ImageRequest.Priority? { - didSet { priority.map { imageTask?.priority = $0 } } - } - - /// Gets called when the request is started. - public var onStart: ((_ task: ImageTask) -> Void)? - - /// Gets called when the request progress is updated. - public var onProgress: ((_ response: ImageResponse?, _ completed: Int64, _ total: Int64) -> Void)? - - /// Gets called when the requests finished successfully. - public var onSuccess: ((_ response: ImageResponse) -> Void)? - - /// Gets called when the requests fails. - public var onFailure: ((_ response: Error) -> Void)? - - /// Gets called when the request is completed. - public var onCompletion: ((_ result: Result) -> Void)? - - public var pipeline: ImagePipeline = .shared - - /// Image processors to be applied unless the processors are provided in the - /// request. `[]` by default. - public var processors: [ImageProcessing] = [] - - private var imageTask: ImageTask? - - // publisher support - private var lastResponse: ImageResponse? - private var cancellable: AnyCancellable? - - deinit { - cancel() - } - - public init() {} - - // MARK: Load (ImageRequestConvertible) - - /// Loads an image with the given request. - public func load(_ request: ImageRequestConvertible?) { - assert(Thread.isMainThread, "Must be called from the main thread") - - reset() - - guard var request = request?.asImageRequest() else { - handle(result: .failure(FetchImageError.sourceEmpty)) - return - } - - if !processors.isEmpty && request.processors.isEmpty { - request.processors = processors - } - if let priority = self.priority { - request.priority = priority - } - - // Quick synchronous memory cache lookup - if let image = pipeline.cache[request] { - if image.isPreview { - imageContainer = image // Display progressive image - } else { - let response = ImageResponse(container: image, cacheType: .memory) - handle(result: .success(response)) - return - } - } - - isLoading = true - progress = Progress(completed: 0, total: 0) - - let task = pipeline.loadImage( - with: request, - progress: { [weak self] response, completed, total in - guard let self = self else { return } - self.progress = Progress(completed: completed, total: total) - if let response = response { - withAnimation(self.animation) { - self.handle(preview: response) - } - } - self.onProgress?(response, completed, total) - }, - completion: { [weak self] result in - guard let self = self else { return } - withAnimation(self.animation) { - self.handle(result: result.mapError { $0 }) - } - } - ) - imageTask = task - onStart?(task) - } - - private func handle(preview: ImageResponse) { - // Display progressively decoded image - self.imageContainer = preview.container - } - - private func handle(result: Result) { - isLoading = false - - if case .success(let response) = result { - self.imageContainer = response.container - } - self.result = result - - imageTask = nil - switch result { - case .success(let response): onSuccess?(response) - case .failure(let error): onFailure?(error) - } - onCompletion?(result) - } - - // MARK: Load (Publisher) - - /// Loads an image with the given publisher. - /// - /// - warning: Some `FetchImage` features, such as progress reporting and - /// dynamically changing the request priority, are not available when - /// working with a publisher. - public func load(_ publisher: P) where P.Output == ImageResponse { - reset() - - // Not using `first()` because it should support progressive decoding - isLoading = true - cancellable = publisher.sink(receiveCompletion: { [weak self] completion in - guard let self = self else { return } - self.isLoading = false - switch completion { - case .finished: - if let response = self.lastResponse { - self.result = .success(response) - } // else was cancelled, do nothing - case .failure(let error): - self.result = .failure(error) - } - }, receiveValue: { [weak self] response in - guard let self = self else { return } - self.lastResponse = response - self.imageContainer = response.container - }) - } - - // MARK: Cancel - - /// Marks the request as being cancelled. Continues to display a downloaded - /// image. - public func cancel() { - // pipeline-based - imageTask?.cancel() // Guarantees that no more callbacks are will be delivered - imageTask = nil - - // publisher-based - cancellable = nil - } - - /// Resets the `FetchImage` instance by cancelling the request and removing - /// all of the state including the loaded image. - public func reset() { - cancel() - - // Avoid publishing unchanged values - if isLoading { isLoading = false } - if imageContainer != nil { imageContainer = nil } - if result != nil { result = nil } - lastResponse = nil // publisher-only - if progress != Progress(completed: 0, total: 0) { progress = Progress(completed: 0, total: 0) } - } - - // MARK: View - - public var view: SwiftUI.Image? { - #if os(macOS) - return image.map(Image.init(nsImage:)) - #else - return image.map(Image.init(uiImage:)) - #endif - } -} - -public enum FetchImageError: Swift.Error { - case sourceEmpty -} diff --git a/Pods/Nuke/Sources/UI/ImageViewExtensions.swift b/Pods/Nuke/Sources/UI/ImageViewExtensions.swift deleted file mode 100644 index cfef2fae6..000000000 --- a/Pods/Nuke/Sources/UI/ImageViewExtensions.swift +++ /dev/null @@ -1,619 +0,0 @@ -// The MIT License (MIT) -// -// Copyright (c) 2015-2022 Alexander Grebenyuk (github.com/kean). - -import Foundation - -#if !os(macOS) -import UIKit.UIImage -import UIKit.UIColor -/// Alias for `UIImage`. -public typealias PlatformImage = UIImage -#else -import AppKit.NSImage -/// Alias for `NSImage`. -public typealias PlatformImage = NSImage -#endif - -/// Displays images. Add the conformance to this protocol to your views to make -/// them compatible with Nuke image loading extensions. -/// -/// The protocol is defined as `@objc` to make it possible to override its -/// methods in extensions (e.g. you can override `nuke_display(image:data:)` in -/// `UIImageView` subclass like `Gifu.ImageView). -/// -/// The protocol and its methods have prefixes to make sure they don't clash -/// with other similar methods and protocol in Objective-C runtime. -@objc public protocol Nuke_ImageDisplaying { - /// Display a given image. - @objc func nuke_display(image: PlatformImage?, data: Data?) - - #if os(macOS) - @objc var layer: CALayer? { get } - #endif -} - -extension Nuke_ImageDisplaying { - func display(_ container: ImageContainer) { - nuke_display(image: container.image, data: container.data) - } -} - -#if os(macOS) -public extension Nuke_ImageDisplaying { - var layer: CALayer? { nil } -} -#endif - -#if os(iOS) || os(tvOS) -import UIKit -/// A `UIView` that implements `ImageDisplaying` protocol. -public typealias ImageDisplayingView = UIView & Nuke_ImageDisplaying - -extension UIImageView: Nuke_ImageDisplaying { - /// Displays an image. - open func nuke_display(image: UIImage?, data: Data? = nil) { - self.image = image - } -} -#elseif os(macOS) -import Cocoa -/// An `NSObject` that implements `ImageDisplaying` and `Animating` protocols. -/// Can support `NSView` and `NSCell`. The latter can return nil for layer. -public typealias ImageDisplayingView = NSObject & Nuke_ImageDisplaying - -extension NSImageView: Nuke_ImageDisplaying { - /// Displays an image. - open func nuke_display(image: NSImage?, data: Data? = nil) { - self.image = image - } -} -#elseif os(watchOS) -import WatchKit - -/// A `WKInterfaceObject` that implements `ImageDisplaying` protocol. -public typealias ImageDisplayingView = WKInterfaceObject & Nuke_ImageDisplaying - -extension WKInterfaceImage: Nuke_ImageDisplaying { - /// Displays an image. - open func nuke_display(image: UIImage?, data: Data? = nil) { - self.setImage(image) - } -} -#endif - -// MARK: - ImageView Extensions - -/// Loads an image with the given request and displays it in the view. -/// -/// See the complete method signature for more information. -@discardableResult -public func loadImage( - with request: ImageRequestConvertible?, - options: ImageLoadingOptions = ImageLoadingOptions.shared, - into view: ImageDisplayingView, - completion: @escaping (_ result: Result) -> Void -) -> ImageTask? { - loadImage(with: request, options: options, into: view, progress: nil, completion: completion) -} - -/// Loads an image with the given request and displays it in the view. -/// -/// Before loading a new image, the view is prepared for reuse by canceling any -/// outstanding requests and removing a previously displayed image. -/// -/// If the image is stored in the memory cache, it is displayed immediately with -/// no animations. If not, the image is loaded using an image pipeline. When the -/// image is loading, the `placeholder` is displayed. When the request -/// completes the loaded image is displayed (or `failureImage` in case of an error) -/// with the selected animation. -/// -/// - parameter request: The image request. If `nil`, it's handled as a failure -/// scenario. -/// - parameter options: `ImageLoadingOptions.shared` by default. -/// - parameter view: Nuke keeps a weak reference to the view. If the view is deallocated -/// the associated request automatically gets canceled. -/// - parameter progress: A closure to be called periodically on the main thread -/// when the progress is updated. `nil` by default. -/// - parameter completion: A closure to be called on the main thread when the -/// request is finished. Gets called synchronously if the response was found in -/// the memory cache. `nil` by default. -/// - returns: An image task or `nil` if the image was found in the memory cache. -@discardableResult -public func loadImage( - with request: ImageRequestConvertible?, - options: ImageLoadingOptions = ImageLoadingOptions.shared, - into view: ImageDisplayingView, - progress: ((_ response: ImageResponse?, _ completed: Int64, _ total: Int64) -> Void)? = nil, - completion: ((_ result: Result) -> Void)? = nil -) -> ImageTask? { - assert(Thread.isMainThread) - let controller = ImageViewController.controller(for: view) - return controller.loadImage(with: request?.asImageRequest(), options: options, progress: progress, completion: completion) -} - -/// Cancels an outstanding request associated with the view. -public func cancelRequest(for view: ImageDisplayingView) { - assert(Thread.isMainThread) - ImageViewController.controller(for: view).cancelOutstandingTask() -} - -// MARK: - ImageLoadingOptions - -/// A set of options that control how the image is loaded and displayed. -public struct ImageLoadingOptions { - /// Shared options. - public static var shared = ImageLoadingOptions() - - /// Placeholder to be displayed when the image is loading. `nil` by default. - public var placeholder: PlatformImage? - - /// Image to be displayed when the request fails. `nil` by default. - public var failureImage: PlatformImage? - - #if os(iOS) || os(tvOS) || os(macOS) - - /// The image transition animation performed when displaying a loaded image. - /// Only runs when the image was not found in memory cache. `nil` by default. - public var transition: Transition? - - /// The image transition animation performed when displaying a failure image. - /// `nil` by default. - public var failureImageTransition: Transition? - - /// If true, the requested image will always appear with transition, even - /// when loaded from cache. - public var alwaysTransition = false - - func transition(for response: ResponseType) -> Transition? { - switch response { - case .success: return transition - case .failure: return failureImageTransition - case .placeholder: return nil - } - } - - #endif - - /// If true, every time you request a new image for a view, the view will be - /// automatically prepared for reuse: image will be set to `nil`, and animations - /// will be removed. `true` by default. - public var isPrepareForReuseEnabled = true - - /// If `true`, every progressively generated preview produced by the pipeline - /// is going to be displayed. `true` by default. - /// - /// - note: To enable progressive decoding, see `ImagePipeline.Configuration`, - /// `isProgressiveDecodingEnabled` option. - public var isProgressiveRenderingEnabled = true - - /// Custom pipeline to be used. `nil` by default. - public var pipeline: ImagePipeline? - - /// Image processors to be applied unless the processors are provided in the - /// request. `[]` by default. - public var processors: [ImageProcessing] = [] - - #if os(iOS) || os(tvOS) - - /// Content modes to be used for each image type (placeholder, success, - /// failure). `nil` by default (don't change content mode). - public var contentModes: ContentModes? - - /// Custom content modes to be used for each image type (placeholder, success, - /// failure). - public struct ContentModes { - /// Content mode to be used for the loaded image. - public var success: UIView.ContentMode - /// Content mode to be used when displaying a `failureImage`. - public var failure: UIView.ContentMode - /// Content mode to be used when displaying a `placeholder`. - public var placeholder: UIView.ContentMode - - /// - parameter success: A content mode to be used with a loaded image. - /// - parameter failure: A content mode to be used with a `failureImage`. - /// - parameter placeholder: A content mode to be used with a `placeholder`. - public init(success: UIView.ContentMode, failure: UIView.ContentMode, placeholder: UIView.ContentMode) { - self.success = success; self.failure = failure; self.placeholder = placeholder - } - } - - func contentMode(for response: ResponseType) -> UIView.ContentMode? { - switch response { - case .success: return contentModes?.success - case .placeholder: return contentModes?.placeholder - case .failure: return contentModes?.failure - } - } - - /// Tint colors to be used for each image type (placeholder, success, - /// failure). `nil` by default (don't change tint color or rendering mode). - public var tintColors: TintColors? - - /// Custom tint color to be used for each image type (placeholder, success, - /// failure). - public struct TintColors { - /// Tint color to be used for the loaded image. - public var success: UIColor? - /// Tint color to be used when displaying a `failureImage`. - public var failure: UIColor? - /// Tint color to be used when displaying a `placeholder`. - public var placeholder: UIColor? - - /// - parameter success: A tint color to be used with a loaded image. - /// - parameter failure: A tint color to be used with a `failureImage`. - /// - parameter placeholder: A tint color to be used with a `placeholder`. - public init(success: UIColor?, failure: UIColor?, placeholder: UIColor?) { - self.success = success; self.failure = failure; self.placeholder = placeholder - } - } - - func tintColor(for response: ResponseType) -> UIColor? { - switch response { - case .success: return tintColors?.success - case .placeholder: return tintColors?.placeholder - case .failure: return tintColors?.failure - } - } - - #endif - - #if os(iOS) || os(tvOS) - - /// - parameter placeholder: Placeholder to be displayed when the image is - /// loading . `nil` by default. - /// - parameter transition: The image transition animation performed when - /// displaying a loaded image. Only runs when the image was not found in - /// memory cache. `nil` by default (no animations). - /// - parameter failureImage: Image to be displayd when request fails. - /// `nil` by default. - /// - parameter failureImageTransition: The image transition animation - /// performed when displaying a failure image. `nil` by default. - /// - parameter contentModes: Content modes to be used for each image type - /// (placeholder, success, failure). `nil` by default (don't change content mode). - public init(placeholder: UIImage? = nil, transition: Transition? = nil, failureImage: UIImage? = nil, failureImageTransition: Transition? = nil, contentModes: ContentModes? = nil, tintColors: TintColors? = nil) { - self.placeholder = placeholder - self.transition = transition - self.failureImage = failureImage - self.failureImageTransition = failureImageTransition - self.contentModes = contentModes - self.tintColors = tintColors - } - - #elseif os(macOS) - - public init(placeholder: NSImage? = nil, transition: Transition? = nil, failureImage: NSImage? = nil, failureImageTransition: Transition? = nil) { - self.placeholder = placeholder - self.transition = transition - self.failureImage = failureImage - self.failureImageTransition = failureImageTransition - } - - #elseif os(watchOS) - - public init(placeholder: UIImage? = nil, failureImage: UIImage? = nil) { - self.placeholder = placeholder - self.failureImage = failureImage - } - - #endif - - /// An animated image transition. - public struct Transition { - var style: Style - - #if os(iOS) || os(tvOS) - enum Style { // internal representation - case fadeIn(parameters: Parameters) - case custom((ImageDisplayingView, UIImage) -> Void) - } - - struct Parameters { // internal representation - let duration: TimeInterval - let options: UIView.AnimationOptions - } - - /// Fade-in transition (cross-fade in case the image view is already - /// displaying an image). - public static func fadeIn(duration: TimeInterval, options: UIView.AnimationOptions = .allowUserInteraction) -> Transition { - Transition(style: .fadeIn(parameters: Parameters(duration: duration, options: options))) - } - - /// Custom transition. Only runs when the image was not found in memory cache. - public static func custom(_ closure: @escaping (ImageDisplayingView, UIImage) -> Void) -> Transition { - Transition(style: .custom(closure)) - } - #elseif os(macOS) - enum Style { // internal representation - case fadeIn(parameters: Parameters) - case custom((ImageDisplayingView, NSImage) -> Void) - } - - struct Parameters { // internal representation - let duration: TimeInterval - } - - /// Fade-in transition. - public static func fadeIn(duration: TimeInterval) -> Transition { - Transition(style: .fadeIn(parameters: Parameters(duration: duration))) - } - - /// Custom transition. Only runs when the image was not found in memory cache. - public static func custom(_ closure: @escaping (ImageDisplayingView, NSImage) -> Void) -> Transition { - Transition(style: .custom(closure)) - } - #else - enum Style {} - #endif - } - - public init() {} - - enum ResponseType { - case success, failure, placeholder - } -} - -// MARK: - ImageViewController - -/// Manages image requests on behalf of an image view. -/// -/// - note: With a few modifications this might become public at some point, -/// however as it stands today `ImageViewController` is just a helper class, -/// making it public wouldn't expose any additional functionality to the users. -private final class ImageViewController { - private weak var imageView: ImageDisplayingView? - private var task: ImageTask? - private var options: ImageLoadingOptions - - #if os(iOS) || os(tvOS) - // Image view used for cross-fade transition between images with different - // content modes. - private lazy var transitionImageView = UIImageView() - #endif - - // Automatically cancel the request when the view is deallocated. - deinit { - cancelOutstandingTask() - } - - init(view: /* weak */ ImageDisplayingView) { - self.imageView = view - self.options = .shared - } - - // MARK: - Associating Controller - - static var controllerAK = "ImageViewController.AssociatedKey" - - // Lazily create a controller for a given view and associate it with a view. - static func controller(for view: ImageDisplayingView) -> ImageViewController { - if let controller = objc_getAssociatedObject(view, &ImageViewController.controllerAK) as? ImageViewController { - return controller - } - let controller = ImageViewController(view: view) - objc_setAssociatedObject(view, &ImageViewController.controllerAK, controller, .OBJC_ASSOCIATION_RETAIN) - return controller - } - - // MARK: - Loading Images - - func loadImage( - with request: ImageRequest?, - options: ImageLoadingOptions, - progress: ((_ response: ImageResponse?, _ completed: Int64, _ total: Int64) -> Void)? = nil, - completion: ((_ result: Result) -> Void)? = nil - ) -> ImageTask? { - cancelOutstandingTask() - - guard let imageView = imageView else { - return nil - } - - self.options = options - - if options.isPrepareForReuseEnabled { // enabled by default - #if os(iOS) || os(tvOS) - imageView.layer.removeAllAnimations() - #elseif os(macOS) - let layer = (imageView as? NSView)?.layer ?? imageView.layer - layer?.removeAllAnimations() - #endif - } - - // Handle a scenario where request is `nil` (in the same way as a failure) - guard let unwrappedRequest = request else { - if options.isPrepareForReuseEnabled { - imageView.nuke_display(image: nil, data: nil) - } - let result: Result = .failure(.dataLoadingFailed(URLError(.unknown))) - handle(result: result, isFromMemory: true) - completion?(result) - return nil - } - - let pipeline = options.pipeline ?? ImagePipeline.shared - var request = pipeline.configuration.inheritOptions(unwrappedRequest) - if !options.processors.isEmpty && request.processors.isEmpty { - request.processors = options.processors - } - - // Quick synchronous memory cache lookup. - if let image = pipeline.cache[request] { - display(image, true, .success) - if !image.isPreview { // Final image was downloaded - completion?(.success(ImageResponse(container: image, cacheType: .memory))) - return nil // No task to perform - } - } - - // Display a placeholder. - if let placeholder = options.placeholder { - display(ImageContainer(image: placeholder), true, .placeholder) - } else if options.isPrepareForReuseEnabled { - imageView.nuke_display(image: nil, data: nil) // Remove previously displayed images (if any) - } - - task = pipeline.loadImage(with: request, queue: .main, progress: { [weak self] response, completedCount, totalCount in - if let response = response, options.isProgressiveRenderingEnabled { - self?.handle(partialImage: response) - } - progress?(response, completedCount, totalCount) - }, completion: { [weak self] result in - self?.handle(result: result, isFromMemory: false) - completion?(result) - }) - return task - } - - func cancelOutstandingTask() { - task?.cancel() // The pipeline guarantees no callbacks to be deliver after cancellation - task = nil - } - - // MARK: - Handling Responses - - private func handle(result: Result, isFromMemory: Bool) { - switch result { - case let .success(response): - display(response.container, isFromMemory, .success) - case .failure: - if let failureImage = options.failureImage { - display(ImageContainer(image: failureImage), isFromMemory, .failure) - } - } - self.task = nil - } - - private func handle(partialImage response: ImageResponse) { - display(response.container, false, .success) - } - - #if os(iOS) || os(tvOS) || os(macOS) - - private func display(_ image: ImageContainer, _ isFromMemory: Bool, _ response: ImageLoadingOptions.ResponseType) { - guard let imageView = imageView else { - return - } - - var image = image - - #if os(iOS) || os(tvOS) - if let tintColor = options.tintColor(for: response) { - image = image.map { $0.withRenderingMode(.alwaysTemplate) } ?? image - imageView.tintColor = tintColor - } - #endif - - if !isFromMemory || options.alwaysTransition, let transition = options.transition(for: response) { - switch transition.style { - case let .fadeIn(params): - runFadeInTransition(image: image, params: params, response: response) - case let .custom(closure): - // The user is reponsible for both displaying an image and performing - // animations. - closure(imageView, image.image) - } - } else { - imageView.display(image) - } - - #if os(iOS) || os(tvOS) - if let contentMode = options.contentMode(for: response) { - imageView.contentMode = contentMode - } - #endif - } - - #elseif os(watchOS) - - private func display(_ image: ImageContainer, _ isFromMemory: Bool, _ response: ImageLoadingOptions.ResponseType) { - imageView?.display(image) - } - - #endif -} - -// MARK: - ImageViewController (Transitions) - -private extension ImageViewController { - #if os(iOS) || os(tvOS) - - private func runFadeInTransition(image: ImageContainer, params: ImageLoadingOptions.Transition.Parameters, response: ImageLoadingOptions.ResponseType) { - guard let imageView = imageView else { - return - } - - // Special case where it animates between content modes, only works - // on imageView subclasses. - if let contentMode = options.contentMode(for: response), imageView.contentMode != contentMode, let imageView = imageView as? UIImageView, imageView.image != nil { - runCrossDissolveWithContentMode(imageView: imageView, image: image, params: params) - } else { - runSimpleFadeIn(image: image, params: params) - } - } - - private func runSimpleFadeIn(image: ImageContainer, params: ImageLoadingOptions.Transition.Parameters) { - guard let imageView = imageView else { - return - } - - UIView.transition( - with: imageView, - duration: params.duration, - options: params.options.union(.transitionCrossDissolve), - animations: { - imageView.nuke_display(image: image.image, data: image.data) - }, - completion: nil - ) - } - - /// Performs cross-dissolve animation alonside transition to a new content - /// mode. This isn't natively supported feature and it requires a second - /// image view. There might be better ways to implement it. - private func runCrossDissolveWithContentMode(imageView: UIImageView, image: ImageContainer, params: ImageLoadingOptions.Transition.Parameters) { - // Lazily create a transition view. - let transitionView = self.transitionImageView - - // Create a transition view which mimics current view's contents. - transitionView.image = imageView.image - transitionView.contentMode = imageView.contentMode - imageView.addSubview(transitionView) - transitionView.frame = imageView.bounds - - // "Manual" cross-fade. - transitionView.alpha = 1 - imageView.alpha = 0 - imageView.display(image) // Display new image in current view - - UIView.animate( - withDuration: params.duration, - delay: 0, - options: params.options, - animations: { - transitionView.alpha = 0 - imageView.alpha = 1 - }, - completion: { isCompleted in - if isCompleted { - transitionView.removeFromSuperview() - } - } - ) - } - - #elseif os(macOS) - - private func runFadeInTransition(image: ImageContainer, params: ImageLoadingOptions.Transition.Parameters, response: ImageLoadingOptions.ResponseType) { - let animation = CABasicAnimation(keyPath: "opacity") - animation.duration = params.duration - animation.fromValue = 0 - animation.toValue = 1 - imageView?.layer?.add(animation, forKey: "imageTransition") - - imageView?.display(image) - } - - #endif -} diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj deleted file mode 100644 index d91394e21..000000000 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1391 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 55; - objects = { - -/* Begin PBXAggregateTarget section */ - ED77B4B88587C894E85C361023D67C53 /* Sparkle */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 2C8D06A2289713323892B3638F08AC0B /* Build configuration list for PBXAggregateTarget "Sparkle" */; - buildPhases = ( - ); - dependencies = ( - ); - name = Sparkle; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 01A6B167EF9613254D827A8F166A3B92 /* Pods-AltServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D94974804CB5C504BDB24325333B8C93 /* Pods-AltServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0F9C7CD03E191996E9ECAB298736E293 /* Operation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A5900F6730E9C50872B3781126A12C /* Operation.swift */; }; - 135A92BC284C94D0B14100C76C1525A7 /* Nuke-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 14B9CA39D5605E1146D994F22ABB0DB2 /* Nuke-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1859749D184594E6A0D0C62ECC43ECC8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84F59C7DFDE264782C5E1282C1070FA2 /* Foundation.framework */; }; - 1E669692D6688C6C6A9286FDD7673FEE /* ImageDecoders+Default.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15A626DBAE45050D4613BF5E30BC5990 /* ImageDecoders+Default.swift */; }; - 1F359ADC8D26588C41E48E3099AB234D /* ImagePipeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 077A5CB52D1F5B35419AE23CEAB9613A /* ImagePipeline.swift */; }; - 22403265D88CA4D322BFEE168DAE6083 /* FetchImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49A1ECB5E49C4BFD46A7E614FB549A57 /* FetchImage.swift */; }; - 26A2A90C8F25CB390ED972DD55779F86 /* ImageProcessors+Anonymous.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FAFDEE9E6FB25FA2F916FEE6CBC9C5C /* ImageProcessors+Anonymous.swift */; }; - 292CD657DCB176D05E64CA4E58E46500 /* ImageProcessors+GaussianBlur.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DD5DBE355033822E4F0CEA8EE0E769E /* ImageProcessors+GaussianBlur.swift */; }; - 2E53A61707C24CB86CE962F1C11EEF87 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C9E40548C22542ADFAAA72531A6E114 /* Security.framework */; }; - 345FFA76C3DBC9F7479FB2916BAEEF6C /* AssetType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35FCF51E4BB2C0F6EE3CC3774C74379 /* AssetType.swift */; }; - 4A1EB33B700D5C7EF8F158682D5D7507 /* LinkedList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6262A51B0CEB6EEAD1EB1937EC6339E8 /* LinkedList.swift */; }; - 4B8C3F2FA4198FF2B75BC5051239828F /* ImageProcessors+Resize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C1EA7E081150138CDC5CDCB612578B0 /* ImageProcessors+Resize.swift */; }; - 4D69A01CA3C2347F8E5AB7A35C5FA3E9 /* DataLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77E6C28E32BA96B1552C923EBBE8B788 /* DataLoader.swift */; }; - 4E53CFC2BBA386B1EEDCB43A332AA93F /* Pods-AltStore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 455A33F3E94A4F92A995C497198894FC /* Pods-AltStore-dummy.m */; }; - 5097E719EBE656F8029A973049EE74E2 /* ImagePipelineDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 115FAC5247F31B33A099C53D3F0D4C75 /* ImagePipelineDelegate.swift */; }; - 5211B156C91D544BEB6B489A38E9CACC /* ImageProcessors+CoreImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05C24A90C52E00ACFBD569D511677E0A /* ImageProcessors+CoreImage.swift */; }; - 5475063D51371DDEC3BEC84B4F909625 /* ImageEncoders+Default.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA03C0181C39DE365649BD4EEEC9E24B /* ImageEncoders+Default.swift */; }; - 59261981ACC065EE0939532B0F03D6A7 /* Allocations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B4F016682F90314E9C48B55AA43462F /* Allocations.swift */; }; - 610A713AE07C69A32DAF3469A9C22E56 /* OperationTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39918419D809BF27CDB6DF93220C4DB9 /* OperationTask.swift */; }; - 64508C96F11FE4F026C8CDA1353C8578 /* ImageDecompression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30442094572BDA121099416102908EFD /* ImageDecompression.swift */; }; - 65B5A64F496A9E1114CEFCE6D0538EA4 /* STPrivilegedTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AE3AEECCEA5834DD3730602308ED017 /* STPrivilegedTask.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 69F0F5729F1FEF857CD35D91DE95777C /* TaskFetchOriginalImageData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9201ABBB03BD14C1DC31BD178D77D696 /* TaskFetchOriginalImageData.swift */; }; - 6D79581387296B702329C158FEE56CED /* ImageProcessors+RoundedCorners.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A8BF73AF80ECEF6C15C7C1CE7A0CD74 /* ImageProcessors+RoundedCorners.swift */; }; - 72129F0AD778C01CBA7E489935E9792E /* ImageDecoderRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3155D1BDF6B633FD73CDDD93596C7EEA /* ImageDecoderRegistry.swift */; }; - 77271721D4C157C6013B20E2607CED2B /* ImageEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9715346FB270F625BBEC0510DE2817D6 /* ImageEncoding.swift */; }; - 78A752DFE0300389E3A489C9AD442F83 /* TaskLoadImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDCAF3CD287C44D81286B441180501F3 /* TaskLoadImage.swift */; }; - 7988291F7523D2315E2D407B48FD01C7 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3906AF619183CDA65EAF7D54DF0EA3DB /* Cocoa.framework */; }; - 7B889C4EBFF71866133B0D4C9224C472 /* ImagePipelineTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE7BFFFA6709FB406D42CCFF26222A9E /* ImagePipelineTask.swift */; }; - 7C45C69F16BBBF8D6FD3927988D541EA /* ImageProcessingOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D73183C9F8A64A80F47B7D2454DF572 /* ImageProcessingOptions.swift */; }; - 7D956402F8F916B5E747392941C0043F /* ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 048927222A9751ACD60635C3458BCDB9 /* ImageCache.swift */; }; - 89A0AD3548ADC0D4B22D0AA0F1412115 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3906AF619183CDA65EAF7D54DF0EA3DB /* Cocoa.framework */; }; - 8AB6E6E48A165BE1F325DD596FA92DD5 /* Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F47D85BD38F92BB3036BC1B79271A644 /* Deprecated.swift */; }; - 8FEF8E98D6371CAEF2DD61B055F34704 /* ImagePipelineCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA1998550532A68DA9E2240EEDD27FD1 /* ImagePipelineCache.swift */; }; - 90857AB9533B7E301E7069A85DD7C638 /* ImageDecoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AE9DE057B09C26BC9801DEC710F7764 /* ImageDecoding.swift */; }; - 90D9CDB0809B217EF1558C26AF27F735 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBFD93821136F2BC3124CEC705D7A3AD /* Extensions.swift */; }; - 91B587FC3EFC5193FB3D0383786F4F71 /* TaskLoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7525E883AD6530939682FB6589E08D21 /* TaskLoadData.swift */; }; - 926F6C85A084E18CACC94AB9BF677C80 /* ImagePrefetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C54FD77428A47ABB665EC0A9DDC2C38 /* ImagePrefetcher.swift */; }; - 92A4E8B8C42232B424FBF77B1D969AA9 /* DataLoading.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4884E8F8FE2AFC3605CDD86DA581AE9 /* DataLoading.swift */; }; - 94124DD76145BAD633765ED3AAD7D5BB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84F59C7DFDE264782C5E1282C1070FA2 /* Foundation.framework */; }; - 9B2C54D6D50DDA4A3496ABF1EC93FFFD /* ImageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = F21D9525F17ED6E50EAE0FC5BAAB1518 /* ImageResponse.swift */; }; - 9D331DE50CCECA629E2F2847514B83C9 /* AsyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0503ACC607D7488F913EC7AE98211640 /* AsyncTask.swift */; }; - A8DA98DF2428321EB2820FEB7B36F84D /* Graphics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9243AC87AF4A443622097DE7AA65AA45 /* Graphics.swift */; }; - B010BACAE4A38E4E20001DA83D69B5EE /* ImageRequestKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = F133CB309C99920D51A8EBE9E33B9B9C /* ImageRequestKeys.swift */; }; - B380F8CFD3259B38FDB593D6D78D07C1 /* ImageDecoders+Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74BDC92883EB0DAE280260414782B989 /* ImageDecoders+Video.swift */; }; - B45C56C1A580A6CDD70F7068E20ED974 /* ResumableData.swift in Sources */ = {isa = PBXBuildFile; fileRef = C58BCD14BCD5B9B6FBE061469DA8FEAB /* ResumableData.swift */; }; - B4C865347925FC687B7C09EFDAEEF774 /* Pods-AltServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F7233C2E8F7C88DDDECEDD2BA0619AAD /* Pods-AltServer-dummy.m */; }; - B5CA4A471CE85699DAA8CC380B906861 /* AVDataAsset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0627639A73B68BD04190F8324E13966C /* AVDataAsset.swift */; }; - B804234256B52BE13E28F370B7DF47D6 /* ImagePublisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F2608AC3C977F37B91BAE4D0B5A75DE /* ImagePublisher.swift */; }; - BB823D4E1ADAD08D80148FDE8ADD1245 /* ImageViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8519310519DC7E4D03A95CDA3E192E30 /* ImageViewExtensions.swift */; }; - BD9B2E8C25A6E23828C2F86BF17E9C86 /* ImageTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC160528DD53716C2C33D968DBD7F34 /* ImageTask.swift */; }; - BE4B2869B2F7F0E4B13C5DF61E605732 /* ImageCaching.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AC88A5D6467CAA618024A19F714049F /* ImageCaching.swift */; }; - C046C4A790435059164887133AF4A5D2 /* ImageProcessing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4690CC66D7AA5E831EC6343F6D3DCC64 /* ImageProcessing.swift */; }; - C25934E55D6776A3B7C4ABB955A51C9F /* DataCaching.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B5013FD7FE74BFD24E69768DDBEC709 /* DataCaching.swift */; }; - C2E512D4C7667977455DE6B2CC30B9EB /* Pods-AltStore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E34D86C3C3C13DC3691B25EF529D497B /* Pods-AltStore-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C4D87F0E6EEFB2E01D8A2544EF217BA7 /* ImageEncoders.swift in Sources */ = {isa = PBXBuildFile; fileRef = E748C9B1FDDBBDBDC35E10C2E274B133 /* ImageEncoders.swift */; }; - C535CE9BCA6F7D5E40C4A05CC82BAE02 /* TaskFetchDecodedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6625BBB166387D983A44A9EAD30F5C2 /* TaskFetchDecodedImage.swift */; }; - C6B6590256A945EC6BDA9194161AF24E /* Combine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FC7DEE90AF3FF10A115E704CBF8B44A /* Combine.swift */; }; - C8031E7C88CC7C985F1B87201A74BE58 /* ImageProcessors+Circle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B8B99121CA82CEF6FBCAB7F388FD51 /* ImageProcessors+Circle.swift */; }; - CC3093550AAF1771F9754576E66588F3 /* ImageProcessors+Composition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1696B701CDF0166199A3E2153D338932 /* ImageProcessors+Composition.swift */; }; - CE5C326BD3A4B7A05D18DC9BB42E2E70 /* STPrivilegedTask-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CB8421BC1450DB71E8F86028A650637 /* STPrivilegedTask-dummy.m */; }; - CF8637AD4EC69F469C1B65753DA6D023 /* RateLimiter.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC871C4024FA5FAD5803729330D116FE /* RateLimiter.swift */; }; - E03FE88A1AF1AC4E22236E57E46EFCFB /* ImageDecoders+Empty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F001DE8F02424FC90CC0B519A461E80 /* ImageDecoders+Empty.swift */; }; - E7B6F44E85F16C74CE9010E4D4B53A2C /* ImageProcessors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 001DBA42E1CDAB8A4953E7027411E452 /* ImageProcessors.swift */; }; - EF662217257FA52C063BB15A6A0FA60F /* STPrivilegedTask-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 51D192C291759D282CBAB209E5EA2F0B /* STPrivilegedTask-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EFDCDC6C85A1A251B764C3485FC5A27D /* ImageEncoders+ImageIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 904C6D7680B4FB44E86600D9C856B7F1 /* ImageEncoders+ImageIO.swift */; }; - F0EC1A0504C1310654C9AFC316FA6A24 /* ImageRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0584F534F55770C4B1932AE5A60A889 /* ImageRequest.swift */; }; - F155D0A2C3D2E7966375C0CA7924F21F /* STPrivilegedTask.h in Headers */ = {isa = PBXBuildFile; fileRef = E5733448474B378DB7DD996680703FE3 /* STPrivilegedTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F3C8F263CE5BB4450AC7EB68DBB6A6BE /* TaskFetchWithPublisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = E16C3D192CF4A0C96A3C2E106C584EDE /* TaskFetchWithPublisher.swift */; }; - F76E1D382B82B281AE61E4D3CE2F0EBA /* Log.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7D736093DA465070BCC76E75D773799 /* Log.swift */; }; - F77C64D1992BD6817CBBB9F609933A6F /* DataCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA7B60C9DD25D5C36E68E26C9594627B /* DataCache.swift */; }; - F7B957857C3A2A4919B5F522E90A505C /* ImagePipelineConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9779DA9C99B63B8BCB45498170322A4 /* ImagePipelineConfiguration.swift */; }; - FD3F6B06FEF412E7ADD06805C8257946 /* Nuke-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 15FA40BB3F915E4FE8B907303C081A24 /* Nuke-dummy.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 4C169C83B74B1267EE838FC61980C9B2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = ED77B4B88587C894E85C361023D67C53; - remoteInfo = Sparkle; - }; - 688A4C62F55E90EAFBA1D13601405131 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 05327B1DB6967DBAA19D1ED734FDBD96; - remoteInfo = STPrivilegedTask; - }; - E7BBB9DAF71F3967A3434F5FFE76642A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 062A64896E847A6749F58B6BA9A931B1; - remoteInfo = Nuke; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 001DBA42E1CDAB8A4953E7027411E452 /* ImageProcessors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProcessors.swift; path = Sources/Core/Processing/ImageProcessors.swift; sourceTree = ""; }; - 048927222A9751ACD60635C3458BCDB9 /* ImageCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageCache.swift; path = Sources/Core/Caching/ImageCache.swift; sourceTree = ""; }; - 0493408C9193029723414F38318C7812 /* SUUpdater.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUUpdater.h; path = Sparkle.framework/Versions/B/Headers/SUUpdater.h; sourceTree = ""; }; - 0503ACC607D7488F913EC7AE98211640 /* AsyncTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsyncTask.swift; path = Sources/Core/Tasks/AsyncTask.swift; sourceTree = ""; }; - 05C24A90C52E00ACFBD569D511677E0A /* ImageProcessors+CoreImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageProcessors+CoreImage.swift"; path = "Sources/Core/Processing/ImageProcessors+CoreImage.swift"; sourceTree = ""; }; - 0627639A73B68BD04190F8324E13966C /* AVDataAsset.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AVDataAsset.swift; path = Sources/Internal/AVDataAsset.swift; sourceTree = ""; }; - 077A5CB52D1F5B35419AE23CEAB9613A /* ImagePipeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePipeline.swift; path = Sources/Core/ImagePipeline.swift; sourceTree = ""; }; - 07BF7D484D5D3C090D9237BA0CB9FDF1 /* STPrivilegedTask.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = STPrivilegedTask.debug.xcconfig; sourceTree = ""; }; - 0BA5F5B0BFB87D4C783CE37888F48AFD /* SUAppcast.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUAppcast.h; path = Sparkle.framework/Versions/B/Headers/SUAppcast.h; sourceTree = ""; }; - 0F5E17C3698A510DA4CC9A9598B9E1CD /* Pods-AltStore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AltStore-Info.plist"; sourceTree = ""; }; - 0F90DFC3CD03D7D2C936DBE280467FCB /* Sparkle.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Sparkle.release.xcconfig; sourceTree = ""; }; - 115FAC5247F31B33A099C53D3F0D4C75 /* ImagePipelineDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePipelineDelegate.swift; path = Sources/Core/ImagePipelineDelegate.swift; sourceTree = ""; }; - 14B9CA39D5605E1146D994F22ABB0DB2 /* Nuke-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nuke-umbrella.h"; sourceTree = ""; }; - 15A626DBAE45050D4613BF5E30BC5990 /* ImageDecoders+Default.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageDecoders+Default.swift"; path = "Sources/Core/Decoding/ImageDecoders+Default.swift"; sourceTree = ""; }; - 15FA40BB3F915E4FE8B907303C081A24 /* Nuke-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Nuke-dummy.m"; sourceTree = ""; }; - 1696B701CDF0166199A3E2153D338932 /* ImageProcessors+Composition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageProcessors+Composition.swift"; path = "Sources/Core/Processing/ImageProcessors+Composition.swift"; sourceTree = ""; }; - 170520634F35D063DFA19C4CB7B4E3AF /* Pods-AltStore-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AltStore-acknowledgements.plist"; sourceTree = ""; }; - 1A8BF73AF80ECEF6C15C7C1CE7A0CD74 /* ImageProcessors+RoundedCorners.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageProcessors+RoundedCorners.swift"; path = "Sources/Core/Processing/ImageProcessors+RoundedCorners.swift"; sourceTree = ""; }; - 1E59991E0A3C0B98CD0DB840B9BDEFC6 /* SPUUpdateCheck.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUUpdateCheck.h; path = Sparkle.framework/Versions/B/Headers/SPUUpdateCheck.h; sourceTree = ""; }; - 1FAFDEE9E6FB25FA2F916FEE6CBC9C5C /* ImageProcessors+Anonymous.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageProcessors+Anonymous.swift"; path = "Sources/Core/Processing/ImageProcessors+Anonymous.swift"; sourceTree = ""; }; - 2734FA7884D09F415B10515FA9D40E1C /* SUStandardVersionComparator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUStandardVersionComparator.h; path = Sparkle.framework/Versions/B/Headers/SUStandardVersionComparator.h; sourceTree = ""; }; - 27CBDE0EA45C22F742B66F96BE6FB739 /* SUVersionDisplayProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUVersionDisplayProtocol.h; path = Sparkle.framework/Versions/B/Headers/SUVersionDisplayProtocol.h; sourceTree = ""; }; - 299C15E0A9DC9FA2D63DD227913CECEA /* Pods-AltStore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-AltStore.modulemap"; sourceTree = ""; }; - 2AE3AEECCEA5834DD3730602308ED017 /* STPrivilegedTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = STPrivilegedTask.m; sourceTree = ""; }; - 2CFEBE8E4FC4A8370DF638999AAFD93F /* Pods-AltServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltServer.debug.xcconfig"; sourceTree = ""; }; - 2DAD7D76FC007F48AE48F2FD15BF01BB /* Nuke */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Nuke; path = Nuke.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2F2608AC3C977F37B91BAE4D0B5A75DE /* ImagePublisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePublisher.swift; path = Sources/Combine/ImagePublisher.swift; sourceTree = ""; }; - 2FA9E52AA5D2A531BA073303FDD7D4B1 /* Pods-AltStore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltStore.debug.xcconfig"; sourceTree = ""; }; - 30442094572BDA121099416102908EFD /* ImageDecompression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDecompression.swift; path = Sources/Core/Processing/ImageDecompression.swift; sourceTree = ""; }; - 3155D1BDF6B633FD73CDDD93596C7EEA /* ImageDecoderRegistry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDecoderRegistry.swift; path = Sources/Core/Decoding/ImageDecoderRegistry.swift; sourceTree = ""; }; - 3302E68C62CF9BCC30D24F6B7885C31D /* Pods-AltServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltServer.release.xcconfig"; sourceTree = ""; }; - 3374B71E5CAD473C609C2D7D1C8D8404 /* SPUDownloadData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloadData.h; path = Sparkle.framework/Versions/B/Headers/SPUDownloadData.h; sourceTree = ""; }; - 38E2911A9CCE3F38FC54DD6AE866CCFF /* Sparkle.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Sparkle.debug.xcconfig; sourceTree = ""; }; - 3906AF619183CDA65EAF7D54DF0EA3DB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.0.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; }; - 39918419D809BF27CDB6DF93220C4DB9 /* OperationTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OperationTask.swift; path = Sources/Core/Tasks/OperationTask.swift; sourceTree = ""; }; - 3DD5DBE355033822E4F0CEA8EE0E769E /* ImageProcessors+GaussianBlur.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageProcessors+GaussianBlur.swift"; path = "Sources/Core/Processing/ImageProcessors+GaussianBlur.swift"; sourceTree = ""; }; - 3E5CD7DD2C02399DEC763A9EC24114DC /* SPUStandardUpdaterController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUStandardUpdaterController.h; path = Sparkle.framework/Versions/B/Headers/SPUStandardUpdaterController.h; sourceTree = ""; }; - 3F857D324015D6A264BA834A081D5D40 /* Pods-AltStore-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AltStore-frameworks.sh"; sourceTree = ""; }; - 429A2EBD34312877926E241E675800DB /* Pods-AltServer-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-AltServer-acknowledgements.markdown"; sourceTree = ""; }; - 455A33F3E94A4F92A995C497198894FC /* Pods-AltStore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-AltStore-dummy.m"; sourceTree = ""; }; - 4690CC66D7AA5E831EC6343F6D3DCC64 /* ImageProcessing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProcessing.swift; path = Sources/Core/Processing/ImageProcessing.swift; sourceTree = ""; }; - 47A5900F6730E9C50872B3781126A12C /* Operation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operation.swift; path = Sources/Internal/Operation.swift; sourceTree = ""; }; - 47E9E447C37FAB50C0BC6D2A4BC1C43C /* SPUUpdater.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUUpdater.h; path = Sparkle.framework/Versions/B/Headers/SPUUpdater.h; sourceTree = ""; }; - 49A1ECB5E49C4BFD46A7E614FB549A57 /* FetchImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchImage.swift; path = Sources/UI/FetchImage.swift; sourceTree = ""; }; - 4CFAA8DBDB35B654FC90CEF15A44F19F /* SUAppcastItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUAppcastItem.h; path = Sparkle.framework/Versions/B/Headers/SUAppcastItem.h; sourceTree = ""; }; - 4FC7DEE90AF3FF10A115E704CBF8B44A /* Combine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Combine.swift; path = Sources/Internal/Combine.swift; sourceTree = ""; }; - 51D192C291759D282CBAB209E5EA2F0B /* STPrivilegedTask-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "STPrivilegedTask-umbrella.h"; sourceTree = ""; }; - 5203998D32EBDB210437CD9A55D43033 /* Pods-AltStore-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-AltStore-acknowledgements.markdown"; sourceTree = ""; }; - 555930A25269B6013B5953A44D4278F2 /* Nuke-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Nuke-Info.plist"; sourceTree = ""; }; - 5AE9DE057B09C26BC9801DEC710F7764 /* ImageDecoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDecoding.swift; path = Sources/Core/Decoding/ImageDecoding.swift; sourceTree = ""; }; - 5AF5415006B5365E53F7518348696EA1 /* Pods-AltServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AltServer-Info.plist"; sourceTree = ""; }; - 5B4F016682F90314E9C48B55AA43462F /* Allocations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Allocations.swift; path = Sources/Internal/Allocations.swift; sourceTree = ""; }; - 5CB8421BC1450DB71E8F86028A650637 /* STPrivilegedTask-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "STPrivilegedTask-dummy.m"; sourceTree = ""; }; - 5CC160528DD53716C2C33D968DBD7F34 /* ImageTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageTask.swift; path = Sources/Core/ImageTask.swift; sourceTree = ""; }; - 5DCFDEF8FB1C4F3F24A37E119FA46DCC /* Nuke.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nuke.release.xcconfig; sourceTree = ""; }; - 6262A51B0CEB6EEAD1EB1937EC6339E8 /* LinkedList.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinkedList.swift; path = Sources/Internal/LinkedList.swift; sourceTree = ""; }; - 65A2DE6402D0AE793EE6B7B93F767DF8 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; - 676644EB1805E96CE47F7882733262B3 /* Pods-AltStore */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-AltStore"; path = Pods_AltStore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 690600F80116DBC7C67600145D4A498D /* Nuke-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nuke-prefix.pch"; sourceTree = ""; }; - 6B5013FD7FE74BFD24E69768DDBEC709 /* DataCaching.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataCaching.swift; path = Sources/Core/Caching/DataCaching.swift; sourceTree = ""; }; - 6F5E8F591864906F71EF4F4534AB3C4D /* SUUpdatePermissionResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUUpdatePermissionResponse.h; path = Sparkle.framework/Versions/B/Headers/SUUpdatePermissionResponse.h; sourceTree = ""; }; - 6FC794F0B95B5508E927982704BB4322 /* Pods-AltServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-AltServer.modulemap"; sourceTree = ""; }; - 74B3B3738FC6F629E6556412B3C26F6E /* Nuke.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nuke.debug.xcconfig; sourceTree = ""; }; - 74BDC92883EB0DAE280260414782B989 /* ImageDecoders+Video.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageDecoders+Video.swift"; path = "Sources/Core/Decoding/ImageDecoders+Video.swift"; sourceTree = ""; }; - 7525E883AD6530939682FB6589E08D21 /* TaskLoadData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskLoadData.swift; path = Sources/Core/Tasks/TaskLoadData.swift; sourceTree = ""; }; - 77E6C28E32BA96B1552C923EBBE8B788 /* DataLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataLoader.swift; path = Sources/Core/Loading/DataLoader.swift; sourceTree = ""; }; - 7AC88A5D6467CAA618024A19F714049F /* ImageCaching.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageCaching.swift; path = Sources/Core/Caching/ImageCaching.swift; sourceTree = ""; }; - 7E3190F30F7BA4843B5FBBF915303049 /* STPrivilegedTask.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = STPrivilegedTask.release.xcconfig; sourceTree = ""; }; - 7EE269686CA3E6D66DED1A3CB90D9DDE /* SPUUpdaterSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUUpdaterSettings.h; path = Sparkle.framework/Versions/B/Headers/SPUUpdaterSettings.h; sourceTree = ""; }; - 84F59C7DFDE264782C5E1282C1070FA2 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 8502324BF180DD84E35FD6277BD45C2D /* SPUUpdatePermissionRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUUpdatePermissionRequest.h; path = Sparkle.framework/Versions/B/Headers/SPUUpdatePermissionRequest.h; sourceTree = ""; }; - 8519310519DC7E4D03A95CDA3E192E30 /* ImageViewExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageViewExtensions.swift; path = Sources/UI/ImageViewExtensions.swift; sourceTree = ""; }; - 87F568BE66DBCFBD3302E7D976107605 /* SUExport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUExport.h; path = Sparkle.framework/Versions/B/Headers/SUExport.h; sourceTree = ""; }; - 8AD5A34AC95FEF64B48BC1CDCB4B2C73 /* SPUUpdaterDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUUpdaterDelegate.h; path = Sparkle.framework/Versions/B/Headers/SPUUpdaterDelegate.h; sourceTree = ""; }; - 8C1EA7E081150138CDC5CDCB612578B0 /* ImageProcessors+Resize.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageProcessors+Resize.swift"; path = "Sources/Core/Processing/ImageProcessors+Resize.swift"; sourceTree = ""; }; - 8C9E40548C22542ADFAAA72531A6E114 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.0.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; - 8D73183C9F8A64A80F47B7D2454DF572 /* ImageProcessingOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProcessingOptions.swift; path = Sources/Core/Processing/ImageProcessingOptions.swift; sourceTree = ""; }; - 8EBF5043034AFB3A6A8F28C373BF0EC0 /* Pods-AltServer */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-AltServer"; path = Pods_AltServer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8F001DE8F02424FC90CC0B519A461E80 /* ImageDecoders+Empty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageDecoders+Empty.swift"; path = "Sources/Core/Decoding/ImageDecoders+Empty.swift"; sourceTree = ""; }; - 904C6D7680B4FB44E86600D9C856B7F1 /* ImageEncoders+ImageIO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageEncoders+ImageIO.swift"; path = "Sources/Core/Encoding/ImageEncoders+ImageIO.swift"; sourceTree = ""; }; - 9201ABBB03BD14C1DC31BD178D77D696 /* TaskFetchOriginalImageData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskFetchOriginalImageData.swift; path = Sources/Core/Tasks/TaskFetchOriginalImageData.swift; sourceTree = ""; }; - 9243AC87AF4A443622097DE7AA65AA45 /* Graphics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Graphics.swift; path = Sources/Internal/Graphics.swift; sourceTree = ""; }; - 92755758B3CAD1C359650CA1E4E47A1C /* SUUpdaterDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUUpdaterDelegate.h; path = Sparkle.framework/Versions/B/Headers/SUUpdaterDelegate.h; sourceTree = ""; }; - 95822BC0157F23AAC7424B8A8F2046D2 /* SPUStandardUserDriverDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUStandardUserDriverDelegate.h; path = Sparkle.framework/Versions/B/Headers/SPUStandardUserDriverDelegate.h; sourceTree = ""; }; - 96E44467A4E769DF17455773A36AA4D8 /* Nuke.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Nuke.modulemap; sourceTree = ""; }; - 9715346FB270F625BBEC0510DE2817D6 /* ImageEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageEncoding.swift; path = Sources/Core/Encoding/ImageEncoding.swift; sourceTree = ""; }; - 98E7C2AD247570C7C9A2E92DEDD3623E /* Pods-AltServer-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AltServer-acknowledgements.plist"; sourceTree = ""; }; - 9A098F5121A77C41F1AC5EA12B8490F8 /* STPrivilegedTask-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "STPrivilegedTask-Info.plist"; sourceTree = ""; }; - 9C54FD77428A47ABB665EC0A9DDC2C38 /* ImagePrefetcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePrefetcher.swift; path = Sources/Core/Prefetching/ImagePrefetcher.swift; sourceTree = ""; }; - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - AC871C4024FA5FAD5803729330D116FE /* RateLimiter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RateLimiter.swift; path = Sources/Internal/RateLimiter.swift; sourceTree = ""; }; - AD0AD8743C2E8E2755B450E24C6D43B5 /* SUVersionComparisonProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUVersionComparisonProtocol.h; path = Sparkle.framework/Versions/B/Headers/SUVersionComparisonProtocol.h; sourceTree = ""; }; - B35FCF51E4BB2C0F6EE3CC3774C74379 /* AssetType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssetType.swift; path = Sources/Core/Decoding/AssetType.swift; sourceTree = ""; }; - B6625BBB166387D983A44A9EAD30F5C2 /* TaskFetchDecodedImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskFetchDecodedImage.swift; path = Sources/Core/Tasks/TaskFetchDecodedImage.swift; sourceTree = ""; }; - BA03C0181C39DE365649BD4EEEC9E24B /* ImageEncoders+Default.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageEncoders+Default.swift"; path = "Sources/Core/Encoding/ImageEncoders+Default.swift"; sourceTree = ""; }; - BDCAF3CD287C44D81286B441180501F3 /* TaskLoadImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskLoadImage.swift; path = Sources/Core/Tasks/TaskLoadImage.swift; sourceTree = ""; }; - BF66776FB2E54BC51AAB718DC2240E7D /* SPUUserDriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUUserDriver.h; path = Sparkle.framework/Versions/B/Headers/SPUUserDriver.h; sourceTree = ""; }; - C0584F534F55770C4B1932AE5A60A889 /* ImageRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageRequest.swift; path = Sources/Core/ImageRequest.swift; sourceTree = ""; }; - C18EFBEC5A824622A7735FE1EEDCAF5E /* STPrivilegedTask-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "STPrivilegedTask-prefix.pch"; sourceTree = ""; }; - C58BCD14BCD5B9B6FBE061469DA8FEAB /* ResumableData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResumableData.swift; path = Sources/Internal/ResumableData.swift; sourceTree = ""; }; - C854FE6537D66030C0F0CA8D389A7EFE /* SPUUserUpdateState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUUserUpdateState.h; path = Sparkle.framework/Versions/B/Headers/SPUUserUpdateState.h; sourceTree = ""; }; - C9779DA9C99B63B8BCB45498170322A4 /* ImagePipelineConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePipelineConfiguration.swift; path = Sources/Core/ImagePipelineConfiguration.swift; sourceTree = ""; }; - CAA01E36D3B1C978341ADAFE236A63F9 /* Sparkle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Sparkle.h; path = Sparkle.framework/Versions/B/Headers/Sparkle.h; sourceTree = ""; }; - CBFD93821136F2BC3124CEC705D7A3AD /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = Sources/Internal/Extensions.swift; sourceTree = ""; }; - CE7BFFFA6709FB406D42CCFF26222A9E /* ImagePipelineTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePipelineTask.swift; path = Sources/Core/Tasks/ImagePipelineTask.swift; sourceTree = ""; }; - D656286D635465965FE44E5A82D40264 /* STPrivilegedTask.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = STPrivilegedTask.modulemap; sourceTree = ""; }; - D7D736093DA465070BCC76E75D773799 /* Log.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Log.swift; path = Sources/Internal/Log.swift; sourceTree = ""; }; - D94974804CB5C504BDB24325333B8C93 /* Pods-AltServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-AltServer-umbrella.h"; sourceTree = ""; }; - D9EBFC45EE2826E15E03E517F2184329 /* Pods-AltStore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AltStore.release.xcconfig"; sourceTree = ""; }; - DA7B60C9DD25D5C36E68E26C9594627B /* DataCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataCache.swift; path = Sources/Core/Caching/DataCache.swift; sourceTree = ""; }; - E16C3D192CF4A0C96A3C2E106C584EDE /* TaskFetchWithPublisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskFetchWithPublisher.swift; path = Sources/Core/Tasks/TaskFetchWithPublisher.swift; sourceTree = ""; }; - E34D86C3C3C13DC3691B25EF529D497B /* Pods-AltStore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-AltStore-umbrella.h"; sourceTree = ""; }; - E5733448474B378DB7DD996680703FE3 /* STPrivilegedTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = STPrivilegedTask.h; sourceTree = ""; }; - E6B8B99121CA82CEF6FBCAB7F388FD51 /* ImageProcessors+Circle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageProcessors+Circle.swift"; path = "Sources/Core/Processing/ImageProcessors+Circle.swift"; sourceTree = ""; }; - E748C9B1FDDBBDBDC35E10C2E274B133 /* ImageEncoders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageEncoders.swift; path = Sources/Core/Encoding/ImageEncoders.swift; sourceTree = ""; }; - E8B532DBFA4D3A0C230A3AC2BAE61DC0 /* Pods-AltServer-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AltServer-frameworks.sh"; sourceTree = ""; }; - EA1998550532A68DA9E2240EEDD27FD1 /* ImagePipelineCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePipelineCache.swift; path = Sources/Core/Caching/ImagePipelineCache.swift; sourceTree = ""; }; - EA86DC5AB293ABD83CF112E4074DA108 /* SUErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUErrors.h; path = Sparkle.framework/Versions/B/Headers/SUErrors.h; sourceTree = ""; }; - ECB81C33948E641ABE3B268D296018CC /* STPrivilegedTask */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = STPrivilegedTask; path = STPrivilegedTask.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F133CB309C99920D51A8EBE9E33B9B9C /* ImageRequestKeys.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageRequestKeys.swift; path = Sources/Internal/ImageRequestKeys.swift; sourceTree = ""; }; - F21D9525F17ED6E50EAE0FC5BAAB1518 /* ImageResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageResponse.swift; path = Sources/Core/ImageResponse.swift; sourceTree = ""; }; - F47D85BD38F92BB3036BC1B79271A644 /* Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecated.swift; path = Sources/Internal/Deprecated.swift; sourceTree = ""; }; - F4884E8F8FE2AFC3605CDD86DA581AE9 /* DataLoading.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataLoading.swift; path = Sources/Core/Loading/DataLoading.swift; sourceTree = ""; }; - F7233C2E8F7C88DDDECEDD2BA0619AAD /* Pods-AltServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-AltServer-dummy.m"; sourceTree = ""; }; - F78883DF4C8C0310686F3EB83D16CE39 /* SPUStandardUserDriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUStandardUserDriver.h; path = Sparkle.framework/Versions/B/Headers/SPUStandardUserDriver.h; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 456A82DE4D0D63E1E1037718FFB2FB59 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 89A0AD3548ADC0D4B22D0AA0F1412115 /* Cocoa.framework in Frameworks */, - 2E53A61707C24CB86CE962F1C11EEF87 /* Security.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5DBA3657BA0D069489B2D9338CEC245E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1859749D184594E6A0D0C62ECC43ECC8 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8C4EF355CA1A981A56FCFD1C94AEAEEC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 94124DD76145BAD633765ED3AAD7D5BB /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B4003AFCB9F522E788B96A187A008761 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 7988291F7523D2315E2D407B48FD01C7 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 133DBD716E97D9E847326C7CC5C5AF66 /* Pods-AltStore */ = { - isa = PBXGroup; - children = ( - 299C15E0A9DC9FA2D63DD227913CECEA /* Pods-AltStore.modulemap */, - 5203998D32EBDB210437CD9A55D43033 /* Pods-AltStore-acknowledgements.markdown */, - 170520634F35D063DFA19C4CB7B4E3AF /* Pods-AltStore-acknowledgements.plist */, - 455A33F3E94A4F92A995C497198894FC /* Pods-AltStore-dummy.m */, - 3F857D324015D6A264BA834A081D5D40 /* Pods-AltStore-frameworks.sh */, - 0F5E17C3698A510DA4CC9A9598B9E1CD /* Pods-AltStore-Info.plist */, - E34D86C3C3C13DC3691B25EF529D497B /* Pods-AltStore-umbrella.h */, - 2FA9E52AA5D2A531BA073303FDD7D4B1 /* Pods-AltStore.debug.xcconfig */, - D9EBFC45EE2826E15E03E517F2184329 /* Pods-AltStore.release.xcconfig */, - ); - name = "Pods-AltStore"; - path = "Target Support Files/Pods-AltStore"; - sourceTree = ""; - }; - 2195395A96A2FA342846C8E0C9353C41 /* Support Files */ = { - isa = PBXGroup; - children = ( - 38E2911A9CCE3F38FC54DD6AE866CCFF /* Sparkle.debug.xcconfig */, - 0F90DFC3CD03D7D2C936DBE280467FCB /* Sparkle.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Sparkle"; - sourceTree = ""; - }; - 288015F968D80FF4393BD756C71DE012 /* Nuke */ = { - isa = PBXGroup; - children = ( - 5B4F016682F90314E9C48B55AA43462F /* Allocations.swift */, - B35FCF51E4BB2C0F6EE3CC3774C74379 /* AssetType.swift */, - 0503ACC607D7488F913EC7AE98211640 /* AsyncTask.swift */, - 0627639A73B68BD04190F8324E13966C /* AVDataAsset.swift */, - 4FC7DEE90AF3FF10A115E704CBF8B44A /* Combine.swift */, - DA7B60C9DD25D5C36E68E26C9594627B /* DataCache.swift */, - 6B5013FD7FE74BFD24E69768DDBEC709 /* DataCaching.swift */, - 77E6C28E32BA96B1552C923EBBE8B788 /* DataLoader.swift */, - F4884E8F8FE2AFC3605CDD86DA581AE9 /* DataLoading.swift */, - F47D85BD38F92BB3036BC1B79271A644 /* Deprecated.swift */, - CBFD93821136F2BC3124CEC705D7A3AD /* Extensions.swift */, - 49A1ECB5E49C4BFD46A7E614FB549A57 /* FetchImage.swift */, - 9243AC87AF4A443622097DE7AA65AA45 /* Graphics.swift */, - 048927222A9751ACD60635C3458BCDB9 /* ImageCache.swift */, - 7AC88A5D6467CAA618024A19F714049F /* ImageCaching.swift */, - 3155D1BDF6B633FD73CDDD93596C7EEA /* ImageDecoderRegistry.swift */, - 15A626DBAE45050D4613BF5E30BC5990 /* ImageDecoders+Default.swift */, - 8F001DE8F02424FC90CC0B519A461E80 /* ImageDecoders+Empty.swift */, - 74BDC92883EB0DAE280260414782B989 /* ImageDecoders+Video.swift */, - 5AE9DE057B09C26BC9801DEC710F7764 /* ImageDecoding.swift */, - 30442094572BDA121099416102908EFD /* ImageDecompression.swift */, - E748C9B1FDDBBDBDC35E10C2E274B133 /* ImageEncoders.swift */, - BA03C0181C39DE365649BD4EEEC9E24B /* ImageEncoders+Default.swift */, - 904C6D7680B4FB44E86600D9C856B7F1 /* ImageEncoders+ImageIO.swift */, - 9715346FB270F625BBEC0510DE2817D6 /* ImageEncoding.swift */, - 077A5CB52D1F5B35419AE23CEAB9613A /* ImagePipeline.swift */, - EA1998550532A68DA9E2240EEDD27FD1 /* ImagePipelineCache.swift */, - C9779DA9C99B63B8BCB45498170322A4 /* ImagePipelineConfiguration.swift */, - 115FAC5247F31B33A099C53D3F0D4C75 /* ImagePipelineDelegate.swift */, - CE7BFFFA6709FB406D42CCFF26222A9E /* ImagePipelineTask.swift */, - 9C54FD77428A47ABB665EC0A9DDC2C38 /* ImagePrefetcher.swift */, - 4690CC66D7AA5E831EC6343F6D3DCC64 /* ImageProcessing.swift */, - 8D73183C9F8A64A80F47B7D2454DF572 /* ImageProcessingOptions.swift */, - 001DBA42E1CDAB8A4953E7027411E452 /* ImageProcessors.swift */, - 1FAFDEE9E6FB25FA2F916FEE6CBC9C5C /* ImageProcessors+Anonymous.swift */, - E6B8B99121CA82CEF6FBCAB7F388FD51 /* ImageProcessors+Circle.swift */, - 1696B701CDF0166199A3E2153D338932 /* ImageProcessors+Composition.swift */, - 05C24A90C52E00ACFBD569D511677E0A /* ImageProcessors+CoreImage.swift */, - 3DD5DBE355033822E4F0CEA8EE0E769E /* ImageProcessors+GaussianBlur.swift */, - 8C1EA7E081150138CDC5CDCB612578B0 /* ImageProcessors+Resize.swift */, - 1A8BF73AF80ECEF6C15C7C1CE7A0CD74 /* ImageProcessors+RoundedCorners.swift */, - 2F2608AC3C977F37B91BAE4D0B5A75DE /* ImagePublisher.swift */, - C0584F534F55770C4B1932AE5A60A889 /* ImageRequest.swift */, - F133CB309C99920D51A8EBE9E33B9B9C /* ImageRequestKeys.swift */, - F21D9525F17ED6E50EAE0FC5BAAB1518 /* ImageResponse.swift */, - 5CC160528DD53716C2C33D968DBD7F34 /* ImageTask.swift */, - 8519310519DC7E4D03A95CDA3E192E30 /* ImageViewExtensions.swift */, - 6262A51B0CEB6EEAD1EB1937EC6339E8 /* LinkedList.swift */, - D7D736093DA465070BCC76E75D773799 /* Log.swift */, - 47A5900F6730E9C50872B3781126A12C /* Operation.swift */, - 39918419D809BF27CDB6DF93220C4DB9 /* OperationTask.swift */, - AC871C4024FA5FAD5803729330D116FE /* RateLimiter.swift */, - C58BCD14BCD5B9B6FBE061469DA8FEAB /* ResumableData.swift */, - B6625BBB166387D983A44A9EAD30F5C2 /* TaskFetchDecodedImage.swift */, - 9201ABBB03BD14C1DC31BD178D77D696 /* TaskFetchOriginalImageData.swift */, - E16C3D192CF4A0C96A3C2E106C584EDE /* TaskFetchWithPublisher.swift */, - 7525E883AD6530939682FB6589E08D21 /* TaskLoadData.swift */, - BDCAF3CD287C44D81286B441180501F3 /* TaskLoadImage.swift */, - A5807A2B3F726B7F52EB8C619BC22D3B /* Support Files */, - ); - name = Nuke; - path = Nuke; - sourceTree = ""; - }; - 35E00307DBDD1D8F30A56FC4AC48FB79 /* Products */ = { - isa = PBXGroup; - children = ( - 2DAD7D76FC007F48AE48F2FD15BF01BB /* Nuke */, - 8EBF5043034AFB3A6A8F28C373BF0EC0 /* Pods-AltServer */, - 676644EB1805E96CE47F7882733262B3 /* Pods-AltStore */, - ECB81C33948E641ABE3B268D296018CC /* STPrivilegedTask */, - ); - name = Products; - sourceTree = ""; - }; - 3AF07EFAA8E1B15180A1BBDE8A339F10 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 65A2DE6402D0AE793EE6B7B93F767DF8 /* Sparkle.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 87EAE04E134C1B7DB45C196EC6298054 /* iOS */ = { - isa = PBXGroup; - children = ( - 84F59C7DFDE264782C5E1282C1070FA2 /* Foundation.framework */, - ); - name = iOS; - sourceTree = ""; - }; - 91EBE7786D3158C9960763A47449395C /* Sparkle */ = { - isa = PBXGroup; - children = ( - CAA01E36D3B1C978341ADAFE236A63F9 /* Sparkle.h */, - 3374B71E5CAD473C609C2D7D1C8D8404 /* SPUDownloadData.h */, - 3E5CD7DD2C02399DEC763A9EC24114DC /* SPUStandardUpdaterController.h */, - F78883DF4C8C0310686F3EB83D16CE39 /* SPUStandardUserDriver.h */, - 95822BC0157F23AAC7424B8A8F2046D2 /* SPUStandardUserDriverDelegate.h */, - 1E59991E0A3C0B98CD0DB840B9BDEFC6 /* SPUUpdateCheck.h */, - 8502324BF180DD84E35FD6277BD45C2D /* SPUUpdatePermissionRequest.h */, - 47E9E447C37FAB50C0BC6D2A4BC1C43C /* SPUUpdater.h */, - 8AD5A34AC95FEF64B48BC1CDCB4B2C73 /* SPUUpdaterDelegate.h */, - 7EE269686CA3E6D66DED1A3CB90D9DDE /* SPUUpdaterSettings.h */, - BF66776FB2E54BC51AAB718DC2240E7D /* SPUUserDriver.h */, - C854FE6537D66030C0F0CA8D389A7EFE /* SPUUserUpdateState.h */, - 0BA5F5B0BFB87D4C783CE37888F48AFD /* SUAppcast.h */, - 4CFAA8DBDB35B654FC90CEF15A44F19F /* SUAppcastItem.h */, - EA86DC5AB293ABD83CF112E4074DA108 /* SUErrors.h */, - 87F568BE66DBCFBD3302E7D976107605 /* SUExport.h */, - 2734FA7884D09F415B10515FA9D40E1C /* SUStandardVersionComparator.h */, - 6F5E8F591864906F71EF4F4534AB3C4D /* SUUpdatePermissionResponse.h */, - 0493408C9193029723414F38318C7812 /* SUUpdater.h */, - 92755758B3CAD1C359650CA1E4E47A1C /* SUUpdaterDelegate.h */, - AD0AD8743C2E8E2755B450E24C6D43B5 /* SUVersionComparisonProtocol.h */, - 27CBDE0EA45C22F742B66F96BE6FB739 /* SUVersionDisplayProtocol.h */, - 3AF07EFAA8E1B15180A1BBDE8A339F10 /* Frameworks */, - 2195395A96A2FA342846C8E0C9353C41 /* Support Files */, - ); - name = Sparkle; - path = Sparkle; - sourceTree = ""; - }; - A5807A2B3F726B7F52EB8C619BC22D3B /* Support Files */ = { - isa = PBXGroup; - children = ( - 96E44467A4E769DF17455773A36AA4D8 /* Nuke.modulemap */, - 15FA40BB3F915E4FE8B907303C081A24 /* Nuke-dummy.m */, - 555930A25269B6013B5953A44D4278F2 /* Nuke-Info.plist */, - 690600F80116DBC7C67600145D4A498D /* Nuke-prefix.pch */, - 14B9CA39D5605E1146D994F22ABB0DB2 /* Nuke-umbrella.h */, - 74B3B3738FC6F629E6556412B3C26F6E /* Nuke.debug.xcconfig */, - 5DCFDEF8FB1C4F3F24A37E119FA46DCC /* Nuke.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Nuke"; - sourceTree = ""; - }; - AE4C5984A5D5612470F4D86DEA4C39FA /* Pods-AltServer */ = { - isa = PBXGroup; - children = ( - 6FC794F0B95B5508E927982704BB4322 /* Pods-AltServer.modulemap */, - 429A2EBD34312877926E241E675800DB /* Pods-AltServer-acknowledgements.markdown */, - 98E7C2AD247570C7C9A2E92DEDD3623E /* Pods-AltServer-acknowledgements.plist */, - F7233C2E8F7C88DDDECEDD2BA0619AAD /* Pods-AltServer-dummy.m */, - E8B532DBFA4D3A0C230A3AC2BAE61DC0 /* Pods-AltServer-frameworks.sh */, - 5AF5415006B5365E53F7518348696EA1 /* Pods-AltServer-Info.plist */, - D94974804CB5C504BDB24325333B8C93 /* Pods-AltServer-umbrella.h */, - 2CFEBE8E4FC4A8370DF638999AAFD93F /* Pods-AltServer.debug.xcconfig */, - 3302E68C62CF9BCC30D24F6B7885C31D /* Pods-AltServer.release.xcconfig */, - ); - name = "Pods-AltServer"; - path = "Target Support Files/Pods-AltServer"; - sourceTree = ""; - }; - BEAF173CF7BAF5537488976CEC756DA3 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 87EAE04E134C1B7DB45C196EC6298054 /* iOS */, - CF58262BB8484367209250D04A2EE21B /* OS X */, - ); - name = Frameworks; - sourceTree = ""; - }; - CF1408CF629C7361332E53B88F7BD30C = { - isa = PBXGroup; - children = ( - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - BEAF173CF7BAF5537488976CEC756DA3 /* Frameworks */, - EAE91A4DBD9394DED9091B66AB11EC7F /* Pods */, - 35E00307DBDD1D8F30A56FC4AC48FB79 /* Products */, - DB3F905BDA837A2C76ED41F5F49087B7 /* Targets Support Files */, - ); - sourceTree = ""; - }; - CF58262BB8484367209250D04A2EE21B /* OS X */ = { - isa = PBXGroup; - children = ( - 3906AF619183CDA65EAF7D54DF0EA3DB /* Cocoa.framework */, - 8C9E40548C22542ADFAAA72531A6E114 /* Security.framework */, - ); - name = "OS X"; - sourceTree = ""; - }; - DB3F905BDA837A2C76ED41F5F49087B7 /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - AE4C5984A5D5612470F4D86DEA4C39FA /* Pods-AltServer */, - 133DBD716E97D9E847326C7CC5C5AF66 /* Pods-AltStore */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; - E87CAF0EBFC44AAB84A0592763B5D693 /* Support Files */ = { - isa = PBXGroup; - children = ( - D656286D635465965FE44E5A82D40264 /* STPrivilegedTask.modulemap */, - 5CB8421BC1450DB71E8F86028A650637 /* STPrivilegedTask-dummy.m */, - 9A098F5121A77C41F1AC5EA12B8490F8 /* STPrivilegedTask-Info.plist */, - C18EFBEC5A824622A7735FE1EEDCAF5E /* STPrivilegedTask-prefix.pch */, - 51D192C291759D282CBAB209E5EA2F0B /* STPrivilegedTask-umbrella.h */, - 07BF7D484D5D3C090D9237BA0CB9FDF1 /* STPrivilegedTask.debug.xcconfig */, - 7E3190F30F7BA4843B5FBBF915303049 /* STPrivilegedTask.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/STPrivilegedTask"; - sourceTree = ""; - }; - EAE91A4DBD9394DED9091B66AB11EC7F /* Pods */ = { - isa = PBXGroup; - children = ( - 288015F968D80FF4393BD756C71DE012 /* Nuke */, - 91EBE7786D3158C9960763A47449395C /* Sparkle */, - F662F3A87901628E22E80778B7C2E422 /* STPrivilegedTask */, - ); - name = Pods; - sourceTree = ""; - }; - F662F3A87901628E22E80778B7C2E422 /* STPrivilegedTask */ = { - isa = PBXGroup; - children = ( - E5733448474B378DB7DD996680703FE3 /* STPrivilegedTask.h */, - 2AE3AEECCEA5834DD3730602308ED017 /* STPrivilegedTask.m */, - E87CAF0EBFC44AAB84A0592763B5D693 /* Support Files */, - ); - name = STPrivilegedTask; - path = STPrivilegedTask; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 188CA570E55AE01B8AD7CE1575B09A18 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 01A6B167EF9613254D827A8F166A3B92 /* Pods-AltServer-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3E19418017111482C59397AA6702A470 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 135A92BC284C94D0B14100C76C1525A7 /* Nuke-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 79DEC2CFBBEB89232066738A4FB189F1 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - C2E512D4C7667977455DE6B2CC30B9EB /* Pods-AltStore-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C3766E6514BA7C5E5284BED4936AB1ED /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - F155D0A2C3D2E7966375C0CA7924F21F /* STPrivilegedTask.h in Headers */, - EF662217257FA52C063BB15A6A0FA60F /* STPrivilegedTask-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 05327B1DB6967DBAA19D1ED734FDBD96 /* STPrivilegedTask */ = { - isa = PBXNativeTarget; - buildConfigurationList = C47405FE8D46205AF373C7A6F9B2D4D2 /* Build configuration list for PBXNativeTarget "STPrivilegedTask" */; - buildPhases = ( - C3766E6514BA7C5E5284BED4936AB1ED /* Headers */, - BD1B17E0C28987C7C661898490FBF903 /* Sources */, - 456A82DE4D0D63E1E1037718FFB2FB59 /* Frameworks */, - 9C8AAED31893BD044B204B4B2C970AAA /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = STPrivilegedTask; - productName = STPrivilegedTask; - productReference = ECB81C33948E641ABE3B268D296018CC /* STPrivilegedTask */; - productType = "com.apple.product-type.framework"; - }; - 062A64896E847A6749F58B6BA9A931B1 /* Nuke */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0199127CC34CC71E5DAAC28A406BEC18 /* Build configuration list for PBXNativeTarget "Nuke" */; - buildPhases = ( - 3E19418017111482C59397AA6702A470 /* Headers */, - 36B4AEEBF70E8262DD0B3DBD6EA5DC21 /* Sources */, - 5DBA3657BA0D069489B2D9338CEC245E /* Frameworks */, - CB586C4C4EA97897A192E722C0BA97DA /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Nuke; - productName = Nuke; - productReference = 2DAD7D76FC007F48AE48F2FD15BF01BB /* Nuke */; - productType = "com.apple.product-type.framework"; - }; - 7083360F3F274C756CA77375F9D2A2BD /* Pods-AltStore */ = { - isa = PBXNativeTarget; - buildConfigurationList = E3D92D28215D757E6D13D8E5D9B6BEA1 /* Build configuration list for PBXNativeTarget "Pods-AltStore" */; - buildPhases = ( - 79DEC2CFBBEB89232066738A4FB189F1 /* Headers */, - F744A80A6F86566B4C298F473AFC1D48 /* Sources */, - 8C4EF355CA1A981A56FCFD1C94AEAEEC /* Frameworks */, - EB79096CBF23A1C235505CD0DA3CC4F9 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - B3A44D9221B1766C44B7AF84F25785FD /* PBXTargetDependency */, - ); - name = "Pods-AltStore"; - productName = Pods_AltStore; - productReference = 676644EB1805E96CE47F7882733262B3 /* Pods-AltStore */; - productType = "com.apple.product-type.framework"; - }; - 89B529DD288896C2EFC49575065F70FB /* Pods-AltServer */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1922DC49ED081FCA80AEBA4A5D9270AB /* Build configuration list for PBXNativeTarget "Pods-AltServer" */; - buildPhases = ( - 188CA570E55AE01B8AD7CE1575B09A18 /* Headers */, - DFCDA7C7A710D3371BD2CDCB8366A4D0 /* Sources */, - B4003AFCB9F522E788B96A187A008761 /* Frameworks */, - F0A5D6C0C481C2FC6FCF89D0DDD295FD /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - A87E88A31D9A2BA8F5D2FFD1C14B9420 /* PBXTargetDependency */, - 939CE288B4970BEF6FB04E76CCD6F50B /* PBXTargetDependency */, - ); - name = "Pods-AltServer"; - productName = Pods_AltServer; - productReference = 8EBF5043034AFB3A6A8F28C373BF0EC0 /* Pods-AltServer */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - BFDFE7DC352907FC980B868725387E98 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1600; - LastUpgradeCheck = 1600; - }; - buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 13.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - Base, - en, - ); - mainGroup = CF1408CF629C7361332E53B88F7BD30C; - minimizedProjectReferenceProxies = 0; - preferredProjectObjectVersion = 77; - productRefGroup = 35E00307DBDD1D8F30A56FC4AC48FB79 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 062A64896E847A6749F58B6BA9A931B1 /* Nuke */, - 89B529DD288896C2EFC49575065F70FB /* Pods-AltServer */, - 7083360F3F274C756CA77375F9D2A2BD /* Pods-AltStore */, - ED77B4B88587C894E85C361023D67C53 /* Sparkle */, - 05327B1DB6967DBAA19D1ED734FDBD96 /* STPrivilegedTask */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 9C8AAED31893BD044B204B4B2C970AAA /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - CB586C4C4EA97897A192E722C0BA97DA /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EB79096CBF23A1C235505CD0DA3CC4F9 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F0A5D6C0C481C2FC6FCF89D0DDD295FD /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 36B4AEEBF70E8262DD0B3DBD6EA5DC21 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 59261981ACC065EE0939532B0F03D6A7 /* Allocations.swift in Sources */, - 345FFA76C3DBC9F7479FB2916BAEEF6C /* AssetType.swift in Sources */, - 9D331DE50CCECA629E2F2847514B83C9 /* AsyncTask.swift in Sources */, - B5CA4A471CE85699DAA8CC380B906861 /* AVDataAsset.swift in Sources */, - C6B6590256A945EC6BDA9194161AF24E /* Combine.swift in Sources */, - F77C64D1992BD6817CBBB9F609933A6F /* DataCache.swift in Sources */, - C25934E55D6776A3B7C4ABB955A51C9F /* DataCaching.swift in Sources */, - 4D69A01CA3C2347F8E5AB7A35C5FA3E9 /* DataLoader.swift in Sources */, - 92A4E8B8C42232B424FBF77B1D969AA9 /* DataLoading.swift in Sources */, - 8AB6E6E48A165BE1F325DD596FA92DD5 /* Deprecated.swift in Sources */, - 90D9CDB0809B217EF1558C26AF27F735 /* Extensions.swift in Sources */, - 22403265D88CA4D322BFEE168DAE6083 /* FetchImage.swift in Sources */, - A8DA98DF2428321EB2820FEB7B36F84D /* Graphics.swift in Sources */, - 7D956402F8F916B5E747392941C0043F /* ImageCache.swift in Sources */, - BE4B2869B2F7F0E4B13C5DF61E605732 /* ImageCaching.swift in Sources */, - 72129F0AD778C01CBA7E489935E9792E /* ImageDecoderRegistry.swift in Sources */, - 1E669692D6688C6C6A9286FDD7673FEE /* ImageDecoders+Default.swift in Sources */, - E03FE88A1AF1AC4E22236E57E46EFCFB /* ImageDecoders+Empty.swift in Sources */, - B380F8CFD3259B38FDB593D6D78D07C1 /* ImageDecoders+Video.swift in Sources */, - 90857AB9533B7E301E7069A85DD7C638 /* ImageDecoding.swift in Sources */, - 64508C96F11FE4F026C8CDA1353C8578 /* ImageDecompression.swift in Sources */, - C4D87F0E6EEFB2E01D8A2544EF217BA7 /* ImageEncoders.swift in Sources */, - 5475063D51371DDEC3BEC84B4F909625 /* ImageEncoders+Default.swift in Sources */, - EFDCDC6C85A1A251B764C3485FC5A27D /* ImageEncoders+ImageIO.swift in Sources */, - 77271721D4C157C6013B20E2607CED2B /* ImageEncoding.swift in Sources */, - 1F359ADC8D26588C41E48E3099AB234D /* ImagePipeline.swift in Sources */, - 8FEF8E98D6371CAEF2DD61B055F34704 /* ImagePipelineCache.swift in Sources */, - F7B957857C3A2A4919B5F522E90A505C /* ImagePipelineConfiguration.swift in Sources */, - 5097E719EBE656F8029A973049EE74E2 /* ImagePipelineDelegate.swift in Sources */, - 7B889C4EBFF71866133B0D4C9224C472 /* ImagePipelineTask.swift in Sources */, - 926F6C85A084E18CACC94AB9BF677C80 /* ImagePrefetcher.swift in Sources */, - C046C4A790435059164887133AF4A5D2 /* ImageProcessing.swift in Sources */, - 7C45C69F16BBBF8D6FD3927988D541EA /* ImageProcessingOptions.swift in Sources */, - E7B6F44E85F16C74CE9010E4D4B53A2C /* ImageProcessors.swift in Sources */, - 26A2A90C8F25CB390ED972DD55779F86 /* ImageProcessors+Anonymous.swift in Sources */, - C8031E7C88CC7C985F1B87201A74BE58 /* ImageProcessors+Circle.swift in Sources */, - CC3093550AAF1771F9754576E66588F3 /* ImageProcessors+Composition.swift in Sources */, - 5211B156C91D544BEB6B489A38E9CACC /* ImageProcessors+CoreImage.swift in Sources */, - 292CD657DCB176D05E64CA4E58E46500 /* ImageProcessors+GaussianBlur.swift in Sources */, - 4B8C3F2FA4198FF2B75BC5051239828F /* ImageProcessors+Resize.swift in Sources */, - 6D79581387296B702329C158FEE56CED /* ImageProcessors+RoundedCorners.swift in Sources */, - B804234256B52BE13E28F370B7DF47D6 /* ImagePublisher.swift in Sources */, - F0EC1A0504C1310654C9AFC316FA6A24 /* ImageRequest.swift in Sources */, - B010BACAE4A38E4E20001DA83D69B5EE /* ImageRequestKeys.swift in Sources */, - 9B2C54D6D50DDA4A3496ABF1EC93FFFD /* ImageResponse.swift in Sources */, - BD9B2E8C25A6E23828C2F86BF17E9C86 /* ImageTask.swift in Sources */, - BB823D4E1ADAD08D80148FDE8ADD1245 /* ImageViewExtensions.swift in Sources */, - 4A1EB33B700D5C7EF8F158682D5D7507 /* LinkedList.swift in Sources */, - F76E1D382B82B281AE61E4D3CE2F0EBA /* Log.swift in Sources */, - FD3F6B06FEF412E7ADD06805C8257946 /* Nuke-dummy.m in Sources */, - 0F9C7CD03E191996E9ECAB298736E293 /* Operation.swift in Sources */, - 610A713AE07C69A32DAF3469A9C22E56 /* OperationTask.swift in Sources */, - CF8637AD4EC69F469C1B65753DA6D023 /* RateLimiter.swift in Sources */, - B45C56C1A580A6CDD70F7068E20ED974 /* ResumableData.swift in Sources */, - C535CE9BCA6F7D5E40C4A05CC82BAE02 /* TaskFetchDecodedImage.swift in Sources */, - 69F0F5729F1FEF857CD35D91DE95777C /* TaskFetchOriginalImageData.swift in Sources */, - F3C8F263CE5BB4450AC7EB68DBB6A6BE /* TaskFetchWithPublisher.swift in Sources */, - 91B587FC3EFC5193FB3D0383786F4F71 /* TaskLoadData.swift in Sources */, - 78A752DFE0300389E3A489C9AD442F83 /* TaskLoadImage.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BD1B17E0C28987C7C661898490FBF903 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 65B5A64F496A9E1114CEFCE6D0538EA4 /* STPrivilegedTask.m in Sources */, - CE5C326BD3A4B7A05D18DC9BB42E2E70 /* STPrivilegedTask-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DFCDA7C7A710D3371BD2CDCB8366A4D0 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B4C865347925FC687B7C09EFDAEEF774 /* Pods-AltServer-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F744A80A6F86566B4C298F473AFC1D48 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4E53CFC2BBA386B1EEDCB43A332AA93F /* Pods-AltStore-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 939CE288B4970BEF6FB04E76CCD6F50B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Sparkle; - target = ED77B4B88587C894E85C361023D67C53 /* Sparkle */; - targetProxy = 4C169C83B74B1267EE838FC61980C9B2 /* PBXContainerItemProxy */; - }; - A87E88A31D9A2BA8F5D2FFD1C14B9420 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = STPrivilegedTask; - target = 05327B1DB6967DBAA19D1ED734FDBD96 /* STPrivilegedTask */; - targetProxy = 688A4C62F55E90EAFBA1D13601405131 /* PBXContainerItemProxy */; - }; - B3A44D9221B1766C44B7AF84F25785FD /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Nuke; - target = 062A64896E847A6749F58B6BA9A931B1 /* Nuke */; - targetProxy = E7BBB9DAF71F3967A3434F5FFE76642A /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 0EE50850B82F2BA15B832A79A246F34E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 74B3B3738FC6F629E6556412B3C26F6E /* Nuke.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/Nuke/Nuke-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/Nuke/Nuke-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 11.0; - MODULEMAP_FILE = "Target Support Files/Nuke/Nuke.modulemap"; - PRODUCT_MODULE_NAME = Nuke; - PRODUCT_NAME = Nuke; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.5; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 2E68A1CAC2B58C150E0A38AD63E10F2A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5DCFDEF8FB1C4F3F24A37E119FA46DCC /* Nuke.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/Nuke/Nuke-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/Nuke/Nuke-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 11.0; - MODULEMAP_FILE = "Target Support Files/Nuke/Nuke.modulemap"; - PRODUCT_MODULE_NAME = Nuke; - PRODUCT_NAME = Nuke; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.5; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 325C034DFEAA05BF7CA8253BB431229E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0F90DFC3CD03D7D2C936DBE280467FCB /* Sparkle.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CLANG_ENABLE_OBJC_WEAK = NO; - COMBINE_HIDPI_IMAGES = YES; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 11.0; - SDKROOT = macosx; - }; - name = Release; - }; - 3E7B804148F5A93E48474D8EBFA073A6 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 07BF7D484D5D3C090D9237BA0CB9FDF1 /* STPrivilegedTask.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/STPrivilegedTask/STPrivilegedTask-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/STPrivilegedTask/STPrivilegedTask-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 11.0; - MODULEMAP_FILE = "Target Support Files/STPrivilegedTask/STPrivilegedTask.modulemap"; - PRODUCT_MODULE_NAME = STPrivilegedTask; - PRODUCT_NAME = STPrivilegedTask; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 3FD2A8D8022264A60B8325F2DDE08AF0 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MACOSX_DEPLOYMENT_TARGET = 11; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 8AD9C17B57BD4A12889292805D2FC541 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2CFEBE8E4FC4A8370DF638999AAFD93F /* Pods-AltServer.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-AltServer/Pods-AltServer-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 11.0; - MODULEMAP_FILE = "Target Support Files/Pods-AltServer/Pods-AltServer.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 9CCE531BE58ACF0CC51FFC3EAD2C3D58 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7E3190F30F7BA4843B5FBBF915303049 /* STPrivilegedTask.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/STPrivilegedTask/STPrivilegedTask-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/STPrivilegedTask/STPrivilegedTask-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 11.0; - MODULEMAP_FILE = "Target Support Files/STPrivilegedTask/STPrivilegedTask.modulemap"; - PRODUCT_MODULE_NAME = STPrivilegedTask; - PRODUCT_NAME = STPrivilegedTask; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - A72BC2EB21B073E4F3814CEBA825B6BB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3302E68C62CF9BCC30D24F6B7885C31D /* Pods-AltServer.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-AltServer/Pods-AltServer-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 11.0; - MODULEMAP_FILE = "Target Support Files/Pods-AltServer/Pods-AltServer.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - BC0705CA9DCEB294F3F562DEF9A4F84D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 38E2911A9CCE3F38FC54DD6AE866CCFF /* Sparkle.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CLANG_ENABLE_OBJC_WEAK = NO; - COMBINE_HIDPI_IMAGES = YES; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 11.0; - SDKROOT = macosx; - }; - name = Debug; - }; - C46CABA9197260A7936CEF588DB225CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MACOSX_DEPLOYMENT_TARGET = 11; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Release; - }; - E09171BC3962DEAC1587D5486833D398 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D9EBFC45EE2826E15E03E517F2184329 /* Pods-AltStore.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-AltStore/Pods-AltStore-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 11.0; - MODULEMAP_FILE = "Target Support Files/Pods-AltStore/Pods-AltStore.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - FD2C68AC413600F17CB273066F4900FD /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2FA9E52AA5D2A531BA073303FDD7D4B1 /* Pods-AltStore.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-AltStore/Pods-AltStore-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 11.0; - MODULEMAP_FILE = "Target Support Files/Pods-AltStore/Pods-AltStore.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 0199127CC34CC71E5DAAC28A406BEC18 /* Build configuration list for PBXNativeTarget "Nuke" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0EE50850B82F2BA15B832A79A246F34E /* Debug */, - 2E68A1CAC2B58C150E0A38AD63E10F2A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1922DC49ED081FCA80AEBA4A5D9270AB /* Build configuration list for PBXNativeTarget "Pods-AltServer" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8AD9C17B57BD4A12889292805D2FC541 /* Debug */, - A72BC2EB21B073E4F3814CEBA825B6BB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 2C8D06A2289713323892B3638F08AC0B /* Build configuration list for PBXAggregateTarget "Sparkle" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - BC0705CA9DCEB294F3F562DEF9A4F84D /* Debug */, - 325C034DFEAA05BF7CA8253BB431229E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 3FD2A8D8022264A60B8325F2DDE08AF0 /* Debug */, - C46CABA9197260A7936CEF588DB225CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C47405FE8D46205AF373C7A6F9B2D4D2 /* Build configuration list for PBXNativeTarget "STPrivilegedTask" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 3E7B804148F5A93E48474D8EBFA073A6 /* Debug */, - 9CCE531BE58ACF0CC51FFC3EAD2C3D58 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E3D92D28215D757E6D13D8E5D9B6BEA1 /* Build configuration list for PBXNativeTarget "Pods-AltStore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FD2C68AC413600F17CB273066F4900FD /* Debug */, - E09171BC3962DEAC1587D5486833D398 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; -} diff --git a/Pods/Pods.xcodeproj/xcshareddata/xcschemes/AltSign.xcscheme b/Pods/Pods.xcodeproj/xcshareddata/xcschemes/AltSign.xcscheme deleted file mode 100644 index 3073e2a4b..000000000 --- a/Pods/Pods.xcodeproj/xcshareddata/xcschemes/AltSign.xcscheme +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Pods-AltStore.xcscheme b/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Pods-AltStore.xcscheme deleted file mode 100644 index 0ab4ad846..000000000 --- a/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Pods-AltStore.xcscheme +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Pods/STPrivilegedTask/LICENSE b/Pods/STPrivilegedTask/LICENSE deleted file mode 100644 index 73102b80f..000000000 --- a/Pods/STPrivilegedTask/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2008-2021, Sveinbjorn Thordarson -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Pods/STPrivilegedTask/README.md b/Pods/STPrivilegedTask/README.md deleted file mode 100644 index b6c08ae31..000000000 --- a/Pods/STPrivilegedTask/README.md +++ /dev/null @@ -1,202 +0,0 @@ -# STPrivilegedTask - Objective-C class - -An NSTask-like wrapper class around [AuthorizationExecuteWithPrivileges()](https://developer.apple.com/library/mac/documentation/Security/Reference/authorization_ref/#//apple_ref/c/func/AuthorizationExecuteWithPrivileges) -in the macOS Security API to run shell commands with root privileges. - -STPrivilegedTask was created a long time ago. It has been updated over the years to work with the latest -versions of macOS and is available via [CocoaPods](https://cocoapods.org). - -## Examples - -### Create and launch task - -```objective-c -// Create task -STPrivilegedTask *privilegedTask = [STPrivilegedTask new]; -[privilegedTask setLaunchPath:@"/usr/bin/touch"]; -[privilegedTask setArguments:@[@"/etc/my_test_file"]]; - -// Setting working directory is optional, defaults to / -// NSString *path = [[NSBundle mainBundle] resourcePath]; -// [privilegedTask setCurrentDirectoryPath:path]; - -// Launch it, user is prompted for password (blocking) -OSStatus err = [privilegedTask launch]; -if (err == errAuthorizationSuccess) { - NSLog(@"Task successfully launched"); -} -else if (err == errAuthorizationCanceled) { - NSLog(@"User cancelled"); -} -else { - NSLog(@"Something went wrong"); -} -``` -See [Authorization.h](http://www.opensource.apple.com/source/libsecurity_authorization/libsecurity_authorization-36329/lib/Authorization.h) -for a list of possible error codes. - -### Launch task one-liner - -```objective-c -OSStatus err = [STPrivilegedTask launchedPrivilegedTaskWithLaunchPath:@"/bin/sh" - arguments:@[@"/path/to/script.sh"]]; - - -``` - - -### Getting task output - -```objective-c -// ... Launch task - -[privilegedTask waitUntilExit]; // This is blocking - -// Read output file handle for data -NSData *outputData = [[privilegedTask outputFileHandle] readDataToEndOfFile]; -NSString *outputString = [[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding]; - -``` - -### Getting output while task runs in background - -```objective-c - -// ... Launch task - -NSFileHandle *readHandle = [privilegedTask outputFileHandle]; -[[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(getOutputData:) - name:NSFileHandleReadCompletionNotification - object:readHandle]; -[readHandle readInBackgroundAndNotify]; - -// ... - -- (void)getOutputData:(NSNotification *)aNotification { - // Get data from notification - NSData *data = [[aNotification userInfo] objectForKey:NSFileHandleNotificationDataItem]; - - // Make sure there's actual data - if ([data length]) { - // Do something with the data - NSString *outputString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; - NSLog(@"%@", outputString); - - // Go read more data in the background - [[aNotification object] readInBackgroundAndNotify]; - } else { - // Do something else - } -} -``` - -### Task termination - -You can observe STPrivilegedTaskDidTerminateNotification: - -```objective-c -[[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(privilegedTaskFinished:) - name:STPrivilegedTaskDidTerminateNotification - object:nil]; - -- (void)privilegedTaskFinished:(NSNotification *)aNotification { - // Do something -} -``` - -Or alternatively, set a termination handler: - -```objective-c -privilegedTask.terminationHandler = ^(STPrivilegedTask *privilegedTask) { - NSLog(@"Terminating task: %@", [privilegedTask description]); -}; -``` - -### Launch using external AuthorizationRef - -```objective-c -// ... Create your own AuthorizationRef - -[STPrivilegedTask launchedPrivilegedTaskWithLaunchPath:@"/bin/sh" - arguments:@"/path/to/script" - currentDirectory:@"/" - authorization:authRef] -``` - -### AuthorizationExecuteWithPrivileges() is deprecated - -[AuthorizationExecuteWithPrivileges()](https://developer.apple.com/library/mac/documentation/Security/Reference/authorization_ref/#//apple_ref/c/func/AuthorizationExecuteWithPrivileges) -is deprecated as of macOS 10.7 but still remains available in macOS 12 "Monterey". If you want to be future-proof, -here's how you check if STPrivilegedTask works in the running version of macOS: - -```objective-c -OSStatus err = [privilegedTask launch]; -if (err == errAuthorizationFnNoLongerExists) { - NSLog(@"AuthorizationExecuteWithPrivileges not available"); -} -``` - -If you need to check whether STPrivilegedTask works before you launch the task: - -```objective-c -BOOL works = [STPrivilegedTask authorizationFunctionAvailable]; -``` - -## Sample app - -A sample app which makes use of STPrivilegedTask is included in the project. This app runs the following script: - -``` -#!/bin/sh - -echo "/usr/bin/whoami:" -whoami -echo "" -echo "Real User ID:" -echo $UID \($USER\) -echo "" -echo "Effective User ID:" -/usr/bin/id -u -echo "" -echo "Current working directory:" -echo "$PWD" - -exit 5 -``` - -It then presents the output of the script in a window, along with the exit code. - - - - -## BSD License - -Copyright (c) 2008-2021 Sveinbjorn Thordarson <sveinbjorn@sveinbjorn.org> -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this -list of conditions and the following disclaimer in the documentation and/or other -materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may -be used to endorse or promote products derived from this software without specific -prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/Pods/STPrivilegedTask/STPrivilegedTask.h b/Pods/STPrivilegedTask/STPrivilegedTask.h deleted file mode 100755 index 66aebe692..000000000 --- a/Pods/STPrivilegedTask/STPrivilegedTask.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - STPrivilegedTask - NSTask-like wrapper around AuthorizationExecuteWithPrivileges - Copyright (C) 2008-2021 Sveinbjorn Thordarson - - BSD License - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the copyright holder nor that of any other - contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import - -#define STPrivilegedTaskDidTerminateNotification @"STPrivilegedTaskDidTerminateNotification" - -// Defines error value for when AuthorizationExecuteWithPrivileges no longer exists -// Rather than defining a new enum, we just create a global constant -extern const OSStatus errAuthorizationFnNoLongerExists; - -@interface STPrivilegedTask : NSObject - -@property (copy) NSArray *arguments; -@property (copy) NSString *currentDirectoryPath; -@property (copy) NSString *launchPath; -@property (assign) BOOL freeAuthorizationWhenDone; - -@property (readonly) NSFileHandle *outputFileHandle; -@property (readonly) BOOL isRunning; -@property (readonly) pid_t processIdentifier; -@property (readonly) int terminationStatus; -@property (readonly) AuthorizationRef authorization; - -@property (copy) void (^terminationHandler)(STPrivilegedTask *); - -+ (BOOL)authorizationFunctionAvailable; - -- (instancetype)initWithLaunchPath:(NSString *)path; -- (instancetype)initWithLaunchPath:(NSString *)path arguments:(NSArray *)args; -- (instancetype)initWithLaunchPath:(NSString *)path arguments:(NSArray *)args currentDirectory:(NSString *)cwd; - -+ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path; -+ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path arguments:(NSArray *)args; -+ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path arguments:(NSArray *)args currentDirectory:(NSString *)cwd; -+ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path arguments:(NSArray *)args currentDirectory:(NSString *)cwd authorization:(AuthorizationRef)authorization; - -- (OSStatus)launch; -- (OSStatus)launchWithAuthorization:(AuthorizationRef)authorization; -- (void)terminate; // doesn't work -- (void)waitUntilExit; - -@end - diff --git a/Pods/STPrivilegedTask/STPrivilegedTask.m b/Pods/STPrivilegedTask/STPrivilegedTask.m deleted file mode 100755 index 3d2173fe4..000000000 --- a/Pods/STPrivilegedTask/STPrivilegedTask.m +++ /dev/null @@ -1,325 +0,0 @@ -/* - STPrivilegedTask - NSTask-like wrapper around AuthorizationExecuteWithPrivileges - Copyright (C) 2008-2021 Sveinbjorn Thordarson - - BSD License - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the copyright holder nor that of any other - contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#import "STPrivilegedTask.h" - -#import -#import -#import -#import -#import - -// New error code denoting that AuthorizationExecuteWithPrivileges no longer exists -OSStatus const errAuthorizationFnNoLongerExists = -70001; - -// Create fn pointer to AuthorizationExecuteWithPrivileges -// in case it doesn't exist in this version of macOS -static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const char *pathToTool, AuthorizationFlags options, - char * const *arguments, FILE **communicationsPipe) = NULL; - - -@implementation STPrivilegedTask -{ - NSTimer *_checkStatusTimer; -} - -+ (void)initialize { - // On 10.7, AuthorizationExecuteWithPrivileges is deprecated. We want - // to still use it since there's no good alternative (without requiring - // code signing). We'll look up the function through dyld and fail if - // it is no longer accessible. If Apple removes the function entirely - // this will fail gracefully. If they keep the function and throw some - // sort of exception, this won't fail gracefully, but that's a risk - // we'll have to take for now. - // Pattern by Andy Kim from Potion Factory LLC -#pragma GCC diagnostic ignored "-Wpedantic" // stop the pedantry! -#pragma clang diagnostic push - _AuthExecuteWithPrivsFn = dlsym(RTLD_DEFAULT, "AuthorizationExecuteWithPrivileges"); -#pragma clang diagnostic pop -} - -- (instancetype)init { - self = [super init]; - if (self) { - _launchPath = nil; - _arguments = nil; - _freeAuthorizationWhenDone = YES; - _isRunning = NO; - _outputFileHandle = nil; - _terminationHandler = nil; - _authorization = nil; - _currentDirectoryPath = [[NSFileManager defaultManager] currentDirectoryPath]; - } - return self; -} - -- (instancetype)initWithLaunchPath:(NSString *)path { - self = [self init]; - if (self) { - self.launchPath = path; - } - return self; -} - -- (instancetype)initWithLaunchPath:(NSString *)path - arguments:(NSArray *)args { - self = [self initWithLaunchPath:path]; - if (self) { - self.arguments = args; - } - return self; -} - -- (instancetype)initWithLaunchPath:(NSString *)path - arguments:(NSArray *)args - currentDirectory:(NSString *)cwd { - self = [self initWithLaunchPath:path arguments:args]; - if (self) { - self.currentDirectoryPath = cwd; - } - return self; -} - -- (void)dealloc -{ - if (_freeAuthorizationWhenDone && _authorization != nil) { - // free the auth ref - AuthorizationFree(_authorization, kAuthorizationFlagDefaults); - } -} - -#pragma mark - - -+ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path { - STPrivilegedTask *task = [[STPrivilegedTask alloc] initWithLaunchPath:path]; - [task launch]; - [task waitUntilExit]; - return task; -} - -+ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path arguments:(NSArray *)args { - STPrivilegedTask *task = [[STPrivilegedTask alloc] initWithLaunchPath:path arguments:args]; - [task launch]; - [task waitUntilExit]; - return task; -} - -+ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path - arguments:(NSArray *)args - currentDirectory:(NSString *)cwd { - STPrivilegedTask *task = [[STPrivilegedTask alloc] initWithLaunchPath:path arguments:args currentDirectory:cwd]; - [task launch]; - [task waitUntilExit]; - return task; -} - -+ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path - arguments:(NSArray *)args - currentDirectory:(NSString *)cwd - authorization:(AuthorizationRef)authorization { - STPrivilegedTask *task = [[STPrivilegedTask alloc] initWithLaunchPath:path arguments:args currentDirectory:cwd]; - [task launchWithAuthorization:authorization]; - [task waitUntilExit]; - return task; -} - -# pragma mark - - -// return 0 for success -- (OSStatus)launch { - if (_isRunning) { - NSLog(@"Task already running: %@", [self description]); - return 0; - } - - if ([STPrivilegedTask authorizationFunctionAvailable] == NO) { - NSLog(@"AuthorizationExecuteWithPrivileges() function not available on this system"); - return errAuthorizationFnNoLongerExists; - } - - OSStatus err = noErr; - const char *toolPath = [self.launchPath fileSystemRepresentation]; - - AuthorizationRef authorizationRef; - AuthorizationItem myItems = { kAuthorizationRightExecute, strlen(toolPath), &toolPath, 0 }; - AuthorizationRights myRights = { 1, &myItems }; - AuthorizationFlags flags = kAuthorizationFlagDefaults | kAuthorizationFlagInteractionAllowed | kAuthorizationFlagPreAuthorize | kAuthorizationFlagExtendRights; - - // Use Apple's Authentication Manager API to create an Authorization Reference - err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &authorizationRef); - if (err != errAuthorizationSuccess) { - return err; - } - - // Pre-authorize the privileged operation - err = AuthorizationCopyRights(authorizationRef, &myRights, kAuthorizationEmptyEnvironment, flags, NULL); - if (err != errAuthorizationSuccess) { - return err; - } - - // OK, at this point we have received authorization for the task so we launch it. - err = [self launchWithAuthorization:authorizationRef]; - - return err; -} - -- (OSStatus)launchWithAuthorization:(AuthorizationRef)authorization -{ - _authorization = authorization; - - if (_isRunning) { - NSLog(@"Task already running: %@", [self description]); - return 0; - } - - if ([STPrivilegedTask authorizationFunctionAvailable] == NO) { - NSLog(@"AuthorizationExecuteWithPrivileges() function not available on this system"); - return errAuthorizationFnNoLongerExists; - } - - // Assuming the authorization is valid for the task. - // Let's prepare to launch it. - NSArray *arguments = self.arguments; - NSUInteger numArgs = [arguments count]; - char *args[numArgs + 1]; - FILE *outputFile; - - const char *toolPath = [self.launchPath fileSystemRepresentation]; - - // First, construct an array of C strings w. all the arguments from NSArray - // This is the format required by AuthorizationExecuteWithPrivileges function - for (int i = 0; i < numArgs; i++) { - NSString *argString = arguments[i]; - const char *fsrep = [argString fileSystemRepresentation]; - NSUInteger stringLength = strlen(fsrep); - args[i] = calloc((stringLength + 1), sizeof(char)); - snprintf(args[i], stringLength + 1, "%s", fsrep); - } - args[numArgs] = NULL; - - // Change to the specified current working directory - // NB: This is process-wide and could interfere with the behaviour of concurrent tasks - char *prevCwd = (char *)getcwd(nil, 0); - chdir([self.currentDirectoryPath fileSystemRepresentation]); - - // Use Authorization Reference to execute script with privileges. - // This is where the magic happens. - OSStatus err = _AuthExecuteWithPrivsFn(authorization, toolPath, kAuthorizationFlagDefaults, args, &outputFile); - - // OK, now we're done executing, let's change back to old dir - chdir(prevCwd); - - // Free the alloc'd argument strings - for (int i = 0; i < numArgs; i++) { - free(args[i]); - } - - // We return err if execution failed - if (err != errAuthorizationSuccess) { - return err; - } else { - _isRunning = YES; - } - - // Get file handle for the command output - _outputFileHandle = [[NSFileHandle alloc] initWithFileDescriptor:fileno(outputFile) closeOnDealloc:YES]; - _processIdentifier = fcntl(fileno(outputFile), F_GETOWN, 0); - - // Start monitoring task - _checkStatusTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(checkTaskStatus) userInfo:nil repeats:YES]; - - return err; -} - -- (void)terminate { - // This doesn't work without a PID, and we can't get one. Stupid Security API. -// int ret = kill(pid, SIGKILL); -// -// if (ret != 0) { -// NSLog(@"Error %d", errno); -// } -} - -// Hang until task is done -- (void)waitUntilExit { - if (!_isRunning) { - NSLog(@"Task %@ is not running", [super description]); - return; - } - - [_checkStatusTimer invalidate]; - - int status; - pid_t pid = 0; - while ((pid = waitpid(_processIdentifier, &status, WNOHANG)) == 0) { - // Do nothing - } - _isRunning = NO; - _terminationStatus = WEXITSTATUS(status); -} - -// Check if task has terminated -- (void)checkTaskStatus { - int status; - pid_t pid = waitpid(_processIdentifier, &status, WNOHANG); - if (pid != 0) { - _isRunning = NO; - _terminationStatus = WEXITSTATUS(status); - [_checkStatusTimer invalidate]; - [[NSNotificationCenter defaultCenter] postNotificationName:STPrivilegedTaskDidTerminateNotification object:self]; - if (_terminationHandler) { - _terminationHandler(self); - } - } -} - -#pragma mark - - -+ (BOOL)authorizationFunctionAvailable { - if (!_AuthExecuteWithPrivsFn) { - // This version of macOS has finally removed this function. - return NO; - } - return YES; -} - -#pragma mark - - -// Nice description for debugging purposes -- (NSString *)description { - NSString *commandDescription = [NSString stringWithString:self.launchPath]; - - for (NSString *arg in self.arguments) { - commandDescription = [commandDescription stringByAppendingFormat:@" '%@'", arg]; - } - [commandDescription stringByAppendingFormat:@" (CWD:%@)", self.currentDirectoryPath]; - - return [[super description] stringByAppendingFormat:@" %@", commandDescription]; -} - -@end diff --git a/Pods/Sparkle/Entitlements/Downloader.entitlements b/Pods/Sparkle/Entitlements/Downloader.entitlements deleted file mode 100644 index ee95ab7e5..000000000 --- a/Pods/Sparkle/Entitlements/Downloader.entitlements +++ /dev/null @@ -1,10 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.network.client - - - diff --git a/Pods/Sparkle/LICENSE b/Pods/Sparkle/LICENSE deleted file mode 100644 index 75e73f505..000000000 --- a/Pods/Sparkle/LICENSE +++ /dev/null @@ -1,134 +0,0 @@ -Copyright (c) 2006-2013 Andy Matuschak. -Copyright (c) 2009-2013 Elgato Systems GmbH. -Copyright (c) 2011-2014 Kornel Lesiński. -Copyright (c) 2015-2017 Mayur Pawashe. -Copyright (c) 2014 C.W. Betts. -Copyright (c) 2014 Petroules Corporation. -Copyright (c) 2014 Big Nerd Ranch. -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -================= -EXTERNAL LICENSES -================= - -bspatch.c and bsdiff.c, from bsdiff 4.3 : - -Copyright 2003-2005 Colin Percival -All rights reserved - -Redistribution and use in source and binary forms, with or without -modification, are permitted providing that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - --- - -sais.c and sais.c, from sais-lite (2010/08/07) : - -The sais-lite copyright is as follows: - -Copyright (c) 2008-2010 Yuta Mori All Rights Reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - --- - -Portable C implementation of Ed25519, from https://github.com/orlp/ed25519 - -Copyright (c) 2015 Orson Peters - -This software is provided 'as-is', without any express or implied warranty. In no event will the -authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, including commercial -applications, and to alter it and redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the - original software. If you use this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must not be misrepresented as - being the original software. - -3. This notice may not be removed or altered from any source distribution. - --- - -SUSignatureVerifier.m: - -Copyright (c) 2011 Mark Hamlin. - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted providing that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/Pods/Sparkle/Sparkle.framework/Autoupdate b/Pods/Sparkle/Sparkle.framework/Autoupdate deleted file mode 120000 index 1a4fc02ca..000000000 --- a/Pods/Sparkle/Sparkle.framework/Autoupdate +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Autoupdate \ No newline at end of file diff --git a/Pods/Sparkle/Sparkle.framework/Headers b/Pods/Sparkle/Sparkle.framework/Headers deleted file mode 120000 index a177d2a6b..000000000 --- a/Pods/Sparkle/Sparkle.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/Pods/Sparkle/Sparkle.framework/Modules b/Pods/Sparkle/Sparkle.framework/Modules deleted file mode 120000 index 5736f3186..000000000 --- a/Pods/Sparkle/Sparkle.framework/Modules +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Modules \ No newline at end of file diff --git a/Pods/Sparkle/Sparkle.framework/PrivateHeaders b/Pods/Sparkle/Sparkle.framework/PrivateHeaders deleted file mode 120000 index d8e564526..000000000 --- a/Pods/Sparkle/Sparkle.framework/PrivateHeaders +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/PrivateHeaders \ No newline at end of file diff --git a/Pods/Sparkle/Sparkle.framework/Resources b/Pods/Sparkle/Sparkle.framework/Resources deleted file mode 120000 index 953ee36f3..000000000 --- a/Pods/Sparkle/Sparkle.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/Pods/Sparkle/Sparkle.framework/Sparkle b/Pods/Sparkle/Sparkle.framework/Sparkle deleted file mode 120000 index b2c52731e..000000000 --- a/Pods/Sparkle/Sparkle.framework/Sparkle +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Sparkle \ No newline at end of file diff --git a/Pods/Sparkle/Sparkle.framework/Updater.app b/Pods/Sparkle/Sparkle.framework/Updater.app deleted file mode 120000 index 18f322355..000000000 --- a/Pods/Sparkle/Sparkle.framework/Updater.app +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Updater.app \ No newline at end of file diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Autoupdate b/Pods/Sparkle/Sparkle.framework/Versions/B/Autoupdate deleted file mode 100755 index 219325315..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Autoupdate and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUDownloadData.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUDownloadData.h deleted file mode 100644 index 680b39897..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUDownloadData.h +++ /dev/null @@ -1,52 +0,0 @@ -// -// SPUDownloadData.h -// Sparkle -// -// Created by Mayur Pawashe on 8/10/16. -// Copyright © 2016 Sparkle Project. All rights reserved. -// - -#import - -#ifdef BUILDING_SPARKLE_DOWNLOADER_SERVICE -// Ignore incorrect warning -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wquoted-include-in-framework-header" -#import "SUExport.h" -#pragma clang diagnostic pop -#else -#import -#endif - -NS_ASSUME_NONNULL_BEGIN - -/** - * A class for containing downloaded data along with some information about it. - */ -SU_EXPORT @interface SPUDownloadData : NSObject - -/** - * The raw data that was downloaded. - */ -@property (nonatomic, readonly) NSData *data; - -/** - * The URL that was fetched from. - * - * This may be different from the URL in the request if there were redirects involved. - */ -@property (nonatomic, readonly, copy) NSURL *URL; - -/** - * The IANA charset encoding name if available. Eg: "utf-8" - */ -@property (nonatomic, readonly, nullable, copy) NSString *textEncodingName; - -/** - * The MIME type if available. Eg: "text/plain" - */ -@property (nonatomic, readonly, nullable, copy) NSString *MIMEType; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUStandardUpdaterController.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUStandardUpdaterController.h deleted file mode 100644 index a34100dc6..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUStandardUpdaterController.h +++ /dev/null @@ -1,112 +0,0 @@ -// -// SPUStandardUpdaterController.h -// Sparkle -// -// Created by Mayur Pawashe on 2/28/16. -// Copyright © 2016 Sparkle Project. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@class SPUUpdater; -@class SPUStandardUserDriver; -@class NSMenuItem; -@protocol SPUUserDriver, SPUUpdaterDelegate, SPUStandardUserDriverDelegate; - -/** - A controller class that instantiates a `SPUUpdater` and allows binding UI to its updater settings. - - This class can be instantiated in a nib or created programatically using `-initWithUpdaterDelegate:userDriverDelegate:` or `-initWithStartingUpdater:updaterDelegate:userDriverDelegate:`. - - The controller's updater targets the application's main bundle and uses Sparkle's standard user interface. - Typically, this class is used by sticking it as a custom NSObject subclass in an Interface Builder nib (probably in MainMenu) but it works well programatically too. - - The controller creates an `SPUUpdater` instance using a `SPUStandardUserDriver` and allows hooking up the check for updates action and handling menu item validation. - It also allows hooking up the updater's and user driver's delegates. - - If you need more control over what bundle you want to update, or you want to provide a custom user interface (via `SPUUserDriver`), please use `SPUUpdater` directly instead. - */ -SU_EXPORT @interface SPUStandardUpdaterController : NSObject -{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wobjc-interface-ivars" - /** - * Interface builder outlet for the updater's delegate. - */ - IBOutlet __weak id updaterDelegate; - - /** - * Interface builder outlet for the user driver's delegate. - */ - IBOutlet __weak id userDriverDelegate; -#pragma clang diagnostic pop -} - -/** - Accessible property for the updater. Some properties on the updater can be binded via KVO - - When instantiated from a nib, don't perform update checks before the application has finished launching in a MainMenu nib (i.e applicationDidFinishLaunching:) or before the corresponding window/view controller has been loaded (i.e, windowDidLoad or viewDidLoad). The updater is not guaranteed to be started yet before these points. - */ -@property (nonatomic, readonly) SPUUpdater *updater; - -/** - Accessible property for the updater's user driver. - */ -@property (nonatomic, readonly) SPUStandardUserDriver *userDriver; - -/** - Create a new `SPUStandardUpdaterController` from a nib. - - You cannot call this initializer directly. You must instantiate a `SPUStandardUpdaterController` inside of a nib (typically the MainMenu nib) to use it. - - To create a `SPUStandardUpdaterController` programatically, use `-initWithUpdaterDelegate:userDriverDelegate:` or `-initWithStartingUpdater:updaterDelegate:userDriverDelegate:` instead. - */ -- (instancetype)init NS_UNAVAILABLE; - -/** - Create a new `SPUStandardUpdaterController` programmatically. - - The updater is started automatically. See `-startUpdater` for more information. - */ -- (instancetype)initWithUpdaterDelegate:(nullable id)updaterDelegate userDriverDelegate:(nullable id)userDriverDelegate; - -/** - Create a new `SPUStandardUpdaterController` programmatically allowing you to specify whether or not to start the updater immediately. - - You can specify whether or not you want to start the updater immediately. - If you do not start the updater, you must invoke `-startUpdater` at a later time to start it. - */ -- (instancetype)initWithStartingUpdater:(BOOL)startUpdater updaterDelegate:(nullable id)updaterDelegate userDriverDelegate:(nullable id)userDriverDelegate; - -/** - Starts the updater if it has not already been started. - - You should only call this method yourself if you opted out of starting the updater on initialization. - Hence, do not call this yourself if you are instantiating this controller from a nib. - - This invokes `-[SPUUpdater startUpdater:]`. If the application is misconfigured with Sparkle, an error is logged and an alert is shown to the user (after a few seconds) to contact the developer. - If you want more control over this behavior, you can create your own `SPUUpdater` instead of using `SPUStandardUpdaterController`. - */ -- (void)startUpdater; - -/** - Explicitly checks for updates and displays a progress dialog while doing so. - - This method is meant for a main menu item. - Connect any NSMenuItem to this action in Interface Builder or programmatically, - and Sparkle will check for updates and report back its findings verbosely when it is invoked. - - When the target/action of the menu item is set to this controller and this method, - this controller also handles enabling/disabling the menu item by checking - `-[SPUUpdater canCheckForUpdates]` - - This action checks updates by invoking `-[SPUUpdater checkForUpdates]` - */ -- (IBAction)checkForUpdates:(nullable id)sender; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUStandardUserDriver.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUStandardUserDriver.h deleted file mode 100644 index 36eda9075..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUStandardUserDriver.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// SPUStandardUserDriver.h -// Sparkle -// -// Created by Mayur Pawashe on 2/14/16. -// Copyright © 2016 Sparkle Project. All rights reserved. -// - -#import -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol SPUStandardUserDriverDelegate; - -/** - Sparkle's standard built-in user driver for updater interactions - */ -SU_EXPORT @interface SPUStandardUserDriver : NSObject - -/** - Initializes a Sparkle's standard user driver for user update interactions - - @param hostBundle The target bundle of the host that is being updated. - @param delegate The optional delegate to this user driver. - */ -- (instancetype)initWithHostBundle:(NSBundle *)hostBundle delegate:(nullable id)delegate; - -/** - Use initWithHostBundle:delegate: instead. - */ -- (instancetype)init NS_UNAVAILABLE; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUStandardUserDriverDelegate.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUStandardUserDriverDelegate.h deleted file mode 100644 index b111a4a83..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUStandardUserDriverDelegate.h +++ /dev/null @@ -1,185 +0,0 @@ -// -// SPUStandardUserDriverDelegate.h -// Sparkle -// -// Created by Mayur Pawashe on 3/3/16. -// Copyright © 2016 Sparkle Project. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol SUVersionDisplay; -@class SUAppcastItem; -@class SPUUserUpdateState; - -/** - A protocol for Sparkle's standard user driver's delegate - - This includes methods related to UI interactions - */ -SU_EXPORT @protocol SPUStandardUserDriverDelegate - -@optional - -/** - Called before showing a modal alert window, - to give the opportunity to hide attached windows that may get in the way. - */ -- (void)standardUserDriverWillShowModalAlert; - -/** - Called after showing a modal alert window, - to give the opportunity to hide attached windows that may get in the way. - */ -- (void)standardUserDriverDidShowModalAlert; - -/** - Returns an object that formats version numbers for display to the user. - If you don't implement this method or return @c nil, the standard version formatter will be used. - */ -- (_Nullable id )standardUserDriverRequestsVersionDisplayer; - -/** - Decides whether or not the standard user driver should provide an option to show full release notes to the user. - - When a user checks for new updates and no new update is found, Sparkle by default will offer to show the application's version history to the user - by providing a "Version History" button in the no new update available alert. - - If this delegate method is implemented to return `NO`, then Sparkle will not provide an option to show full release notes to the user. - - @param item The appcast item corresponding to the latest version available. - @return @c YES to allow Sparkle to show full release notes to the user, otherwise @c NO to disallow this. - */ -- (BOOL)standardUserDriverShouldShowVersionHistoryForAppcastItem:(SUAppcastItem *)item; - -/** - Handles showing the full release notes to the user. - - When a user checks for new updates and no new update is found, Sparkle will offer to show the application's version history to the user - by providing a "Version History" button in the no new update available alert. - - If this delegate method is not implemented, Sparkle will instead offer to open the - `fullReleaseNotesLink` (or `releaseNotesLink` if the former is unavailable) from the appcast's latest `item` in the user's web browser. - - If this delegate method is implemented, Sparkle will instead ask the delegate to show the full release notes to the user. - A delegate may want to implement this method if they want to show in-app or offline release notes. - - @param item The appcast item corresponding to the latest version available. - */ -- (void)standardUserDriverShowVersionHistoryForAppcastItem:(SUAppcastItem *)item; - -/** - Specifies whether or not the download, extraction, and installing status windows allows to be minimized. - - By default, the status window showing the current status of the update (download, extraction, ready to install) is allowed to be minimized - for regular application bundle updates. - - @return @c YES if the status window is allowed to be minimized (default behavior), otherwise @c NO. - */ -- (BOOL)standardUserDriverAllowsMinimizableStatusWindow; - -/** - Declares whether or not gentle scheduled update reminders are supported. - - The delegate may implement scheduled update reminders that are presented in a gentle manner by implementing one or both of: - `-standardUserDriverWillHandleShowingUpdate:forUpdate:state:` and `-standardUserDriverShouldHandleShowingScheduledUpdate:andInImmediateFocus:` - - Visit https://sparkle-project.org/documentation/gentle-reminders for more information and examples. - - @return @c YES if gentle scheduled update reminders are implemented by standard user driver delegate, otherwise @c NO (default). - */ -@property (nonatomic, readonly) BOOL supportsGentleScheduledUpdateReminders; - -/** - Specifies if the standard user driver should handle showing a new scheduled update, or if its delegate should handle showing the update instead. - - If you implement this method and return @c NO the delegate is then responsible for showing the update, - which must be implemented and done in `-standardUserDriverWillHandleShowingUpdate:forUpdate:state:` - The motivation for the delegate being responsible for showing updates is to override Sparkle's default behavior - and add gentle reminders for new updates. - - Returning @c YES is the default behavior and allows the standard user driver to handle showing the update. - - If the standard user driver handles showing the update, `immediateFocus` reflects whether or not it will show the update in immediate and utmost focus. - The standard user driver may choose to show the update in immediate and utmost focus when the app was launched recently - or the system has been idle for some time. - - If `immediateFocus` is @c NO the standard user driver may want to defer showing the update until the user comes back to the app. - For background running applications, when `immediateFocus` is @c NO the standard user driver will always want to show - the update alert immediately, but behind other running applications or behind the app's own windows if it's currently active. - - There should be no side effects made when implementing this method so you should just return @c YES or @c NO - You will also want to implement `-standardUserDriverWillHandleShowingUpdate:forUpdate:state:` for adding additional update reminders. - - This method is not called for user-initiated update checks. The standard user driver always handles those. - - Visit https://sparkle-project.org/documentation/gentle-reminders for more information and examples. - - @param update The update the standard user driver should show. - @param immediateFocus If @c immediateFocus is @c YES, then the standard user driver proposes to show the update in immediate and utmost focus. See discussion for more details. - - @return @c YES if the standard user should handle showing the scheduled update (default behavior), otherwise @c NO if the delegate handles showing it. - */ -- (BOOL)standardUserDriverShouldHandleShowingScheduledUpdate:(SUAppcastItem *)update andInImmediateFocus:(BOOL)immediateFocus; - -/** - Called before an update will be shown to the user. - - If the standard user driver handles showing the update, `handleShowingUpdate` will be `YES`. - Please see `-standardUserDriverShouldHandleShowingScheduledUpdate:andInImmediateFocus:` for how the standard user driver - may handle showing scheduled updates when `handleShowingUpdate` is `YES` and `state.userInitiated` is `NO`. - - If the delegate declared it handles showing the update by returning @c NO in `-standardUserDriverShouldHandleShowingScheduledUpdate:andInImmediateFocus:` - then the delegate should handle showing update reminders in this method, or at some later point. - In this case, `handleShowingUpdate` will be @c NO. - To bring the update alert in focus, you may call `-[SPUStandardUpdaterController checkForUpdates:]` or `-[SPUUpdater checkForUpdates]`. - You may want to show additional UI indicators in your application that will show this update in focus - and want to dismiss additional UI indicators in `-standardUserDriverWillFinishUpdateSession` or `-standardUserDriverDidReceiveUserAttentionForUpdate:` - - If `state.userInitiated` is @c YES then the standard user driver always handles showing the new update and `handleShowingUpdate` will be @c YES. - In this case, it may still be useful for the delegate to intercept this method right before a new update will be shown. - - This method is not called when bringing an update that has already been presented back in focus. - - Visit https://sparkle-project.org/documentation/gentle-reminders for more information and examples. - - @param handleShowingUpdate @c YES if the standard user driver handles showing the update, otherwise @c NO if the delegate handles showing the update. - @param update The update that will be shown. - @param state The user state of the update which includes if the update check was initiated by the user. - */ -- (void)standardUserDriverWillHandleShowingUpdate:(BOOL)handleShowingUpdate forUpdate:(SUAppcastItem *)update state:(SPUUserUpdateState *)state; - -/** - Called when a new update first receives attention from the user. - - This occurs either when the user first brings the update alert in utmost focus or when the user makes a choice to install an update or dismiss/skip it. - - This may be useful to intercept for dismissing custom attention-based UI indicators (e.g, user notifications) introduced when implementing - `-standardUserDriverWillHandleShowingUpdate:forUpdate:state:` - - For custom UI indicators that need to still be on screen after the user has started to install an update, please see `-standardUserDriverWillFinishUpdateSession`. - - @param update The new update that the user gave attention to. - */ -- (void)standardUserDriverDidReceiveUserAttentionForUpdate:(SUAppcastItem *)update; - -/** - Called before the standard user driver session will finish its current update session. - - This may occur after the user has dismissed / skipped a new update or after an update error has occurred. - For updaters updating external/other bundles, this may also be called after an update has been successfully installed. - - This may be useful to intercept for dismissing custom UI indicators introduced when implementing - `-standardUserDriverWillHandleShowingUpdate:forUpdate:state:` - - For UI indicators that need to be dismissed when the user has given attention to a new update alert, - please see `-standardUserDriverDidReceiveUserAttentionForUpdate:` - */ -- (void)standardUserDriverWillFinishUpdateSession; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdateCheck.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdateCheck.h deleted file mode 100644 index 80a200196..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdateCheck.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// SPUUpdateCheck.h -// SPUUpdateCheck -// -// Created by Mayur Pawashe on 8/28/21. -// Copyright © 2021 Sparkle Project. All rights reserved. -// - -#ifndef SPUUpdateCheck_h -#define SPUUpdateCheck_h - -/** - Describes the type of update check being performed. - - Each update check corresponds to an update check method on `SPUUpdater`. - */ -typedef NS_ENUM(NSInteger, SPUUpdateCheck) -{ - /** - The user-initiated update check corresponding to `-[SPUUpdater checkForUpdates]`. - */ - SPUUpdateCheckUpdates = 0, - /** - The background scheduled update check corresponding to `-[SPUUpdater checkForUpdatesInBackground]`. - */ - SPUUpdateCheckUpdatesInBackground = 1, - /** - The informational probe update check corresponding to `-[SPUUpdater checkForUpdateInformation]`. - */ - SPUUpdateCheckUpdateInformation = 2 -}; - -#endif /* SPUUpdateCheck_h */ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdatePermissionRequest.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdatePermissionRequest.h deleted file mode 100644 index 010e50bf1..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdatePermissionRequest.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// SPUUpdatePermissionRequest.h -// Sparkle -// -// Created by Mayur Pawashe on 8/14/16. -// Copyright © 2016 Sparkle Project. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -/** - This class represents information needed to make a permission request for checking updates. - */ -SU_EXPORT @interface SPUUpdatePermissionRequest : NSObject - -/** - Initializes a new update permission request instance. - - @param systemProfile The system profile information. - */ -- (instancetype)initWithSystemProfile:(NSArray *> *)systemProfile; - -/** - A read-only property for the user's system profile. - */ -@property (nonatomic, readonly) NSArray *> *systemProfile; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdater.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdater.h deleted file mode 100644 index 17a649382..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdater.h +++ /dev/null @@ -1,312 +0,0 @@ -// -// SPUUpdater.h -// Sparkle -// -// Created by Andy Matuschak on 1/4/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#import -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@class SUAppcastItem, SUAppcast; - -@protocol SPUUpdaterDelegate; - -/** - The main API in Sparkle for controlling the update mechanism. - - This class is used to configure the update parameters as well as manually and automatically schedule and control checks for updates. - - For convenience, you can create a standard or nib instantiable updater by using `SPUStandardUpdaterController`. - - Prefer to set initial properties in your bundle's Info.plist as described in [Customizing Sparkle](https://sparkle-project.org/documentation/customization/). - - Otherwise only if you need dynamic behavior for user settings should you set properties on the updater such as: - - `automaticallyChecksForUpdates` - - `updateCheckInterval` - - `automaticallyDownloadsUpdates` - - `feedURL` - - Please view the documentation on each of these properties for more detail if you are to configure them dynamically. - */ -SU_EXPORT @interface SPUUpdater : NSObject - -/** - Initializes a new `SPUUpdater` instance - - This creates an updater, but to start it and schedule update checks `-startUpdater:` needs to be invoked first. - - Related: See `SPUStandardUpdaterController` which wraps a `SPUUpdater` instance and is suitable for instantiating inside of nib files. - - @param hostBundle The bundle that should be targetted for updating. - @param applicationBundle The application bundle that should be waited for termination and relaunched (unless overridden). Usually this can be the same as hostBundle. This may differ when updating a plug-in or other non-application bundle. - @param userDriver The user driver that Sparkle uses for user update interaction. - @param delegate The delegate for `SPUUpdater`. - */ -- (instancetype)initWithHostBundle:(NSBundle *)hostBundle applicationBundle:(NSBundle *)applicationBundle userDriver:(id )userDriver delegate:(nullable id)delegate; - -/** - Use `-initWithHostBundle:applicationBundle:userDriver:delegate:` or `SPUStandardUpdaterController` standard adapter instead. - - If you want to drop an updater into a nib, use `SPUStandardUpdaterController`. - */ -- (instancetype)init NS_UNAVAILABLE; - -/** - Starts the updater. - - This method first checks if Sparkle is configured properly. A valid feed URL should be set before this method is invoked. - - If the configuration is valid, an update cycle is started in the next main runloop cycle. - During this cycle, a permission prompt may be brought up (if needed) for checking if the user wants automatic update checking. - Otherwise if automatic update checks are enabled, a scheduled update alert may be brought up if enough time has elapsed since the last check. - See `automaticallyChecksForUpdates` for more information. - - After starting the updater and before the next runloop cycle, one of `-checkForUpdates`, `-checkForUpdatesInBackground`, or `-checkForUpdateInformation` can be invoked. - This may be useful if you want to check for updates immediately or without showing a potential permission prompt. - - If the updater cannot be started (i.e, due to a configuration issue in the application), you may want to fall back appropriately. - For example, the standard updater controller (`SPUStandardUpdaterController`) alerts the user that the app is misconfigured and to contact the developer. - - This must be called on the main thread. - - @param error The error that is populated if this method fails. Pass NULL if not interested in the error information. - @return YES if the updater started otherwise NO with a populated error - */ -- (BOOL)startUpdater:(NSError * __autoreleasing *)error; - -/** - Checks for updates, and displays progress while doing so if needed. - - This is meant for users initiating a new update check or checking the current update progress. - - If an update hasn't started, the user may be shown that a new check for updates is occurring. - If an update has already been downloaded or begun installing from a previous session, the user may be presented to install that update. - If the user is already being presented with an update, that update will be shown to the user in active focus. - - This will find updates that the user has previously opted into skipping. - - See `canCheckForUpdates` property which can determine when this method may be invoked. - */ -- (void)checkForUpdates; - -/** - Checks for updates, but does not show any UI unless an update is found. - - You usually do not need to call this method directly. If `automaticallyChecksForUpdates` is @c YES, - Sparkle calls this method automatically according to its update schedule using the `updateCheckInterval` - and the `lastUpdateCheckDate`. Therefore, you should typically only consider calling this method directly if you - opt out of automatic update checks. - - This is meant for programmatically initating a check for updates in the background without the user initiating it. - This check will not show UI if no new updates are found. - - If a new update is found, the updater's user driver may handle showing it at an appropriate (but not necessarily immediate) time. - If you want control over when and how a new update is shown, please see https://sparkle-project.org/documentation/gentle-reminders/ - - Note if automated updating is turned on, either a new update may be downloaded in the background to be installed silently, - or an already downloaded update may be shown. - - This will not find updates that the user has opted into skipping. - - This method does not do anything if there is a `sessionInProgress`. - */ -- (void)checkForUpdatesInBackground; - -/** - Begins a "probing" check for updates which will not actually offer to - update to that version. - - However, the delegate methods - `-[SPUUpdaterDelegate updater:didFindValidUpdate:]` and - `-[SPUUpdaterDelegate updaterDidNotFindUpdate:]` will be called, - so you can use that information in your UI. - - `-[SPUUpdaterDelegate updater:didFinishUpdateCycleForUpdateCheck:error:]` will be called when - this probing check is completed. - - Updates that have been skipped by the user will not be found. - - This method does not do anything if there is a `sessionInProgress`. - */ -- (void)checkForUpdateInformation; - -/** - A property indicating whether or not updates can be checked by the user. - - An update check can be made by the user when an update session isn't in progress, or when an update or its progress is being shown to the user. - A user cannot check for updates when data (such as the feed or an update) is still being downloaded automatically in the background. - - This property is suitable to use for menu item validation for seeing if `-checkForUpdates` can be invoked. - - This property is also KVO-compliant. - - Note this property does not reflect whether or not an update session is in progress. Please see `sessionInProgress` property instead. - */ -@property (nonatomic, readonly) BOOL canCheckForUpdates; - -/** - A property indicating whether or not an update session is in progress. - - An update session is in progress when the appcast is being downloaded, an update is being downloaded, - an update is being shown, update permission is being requested, or the installer is being started. - - An active session is when Sparkle's fired scheduler is running. - - Note an update session may not be running even though Sparkle's installer (ran as a separate process) may be running, - or even though the update has been downloaded but the installation has been deferred. In both of these cases, a new update session - may be activated with the update resumed at a later point (automatically or manually). - - See also: - - `canCheckForUpdates` property which is more suited for menu item validation and deciding if the user can initiate update checks. - - `-[SPUUpdaterDelegate updater:didFinishUpdateCycleForUpdateCheck:error:]` which lets the updater delegate know when an update cycle and session finishes. - */ -@property (nonatomic, readonly) BOOL sessionInProgress; - -/** - A property indicating whether or not to check for updates automatically. - - By default, Sparkle asks users on second launch for permission if they want automatic update checks enabled - and sets this property based on their response. If `SUEnableAutomaticChecks` is set in the Info.plist, - this permission request is not performed however. - - Setting this property will persist in the host bundle's user defaults. - Hence developers shouldn't maintain an additional user default for this property. - Only set this property if the user wants to change the default via a user settings option. - Do not always set it on launch unless you want to ignore the user's preference. - For testing environments, you can disable update checks by passing `-SUEnableAutomaticChecks NO` - to your app's command line arguments instead of setting this property. - - The update schedule cycle will be reset in a short delay after the property's new value is set. - This is to allow reverting this property without kicking off a schedule change immediately - */ -@property (nonatomic) BOOL automaticallyChecksForUpdates; - -/** - A property indicating the current automatic update check interval in seconds. - - Prefer to set SUScheduledCheckInterval directly in your Info.plist for setting the initial value. - - Setting this property will persist in the host bundle's user defaults. - Hence developers shouldn't maintain an additional user default for this property. - Only set this property if the user wants to change the default via a user settings option. - Do not always set it on launch unless you want to ignore the user's preference. - - The update schedule cycle will be reset in a short delay after the property's new value is set. - This is to allow reverting this property without kicking off a schedule change immediately - */ -@property (nonatomic) NSTimeInterval updateCheckInterval; - -/** - A property indicating whether or not updates can be automatically downloaded in the background. - - By default, updates are not automatically downloaded. - - Note that the developer can disallow automatic downloading of updates from being enabled (via `SUAllowsAutomaticUpdates` Info.plist key). - In this case, this property will return NO regardless of how this property is set. - - Prefer to set SUAutomaticallyUpdate directly in your Info.plist for setting the initial value. - - Setting this property will persist in the host bundle's user defaults. - Hence developers shouldn't maintain an additional user default for this property. - Only set this property if the user wants to change the default via a user settings option. - Do not always set it on launch unless you want to ignore the user's preference. - */ -@property (nonatomic) BOOL automaticallyDownloadsUpdates; - -/** - The URL of the appcast used to download update information. - - If the updater's delegate implements `-[SPUUpdaterDelegate feedURLStringForUpdater:]`, this will return that feed URL. - Otherwise if the feed URL has been set before, the feed URL returned will be retrieved from the host bundle's user defaults. - Otherwise the feed URL in the host bundle's Info.plist will be returned. - If no feed URL can be retrieved, returns nil. - - For setting a primary feed URL, please set the `SUFeedURL` property in your Info.plist. - For setting an alternative feed URL, please prefer `-[SPUUpdaterDelegate feedURLStringForUpdater:]` over `-setFeedURL:` - - This property must be called on the main thread; calls from background threads will return nil. - */ -@property (nonatomic, readonly, nullable) NSURL *feedURL; - -/** - Set the URL of the appcast used to download update information. Using this method is discouraged. - - Setting this property will persist in the host bundle's user defaults. - To avoid this, you should consider implementing - `-[SPUUpdaterDelegate feedURLStringForUpdater:]` instead of using this method. - - Passing nil will remove any feed URL that has been set in the host bundle's user defaults. - If you do not need to alternate between multiple feeds, set the SUFeedURL in your Info.plist instead of invoking this method. - - For beta updates, you may consider migrating to `-[SPUUpdaterDelegate allowedChannelsForUpdater:]` in the future. - - This method must be called on the main thread; calls from background threads will have no effect. - */ -- (void)setFeedURL:(nullable NSURL *)feedURL; - -/** - The host bundle that is being updated. - */ -@property (nonatomic, readonly) NSBundle *hostBundle; - -/** - The user agent used when checking for updates. - - By default the user agent string returned is in the format: - $(BundleDisplayName)/$(BundleDisplayVersion) Sparkle/$(SparkleDisplayVersion) - - BundleDisplayVersion is derived from the main application's Info.plist's CFBundleShortVersionString. - - Note if Sparkle is being used to update another application, the bundle information retrieved is from the main application performing the updating. - - This default implementation can be overrided. - */ -@property (nonatomic, copy) NSString *userAgentString; - -/** - The HTTP headers used when checking for updates, downloading release notes, and downloading updates. - - The keys of this dictionary are HTTP header fields and values are corresponding values. - */ -@property (nonatomic, copy, nullable) NSDictionary *httpHeaders; - -/** - A property indicating whether or not the user's system profile information is sent when checking for updates. - - Setting this property will persist in the host bundle's user defaults. - */ -@property (nonatomic) BOOL sendsSystemProfile; - -/** - The date of the last update check or nil if no check has been performed yet. - - For testing purposes, the last update check is stored in the `SULastCheckTime` key in the host bundle's user defaults. - For example, `defaults delete my-bundle-id SULastCheckTime` can be invoked to clear the last update check time and test - if update checks are automatically scheduled. - */ -@property (nonatomic, readonly, copy, nullable) NSDate *lastUpdateCheckDate; - -/** - Appropriately schedules or cancels the update checking timer according to the settings for the time interval and automatic checks. - - If you change the `updateCheckInterval` or `automaticallyChecksForUpdates` properties, the update cycle will be reset automatically after a short delay. - The update cycle is also started automatically after the updater is started. In all these cases, this method should not be called directly. - - This call does not change the date of the next check, but only the internal timer. - */ -- (void)resetUpdateCycle; - - -/** - The system profile information that is sent when checking for updates. - */ -@property (nonatomic, readonly, copy) NSArray *> *systemProfileArray; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdaterDelegate.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdaterDelegate.h deleted file mode 100644 index a18e967f8..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdaterDelegate.h +++ /dev/null @@ -1,465 +0,0 @@ -// -// SPUUpdaterDelegate.h -// Sparkle -// -// Created by Mayur Pawashe on 8/12/16. -// Copyright © 2016 Sparkle Project. All rights reserved. -// - -#import -#import -#import -#import - -@protocol SUVersionComparison; -@class SPUUpdater, SUAppcast, SUAppcastItem, SPUUserUpdateState; - -NS_ASSUME_NONNULL_BEGIN - -// ----------------------------------------------------------------------------- -// SUUpdater Notifications for events that might be interesting to more than just the delegate -// The updater will be the notification object -// ----------------------------------------------------------------------------- -SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification; -SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification; -SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification; -SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification; -#define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification; -#define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification; - -// Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo -SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey; -// Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo -SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey; - -// ----------------------------------------------------------------------------- -// System Profile Keys -// ----------------------------------------------------------------------------- - -SU_EXPORT extern NSString *const SUSystemProfilerApplicationNameKey; -SU_EXPORT extern NSString *const SUSystemProfilerApplicationVersionKey; -SU_EXPORT extern NSString *const SUSystemProfilerCPU64bitKey; -SU_EXPORT extern NSString *const SUSystemProfilerCPUCountKey; -SU_EXPORT extern NSString *const SUSystemProfilerCPUFrequencyKey; -SU_EXPORT extern NSString *const SUSystemProfilerCPUTypeKey; -SU_EXPORT extern NSString *const SUSystemProfilerCPUSubtypeKey; -SU_EXPORT extern NSString *const SUSystemProfilerHardwareModelKey; -SU_EXPORT extern NSString *const SUSystemProfilerMemoryKey; -SU_EXPORT extern NSString *const SUSystemProfilerOperatingSystemVersionKey; -SU_EXPORT extern NSString *const SUSystemProfilerPreferredLanguageKey; - -// ----------------------------------------------------------------------------- -// SPUUpdater Delegate: -// ----------------------------------------------------------------------------- - -/** - Provides delegation methods to control the behavior of an `SPUUpdater` object. - */ -@protocol SPUUpdaterDelegate -@optional - -/** - Returns whether to allow Sparkle to check for updates. - - For example, this may be used to prevent Sparkle from interrupting a setup assistant. - Alternatively, you may want to consider starting the updater after eg: the setup assistant finishes. - - Note in Swift, this method returns Void and is marked with the throws keyword. If this method - doesn't throw an error, the updater may perform an update check. Otherwise if an error is thrown (we recommend using an NSError), - then the updater may not perform an update check. - - @param updater The updater instance. - @param updateCheck The type of update check that will be performed if the updater is allowed to check for updates. - @param error The populated error object if the updater may not perform a new update check. The @c NSLocalizedDescriptionKey user info key should be populated indicating a description of the error. - @return @c YES if the updater is allowed to check for updates, otherwise @c NO -*/ -- (BOOL)updater:(SPUUpdater *)updater mayPerformUpdateCheck:(SPUUpdateCheck)updateCheck error:(NSError * __autoreleasing *)error; - -/** - Returns the set of Sparkle channels the updater is allowed to find new updates from. - - An appcast item can specify a channel the update is posted to. Without specifying a channel, the appcast item is posted to the default channel. - For instance: - ``` - - 2.0 Beta 1 - beta - - ``` - - This example posts an update to the @c beta channel, so only updaters that are allowed to use the @c beta channel can find this update. - - If the @c element is not present, the update item is posted to the default channel and can be found by any updater. - - You can pick any name you'd like for the channel. The valid characters for channel names are letters, numbers, dashes, underscores, and periods. - - Note to use this feature, all app versions that your users may update from in your feed must use a version of Sparkle that supports this feature. - This feature was added in Sparkle 2. - - @return The set of channel names the updater is allowed to find new updates in. An empty set is the default behavior, - which means the updater will only look for updates in the default channel. - */ -- (NSSet *)allowedChannelsForUpdater:(SPUUpdater *)updater; - -/** - Returns a custom appcast URL used for checking for new updates. - - Override this to dynamically specify the feed URL. - - @param updater The updater instance. - @return An appcast feed URL to check for new updates in, or @c nil for the default behavior and if you don't want to be delegated this task. - */ -- (nullable NSString *)feedURLStringForUpdater:(SPUUpdater *)updater; - -/** - Returns additional parameters to append to the appcast URL's query string. - - This is potentially based on whether or not Sparkle will also be sending along the system profile. - - @param updater The updater instance. - @param sendingProfile Whether the system profile will also be sent. - - @return An array of dictionaries with keys: `key`, `value`, `displayKey`, `displayValue`, the latter two being specifically for display to the user. - */ -- (NSArray *> *)feedParametersForUpdater:(SPUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; - -/** - Returns whether Sparkle should prompt the user about checking for new updates automatically. - - Use this to override the default behavior. - - @param updater The updater instance. - @return @c YES if the updater should prompt for permission to check for new updates automatically, otherwise @c NO - */ -- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SPUUpdater *)updater; - -/** - Returns an allowed list of system profile keys to be appended to the appcast URL's query string. - - By default all keys will be included. This method allows overriding which keys should only be allowed. - - @param updater The updater instance. - - @return An array of system profile keys to include in the appcast URL's query string. Elements must be one of the `SUSystemProfiler*Key` constants. Return @c nil for the default behavior and if you don't want to be delegated this task. - */ -- (nullable NSArray *)allowedSystemProfileKeysForUpdater:(SPUUpdater *)updater; - -/** - Called after Sparkle has downloaded the appcast from the remote server. - - Implement this if you want to do some special handling with the appcast once it finishes loading. - - @param updater The updater instance. - @param appcast The appcast that was downloaded from the remote server. - */ -- (void)updater:(SPUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; - -/** - Called when a new valid update is found by the update driver. - - @param updater The updater instance. - @param item The appcast item corresponding to the update that is proposed to be installed. - */ -- (void)updater:(SPUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item; - -/** - Called when a valid new update is not found. - - There are various reasons a new update is unavailable and can't be installed. - - The userInfo dictionary on the error is populated with three keys: - - `SPULatestAppcastItemFoundKey`: if available, this may provide the latest `SUAppcastItem` that was found. This will be @c nil if it's unavailable. - - `SPUNoUpdateFoundReasonKey`: This will provide the `SPUNoUpdateFoundReason`. - For example the reason could be because the latest version in the feed requires a newer OS version or could be because the user is already on the latest version. - - `SPUNoUpdateFoundUserInitiatedKey`: A boolean that indicates if a new update was not found when the user intitiated an update check manually. - - @param updater The updater instance. - @param error An error containing information on why a new valid update was not found - */ -- (void)updaterDidNotFindUpdate:(SPUUpdater *)updater error:(NSError *)error; - -/** - Called when a valid new update is not found. - - If more information is needed on why an update was not found, use `-[SPUUpdaterDelegate updaterDidNotFindUpdate:error:]` instead. - - @param updater The updater instance. - */ -- (void)updaterDidNotFindUpdate:(SPUUpdater *)updater; - -/** - Returns the item in the appcast corresponding to the update that should be installed. - - Please consider using or migrating to other supported features before adopting this method. - Specifically: - - If you want to filter out certain tagged updates (like beta updates), consider `-[SPUUpdaterDelegate allowedChannelsForUpdater:]` instead. - - If you want to treat certain updates as informational-only, consider supplying @c with a set of affected versions users are updating from. - - If you're using special logic or extensions in your appcast, implement this to use your own logic for finding a valid update, if any, in the given appcast. - - Do not base your logic by filtering out items with a minimum or maximum OS version or minimum autoupdate version - because Sparkle already has logic for determining whether or not those items should be filtered out. - - Also do not return a non-top level item from the appcast such as a delta item. Delta items will be ignored. - Sparkle picks the delta item from your selection if the appropriate one is available. - - This method will not be invoked with an appcast that has zero items. Pick the best item from the appcast. - If an item is available that has the same version as the application or bundle to update, do not pick an item that is worse than that version. - - This method may be called multiple times for different selections and filters. This method should be efficient. - - Return `+[SUAppcastItem emptyAppcastItem]` if no appcast item is valid. - - Return @c nil if you don't want to be delegated this task and want to let Sparkle handle picking the best valid update. - - @param appcast The appcast that was downloaded from the remote server. - @param updater The updater instance. - @return The best valid appcast item. - */ -- (nullable SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SPUUpdater *)updater; - -/** - Returns whether or not the updater should proceed with the new chosen update from the appcast. - - By default, the updater will always proceed with the best selected update found in an appcast. Override this to override this behavior. - - If you return @c NO and populate the @c error, the user is not shown this @c updateItem nor is the update downloaded or installed. - - Note in Swift, this method returns Void and is marked with the throws keyword. If this method doesn't throw an error, the updater will proceed with the update. - Otherwise if an error is thrown (we recommend using an NSError), then the will not proceed with the update. - - @param updater The updater instance. - @param updateItem The selected update item to proceed with. - @param updateCheck The type of update check that would be performed if proceeded. - @param error An error object that must be populated by the delegate if the updater should not proceed with the update. The @c NSLocalizedDescriptionKey user info key should be populated indicating a description of the error. - @return @c YES if the updater should proceed with @c updateItem, otherwise @c NO if the updater should not proceed with the update with an @c error populated. - */ -- (BOOL)updater:(SPUUpdater *)updater shouldProceedWithUpdate:(SUAppcastItem *)updateItem updateCheck:(SPUUpdateCheck)updateCheck error:(NSError * __autoreleasing *)error; - -/** - Called when a user makes a choice to install, dismiss, or skip an update. - - If the @c choice is `SPUUserUpdateChoiceDismiss` and @c state.stage is `SPUUserUpdateStageDownloaded` the downloaded update is kept - around until the next time Sparkle reminds the user of the update. - - If the @c choice is `SPUUserUpdateChoiceDismiss` and @c state.stage is `SPUUserUpdateStageInstalling` the update is still set to install on application termination. - - If the @c choice is `SPUUserUpdateChoiceSkip` the user will not be reminded in the future for this update unless they initiate an update check themselves. - - If @c updateItem.isInformationOnlyUpdate is @c YES the @c choice cannot be `SPUUserUpdateChoiceInstall`. - - @param updater The updater instance. - @param choice The choice (install, dismiss, or skip) the user made for this @c updateItem - @param updateItem The appcast item corresponding to the update that the user made a choice on. - @param state The current state for the update which includes if the update has already been downloaded or already installing. - */ -- (void)updater:(SPUUpdater *)updater userDidMakeChoice:(SPUUserUpdateChoice)choice forUpdate:(SUAppcastItem *)updateItem state:(SPUUserUpdateState *)state; - -/** - Returns whether the release notes (if available) should be downloaded after an update is found and shown. - - This is specifically for the @c element in the appcast item. - - @param updater The updater instance. - @param updateItem The update item to download and show release notes from. - - @return @c YES to download and show the release notes if available, otherwise @c NO. The default behavior is @c YES. - */ -- (BOOL)updater:(SPUUpdater *)updater shouldDownloadReleaseNotesForUpdate:(SUAppcastItem *)updateItem; - -/** - Called immediately before downloading the specified update. - - @param updater The updater instance. - @param item The appcast item corresponding to the update that is proposed to be downloaded. - @param request The mutable URL request that will be used to download the update. - */ -- (void)updater:(SPUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request; - -/** - Called immediately after succesfull download of the specified update. - - @param updater The SUUpdater instance. - @param item The appcast item corresponding to the update that has been downloaded. - */ -- (void)updater:(SPUUpdater *)updater didDownloadUpdate:(SUAppcastItem *)item; - -/** - Called after the specified update failed to download. - - @param updater The updater instance. - @param item The appcast item corresponding to the update that failed to download. - @param error The error generated by the failed download. - */ -- (void)updater:(SPUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error; - -/** - Called when the user cancels an update while it is being downloaded. - - @param updater The updater instance. - */ -- (void)userDidCancelDownload:(SPUUpdater *)updater; - -/** - Called immediately before extracting the specified downloaded update. - - @param updater The SUUpdater instance. - @param item The appcast item corresponding to the update that is proposed to be extracted. - */ -- (void)updater:(SPUUpdater *)updater willExtractUpdate:(SUAppcastItem *)item; - -/** - Called immediately after extracting the specified downloaded update. - - @param updater The SUUpdater instance. - @param item The appcast item corresponding to the update that has been extracted. - */ -- (void)updater:(SPUUpdater *)updater didExtractUpdate:(SUAppcastItem *)item; - -/** - Called immediately before installing the specified update. - - @param updater The updater instance. - @param item The appcast item corresponding to the update that is proposed to be installed. - */ -- (void)updater:(SPUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item; - -/** - Returns whether the relaunch should be delayed in order to perform other tasks. - - This is not called if the user didn't relaunch on the previous update, - in that case it will immediately restart. - - This may also not be called if the application is not going to relaunch after it terminates. - - @param updater The updater instance. - @param item The appcast item corresponding to the update that is proposed to be installed. - @param installHandler The install handler that must be completed before continuing with the relaunch. - - @return @c YES to delay the relaunch until @c installHandler is invoked. - */ -- (BOOL)updater:(SPUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvokingBlock:(void (^)(void))installHandler; - -/** - Returns whether the application should be relaunched at all. - - Some apps **cannot** be relaunched under certain circumstances. - This method can be used to explicitly prevent a relaunch. - - @param updater The updater instance. - @return @c YES if the updater should be relaunched, otherwise @c NO if it shouldn't. - */ -- (BOOL)updaterShouldRelaunchApplication:(SPUUpdater *)updater; - -/** - Called immediately before relaunching. - - @param updater The updater instance. - */ -- (void)updaterWillRelaunchApplication:(SPUUpdater *)updater; - -/** - Returns an object that compares version numbers to determine their arithmetic relation to each other. - - This method allows you to provide a custom version comparator. - If you don't implement this method or return @c nil, - the standard version comparator will be used. - - Note that the standard version comparator may be used during installation for preventing a downgrade, - even if you provide a custom comparator here. - - @param updater The updater instance. - @return The custom version comparator or @c nil if you don't want to be delegated this task. - */ -- (nullable id)versionComparatorForUpdater:(SPUUpdater *)updater; - -/** - Called when a background update will be scheduled after a delay. - - Automatic update checks need to be enabled for this to trigger. - - @param delay The delay in seconds until the next scheduled update will occur. This is an approximation and may vary due to system state. - - @param updater The updater instance. - */ -- (void)updater:(SPUUpdater *)updater willScheduleUpdateCheckAfterDelay:(NSTimeInterval)delay; - -/** - Called when no update checks will be scheduled in the future. - - This may later change if automatic update checks become enabled. - - @param updater The updater instance. - */ -- (void)updaterWillNotScheduleUpdateCheck:(SPUUpdater *)updater; - -/** - Returns the decryption password (if any) which is used to extract the update archive DMG. - - Return @c nil if no password should be used. - - @param updater The updater instance. - @return The password used for decrypting the archive, or @c nil if no password should be used. - */ -- (nullable NSString *)decryptionPasswordForUpdater:(SPUUpdater *)updater; - -/** - Called when an update is scheduled to be silently installed on quit after downloading the update automatically. - - If the updater is given responsibility, it can later remind the user an update is available if they have not terminated the application for a long time. - - Also if the updater is given responsibility and the update item is marked critical, the new update will be presented to the user immediately after. - - Even if the @c immediateInstallHandler is not invoked, the installer will attempt to install the update on termination. - - @param updater The updater instance. - @param item The appcast item corresponding to the update that is proposed to be installed. - @param immediateInstallHandler The install handler for the delegate to immediately install the update. No UI interaction will be shown and the application will be relaunched after installation. This handler can only be used if @c YES is returned and the delegate handles installing the update. For Sparkle 2.3 onwards, this handler can be invoked multiple times in case the application cancels the termination request. - @return @c YES if the delegate will handle installing the update or @c NO if the updater should be given responsibility. - */ -- (BOOL)updater:(SPUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationBlock:(void (^)(void))immediateInstallHandler; - -/** - Called after the update driver aborts due to an error. - - The update driver runs when checking for updates. This delegate method is called an error occurs during this process. - - Some special possible values of `error.code` are: - - - `SUNoUpdateError`: No new update was found. - - `SUInstallationCanceledError`: The user canceled installing the update when requested for authorization. - - @param updater The updater instance. - @param error The error that caused the update driver to abort. - */ -- (void)updater:(SPUUpdater *)updater didAbortWithError:(NSError *)error; - -/** - Called after the update driver finishes. - - The update driver runs when checking for updates. This delegate method is called when that check is finished. - - An update may be scheduled to be installed during the update cycle, or no updates may be found, or an available update may be dismissed or skipped (which is the same as no error). - - If the @c error is @c nil, no error has occurred. - - Some special possible values of `error.code` are: - - - `SUNoUpdateError`: No new update was found. - - `SUInstallationCanceledError`: The user canceled installing the update when requested for authorization. - - @param updater The updater instance. - @param updateCheck The type of update check was performed. - @param error The error that caused the update driver to abort. This is @c nil if the update driver finished normally and there is no error. - */ -- (void)updater:(SPUUpdater *)updater didFinishUpdateCycleForUpdateCheck:(SPUUpdateCheck)updateCheck error:(nullable NSError *)error; - -/* Deprecated methods */ - -- (BOOL)updaterMayCheckForUpdates:(SPUUpdater *)updater __deprecated_msg("Please use -[SPUUpdaterDelegate updater:mayPerformUpdateCheck:error:] instead."); - -- (void)updater:(SPUUpdater *)updater userDidSkipThisVersion:(SUAppcastItem *)item __deprecated_msg("Please use -[SPUUpdaterDelegate updater:userDidMakeChoice:forUpdate:state:] instead."); - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdaterSettings.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdaterSettings.h deleted file mode 100644 index a480a42aa..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUpdaterSettings.h +++ /dev/null @@ -1,60 +0,0 @@ -// -// SPUUpdaterSettings.h -// Sparkle -// -// Created by Mayur Pawashe on 3/27/16. -// Copyright © 2016 Sparkle Project. All rights reserved. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -/** - This class can be used for reading certain updater settings. - - It retrieves the settings by first looking into the host's user defaults. - If the setting is not found in there, then the host's Info.plist file is looked at. - */ -SU_EXPORT @interface SPUUpdaterSettings : NSObject - -- (instancetype)initWithHostBundle:(NSBundle *)hostBundle; - -/** - * Indicates whether or not automatic update checks are enabled. - */ -@property (readonly, nonatomic) BOOL automaticallyChecksForUpdates; - -/** - * The regular update check interval. - */ -@property (readonly, nonatomic) NSTimeInterval updateCheckInterval; - -/** - * Indicates whether or not automatically downloading updates is allowed to be turned on by the user. - * If this value is nil, the developer has not explicitly specified this option. - */ -@property (readonly, nonatomic, nullable) NSNumber *allowsAutomaticUpdatesOption; - -/** - * Indicates whether or not automatically downloading updates is allowed to be turned on by the user. - */ -@property (readonly, nonatomic) BOOL allowsAutomaticUpdates; - -/** - * Indicates whether or not automatically downloading updates is enabled by the user or developer. - * - * Note this does not indicate whether or not automatic downloading of updates is allowable. - * See `-allowsAutomaticUpdates` property for that. - */ -@property (readonly, nonatomic) BOOL automaticallyDownloadsUpdates; - -/** - * Indicates whether or not anonymous system profile information is sent when checking for updates. - */ -@property (readonly, nonatomic) BOOL sendsSystemProfile; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUserDriver.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUserDriver.h deleted file mode 100644 index 22cc1670b..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUserDriver.h +++ /dev/null @@ -1,287 +0,0 @@ -// -// SPUUserDriver.h -// Sparkle -// -// Created by Mayur Pawashe on 2/14/16. -// Copyright © 2016 Sparkle Project. All rights reserved. -// - -#import - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@class SPUUpdatePermissionRequest, SUUpdatePermissionResponse, SUAppcastItem, SPUDownloadData; - -/** - The API in Sparkle for controlling the user interaction. - - This protocol is used for implementing a user interface for the Sparkle updater. Sparkle's internal drivers tell - an object that implements this protocol what actions to take and show to the user. - - Every method in this protocol can be assumed to be called from the main thread. - */ -SU_EXPORT @protocol SPUUserDriver - -/** - * Show an updater permission request to the user - * - * Ask the user for their permission regarding update checks. - * This is typically only called once per app installation. - * - * @param request The update permission request. - * @param reply A reply with a update permission response. - */ -- (void)showUpdatePermissionRequest:(SPUUpdatePermissionRequest *)request reply:(void (^)(SUUpdatePermissionResponse *))reply; - -/** - * Show the user initating an update check - * - * Respond to the user initiating an update check. Sparkle uses this to show the user a window with an indeterminate progress bar. - * - * @param cancellation Invoke this cancellation block to cancel the update check before the update check is completed. - */ -- (void)showUserInitiatedUpdateCheckWithCancellation:(void (^)(void))cancellation; - -/** - * Show the user a new update is found. - * - * Let the user know a new update is found and ask them what they want to do. - * Before this point, `-showUserInitiatedUpdateCheckWithCancellation:` may be called. - * - * The potential `stage`s on the updater @c state are: - * - * `SPUUpdateStateNotDownloaded` - Update has not been downloaded yet. - * - * `SPUUpdateStateDownloaded` - Update has already been downloaded but not started installing yet. - * - * `SPUUpdateStateInstalling` - Update has been downloaded and already started installing. - * - * The `userIntiated` property on the @c state indicates if the update was initiated by the user or if it was automatically scheduled in the background. - * - * Additionally, these properties on the @c appcastItem are of importance: - * - * @c appcastItem.informationOnlyUpdate indicates if the update is only informational and should not be downloaded. You can direct the user to the infoURL property of the appcastItem in their web browser. Sometimes information only updates are used as a fallback in case a bad update is shipped, so you'll want to support this case. - * - * @c appcastItem.majorUpgrade indicates if the update is a major or paid upgrade. - * - * @c appcastItem.criticalUpdate indicates if the update is a critical update. - * - * A reply of `SPUUserUpdateChoiceInstall` begins or resumes downloading or installing the update. - * If the state.stage is `SPUUserUpdateStateInstalling`, this may send a quit event to the application and relaunch it immediately (in this state, this behaves as a fast "install and Relaunch"). - * Do not use this reply if @c appcastItem.informationOnlyUpdate is YES. - * - * A reply of `SPUUserUpdateChoiceDismiss` dismisses the update for the time being. The user may be reminded of the update at a later point. - * If the state.stage is `SPUUserUpdateStateDownloaded`, the downloaded update is kept after dismissing until the next time an update is shown to the user. - * If the state.stage is `SPUUserUpdateStateInstalling`, the installing update is also preserved after dismissing. In this state however, the update will also still be installed after the application is terminated. - * - * A reply of `SPUUserUpdateChoiceSkip` skips this particular version and won't notify the user again, unless they initiate an update check themselves. - * If @c appcastItem.majorUpgrade is YES, the major update and any future minor updates to that major release are skipped, unless a future minor update specifies a `` requirement. - * If the state.stage is `SPUUpdateStateInstalling`, the installation is also canceled when the update is skipped. - * - * @param appcastItem The Appcast Item containing information that reflects the new update. - * @param state The current state of the user update. See above discussion for notable properties. - * @param reply The reply which indicates if the update should be installed, dismissed, or skipped. See above discussion for more details. - */ -- (void)showUpdateFoundWithAppcastItem:(SUAppcastItem *)appcastItem state:(SPUUserUpdateState *)state reply:(void (^)(SPUUserUpdateChoice))reply; - -/** - * Show the user the release notes for the new update - * - * Display the release notes to the user. This will be called after showing the new update. - * This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. - * That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil. - * - * @param downloadData The data for the release notes that was downloaded from the new update's appcast. - */ -- (void)showUpdateReleaseNotesWithDownloadData:(SPUDownloadData *)downloadData; - -/** - * Show the user that the new update's release notes could not be downloaded - * - * This will be called after showing the new update. - * This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. - * That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil. - * - * @param error The error associated with why the new update's release notes could not be downloaded. - */ -- (void)showUpdateReleaseNotesFailedToDownloadWithError:(NSError *)error; - -/** - * Show the user a new update was not found - * - * Let the user know a new update was not found after they tried initiating an update check. - * Before this point, `-showUserInitiatedUpdateCheckWithCancellation:` may be called. - * - * There are various reasons a new update is unavailable and can't be installed. - * The @c error object is populated with recovery and suggestion strings suitable to be shown in an alert. - * - * The @c userInfo dictionary on the @c error is also populated with two keys: - * - * `SPULatestAppcastItemFoundKey`: if available, this may provide the latest SUAppcastItem that was found. - * - * `SPUNoUpdateFoundReasonKey`: if available, this will provide the `SUNoUpdateFoundReason`. For example the reason could be because - * the latest version in the feed requires a newer OS version or could be because the user is already on the latest version. - * - * @param error The error associated with why a new update was not found. See above discussion for more details. - * @param acknowledgement Acknowledge to the updater that no update found error was shown. - */ -- (void)showUpdateNotFoundWithError:(NSError *)error acknowledgement:(void (^)(void))acknowledgement; - -/** - * Show the user an update error occurred - * - * Let the user know that the updater failed with an error. This will not be invoked without the user having been - * aware that an update was in progress. - * - * Before this point, any of the non-error user driver methods may have been invoked. - * - * @param error The error associated with what update error occurred. - * @param acknowledgement Acknowledge to the updater that the error was shown. - */ -- (void)showUpdaterError:(NSError *)error acknowledgement:(void (^)(void))acknowledgement; - -/** - * Show the user that downloading the new update initiated - * - * Let the user know that downloading the new update started. - * - * @param cancellation Invoke this cancellation block to cancel the download at any point before `-showDownloadDidStartExtractingUpdate` is invoked. - */ -- (void)showDownloadInitiatedWithCancellation:(void (^)(void))cancellation; - -/** - * Show the user the content length of the new update that will be downloaded - * - * @param expectedContentLength The expected content length of the new update being downloaded. - * An implementor should be able to handle if this value is invalid (more or less than actual content length downloaded). - * Additionally, this method may be called more than once for the same download in rare scenarios. - */ -- (void)showDownloadDidReceiveExpectedContentLength:(uint64_t)expectedContentLength; - -/** - * Show the user that the update download received more data - * - * This may be an appropriate time to advance a visible progress indicator of the download - * @param length The length of the data that was just downloaded - */ -- (void)showDownloadDidReceiveDataOfLength:(uint64_t)length; - -/** - * Show the user that the update finished downloading and started extracting - * - * Sparkle uses this to show an indeterminate progress bar. - * - * Note that an update can resume at this point after having been downloaded before, - * so this may be called without any of the download callbacks being invoked prior. - */ -- (void)showDownloadDidStartExtractingUpdate; - -/** - * Show the user that the update is extracting with progress - * - * Let the user know how far along the update extraction is. - * - * Before this point, `-showDownloadDidStartExtractingUpdate` is called. - * - * @param progress The progress of the extraction from a 0.0 to 1.0 scale - */ -- (void)showExtractionReceivedProgress:(double)progress; - -/** - * Show the user that the update is ready to install & relaunch - * - * Let the user know that the update is ready to install and relaunch, and ask them whether they want to proceed. - * Note if the target application has already terminated, this method may not be invoked. - * - * A reply of `SPUUserUpdateChoiceInstall` installs the update the new update immediately. The application is relaunched only if it is still running by the time this reply is invoked. If the application terminates on its own, Sparkle will attempt to automatically install the update. - * - * A reply of `SPUUserUpdateChoiceDismiss` dismisses the update installation for the time being. Note the update may still be installed automatically after the application terminates. - * - * A reply of `SPUUserUpdateChoiceSkip` cancels the current update that has begun installing and dismisses the update. In this circumstance, the update is canceled but this update version is not skipped in the future. - * - * Before this point, `-showExtractionReceivedProgress:` or `-showUpdateFoundWithAppcastItem:state:reply:` may be called. - * - * @param reply The reply which indicates if the update should be installed, dismissed, or skipped. See above discussion for more details. - */ -- (void)showReadyToInstallAndRelaunch:(void (^)(SPUUserUpdateChoice))reply; - -/** - * Show the user that the update is installing - * - * Let the user know that the update is currently installing. - * - * Before this point, `-showReadyToInstallAndRelaunch:` or `-showUpdateFoundWithAppcastItem:state:reply:` will be called. - * - * @param applicationTerminated Indicates if the application has been terminated already. - * If the application hasn't been terminated, a quit event is sent to the running application before installing the update. - * If the application or user delays or cancels termination, there may be an indefinite period of time before the application fully quits. - * It is up to the implementor whether or not to decide to continue showing installation progress in this case. - * - * @param retryTerminatingApplication This handler gives a chance for the application to re-try sending a quit event to the running application before installing the update. - * The application may cancel or delay termination. This handler gives the user driver another chance to allow the user to try terminating the application again. - * If the application does not delay or cancel application termination, there is no need to invoke this handler. This handler may be invoked multiple times. - * Note this handler should not be invoked if @c applicationTerminated is already @c YES - */ -- (void)showInstallingUpdateWithApplicationTerminated:(BOOL)applicationTerminated retryTerminatingApplication:(void (^)(void))retryTerminatingApplication; - -/** - * Show the user that the update installation finished - * - * Let the user know that the update finished installing. - * - * This will only be invoked if the updater process is still alive, which is typically not the case if - * the updater's lifetime is tied to the application it is updating. This implementation must not try to reference - * the old bundle prior to the installation, which will no longer be around. - * - * Before this point, `-showInstallingUpdateWithApplicationTerminated:retryTerminatingApplication:` will be called. - * - * @param relaunched Indicates if the update was relaunched. - * @param acknowledgement Acknowledge to the updater that the finished installation was shown. - */ -- (void)showUpdateInstalledAndRelaunched:(BOOL)relaunched acknowledgement:(void (^)(void))acknowledgement; - -/** - * Show the user the current presented update or its progress in utmost focus - * - * The user wishes to check for updates while the user is being shown update progress. - * Bring whatever is on screen to frontmost focus (permission request, update information, downloading or extraction status, choice to install update, etc). - */ -- (void)showUpdateInFocus; - -/** - * Dismiss the current update installation - * - * Stop and tear down everything. - * Dismiss all update windows, alerts, progress, etc from the user. - * Basically, stop everything that could have been started. Sparkle may invoke this when aborting or finishing an update. - */ -- (void)dismissUpdateInstallation; - -/* - * Below are deprecated methods that have been replaced by better alternatives. - * The deprecated methods will be used if the alternatives have not been implemented yet. - * In the future support for using these deprecated methods may be removed however. - */ -@optional - -// Clients should move to non-deprecated methods -// Deprecated methods are only (temporarily) kept around for compatibility reasons - -- (void)showUpdateNotFoundWithAcknowledgement:(void (^)(void))acknowledgement __deprecated_msg("Implement -showUpdateNotFoundWithError:acknowledgement: instead"); - -- (void)showUpdateInstallationDidFinishWithAcknowledgement:(void (^)(void))acknowledgement __deprecated_msg("Implement -showUpdateInstalledAndRelaunched:acknowledgement: instead"); - -- (void)dismissUserInitiatedUpdateCheck __deprecated_msg("Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs."); - -- (void)showInstallingUpdate __deprecated_msg("Implement -showInstallingUpdateWithApplicationTerminated:retryTerminatingApplication: instead."); - -- (void)showSendingTerminationSignal __deprecated_msg("Implement -showInstallingUpdateWithApplicationTerminated:retryTerminatingApplication: instead."); - -- (void)showInstallingUpdateWithApplicationTerminated:(BOOL)applicationTerminated __deprecated_msg("Implement -showInstallingUpdateWithApplicationTerminated:retryTerminatingApplication: instead.");; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUserUpdateState.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUserUpdateState.h deleted file mode 100644 index f7fcc1e83..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SPUUserUpdateState.h +++ /dev/null @@ -1,77 +0,0 @@ -// -// SPUUserUpdateState.h -// Sparkle -// -// Created by Mayur Pawashe on 2/29/16. -// Copyright © 2016 Sparkle Project. All rights reserved. -// - -#ifndef SPUUserUpdateState_h -#define SPUUserUpdateState_h - -#import - -#import - -NS_ASSUME_NONNULL_BEGIN - -/** - A choice made by the user when prompted with a new update. - */ -typedef NS_ENUM(NSInteger, SPUUserUpdateChoice) { - /** - Dismisses the update and skips being notified of it in the future. - */ - SPUUserUpdateChoiceSkip, - /** - Downloads (if needed) and installs the update. - */ - SPUUserUpdateChoiceInstall, - /** - Dismisses the update until Sparkle reminds the user of it at a later time. - */ - SPUUserUpdateChoiceDismiss, -}; - -/** - Describes the current stage an update is undergoing. - */ -typedef NS_ENUM(NSInteger, SPUUserUpdateStage) { - /** - The update has not been downloaded. - */ - SPUUserUpdateStageNotDownloaded, - /** - The update has already been downloaded but not begun installing. - */ - SPUUserUpdateStageDownloaded, - /** - The update has already been downloaded and began installing in the background. - */ - SPUUserUpdateStageInstalling -}; - -/** - This represents the user's current update state. - */ -SU_EXPORT @interface SPUUserUpdateState : NSObject - -- (instancetype)init NS_UNAVAILABLE; - -/** - The current update stage. - - This stage indicates if data has been already downloaded or not, or if an update is currently being installed. - */ -@property (nonatomic, readonly) SPUUserUpdateStage stage; - -/** - Indicates whether or not the update check was initiated by the user. - */ -@property (nonatomic, readonly) BOOL userInitiated; - -@end - -NS_ASSUME_NONNULL_END - -#endif /* SPUUserUpdateState_h */ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUAppcast.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUAppcast.h deleted file mode 100644 index 3454b1b0f..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUAppcast.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// SUAppcast.h -// Sparkle -// -// Created by Andy Matuschak on 3/12/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUAPPCAST_H -#define SUAPPCAST_H - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@class SUAppcastItem; - -/** - The appcast representing a collection of `SUAppcastItem` items in the feed. - */ -SU_EXPORT @interface SUAppcast : NSObject - -- (instancetype)init NS_UNAVAILABLE; - -/** - The collection of update items. - - These `SUAppcastItem` items are in the same order as specified in the appcast XML feed and are thus not sorted by version. - */ -@property (readonly, copy) NSArray *items; - -@end - -NS_ASSUME_NONNULL_END - -#endif diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUAppcastItem.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUAppcastItem.h deleted file mode 100644 index c53c87ca0..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUAppcastItem.h +++ /dev/null @@ -1,391 +0,0 @@ -// -// SUAppcastItem.h -// Sparkle -// -// Created by Andy Matuschak on 3/12/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUAPPCASTITEM_H -#define SUAPPCASTITEM_H - -#import - -#ifdef BUILDING_SPARKLE_TESTS -// Ignore incorrect warning -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wquoted-include-in-framework-header" -#import "SUExport.h" -#pragma clang diagnostic pop -#else -#import -#endif - -NS_ASSUME_NONNULL_BEGIN - -/** - The appcast item describing an update in the application's appcast feed. - - An appcast item represents a single update item in the `SUAppcast` contained within the @c element. - - Every appcast item must have a `versionString`, and either a `fileURL` or an `infoURL`. - All the remaining properties describing an update to the application are optional. - - Extended documentation and examples on using appcast item features are available at: - https://sparkle-project.org/documentation/publishing/ - */ -SU_EXPORT @interface SUAppcastItem : NSObject - -/** - The version of the update item. - - Sparkle uses this property to compare update items and determine the best available update item in the `SUAppcast`. - - This corresponds to the application update's @c CFBundleVersion - - This is extracted from the @c element, or the @c sparkle:version attribute from the @c element. - */ -@property (copy, readonly) NSString *versionString; - -/** - The human-readable display version of the update item if provided. - - This is the version string shown to the user when they are notified of a new update. - - This corresponds to the application update's @c CFBundleShortVersionString - - This is extracted from the @c element, or the @c sparkle:shortVersionString attribute from the @c element. - - If no short version string is available, this falls back to the update's `versionString`. - */ -@property (copy, readonly) NSString *displayVersionString; - -/** - The file URL to the update item if provided. - - This download contains the actual update Sparkle will attempt to install. - In cases where a download cannot be provided, an `infoURL` must be provided instead. - - A file URL should have an accompanying `contentLength` provided. - - This is extracted from the @c url attribute in the @c element. - */ -@property (readonly, nullable) NSURL *fileURL; - -/** - The content length of the download in bytes. - - This property is used as a fallback when the server doesn't report the content length of the download. - In that case, it is used to report progress of the downloading update to the user. - - A warning is outputted if this property is not equal the server's expected content length (if provided). - - This is extracted from the @c length attribute in the @c element. - It should be specified if a `fileURL` is provided. - */ -@property (nonatomic, readonly) uint64_t contentLength; - -/** - The info URL to the update item if provided. - - This informational link is used to direct the user to learn more about an update they cannot download/install directly from within the application. - The link should point to the product's web page. - - The informational link will be used if `informationOnlyUpdate` is @c YES - - This is extracted from the @c element. - */ -@property (readonly, nullable) NSURL *infoURL; - -/** - Indicates whether or not the update item is only informational and has no download. - - If `infoURL` is not present, this is @c NO - - If `fileURL` is not present, this is @c YES - - Otherwise this is determined based on the contents extracted from the @c element. - */ -@property (getter=isInformationOnlyUpdate, readonly) BOOL informationOnlyUpdate; - -/** - The title of the appcast item if provided. - - This is extracted from the @c element. - */ -@property (copy, readonly, nullable) NSString *title; - -/** - The date string of the appcast item if provided. - - The `date` property is constructed from this property and expects this string to comply with the following date format: - `E, dd MMM yyyy HH:mm:ss Z` - - This is extracted from the @c <pubDate> element. - */ -@property (copy, readonly, nullable) NSString *dateString; - -/** - The date constructed from the `dateString` property if provided. - - Sparkle by itself only uses this property for phased group rollouts specified via `phasedRolloutInterval`, but clients may query this property too. - - This date is constructed using the @c en_US locale. - */ -@property (copy, readonly, nullable) NSDate *date; - -/** - The release notes URL of the appcast item if provided. - - This external link points to an HTML file that Sparkle downloads and renders to show the user a new or old update item's changelog. - - An alternative to using an external release notes link is providing an embedded `itemDescription`. - - This is extracted from the @c <sparkle:releaseNotesLink> element. - */ -@property (readonly, nullable) NSURL *releaseNotesURL; - -/** - The description of the appcast item if provided. - - A description may be provided for inline/embedded release notes for new updates using @c <![CDATA[...]]> - This is an alternative to providing a `releaseNotesURL`. - - This is extracted from the @c <description> element. - */ -@property (copy, readonly, nullable) NSString *itemDescription; - -/** - The full release notes URL of the appcast item if provided. - - The link should point to the product's full changelog. - - Sparkle's standard user interface offers to show these full release notes when a user checks for a new update and no new update is available. - - This is extracted from the @c <sparkle:fullReleaseNotesLink> element. - */ -@property (readonly, nullable) NSURL *fullReleaseNotesURL; - -/** - The required minimum system operating version string for this update if provided. - - This version string should contain three period-separated components. - - Example: @c 10.13.0 - - Use `minimumOperatingSystemVersionIsOK` property to test if the current running system passes this requirement. - - This is extracted from the @c <sparkle:minimumSystemVersion> element. - */ -@property (copy, readonly, nullable) NSString *minimumSystemVersion; - -/** - Indicates whether or not the current running system passes the `minimumSystemVersion` requirement. - */ -@property (nonatomic, readonly) BOOL minimumOperatingSystemVersionIsOK; - -/** - The required maximum system operating version string for this update if provided. - - A maximum system operating version requirement should only be made in unusual scenarios. - - This version string should contain three period-separated components. - - Example: @c 10.14.0 - - Use `maximumOperatingSystemVersionIsOK` property to test if the current running system passes this requirement. - - This is extracted from the @c <sparkle:maximumSystemVersion> element. - */ -@property (copy, readonly, nullable) NSString *maximumSystemVersion; - -/** - Indicates whether or not the current running system passes the `maximumSystemVersion` requirement. - */ -@property (nonatomic, readonly) BOOL maximumOperatingSystemVersionIsOK; - -/** - The channel the update item is on if provided. - - An update item may specify a custom channel name (such as @c beta) that can only be found by updaters that filter for that channel. - If no channel is provided, the update item is assumed to be on the default channel. - - This is extracted from the @c <sparkle:channel> element. - Old applications must be using Sparkle 2 or later to interpret the channel element and to ignore unmatched channels. - */ -@property (nonatomic, readonly, nullable) NSString *channel; - -/** - The installation type of the update at `fileURL` - - This may be: - - @c application - indicates this is a regular application update. - - @c package - indicates this is a guided package installer update. - - @c interactive-package - indicates this is an interactive package installer update (deprecated; use "package" instead) - - This is extracted from the @c sparkle:installationType attribute in the @c <enclosure> element. - - If no installation type is provided in the enclosure, the installation type is inferred from the `fileURL` file extension instead. - - If the file extension is @c pkg or @c mpkg, the installation type is @c package otherwise it is @c application - - Hence, the installation type in the enclosure element only needs to be specified for package based updates distributed inside of a @c zip or other archive format. - - Old applications must be using Sparkle 1.26 or later to support downloading bare package updates (`pkg` or `mpkg`) that are not additionally archived inside of a @c zip or other archive format. - */ -@property (nonatomic, copy, readonly) NSString *installationType; - -/** - The phased rollout interval of the update item in seconds if provided. - - This is the interval between when different groups of users are notified of a new update. - - For this property to be used by Sparkle, the published `date` on the update item must be present as well. - - After each interval after the update item's `date`, a new group of users become eligible for being notified of the new update. - - This is extracted from the @c <sparkle:phasedRolloutInterval> element. - - Old applications must be using Sparkle 1.25 or later to support phased rollout intervals, otherwise they may assume updates are immediately available. - */ -@property (copy, readonly, nullable) NSNumber* phasedRolloutInterval; - -/** - The minimum bundle version string this update requires for automatically downloading and installing updates if provided. - - If an application's bundle version meets this version requirement, it can install the new update item in the background automatically. - - Otherwise if the requirement is not met, the user is always prompted to install the update. In this case, the update is assumed to be a `majorUpgrade`. - - If the update is a `majorUpgrade` and the update is skipped by the user, other future update alerts with the same `minimumAutoupdateVersion` will also be skipped automatically unless an update specifies `ignoreSkippedUpgradesBelowVersion`. - - This version string corresponds to the application's @c CFBundleVersion - - This is extracted from the @c <sparkle:minimumAutoupdateVersion> element. - */ -@property (copy, readonly, nullable) NSString *minimumAutoupdateVersion; - -/** - Indicates whether or not the update item is a major upgrade. - - An update is a major upgrade if the application's bundle version doesn't meet the `minimumAutoupdateVersion` requirement. - */ -@property (getter=isMajorUpgrade, readonly) BOOL majorUpgrade; - -/** - Previously skipped upgrades by the user will be ignored if they skipped an update whose version precedes this version. - - This can only be applied if the update is a `majorUpgrade`. - - This version string corresponds to the application's @c CFBundleVersion - - This is extracted from the @c <sparkle:ignoreSkippedUpgradesBelowVersion> element. - - Old applications must be using Sparkle 2.1 or later, otherwise this property will be ignored. - */ -@property (nonatomic, readonly, nullable) NSString *ignoreSkippedUpgradesBelowVersion; - -/** - Indicates whether or not the update item is critical. - - Critical updates are shown to the user more promptly. Sparkle's standard user interface also does not allow them to be skipped. - - This is determined and extracted from a top-level @c <sparkle:criticalUpdate> element or a @c sparkle:criticalUpdate element inside of a @c sparkle:tags element. - - Old applications must be using Sparkle 2 or later to support the top-level @c <sparkle:criticalUpdate> element. - */ -@property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate; - -/** - Specifies the operating system the download update is available for if provided. - - If this property is not provided, then the supported operating system is assumed to be macOS. - - Known potential values for this string are @c macos and @c windows - - Sparkle on Mac ignores update items that are for other operating systems. - This is only useful for sharing appcasts between Sparkle on Mac and Sparkle on other operating systems. - - Use `macOsUpdate` property to test if this update item is for macOS. - - This is extracted from the @c sparkle:os attribute in the @c <enclosure> element. - */ -@property (copy, readonly, nullable) NSString *osString; - -/** - Indicates whether or not this update item is for macOS. - - This is determined from the `osString` property. - */ -@property (getter=isMacOsUpdate, readonly) BOOL macOsUpdate; - -/** - The delta updates for this update item. - - Sparkle uses these to download and apply a smaller update based on the version the user is updating from. - - The key is based on the @c sparkle:version of the update. - The value is an update item that will have `deltaUpdate` be @c YES - - Clients typically should not need to examine the contents of the delta updates. - - This is extracted from the @c <sparkle:deltas> element. - */ -@property (copy, readonly, nullable) NSDictionary<NSString *, SUAppcastItem *> *deltaUpdates; - -/** - The expected size of the Sparkle executable file before applying this delta update. - - This attribute is used to test if the delta item can still be applied. If Sparkle's executable file has changed (e.g. from having an architecture stripped), - then the delta item cannot be applied. - - This is extracted from the @c sparkle:deltaFromSparkleExecutableSize attribute from the @c <enclosure> element of a @c sparkle:deltas item. - This attribute is optional for delta update items. - */ -@property (nonatomic, readonly, nullable) NSNumber *deltaFromSparkleExecutableSize; - -/** - An expected set of Sparkle's locales present on disk before applying this delta update. - - This attribute is used to test if the delta item can still be applied. If Sparkle's list of locales present on disk (.lproj directories) do not contain any items from this set, - (e.g. from having localization files stripped) then the delta item cannot be applied. This set does not need to be a complete list of locales. Sparkle may even decide - to not process all them. 1-10 should be a decent amount. - - This is extracted from the @c sparkle:deltaFromSparkleLocales attribute from the @c <enclosure> element of a @c sparkle:deltas item. - The locales extracted from this attribute are delimited by a comma (e.g. "en,ca,fr,hr,hu"). This attribute is optional for delta update items. - */ -@property (nonatomic, readonly, nullable) NSSet<NSString *> *deltaFromSparkleLocales; - -/** - Indicates whether or not the update item is a delta update. - - An update item is a delta update if it is in the `deltaUpdates` of another update item. - */ -@property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate; - -/** - The dictionary representing the entire appcast item. - - This is useful for querying custom extensions or elements from the appcast item. - */ -@property (readonly, copy) NSDictionary *propertiesDictionary; - -- (instancetype)init NS_UNAVAILABLE; - -/** - An empty appcast item. - - This may be used as a potential return value in `-[SPUUpdaterDelegate bestValidUpdateInAppcast:forUpdater:]` - */ -+ (instancetype)emptyAppcastItem; - -// Deprecated initializers -- (nullable instancetype)initWithDictionary:(NSDictionary *)dict __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case."); -- (nullable instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case."); -- (nullable instancetype)initWithDictionary:(NSDictionary *)dict relativeToURL:(NSURL * _Nullable)appcastURL failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case."); - -@end - -NS_ASSUME_NONNULL_END - -#endif diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUErrors.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUErrors.h deleted file mode 100644 index 22bf60664..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUErrors.h +++ /dev/null @@ -1,106 +0,0 @@ -// -// SUErrors.h -// Sparkle -// -// Created by C.W. Betts on 10/13/14. -// Copyright (c) 2014 Sparkle Project. All rights reserved. -// - -#ifndef SUERRORS_H -#define SUERRORS_H - -#import <Foundation/Foundation.h> - -#if defined(BUILDING_SPARKLE_TOOL) || defined(BUILDING_SPARKLE_TESTS) -// Ignore incorrect warning -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wquoted-include-in-framework-header" -#import "SUExport.h" -#pragma clang diagnostic pop -#else -#import <Sparkle/SUExport.h> -#endif - -/** - * Error domain used by Sparkle - */ -SU_EXPORT extern NSString *const SUSparkleErrorDomain; - -typedef NS_ENUM(OSStatus, SUError) { - // Configuration phase errors - SUNoPublicDSAFoundError = 0001, - SUInsufficientSigningError = 0002, - SUInsecureFeedURLError = 0003, - SUInvalidFeedURLError = 0004, - SUInvalidUpdaterError = 0005, - SUInvalidHostBundleIdentifierError = 0006, - SUInvalidHostVersionError = 0007, - - // Appcast phase errors. - SUAppcastParseError = 1000, - SUNoUpdateError = 1001, - SUAppcastError = 1002, - SURunningFromDiskImageError = 1003, - SUResumeAppcastError = 1004, - SURunningTranslocated = 1005, - SUWebKitTerminationError = 1006, - - // Download phase errors. - SUTemporaryDirectoryError = 2000, - SUDownloadError = 2001, - - // Extraction phase errors. - SUUnarchivingError = 3000, - SUSignatureError = 3001, - SUValidationError = 3002, - - // Installation phase errors. - SUFileCopyFailure = 4000, - SUAuthenticationFailure = 4001, - SUMissingUpdateError = 4002, - SUMissingInstallerToolError = 4003, - SURelaunchError = 4004, - SUInstallationError = 4005, - SUDowngradeError = 4006, - SUInstallationCanceledError = 4007, - SUInstallationAuthorizeLaterError = 4008, - SUNotValidUpdateError = 4009, - SUAgentInvalidationError = 4010, - SUInstallationRootInteractiveError = 4011, - SUInstallationWriteNoPermissionError = 4012, - - // API misuse errors. - SUIncorrectAPIUsageError = 5000 -}; - -/** - The reason why a new update is not available. - */ -typedef NS_ENUM(OSStatus, SPUNoUpdateFoundReason) { - /** - A new update is unavailable for an unknown reason. - */ - SPUNoUpdateFoundReasonUnknown, - /** - A new update is unavailable because the user is on the latest known version in the appcast feed. - */ - SPUNoUpdateFoundReasonOnLatestVersion, - /** - A new update is unavailable because the user is on a version newer than the latest known version in the appcast feed. - */ - SPUNoUpdateFoundReasonOnNewerThanLatestVersion, - /** - A new update is unavailable because the user's operating system version is too old for the update. - */ - SPUNoUpdateFoundReasonSystemIsTooOld, - /** - A new update is unavailable because the user's operating system version is too new for the update. - */ - SPUNoUpdateFoundReasonSystemIsTooNew -}; - -SU_EXPORT extern NSString *const SPUNoUpdateFoundReasonKey; -SU_EXPORT extern NSString *const SPULatestAppcastItemFoundKey; -SU_EXPORT extern NSString *const SPUNoUpdateFoundUserInitiatedKey; - -#endif diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUExport.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUExport.h deleted file mode 100644 index 3e3f8a164..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUExport.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// SUExport.h -// Sparkle -// -// Created by Jake Petroules on 2014-08-23. -// Copyright (c) 2014 Sparkle Project. All rights reserved. -// - -#ifndef SUEXPORT_H -#define SUEXPORT_H - -#ifdef BUILDING_SPARKLE -#define SU_EXPORT __attribute__((visibility("default"))) -#else -#define SU_EXPORT -#endif - -#endif diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUStandardVersionComparator.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUStandardVersionComparator.h deleted file mode 100644 index b9cfae6f9..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUStandardVersionComparator.h +++ /dev/null @@ -1,63 +0,0 @@ -// -// SUStandardVersionComparator.h -// Sparkle -// -// Created by Andy Matuschak on 12/21/07. -// Copyright 2007 Andy Matuschak. All rights reserved. -// - -#ifndef SUSTANDARDVERSIONCOMPARATOR_H -#define SUSTANDARDVERSIONCOMPARATOR_H - -#import <Foundation/Foundation.h> - -#ifdef BUILDING_SPARKLE_TOOL -// Ignore incorrect warning -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wquoted-include-in-framework-header" -#import "SUExport.h" -#import "SUVersionComparisonProtocol.h" -#pragma clang diagnostic pop -#else -#import <Sparkle/SUExport.h> -#import <Sparkle/SUVersionComparisonProtocol.h> -#endif - -NS_ASSUME_NONNULL_BEGIN - -/** - Sparkle's default version comparator. - - This comparator is adapted from MacPAD, by Kevin Ballard. - It's "dumb" in that it does essentially string comparison, - in components split by character type. -*/ -SU_EXPORT @interface SUStandardVersionComparator : NSObject <SUVersionComparison> - -/** - Initializes a new instance of the standard version comparator. -*/ -- (instancetype)init; - -/** - A singleton instance of the comparator. - */ -@property (nonatomic, class, readonly) SUStandardVersionComparator *defaultComparator; - -/** - Compares two version strings through textual analysis. - - These version strings should be in the format of x, x.y, or x.y.z where each component is a number. - For example, valid version strings include "1.5.3", "500", or "4000.1" - These versions that are compared correspond to the @c CFBundleVersion values of the updates. - - @param versionA The first version string to compare. - @param versionB The second version string to compare. - @return A comparison result between @c versionA and @c versionB -*/ -- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; - -@end - -NS_ASSUME_NONNULL_END -#endif diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUUpdatePermissionResponse.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUUpdatePermissionResponse.h deleted file mode 100644 index 770d75408..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUUpdatePermissionResponse.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// SUUpdatePermissionResponse.h -// Sparkle -// -// Created by Mayur Pawashe on 2/8/16. -// Copyright © 2016 Sparkle Project. All rights reserved. -// - -#import <Foundation/Foundation.h> -#import <Sparkle/SUExport.h> - -/** - This class represents a response for permission to check updates. -*/ -SU_EXPORT @interface SUUpdatePermissionResponse : NSObject<NSSecureCoding> - -/** - Initializes a new update permission response instance. - - @param automaticUpdateChecks Flag for whether to allow automatic update checks. - @param sendSystemProfile Flag for if system profile information should be sent to the server hosting the appcast. - */ -- (instancetype)initWithAutomaticUpdateChecks:(BOOL)automaticUpdateChecks sendSystemProfile:(BOOL)sendSystemProfile; - -/* - Use -initWithAutomaticUpdateChecks:sendSystemProfile: instead. - */ -- (instancetype)init NS_UNAVAILABLE; - -/** - A read-only property indicating whether automatic update checks are allowed or not. - */ -@property (nonatomic, readonly) BOOL automaticUpdateChecks; - -/** - A read-only property indicating if system profile should be sent or not. - */ -@property (nonatomic, readonly) BOOL sendSystemProfile; - -@end diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUUpdater.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUUpdater.h deleted file mode 100644 index f26832450..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUUpdater.h +++ /dev/null @@ -1,200 +0,0 @@ -// -// SUUpdater.h -// Sparkle -// -// Created by Andy Matuschak on 1/4/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUUPDATER_H -#define SUUPDATER_H - -#import <Foundation/Foundation.h> -#import <Sparkle/SUExport.h> -#import <Sparkle/SUVersionComparisonProtocol.h> -#import <Sparkle/SUVersionDisplayProtocol.h> -#import <Sparkle/SUUpdaterDelegate.h> - -@class SUAppcastItem, SUAppcast, NSMenuItem; - -@protocol SUUpdaterDelegate; - -/** - The legacy API in Sparkle for controlling the update mechanism. - - This class is now deprecated and acts as a thin wrapper around `SPUUpdater` and `SPUStandardUserDriver`. - - If you are migrating to Sparkle 2, use `SPUStandardUpdaterController` instead, or `SPUUpdater` if you need more control. - */ -__deprecated_msg("Deprecated in Sparkle 2. Use SPUStandardUpdaterController instead, or SPUUpdater if you need more control.") -SU_EXPORT @interface SUUpdater : NSObject - -@property (unsafe_unretained, nonatomic) IBOutlet id<SUUpdaterDelegate> delegate; - -/*! - The shared updater for the main bundle. - - This is equivalent to passing [NSBundle mainBundle] to SUUpdater::updaterForBundle: - */ -+ (SUUpdater *)sharedUpdater; - -/*! - The shared updater for a specified bundle. - If an updater has already been initialized for the provided bundle, that shared instance will be returned. - */ -+ (SUUpdater *)updaterForBundle:(NSBundle *)bundle; - -/*! - Designated initializer for SUUpdater. - - If an updater has already been initialized for the provided bundle, that shared instance will be returned. - */ -- (instancetype)initForBundle:(NSBundle *)bundle; - -/*! - Explicitly checks for updates and displays a progress dialog while doing so. - - This method is meant for a main menu item. - Connect any menu item to this action in Interface Builder, - and Sparkle will check for updates and report back its findings verbosely - when it is invoked. - - This will find updates that the user has opted into skipping. - */ -- (IBAction)checkForUpdates:(id)sender; - -/*! - The menu item validation used for the -checkForUpdates: action - */ -- (BOOL)validateMenuItem:(NSMenuItem *)menuItem; - -/*! - Checks for updates, but does not display any UI unless an update is found. - - This is meant for programmatically initating a check for updates. That is, - it will display no UI unless it actually finds an update, in which case it - proceeds as usual. - - If automatic downloading of updates it turned on and allowed, however, - this will invoke that behavior, and if an update is found, it will be downloaded - in the background silently and will be prepped for installation. - - This will not find updates that the user has opted into skipping. - */ -- (void)checkForUpdatesInBackground; - -/*! - A property indicating whether or not to check for updates automatically. - - Setting this property will persist in the host bundle's user defaults. - The update schedule cycle will be reset in a short delay after the property's new value is set. - This is to allow reverting this property without kicking off a schedule change immediately - */ -@property (nonatomic) BOOL automaticallyChecksForUpdates; - -/*! - A property indicating whether or not updates can be automatically downloaded in the background. - - Note that automatic downloading of updates can be disallowed by the developer. - In this case, -automaticallyDownloadsUpdates will return NO regardless of how this property is set. - - Setting this property will persist in the host bundle's user defaults. - */ -@property (nonatomic) BOOL automaticallyDownloadsUpdates; - -/*! - A property indicating the current automatic update check interval. - - Setting this property will persist in the host bundle's user defaults. - The update schedule cycle will be reset in a short delay after the property's new value is set. - This is to allow reverting this property without kicking off a schedule change immediately - */ -@property (nonatomic) NSTimeInterval updateCheckInterval; - -/*! - Begins a "probing" check for updates which will not actually offer to - update to that version. - - However, the delegate methods - SUUpdaterDelegate::updater:didFindValidUpdate: and - SUUpdaterDelegate::updaterDidNotFindUpdate: will be called, - so you can use that information in your UI. - - Updates that have been skipped by the user will not be found. - */ -- (void)checkForUpdateInformation; - -/*! - The URL of the appcast used to download update information. - - Setting this property will persist in the host bundle's user defaults. - If you don't want persistence, you may want to consider instead implementing - SUUpdaterDelegate::feedURLStringForUpdater: or SUUpdaterDelegate::feedParametersForUpdater:sendingSystemProfile: - - This property must be called on the main thread. - */ -@property (nonatomic, copy) NSURL *feedURL; - -/*! - The host bundle that is being updated. - */ -@property (readonly, nonatomic) NSBundle *hostBundle; - -/*! - The bundle this class (SUUpdater) is loaded into. - */ -@property (nonatomic, readonly) NSBundle *sparkleBundle; - -/*! - The user agent used when checking for and downloading updates. - - The default implementation can be overrided. - */ -@property (nonatomic, copy) NSString *userAgentString; - -/*! - The HTTP headers used when checking for and downloading updates. - - The keys of this dictionary are HTTP header fields (NSString) and values are corresponding values (NSString) - */ -@property (copy) NSDictionary<NSString *, NSString *> *httpHeaders; - -/*! - A property indicating whether or not the user's system profile information is sent when checking for updates. - - Setting this property will persist in the host bundle's user defaults. - */ -@property (nonatomic) BOOL sendsSystemProfile; - -/*! - A property indicating the decryption password used for extracting updates shipped as Apple Disk Images (dmg) - */ -@property (nonatomic, copy) NSString *decryptionPassword; - -/*! - Returns the date of last update check. - - \returns \c nil if no check has been performed. - */ -@property (nonatomic, readonly, copy) NSDate *lastUpdateCheckDate; - -/*! - Appropriately schedules or cancels the update checking timer according to - the preferences for time interval and automatic checks. - - This call does not change the date of the next check, - but only the internal NSTimer. - */ -- (void)resetUpdateCycle; - -/*! - A property indicating whether or not an update is in progress. - - Note this property is not indicative of whether or not user initiated updates can be performed. - Use SUUpdater::validateMenuItem: for that instead. - */ -@property (nonatomic, readonly) BOOL updateInProgress; - -@end - -#endif diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUUpdaterDelegate.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUUpdaterDelegate.h deleted file mode 100644 index 466a92a41..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUUpdaterDelegate.h +++ /dev/null @@ -1,354 +0,0 @@ -// -// SUUpdaterDelegate.h -// Sparkle -// -// Created by Mayur Pawashe on 3/12/16. -// Copyright © 2016 Sparkle Project. All rights reserved. -// - -#import <Foundation/Foundation.h> -#import <Sparkle/SUExport.h> - -@protocol SUVersionComparison, SUVersionDisplay; -@class SUUpdater, SUAppcast, SUAppcastItem; - -NS_ASSUME_NONNULL_BEGIN - -// ----------------------------------------------------------------------------- -// SUUpdater Notifications for events that might be interesting to more than just the delegate -// The updater will be the notification object -// ----------------------------------------------------------------------------- -SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification; -SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification; -SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification; -SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification; -#define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification; -#define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification; - -// Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo -SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey; -// Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo -SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey; - -// ----------------------------------------------------------------------------- -// SUUpdater Delegate: -// ----------------------------------------------------------------------------- - -/*! - Provides methods to control the behavior of an SUUpdater object. - */ -__deprecated_msg("Deprecated in Sparkle 2. See SPUUpdaterDelegate instead") -@protocol SUUpdaterDelegate <NSObject> -@optional - -/*! - Returns whether to allow Sparkle to pop up. - - For example, this may be used to prevent Sparkle from interrupting a setup assistant. - - \param updater The SUUpdater instance. - */ -- (BOOL)updaterMayCheckForUpdates:(SUUpdater *)updater; - -/*! - Returns additional parameters to append to the appcast URL's query string. - - This is potentially based on whether or not Sparkle will also be sending along the system profile. - - \param updater The SUUpdater instance. - \param sendingProfile Whether the system profile will also be sent. - - \return An array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. - */ -- (NSArray<NSDictionary<NSString *, NSString *> *> *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; - -/*! - Returns a custom appcast URL. - - Override this to dynamically specify the entire URL. - - An alternative may be to use SUUpdaterDelegate::feedParametersForUpdater:sendingSystemProfile: - and let the server handle what kind of feed to provide. - - \param updater The SUUpdater instance. - */ -- (nullable NSString *)feedURLStringForUpdater:(SUUpdater *)updater; - -/*! - Returns whether Sparkle should prompt the user about automatic update checks. - - Use this to override the default behavior. - - \param updater The SUUpdater instance. - */ -- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)updater; - -/*! - Called after Sparkle has downloaded the appcast from the remote server. - - Implement this if you want to do some special handling with the appcast once it finishes loading. - - \param updater The SUUpdater instance. - \param appcast The appcast that was downloaded from the remote server. - */ -- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; - -/*! - Returns the item in the appcast corresponding to the update that should be installed. - - If you're using special logic or extensions in your appcast, - implement this to use your own logic for finding a valid update, if any, - in the given appcast. - - \param appcast The appcast that was downloaded from the remote server. - \param updater The SUUpdater instance. - */ -- (nullable SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)updater; - -/*! - Called when a valid update is found by the update driver. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be installed. - */ -- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item; - -/*! - Called when a valid update is not found. - - \param updater The SUUpdater instance. - */ -- (void)updaterDidNotFindUpdate:(SUUpdater *)updater; - -/*! - Called just before the scheduled update driver prompts the user to install an update. - - \param updater The SUUpdater instance. - - \return YES to allow the update prompt to be shown (the default behavior), or NO to suppress it. - */ - - (BOOL)updaterShouldShowUpdateAlertForScheduledUpdate:(SUUpdater *)updater forItem:(SUAppcastItem *)item; - - /*! - Called after the user dismisses the update alert. - - \param updater The SUUpdater instance. - \param permanently YES if the alert will not appear again for this update; NO if it may reappear. - */ - - (void)updater:(SUUpdater *)updater didDismissUpdateAlertPermanently:(BOOL)permanently forItem:(SUAppcastItem *)item; - -/*! - Called immediately before downloading the specified update. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be downloaded. - \param request The mutable URL request that will be used to download the update. - */ -- (void)updater:(SUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request; - -/*! - Called immediately after succesfull download of the specified update. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that has been downloaded. - */ -- (void)updater:(SUUpdater *)updater didDownloadUpdate:(SUAppcastItem *)item; - -/*! - Called after the specified update failed to download. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that failed to download. - \param error The error generated by the failed download. - */ -- (void)updater:(SUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error; - -/*! - Called when the user clicks the cancel button while and update is being downloaded. - - \param updater The SUUpdater instance. - */ -- (void)userDidCancelDownload:(SUUpdater *)updater; - -/*! - Called immediately before extracting the specified downloaded update. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be extracted. - */ -- (void)updater:(SUUpdater *)updater willExtractUpdate:(SUAppcastItem *)item; - -/*! - Called immediately after extracting the specified downloaded update. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that has been extracted. - */ -- (void)updater:(SUUpdater *)updater didExtractUpdate:(SUAppcastItem *)item; - -/*! - Called immediately before installing the specified update. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be installed. - */ -- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item; - -/*! - Called when an update is skipped by the user. - - \param updater The updater instance. - \param item The appcast item corresponding to the update that the user skipped. - */ -- (void)updater:(SUUpdater *)updater userDidSkipThisVersion:(SUAppcastItem *)item; - -/*! - Returns whether the relaunch should be delayed in order to perform other tasks. - - This is not called if the user didn't relaunch on the previous update, - in that case it will immediately restart. - - This may also not be called if the application is not going to relaunch after it terminates. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be installed. - \param invocation The invocation that must be completed with `[invocation invoke]` before continuing with the relaunch. - - \return \c YES to delay the relaunch until \p invocation is invoked. - */ -- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvoking:(NSInvocation *)invocation; - -/*! - Returns whether the relaunch should be delayed in order to perform other tasks. - - This is not called if the user didn't relaunch on the previous update, - in that case it will immediately restart. - - This method acts as a simpler alternative to SUUpdaterDelegate::updater:shouldPostponeRelaunchForUpdate:untilInvoking: avoiding usage of NSInvocation, which is not available in Swift environments. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be installed. - - \return \c YES to delay the relaunch. - */ -- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item; - -/*! - Returns whether the application should be relaunched at all. - - Some apps \b cannot be relaunched under certain circumstances. - This method can be used to explicitly prevent a relaunch. - - \param updater The SUUpdater instance. - */ -- (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater; - -/*! - Called immediately before relaunching. - - \param updater The SUUpdater instance. - */ -- (void)updaterWillRelaunchApplication:(SUUpdater *)updater; - -/*! - Called immediately after relaunching. SUUpdater delegate must be set before applicationDidFinishLaunching: to catch this event. - - \param updater The SUUpdater instance. - */ -- (void)updaterDidRelaunchApplication:(SUUpdater *)updater; - -/*! - Returns an object that compares version numbers to determine their arithmetic relation to each other. - - This method allows you to provide a custom version comparator. - If you don't implement this method or return \c nil, - the standard version comparator will be used. Note that the - standard version comparator may be used during installation for preventing - a downgrade, even if you provide a custom comparator here. - - \sa SUStandardVersionComparator - - \param updater The SUUpdater instance. - */ -- (nullable id<SUVersionComparison>)versionComparatorForUpdater:(SUUpdater *)updater; - -/*! - Returns an object that formats version numbers for display to the user. - If you don't implement this method or return \c nil, the standard version formatter will be used. - - \sa SUUpdateAlert - \param updater The SUUpdater instance. - */ -- (nullable id <SUVersionDisplay>)versionDisplayerForUpdater:(SUUpdater *)updater; - -/*! - Returns the path to the application which is used to relaunch after the update is installed. - - The installer also waits for the termination of the application at this path. - - The default is the path of the host bundle. - - \param updater The SUUpdater instance. - */ -- (nullable NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater; - -/*! - Called before an updater shows a modal alert window, - to give the host the opportunity to hide attached windows that may get in the way. - - \param updater The SUUpdater instance. - */ -- (void)updaterWillShowModalAlert:(SUUpdater *)updater; - -/*! - Called after an updater shows a modal alert window, - to give the host the opportunity to hide attached windows that may get in the way. - - \param updater The SUUpdater instance. - */ -- (void)updaterDidShowModalAlert:(SUUpdater *)updater; - -/*! - Called when an update is scheduled to be silently installed on quit. - - This is after an update has been automatically downloaded in the background. - (i.e. SUUpdater::automaticallyDownloadsUpdates is YES) - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be installed. - \param invocation Can be used to trigger an immediate silent install and relaunch. - */ -- (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationInvocation:(NSInvocation *)invocation; - -/*! - Called when an update is scheduled to be silently installed on quit. - This is after an update has been automatically downloaded in the background. - (i.e. SUUpdater::automaticallyDownloadsUpdates is YES) - This method acts as a more modern alternative to SUUpdaterDelegate::updater:willInstallUpdateOnQuit:immediateInstallationInvocation: using a block instead of NSInvocation, which is not available in Swift environments. - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that is proposed to be installed. - \param installationBlock Can be used to trigger an immediate silent install and relaunch. - */ -- (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationBlock:(void (^)(void))installationBlock; - -/*! - Calls after an update that was scheduled to be silently installed on quit has been canceled. - - \param updater The SUUpdater instance. - \param item The appcast item corresponding to the update that was proposed to be installed. - - \deprecated This method is no longer invoked. The installer will try to its best ability to install the update. - */ -- (void)updater:(SUUpdater *)updater didCancelInstallUpdateOnQuit:(SUAppcastItem *)item __deprecated; - -/*! - Called after an update is aborted due to an error. - - \param updater The SUUpdater instance. - \param error The error that caused the abort - */ -- (void)updater:(SUUpdater *)updater didAbortWithError:(NSError *)error; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUVersionComparisonProtocol.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUVersionComparisonProtocol.h deleted file mode 100644 index b21e90dfd..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUVersionComparisonProtocol.h +++ /dev/null @@ -1,42 +0,0 @@ -// -// SUVersionComparisonProtocol.h -// Sparkle -// -// Created by Andy Matuschak on 12/21/07. -// Copyright 2007 Andy Matuschak. All rights reserved. -// - -#ifndef SUVERSIONCOMPARISONPROTOCOL_H -#define SUVERSIONCOMPARISONPROTOCOL_H - -#import <Foundation/Foundation.h> - -#ifdef BUILDING_SPARKLE_TOOL -// Ignore incorrect warning -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wquoted-include-in-framework-header" -#import "SUExport.h" -#pragma clang diagnostic pop -#else -#import <Sparkle/SUExport.h> -#endif - -NS_ASSUME_NONNULL_BEGIN - -/** - Provides version comparison facilities for Sparkle. -*/ -@protocol SUVersionComparison - -/** - An abstract method to compare two version strings. - - Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, - and NSOrderedSame if they are equivalent. -*/ -- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD! - -@end - -NS_ASSUME_NONNULL_END -#endif diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUVersionDisplayProtocol.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUVersionDisplayProtocol.h deleted file mode 100644 index 736a28a86..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/SUVersionDisplayProtocol.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// SUVersionDisplayProtocol.h -// EyeTV -// -// Created by Uli Kusterer on 08.12.09. -// Copyright 2009 Elgato Systems GmbH. All rights reserved. -// - -#import <Foundation/Foundation.h> -#import <Sparkle/SUExport.h> - -/** - Applies special display formatting to version numbers. -*/ -SU_EXPORT @protocol SUVersionDisplay - -/** - Formats two version strings. - - Both versions are provided so that important distinguishing information - can be displayed while also leaving out unnecessary/confusing parts. -*/ -- (void)formatVersion:(NSString *_Nonnull*_Nonnull)inOutVersionA andVersion:(NSString *_Nonnull*_Nonnull)inOutVersionB; - -@end diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/Sparkle.h b/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/Sparkle.h deleted file mode 100644 index a048d2670..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Headers/Sparkle.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// Sparkle.h -// Sparkle -// -// Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SPARKLE_H -#define SPARKLE_H - -// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless -// there are name-space collisions) so we can list all of them to start with: - -#import <Sparkle/SUExport.h> -#import <Sparkle/SUAppcast.h> -#import <Sparkle/SUAppcastItem.h> -#import <Sparkle/SUStandardVersionComparator.h> -#import <Sparkle/SPUUpdater.h> -#import <Sparkle/SPUUpdaterDelegate.h> -#import <Sparkle/SPUUpdaterSettings.h> -#import <Sparkle/SUVersionComparisonProtocol.h> -#import <Sparkle/SUVersionDisplayProtocol.h> -#import <Sparkle/SUErrors.h> -#import <Sparkle/SPUUpdatePermissionRequest.h> -#import <Sparkle/SUUpdatePermissionResponse.h> -#import <Sparkle/SPUUserDriver.h> -#import <Sparkle/SPUDownloadData.h> - -// UI bits -#import <Sparkle/SPUStandardUpdaterController.h> -#import <Sparkle/SPUStandardUserDriver.h> -#import <Sparkle/SPUStandardUserDriverDelegate.h> - -// Deprecated bits -#import <Sparkle/SUUpdater.h> -#import <Sparkle/SUUpdaterDelegate.h> - -#endif diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Modules/module.modulemap b/Pods/Sparkle/Sparkle.framework/Versions/B/Modules/module.modulemap deleted file mode 100644 index af3fe6d05..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Sparkle { - umbrella header "Sparkle.h" - - export * - module * { export * } -} diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUAppcastItemStateResolver.h b/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUAppcastItemStateResolver.h deleted file mode 100644 index 825a5e2e4..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUAppcastItemStateResolver.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// SPUAppcastItemStateResolver.h -// Sparkle -// -// Created by Mayur Pawashe on 5/31/21. -// Copyright © 2021 Sparkle Project. All rights reserved. -// - -#import <Foundation/Foundation.h> - -#import <Sparkle/SUExport.h> - -NS_ASSUME_NONNULL_BEGIN - -@class SUStandardVersionComparator, SPUAppcastItemState; -@protocol SUVersionComparison; - -/** - Private exposed class used to resolve Appcast Item properties that rely on external factors such as a host. - This resolver is used for constructing appcast items. - */ -SU_EXPORT @interface SPUAppcastItemStateResolver : NSObject - -- (instancetype)init NS_UNAVAILABLE; - -- (instancetype)initWithHostVersion:(NSString *)hostVersion applicationVersionComparator:(id<SUVersionComparison>)applicationVersionComparator standardVersionComparator:(SUStandardVersionComparator *)standardVersionComparator; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUGentleUserDriverReminders.h b/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUGentleUserDriverReminders.h deleted file mode 100644 index a509e0e07..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUGentleUserDriverReminders.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// SPUGentleUserDriverReminders.h -// Sparkle -// -// Copyright © 2022 Sparkle Project. All rights reserved. -// - -#ifndef SPUGentleUserDriverReminders_h -#define SPUGentleUserDriverReminders_h - -/** - A private protocol for user drivers implementing gentle scheduled reminders - */ -@protocol SPUGentleUserDriverReminders - -- (void)logGentleScheduledUpdateReminderWarningIfNeeded; - -- (void)resetTimeSinceOpportuneUpdateNotice; - -@end - -#endif /* SPUGentleUserDriverReminders_h */ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUInstallationType.h b/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUInstallationType.h deleted file mode 100644 index 2c6e55619..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUInstallationType.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// SPUInstallationType.h -// Sparkle -// -// Created by Mayur Pawashe on 7/24/16. -// Copyright © 2016 Sparkle Project. All rights reserved. -// - -#ifndef SPUInstallationType_h -#define SPUInstallationType_h - -#define SPUInstallationTypeApplication @"application" // the default installation type for ordinary application updates -#define SPUInstallationTypeGuidedPackage @"package" // the preferred installation type for package installations -#define SPUInstallationTypeInteractivePackage @"interactive-package" // the deprecated installation type; use guided package instead - -#define SPUInstallationTypesArray (@[SPUInstallationTypeApplication, SPUInstallationTypeGuidedPackage, SPUInstallationTypeInteractivePackage]) -#define SPUValidInstallationType(x) ((x != nil) && [SPUInstallationTypesArray containsObject:(NSString * _Nonnull)x]) - -#endif /* SPUInstallationType_h */ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUStandardUserDriver+Private.h b/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUStandardUserDriver+Private.h deleted file mode 100644 index 877cadf2b..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUStandardUserDriver+Private.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// SPUStandardUserDriver+Private.h -// Sparkle -// -// Copyright © 2022 Sparkle Project. All rights reserved. -// - -#ifndef SPUStandardUserDriver_Private_h -#define SPUStandardUserDriver_Private_h - -#import <Sparkle/SPUStandardUserDriver.h> -#import <Sparkle/SUExport.h> - -@class NSWindowController; - -NS_ASSUME_NONNULL_BEGIN - -SU_EXPORT @interface SPUStandardUserDriver (Private) - -/** - Private API for accessing the active update alert's window controller. - This is the window controller that shows the update's release notes and install choices. - This can be accessed in -[SPUStandardUserDriverDelegate standardUserDriverWillHandleShowingUpdate:forUpdate:state:] - */ -@property (nonatomic, readonly, nullable) NSWindowController *activeUpdateAlert; - -@end - -NS_ASSUME_NONNULL_END - -#endif /* SPUStandardUserDriver_Private_h */ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUUserAgent+Private.h b/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUUserAgent+Private.h deleted file mode 100644 index 0b3c3c71f..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SPUUserAgent+Private.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// SPUUserAgent+Private.h -// Sparkle -// -// Created by Mayur Pawashe on 11/12/21. -// Copyright © 2021 Sparkle Project. All rights reserved. -// - -#import <Foundation/Foundation.h> -#import <Sparkle/SUExport.h> - -NS_ASSUME_NONNULL_BEGIN - -@class SUHost; - -SU_EXPORT NSString *SPUMakeUserAgentWithHost(SUHost *responsibleHost, NSString * _Nullable displayNameSuffix); - -SU_EXPORT NSString *SPUMakeUserAgentWithBundle(NSBundle *responsibleBundle, NSString * _Nullable displayNameSuffix); - -NS_ASSUME_NONNULL_END diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SUAppcastItem+Private.h b/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SUAppcastItem+Private.h deleted file mode 100644 index 7527a8f09..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SUAppcastItem+Private.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// SUAppcastItem+Private.h -// Sparkle -// -// Created by Mayur Pawashe on 4/30/21. -// Copyright © 2021 Sparkle Project. All rights reserved. -// - -#ifndef SUAppcastItem_Private_h -#define SUAppcastItem_Private_h - -#import <Foundation/Foundation.h> - -NS_ASSUME_NONNULL_BEGIN - -// Available in SPUAppcastItemStateResolver.h (a private exposed header) -@class SPUAppcastItemStateResolver; -@class SUSignatures; - -@interface SUAppcastItem (Private) <NSSecureCoding> - -/** - Initializes with data from a dictionary provided by the RSS class and state resolver - - This initializer method is intended to be marked "private" and discouraged from public usage. - This method is available however. Talk to us to describe your use case and if you need to construct appcast items yourself. - */ -- (nullable instancetype)initWithDictionary:(NSDictionary *)dict relativeToURL:(NSURL * _Nullable)appcastURL stateResolver:(SPUAppcastItemStateResolver *)stateResolver failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error; - -/** - The DSA and EdDSA signatures along with their statuses. - */ -@property (readonly, nullable) SUSignatures *signatures; - -@end - -NS_ASSUME_NONNULL_END - -#endif /* SUAppcastItem_Private_h */ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SUInstallerLauncher+Private.h b/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SUInstallerLauncher+Private.h deleted file mode 100644 index f8e0410c5..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/PrivateHeaders/SUInstallerLauncher+Private.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// SUInstallerLauncher+Private.h -// SUInstallerLauncher+Private -// -// Created by Mayur Pawashe on 8/21/21. -// Copyright © 2021 Sparkle Project. All rights reserved. -// - -#ifndef SUInstallerLauncher_Private_h -#define SUInstallerLauncher_Private_h - -#import <Sparkle/SUExport.h> - -// Chances are clients will need this too -#import <Sparkle/SPUInstallationType.h> - -@class NSString; - -/** - Private API for determining if the system needs authorization access to update a bundle path - - This API is not supported when used directly from a Sandboxed applications and will always return @c YES in that case. - - @param bundlePath The bundle path to test if authorization is needed when performing an update that replaces this bundle. - @return @c YES if Sparkle thinks authorization is needed to update the @c bundlePath, otherwise @c NO. - */ -SU_EXPORT BOOL SPUSystemNeedsAuthorizationAccessForBundlePath(NSString *bundlePath); - -#endif /* SUInstallerLauncher_Private_h */ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdateAlert.nib b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdateAlert.nib deleted file mode 100644 index b06f35e9e..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdateAlert.nib and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib deleted file mode 100644 index aafc12594..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib deleted file mode 100644 index 81e6b6a05..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Base.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Base.lproj/Sparkle.strings deleted file mode 100644 index 3901514fd..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Base.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Info.plist b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Info.plist deleted file mode 100644 index a91ea7b86..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/Info.plist +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>BuildMachineOSBuild</key> - <string>21G419</string> - <key>CFBundleDevelopmentRegion</key> - <string>en</string> - <key>CFBundleExecutable</key> - <string>Sparkle</string> - <key>CFBundleIdentifier</key> - <string>org.sparkle-project.Sparkle</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>Sparkle</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>2.3.2</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleSupportedPlatforms</key> - <array> - <string>MacOSX</string> - </array> - <key>CFBundleVersion</key> - <string>2021.2</string> - <key>DTCompiler</key> - <string>com.apple.compilers.llvm.clang.1_0</string> - <key>DTPlatformBuild</key> - <string>13F100</string> - <key>DTPlatformName</key> - <string>macosx</string> - <key>DTPlatformVersion</key> - <string>12.3</string> - <key>DTSDKBuild</key> - <string>21E226</string> - <key>DTSDKName</key> - <string>macosx12.3</string> - <key>DTXcode</key> - <string>1341</string> - <key>DTXcodeBuild</key> - <string>13F100</string> - <key>LSMinimumSystemVersion</key> - <string>10.13</string> -</dict> -</plist> diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ReleaseNotesColorStyle.css b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ReleaseNotesColorStyle.css deleted file mode 100644 index bcd84a205..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ReleaseNotesColorStyle.css +++ /dev/null @@ -1,13 +0,0 @@ -@media (prefers-color-scheme: dark) { - html { - color-scheme: dark; - color: white; - background: transparent; - } - :link { - color: #419CFF; - } - :link:active { - color: #FF1919; - } -} diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/SUStatus.nib b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/SUStatus.nib deleted file mode 100644 index 6d471ce4b..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/SUStatus.nib and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ar.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ar.lproj/SUUpdateAlert.strings deleted file mode 100644 index 55b02304b..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ar.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "محدث البرنامج"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "معلومات عن الإصدار:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "تذكيري لاحقًا"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "تخطي هذا الإصدار"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "تثبيت التحديث"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "تنزيل التحديثات وتثبيتها تلقائيًا في المستقبل"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ar.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ar.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index a75b589a4..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ar.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "عدم التحقق"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "هل تريد أن يتم التحقق من وجود تحديثات تلقائيًا؟"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "تضمين تقرير عن النظام دون ذكر معلومات عن المستخدم"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "التحقق تلقائيًا"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ar.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ar.lproj/Sparkle.strings deleted file mode 100644 index 7ba248ad3..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ar.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ca.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ca.lproj/SUUpdateAlert.strings deleted file mode 100644 index 284cf6dc6..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ca.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Actualització del programari"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Notes d'aquesta versió:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Recorda-m'ho més tard"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Omet aquesta versió"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Instal·la l'actualització"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Descarrega i instal·la les actualitzacions automàticament en el futur"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ca.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ca.lproj/Sparkle.strings deleted file mode 100644 index d6bae329a..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ca.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/cs.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/cs.lproj/SUUpdateAlert.strings deleted file mode 100644 index ff7d56ff6..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/cs.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Aktualizace aplikace"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Poznámky k vydání:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Připomenout později"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Přeskočit tuto verzi"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Instalovat aktualizaci"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "V budoucnu stahovat a instalovat aktualizace automaticky"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/cs.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/cs.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 72489c9ef..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/cs.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Informace z anonymního systémového profilu pomáhají vývojářům lépe plánovat budoucí vývoj aplikace.\nBudete-li mít nějaký dotaz, obraťte se na nás.\n\nToto jsou informace, které budou odeslány:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Nevyhledávat"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Vyhledávat aktualizace automaticky?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Odeslat anonymní systémový profil"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Automaticky vyhledávat"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/cs.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/cs.lproj/Sparkle.strings deleted file mode 100644 index ba5cf81ac..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/cs.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/da.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/da.lproj/SUUpdateAlert.strings deleted file mode 100644 index 271ae308f..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/da.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Software Update"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Om denne udgivelse:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Påmind mig senere"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Spring over"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Installer"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Hent og installer opdateringer automatisk i fremtiden"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/da.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/da.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index d31f377bf..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/da.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Søg ikke"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Søg efter opdateringer automatisk?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Vedhæft anonym systemprofil"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Søg automatisk"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/da.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/da.lproj/Sparkle.strings deleted file mode 100644 index 2c717b2ff..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/da.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/de.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/de.lproj/SUUpdateAlert.strings deleted file mode 100644 index 93e067a3b..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/de.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Softwareupdate"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Versionshinweise:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Später erinnern"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Diese Version überspringen"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Installieren"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Updates in Zukunft automatisch laden und installieren"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/de.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/de.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index b4e78e120..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/de.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = ""; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = ""; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Das anonymisierte Systemprofil unterstützt uns bei der zukünftigen Entwicklung. Bitte kontaktiere uns, wenn du Fragen hierzu hast.\n\nDiese Informationen würden an uns gesendet werden:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Nicht suchen"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Automatisch nach Updates suchen?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Anonymisiertes Systemprofil übertragen"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Automatisch suchen"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/de.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/de.lproj/Sparkle.strings deleted file mode 100644 index 04b27fd35..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/de.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/el.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/el.lproj/SUUpdateAlert.strings deleted file mode 100644 index fc8679d8e..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/el.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Ενημέρωση προγράμματος"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Σημειώσεις Έκδοσης:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Υπενθύμιση Αργότερα"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Παράλειψη Έκδοσης"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Εγκατάσταση Ενημέρωσης"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Αυτόματη λήψη και εγκατάσταση ενημερώσεων στο μέλλον"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/el.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/el.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 3fa256d9e..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/el.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Οι ανώνυμες πληροφορίες του προφίλ του συστήματός σας, μας βοηθούν στο σχεδιασμό της μελλοντικής ανάπτυξης του προγράμματος. Παρακαλώ επικοινωνήστε μαζί μας άν έχετε ερωτήσεις.\n\nΑυτές είναι οι πληροφορίες που θα σταλούν σε εμάς:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Κανένας έλεγχος"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Αυτόματος έλεγχος για ενημερώσεις;"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Συμπερίληψη του ανώνυμου προφίλ του συστήματός σας"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Αυτόματος Ελεγχος"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/el.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/el.lproj/Sparkle.strings deleted file mode 100644 index f1c015eb0..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/el.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/en.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/en.lproj/SUUpdateAlert.strings deleted file mode 100644 index 45a4cfc06..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/en.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,18 +0,0 @@ - -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Software Update"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Release Notes:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Remind Me Later"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Skip This Version"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Install Update"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Automatically download and install updates in the future"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/en.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/en.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index e9c01f3ab..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/en.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,24 +0,0 @@ - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "176"; */ -"OhZ-1K-DmA.title" = "Check Automatically"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "177"; */ -"cCJ-V0-aTi.title" = "Don’t Check"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "178"; */ -"gmh-T4-BO0.title" = "Check for updates automatically?"; - -/* Class = "NSTextFieldCell"; title = "DO NOT LOCALIZE"; ObjectID = "179"; */ -"179.title" = "DO NOT LOCALIZE"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "180"; */ -"gz7-LM-gNf.title" = "Include anonymous system profile"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/es.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/es.lproj/SUUpdateAlert.strings deleted file mode 100644 index ab59ec28f..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/es.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Actualización de software"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Notas de la versión:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Recordármelo"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "No instalar esta versión"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Instalar actualización"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Descargar e instalar actualizaciones automáticamente"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/es.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/es.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index a0ae2e0bc..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/es.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "La información de perfil de sistema anónimo se usa para ayudarnos a planear el trabajo de desarrollo futuro. Por favor, póngase en contacto con nosotros si tiene preguntas sobre esto.\n\nEsta es la información que nos enviaría:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "No comprobar"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "¿Comprobar si hay actualizaciones automáticamente?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Incluir perfil de sistema anónimo"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Comprobar automáticamente"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/es.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/es.lproj/Sparkle.strings deleted file mode 100644 index 679caf37b..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/es.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fa.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fa.lproj/Sparkle.strings deleted file mode 100644 index 0323587c4..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fa.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fi.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fi.lproj/SUUpdateAlert.strings deleted file mode 100644 index dca6e2e39..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fi.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Ohjelmiston pävitys"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Tietoa päivityksestä:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Muistuta myöhemmin"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Ohita tämä versio"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Asenna päivitys"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Hae ja asenna päivitykset jatkossa automaattisesti"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fi.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fi.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index cf0623463..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fi.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Älä tarkista"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Tarkista päivitykset käynnistyksen yhteydessä?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Sisällytä nimetön järjestelmäprofiili"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Tarkista automaattisesti"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fi.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fi.lproj/Sparkle.strings deleted file mode 100644 index 36ce08d68..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fi.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fr.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fr.lproj/SUUpdateAlert.strings deleted file mode 100644 index fd8042edc..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fr.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Mise à jour logiciel"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Notes de version :"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Pas maintenant"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Ignorer cette version"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Installer"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Télécharger et installer automatiquement les mises à jour"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fr.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fr.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 463337ce0..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fr.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Les informations anonymes de profil système nous aident à planifier les futurs développements. Contactez-nous pour toute question à ce sujet.\n\nCi-dessous figurent les informations qui seront transmises :"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Ne pas vérifier"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Rechercher automatiquement les mises à jour ?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Avec transmission anonyme de mon profil système"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Vérifier automatiquement"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fr.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fr.lproj/Sparkle.strings deleted file mode 100644 index 042724d36..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/fr.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/he.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/he.lproj/SUUpdateAlert.strings deleted file mode 100644 index dc8fa211e..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/he.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "עדכון תכנה"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "פרטי גרסה:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "הזכר לי מאוחר יותר"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "דלג על גרסה זו"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "התקן עדכון"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "הורד והתקן עדכונים אוטומטית גם בעתיד"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/he.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/he.lproj/Sparkle.strings deleted file mode 100644 index bef347527..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/he.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hr.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hr.lproj/SUUpdateAlert.strings deleted file mode 100644 index 60525afb3..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hr.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Aktualiziranje softvera"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Napomene uz izdanje:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Podsjeti me kasnije"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Zanemari ovu verziju"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Instaliraj nadogradnju"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Ubuduće preuzmi i instaliraj nadogradnje automatski"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hr.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hr.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 8bff38ebc..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hr.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Anonimizirani podaci profila susatava pomažu nam planirati budući razvoj. Kontaktiraj nas, ako imaš pitanja o tome.\n\nŠalju se sljedeći podaci:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Nemoj provjeravati"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Automatski provjeriti nadogradnje?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Uključi anonimizirane podatke o profilu sustava"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Provjeri automatski"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hr.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hr.lproj/Sparkle.strings deleted file mode 100644 index b9d3a646e..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hr.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hu.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hu.lproj/SUUpdateAlert.strings deleted file mode 100644 index 841a5423c..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hu.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Szoftverfrissítés"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Változások az előző verzióhoz képest:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Emlékeztessen később"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Verzió kihagyása"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Telepítés"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "A jövőben automatikusan töltse le és telepítse a frissítéseket"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hu.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hu.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index d1a121f36..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hu.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Manuális keresés"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Keresse automatikusan a frissítéseket?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Anonim rendszerinformáció küldése"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Automatikus keresés"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hu.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hu.lproj/Sparkle.strings deleted file mode 100644 index 6b397d42e..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/hu.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/is.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/is.lproj/SUUpdateAlert.strings deleted file mode 100644 index 314a8caa0..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/is.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Hugbúnaðaruppfærsla"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Útgáfupunktar:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Áminntu mig síðar"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Sleppa þessari útgáfu"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Innsetja"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Sækja og innsetja uppfærslur sjálfkrafa framvegis"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/is.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/is.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index f21466e53..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/is.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Upplýsingar úr nafnlausum kerfisskýrslum eru notaðar til að hjálpa okkur við framtíðarþróun hugbúnaðarins. Ekki hika við að hafa samband ef spurningar vakna um þetta.\n\nÞetta eru upplýsingarnar sem yrðu sendar:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Ekki kanna"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Athuga sjálfkrafa með uppfærslur?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Innifela nafnlausa kerfisskýrslu"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Kanna sjálfkrafa"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/is.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/is.lproj/Sparkle.strings deleted file mode 100644 index 070979c61..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/is.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/it.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/it.lproj/SUUpdateAlert.strings deleted file mode 100644 index cc0d7c349..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/it.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Aggiornamento Software"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Note di rilascio:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Ricordamelo più tardi"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Ignora questa versione"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Installa"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "In futuro scarica e installa automaticamente gli aggiornamenti"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/it.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/it.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 4ddfda7e3..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/it.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Le informazioni del profilo di sistema anomino sono utilizzate per aiutarci in futuri lavori di sviluppo. Contattaci se hai dei quesiti sull’argomento.\n\nQueste sono le informazioni che verrebbero inviate:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Non controllare"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Controllo automaticamente gli aggiornamenti?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Include profilo di sistema anonimo"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Controlla Automaticamente"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/it.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/it.lproj/Sparkle.strings deleted file mode 100644 index cc0e4ef95..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/it.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ja.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ja.lproj/SUUpdateAlert.strings deleted file mode 100644 index 6ac6410d6..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ja.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "ソフトウェア・アップデート"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "リリースノート:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "後で通知"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "このバージョンはスキップ"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "アップデートをインストール"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "今後はアップデートのダウンロードとインストールを自動で行う"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ja.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ja.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index cff48a228..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ja.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "匿名のシステムプロファイル情報は、今後の開発の参考にさせていただきます。この件に関してご質問があればご連絡下さい。\n\n以下の情報が送信されます:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "確認しない"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "アップデートを自動で確認しますか?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "匿名のシステム情報を含める"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "自動で確認"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ja.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ja.lproj/Sparkle.strings deleted file mode 100644 index 3a06f4656..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ja.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ko.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ko.lproj/SUUpdateAlert.strings deleted file mode 100644 index ee92bf295..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ko.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Software Update"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "배포 정보:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "나중에"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "이 버전 건너뛰기"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "업데이트 설치"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "나중에 업데이트 자동으로 다운로드 및 설치"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ko.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ko.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 472ef4372..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ko.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "익명으로 보내지는 시스템 정보로 차후 프로그램 개발에 도움이 될 수 있습니다. 질문이 있으시면 연락 주십시오.\n\n아래 정보가 전송될 것입니다."; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "취소"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "자동으로 업데이트 확인할까요?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "익명 시스템 정보 포함"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "자동으로 확인"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ko.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ko.lproj/Sparkle.strings deleted file mode 100644 index 7cd74623f..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ko.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nb.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nb.lproj/SUUpdateAlert.strings deleted file mode 100644 index bd58fbb6b..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nb.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,18 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Programoppdatering"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Om oppdateringen:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Utsett"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Hopp over"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Installer"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Last ned og installer automatisk i fremtiden"; - diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nb.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nb.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 1b2d8bdb7..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nb.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,21 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Den anonyme systemprofilen hjelper oss med å planlegge fremtidig utviklingsarbeid. Ta gjerne kontakt med oss hvis du har spørsmål om dette.
\nFølgende innhold vil bli sendt:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Ikke søk"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Søk etter oppdateringer automatisk?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Inkluder anonym systemprofil"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Søk automatisk"; - diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nb.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nb.lproj/Sparkle.strings deleted file mode 100644 index c36e8d931..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nb.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nl.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nl.lproj/SUUpdateAlert.strings deleted file mode 100644 index 3edac367f..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nl.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Software-update"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Versiegegevens:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Herinner mij later"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Sla deze versie over"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Installeer update"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Download en installeer updates voortaan automatisch"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nl.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nl.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index af9d1b27f..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nl.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,14 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Aan de hand van anonieme informatie over het systeemprofiel kunnen wij toekomstige ontwikkelingswerkzaamheden beter plannen. Neem contact met ons op als je hierover vragen hebt.\n\nDit is de informatie die wordt verzonden:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Zoek niet"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Automatisch zoeken naar updates?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Voeg anoniem systeemprofiel bij"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Zoek automatisch"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nl.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nl.lproj/Sparkle.strings deleted file mode 100644 index 5ab394bef..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/nl.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pl.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pl.lproj/SUUpdateAlert.strings deleted file mode 100644 index 4092fd0ac..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pl.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Uaktualnienie oprogramowania"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Szczegóły wydania:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Przypomnij później"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Pomiń tę wersję"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Zainstaluj teraz"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Automatycznie pobierz i zainstaluj przyszłe uaktualnienia"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pl.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pl.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 029b447ee..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pl.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Nie sprawdzaj"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Sprawdzać automatycznie uaktualnienia?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Załącz anonimowe informacje o systemie"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Sprawdzaj automatycznie"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pl.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pl.lproj/Sparkle.strings deleted file mode 100644 index 38d03dee8..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pl.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/SUUpdateAlert.strings deleted file mode 100644 index 65aab0875..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Atualização de Software"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Notas do Lançamento:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Mais Tarde"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Ignorar Esta Versão"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Instalar Atualização"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Baixar e instalar atualizações futuras automaticamente"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 028f40ed1..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,23 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "As informações anônimas do sistema são usadas para nos ajudar a planejar o desenvolvimento futuro do aplicativo. Contate-nos caso tenha dúvidas sobre este procedimento.\n\nAs seguintes informações seriam enviadas:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Não Buscar"; - -/* Class = "NSTextFieldCell"; title = "DO NOT LOCALIZE"; ObjectID = "cfa-j0-Ya4"; */ -"cfa-j0-Ya4.title" = ""; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Buscar atualizações automaticamente?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Incluir perfil anônimo do sistema"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Buscar Automaticamente"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/Sparkle.strings deleted file mode 100644 index fae04566d..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/SUUpdateAlert.strings deleted file mode 100644 index ae805c423..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Actualização de Software"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Notas de lançamento:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Lembrar mais tarde"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Saltar esta versão"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Instalar actualização"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "No futuro, transferir e instalar actualizações automaticamente"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index ef9ae46d0..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "A informação anónima do perfil de sistema é usada para no futuro nos ajudar a planear o trabalho de desenvolvimento. Por favor contacte-nos se tiver alguma questão acerca deste assunto.\n\nEsta é a informação que seria enviada:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Não procurar"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Procurar actualizações automaticamente?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Incluir perfil de sistema anónimo"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Procurar automaticamente"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/Sparkle.strings deleted file mode 100644 index e7ed98d06..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ro.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ro.lproj/SUUpdateAlert.strings deleted file mode 100644 index 37e9bc76e..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ro.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Actualizarea aplicației"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Note de ediție:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Amintește-mi mai târziu"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Sari peste…"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Instalează actualizarea"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "În viitor descarcă și instalează în automat actualizările"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ro.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ro.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 8746a83ce..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ro.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Nu verifica"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Verifică pentru actualizări în mod automat?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Include profil anomin de sistem"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Verifică în mod automat"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ro.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ro.lproj/Sparkle.strings deleted file mode 100644 index 1ee78cb3b..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ro.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ru.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ru.lproj/SUUpdateAlert.strings deleted file mode 100644 index 137fd579f..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ru.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Обновление программного обеспечения"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Заметки о выпуске:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Напоминать позже"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Пропустить эту версию"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Установить обновление"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Автоматически загружать и устанавливать обновления в будущем"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ru.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ru.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 79ab608ce..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ru.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Использование анонимного профиля системы помогает нам в планировании будущей работы по разработке. Если у вас есть какие-либо вопросы по этой теме, обращайтесь к нам.\n\nЭто информация, предназначенная для отправления:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Не проверять"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Выполнять автоматическую проверку наличия обновлений?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Включить анонимный профиль системы"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Проверять автоматически"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ru.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ru.lproj/Sparkle.strings deleted file mode 100644 index 777f637a0..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/ru.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sk.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sk.lproj/SUUpdateAlert.strings deleted file mode 100644 index 266f0fb40..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sk.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Aktualizácia softvéru"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Poznámky k vydaniu:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Pripomenúť neskôr"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Vynechať túto verziu"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Nainštalovať"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "V budúcnosti aktualizácie preberať a inštalovať automaticky"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sk.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sk.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 25c836d80..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sk.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Anonymný profil systému nám umožní zlepšiť plánovanie budúceho vývoja aplikácie. Ak máte ohľadom tohto akékoľvek otázky, neváhajte a kontaktujte nás.\n\nOdosielané budú nasledujúce informácie:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Nekontrolovať"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Kontrolovať aktualizácie automaticky?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Zahrnúť anonymný profil systému"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Kontrolovať automaticky"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sk.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sk.lproj/Sparkle.strings deleted file mode 100644 index 157f6b96a..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sk.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sl.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sl.lproj/SUUpdateAlert.strings deleted file mode 100644 index d10602134..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sl.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Posodabljanje programske opreme"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Opombe ob izdaji:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Spomni me kasneje"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Preskoči to verzijo"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Namesti posodobitev"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "V prihodnje samodejno nameščaj posodobitve"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sl.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sl.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 514d88526..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sl.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Anonimni profil sistema se uporablja za načrtovanje nadaljnega razvoja programa. V primeru vprašanj nas lahko kontaktirate.\n\nPošljejo se sledeče informacije:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Ne preverjaj"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Naj občasno preverjam, če so na voljo posodobitve?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Vključi anonimni profil sistema"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Samodejno preverjaj"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sl.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sl.lproj/Sparkle.strings deleted file mode 100644 index ee72d7878..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sl.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sv.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sv.lproj/SUUpdateAlert.strings deleted file mode 100644 index 382b634a2..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sv.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Programuppdatering"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Versionsinformation:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Påminn mig senare"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Hoppa över denna version"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Installera uppdatering"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Hämta och installera nya uppdateringar automatiskt i framtiden."; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sv.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sv.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index b7ff87c7f..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sv.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Textcell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Textcell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Anonym systemprofilinformation används för att hjälpa oss att planera framtida utvecklingsarbete. Vänligen kontakta oss ifall du har några frågot om detta.\n\nDetta är informationen som skulle sändas:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Kontrollera inte"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Leta efter uppdateringar automatiskt?\n"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Inkludera anonym systemprofil"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Kontrollera automatiskt"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sv.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sv.lproj/Sparkle.strings deleted file mode 100644 index c17d53815..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/sv.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/th.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/th.lproj/SUUpdateAlert.strings deleted file mode 100644 index c57e3d3c5..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/th.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "อัพเดทซอฟต์แวร์"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Release Notes:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "เตือนในภายหลัง"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "ข้ามเวอร์ชั่นนี้"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "ติดตั้งอัพเดท"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "ดาวน์โหลดและติดตั้งอัพเดทโดยอัตโนมัติในอนาคต"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/th.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/th.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index d87f2cfbe..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/th.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "ข้อมูลระบบแบบนิรนามช่วยในการวางแผนพัฒนาแอปพลิเคชันของเราในอนาคต กรุณาติดต่อเราถ้าคุณมีข้อสงสัยในเรื่องนี้\n\nนี่คือข้อมูลที่จะถูกส่งไป:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "ไม่ต้องตรวจสอบ"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "ตรวจสอบอัพเดทอัตโนมัติ?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "ส่งข้อมูลระบบแบบนิรนาม"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "ตรวจสอบโดยอัตโนมัติ"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/th.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/th.lproj/Sparkle.strings deleted file mode 100644 index 1491bf012..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/th.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/tr.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/tr.lproj/SUUpdateAlert.strings deleted file mode 100644 index 7f67ed641..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/tr.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Software-Aktualisierung"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Sürüm Hakkında:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Sonra Hatırlat"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Bu Sürümü Geç"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Kur"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Bundan sonra güncellemeleri kendiliğinden indir ve kur"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/tr.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/tr.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 9378b6c75..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/tr.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Gönderdiğiniz anonim sistem bilgileri bu yazılımın geliştirilmesi için kullanılacaktır. Konu ile ilgili ayrıntılı bilgi için lütfen bizimle bağlantıya geçiniz. Göndereceğiniz Bilgiler:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Arama"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Güncellemeler otomatik olarak aransın mı?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Sistem bilgilerini kimlik gizlenmiş olarak gönder"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Otomatik Olarak Ara"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/tr.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/tr.lproj/Sparkle.strings deleted file mode 100644 index 324dba3b6..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/tr.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/uk.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/uk.lproj/SUUpdateAlert.strings deleted file mode 100644 index ece667079..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/uk.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "Оновлення програмного забезпечення"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "Примітки про нову версію:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "Нагадати пізніше"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "Пропустити цю версію"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "Встановити оновлення"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "Автоматично завантажувати та встановлювати оновлення у майбутньому"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/uk.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/uk.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 36d56b030..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/uk.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "Використання анонімного профілю системи допомагає нам у планування майбутньої розробки. Якщо у вас виникли питання щодо цього, звертайтесь до нас.\n\nІнформація, що буде надіслано:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "Не перервіряти"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "Виконувати автоматичну перевірку оновлень?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "Автоматично надсилати профіль системи"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "Перевіряти автоматично"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/uk.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/uk.lproj/Sparkle.strings deleted file mode 100644 index 42370e97a..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/uk.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/SUUpdateAlert.strings deleted file mode 100644 index 5772fc63f..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "软件更新"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "更新信息:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "稍后提示我"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "跳过这个版本"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "安装更新"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "以后自动下载并安装更新"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 51cd7fe93..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "无记名系统概况信息被用于帮助我们安排将来的开发工作。如果对此存在疑问请联系我们。\n\n这是将要被发送的信息::"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "不核查"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "自动核查更新?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "包括无记名系统概况"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "自动核查"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/Sparkle.strings deleted file mode 100644 index 9942f1c49..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_HK.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_HK.lproj/SUUpdateAlert.strings deleted file mode 100644 index d7cb6fe14..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_HK.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "軟體更新"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "更新事項:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "稍後提醒我"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "跳過此版本"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "安裝更新"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "以後自動下載並安裝更新"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_HK.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_HK.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 3bb57368c..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_HK.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "匿名系統概況資訊可用來協助我等計畫未來開發工作。若對此有任何疑問,請聯繫我等。\n\n以下係會傳送嘅資訊:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "毋檢查"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "自動檢查更新?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "包含匿名系統概況"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "自動檢查"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_HK.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_HK.lproj/Sparkle.strings deleted file mode 100644 index 12182cbc3..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_HK.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/SUUpdateAlert.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/SUUpdateAlert.strings deleted file mode 100644 index d53374dd2..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/SUUpdateAlert.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */ -"5.title" = "軟體更新"; - -/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */ -"170.title" = "更新事項:"; - -/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */ -"171.title" = "暫緩提醒"; - -/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */ -"172.title" = "跳過此版本"; - -/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */ -"173.title" = "安裝更新項目"; - -/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */ -"175.title" = "自動下載並安裝未來的更新項目"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.strings deleted file mode 100644 index 617333278..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.strings +++ /dev/null @@ -1,20 +0,0 @@ -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */ -"43.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */ -"45.title" = "Text Cell"; - -/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */ -"183.title" = "匿名系統描述資訊可用來協助我們計畫未來的開發工作。若您有任何相關問題,請與我們聯繫。\n\n以下是會傳送的資訊:"; - -/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "cCJ-V0-aTi"; */ -"cCJ-V0-aTi.title" = "不要檢查"; - -/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "gmh-T4-BO0"; */ -"gmh-T4-BO0.title" = "自動檢查更新項目?"; - -/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "gz7-LM-gNf"; */ -"gz7-LM-gNf.title" = "包含匿名的系統描述資料"; - -/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "OhZ-1K-DmA"; */ -"OhZ-1K-DmA.title" = "自動檢查"; diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/Sparkle.strings deleted file mode 100644 index e53d6d10b..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Sparkle b/Pods/Sparkle/Sparkle.framework/Versions/B/Sparkle deleted file mode 100755 index 110f3990a..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Sparkle and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Info.plist b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Info.plist deleted file mode 100644 index 046a402a2..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Info.plist +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>BuildMachineOSBuild</key> - <string>21G419</string> - <key>CFBundleDevelopmentRegion</key> - <string>en</string> - <key>CFBundleExecutable</key> - <string>Updater</string> - <key>CFBundleIdentifier</key> - <string>org.sparkle-project.Sparkle.Updater</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>Updater</string> - <key>CFBundlePackageType</key> - <string>APPL</string> - <key>CFBundleShortVersionString</key> - <string>2.3.2</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleSupportedPlatforms</key> - <array> - <string>MacOSX</string> - </array> - <key>CFBundleVersion</key> - <string>2021.2</string> - <key>DTCompiler</key> - <string>com.apple.compilers.llvm.clang.1_0</string> - <key>DTPlatformBuild</key> - <string>13F100</string> - <key>DTPlatformName</key> - <string>macosx</string> - <key>DTPlatformVersion</key> - <string>12.3</string> - <key>DTSDKBuild</key> - <string>21E226</string> - <key>DTSDKName</key> - <string>macosx12.3</string> - <key>DTXcode</key> - <string>1341</string> - <key>DTXcodeBuild</key> - <string>13F100</string> - <key>LSApplicationCategoryType</key> - <string>public.app-category.utilities</string> - <key>LSMinimumSystemVersion</key> - <string>10.13</string> - <key>LSUIElement</key> - <string>1</string> - <key>NSPrincipalClass</key> - <string>NSApplication</string> -</dict> -</plist> diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/MacOS/Updater b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/MacOS/Updater deleted file mode 100755 index 5098826d0..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/MacOS/Updater and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/PkgInfo b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/PkgInfo deleted file mode 100644 index bd04210fb..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -APPL???? \ No newline at end of file diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/Base.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/Base.lproj/Sparkle.strings deleted file mode 100644 index 3901514fd..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/Base.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/SUStatus.nib b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/SUStatus.nib deleted file mode 100644 index 6d471ce4b..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/SUStatus.nib and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ar.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ar.lproj/Sparkle.strings deleted file mode 100644 index 7ba248ad3..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ar.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ca.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ca.lproj/Sparkle.strings deleted file mode 100644 index d6bae329a..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ca.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/cs.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/cs.lproj/Sparkle.strings deleted file mode 100644 index ba5cf81ac..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/cs.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/da.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/da.lproj/Sparkle.strings deleted file mode 100644 index 2c717b2ff..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/da.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/de.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/de.lproj/Sparkle.strings deleted file mode 100644 index 04b27fd35..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/de.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/el.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/el.lproj/Sparkle.strings deleted file mode 100644 index f1c015eb0..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/el.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/es.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/es.lproj/Sparkle.strings deleted file mode 100644 index 679caf37b..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/es.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fa.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fa.lproj/Sparkle.strings deleted file mode 100644 index 0323587c4..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fa.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fi.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fi.lproj/Sparkle.strings deleted file mode 100644 index 36ce08d68..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fi.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fr.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fr.lproj/Sparkle.strings deleted file mode 100644 index 042724d36..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/fr.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/he.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/he.lproj/Sparkle.strings deleted file mode 100644 index bef347527..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/he.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/hr.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/hr.lproj/Sparkle.strings deleted file mode 100644 index b9d3a646e..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/hr.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/hu.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/hu.lproj/Sparkle.strings deleted file mode 100644 index 6b397d42e..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/hu.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/is.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/is.lproj/Sparkle.strings deleted file mode 100644 index 070979c61..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/is.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/it.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/it.lproj/Sparkle.strings deleted file mode 100644 index cc0e4ef95..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/it.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ja.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ja.lproj/Sparkle.strings deleted file mode 100644 index 3a06f4656..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ja.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ko.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ko.lproj/Sparkle.strings deleted file mode 100644 index 7cd74623f..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ko.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/nb.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/nb.lproj/Sparkle.strings deleted file mode 100644 index c36e8d931..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/nb.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/nl.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/nl.lproj/Sparkle.strings deleted file mode 100644 index 5ab394bef..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/nl.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pl.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pl.lproj/Sparkle.strings deleted file mode 100644 index 38d03dee8..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pl.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pt-BR.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pt-BR.lproj/Sparkle.strings deleted file mode 100644 index fae04566d..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pt-BR.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pt-PT.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pt-PT.lproj/Sparkle.strings deleted file mode 100644 index e7ed98d06..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/pt-PT.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ro.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ro.lproj/Sparkle.strings deleted file mode 100644 index 1ee78cb3b..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ro.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ru.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ru.lproj/Sparkle.strings deleted file mode 100644 index 777f637a0..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/ru.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sk.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sk.lproj/Sparkle.strings deleted file mode 100644 index 157f6b96a..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sk.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sl.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sl.lproj/Sparkle.strings deleted file mode 100644 index ee72d7878..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sl.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sv.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sv.lproj/Sparkle.strings deleted file mode 100644 index c17d53815..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/sv.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/th.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/th.lproj/Sparkle.strings deleted file mode 100644 index 1491bf012..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/th.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/tr.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/tr.lproj/Sparkle.strings deleted file mode 100644 index 324dba3b6..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/tr.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/uk.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/uk.lproj/Sparkle.strings deleted file mode 100644 index 42370e97a..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/uk.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_CN.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_CN.lproj/Sparkle.strings deleted file mode 100644 index 9942f1c49..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_CN.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_HK.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_HK.lproj/Sparkle.strings deleted file mode 100644 index 12182cbc3..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_HK.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_TW.lproj/Sparkle.strings b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_TW.lproj/Sparkle.strings deleted file mode 100644 index e53d6d10b..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/zh_TW.lproj/Sparkle.strings and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/_CodeSignature/CodeResources b/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/_CodeSignature/CodeResources deleted file mode 100644 index 815a7b9f9..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/Updater.app/Contents/_CodeSignature/CodeResources +++ /dev/null @@ -1,733 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>files</key> - <dict> - <key>Resources/Base.lproj/Sparkle.strings</key> - <data> - XSU5ujIHVj0VrcaL7/1PMjP8QWE= - </data> - <key>Resources/SUStatus.nib</key> - <data> - MMoEZd95HH2wagHtE7tdRXWDz2Y= - </data> - <key>Resources/ar.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - 5Ukin0TnIF0ot6Daz8OSgIoDZJ0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ca.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - SM9Ssbq+EA6SD88oCZx9K6nLvic= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/cs.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - XEmDbfZO4yJVTMmOj/YwU4d2X+Q= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/da.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - CkbYzkpwfT37juYfJP25giiTUo4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/de.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - /1A+Sg5wG2SW+Q5Q7rGwtU2aVk0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/el.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - Hh2GQMfVkK/dapsekwiVZz9cakg= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/es.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - fucEKrOlh81Wj9EqCtUl6sQVg1k= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fa.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - vI1JRqMnuuewEX52rjBZ/TDrrXk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fi.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - F/sJkTYIQLPsbOAPJUJMRPa9EeA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fr.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - fPB1Vk+1a7xRIMKxQ3/F1bxGirA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/he.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - bG2Mhx67XieRw+jRYm1/n2PIGnI= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hr.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - S2g3qlSPK1msOuuvB2dU9UoInq4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hu.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - 5CCN2xKgiom6y3+mcWd48RVdX48= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/is.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - RO7D/40UgCd+DPSZg5LlrOBdmfY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/it.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - W/h9EbnuDfXU4nxRzIF7Dv8ckks= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ja.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - RYRC4Vmp6utNAtLodS/PTyi4yIM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ko.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - lmXDaCFjaOlD2OSN7WeCYPUkiAc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nb.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - n42iYGYF5rusi8bu9cZKBXVwwXE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nl.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - t++79qkzwHo15l2gbAGPNIoYsJc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pl.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - Z2RTzAW/+3ZV5g9/DyNv+YFZNQE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-BR.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - HLX0cX6CzMOMpZ7eff4JZYu+KQY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-PT.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - cyq/clJHyLGamebBp/NK6YzPUNM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ro.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - kYCbmI7ssPYVnQQ3uDHF6PgOBjw= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ru.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - 3yWhlgxQS7Hhh481yH9qttWea0U= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sk.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - 5I5OyTLppz6aT5r3kKOmRcrDfXg= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sl.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - 5fscQshoMtSnO4kj3Ts2Nw4xqkc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sv.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - AlR6NnM+kipd4A8PFhs0S0Rccbk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/th.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - UrzLYtjSwKdvxlSQJa/xe5IqqVo= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/tr.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - fKCgCsGuwlJJnukTgKv+0tfNjSg= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/uk.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - kATRxVYhY1dX+dY1bQ+V+TvmXNk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_CN.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - PFAuCvFxcO/y7l7c9FyaMKNhLfQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_HK.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - 6ZtNY99NpdEMxheFf8juphTe30g= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_TW.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - G/kIaADnb5wlgQMaCX6Gfa48OY8= - </data> - <key>optional</key> - <true/> - </dict> - </dict> - <key>files2</key> - <dict> - <key>Resources/Base.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 7DQi4XIdmNDFEuet0a26l/2qsTHrLKlDT4/zp6XA97w= - </data> - </dict> - <key>Resources/SUStatus.nib</key> - <dict> - <key>hash2</key> - <data> - xaemKA5RnHBgTuwB81z6r5d+f2CaMcz74K9Tv+bY4BM= - </data> - </dict> - <key>Resources/ar.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - yx9tkKjj3aOHvgdYCWXM89uhlyVeNb4oqcAenJxibwI= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ca.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - DQhUnYhSgufw5NRY162lt2GGM83U38tQvNF1qotGYzE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/cs.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 9e+PJbv/VS2Crb9Ba6ZeADG2ll4RbsGse7NbwIm0IG4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/da.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - qgYKiHiodd+q/4U1lIEIUSS9PX9ENx0isGUKLSWmKe4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/de.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - uxoRq90TmDirUKRbCW1lKy/k1tZvFz4EbxQPhVf+Mhs= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/el.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - GvP3asj8JbFMZdNtcFo0MWdmrCB+z6k66kmleaGlmow= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/es.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - RYqWb4D0ylosWigPpdVjMlaCWiXNrRIvzIwwVbXpaSs= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fa.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - hiHofXML8/Ej+t2dTRuvVL3vkS/6jW6b/wvx/3quM10= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fi.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - vIUJXdYI8BMB0xLJANIQk+DDKy2sno6StdPpJSCV++A= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fr.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 47e3tLN5HipnOK5BV6nhmhttV0iZRHEYtGRTh56Pp6M= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/he.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - RYs+L0NAew70ya8KrCKYYJPkdzTVckZY7TLwVay0ubQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hr.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - xyEyZ8ezqdbPQQ/b6RSpnULrjnL08GWQ3wd+AasW2KQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hu.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 0UBqgjXjtRG51lEacNaLTmNvj5aFUeJ7oo1J4WYkrCw= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/is.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - n1w40GWVeQM6/1d+krnNoL0XutbF3HNv2qjFaMErsuY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/it.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - TgEXGRRCYffwGHAa78wO2btMh/B5TluqOiVpvsy7yYY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ja.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 6b23nyneGkjP1x+wd00PTqF9PPujhu9g0TS4+3cBywo= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ko.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - PIYd2jHiJYoXmHfGbXu4sWialdDeBEyHWgMzu8Yd2H8= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nb.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - oVMa0iTjxWVrd4HFHRrUvKxqnk+YFHk2CxOu43+wO2Q= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nl.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 2tCuekmOs0JtuIM7hm/+jt5s4OJGocWANizpTH8a58k= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pl.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - /qcXx+RijYb31wahT1y3K+QX0NCxCnGFDX9dWzAc56o= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-BR.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - cExBbBN/cbmRWOsrqKbEBHJOo7FtTr3ZavW9slfCsVc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-PT.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - WGgYHgAMqsDwSkDIWMFg5XBJnvRCbvM59I1pqJgmhgM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ro.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - o6GEyuuMFsBOFOONmS2V2x+bv11kkMT3xHEoelaxJv8= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ru.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - uqN6dwLmCFJJQmbURrhDJv9wDJSGWqRqyqgeKTNUHZ0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sk.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - iZvCvn22+4feRZso6kzggSUbr1p4Z5zyDU7qniyWqE8= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sl.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - eq+yTsmwGRXUHYRVC4w06YmUPnsYuuc4OjUfo7feieE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sv.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - ZoKH8cwKHH2VaZEkGsmRKevFaLdLxlAICRnrceNdsuw= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/th.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - HT9jsdOsSvc+Orcce27NpaRxKmDCzIwkq+/wUGI3JQM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/tr.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 756/lMgBfXOE5IDG5Ei94/iIP40obn9ZEROHo01+SRY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/uk.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 90+2Bfu2sI863NKWVBCjCtNi5gbrwPr82sRRfR6DOGM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_CN.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 50IP7eJ9NgEFLDIKBJXnmRRzcGT7MmW08hHJr4alKLQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_HK.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - QbOSmL6buAJoDKkEaulr+Wl8BQVUBUiMuUPQ209YhGE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_TW.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - Ugk6n5077n97AZzPovvogEt/4FCL8ByB9WvIx7QOsqI= - </data> - <key>optional</key> - <true/> - </dict> - </dict> - <key>rules</key> - <dict> - <key>^Resources/</key> - <true/> - <key>^Resources/.*\.lproj/</key> - <dict> - <key>optional</key> - <true/> - <key>weight</key> - <real>1000</real> - </dict> - <key>^Resources/.*\.lproj/locversion.plist$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>1100</real> - </dict> - <key>^Resources/Base\.lproj/</key> - <dict> - <key>weight</key> - <real>1010</real> - </dict> - <key>^version.plist$</key> - <true/> - </dict> - <key>rules2</key> - <dict> - <key>.*\.dSYM($|/)</key> - <dict> - <key>weight</key> - <real>11</real> - </dict> - <key>^(.*/)?\.DS_Store$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>2000</real> - </dict> - <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> - <dict> - <key>nested</key> - <true/> - <key>weight</key> - <real>10</real> - </dict> - <key>^.*</key> - <true/> - <key>^Info\.plist$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>20</real> - </dict> - <key>^PkgInfo$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>20</real> - </dict> - <key>^Resources/</key> - <dict> - <key>weight</key> - <real>20</real> - </dict> - <key>^Resources/.*\.lproj/</key> - <dict> - <key>optional</key> - <true/> - <key>weight</key> - <real>1000</real> - </dict> - <key>^Resources/.*\.lproj/locversion.plist$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>1100</real> - </dict> - <key>^Resources/Base\.lproj/</key> - <dict> - <key>weight</key> - <real>1010</real> - </dict> - <key>^[^/]+$</key> - <dict> - <key>nested</key> - <true/> - <key>weight</key> - <real>10</real> - </dict> - <key>^embedded\.provisionprofile$</key> - <dict> - <key>weight</key> - <real>20</real> - </dict> - <key>^version\.plist$</key> - <dict> - <key>weight</key> - <real>20</real> - </dict> - </dict> -</dict> -</plist> diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/Info.plist b/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/Info.plist deleted file mode 100644 index 090d3335d..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/Info.plist +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>BuildMachineOSBuild</key> - <string>21G419</string> - <key>CFBundleDevelopmentRegion</key> - <string>en</string> - <key>CFBundleExecutable</key> - <string>Downloader</string> - <key>CFBundleIdentifier</key> - <string>org.sparkle-project.Downloader</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>Downloader</string> - <key>CFBundlePackageType</key> - <string>XPC!</string> - <key>CFBundleShortVersionString</key> - <string>2.3.2</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleSupportedPlatforms</key> - <array> - <string>MacOSX</string> - </array> - <key>CFBundleVersion</key> - <string>2021.2</string> - <key>DTCompiler</key> - <string>com.apple.compilers.llvm.clang.1_0</string> - <key>DTPlatformBuild</key> - <string>13F100</string> - <key>DTPlatformName</key> - <string>macosx</string> - <key>DTPlatformVersion</key> - <string>12.3</string> - <key>DTSDKBuild</key> - <string>21E226</string> - <key>DTSDKName</key> - <string>macosx12.3</string> - <key>DTXcode</key> - <string>1341</string> - <key>DTXcodeBuild</key> - <string>13F100</string> - <key>LSMinimumSystemVersion</key> - <string>10.13</string> - <key>NSAppTransportSecurity</key> - <dict> - <key>NSAllowsArbitraryLoads</key> - <false/> - </dict> - <key>NSHumanReadableCopyright</key> - <string>Copyright © 2016 Sparkle Project. All rights reserved.</string> - <key>XPCService</key> - <dict> - <key>RunLoopType</key> - <string>NSRunLoop</string> - <key>ServiceType</key> - <string>Application</string> - </dict> -</dict> -</plist> diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/MacOS/Downloader b/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/MacOS/Downloader deleted file mode 100755 index d2d70a8e5..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/MacOS/Downloader and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/_CodeSignature/CodeResources b/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/_CodeSignature/CodeResources deleted file mode 100644 index d5d0fd744..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/_CodeSignature/CodeResources +++ /dev/null @@ -1,115 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>files</key> - <dict/> - <key>files2</key> - <dict/> - <key>rules</key> - <dict> - <key>^Resources/</key> - <true/> - <key>^Resources/.*\.lproj/</key> - <dict> - <key>optional</key> - <true/> - <key>weight</key> - <real>1000</real> - </dict> - <key>^Resources/.*\.lproj/locversion.plist$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>1100</real> - </dict> - <key>^Resources/Base\.lproj/</key> - <dict> - <key>weight</key> - <real>1010</real> - </dict> - <key>^version.plist$</key> - <true/> - </dict> - <key>rules2</key> - <dict> - <key>.*\.dSYM($|/)</key> - <dict> - <key>weight</key> - <real>11</real> - </dict> - <key>^(.*/)?\.DS_Store$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>2000</real> - </dict> - <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> - <dict> - <key>nested</key> - <true/> - <key>weight</key> - <real>10</real> - </dict> - <key>^.*</key> - <true/> - <key>^Info\.plist$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>20</real> - </dict> - <key>^PkgInfo$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>20</real> - </dict> - <key>^Resources/</key> - <dict> - <key>weight</key> - <real>20</real> - </dict> - <key>^Resources/.*\.lproj/</key> - <dict> - <key>optional</key> - <true/> - <key>weight</key> - <real>1000</real> - </dict> - <key>^Resources/.*\.lproj/locversion.plist$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>1100</real> - </dict> - <key>^Resources/Base\.lproj/</key> - <dict> - <key>weight</key> - <real>1010</real> - </dict> - <key>^[^/]+$</key> - <dict> - <key>nested</key> - <true/> - <key>weight</key> - <real>10</real> - </dict> - <key>^embedded\.provisionprofile$</key> - <dict> - <key>weight</key> - <real>20</real> - </dict> - <key>^version\.plist$</key> - <dict> - <key>weight</key> - <real>20</real> - </dict> - </dict> -</dict> -</plist> diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/Info.plist b/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/Info.plist deleted file mode 100644 index c3616fbed..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/Info.plist +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>BuildMachineOSBuild</key> - <string>21G419</string> - <key>CFBundleDevelopmentRegion</key> - <string>en</string> - <key>CFBundleExecutable</key> - <string>Installer</string> - <key>CFBundleIdentifier</key> - <string>org.sparkle-project.InstallerLauncher</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>Installer</string> - <key>CFBundlePackageType</key> - <string>XPC!</string> - <key>CFBundleShortVersionString</key> - <string>2.3.2</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleSupportedPlatforms</key> - <array> - <string>MacOSX</string> - </array> - <key>CFBundleVersion</key> - <string>2021.2</string> - <key>DTCompiler</key> - <string>com.apple.compilers.llvm.clang.1_0</string> - <key>DTPlatformBuild</key> - <string>13F100</string> - <key>DTPlatformName</key> - <string>macosx</string> - <key>DTPlatformVersion</key> - <string>12.3</string> - <key>DTSDKBuild</key> - <string>21E226</string> - <key>DTSDKName</key> - <string>macosx12.3</string> - <key>DTXcode</key> - <string>1341</string> - <key>DTXcodeBuild</key> - <string>13F100</string> - <key>LSMinimumSystemVersion</key> - <string>10.13</string> - <key>NSHumanReadableCopyright</key> - <string>Copyright © 2016 Sparkle Project. All rights reserved.</string> - <key>XPCService</key> - <dict> - <key>JoinExistingSession</key> - <true/> - <key>ServiceType</key> - <string>Application</string> - </dict> -</dict> -</plist> diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/MacOS/Installer b/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/MacOS/Installer deleted file mode 100755 index c08b15fea..000000000 Binary files a/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/MacOS/Installer and /dev/null differ diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/_CodeSignature/CodeResources b/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/_CodeSignature/CodeResources deleted file mode 100644 index d5d0fd744..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/_CodeSignature/CodeResources +++ /dev/null @@ -1,115 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>files</key> - <dict/> - <key>files2</key> - <dict/> - <key>rules</key> - <dict> - <key>^Resources/</key> - <true/> - <key>^Resources/.*\.lproj/</key> - <dict> - <key>optional</key> - <true/> - <key>weight</key> - <real>1000</real> - </dict> - <key>^Resources/.*\.lproj/locversion.plist$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>1100</real> - </dict> - <key>^Resources/Base\.lproj/</key> - <dict> - <key>weight</key> - <real>1010</real> - </dict> - <key>^version.plist$</key> - <true/> - </dict> - <key>rules2</key> - <dict> - <key>.*\.dSYM($|/)</key> - <dict> - <key>weight</key> - <real>11</real> - </dict> - <key>^(.*/)?\.DS_Store$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>2000</real> - </dict> - <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> - <dict> - <key>nested</key> - <true/> - <key>weight</key> - <real>10</real> - </dict> - <key>^.*</key> - <true/> - <key>^Info\.plist$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>20</real> - </dict> - <key>^PkgInfo$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>20</real> - </dict> - <key>^Resources/</key> - <dict> - <key>weight</key> - <real>20</real> - </dict> - <key>^Resources/.*\.lproj/</key> - <dict> - <key>optional</key> - <true/> - <key>weight</key> - <real>1000</real> - </dict> - <key>^Resources/.*\.lproj/locversion.plist$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>1100</real> - </dict> - <key>^Resources/Base\.lproj/</key> - <dict> - <key>weight</key> - <real>1010</real> - </dict> - <key>^[^/]+$</key> - <dict> - <key>nested</key> - <true/> - <key>weight</key> - <real>10</real> - </dict> - <key>^embedded\.provisionprofile$</key> - <dict> - <key>weight</key> - <real>20</real> - </dict> - <key>^version\.plist$</key> - <dict> - <key>weight</key> - <real>20</real> - </dict> - </dict> -</dict> -</plist> diff --git a/Pods/Sparkle/Sparkle.framework/Versions/B/_CodeSignature/CodeResources b/Pods/Sparkle/Sparkle.framework/Versions/B/_CodeSignature/CodeResources deleted file mode 100644 index 8dfe05f5c..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/B/_CodeSignature/CodeResources +++ /dev/null @@ -1,2186 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>files</key> - <dict> - <key>Resources/Base.lproj/SUUpdateAlert.nib</key> - <data> - lTs68EHEuBNChZ0HaUfc6a2qJus= - </data> - <key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib</key> - <data> - Hg4x1MlG+51krfJpHP4M1ui8rx8= - </data> - <key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib</key> - <data> - qzd7qulEiRxrTNnyNyYcWbHxq+4= - </data> - <key>Resources/Base.lproj/Sparkle.strings</key> - <data> - XSU5ujIHVj0VrcaL7/1PMjP8QWE= - </data> - <key>Resources/Info.plist</key> - <data> - GCLSyNAD5HTtd69CEGbgUV8B0Ho= - </data> - <key>Resources/ReleaseNotesColorStyle.css</key> - <data> - NjIvb1z7eJuLCKf9HS15O5heg50= - </data> - <key>Resources/SUStatus.nib</key> - <data> - MMoEZd95HH2wagHtE7tdRXWDz2Y= - </data> - <key>Resources/ar.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - qTOMJ1P/HhCcJQi4qSJV9l/b7q0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ar.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - chEDY/Vh2Vh+3oo4r0XF7krQ7c4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ar.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - 5Ukin0TnIF0ot6Daz8OSgIoDZJ0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ca.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - l9CaCmAXFcs+Z+8rRt7PX9onkf8= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ca.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - SM9Ssbq+EA6SD88oCZx9K6nLvic= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/cs.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - G9Wgf14zMhU2alRSZvqclMmlTCA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/cs.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - Wh57u912k8KoumveRiDRmINy170= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/cs.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - XEmDbfZO4yJVTMmOj/YwU4d2X+Q= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/da.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - NEt5JVKz+OoMSynKxJC18KXMGaA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/da.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - 0FkWF1ciwhmhK0CunKhpfDGMZnk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/da.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - CkbYzkpwfT37juYfJP25giiTUo4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/de.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - YLQxXHDo3e3Udzaj8LHDIjotWzE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/de.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - YfY6kTIXAj9sipxrJBGc7eKEOHY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/de.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - /1A+Sg5wG2SW+Q5Q7rGwtU2aVk0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/el.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - BS+NpAFPK7X/XzX+n99gJLhlNKU= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/el.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - H7jL3j77eZ1egMEj+Nj6LXnSHHc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/el.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - Hh2GQMfVkK/dapsekwiVZz9cakg= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/en.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - FSez7jCd0gDTFFGHiWL1QXY8OUU= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/en.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - NzxxRDATRj41eOLu03OYPRaKa1k= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/es.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - Q36SuanjGk70efU6liei3uz+Uds= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/es.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - 3UK3h3oTqvHtCsr1LJvTMphItJU= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/es.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - fucEKrOlh81Wj9EqCtUl6sQVg1k= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fa.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - vI1JRqMnuuewEX52rjBZ/TDrrXk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fi.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - My5YiAuNV+4oR1vPL1np+nMMMOI= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fi.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - BN3BQoZf2M6kKG5fdupefeR1LQM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fi.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - F/sJkTYIQLPsbOAPJUJMRPa9EeA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fr.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - ffz6ccHMgxcBdH6by1YAYX1jpOQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fr.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - 1OWrzot/72Uej/eeBpnZknMeyYs= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fr.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - fPB1Vk+1a7xRIMKxQ3/F1bxGirA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/he.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - nZXhvxaoacIflCBRrHxQ4NDkeKg= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/he.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - bG2Mhx67XieRw+jRYm1/n2PIGnI= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hr.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - b/ru54Y0QwvH9Kz9sfRPEoP5z5k= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hr.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - AAiVUXPoJYgeG5yLdH5XaFKLXcc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hr.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - S2g3qlSPK1msOuuvB2dU9UoInq4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hu.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - VD/QPXFfEHRW7ksDLYiiO1xl1LQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hu.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - PMarJZpNhDysjzZuBuyKv8KBTXQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hu.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - 5CCN2xKgiom6y3+mcWd48RVdX48= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/is.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - bQiB5tUCaD24QKubEYeBTXsAF1g= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/is.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - 8LPYds94rtFaRsGn0VDNXjxk6T0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/is.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - RO7D/40UgCd+DPSZg5LlrOBdmfY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/it.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - Yev0Ro2PsLfgCLoY7JNED63PnqM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/it.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - pVInM2cpSCq7zmpffx7ytVY6shU= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/it.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - W/h9EbnuDfXU4nxRzIF7Dv8ckks= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ja.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - vl6gP7QCeuFYsNYdgVYYUcm0S/4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ja.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - vmA8scrUnfvMygrsa76QF557nDU= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ja.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - RYRC4Vmp6utNAtLodS/PTyi4yIM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ko.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - xZjyKASZdwg70f4m29uGtJjFUgQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ko.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - d+ifBccX26E56rM7eOY72BKC5aY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ko.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - lmXDaCFjaOlD2OSN7WeCYPUkiAc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nb.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - fck+vL9Sgcx19X7HthrjizRGhu8= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nb.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - xds/kfSxmdLFOMffSREoZC9yQFM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nb.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - n42iYGYF5rusi8bu9cZKBXVwwXE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nl.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - 5ZpTsHPgV4inhhYiISGjC03BMG4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nl.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - 1OahTTjmwc6xGVrnfJ4jQAlczNg= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nl.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - t++79qkzwHo15l2gbAGPNIoYsJc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pl.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - HX2RXVrN+fpwO4I60/UDyNuGj5Y= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pl.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - UwRkyzAvs+mt3UXwTadtNXNrClE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pl.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - Z2RTzAW/+3ZV5g9/DyNv+YFZNQE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-BR.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - YFXY6v+45ptf8TuBq2MsKKdhfQ8= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-BR.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - V0pfsICkDi0t8PHF4+dGW9p9c8s= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-BR.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - HLX0cX6CzMOMpZ7eff4JZYu+KQY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-PT.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - pWRHcAJRvjUt7BOLr/gd+IupcGA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-PT.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - Bn6gYNr9F1tKpTd3trapLKKg1bw= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-PT.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - cyq/clJHyLGamebBp/NK6YzPUNM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ro.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - a/RNqEdkehva+SwGWz11MktFGWA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ro.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - Ssaz0Z2Bvovi+gexkx+C1o46MQM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ro.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - kYCbmI7ssPYVnQQ3uDHF6PgOBjw= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ru.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - Lmn0e5MDPfan55gnani1dQbR10Q= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ru.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - p3zkSrOy/L6GcSH9jCj2Y/uDmLE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ru.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - 3yWhlgxQS7Hhh481yH9qttWea0U= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sk.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - 8o3l6mjHafwy5sLMMO2rZIe7xiQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sk.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - s3Cllq+eYT+urMLfXvnwsMkboWQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sk.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - 5I5OyTLppz6aT5r3kKOmRcrDfXg= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sl.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - Ny5EoZGpd5UK5c3eMIUKLR8x4/I= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sl.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - jUZer0aLckRt7dLPlNB5I7dAV+s= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sl.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - 5fscQshoMtSnO4kj3Ts2Nw4xqkc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sv.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - YWicg3ZZLCEoiJ9WOUUZ6WoTZJY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sv.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - K5RsmL5IV2dSBTaN6i/cLYRGJ3U= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sv.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - AlR6NnM+kipd4A8PFhs0S0Rccbk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/th.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - Cd6guArNrSoJO3e2ntd1Eys3bok= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/th.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - oy0B8M6u8AjjwSepIoL324YKsWk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/th.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - UrzLYtjSwKdvxlSQJa/xe5IqqVo= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/tr.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - wl9JoCOsqKgCSgMpFzhwObUUdh8= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/tr.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - pt6ThapYF8lNn28yLG7xW11onFg= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/tr.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - fKCgCsGuwlJJnukTgKv+0tfNjSg= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/uk.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - 6/WdcAg1mJs1/HT5krHhOxqyMWk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/uk.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - HnKx/WpiOkat6j6EgFC4CCjcaVA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/uk.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - kATRxVYhY1dX+dY1bQ+V+TvmXNk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_CN.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - DjCjxSor6wnKAz8bFLcPCnW1Kw0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_CN.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - DMhyvu1ywGudTYBfSXV5xoAHYhA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_CN.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - PFAuCvFxcO/y7l7c9FyaMKNhLfQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_HK.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - +9prrb68fl57+m9WFQ+8Ay6XjRk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_HK.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - k8qUO6pG/KXl+UTx/yXlKPmsBFA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_HK.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - 6ZtNY99NpdEMxheFf8juphTe30g= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_TW.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash</key> - <data> - 167IbTfOhYu699bxXBhaGehjrco= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_TW.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash</key> - <data> - YI4W+mUo+t840O84rzq2Ffdzm5o= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_TW.lproj/Sparkle.strings</key> - <dict> - <key>hash</key> - <data> - G/kIaADnb5wlgQMaCX6Gfa48OY8= - </data> - <key>optional</key> - <true/> - </dict> - </dict> - <key>files2</key> - <dict> - <key>Autoupdate</key> - <dict> - <key>cdhash</key> - <data> - NrkKWtDVlaO6YVUWO14TXQYuqjk= - </data> - <key>requirement</key> - <string>cdhash H"36b90a5ad0d595a3ba6155163b5e135d062eaa39" or cdhash H"d5c3dc953ef553bd552b9896d326fcaa6e40c04b"</string> - </dict> - <key>Headers/SPUDownloadData.h</key> - <dict> - <key>hash2</key> - <data> - gsNEzLxb/w73quG4B8FDTObuCtckYFt7DKEIamBp2zU= - </data> - </dict> - <key>Headers/SPUStandardUpdaterController.h</key> - <dict> - <key>hash2</key> - <data> - GGqsgqKsWmdDkOTzCogsg35Z/rf6xGzHGoBrr4FFEm8= - </data> - </dict> - <key>Headers/SPUStandardUserDriver.h</key> - <dict> - <key>hash2</key> - <data> - nJAdi7PFjYFLmL6Nel5VtcsOGW0/wqrRCZ5RHMkNLkc= - </data> - </dict> - <key>Headers/SPUStandardUserDriverDelegate.h</key> - <dict> - <key>hash2</key> - <data> - 9Bb87nKXSbf1IEA/JvQz0bXeQm1DARXbTZeQzxUnST4= - </data> - </dict> - <key>Headers/SPUUpdateCheck.h</key> - <dict> - <key>hash2</key> - <data> - H30F2i5GYmOu/j4JEw5WsuZbiGJXnge5gpyb9e2SHAM= - </data> - </dict> - <key>Headers/SPUUpdatePermissionRequest.h</key> - <dict> - <key>hash2</key> - <data> - gc+ohsCgvzpHoQdUTcdiCT6weg66V3X//QkCUHTgUss= - </data> - </dict> - <key>Headers/SPUUpdater.h</key> - <dict> - <key>hash2</key> - <data> - 3KTijnCBw7D9doymRvwS2fxFP3KVVbvTQQOQarE8YbI= - </data> - </dict> - <key>Headers/SPUUpdaterDelegate.h</key> - <dict> - <key>hash2</key> - <data> - YSM2f1EtcHlJEo+gIatOa+N4Q5kJltHMFBvUeQfF95Q= - </data> - </dict> - <key>Headers/SPUUpdaterSettings.h</key> - <dict> - <key>hash2</key> - <data> - mxcAPbTuvCvtyq/+gQWGQgJGD8V0ByC4gCekPPa/Gjs= - </data> - </dict> - <key>Headers/SPUUserDriver.h</key> - <dict> - <key>hash2</key> - <data> - CsyeYijfrBcC4CgzS/DkmkanCboVqwq5zRHSgNRoEes= - </data> - </dict> - <key>Headers/SPUUserUpdateState.h</key> - <dict> - <key>hash2</key> - <data> - UvjyIpnBxaZdOPRKweTXGASm9uvNDyy78TgxmUplxys= - </data> - </dict> - <key>Headers/SUAppcast.h</key> - <dict> - <key>hash2</key> - <data> - e4/9nLfLxgixHXPPusCnelTLkGePoeUhmHu0Fu8fUbg= - </data> - </dict> - <key>Headers/SUAppcastItem.h</key> - <dict> - <key>hash2</key> - <data> - 2fyiwr4izcLQX6wA0wQQWHK4ncY3HuEBnCWfkxq3gQk= - </data> - </dict> - <key>Headers/SUErrors.h</key> - <dict> - <key>hash2</key> - <data> - fSRNpTjFOOtljWaiRSnjDxN54JS1BkiGpQneIip6sA8= - </data> - </dict> - <key>Headers/SUExport.h</key> - <dict> - <key>hash2</key> - <data> - XO8CQmbFThLbYg949NEGhg3g+iouIw3/3+BCCLtEdFE= - </data> - </dict> - <key>Headers/SUStandardVersionComparator.h</key> - <dict> - <key>hash2</key> - <data> - walPrXy07HqVX3JWuGPS02olWF59BjueVW1UoLwCv/g= - </data> - </dict> - <key>Headers/SUUpdatePermissionResponse.h</key> - <dict> - <key>hash2</key> - <data> - rXiDhQpt6r+9NOERnvdPFEr4rcUx9cMlnPLUamM1HLM= - </data> - </dict> - <key>Headers/SUUpdater.h</key> - <dict> - <key>hash2</key> - <data> - QenIKuHPtOmx2KG6r78Qr/2ULbw+HX/5JohFy5pdE/k= - </data> - </dict> - <key>Headers/SUUpdaterDelegate.h</key> - <dict> - <key>hash2</key> - <data> - hQVZhCFOVREGIafIiuf8GM49Ib4hEGaOsczKMhtggXI= - </data> - </dict> - <key>Headers/SUVersionComparisonProtocol.h</key> - <dict> - <key>hash2</key> - <data> - +ZNs7VCVpeYztnmVTNwQOWNDu6q8tv9CCNwqfhHiocI= - </data> - </dict> - <key>Headers/SUVersionDisplayProtocol.h</key> - <dict> - <key>hash2</key> - <data> - GOSHZhsDKrrKy8L3PkySoT90dC1Y/bYfITIsE6XyCGE= - </data> - </dict> - <key>Headers/Sparkle.h</key> - <dict> - <key>hash2</key> - <data> - OkQqMusip3u1oI5hrGeNr/32xpfTMCC4Kmg7r0Aijgw= - </data> - </dict> - <key>Modules/module.modulemap</key> - <dict> - <key>hash2</key> - <data> - 1TF+JZkzFr6n8oH4WItto+C5Vf3K12f0H9KjqD0A5QU= - </data> - </dict> - <key>PrivateHeaders/SPUAppcastItemStateResolver.h</key> - <dict> - <key>hash2</key> - <data> - uadB6ogg0HfIDtHd/Uc+JBuKuRjvAWUj8zWMqWhfJkg= - </data> - </dict> - <key>PrivateHeaders/SPUGentleUserDriverReminders.h</key> - <dict> - <key>hash2</key> - <data> - 9W2dJ38WQX151mpIS0r8/EfCqZV6jEh621xwna2JVAI= - </data> - </dict> - <key>PrivateHeaders/SPUInstallationType.h</key> - <dict> - <key>hash2</key> - <data> - hj9Br7Gf1Y8X1dqNvSUHMP70K+Q+S9xZAyPYMqKthFQ= - </data> - </dict> - <key>PrivateHeaders/SPUStandardUserDriver+Private.h</key> - <dict> - <key>hash2</key> - <data> - Y3+lm+u0IcRfOZ83REg4sB6t6Gt9zNvfoc36rDGqErw= - </data> - </dict> - <key>PrivateHeaders/SPUUserAgent+Private.h</key> - <dict> - <key>hash2</key> - <data> - 7oKxx32I6Y1OQh8mFj4fpLqcfat6wuEyXt7D4oZ4Vec= - </data> - </dict> - <key>PrivateHeaders/SUAppcastItem+Private.h</key> - <dict> - <key>hash2</key> - <data> - lD64eho6Q/ue23yAnMMiVK3Ma3wgI6wH1AzsCNek6Eg= - </data> - </dict> - <key>PrivateHeaders/SUInstallerLauncher+Private.h</key> - <dict> - <key>hash2</key> - <data> - 9igX5fnwg2PfKMmhEabcLvBsNhtWTQD1NsfXfCmQJp8= - </data> - </dict> - <key>Resources/Base.lproj/SUUpdateAlert.nib</key> - <dict> - <key>hash2</key> - <data> - 6GuEAoNdrDn6x7caEH4yQUf1Nl9w+NDANF0Ze40/Whw= - </data> - </dict> - <key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib</key> - <dict> - <key>hash2</key> - <data> - VxdBnCh48cJwJQqNMZuVw+kb/Z9eYpBMIckUsUcPq14= - </data> - </dict> - <key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib</key> - <dict> - <key>hash2</key> - <data> - 5OqqSibTZoFYndDVZlSOzhJMPqkZt39vRUdH0ToxLb4= - </data> - </dict> - <key>Resources/Base.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 7DQi4XIdmNDFEuet0a26l/2qsTHrLKlDT4/zp6XA97w= - </data> - </dict> - <key>Resources/Info.plist</key> - <dict> - <key>hash2</key> - <data> - krhzwwKe0VapuZfF3qJMdoCmsKjWT6DdYLqbeTqHHmQ= - </data> - </dict> - <key>Resources/ReleaseNotesColorStyle.css</key> - <dict> - <key>hash2</key> - <data> - dr1pmXWP2OUdF+a0gttDT5tHaMArA3r2vS46AAzoy8E= - </data> - </dict> - <key>Resources/SUStatus.nib</key> - <dict> - <key>hash2</key> - <data> - xaemKA5RnHBgTuwB81z6r5d+f2CaMcz74K9Tv+bY4BM= - </data> - </dict> - <key>Resources/ar.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - 33nOBJb6OPaZt3PKT2iUJ3RfF/c59DAGmt9TCQVn74A= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ar.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - T7jmmlpE0sLNULv3afiWTodnuCFQgWJobzgcUjYOqLE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ar.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - yx9tkKjj3aOHvgdYCWXM89uhlyVeNb4oqcAenJxibwI= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ca.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - 18qLsTRnJfi0wDf6A85XbiMXGORSmuo9Ul3IK4m5gq0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ca.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - DQhUnYhSgufw5NRY162lt2GGM83U38tQvNF1qotGYzE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/cs.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - qSoDl0PIYv+OrSxtJfUYk9xeQihmzfaxAf+egKyw4y4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/cs.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - CVcpEvgI5PQ1NFmIg3Z3rmqCpPDyVHRAtfmMWzW8xUE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/cs.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 9e+PJbv/VS2Crb9Ba6ZeADG2ll4RbsGse7NbwIm0IG4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/da.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - aKNcPadrNnf7wuYmBAxoRzES9XhxXRHMrW/+9MtZBQs= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/da.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - S375hGDUzaAJ0lfz41FIA5w56+Ws5PemLC/1KBRvhFc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/da.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - qgYKiHiodd+q/4U1lIEIUSS9PX9ENx0isGUKLSWmKe4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/de.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - A6JiLH5c4UX2iobAPXPHv7TLiBInrdHvtvqnnsTBxLI= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/de.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - peRkazz0dsfYJDb3gPQ69Yyz9ZQ392Wpl9aKbPx52r4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/de.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - uxoRq90TmDirUKRbCW1lKy/k1tZvFz4EbxQPhVf+Mhs= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/el.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - utAXO7a8Od4ICYV3R0WQBa8ncUQ30SfruZACTuvyDxk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/el.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - Ht2j5NyBIuVeI8cvtadQCMnAmv2pEX2/D2xssc0ks6E= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/el.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - GvP3asj8JbFMZdNtcFo0MWdmrCB+z6k66kmleaGlmow= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/en.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - EBVS8ZfEIJxGSghO17emwoHQo0LVWWzBJMFs8RwvKWg= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/en.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - dtCxuHMLMU87LdmyOxxclj/bOGkoLz6sOZtmOQ4pjXg= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/es.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - 8KSmmlZHYEiMGUwXQRV+ZDxs07XmaeH4XIYI+di1ono= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/es.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - VK5FfxN+4wUvATUvyh9tQPkfMIY/r7/4mGBCqtWXYKI= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/es.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - RYqWb4D0ylosWigPpdVjMlaCWiXNrRIvzIwwVbXpaSs= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fa.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - hiHofXML8/Ej+t2dTRuvVL3vkS/6jW6b/wvx/3quM10= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fi.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - O+ja0EMKj5RxMmW3TRALc9XTpMJ7Y7dwXm706E33rUA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fi.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - xZSJBgkVmrnVUyu2oIeMhArcrcz0WK2vkX2R3sg7TTk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fi.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - vIUJXdYI8BMB0xLJANIQk+DDKy2sno6StdPpJSCV++A= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fr.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - Avyaxx14FRXq/CTIDvvF7uww42SRhYgNSc960h7MCfc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fr.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - yeck7eQs0FVk/UGgsjBUN59wJqOtzQenx9aM6Z13kKI= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/fr.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 47e3tLN5HipnOK5BV6nhmhttV0iZRHEYtGRTh56Pp6M= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/he.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - SmfKGCNVK9M61LCNGqWk4/FZInlcKG2U9uD5ajPVobw= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/he.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - RYs+L0NAew70ya8KrCKYYJPkdzTVckZY7TLwVay0ubQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hr.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - L7shRNgdZIfbt5y5pioLEIo+A9I7VtgIUFpzoCFkB1I= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hr.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - 997BslAfLieaezvoE7sMbvK8UeHB6cPZLCC7Mr36E/E= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hr.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - xyEyZ8ezqdbPQQ/b6RSpnULrjnL08GWQ3wd+AasW2KQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hu.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - 8LbsWTkMSczHFa4Rh9XZDRo0uCOyrV9VXUYEiEvnG7I= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hu.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - twHi8JXysxao7MlTGr178ZpB8yz1mXkij2V5n8NJWSQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/hu.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 0UBqgjXjtRG51lEacNaLTmNvj5aFUeJ7oo1J4WYkrCw= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/is.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - 04Q9PpqtuYz6kfVhf6eI9XBxJn0LQB9Ck/ceBq1ztGU= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/is.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - VTXP5MNyLB5x8ivTThsM02bVaHJiDEI3qu3+S1ZQJCw= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/is.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - n1w40GWVeQM6/1d+krnNoL0XutbF3HNv2qjFaMErsuY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/it.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - 1zxkJlohqYtSJb0pj93fJXlPkedYm2IllbilGRDFo90= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/it.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - i2gXWKIvcXKpPvnw29Nyp4/CwAhAiZdn3LGMeDHwm0o= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/it.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - TgEXGRRCYffwGHAa78wO2btMh/B5TluqOiVpvsy7yYY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ja.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - vFagmq7Xdp80v7/plWY/m3PBNbxFsCeu0x8wDzZQRT4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ja.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - zYuOp6owctTI6zIFWac7yKqGLEglaXnTlNOnh/n7mow= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ja.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 6b23nyneGkjP1x+wd00PTqF9PPujhu9g0TS4+3cBywo= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ko.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - shkQwYfF0rI+GzhWoVLqI7A1hKTnRr/o4wnUFb3Vhik= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ko.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - lqPQJYKtJlVGV2/UpetCpxTEpb4u5aUUU9CjmZO2OaI= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ko.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - PIYd2jHiJYoXmHfGbXu4sWialdDeBEyHWgMzu8Yd2H8= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nb.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - RQbKlvLGnVjjVMP5eHHNUCv5kLJl4EA6zNGdDKatbH0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nb.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - fUXd7difLY77ZuS/SSvoYhf8PkFK9QDsJSO8or9i0xs= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nb.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - oVMa0iTjxWVrd4HFHRrUvKxqnk+YFHk2CxOu43+wO2Q= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nl.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - tp3fY8ogv+xcQOFkz5BkDNTZHIaRrhGgT9uKfCjDB70= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nl.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - AnDExckS661tfAK+Boog4+sXuC5AkiTU7aNG62I8Pmk= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/nl.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 2tCuekmOs0JtuIM7hm/+jt5s4OJGocWANizpTH8a58k= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pl.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - oB2rGM/SPnJLdvhUz2CJfm8TS6XhrhmHD2gFyrVSq8U= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pl.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - 6wJzRSZnXz5LE2nE67bE6tnreEDCcpWZAsZdNGUmkMY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pl.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - /qcXx+RijYb31wahT1y3K+QX0NCxCnGFDX9dWzAc56o= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-BR.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - hDN04zbJliR6KRqEv4lEuAVNTjbkmyYUpKjCbWKaKdU= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-BR.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - ORwVRY5Z5fnlWEKiFLcVc7Z7hJueiew9nBlzgX0dve0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-BR.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - cExBbBN/cbmRWOsrqKbEBHJOo7FtTr3ZavW9slfCsVc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-PT.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - gto4ribWYRWZl0Eez6/7XZg3EesExPlGb5Nz1YVTuzE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-PT.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - YfyCM23JKSt8X663Xe3gds6gHqq5Q+AnLpDFUAHM2BE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/pt-PT.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - WGgYHgAMqsDwSkDIWMFg5XBJnvRCbvM59I1pqJgmhgM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ro.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - PZZnueQNOLmQuEtkELhzxhnG+MDu7RyeOaySHSoHmYU= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ro.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - ou6KdrTUzEKBrcCjBNtxZIZP9HuuJ8zirlEPslAq10Y= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ro.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - o6GEyuuMFsBOFOONmS2V2x+bv11kkMT3xHEoelaxJv8= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ru.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - wdiMmOcek4MJvdl1u2OoccWD56zCu2lKDGUd40bnMb8= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ru.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - 8OxiHFrqm2Kj33QZV8qXIaVimaF1Zcvtmks+/riocE0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/ru.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - uqN6dwLmCFJJQmbURrhDJv9wDJSGWqRqyqgeKTNUHZ0= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sk.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - FDJ/dTwG5X34BF9lDDkFVGJUwpLeKi1MUbF072nYass= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sk.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - xa+UPXIC+og1IpGE6bA/+51E2uR9ZG+HGWKFA83tTNU= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sk.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - iZvCvn22+4feRZso6kzggSUbr1p4Z5zyDU7qniyWqE8= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sl.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - OAq7ojI6K/xR4nFEK1OBTiJeNaHqgb8xCgzZ5Y3P7Uo= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sl.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - fsDgHLZ/sucjdSCWTX5d16OnZjoRzcwYcFxhiqRs9QE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sl.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - eq+yTsmwGRXUHYRVC4w06YmUPnsYuuc4OjUfo7feieE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sv.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - LYXEBB7MF82Ig5MgIM9pTtJJAYJL51nzYzbVW1kdSGI= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sv.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - 7cRrvSRjQl6vS+7I590mYMrXl264dBgJRgZ1orZvRSs= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/sv.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - ZoKH8cwKHH2VaZEkGsmRKevFaLdLxlAICRnrceNdsuw= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/th.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - dvWO9t2NYZ+cQoe/9B3Tib+EPOdPp4wgatHaVVhu8gQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/th.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - B38kLdAzztjjmbp+peEpxUJU+gVWTGiloPXhiVbRGD8= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/th.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - HT9jsdOsSvc+Orcce27NpaRxKmDCzIwkq+/wUGI3JQM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/tr.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - Eas+RUaJ03H05UVqHIhONcr5aa06Oj3g21RnNac5od4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/tr.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - EQ3vP20926+t1dfuYY2lCK4J1gu58mK2DMIqlVx67eE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/tr.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 756/lMgBfXOE5IDG5Ei94/iIP40obn9ZEROHo01+SRY= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/uk.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - lR6DOvFkMHpmbtXQJNE1aXtRXgBbd0siVMoq01D4dhM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/uk.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - IK5drPScu8Mq49o8cg5TcT/cC7CWJ105vdDLIaxDWJc= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/uk.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 90+2Bfu2sI863NKWVBCjCtNi5gbrwPr82sRRfR6DOGM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_CN.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - NXEAoNAKcjI5GBtGxYcUXmtz+rP06ocJSSVlaR/lnMA= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_CN.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - BM6BTCrnXIEZ+HEAtMk2P2Wali7DXxm3BUqaeSfwLRM= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_CN.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - 50IP7eJ9NgEFLDIKBJXnmRRzcGT7MmW08hHJr4alKLQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_HK.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - zegYIhIFwtdJa87mjTlkalyYSz31LrnhiwNWDJDPqBU= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_HK.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - QWezLVAnsxBjpZ390cMI9qLK4eGBDfnZVarJ2anoikQ= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_HK.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - QbOSmL6buAJoDKkEaulr+Wl8BQVUBUiMuUPQ209YhGE= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_TW.lproj/SUUpdateAlert.strings</key> - <dict> - <key>hash2</key> - <data> - jdmB9inrJUf1OmYmVnORSMfdz5z1SWmBtdv39I776K4= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_TW.lproj/SUUpdatePermissionPrompt.strings</key> - <dict> - <key>hash2</key> - <data> - oEil3Q+GFFDEltcMZkVmRiVhGov3bZwifIFtP3zVm0A= - </data> - <key>optional</key> - <true/> - </dict> - <key>Resources/zh_TW.lproj/Sparkle.strings</key> - <dict> - <key>hash2</key> - <data> - Ugk6n5077n97AZzPovvogEt/4FCL8ByB9WvIx7QOsqI= - </data> - <key>optional</key> - <true/> - </dict> - <key>Updater.app</key> - <dict> - <key>cdhash</key> - <data> - 4IqbN5o7Wa9v8+0R/ps2Nfstj+E= - </data> - <key>requirement</key> - <string>cdhash H"e08a9b379a3b59af6ff3ed11fe9b3635fb2d8fe1" or cdhash H"84cb386259688fcfcbd8c0869572decdfc9523ba"</string> - </dict> - <key>XPCServices/Downloader.xpc</key> - <dict> - <key>cdhash</key> - <data> - HaMd6DNZZ2FEr5Fn8W6kWtYh9s4= - </data> - <key>requirement</key> - <string>cdhash H"1da31de83359676144af9167f16ea45ad621f6ce" or cdhash H"bbb398389a8811b6adf0974097a4a11bb5ae1f97"</string> - </dict> - <key>XPCServices/Installer.xpc</key> - <dict> - <key>cdhash</key> - <data> - WknywtvC9FumXIguZsue1IwQYSw= - </data> - <key>requirement</key> - <string>cdhash H"5a49f2c2dbc2f45ba65c882e66cb9ed48c10612c" or cdhash H"b021b0c793367b0a625b9ed434adc4f8c189da7e"</string> - </dict> - </dict> - <key>rules</key> - <dict> - <key>^Resources/</key> - <true/> - <key>^Resources/.*\.lproj/</key> - <dict> - <key>optional</key> - <true/> - <key>weight</key> - <real>1000</real> - </dict> - <key>^Resources/.*\.lproj/locversion.plist$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>1100</real> - </dict> - <key>^Resources/Base\.lproj/</key> - <dict> - <key>weight</key> - <real>1010</real> - </dict> - <key>^version.plist$</key> - <true/> - </dict> - <key>rules2</key> - <dict> - <key>.*\.dSYM($|/)</key> - <dict> - <key>weight</key> - <real>11</real> - </dict> - <key>^(.*/)?\.DS_Store$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>2000</real> - </dict> - <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key> - <dict> - <key>nested</key> - <true/> - <key>weight</key> - <real>10</real> - </dict> - <key>^.*</key> - <true/> - <key>^Info\.plist$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>20</real> - </dict> - <key>^PkgInfo$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>20</real> - </dict> - <key>^Resources/</key> - <dict> - <key>weight</key> - <real>20</real> - </dict> - <key>^Resources/.*\.lproj/</key> - <dict> - <key>optional</key> - <true/> - <key>weight</key> - <real>1000</real> - </dict> - <key>^Resources/.*\.lproj/locversion.plist$</key> - <dict> - <key>omit</key> - <true/> - <key>weight</key> - <real>1100</real> - </dict> - <key>^Resources/Base\.lproj/</key> - <dict> - <key>weight</key> - <real>1010</real> - </dict> - <key>^[^/]+$</key> - <dict> - <key>nested</key> - <true/> - <key>weight</key> - <real>10</real> - </dict> - <key>^embedded\.provisionprofile$</key> - <dict> - <key>weight</key> - <real>20</real> - </dict> - <key>^version\.plist$</key> - <dict> - <key>weight</key> - <real>20</real> - </dict> - </dict> -</dict> -</plist> diff --git a/Pods/Sparkle/Sparkle.framework/Versions/Current b/Pods/Sparkle/Sparkle.framework/Versions/Current deleted file mode 120000 index 7371f47a6..000000000 --- a/Pods/Sparkle/Sparkle.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/Pods/Sparkle/Sparkle.framework/XPCServices b/Pods/Sparkle/Sparkle.framework/XPCServices deleted file mode 120000 index 99c46ea23..000000000 --- a/Pods/Sparkle/Sparkle.framework/XPCServices +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/XPCServices \ No newline at end of file diff --git a/Pods/Sparkle/Symbols/Autoupdate.dSYM/Contents/Info.plist b/Pods/Sparkle/Symbols/Autoupdate.dSYM/Contents/Info.plist deleted file mode 100644 index b0075c9f8..000000000 --- a/Pods/Sparkle/Symbols/Autoupdate.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> - <dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleIdentifier</key> - <string>com.apple.xcode.dsym.Autoupdate</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>dSYM</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleShortVersionString</key> - <string>1.0</string> - <key>CFBundleVersion</key> - <string>1</string> - </dict> -</plist> diff --git a/Pods/Sparkle/Symbols/Autoupdate.dSYM/Contents/Resources/DWARF/Autoupdate b/Pods/Sparkle/Symbols/Autoupdate.dSYM/Contents/Resources/DWARF/Autoupdate deleted file mode 100644 index 6ff4a7998..000000000 Binary files a/Pods/Sparkle/Symbols/Autoupdate.dSYM/Contents/Resources/DWARF/Autoupdate and /dev/null differ diff --git a/Pods/Sparkle/Symbols/BinaryDelta.dSYM/Contents/Info.plist b/Pods/Sparkle/Symbols/BinaryDelta.dSYM/Contents/Info.plist deleted file mode 100644 index 325809b9e..000000000 --- a/Pods/Sparkle/Symbols/BinaryDelta.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> - <dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleIdentifier</key> - <string>com.apple.xcode.dsym.BinaryDelta</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>dSYM</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleShortVersionString</key> - <string>1.0</string> - <key>CFBundleVersion</key> - <string>1</string> - </dict> -</plist> diff --git a/Pods/Sparkle/Symbols/BinaryDelta.dSYM/Contents/Resources/DWARF/BinaryDelta b/Pods/Sparkle/Symbols/BinaryDelta.dSYM/Contents/Resources/DWARF/BinaryDelta deleted file mode 100644 index 138cc7b00..000000000 Binary files a/Pods/Sparkle/Symbols/BinaryDelta.dSYM/Contents/Resources/DWARF/BinaryDelta and /dev/null differ diff --git a/Pods/Sparkle/Symbols/Downloader.xpc.dSYM/Contents/Info.plist b/Pods/Sparkle/Symbols/Downloader.xpc.dSYM/Contents/Info.plist deleted file mode 100644 index ecdc5c238..000000000 --- a/Pods/Sparkle/Symbols/Downloader.xpc.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> - <dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleIdentifier</key> - <string>com.apple.xcode.dsym.org.sparkle-project.Downloader</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>dSYM</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleShortVersionString</key> - <string>2.3.2</string> - <key>CFBundleVersion</key> - <string>2021.2</string> - </dict> -</plist> diff --git a/Pods/Sparkle/Symbols/Downloader.xpc.dSYM/Contents/Resources/DWARF/Downloader b/Pods/Sparkle/Symbols/Downloader.xpc.dSYM/Contents/Resources/DWARF/Downloader deleted file mode 100644 index a84ccb87c..000000000 Binary files a/Pods/Sparkle/Symbols/Downloader.xpc.dSYM/Contents/Resources/DWARF/Downloader and /dev/null differ diff --git a/Pods/Sparkle/Symbols/Installer.xpc.dSYM/Contents/Info.plist b/Pods/Sparkle/Symbols/Installer.xpc.dSYM/Contents/Info.plist deleted file mode 100644 index 5c2b45130..000000000 --- a/Pods/Sparkle/Symbols/Installer.xpc.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> - <dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleIdentifier</key> - <string>com.apple.xcode.dsym.org.sparkle-project.InstallerLauncher</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>dSYM</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleShortVersionString</key> - <string>2.3.2</string> - <key>CFBundleVersion</key> - <string>2021.2</string> - </dict> -</plist> diff --git a/Pods/Sparkle/Symbols/Installer.xpc.dSYM/Contents/Resources/DWARF/Installer b/Pods/Sparkle/Symbols/Installer.xpc.dSYM/Contents/Resources/DWARF/Installer deleted file mode 100644 index 222c19c01..000000000 Binary files a/Pods/Sparkle/Symbols/Installer.xpc.dSYM/Contents/Resources/DWARF/Installer and /dev/null differ diff --git a/Pods/Sparkle/Symbols/Sparkle Test App.app.dSYM/Contents/Info.plist b/Pods/Sparkle/Symbols/Sparkle Test App.app.dSYM/Contents/Info.plist deleted file mode 100644 index 3d96af1d4..000000000 --- a/Pods/Sparkle/Symbols/Sparkle Test App.app.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> - <dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleIdentifier</key> - <string>com.apple.xcode.dsym.org.sparkle-project.SparkleTestApp</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>dSYM</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleShortVersionString</key> - <string>1.5.1</string> - <key>CFBundleVersion</key> - <string>1.5.1</string> - </dict> -</plist> diff --git a/Pods/Sparkle/Symbols/Sparkle Test App.app.dSYM/Contents/Resources/DWARF/Sparkle Test App b/Pods/Sparkle/Symbols/Sparkle Test App.app.dSYM/Contents/Resources/DWARF/Sparkle Test App deleted file mode 100644 index af01854aa..000000000 Binary files a/Pods/Sparkle/Symbols/Sparkle Test App.app.dSYM/Contents/Resources/DWARF/Sparkle Test App and /dev/null differ diff --git a/Pods/Sparkle/Symbols/Sparkle.framework.dSYM/Contents/Info.plist b/Pods/Sparkle/Symbols/Sparkle.framework.dSYM/Contents/Info.plist deleted file mode 100644 index 265eeb63b..000000000 --- a/Pods/Sparkle/Symbols/Sparkle.framework.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> - <dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleIdentifier</key> - <string>com.apple.xcode.dsym.org.sparkle-project.Sparkle</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>dSYM</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleShortVersionString</key> - <string>2.3.2</string> - <key>CFBundleVersion</key> - <string>2021.2</string> - </dict> -</plist> diff --git a/Pods/Sparkle/Symbols/Sparkle.framework.dSYM/Contents/Resources/DWARF/Sparkle b/Pods/Sparkle/Symbols/Sparkle.framework.dSYM/Contents/Resources/DWARF/Sparkle deleted file mode 100644 index 5dd47dee8..000000000 Binary files a/Pods/Sparkle/Symbols/Sparkle.framework.dSYM/Contents/Resources/DWARF/Sparkle and /dev/null differ diff --git a/Pods/Sparkle/Symbols/Updater.app.dSYM/Contents/Info.plist b/Pods/Sparkle/Symbols/Updater.app.dSYM/Contents/Info.plist deleted file mode 100644 index 4b07503e1..000000000 --- a/Pods/Sparkle/Symbols/Updater.app.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> - <dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleIdentifier</key> - <string>com.apple.xcode.dsym.org.sparkle-project.Sparkle.Updater</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>dSYM</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleShortVersionString</key> - <string>2.3.2</string> - <key>CFBundleVersion</key> - <string>2021.2</string> - </dict> -</plist> diff --git a/Pods/Sparkle/Symbols/Updater.app.dSYM/Contents/Resources/DWARF/Updater b/Pods/Sparkle/Symbols/Updater.app.dSYM/Contents/Resources/DWARF/Updater deleted file mode 100644 index 4111bc56d..000000000 Binary files a/Pods/Sparkle/Symbols/Updater.app.dSYM/Contents/Resources/DWARF/Updater and /dev/null differ diff --git a/Pods/Sparkle/Symbols/generate_appcast.dSYM/Contents/Info.plist b/Pods/Sparkle/Symbols/generate_appcast.dSYM/Contents/Info.plist deleted file mode 100644 index 85e478317..000000000 --- a/Pods/Sparkle/Symbols/generate_appcast.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> - <dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleIdentifier</key> - <string>com.apple.xcode.dsym.generate_appcast</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>dSYM</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleShortVersionString</key> - <string>1.0</string> - <key>CFBundleVersion</key> - <string>1</string> - </dict> -</plist> diff --git a/Pods/Sparkle/Symbols/generate_appcast.dSYM/Contents/Resources/DWARF/generate_appcast b/Pods/Sparkle/Symbols/generate_appcast.dSYM/Contents/Resources/DWARF/generate_appcast deleted file mode 100644 index d74563aca..000000000 Binary files a/Pods/Sparkle/Symbols/generate_appcast.dSYM/Contents/Resources/DWARF/generate_appcast and /dev/null differ diff --git a/Pods/Sparkle/Symbols/generate_keys.dSYM/Contents/Info.plist b/Pods/Sparkle/Symbols/generate_keys.dSYM/Contents/Info.plist deleted file mode 100644 index 3caf89093..000000000 --- a/Pods/Sparkle/Symbols/generate_keys.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> - <dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleIdentifier</key> - <string>com.apple.xcode.dsym.generate_keys</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>dSYM</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleShortVersionString</key> - <string>1.0</string> - <key>CFBundleVersion</key> - <string>1</string> - </dict> -</plist> diff --git a/Pods/Sparkle/Symbols/generate_keys.dSYM/Contents/Resources/DWARF/generate_keys b/Pods/Sparkle/Symbols/generate_keys.dSYM/Contents/Resources/DWARF/generate_keys deleted file mode 100644 index f4904d206..000000000 Binary files a/Pods/Sparkle/Symbols/generate_keys.dSYM/Contents/Resources/DWARF/generate_keys and /dev/null differ diff --git a/Pods/Sparkle/Symbols/sign_update.dSYM/Contents/Info.plist b/Pods/Sparkle/Symbols/sign_update.dSYM/Contents/Info.plist deleted file mode 100644 index 073938964..000000000 --- a/Pods/Sparkle/Symbols/sign_update.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> - <dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleIdentifier</key> - <string>com.apple.xcode.dsym.sign_update</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>dSYM</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleShortVersionString</key> - <string>1.0</string> - <key>CFBundleVersion</key> - <string>1</string> - </dict> -</plist> diff --git a/Pods/Sparkle/Symbols/sign_update.dSYM/Contents/Resources/DWARF/sign_update b/Pods/Sparkle/Symbols/sign_update.dSYM/Contents/Resources/DWARF/sign_update deleted file mode 100644 index 677142d0a..000000000 Binary files a/Pods/Sparkle/Symbols/sign_update.dSYM/Contents/Resources/DWARF/sign_update and /dev/null differ diff --git a/Pods/Sparkle/Symbols/sparkle.app.dSYM/Contents/Info.plist b/Pods/Sparkle/Symbols/sparkle.app.dSYM/Contents/Info.plist deleted file mode 100644 index 4c31f7ea1..000000000 --- a/Pods/Sparkle/Symbols/sparkle.app.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> - <dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleIdentifier</key> - <string>com.apple.xcode.dsym.org.sparkle-project.sparkle-cli</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>dSYM</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleShortVersionString</key> - <string>2.3.2</string> - <key>CFBundleVersion</key> - <string>2021.2</string> - </dict> -</plist> diff --git a/Pods/Sparkle/Symbols/sparkle.app.dSYM/Contents/Resources/DWARF/sparkle b/Pods/Sparkle/Symbols/sparkle.app.dSYM/Contents/Resources/DWARF/sparkle deleted file mode 100644 index 7cb659719..000000000 Binary files a/Pods/Sparkle/Symbols/sparkle.app.dSYM/Contents/Resources/DWARF/sparkle and /dev/null differ diff --git a/Pods/Sparkle/bin/BinaryDelta b/Pods/Sparkle/bin/BinaryDelta deleted file mode 100755 index e73da10cb..000000000 Binary files a/Pods/Sparkle/bin/BinaryDelta and /dev/null differ diff --git a/Pods/Sparkle/bin/generate_appcast b/Pods/Sparkle/bin/generate_appcast deleted file mode 100755 index 8f7a5160d..000000000 Binary files a/Pods/Sparkle/bin/generate_appcast and /dev/null differ diff --git a/Pods/Sparkle/bin/generate_keys b/Pods/Sparkle/bin/generate_keys deleted file mode 100755 index 2cbe18713..000000000 Binary files a/Pods/Sparkle/bin/generate_keys and /dev/null differ diff --git a/Pods/Sparkle/bin/old_dsa_scripts/sign_update b/Pods/Sparkle/bin/old_dsa_scripts/sign_update deleted file mode 100755 index fddaae839..000000000 --- a/Pods/Sparkle/bin/old_dsa_scripts/sign_update +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -set -e -set -o pipefail -if [ "$#" -ne 2 ]; then - echo "Usage: $0 update_archive_file dsa_priv.pem" - echo "This is an old DSA signing script for deprecated DSA keys." - echo "Do not use this for new applications." - exit 1 -fi -openssl=/usr/bin/openssl -version=`$openssl version` -if [[ $version =~ "OpenSSL 0.9" ]]; then - # pre-10.13 system: Fall back to OpenSSL DSS1 digest because it does not like the -sha1 option - $openssl dgst -sha1 -binary < "$1" | $openssl dgst -dss1 -sign "$2" | $openssl enc -base64 -else - # 10.13 and later: Use LibreSSL SHA1 digest - $openssl dgst -sha1 -binary < "$1" | $openssl dgst -sha1 -sign "$2" | $openssl enc -base64 -fi diff --git a/Pods/Sparkle/bin/sign_update b/Pods/Sparkle/bin/sign_update deleted file mode 100755 index 97ab3d512..000000000 Binary files a/Pods/Sparkle/bin/sign_update and /dev/null differ diff --git a/Pods/Target Support Files/Nuke/Nuke-Info.plist b/Pods/Target Support Files/Nuke/Nuke-Info.plist deleted file mode 100644 index f29659ff9..000000000 --- a/Pods/Target Support Files/Nuke/Nuke-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>10.7.1</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>${CURRENT_PROJECT_VERSION}</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/Nuke/Nuke-dummy.m b/Pods/Target Support Files/Nuke/Nuke-dummy.m deleted file mode 100644 index 267551d69..000000000 --- a/Pods/Target Support Files/Nuke/Nuke-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_Nuke : NSObject -@end -@implementation PodsDummy_Nuke -@end diff --git a/Pods/Target Support Files/Nuke/Nuke-prefix.pch b/Pods/Target Support Files/Nuke/Nuke-prefix.pch deleted file mode 100644 index beb2a2441..000000000 --- a/Pods/Target Support Files/Nuke/Nuke-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/Nuke/Nuke-umbrella.h b/Pods/Target Support Files/Nuke/Nuke-umbrella.h deleted file mode 100644 index 4c0a6838a..000000000 --- a/Pods/Target Support Files/Nuke/Nuke-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double NukeVersionNumber; -FOUNDATION_EXPORT const unsigned char NukeVersionString[]; - diff --git a/Pods/Target Support Files/Nuke/Nuke.debug.xcconfig b/Pods/Target Support Files/Nuke/Nuke.debug.xcconfig deleted file mode 100644 index d4c187f75..000000000 --- a/Pods/Target Support Files/Nuke/Nuke.debug.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Nuke -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Nuke -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Nuke/Nuke.modulemap b/Pods/Target Support Files/Nuke/Nuke.modulemap deleted file mode 100644 index 0d324a7f4..000000000 --- a/Pods/Target Support Files/Nuke/Nuke.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Nuke { - umbrella header "Nuke-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/Nuke/Nuke.release.xcconfig b/Pods/Target Support Files/Nuke/Nuke.release.xcconfig deleted file mode 100644 index d4c187f75..000000000 --- a/Pods/Target Support Files/Nuke/Nuke.release.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Nuke -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Nuke -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Nuke/Nuke.xcconfig b/Pods/Target Support Files/Nuke/Nuke.xcconfig deleted file mode 100644 index 15218e800..000000000 --- a/Pods/Target Support Files/Nuke/Nuke.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Nuke -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Nuke -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-Info.plist b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-Info.plist deleted file mode 100644 index 19cf209d2..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>1.0.0</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>${CURRENT_PROJECT_VERSION}</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.markdown b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.markdown deleted file mode 100644 index ca118eb9e..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.markdown +++ /dev/null @@ -1,174 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## STPrivilegedTask - -BSD 3-Clause License - -Copyright (c) 2008-2021, Sveinbjorn Thordarson -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -## Sparkle - -Copyright (c) 2006-2013 Andy Matuschak. -Copyright (c) 2009-2013 Elgato Systems GmbH. -Copyright (c) 2011-2014 Kornel Lesiński. -Copyright (c) 2015-2017 Mayur Pawashe. -Copyright (c) 2014 C.W. Betts. -Copyright (c) 2014 Petroules Corporation. -Copyright (c) 2014 Big Nerd Ranch. -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -================= -EXTERNAL LICENSES -================= - -bspatch.c and bsdiff.c, from bsdiff 4.3 <http://www.daemonology.net/bsdiff/>: - -Copyright 2003-2005 Colin Percival -All rights reserved - -Redistribution and use in source and binary forms, with or without -modification, are permitted providing that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - --- - -sais.c and sais.c, from sais-lite (2010/08/07) <https://sites.google.com/site/yuta256/sais>: - -The sais-lite copyright is as follows: - -Copyright (c) 2008-2010 Yuta Mori All Rights Reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - --- - -Portable C implementation of Ed25519, from https://github.com/orlp/ed25519 - -Copyright (c) 2015 Orson Peters <orsonpeters@gmail.com> - -This software is provided 'as-is', without any express or implied warranty. In no event will the -authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, including commercial -applications, and to alter it and redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the - original software. If you use this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must not be misrepresented as - being the original software. - -3. This notice may not be removed or altered from any source distribution. - --- - -SUSignatureVerifier.m: - -Copyright (c) 2011 Mark Hamlin. - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted providing that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.plist b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.plist deleted file mode 100644 index 7c38e65fb..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.plist +++ /dev/null @@ -1,212 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>PreferenceSpecifiers</key> - <array> - <dict> - <key>FooterText</key> - <string>This application makes use of the following third party libraries:</string> - <key>Title</key> - <string>Acknowledgements</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - <dict> - <key>FooterText</key> - <string>BSD 3-Clause License - -Copyright (c) 2008-2021, Sveinbjorn Thordarson -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</string> - <key>License</key> - <string>BSD</string> - <key>Title</key> - <string>STPrivilegedTask</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - <dict> - <key>FooterText</key> - <string>Copyright (c) 2006-2013 Andy Matuschak. -Copyright (c) 2009-2013 Elgato Systems GmbH. -Copyright (c) 2011-2014 Kornel Lesiński. -Copyright (c) 2015-2017 Mayur Pawashe. -Copyright (c) 2014 C.W. Betts. -Copyright (c) 2014 Petroules Corporation. -Copyright (c) 2014 Big Nerd Ranch. -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -================= -EXTERNAL LICENSES -================= - -bspatch.c and bsdiff.c, from bsdiff 4.3 <http://www.daemonology.net/bsdiff/>: - -Copyright 2003-2005 Colin Percival -All rights reserved - -Redistribution and use in source and binary forms, with or without -modification, are permitted providing that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - --- - -sais.c and sais.c, from sais-lite (2010/08/07) <https://sites.google.com/site/yuta256/sais>: - -The sais-lite copyright is as follows: - -Copyright (c) 2008-2010 Yuta Mori All Rights Reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - --- - -Portable C implementation of Ed25519, from https://github.com/orlp/ed25519 - -Copyright (c) 2015 Orson Peters <orsonpeters@gmail.com> - -This software is provided 'as-is', without any express or implied warranty. In no event will the -authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, including commercial -applications, and to alter it and redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the - original software. If you use this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must not be misrepresented as - being the original software. - -3. This notice may not be removed or altered from any source distribution. - --- - -SUSignatureVerifier.m: - -Copyright (c) 2011 Mark Hamlin. - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted providing that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. -</string> - <key>License</key> - <string>MIT</string> - <key>Title</key> - <string>Sparkle</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - <dict> - <key>FooterText</key> - <string>Generated by CocoaPods - https://cocoapods.org</string> - <key>Title</key> - <string></string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - </array> - <key>StringsTable</key> - <string>Acknowledgements</string> - <key>Title</key> - <string>Acknowledgements</string> -</dict> -</plist> diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-dummy.m b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-dummy.m deleted file mode 100644 index 8dd2086f7..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_Pods_AltServer : NSObject -@end -@implementation PodsDummy_Pods_AltServer -@end diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks-Debug-input-files.xcfilelist deleted file mode 100644 index c1637622f..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks-Debug-input-files.xcfilelist +++ /dev/null @@ -1,3 +0,0 @@ -${PODS_ROOT}/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks.sh -${BUILT_PRODUCTS_DIR}/STPrivilegedTask/STPrivilegedTask.framework -${PODS_ROOT}/Sparkle/Sparkle.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks-Debug-output-files.xcfilelist deleted file mode 100644 index e4d8afea9..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks-Debug-output-files.xcfilelist +++ /dev/null @@ -1,2 +0,0 @@ -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/STPrivilegedTask.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sparkle.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks-Release-input-files.xcfilelist deleted file mode 100644 index c1637622f..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks-Release-input-files.xcfilelist +++ /dev/null @@ -1,3 +0,0 @@ -${PODS_ROOT}/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks.sh -${BUILT_PRODUCTS_DIR}/STPrivilegedTask/STPrivilegedTask.framework -${PODS_ROOT}/Sparkle/Sparkle.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks-Release-output-files.xcfilelist deleted file mode 100644 index e4d8afea9..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks-Release-output-files.xcfilelist +++ /dev/null @@ -1,2 +0,0 @@ -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/STPrivilegedTask.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sparkle.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks.sh b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks.sh deleted file mode 100755 index a727106ef..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-frameworks.sh +++ /dev/null @@ -1,188 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -function on_error { - echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" -} -trap 'on_error $LINENO' ERR - -if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" -BCSYMBOLMAP_DIR="BCSymbolMaps" - - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -# Copies and strips a vendored framework -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink -f "${source}")" - fi - - if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then - # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied - find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do - echo "Installing $f" - install_bcsymbolmap "$f" "$destination" - rm "$f" - done - rmdir "${source}/${BCSYMBOLMAP_DIR}" - fi - - # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" - - local basename - basename="$(basename -s .framework "$1")" - binary="${destination}/${basename}.framework/${basename}" - - if ! [ -r "$binary" ]; then - binary="${destination}/${basename}" - elif [ -L "${binary}" ]; then - echo "Destination binary is symlinked..." - dirname="$(dirname "${binary}")" - binary="${dirname}/$(readlink "${binary}")" - fi - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then - strip_invalid_archs "$binary" - fi - - # Resign the code if required by the build settings to avoid unstable apps - code_sign_if_enabled "${destination}/$(basename "$1")" - - # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. - if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - code_sign_if_enabled "${destination}/${lib}" - done - fi -} -# Copies and strips a vendored dSYM -install_dsym() { - local source="$1" - warn_missing_arch=${2:-true} - if [ -r "$source" ]; then - # Copy the dSYM into the targets temp dir. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" - - local basename - basename="$(basename -s .dSYM "$source")" - binary_name="$(ls "$source/Contents/Resources/DWARF")" - binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" - - # Strip invalid architectures from the dSYM. - if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then - strip_invalid_archs "$binary" "$warn_missing_arch" - fi - if [[ $STRIP_BINARY_RETVAL == 0 ]]; then - # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" - else - # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - mkdir -p "${DWARF_DSYM_FOLDER_PATH}" - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" - fi - fi -} - -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - warn_missing_arch=${2:-true} - # Get architectures for current target binary - binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" - # Intersect them with the architectures we are building for - intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" - # If there are no archs supported by this binary then warn the user - if [[ -z "$intersected_archs" ]]; then - if [[ "$warn_missing_arch" == "true" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - fi - STRIP_BINARY_RETVAL=1 - return - fi - stripped="" - for arch in $binary_archs; do - if ! [[ "${ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi - STRIP_BINARY_RETVAL=0 -} - -# Copies the bcsymbolmap files of a vendored framework -install_bcsymbolmap() { - local bcsymbolmap_path="$1" - local destination="${BUILT_PRODUCTS_DIR}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" -} - -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identity - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} - -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/STPrivilegedTask/STPrivilegedTask.framework" - install_framework "${PODS_ROOT}/Sparkle/Sparkle.framework" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/STPrivilegedTask/STPrivilegedTask.framework" - install_framework "${PODS_ROOT}/Sparkle/Sparkle.framework" -fi -if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - wait -fi diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-umbrella.h b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-umbrella.h deleted file mode 100644 index bf81095cd..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import <Cocoa/Cocoa.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double Pods_AltServerVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_AltServerVersionString[]; - diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer.debug.xcconfig b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer.debug.xcconfig deleted file mode 100644 index 750785f4f..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer.debug.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask" "${PODS_ROOT}/Sparkle" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask/STPrivilegedTask.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' @loader_path/../Frameworks -OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask/STPrivilegedTask.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask" -iframework "${PODS_ROOT}/Sparkle" -OTHER_LDFLAGS = $(inherited) -framework "STPrivilegedTask" -framework "Security" -framework "Sparkle" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask" "-F${PODS_CONFIGURATION_BUILD_DIR}/Sparkle" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer.modulemap b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer.modulemap deleted file mode 100644 index 5e7d63f8a..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_AltServer { - umbrella header "Pods-AltServer-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer.release.xcconfig b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer.release.xcconfig deleted file mode 100644 index 750785f4f..000000000 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer.release.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask" "${PODS_ROOT}/Sparkle" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask/STPrivilegedTask.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' @loader_path/../Frameworks -OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask/STPrivilegedTask.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask" -iframework "${PODS_ROOT}/Sparkle" -OTHER_LDFLAGS = $(inherited) -framework "STPrivilegedTask" -framework "Security" -framework "Sparkle" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask" "-F${PODS_CONFIGURATION_BUILD_DIR}/Sparkle" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-Info.plist b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-Info.plist deleted file mode 100644 index 19cf209d2..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>1.0.0</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>${CURRENT_PROJECT_VERSION}</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-acknowledgements.markdown b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-acknowledgements.markdown deleted file mode 100644 index 92594a9a3..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-acknowledgements.markdown +++ /dev/null @@ -1,28 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## Nuke - -The MIT License (MIT) - -Copyright (c) 2015-2022 Alexander Grebenyuk - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-acknowledgements.plist b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-acknowledgements.plist deleted file mode 100644 index 287e9a304..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-acknowledgements.plist +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>PreferenceSpecifiers</key> - <array> - <dict> - <key>FooterText</key> - <string>This application makes use of the following third party libraries:</string> - <key>Title</key> - <string>Acknowledgements</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - <dict> - <key>FooterText</key> - <string>The MIT License (MIT) - -Copyright (c) 2015-2022 Alexander Grebenyuk - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -</string> - <key>License</key> - <string>MIT</string> - <key>Title</key> - <string>Nuke</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - <dict> - <key>FooterText</key> - <string>Generated by CocoaPods - https://cocoapods.org</string> - <key>Title</key> - <string></string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - </array> - <key>StringsTable</key> - <string>Acknowledgements</string> - <key>Title</key> - <string>Acknowledgements</string> -</dict> -</plist> diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-dummy.m b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-dummy.m deleted file mode 100644 index 3e9dbf43f..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_Pods_AltStore : NSObject -@end -@implementation PodsDummy_Pods_AltStore -@end diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks-Debug-input-files.xcfilelist deleted file mode 100644 index 3730e40cc..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks-Debug-input-files.xcfilelist +++ /dev/null @@ -1,2 +0,0 @@ -${PODS_ROOT}/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks.sh -${BUILT_PRODUCTS_DIR}/Nuke/Nuke.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks-Debug-output-files.xcfilelist deleted file mode 100644 index 2b228f77c..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks-Debug-output-files.xcfilelist +++ /dev/null @@ -1 +0,0 @@ -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nuke.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks-Release-input-files.xcfilelist deleted file mode 100644 index 3730e40cc..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks-Release-input-files.xcfilelist +++ /dev/null @@ -1,2 +0,0 @@ -${PODS_ROOT}/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks.sh -${BUILT_PRODUCTS_DIR}/Nuke/Nuke.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks-Release-output-files.xcfilelist deleted file mode 100644 index 2b228f77c..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks-Release-output-files.xcfilelist +++ /dev/null @@ -1 +0,0 @@ -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nuke.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks.sh b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks.sh deleted file mode 100755 index 7578fad6b..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-frameworks.sh +++ /dev/null @@ -1,186 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -function on_error { - echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" -} -trap 'on_error $LINENO' ERR - -if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" -BCSYMBOLMAP_DIR="BCSymbolMaps" - - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -# Copies and strips a vendored framework -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink -f "${source}")" - fi - - if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then - # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied - find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do - echo "Installing $f" - install_bcsymbolmap "$f" "$destination" - rm "$f" - done - rmdir "${source}/${BCSYMBOLMAP_DIR}" - fi - - # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" - - local basename - basename="$(basename -s .framework "$1")" - binary="${destination}/${basename}.framework/${basename}" - - if ! [ -r "$binary" ]; then - binary="${destination}/${basename}" - elif [ -L "${binary}" ]; then - echo "Destination binary is symlinked..." - dirname="$(dirname "${binary}")" - binary="${dirname}/$(readlink "${binary}")" - fi - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then - strip_invalid_archs "$binary" - fi - - # Resign the code if required by the build settings to avoid unstable apps - code_sign_if_enabled "${destination}/$(basename "$1")" - - # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. - if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - code_sign_if_enabled "${destination}/${lib}" - done - fi -} -# Copies and strips a vendored dSYM -install_dsym() { - local source="$1" - warn_missing_arch=${2:-true} - if [ -r "$source" ]; then - # Copy the dSYM into the targets temp dir. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" - - local basename - basename="$(basename -s .dSYM "$source")" - binary_name="$(ls "$source/Contents/Resources/DWARF")" - binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" - - # Strip invalid architectures from the dSYM. - if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then - strip_invalid_archs "$binary" "$warn_missing_arch" - fi - if [[ $STRIP_BINARY_RETVAL == 0 ]]; then - # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" - else - # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - mkdir -p "${DWARF_DSYM_FOLDER_PATH}" - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" - fi - fi -} - -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - warn_missing_arch=${2:-true} - # Get architectures for current target binary - binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" - # Intersect them with the architectures we are building for - intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" - # If there are no archs supported by this binary then warn the user - if [[ -z "$intersected_archs" ]]; then - if [[ "$warn_missing_arch" == "true" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - fi - STRIP_BINARY_RETVAL=1 - return - fi - stripped="" - for arch in $binary_archs; do - if ! [[ "${ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi - STRIP_BINARY_RETVAL=0 -} - -# Copies the bcsymbolmap files of a vendored framework -install_bcsymbolmap() { - local bcsymbolmap_path="$1" - local destination="${BUILT_PRODUCTS_DIR}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" -} - -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identity - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} - -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/Nuke/Nuke.framework" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/Nuke/Nuke.framework" -fi -if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - wait -fi diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources-Debug-input-files.xcfilelist deleted file mode 100644 index 59b00e515..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources-Debug-input-files.xcfilelist +++ /dev/null @@ -1,3 +0,0 @@ -${PODS_ROOT}/Target Support Files/Pods-AltStore/Pods-AltStore-resources.sh -${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTCollectionViewCell.xib -${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTPlaceholderView.xib \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources-Debug-output-files.xcfilelist deleted file mode 100644 index baeac31e9..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources-Debug-output-files.xcfilelist +++ /dev/null @@ -1,2 +0,0 @@ -${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTCollectionViewCell.nib -${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTPlaceholderView.nib \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources-Release-input-files.xcfilelist deleted file mode 100644 index 59b00e515..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources-Release-input-files.xcfilelist +++ /dev/null @@ -1,3 +0,0 @@ -${PODS_ROOT}/Target Support Files/Pods-AltStore/Pods-AltStore-resources.sh -${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTCollectionViewCell.xib -${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTPlaceholderView.xib \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources-Release-output-files.xcfilelist deleted file mode 100644 index baeac31e9..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources-Release-output-files.xcfilelist +++ /dev/null @@ -1,2 +0,0 @@ -${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTCollectionViewCell.nib -${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTPlaceholderView.nib \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources.sh b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources.sh deleted file mode 100755 index a3292955a..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-resources.sh +++ /dev/null @@ -1,131 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -function on_error { - echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" -} -trap 'on_error $LINENO' ERR - -if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then - # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy - # resources to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -case "${TARGETED_DEVICE_FAMILY:-}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - 3) - TARGET_DEVICE_ARGS="--target-device tv" - ;; - 4) - TARGET_DEVICE_ARGS="--target-device watch" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; -esac - -install_resource() -{ - if [[ "$1" = /* ]] ; then - RESOURCE_PATH="$1" - else - RESOURCE_PATH="${PODS_ROOT}/$1" - fi - if [[ ! -e "$RESOURCE_PATH" ]] ; then - cat << EOM -error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. -EOM - exit 1 - fi - case $RESOURCE_PATH in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true - xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - *) - echo "$RESOURCE_PATH" || true - echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" - ;; - esac -} -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_resource "${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTCollectionViewCell.xib" - install_resource "${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTPlaceholderView.xib" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_resource "${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTCollectionViewCell.xib" - install_resource "${PODS_ROOT}/../Dependencies/Roxas/Roxas/RSTPlaceholderView.xib" -fi - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] -then - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find -L "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "${PODS_ROOT}*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - else - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" - fi -fi diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-umbrella.h b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-umbrella.h deleted file mode 100644 index 716bb975c..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double Pods_AltStoreVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_AltStoreVersionString[]; - diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore.debug.xcconfig b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore.debug.xcconfig deleted file mode 100644 index 7dbfad49b..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore.debug.xcconfig +++ /dev/null @@ -1,17 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Nuke" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/Nuke" -OTHER_LDFLAGS = $(inherited) -framework "Nuke" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/Nuke" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore.modulemap b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore.modulemap deleted file mode 100644 index 8decb4b88..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_AltStore { - umbrella header "Pods-AltStore-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore.release.xcconfig b/Pods/Target Support Files/Pods-AltStore/Pods-AltStore.release.xcconfig deleted file mode 100644 index 7dbfad49b..000000000 --- a/Pods/Target Support Files/Pods-AltStore/Pods-AltStore.release.xcconfig +++ /dev/null @@ -1,17 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Nuke" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/Nuke" -OTHER_LDFLAGS = $(inherited) -framework "Nuke" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/Nuke" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-Info.plist b/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-Info.plist deleted file mode 100644 index 3fa062ac8..000000000 --- a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>1.0.8</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>${CURRENT_PROJECT_VERSION}</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-dummy.m b/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-dummy.m deleted file mode 100644 index f265fd8b2..000000000 --- a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_STPrivilegedTask : NSObject -@end -@implementation PodsDummy_STPrivilegedTask -@end diff --git a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-prefix.pch b/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-prefix.pch deleted file mode 100644 index 082f8af22..000000000 --- a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import <Cocoa/Cocoa.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-umbrella.h b/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-umbrella.h deleted file mode 100644 index 5cd0de60e..000000000 --- a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-umbrella.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef __OBJC__ -#import <Cocoa/Cocoa.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "STPrivilegedTask.h" - -FOUNDATION_EXPORT double STPrivilegedTaskVersionNumber; -FOUNDATION_EXPORT const unsigned char STPrivilegedTaskVersionString[]; - diff --git a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask.debug.xcconfig b/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask.debug.xcconfig deleted file mode 100644 index 33e1d457a..000000000 --- a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask.debug.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CODE_SIGN_IDENTITY = -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "Security" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/STPrivilegedTask -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask.modulemap b/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask.modulemap deleted file mode 100644 index ee88488ca..000000000 --- a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module STPrivilegedTask { - umbrella header "STPrivilegedTask-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask.release.xcconfig b/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask.release.xcconfig deleted file mode 100644 index 33e1d457a..000000000 --- a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask.release.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CODE_SIGN_IDENTITY = -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "Security" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/STPrivilegedTask -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask.xcconfig b/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask.xcconfig deleted file mode 100644 index 315a94b8a..000000000 --- a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask.xcconfig +++ /dev/null @@ -1,11 +0,0 @@ -CODE_SIGN_IDENTITY = -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/STPrivilegedTask -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "Security" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/STPrivilegedTask -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Sparkle/Sparkle-copy-dsyms-input-files.xcfilelist b/Pods/Target Support Files/Sparkle/Sparkle-copy-dsyms-input-files.xcfilelist deleted file mode 100644 index eac98b438..000000000 --- a/Pods/Target Support Files/Sparkle/Sparkle-copy-dsyms-input-files.xcfilelist +++ /dev/null @@ -1 +0,0 @@ -${PODS_ROOT}/Sparkle/Sparkle.framework.dSYM \ No newline at end of file diff --git a/Pods/Target Support Files/Sparkle/Sparkle-copy-dsyms-output-files.xcfilelist b/Pods/Target Support Files/Sparkle/Sparkle-copy-dsyms-output-files.xcfilelist deleted file mode 100644 index 5b34bd927..000000000 --- a/Pods/Target Support Files/Sparkle/Sparkle-copy-dsyms-output-files.xcfilelist +++ /dev/null @@ -1 +0,0 @@ -${DWARF_DSYM_FOLDER_PATH}/Sparkle.framework.dSYM \ No newline at end of file diff --git a/Pods/Target Support Files/Sparkle/Sparkle-copy-dsyms.sh b/Pods/Target Support Files/Sparkle/Sparkle-copy-dsyms.sh deleted file mode 100755 index 7d9a0913c..000000000 --- a/Pods/Target Support Files/Sparkle/Sparkle-copy-dsyms.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -function on_error { - echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" -} -trap 'on_error $LINENO' ERR - -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - warn_missing_arch=${2:-true} - # Get architectures for current target binary - binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" - # Intersect them with the architectures we are building for - intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" - # If there are no archs supported by this binary then warn the user - if [[ -z "$intersected_archs" ]]; then - if [[ "$warn_missing_arch" == "true" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - fi - STRIP_BINARY_RETVAL=1 - return - fi - stripped="" - for arch in $binary_archs; do - if ! [[ "${ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi - STRIP_BINARY_RETVAL=0 -} - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -# Copies and strips a vendored dSYM -install_dsym() { - local source="$1" - warn_missing_arch=${2:-true} - if [ -r "$source" ]; then - # Copy the dSYM into the targets temp dir. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" - - local basename - basename="$(basename -s .dSYM "$source")" - binary_name="$(ls "$source/Contents/Resources/DWARF")" - binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" - - # Strip invalid architectures from the dSYM. - if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then - strip_invalid_archs "$binary" "$warn_missing_arch" - fi - if [[ $STRIP_BINARY_RETVAL == 0 ]]; then - # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" - else - # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - mkdir -p "${DWARF_DSYM_FOLDER_PATH}" - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" - fi - fi -} - -# Copies the bcsymbolmap files of a vendored framework -install_bcsymbolmap() { - local bcsymbolmap_path="$1" - local destination="${BUILT_PRODUCTS_DIR}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" -} - -install_dsym "${PODS_ROOT}/Sparkle/Sparkle.framework.dSYM" diff --git a/Pods/Target Support Files/Sparkle/Sparkle.debug.xcconfig b/Pods/Target Support Files/Sparkle/Sparkle.debug.xcconfig deleted file mode 100644 index f1ba7cac5..000000000 --- a/Pods/Target Support Files/Sparkle/Sparkle.debug.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CODE_SIGN_IDENTITY = -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Sparkle -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Sparkle" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) @loader_path/../Frameworks -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Sparkle -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Sparkle/Sparkle.release.xcconfig b/Pods/Target Support Files/Sparkle/Sparkle.release.xcconfig deleted file mode 100644 index f1ba7cac5..000000000 --- a/Pods/Target Support Files/Sparkle/Sparkle.release.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CODE_SIGN_IDENTITY = -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Sparkle -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Sparkle" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) @loader_path/../Frameworks -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Sparkle -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Sparkle/Sparkle.xcconfig b/Pods/Target Support Files/Sparkle/Sparkle.xcconfig deleted file mode 100644 index 39d0b33ba..000000000 --- a/Pods/Target Support Files/Sparkle/Sparkle.xcconfig +++ /dev/null @@ -1,12 +0,0 @@ -CODE_SIGN_IDENTITY = -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Sparkle -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Sparkle" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) @loader_path/../Frameworks -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Sparkle -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/README.md b/README.md index ea1a7338d..425a80891 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,7 @@ AltStore and AltServer are both fairly straightforward to compile and run if you ``` cd AltStore git submodule update --init --recursive + pod install ``` 3. Open `AltStore.xcworkspace` and select the AltStore project in the project navigator. On the `Signing & Capabilities` tab, change the team from `Yvette Testut` to your own account. 4. **(AltStore only)** Change the value for `ALTDeviceID` in the Info.plist to your device's UDID. Normally, AltServer embeds the device's UDID in AltStore's Info.plist during installation. When running through Xcode you'll need to set the value yourself or else AltStore won't resign (or even install) apps for the proper device.