From 11026d25456259882b368f94dbf6a4e0ce908ad1 Mon Sep 17 00:00:00 2001 From: Yusuke Morishita Date: Thu, 2 May 2019 17:36:40 +0900 Subject: [PATCH] Migrate to Swift5 --- Example/Podfile | 4 +- Example/Podfile.lock | 41 +- Example/Pods/CryptoSwift/README.md | 235 +- .../Sources/CryptoSwift/AEAD/AEAD.swift | 40 + .../AEAD/AEADChaCha20Poly1305.swift | 59 + .../Sources/CryptoSwift/AES.Cryptors.swift | 130 +- .../CryptoSwift/Sources/CryptoSwift/AES.swift | 66 +- .../Sources/CryptoSwift/Array+Extension.swift | 106 +- .../CryptoSwift/Array+Extensions.swift | 82 - .../CryptoSwift/BatchedCollection.swift | 9 +- .../CryptoSwift/Sources/CryptoSwift/Bit.swift | 1 - .../Sources/CryptoSwift/BlockDecryptor.swift | 85 + .../Sources/CryptoSwift/BlockEncryptor.swift | 57 + .../CryptoSwift/BlockMode/BlockMode.swift | 66 +- .../BlockMode/BlockModeOptions.swift | 15 +- .../Sources/CryptoSwift/BlockMode/CBC.swift | 31 +- .../Sources/CryptoSwift/BlockMode/CCM.swift | 359 ++ .../Sources/CryptoSwift/BlockMode/CFB.swift | 31 +- .../Sources/CryptoSwift/BlockMode/CTR.swift | 119 +- .../BlockMode/CipherModeWorker.swift | 61 + .../Sources/CryptoSwift/BlockMode/ECB.swift | 22 +- .../Sources/CryptoSwift/BlockMode/GCM.swift | 370 ++ .../Sources/CryptoSwift/BlockMode/OFB.swift | 31 +- .../Sources/CryptoSwift/BlockMode/PCBC.swift | 31 +- .../Sources/CryptoSwift/Blowfish.swift | 32 +- .../Sources/CryptoSwift/CBCMAC.swift | 104 + ...AccessBlockModeWorker.swift => CMAC.swift} | 6 +- .../Sources/CryptoSwift/ChaCha20.swift | 36 +- .../Sources/CryptoSwift/Checksum.swift | 200 +- .../Sources/CryptoSwift/Cipher.swift | 2 + .../CryptoSwift/Collection+Extension.swift | 1 - ...BlockModeWorker.swift => CompactMap.swift} | 19 +- ...andomAccessCryptor.swift => Cryptor.swift} | 8 +- .../Sources/CryptoSwift/Cryptors.swift | 13 +- .../Sources/CryptoSwift/Digest.swift | 3 +- .../Foundation/AES+Foundation.swift | 3 +- .../Foundation/Array+Foundation.swift | 7 +- .../Foundation/Blowfish+Foundation.swift | 3 +- .../Foundation/ChaCha20+Foundation.swift | 1 - .../Foundation/Data+Extension.swift | 34 +- .../Foundation/HMAC+Foundation.swift | 1 - .../Foundation/Rabbit+Foundation.swift | 1 - .../String+FoundationExtension.swift | 1 - .../Sources/CryptoSwift/Generics.swift | 4 +- .../Sources/CryptoSwift/HKDF.swift | 34 +- .../Sources/CryptoSwift/HMAC.swift | 14 +- .../Sources/CryptoSwift/Int+Extension.swift | 10 +- .../CryptoSwift/Sources/CryptoSwift/MD5.swift | 1 - .../Sources/CryptoSwift/NoPadding.swift | 1 - .../Sources/CryptoSwift/PKCS/PBKDF1.swift | 12 +- .../Sources/CryptoSwift/PKCS/PBKDF2.swift | 14 +- .../CryptoSwift/PKCS/PKCS7Padding.swift | 1 - .../Sources/CryptoSwift/Padding.swift | 4 +- .../Sources/CryptoSwift/Poly1305.swift | 1 - .../Sources/CryptoSwift/Rabbit.swift | 9 +- .../CryptoSwift/RandomBytesSequence.swift | 12 +- .../Sources/CryptoSwift/SHA1.swift | 15 +- .../Sources/CryptoSwift/SHA2.swift | 37 +- .../Sources/CryptoSwift/SHA3.swift | 15 +- .../Sources/CryptoSwift/Scrypt.swift | 256 ++ .../Sources/CryptoSwift/SecureBytes.swift | 6 +- .../Sources/CryptoSwift/StreamDecryptor.swift | 78 + .../Sources/CryptoSwift/StreamEncryptor.swift | 56 + .../CryptoSwift/String+Extension.swift | 5 +- .../Sources/CryptoSwift/UInt128.swift | 90 + .../CryptoSwift/UInt16+Extension.swift | 1 - .../CryptoSwift/UInt32+Extension.swift | 7 +- .../CryptoSwift/UInt64+Extension.swift | 15 +- .../Sources/CryptoSwift/UInt8+Extension.swift | 8 +- .../Sources/CryptoSwift/Updatable.swift | 75 +- .../Sources/CryptoSwift/Utils.swift | 10 +- .../Sources/CryptoSwift/ZeroPadding.swift | 1 - .../Local Podspecs/SwiftFlyer.podspec.json | 8 +- Example/Pods/Manifest.lock | 41 +- Example/Pods/Nimble/README.md | 111 +- .../Nimble/Adapters/AdapterProtocols.swift | 1 + .../Nimble/Adapters/AssertionRecorder.swift | 37 +- .../Nimble/Adapters/NMBExpectation.swift | 12 +- .../Nimble/Adapters/NMBObjCMatcher.swift | 40 +- .../Nimble/Adapters/NimbleEnvironment.swift | 18 +- .../Nimble/Adapters/NimbleXCTestHandler.swift | 26 +- .../Pods/Nimble/Sources/Nimble/DSL+Wait.swift | 16 +- Example/Pods/Nimble/Sources/Nimble/DSL.swift | 18 +- .../Nimble/Sources/Nimble/Expectation.swift | 35 +- .../Sources/Nimble/ExpectationMessage.swift | 33 +- .../Nimble/Sources/Nimble/Expression.swift | 2 + .../Sources/Nimble/FailureMessage.swift | 1 + .../Sources/Nimble/Matchers/AllPass.swift | 9 +- ...{AsyncMatcherWrapper.swift => Async.swift} | 113 +- .../Sources/Nimble/Matchers/BeAKindOf.swift | 6 +- .../Nimble/Matchers/BeAnInstanceOf.swift | 8 +- .../Sources/Nimble/Matchers/BeCloseTo.swift | 29 +- .../Sources/Nimble/Matchers/BeEmpty.swift | 35 +- .../Nimble/Matchers/BeGreaterThan.swift | 16 +- .../Matchers/BeGreaterThanOrEqualTo.swift | 26 +- .../Nimble/Matchers/BeIdenticalTo.swift | 31 +- .../Sources/Nimble/Matchers/BeLessThan.swift | 26 +- .../Nimble/Matchers/BeLessThanOrEqual.swift | 25 +- .../Sources/Nimble/Matchers/BeLogical.swift | 47 +- .../Sources/Nimble/Matchers/BeNil.swift | 8 +- .../Sources/Nimble/Matchers/BeVoid.swift | 17 +- .../Sources/Nimble/Matchers/BeginWith.swift | 18 +- .../Sources/Nimble/Matchers/Contain.swift | 119 +- .../Matchers/ContainElementSatisfying.swift | 46 +- .../Nimble/Matchers/ElementsEqual.swift | 16 + .../Sources/Nimble/Matchers/EndWith.swift | 47 +- .../Sources/Nimble/Matchers/Equal.swift | 160 +- .../Sources/Nimble/Matchers/HaveCount.swift | 65 +- .../Sources/Nimble/Matchers/Match.swift | 17 +- .../Sources/Nimble/Matchers/MatchError.swift | 46 +- .../Nimble/Matchers/MatcherProtocols.swift | 17 +- .../Nimble/Matchers/PostNotification.swift | 43 +- .../Sources/Nimble/Matchers/Predicate.swift | 29 +- .../Nimble/Matchers/RaisesException.swift | 42 +- .../Nimble/Matchers/SatisfyAllOf.swift | 80 + .../Nimble/Matchers/SatisfyAnyOf.swift | 47 +- .../Nimble/Matchers/ThrowAssertion.swift | 35 +- .../Sources/Nimble/Matchers/ThrowError.swift | 84 +- .../Nimble/Utils/{Async.swift => Await.swift} | 34 +- .../Sources/Nimble/Utils/Functional.swift | 6 +- .../Sources/Nimble/Utils/Stringers.swift | 17 +- .../NimbleObjectiveC/CurrentTestCaseTracker.h | 9 - .../Nimble/Sources/NimbleObjectiveC/DSL.h | 6 + .../Nimble/Sources/NimbleObjectiveC/DSL.m | 17 +- .../NimbleObjectiveC/NMBExceptionCapture.m | 2 +- .../Sources/NimbleObjectiveC/NMBStringify.m | 5 + .../XCTestObservationCenter+Register.m | 7 +- Example/Pods/Pods.xcodeproj/project.pbxproj | 3434 +++++++++-------- Example/Pods/Quick/README.md | 4 +- .../Pods/Quick/Sources/Quick/Behavior.swift | 2 +- .../Pods/Quick/Sources/Quick/Callsite.swift | 29 +- .../Quick/Configuration/Configuration.swift | 4 +- .../Pods/Quick/Sources/Quick/DSL/DSL.swift | 20 +- .../Quick/Sources/Quick/DSL/World+DSL.swift | 35 +- .../Quick/Sources/Quick/ErrorUtility.swift | 2 +- .../Pods/Quick/Sources/Quick/Example.swift | 15 +- .../Quick/Sources/Quick/ExampleMetadata.swift | 12 +- Example/Pods/Quick/Sources/Quick/Filter.swift | 12 +- .../Quick/NSBundle+CurrentTestBundle.swift | 4 +- .../NSString+C99ExtendedIdentifier.swift | 33 - .../Quick/QuickSelectedTestSuiteBuilder.swift | 2 +- .../Quick/Sources/Quick/QuickTestSuite.swift | 2 +- .../Quick/String+C99ExtendedIdentifier.swift | 46 + Example/Pods/Quick/Sources/Quick/World.swift | 18 +- .../Configuration/QuickConfiguration.m | 7 +- .../Sources/QuickObjectiveC/DSL/QCKDSL.m | 8 +- .../Sources/QuickObjectiveC/DSL/World+DSL.h | 20 - .../Quick/Sources/QuickObjectiveC/QuickSpec.h | 6 + .../Quick/Sources/QuickObjectiveC/QuickSpec.m | 14 +- .../Quick/Sources/QuickObjectiveC/World.h | 18 - .../XCTestSuite+QuickTestSuiteBuilder.m | 5 + Example/Pods/Starscream/README.md | 12 +- .../{ => Starscream}/Compression.swift | 2 +- .../Starscream/SSLClientCertificate.swift | 92 + .../{ => Starscream}/SSLSecurity.swift | 10 +- .../Sources/{ => Starscream}/WebSocket.swift | 120 +- Example/Pods/Starscream/zlib/include.h | 2 - Example/Pods/Starscream/zlib/module.modulemap | 9 - .../CryptoSwift/CryptoSwift-Info.plist | 26 + .../CryptoSwift/CryptoSwift.xcconfig | 9 +- .../Nimble/Nimble-Info.plist | 26 + .../Nimble/Nimble.xcconfig | 6 +- .../Pods-SwiftFlyer_Example-Info.plist | 26 + ...-SwiftFlyer_Example-acknowledgements.plist | 2 +- .../Pods-SwiftFlyer_Example-frameworks.sh | 33 +- .../Pods-SwiftFlyer_Example.debug.xcconfig | 4 +- .../Pods-SwiftFlyer_Example.release.xcconfig | 4 +- .../Pods-SwiftFlyer_Tests-Info.plist | 26 + .../Pods-SwiftFlyer_Tests-frameworks.sh | 33 +- .../Pods-SwiftFlyer_Tests.debug.xcconfig | 8 +- .../Pods-SwiftFlyer_Tests.release.xcconfig | 8 +- .../Quick/Quick-Info.plist | 26 + .../Target Support Files/Quick/Quick.xcconfig | 8 +- .../Starscream/Starscream-Info.plist | 26 + .../Starscream/Starscream.xcconfig | 6 +- .../SwiftFlyer/SwiftFlyer-Info.plist | 26 + .../SwiftFlyer/SwiftFlyer.xcconfig | 3 +- Example/SwiftFlyer.xcodeproj/project.pbxproj | 51 +- .../xcshareddata/IDEWorkspaceChecks.plist | 8 + Example/SwiftFlyer/AppDelegate.swift | 2 +- SwiftFlyer.podspec | 4 +- .../Extensions/RequestableExtensions.swift | 2 +- 182 files changed, 5908 insertions(+), 3591 deletions(-) create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEAD.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift delete mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extensions.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockEncryptor.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CCM.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CipherModeWorker.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/CBCMAC.swift rename Example/Pods/CryptoSwift/Sources/CryptoSwift/{BlockMode/RandomAccessBlockModeWorker.swift => CMAC.swift} (85%) rename Example/Pods/CryptoSwift/Sources/CryptoSwift/{BlockMode/BlockModeWorker.swift => CompactMap.swift} (68%) rename Example/Pods/CryptoSwift/Sources/CryptoSwift/{RandomAccessCryptor.swift => Cryptor.swift} (85%) create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/Scrypt.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamDecryptor.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamEncryptor.swift create mode 100644 Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt128.swift rename Example/Pods/Nimble/Sources/Nimble/Matchers/{AsyncMatcherWrapper.swift => Async.swift} (63%) create mode 100644 Example/Pods/Nimble/Sources/Nimble/Matchers/ElementsEqual.swift create mode 100644 Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAllOf.swift rename Example/Pods/Nimble/Sources/Nimble/Utils/{Async.swift => Await.swift} (94%) delete mode 100644 Example/Pods/Nimble/Sources/NimbleObjectiveC/CurrentTestCaseTracker.h delete mode 100644 Example/Pods/Quick/Sources/Quick/NSString+C99ExtendedIdentifier.swift create mode 100644 Example/Pods/Quick/Sources/Quick/String+C99ExtendedIdentifier.swift delete mode 100644 Example/Pods/Quick/Sources/QuickObjectiveC/DSL/World+DSL.h delete mode 100644 Example/Pods/Quick/Sources/QuickObjectiveC/World.h rename Example/Pods/Starscream/Sources/{ => Starscream}/Compression.swift (99%) create mode 100644 Example/Pods/Starscream/Sources/Starscream/SSLClientCertificate.swift rename Example/Pods/Starscream/Sources/{ => Starscream}/SSLSecurity.swift (96%) rename Example/Pods/Starscream/Sources/{ => Starscream}/WebSocket.swift (92%) delete mode 100644 Example/Pods/Starscream/zlib/include.h delete mode 100644 Example/Pods/Starscream/zlib/module.modulemap create mode 100644 Example/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist create mode 100644 Example/Pods/Target Support Files/Nimble/Nimble-Info.plist create mode 100644 Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-Info.plist create mode 100644 Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-Info.plist create mode 100644 Example/Pods/Target Support Files/Quick/Quick-Info.plist create mode 100644 Example/Pods/Target Support Files/Starscream/Starscream-Info.plist create mode 100644 Example/Pods/Target Support Files/SwiftFlyer/SwiftFlyer-Info.plist create mode 100644 Example/SwiftFlyer.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Example/Podfile b/Example/Podfile index 7495327..b01e36b 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -6,7 +6,7 @@ target 'SwiftFlyer_Example' do target 'SwiftFlyer_Tests' do inherit! :search_paths - pod 'Quick', '~> 1.2.0' - pod 'Nimble', '~> 7.0.2' + pod 'Quick', '~> 2.1.0' + pod 'Nimble', '~> 8.0.1' end end diff --git a/Example/Podfile.lock b/Example/Podfile.lock index be55512..a64d13c 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,28 +1,35 @@ PODS: - - CryptoSwift (0.8.3) - - Nimble (7.0.3) - - Quick (1.2.0) - - Starscream (3.0.5) - - SwiftFlyer (0.2.1): - - CryptoSwift (~> 0.8.3) - - Starscream (~> 3.0.5) + - CryptoSwift (1.0.0) + - Nimble (8.0.1) + - Quick (2.1.0) + - Starscream (3.1.0) + - SwiftFlyer (0.2.2): + - CryptoSwift (~> 1.0.0) + - Starscream (~> 3.1.0) DEPENDENCIES: - - Nimble (~> 7.0.2) - - Quick (~> 1.2.0) + - Nimble (~> 8.0.1) + - Quick (~> 2.1.0) - SwiftFlyer (from `../`) +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - CryptoSwift + - Nimble + - Quick + - Starscream + EXTERNAL SOURCES: SwiftFlyer: - :path: ../ + :path: "../" SPEC CHECKSUMS: - CryptoSwift: 033efc3523865d19cc6ab6612fa17a62613b5dfa - Nimble: 7f5a9c447a33002645a071bddafbfb24ea70e0ac - Quick: 58d203b1c5e27fff7229c4c1ae445ad7069a7a08 - Starscream: faf918b2f2eff7d5dd21180646bf015a669673bd - SwiftFlyer: d0489dd470b4f30eacec1986e2f4898f5eaa00e8 + CryptoSwift: d81eeaa59dc5a8d03720fe919a6fd07b51f7439f + Nimble: 45f786ae66faa9a709624227fae502db55a8bdd0 + Quick: 4be43f6634acfa727dd106bdf3929ce125ffa79d + Starscream: 08172b481e145289c4930cb567230fb55897cfa4 + SwiftFlyer: b3cafbb99c1c6f85e70c9c7e151dc5abf82c1930 -PODFILE CHECKSUM: 0e2e09933c4a5d391753b4d68ab707c15f8357d7 +PODFILE CHECKSUM: 51db0d67ea0f7430370160be49ec1abad8580887 -COCOAPODS: 1.4.0 +COCOAPODS: 1.6.0 diff --git a/Example/Pods/CryptoSwift/README.md b/Example/Pods/CryptoSwift/README.md index 3c0e6f9..a239407 100644 --- a/Example/Pods/CryptoSwift/README.md +++ b/Example/Pods/CryptoSwift/README.md @@ -1,24 +1,33 @@ -[![Platform](https://img.shields.io/badge/Platforms-iOS%20%7C%20macOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-4E4E4E.svg?colorA=28a745)](#installation) -[![Swift support](https://img.shields.io/badge/Swift-3.1%20%7C%203.2%20%7C%204.0-lightgrey.svg?colorA=28a745&colorB=4E4E4E)](#swift-versions-support) -[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/CryptoSwift.svg?style=flat&label=CocoaPods)](https://cocoapods.org/pods/CryptoSwift) -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg?style=flat&colorB=64A5DE)](https://github.com/apple/swift-package-manager) -[![Swift Package Manager compatible](https://img.shields.io/badge/SPM-compatible-brightgreen.svg?style=flat&colorB=64A5DE)](https://github.com/apple/swift-package-manager) -[![Twitter](https://img.shields.io/badge/twitter-@krzyzanowskim-blue.svg?style=flat&colorB=64A5DE&label=Twitter)](http://twitter.com/krzyzanowskim) +[![Platform](https://img.shields.io/badge/Platforms-iOS%20%7C%20Android%20%7CmacOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-4E4E4E.svg?colorA=28a745)](#installation) + +[![Swift support](https://img.shields.io/badge/Swift-3.1%20%7C%203.2%20%7C%204.0%20%7C%204.1%20%7C%204.2%20%7C%205.0-lightgrey.svg?colorA=28a745&colorB=4E4E4E)](#swift-versions-support) +[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/CryptoSwift.svg?style=flat&label=CocoaPods&colorA=28a745&&colorB=4E4E4E)](https://cocoapods.org/pods/CryptoSwift) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg?style=flat&colorA=28a745&&colorB=4E4E4E)](https://github.com/Carthage/Carthage) +[![Swift Package Manager compatible](https://img.shields.io/badge/SPM-compatible-brightgreen.svg?style=flat&colorA=28a745&&colorB=4E4E4E)](https://github.com/apple/swift-package-manager) + +[![Twitter](https://img.shields.io/badge/Twitter-@krzyzanowskim-blue.svg?style=flat)](http://twitter.com/krzyzanowskim) # CryptoSwift -Crypto related functions and helpers for [Swift](https://swift.org) implemented in Swift. ([#PureSwift](https://twitter.com/hashtag/pureswift)) +Crypto related functions and helpers for [Swift](https://swift.org) implemented in Swift. ([#PureSwift](https://twitter.com/hashtag/pureswift)) + +**Note**: The `master` branch follows the latest currently released **version of Swift**. If you need an earlier version for an older version of Swift, you can specify its version in your Podfile or use the code on the branch for that version. Older branches are unsupported. Check [versions](#swift-versions-support) for details. + +--- -# Table of Contents -- [Requirements](#requirements) -- [Features](#features) -- [Contribution](#contribution) -- [Installation](#installation) -- [Swift versions](#swift-versions-support) -- [Usage](#usage) -- [Author](#author) -- [License](#license) -- [Changelog](#changelog) +If you find the project useful, please [support authors](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=92Z6U3LBHF9J4) to keep it alive. + +--- + +[Requirements](#requirements) +| [Features](#features) +| [Contribution](#contribution) +| [Installation](#installation) +| [Swift versions](#swift-versions-support) +| [How-to](#how-to) +| [Author](#author) +| [License](#license) +| [Changelog](#changelog) ## Requirements Good mood @@ -28,61 +37,70 @@ Good mood - Easy to use - Convenient extensions for String and Data - Support for incremental updates (stream, ...) -- iOS, macOS, AppleTV, watchOS, Linux support - -## Donation -[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=92Z6U3LBHF9J4) to make the CryptoSwift awesome! Thank you. +- iOS, Android, macOS, AppleTV, watchOS, Linux support #### Hash (Digest) -- [MD5](http://tools.ietf.org/html/rfc1321) -- [SHA1](http://tools.ietf.org/html/rfc3174) -- [SHA224](http://tools.ietf.org/html/rfc6234) -- [SHA256](http://tools.ietf.org/html/rfc6234) -- [SHA384](http://tools.ietf.org/html/rfc6234) -- [SHA512](http://tools.ietf.org/html/rfc6234) -- [SHA3](http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) + [MD5](http://tools.ietf.org/html/rfc1321) +| [SHA1](http://tools.ietf.org/html/rfc3174) +| [SHA224](http://tools.ietf.org/html/rfc6234) +| [SHA256](http://tools.ietf.org/html/rfc6234) +| [SHA384](http://tools.ietf.org/html/rfc6234) +| [SHA512](http://tools.ietf.org/html/rfc6234) +| [SHA3](http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) #### Cyclic Redundancy Check (CRC) -- [CRC32](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) -- [CRC16](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) + [CRC32](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) +| [CRC32C](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) +| [CRC16](http://en.wikipedia.org/wiki/Cyclic_redundancy_check) #### Cipher -- [AES-128, AES-192, AES-256](http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf) -- [ChaCha20](http://cr.yp.to/chacha/chacha-20080128.pdf) -- [Rabbit](https://tools.ietf.org/html/rfc4503) -- [Blowfish](https://www.schneier.com/academic/blowfish/) + [AES-128, AES-192, AES-256](http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf) +| [ChaCha20](http://cr.yp.to/chacha/chacha-20080128.pdf) +| [Rabbit](https://tools.ietf.org/html/rfc4503) +| [Blowfish](https://www.schneier.com/academic/blowfish/) #### Message authenticators -- [Poly1305](http://cr.yp.to/mac/poly1305-20050329.pdf) -- [HMAC](https://www.ietf.org/rfc/rfc2104.txt) MD5, SHA1, SHA256 + [Poly1305](http://cr.yp.to/mac/poly1305-20050329.pdf) +| [HMAC (MD5, SHA1, SHA256)](https://www.ietf.org/rfc/rfc2104.txt) +| [CMAC](https://tools.ietf.org/html/rfc4493) +| [CBC-MAC](https://en.wikipedia.org/wiki/CBC-MAC) -#### Cipher block mode +#### Cipher mode of operation - Electronic codebook ([ECB](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_codebook_.28ECB.29)) - Cipher-block chaining ([CBC](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher-block_chaining_.28CBC.29)) - Propagating Cipher Block Chaining ([PCBC](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Propagating_Cipher_Block_Chaining_.28PCBC.29)) - Cipher feedback ([CFB](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_feedback_.28CFB.29)) - Output Feedback ([OFB](http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Output_Feedback_.28OFB.29)) -- Counter ([CTR](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_.28CTR.29)) +- Counter Mode ([CTR](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_.28CTR.29)) +- Galois/Counter Mode ([GCM](https://csrc.nist.gov/publications/detail/sp/800-38d/final)) +- Counter with Cipher Block Chaining-Message Authentication Code ([CCM](https://csrc.nist.gov/publications/detail/sp/800-38c/final)) #### Password-Based Key Derivation Function - [PBKDF1](http://tools.ietf.org/html/rfc2898#section-5.1) (Password-Based Key Derivation Function 1) - [PBKDF2](http://tools.ietf.org/html/rfc2898#section-5.2) (Password-Based Key Derivation Function 2) - [HKDF](https://tools.ietf.org/html/rfc5869) (HMAC-based Extract-and-Expand Key Derivation Function) +- [Scrypt](https://tools.ietf.org/html/rfc7914) (The scrypt Password-Based Key Derivation Function) #### Data padding -- PKCS#5 -- [PKCS#7](http://tools.ietf.org/html/rfc5652#section-6.3) -- [Zero padding](https://en.wikipedia.org/wiki/Padding_(cryptography)#Zero_padding) -- No padding + PKCS#5 +| [PKCS#7](http://tools.ietf.org/html/rfc5652#section-6.3) +| [Zero padding](https://en.wikipedia.org/wiki/Padding_(cryptography)#Zero_padding) +| No padding + +#### Authenticated Encryption with Associated Data (AEAD) +- [AEAD\_CHACHA20\_POLY1305](https://tools.ietf.org/html/rfc7539#section-2.8) ## Why [Why?](https://github.com/krzyzanowskim/CryptoSwift/issues/5) [Because I can](https://github.com/krzyzanowskim/CryptoSwift/issues/5#issuecomment-53379391). +## How do I get involved? + +You want to help, great! Go ahead and fork our repo, make your changes and send us a pull request. + ## Contribution -For the latest version, please check [develop](https://github.com/krzyzanowskim/CryptoSwift/tree/develop) branch. Changes from this branch will be merged into the [master](https://github.com/krzyzanowskim/CryptoSwift/tree/master) branch at some point. +Check out [CONTRIBUTING.md](CONTRIBUTING.md) for more information on how to help with CryptoSwift. -- If you want to contribute, submit a [pull request](https://github.com/krzyzanowskim/CryptoSwift/pulls) against a development `develop` branch. - If you found a bug, [open an issue](https://github.com/krzyzanowskim/CryptoSwift/issues). - If you have a feature request, [open an issue](https://github.com/krzyzanowskim/CryptoSwift/issues). @@ -116,14 +134,16 @@ In the project, you'll find [single scheme](http://promisekit.org/news/2016/08/M - Swift 2.2, 2.3: branch [swift2](https://github.com/krzyzanowskim/CryptoSwift/tree/swift2) version <= 0.5.2 - Swift 3.1, branch [swift3](https://github.com/krzyzanowskim/CryptoSwift/tree/swift3) version <= 0.6.9 - Swift 3.2, branch [swift32](https://github.com/krzyzanowskim/CryptoSwift/tree/swift32) version = 0.7.0 -- Swift 4.0, branch [master](https://github.com/krzyzanowskim/CryptoSwift/tree/master) version >= 0.7.1 +- Swift 4.0, branch [swift4](https://github.com/krzyzanowskim/CryptoSwift/tree/swift4) version <= 0.12.0 +- Swift 4.2, branch [swift42](https://github.com/krzyzanowskim/CryptoSwift/tree/swift42) version <= 0.15.0 +- Swift 5.0, branch [master](https://github.com/krzyzanowskim/CryptoSwift/tree/master) #### CocoaPods You can use [CocoaPods](http://cocoapods.org/?q=cryptoSwift). ```ruby -platform :ios, '8.0' +platform :ios, '10.0' use_frameworks! target 'MyApp' do @@ -137,7 +157,7 @@ or for newest version from specified branch of code: pod 'CryptoSwift', :git => "https://github.com/krzyzanowskim/CryptoSwift", :branch => "master" ``` -Bear in mind that CocoaPods will build CryptoSwift without [Whole-Module Optimization](https://swift.org/blog/whole-module-optimizations/) that my impact performance. You can change it manually after installation, or use [cocoapods-wholemodule](https://github.com/jedlewison/cocoapods-wholemodule) plugin. +Bear in mind that CocoaPods will build CryptoSwift without [Whole-Module Optimization](https://swift.org/blog/whole-module-optimizations/) that may impact performance. You can change it manually after installation, or use [cocoapods-wholemodule](https://github.com/jedlewison/cocoapods-wholemodule) plugin. #### Carthage You can use [Carthage](https://github.com/Carthage/Carthage). @@ -155,7 +175,7 @@ You can use [Swift Package Manager](https://swift.org/package-manager/) and spec ```swift dependencies: [ - .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .upToNextMinor(from: "0.8.0")) + .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .upToNextMinor(from: "1.0.0")) ] ``` @@ -163,25 +183,28 @@ or more strict ```swift dependencies: [ - .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .exact("0.8.0")) + .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .exact("1.0.0")) ] ``` See: [Package.swift - manual](http://blog.krzyzanowskim.com/2016/08/09/package-swift-manual/) + +--- -## Usage +## How-to * [Basics (data types, conversion, ...)](#basics) * [Digest (MD5, SHA...)](#calculate-digest) -* [Message authenticators (HMAC...)](#message-authenticators-1) +* [Message authenticators (HMAC, CMAC...)](#message-authenticators-1) * [Password-Based Key Derivation Function (PBKDF2, ...)](#password-based-key-derivation-functions) * [HMAC-based Key Derivation Function (HKDF)](#hmac-based-key-derivation-function) * [Data Padding](#data-padding) * [ChaCha20](#chacha20) * [Rabbit](#rabbit) * [Blowfish](#blowfish) -* [Advanced Encryption Standard (AES)](#aes) - +* [AES - Advanced Encryption Standard](#aes) +* [AES-GCM](#aes-gcm) +* [Authenticated Encryption with Associated Data (AEAD)](#aead) also check [Playground](/CryptoSwift.playground/Contents.swift) @@ -195,12 +218,12 @@ CryptoSwift uses array of bytes aka `Array` as a base type for all operat ##### Data types conversion -For you convenience **CryptoSwift** provides two functions to easily convert array of bytes to `Data` and another way around: +For your convenience, **CryptoSwift** provides two functions to easily convert an array of bytes to `Data` or `Data` to an array of bytes: Data from bytes: ```swift -let data = Data(bytes: [0x01, 0x02, 0x03]) +let data = Data( [0x01, 0x02, 0x03]) ``` `Data` to `Array` @@ -218,7 +241,7 @@ let hex = bytes.toHexString() // "010203" Build bytes out of `String` ```swift -let bytes: Array = "password".bytes // Array("password".utf8) +let bytes: Array = "cipherkey".bytes // Array("cipherkey".utf8) ``` Also... check out helpers that work with **Base64** encoded data: @@ -239,7 +262,7 @@ let digest = Digest.md5(bytes) ``` ```swift -let data = Data(bytes: [0x01, 0x02, 0x03]) +let data = Data( [0x01, 0x02, 0x03]) let hash = data.md5() let hash = data.sha1() @@ -281,6 +304,7 @@ let key:Array = [1,2,3,4,5,6,7,8,9,10,...] try Poly1305(key: key).authenticate(bytes) try HMAC(key: key, variant: .sha256).authenticate(bytes) +try CMAC(key: key).authenticate(bytes) ``` ##### Password-Based Key Derivation Functions @@ -289,7 +313,15 @@ try HMAC(key: key, variant: .sha256).authenticate(bytes) let password: Array = Array("s33krit".utf8) let salt: Array = Array("nacllcan".utf8) -try PKCS5.PBKDF2(password: password, salt: salt, iterations: 4096, variant: .sha256).calculate() +let key = try PKCS5.PBKDF2(password: password, salt: salt, iterations: 4096, variant: .sha256).calculate() +``` + +```swift +let password: Array = Array("s33krit".utf8) +let salt: Array = Array("nacllcan".utf8) +// Scrypt implementation does not implement work parallelization, so `p` parameter will +// increase the work time even in multicore systems +let key = try Scrypt(password: password, salt: salt, dkLen: 64, N: 16384, r: 8, p: 1).calculate() ``` ##### HMAC-based Key Derivation Function @@ -298,9 +330,10 @@ try PKCS5.PBKDF2(password: password, salt: salt, iterations: 4096, variant: .sha let password: Array = Array("s33krit".utf8) let salt: Array = Array("nacllcan".utf8) -try HKDF(password: password, salt: salt, variant: .sha256).calculate() +let key = try HKDF(password: password, salt: salt, variant: .sha256).calculate() ``` + ##### Data Padding Some content-encryption algorithms assume the input length is a multiple of `k` octets, where `k` is greater than one. For such algorithms, the input shall be padded. @@ -326,13 +359,13 @@ let decrypted = try Rabbit(key: key, iv: iv).decrypt(encrypted) ##### Blowfish ```swift -let encrypted = try Blowfish(key: key, blockMode: .CBC(iv: iv), padding: .pkcs7).encrypt(message) -let decrypted = try Blowfish(key: key, blockMode: .CBC(iv: iv), padding: .pkcs7).decrypt(encrypted) +let encrypted = try Blowfish(key: key, blockMode: CBC(iv: iv), padding: .pkcs7).encrypt(message) +let decrypted = try Blowfish(key: key, blockMode: CBC(iv: iv), padding: .pkcs7).decrypt(encrypted) ``` ##### AES -Notice regarding padding: *Manual padding of data is optional, and CryptoSwift is using PKCS7 padding by default. If you need manually disable/enable padding, you can do this by setting parameter for __AES__ class* +Notice regarding padding: *Manual padding of data is optional, and CryptoSwift is using PKCS7 padding by default. If you need to manually disable/enable padding, you can do this by setting parameter for __AES__ class* Variant of AES encryption (AES-128, AES-192, AES-256) depends on given key length: @@ -342,13 +375,13 @@ Variant of AES encryption (AES-128, AES-192, AES-256) depends on given key lengt AES-256 example ```swift -try AES(key: [1,2,3,...,32], blockMode: .CBC(iv: [1,2,3,...,16]), padding: .pkcs7) +try AES(key: [1,2,3,...,32], blockMode: CBC(iv: [1,2,3,...,16]), padding: .pkcs7) ``` - + ###### All at once ```swift do { - let aes = try AES(key: "passwordpassword", iv: "drowssapdrowssap") // aes128 + let aes = try AES(key: "keykeykeykeykeyk", iv: "drowssapdrowssap") // aes128 let ciphertext = try aes.encrypt(Array("Nullam quis risus eget urna mollis ornare vel eu leo.".utf8)) } catch { } ``` @@ -359,7 +392,7 @@ Incremental operations use instance of Cryptor and encrypt/decrypt one part at a ```swift do { - var encryptor = try AES(key: "passwordpassword", iv: "drowssapdrowssap").makeEncryptor() + var encryptor = try AES(key: "keykeykeykeykeyk", iv: "drowssapdrowssap").makeEncryptor() var ciphertext = Array() // aggregate partial results @@ -385,8 +418,8 @@ let key: Array = [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, let iv: Array = AES.randomIV(AES.blockSize) do { - let encrypted = try AES(key: key, blockMode: .CBC(iv: iv), padding: .pkcs7).encrypt(input) - let decrypted = try AES(key: key, blockMode: .CBC(iv: iv), padding: .pkcs7).decrypt(encrypted) + let encrypted = try AES(key: key, blockMode: CBC(iv: iv), padding: .pkcs7).encrypt(input) + let decrypted = try AES(key: key, blockMode: CBC(iv: iv), padding: .pkcs7).decrypt(encrypted) } catch { print(error) } @@ -396,23 +429,85 @@ AES without data padding ```swift let input: Array = [0,1,2,3,4,5,6,7,8,9] -let encrypted: Array = try! AES(key: Array("secret0key000000".utf8), blockMode: .CBC(iv: Array("0123456789012345".utf8)), padding: .noPadding).encrypt(input) +let encrypted: Array = try! AES(key: Array("secret0key000000".utf8), blockMode: CBC(iv: Array("0123456789012345".utf8)), padding: .noPadding).encrypt(input) ``` Using convenience extensions ```swift -let plain = Data(bytes: [0x01, 0x02, 0x03]) +let plain = Data( [0x01, 0x02, 0x03]) let encrypted = try! plain.encrypt(ChaCha20(key: key, iv: iv)) let decrypted = try! encrypted.decrypt(ChaCha20(key: key, iv: iv)) ``` +##### AES-GCM + +The result of Galois/Counter Mode (GCM) encryption is ciphertext and **authentication tag**, that is later used to decryption. + +encryption + +```swift +do { + // In combined mode, the authentication tag is directly appended to the encrypted message. This is usually what you want. + let gcm = GCM(iv: iv, mode: .combined) + let aes = try AES(key: key, blockMode: gcm, padding: .noPadding) + let encrypted = try aes.encrypt(plaintext) + let tag = gcm.authenticationTag +catch { + // failed +} +``` + +decryption + +```swift +do { + // In combined mode, the authentication tag is appended to the encrypted message. This is usually what you want. + let gcm = GCM(iv: iv, mode: .combined) + let aes = try AES(key: key, blockMode: gcm, padding: .noPadding) + return try aes.decrypt(encrypted) +} catch { + // failed +} +``` + +**Note**: GCM instance is not intended to be reused. So you can't use the same `GCM` instance from encoding to also perform decoding. + +##### AES-CCM + +The result of Counter with Cipher Block Chaining-Message Authentication Code encryption is ciphertext and **authentication tag**, that is later used to decryption. + +```swift +do { + // The authentication tag is appended to the encrypted message. + let tagLength = 8 + let ccm = CCM(iv: iv, tagLength: tagLength, messageLength: ciphertext.count - tagLength, additionalAuthenticatedData: data) + let aes = try AES(key: key, blockMode: ccm, padding: .noPadding) + return try aes.decrypt(encrypted) +} catch { + // failed +} +``` + +Check documentation or CCM specification for valid parameters for CCM. + +##### AEAD + +```swift +let encrypt = try AEADChaCha20Poly1305.encrypt(plaintext, key: key, iv: nonce, authenticationHeader: header) +let decrypt = try AEADChaCha20Poly1305.decrypt(ciphertext, key: key, iv: nonce, authenticationHeader: header, authenticationTag: tagArr: tag) +``` + ## Author CryptoSwift is owned and maintained by [Marcin Krzyżanowski](http://www.krzyzanowskim.com) You can follow me on Twitter at [@krzyzanowskim](http://twitter.com/krzyzanowskim) for project updates and releases. +# Cryptography Notice + +This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information. + ## License Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEAD.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEAD.swift new file mode 100644 index 0000000..67179c5 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEAD.swift @@ -0,0 +1,40 @@ +// +// AEAD.swift +// CryptoSwift +// +// Copyright (C) 2014-2017 Marcin Krzyżanowski +// 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: +// +// - 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 is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// +// + +// https://www.iana.org/assignments/aead-parameters/aead-parameters.xhtml + +/// Authenticated Encryption with Associated Data (AEAD) +public protocol AEAD { + static var kLen: Int { get } // key length + static var ivRange: Range { get } // nonce length +} + +extension AEAD { + static func calculateAuthenticationTag(authenticator: Authenticator, cipherText: Array, authenticationHeader: Array) throws -> Array { + let headerPadding = ((16 - (authenticationHeader.count & 0xf)) & 0xf) + let cipherPadding = ((16 - (cipherText.count & 0xf)) & 0xf) + + var mac = authenticationHeader + mac += Array(repeating: 0, count: headerPadding) + mac += cipherText + mac += Array(repeating: 0, count: cipherPadding) + mac += UInt64(bigEndian: UInt64(authenticationHeader.count)).bytes() + mac += UInt64(bigEndian: UInt64(cipherText.count)).bytes() + + return try authenticator.authenticate(mac) + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift new file mode 100644 index 0000000..791f9a4 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift @@ -0,0 +1,59 @@ +// +// ChaCha20Poly1305.swift +// CryptoSwift +// +// Copyright (C) 2014-2017 Marcin Krzyżanowski +// 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: +// +// - 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 is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// +// +// https://tools.ietf.org/html/rfc7539#section-2.8.1 + +/// AEAD_CHACHA20_POLY1305 +public final class AEADChaCha20Poly1305: AEAD { + public static let kLen = 32 // key length + public static var ivRange = Range(12...12) + + /// Authenticated encryption + public static func encrypt(_ plainText: Array, key: Array, iv: Array, authenticationHeader: Array) throws -> (cipherText: Array, authenticationTag: Array) { + let cipher = try ChaCha20(key: key, iv: iv) + + var polykey = Array(repeating: 0, count: kLen) + var toEncrypt = polykey + polykey = try cipher.encrypt(polykey) + toEncrypt += polykey + toEncrypt += plainText + + let fullCipherText = try cipher.encrypt(toEncrypt) + let cipherText = Array(fullCipherText.dropFirst(64)) + + let tag = try calculateAuthenticationTag(authenticator: Poly1305(key: polykey), cipherText: cipherText, authenticationHeader: authenticationHeader) + return (cipherText, tag) + } + + /// Authenticated decryption + public static func decrypt(_ cipherText: Array, key: Array, iv: Array, authenticationHeader: Array, authenticationTag: Array) throws -> (plainText: Array, success: Bool) { + let chacha = try ChaCha20(key: key, iv: iv) + + let polykey = try chacha.encrypt(Array(repeating: 0, count: kLen)) + let mac = try calculateAuthenticationTag(authenticator: Poly1305(key: polykey), cipherText: cipherText, authenticationHeader: authenticationHeader) + guard mac == authenticationTag else { + return (cipherText, false) + } + + var toDecrypt = Array(reserveCapacity: cipherText.count + 64) + toDecrypt += polykey + toDecrypt += polykey + toDecrypt += cipherText + let fullPlainText = try chacha.decrypt(toDecrypt) + let plainText = Array(fullPlainText.dropFirst(64)) + return (plainText, true) + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift index 5e21df9..a461cd6 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift @@ -14,128 +14,22 @@ // // MARK: Cryptors -extension AES: Cryptors { - public func makeEncryptor() throws -> AES.Encryptor { - return try AES.Encryptor(aes: self) - } - - public func makeDecryptor() throws -> AES.Decryptor { - return try AES.Decryptor(aes: self) - } -} - -// MARK: Encryptor -extension AES { - public struct Encryptor: Updatable { - private var worker: BlockModeWorker - private let padding: Padding - private var accumulated = Array() - private var processedBytesTotalCount: Int = 0 - private let paddingRequired: Bool - - init(aes: AES) throws { - padding = aes.padding - worker = try aes.blockMode.worker(blockSize: AES.blockSize, cipherOperation: aes.encrypt) - paddingRequired = aes.blockMode.options.contains(.paddingRequired) - } - public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { - accumulated += bytes - - if isLast { - accumulated = padding.add(to: accumulated, blockSize: AES.blockSize) - } - - var processedBytes = 0 - var encrypted = Array(reserveCapacity: accumulated.count) - for chunk in accumulated.batched(by: AES.blockSize) { - if isLast || (accumulated.count - processedBytes) >= AES.blockSize { - encrypted += worker.encrypt(chunk) - processedBytes += chunk.count - } - } - accumulated.removeFirst(processedBytes) - processedBytesTotalCount += processedBytes - return encrypted +extension AES: Cryptors { + public func makeEncryptor() throws -> Cryptor & Updatable { + let worker = try blockMode.worker(blockSize: AES.blockSize, cipherOperation: encrypt) + if worker is StreamModeWorker { + return try StreamEncryptor(blockSize: AES.blockSize, padding: padding, worker) } + return try BlockEncryptor(blockSize: AES.blockSize, padding: padding, worker) } -} - -// MARK: Decryptor -extension AES { - - public struct Decryptor: RandomAccessCryptor { - private var worker: BlockModeWorker - private let padding: Padding - private var accumulated = Array() - private var processedBytesTotalCount: Int = 0 - private let paddingRequired: Bool - - private var offset: Int = 0 - private var offsetToRemove: Int = 0 - - init(aes: AES) throws { - padding = aes.padding - - switch aes.blockMode { - case .CFB, .OFB, .CTR: - // CFB, OFB, CTR uses encryptBlock to decrypt - worker = try aes.blockMode.worker(blockSize: AES.blockSize, cipherOperation: aes.encrypt) - default: - worker = try aes.blockMode.worker(blockSize: AES.blockSize, cipherOperation: aes.decrypt) - } - - paddingRequired = aes.blockMode.options.contains(.paddingRequired) - } - - public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { - // prepend "offset" number of bytes at the beginning - if offset > 0 { - accumulated += Array(repeating: 0, count: offset) + bytes - offsetToRemove = offset - offset = 0 - } else { - accumulated += bytes - } - - var processedBytes = 0 - var plaintext = Array(reserveCapacity: accumulated.count) - for chunk in accumulated.batched(by: AES.blockSize) { - if isLast || (accumulated.count - processedBytes) >= AES.blockSize { - plaintext += worker.decrypt(chunk) - - // remove "offset" from the beginning of first chunk - if offsetToRemove > 0 { - plaintext.removeFirst(offsetToRemove) - offsetToRemove = 0 - } - - processedBytes += chunk.count - } - } - accumulated.removeFirst(processedBytes) - processedBytesTotalCount += processedBytes - - if isLast { - plaintext = padding.remove(from: plaintext, blockSize: AES.blockSize) - } - - return plaintext - } - - @discardableResult public mutating func seek(to position: Int) -> Bool { - guard var worker = self.worker as? RandomAccessBlockModeWorker else { - return false - } - - worker.counter = UInt(position / AES.blockSize) - self.worker = worker - - offset = position % AES.blockSize - - accumulated = [] - return true + public func makeDecryptor() throws -> Cryptor & Updatable { + let cipherOperation: CipherOperationOnBlock = blockMode.options.contains(.useEncryptToDecrypt) == true ? encrypt : decrypt + let worker = try blockMode.worker(blockSize: AES.blockSize, cipherOperation: cipherOperation) + if worker is StreamModeWorker { + return try StreamDecryptor(blockSize: AES.blockSize, padding: padding, worker) } + return try BlockDecryptor(blockSize: AES.blockSize, padding: padding, worker) } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift index e044add..631b7d5 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift @@ -18,8 +18,9 @@ /// The Advanced Encryption Standard (AES) public final class AES: BlockCipher { - public enum Error: Swift.Error { + /// Invalid key + case invalidKeySize /// Data padding is required case dataPaddingRequired /// Invalid Data @@ -42,24 +43,15 @@ public final class AES: BlockCipher { } } - private lazy var variantNr: Int = self.variant.Nr - private lazy var variantNb: Int = self.variant.Nb - private lazy var variantNk: Int = self.variant.Nk + private let variantNr: Int + private let variantNb: Int + private let variantNk: Int public static let blockSize: Int = 16 // 128 /8 + public let keySize: Int - public var variant: Variant { - switch key.count * 8 { - case 128: - return .aes128 - case 192: - return .aes192 - case 256: - return .aes256 - default: - preconditionFailure("Unknown AES variant for given key.") - } - } + /// AES Variant + public let variant: Variant // Parameters let key: Key @@ -124,6 +116,23 @@ public final class AES: BlockCipher { self.key = Key(bytes: key) self.blockMode = blockMode self.padding = padding + self.keySize = self.key.count + + // Validate key size + switch keySize * 8 { + case 128: + variant = .aes128 + case 192: + variant = .aes192 + case 256: + variant = .aes256 + default: + throw Error.invalidKeySize + } + + variantNb = variant.Nb + variantNk = variant.Nk + variantNr = variant.Nr } internal func encrypt(block: ArraySlice) -> Array? { @@ -160,10 +169,10 @@ public final class AES: BlockCipher { let tLength = 4 let t = UnsafeMutablePointer.allocate(capacity: tLength) - t.initialize(to: 0, count: tLength) + t.initialize(repeating: 0, count: tLength) defer { t.deinitialize(count: tLength) - t.deallocate(capacity: tLength) + t.deallocate() } for r in 0...allocate(capacity: tLength) - t.initialize(to: 0, count: tLength) + t.initialize(repeating: 0, count: tLength) defer { t.deinitialize(count: tLength) - t.deallocate(capacity: tLength) + t.deallocate() } for r in (2...rounds).reversed() { @@ -354,9 +363,8 @@ private extension AES { } private func expandKey(_ key: Key, variant _: Variant) -> Array> { - func convertExpandedKey(_ expanded: Array) -> Array> { - return expanded.batched(by: 4).map({ UInt32(bytes: $0.reversed()) }).batched(by: 4).map({ Array($0) }) + return expanded.batched(by: 4).map({ UInt32(bytes: $0.reversed()) }).batched(by: 4).map { Array($0) } } /* @@ -385,10 +393,10 @@ private extension AES { let wLength = variantNb * (variantNr + 1) * 4 let w = UnsafeMutablePointer.allocate(capacity: wLength) - w.initialize(to: 0, count: wLength) + w.initialize(repeating: 0, count: wLength) defer { w.deinitialize(count: wLength) - w.deallocate(capacity: wLength) + w.deallocate() } for i in 0...allocate(capacity: sboxLength) let invsbox = UnsafeMutablePointer.allocate(capacity: sboxLength) - sbox.initialize(to: 0, count: sboxLength) - invsbox.initialize(to: 0, count: sboxLength) + sbox.initialize(repeating: 0, count: sboxLength) + invsbox.initialize(repeating: 0, count: sboxLength) defer { sbox.deinitialize(count: sboxLength) - sbox.deallocate(capacity: sboxLength) + sbox.deallocate() invsbox.deinitialize(count: sboxLength) - invsbox.deallocate(capacity: sboxLength) + invsbox.deallocate() } sbox[0] = 0x63 @@ -485,8 +493,8 @@ private extension AES { } // MARK: Cipher -extension AES: Cipher { +extension AES: Cipher { public func encrypt(_ bytes: ArraySlice) throws -> Array { let chunks = bytes.batched(by: AES.blockSize) diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift index 2dcde03..752dcb8 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift @@ -14,36 +14,17 @@ // extension Array { - init(reserveCapacity: Int) { + public init(reserveCapacity: Int) { self = Array() self.reserveCapacity(reserveCapacity) } var slice: ArraySlice { - return self[self.startIndex.. Array> { - var words = Array>() - words.reserveCapacity(count / chunksize) - for idx in stride(from: chunksize, through: count, by: chunksize) { - words.append(Array(self[idx - chunksize.. String { + return `lazy`.reduce("") { + var s = String($1, radix: 16) + if s.count == 1 { + s = "0" + s + } + return $0 + s + } + } +} + +extension Array where Element == UInt8 { + /// split in chunks with given chunk size + @available(*, deprecated) + public func chunks(size chunksize: Int) -> Array> { + var words = Array>() + words.reserveCapacity(count / chunksize) + for idx in stride(from: chunksize, through: count, by: chunksize) { + words.append(Array(self[idx - chunksize ..< idx])) // slow for large table + } + let remainder = suffix(count % chunksize) + if !remainder.isEmpty { + words.append(Array(remainder)) + } + return words + } + + public func md5() -> [Element] { + return Digest.md5(self) + } + + public func sha1() -> [Element] { + return Digest.sha1(self) + } + + public func sha224() -> [Element] { + return Digest.sha224(self) + } + + public func sha256() -> [Element] { + return Digest.sha256(self) + } + + public func sha384() -> [Element] { + return Digest.sha384(self) + } + + public func sha512() -> [Element] { + return Digest.sha512(self) + } + + public func sha2(_ variant: SHA2.Variant) -> [Element] { + return Digest.sha2(self, variant: variant) + } + + public func sha3(_ variant: SHA3.Variant) -> [Element] { + return Digest.sha3(self, variant: variant) + } + + public func crc32(seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { + return Checksum.crc32(self, seed: seed, reflect: reflect) + } + + public func crc32c(seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { + return Checksum.crc32c(self, seed: seed, reflect: reflect) + } + + public func crc16(seed: UInt16? = nil) -> UInt16 { + return Checksum.crc16(self, seed: seed) + } + + public func encrypt(cipher: Cipher) throws -> [Element] { + return try cipher.encrypt(slice) + } + + public func decrypt(cipher: Cipher) throws -> [Element] { + return try cipher.decrypt(slice) + } + + public func authenticate(with authenticator: A) throws -> [Element] { + return try authenticator.authenticate(self) + } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extensions.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extensions.swift deleted file mode 100644 index aeb2052..0000000 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extensions.swift +++ /dev/null @@ -1,82 +0,0 @@ -// -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski -// 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: -// -// - 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 is required. -// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// - This notice may not be removed or altered from any source or binary distribution. -// - -public extension Array where Element == UInt8 { - - public func toHexString() -> String { - return `lazy`.reduce("") { - var s = String($1, radix: 16) - if s.count == 1 { - s = "0" + s - } - return $0 + s - } - } -} - -public extension Array where Element == UInt8 { - - public func md5() -> [Element] { - return Digest.md5(self) - } - - public func sha1() -> [Element] { - return Digest.sha1(self) - } - - public func sha224() -> [Element] { - return Digest.sha224(self) - } - - public func sha256() -> [Element] { - return Digest.sha256(self) - } - - public func sha384() -> [Element] { - return Digest.sha384(self) - } - - public func sha512() -> [Element] { - return Digest.sha512(self) - } - - public func sha2(_ variant: SHA2.Variant) -> [Element] { - return Digest.sha2(self, variant: variant) - } - - public func sha3(_ variant: SHA3.Variant) -> [Element] { - return Digest.sha3(self, variant: variant) - } - - public func crc32(seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { - return Checksum.crc32(self, seed: seed, reflect: reflect) - } - - public func crc16(seed: UInt16? = nil) -> UInt16 { - return Checksum.crc16(self, seed: seed) - } - - public func encrypt(cipher: Cipher) throws -> [Element] { - return try cipher.encrypt(slice) - } - - public func decrypt(cipher: Cipher) throws -> [Element] { - return try cipher.decrypt(slice) - } - - public func authenticate(with authenticator: A) throws -> [Element] { - return try authenticator.authenticate(self) - } -} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift index 9078b3e..575bc1f 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift @@ -18,7 +18,7 @@ struct BatchedCollectionIndex { } extension BatchedCollectionIndex: Comparable { - static func ==(lhs: BatchedCollectionIndex, rhs: BatchedCollectionIndex) -> Bool { + static func == (lhs: BatchedCollectionIndex, rhs: BatchedCollectionIndex) -> Bool { return lhs.range.lowerBound == rhs.range.lowerBound } @@ -33,11 +33,10 @@ protocol BatchedCollectionType: Collection { struct BatchedCollection: Collection { let base: Base - let size: Base.IndexDistance + let size: Int typealias Index = BatchedCollectionIndex private func nextBreak(after idx: Base.Index) -> Base.Index { - return base.index(idx, offsetBy: size, limitedBy: base.endIndex) - ?? base.endIndex + return base.index(idx, offsetBy: size, limitedBy: base.endIndex) ?? base.endIndex } var startIndex: Index { @@ -58,7 +57,7 @@ struct BatchedCollection: Collection { } extension Collection { - func batched(by size: IndexDistance) -> BatchedCollection { + func batched(by size: Int) -> BatchedCollection { return BatchedCollection(base: self, size: size) } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Bit.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Bit.swift index b1eb66a..2e9552e 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Bit.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Bit.swift @@ -19,7 +19,6 @@ public enum Bit: Int { } extension Bit { - func inverted() -> Bit { return self == .zero ? .one : .zero } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift new file mode 100644 index 0000000..7990a40 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockDecryptor.swift @@ -0,0 +1,85 @@ +// CryptoSwift +// +// Copyright (C) 2014-2018 Marcin Krzyżanowski +// 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: +// +// - 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 is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +public class BlockDecryptor: Cryptor, Updatable { + private let blockSize: Int + private let padding: Padding + private var worker: CipherModeWorker + private var accumulated = Array() + + init(blockSize: Int, padding: Padding, _ worker: CipherModeWorker) throws { + self.blockSize = blockSize + self.padding = padding + self.worker = worker + } + + public func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { + accumulated += bytes + + // If a worker (eg GCM) can combine ciphertext + tag + // we need to remove tag from the ciphertext. + if !isLast && accumulated.count < blockSize + worker.additionalBufferSize { + return [] + } + + let accumulatedWithoutSuffix: Array + if worker.additionalBufferSize > 0 { + // FIXME: how slow is that? + accumulatedWithoutSuffix = Array(accumulated.prefix(accumulated.count - worker.additionalBufferSize)) + } else { + accumulatedWithoutSuffix = accumulated + } + + var processedBytesCount = 0 + var plaintext = Array(reserveCapacity: accumulatedWithoutSuffix.count) + // Processing in a block-size manner. It's good for block modes, but bad for stream modes. + for var chunk in accumulatedWithoutSuffix.batched(by: blockSize) { + if isLast || (accumulatedWithoutSuffix.count - processedBytesCount) >= blockSize { + let isLastChunk = processedBytesCount + chunk.count == accumulatedWithoutSuffix.count + + if isLast, isLastChunk, var finalizingWorker = worker as? FinalizingDecryptModeWorker { + chunk = try finalizingWorker.willDecryptLast(bytes: chunk + accumulated.suffix(worker.additionalBufferSize)) // tag size + } + + if !chunk.isEmpty { + plaintext += worker.decrypt(block: chunk) + } + + if isLast, isLastChunk, var finalizingWorker = worker as? FinalizingDecryptModeWorker { + plaintext = Array(try finalizingWorker.didDecryptLast(bytes: plaintext.slice)) + } + + processedBytesCount += chunk.count + } + } + accumulated.removeFirst(processedBytesCount) // super-slow + + if isLast { + plaintext = padding.remove(from: plaintext, blockSize: blockSize) + } + + return plaintext + } + + public func seek(to position: Int) throws { + guard var worker = self.worker as? SeekableModeWorker else { + fatalError("Not supported") + } + + try worker.seek(to: position) + self.worker = worker + + accumulated = [] + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockEncryptor.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockEncryptor.swift new file mode 100644 index 0000000..ba3fe28 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockEncryptor.swift @@ -0,0 +1,57 @@ +// CryptoSwift +// +// Copyright (C) 2014-2018 Marcin Krzyżanowski +// 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: +// +// - 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 is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// +final class BlockEncryptor: Cryptor, Updatable { + private let blockSize: Int + private var worker: CipherModeWorker + private let padding: Padding + // Accumulated bytes. Not all processed bytes. + private var accumulated = Array(reserveCapacity: 16) + + private var lastBlockRemainder = 0 + + init(blockSize: Int, padding: Padding, _ worker: CipherModeWorker) throws { + self.blockSize = blockSize + self.padding = padding + self.worker = worker + } + + // MARK: Updatable + public func update(withBytes bytes: ArraySlice, isLast: Bool) throws -> Array { + accumulated += bytes + + if isLast { + accumulated = padding.add(to: accumulated, blockSize: blockSize) + } + + var encrypted = Array(reserveCapacity: accumulated.count) + for chunk in accumulated.batched(by: blockSize) { + if isLast || chunk.count == blockSize { + encrypted += worker.encrypt(block: chunk) + } + } + + // Stream encrypts all, so it removes all elements + accumulated.removeFirst(encrypted.count) + + if var finalizingWorker = worker as? FinalizingEncryptModeWorker, isLast == true { + encrypted = Array(try finalizingWorker.finalize(encrypt: encrypted.slice)) + } + + return encrypted + } + + func seek(to: Int) throws { + fatalError("Not supported") + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift index be7bd96..b78e274 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift @@ -13,64 +13,12 @@ // - This notice may not be removed or altered from any source or binary distribution. // -typealias CipherOperationOnBlock = (_ block: ArraySlice) -> Array? +public typealias CipherOperationOnBlock = (_ block: ArraySlice) -> Array? -public enum BlockMode { - case ECB, CBC(iv: Array), PCBC(iv: Array), CFB(iv: Array), OFB(iv: Array), CTR(iv: Array) - - public enum Error: Swift.Error { - /// Invalid key or IV - case invalidKeyOrInitializationVector - /// Invalid IV - case invalidInitializationVector - } - - func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> BlockModeWorker { - switch self { - case .ECB: - return ECBModeWorker(cipherOperation: cipherOperation) - case let .CBC(iv): - if iv.count != blockSize { - throw Error.invalidInitializationVector - } - return CBCModeWorker(iv: iv.slice, cipherOperation: cipherOperation) - case let .PCBC(iv): - if iv.count != blockSize { - throw Error.invalidInitializationVector - } - return PCBCModeWorker(iv: iv.slice, cipherOperation: cipherOperation) - case let .CFB(iv): - if iv.count != blockSize { - throw Error.invalidInitializationVector - } - return CFBModeWorker(iv: iv.slice, cipherOperation: cipherOperation) - case let .OFB(iv): - if iv.count != blockSize { - throw Error.invalidInitializationVector - } - return OFBModeWorker(iv: iv.slice, cipherOperation: cipherOperation) - case let .CTR(iv): - if iv.count != blockSize { - throw Error.invalidInitializationVector - } - return CTRModeWorker(iv: iv.slice, cipherOperation: cipherOperation) - } - } - - var options: BlockModeOptions { - switch self { - case .ECB: - return .paddingRequired - case .CBC: - return [.initializationVectorRequired, .paddingRequired] - case .CFB: - return .initializationVectorRequired - case .CTR: - return .initializationVectorRequired - case .OFB: - return .initializationVectorRequired - case .PCBC: - return [.initializationVectorRequired, .paddingRequired] - } - } +public protocol BlockMode { + var options: BlockModeOption { get } + //TODO: doesn't have to be public + func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker } + +typealias StreamMode = BlockMode diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift index bff7fe5..6461849 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift @@ -13,10 +13,15 @@ // - This notice may not be removed or altered from any source or binary distribution. // -struct BlockModeOptions: OptionSet { - let rawValue: Int +public struct BlockModeOption: OptionSet { + public let rawValue: Int - static let none = BlockModeOptions(rawValue: 1 << 0) - static let initializationVectorRequired = BlockModeOptions(rawValue: 1 << 1) - static let paddingRequired = BlockModeOptions(rawValue: 1 << 2) + public init(rawValue: Int) { + self.rawValue = rawValue + } + + static let none = BlockModeOption(rawValue: 1 << 0) + static let initializationVectorRequired = BlockModeOption(rawValue: 1 << 1) + static let paddingRequired = BlockModeOption(rawValue: 1 << 2) + static let useEncryptToDecrypt = BlockModeOption(rawValue: 1 << 3) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift index a2b748a..f98d9bf 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift @@ -16,17 +16,42 @@ // Cipher-block chaining (CBC) // +public struct CBC: BlockMode { + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + } + + public let options: BlockModeOption = [.initializationVectorRequired, .paddingRequired] + private let iv: Array + + public init(iv: Array) { + self.iv = iv + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if iv.count != blockSize { + throw Error.invalidInitializationVector + } + + return CBCModeWorker(blockSize: blockSize, iv: iv.slice, cipherOperation: cipherOperation) + } +} + struct CBCModeWorker: BlockModeWorker { let cipherOperation: CipherOperationOnBlock + var blockSize: Int + let additionalBufferSize: Int = 0 private let iv: ArraySlice private var prev: ArraySlice? - init(iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + init(blockSize: Int, iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + self.blockSize = blockSize self.iv = iv self.cipherOperation = cipherOperation } - mutating func encrypt(_ plaintext: ArraySlice) -> Array { + mutating func encrypt(block plaintext: ArraySlice) -> Array { guard let ciphertext = cipherOperation(xor(prev ?? iv, plaintext)) else { return Array(plaintext) } @@ -34,7 +59,7 @@ struct CBCModeWorker: BlockModeWorker { return ciphertext } - mutating func decrypt(_ ciphertext: ArraySlice) -> Array { + mutating func decrypt(block ciphertext: ArraySlice) -> Array { guard let plaintext = cipherOperation(ciphertext) else { return Array(ciphertext) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CCM.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CCM.swift new file mode 100644 index 0000000..fb59ebe --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CCM.swift @@ -0,0 +1,359 @@ +//// CryptoSwift +// +// Copyright (C) 2014-2018 Marcin Krzyżanowski +// 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: +// +// - 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 is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +// CCM mode combines the well known CBC-MAC with the well known counter mode of encryption. +// https://tools.ietf.org/html/rfc3610 +// https://csrc.nist.gov/publications/detail/sp/800-38c/final + +#if canImport(Darwin) +import Darwin +#else +import Glibc +#endif + + +/// Counter with Cipher Block Chaining-Message Authentication Code +public struct CCM: StreamMode { + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + case invalidParameter + case fail + } + + public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] + private let nonce: Array + private let additionalAuthenticatedData: Array? + private let tagLength: Int + private let messageLength: Int // total message length. need to know in advance + + // `authenticationTag` nil for encryption, known tag for decryption + /// For encryption, the value is set at the end of the encryption. + /// For decryption, this is a known Tag to validate against. + public var authenticationTag: Array? + + /// Initialize CCM + /// + /// - Parameters: + /// - iv: Initialization vector. Nonce. Valid length between 7 and 13 bytes. + /// - tagLength: Authentication tag length, in bytes. Value of {4, 6, 8, 10, 12, 14, 16}. + /// - messageLength: Plaintext message length (excluding tag if attached). Length have to be provided in advance. + /// - additionalAuthenticatedData: Additional authenticated data. + public init(iv: Array, tagLength: Int, messageLength: Int, additionalAuthenticatedData: Array? = nil) { + self.nonce = iv + self.tagLength = tagLength + self.additionalAuthenticatedData = additionalAuthenticatedData + self.messageLength = messageLength // - tagLength + } + + /// Initialize CCM + /// + /// - Parameters: + /// - iv: Initialization vector. Nonce. Valid length between 7 and 13 bytes. + /// - tagLength: Authentication tag length, in bytes. Value of {4, 6, 8, 10, 12, 14, 16}. + /// - messageLength: Plaintext message length (excluding tag if attached). Length have to be provided in advance. + /// - authenticationTag: Authentication Tag value if not concatenated to ciphertext. + /// - additionalAuthenticatedData: Additional authenticated data. + public init(iv: Array, tagLength: Int, messageLength: Int, authenticationTag: Array, additionalAuthenticatedData: Array? = nil) { + self.init(iv: iv, tagLength: tagLength, messageLength: messageLength, additionalAuthenticatedData: additionalAuthenticatedData) + self.authenticationTag = authenticationTag + } + + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if nonce.isEmpty { + throw Error.invalidInitializationVector + } + + return CCMModeWorker(blockSize: blockSize, nonce: nonce.slice, messageLength: messageLength, additionalAuthenticatedData: additionalAuthenticatedData, tagLength: tagLength, cipherOperation: cipherOperation) + } +} + +class CCMModeWorker: StreamModeWorker, SeekableModeWorker, CounterModeWorker, FinalizingEncryptModeWorker, FinalizingDecryptModeWorker { + typealias Counter = Int + var counter = 0 + + let cipherOperation: CipherOperationOnBlock + let blockSize: Int + private let tagLength: Int + private let messageLength: Int // total message length. need to know in advance + private let q: UInt8 + + let additionalBufferSize: Int + private var keystreamPosIdx = 0 + private let nonce: Array + private var last_y: ArraySlice = [] + private var keystream: Array = [] + // Known Tag used to validate during decryption + private var expectedTag: Array? + + public enum Error: Swift.Error { + case invalidParameter + } + + init(blockSize: Int, nonce: ArraySlice, messageLength: Int, additionalAuthenticatedData: [UInt8]?, expectedTag: Array? = nil, tagLength: Int, cipherOperation: @escaping CipherOperationOnBlock) { + self.blockSize = 16 // CCM is defined for 128 block size + self.tagLength = tagLength + self.additionalBufferSize = tagLength + self.messageLength = messageLength + self.expectedTag = expectedTag + self.cipherOperation = cipherOperation + self.nonce = Array(nonce) + self.q = UInt8(15 - nonce.count) // n = 15-q + + let hasAssociatedData = additionalAuthenticatedData != nil && !additionalAuthenticatedData!.isEmpty + processControlInformation(nonce: self.nonce, tagLength: tagLength, hasAssociatedData: hasAssociatedData) + + if let aad = additionalAuthenticatedData, hasAssociatedData { + process(aad: aad) + } + } + + // For the very first time setup new IV (aka y0) from the block0 + private func processControlInformation(nonce: [UInt8], tagLength: Int, hasAssociatedData: Bool) { + let block0 = try! format(nonce: nonce, Q: UInt32(messageLength), q: q, t: UInt8(tagLength), hasAssociatedData: hasAssociatedData).slice + let y0 = cipherOperation(block0)!.slice + last_y = y0 + } + + private func process(aad: [UInt8]) { + let encodedAAD = format(aad: aad) + + for block_i in encodedAAD.batched(by: 16) { + let y_i = cipherOperation(xor(block_i, last_y))!.slice + last_y = y_i + } + } + + private func S(i: Int) throws -> [UInt8] { + let ctr = try format(counter: i, nonce: nonce, q: q) + return cipherOperation(ctr.slice)! + } + + func seek(to position: Int) throws { + self.counter = position + keystream = try S(i: position) + let offset = position % blockSize + keystreamPosIdx = offset + } + + func encrypt(block plaintext: ArraySlice) -> Array { + var result = Array(reserveCapacity: plaintext.count) + + var processed = 0 + while processed < plaintext.count { + // Need a full block here to update keystream and do CBC + if keystream.isEmpty || keystreamPosIdx == blockSize { + // y[i], where i is the counter. Can encrypt 1 block at a time + counter += 1 + guard let S = try? S(i: counter) else { return Array(plaintext) } + let plaintextP = addPadding(Array(plaintext), blockSize: blockSize) + guard let y = cipherOperation(xor(last_y, plaintextP)) else { return Array(plaintext) } + last_y = y.slice + + keystream = S + keystreamPosIdx = 0 + } + + let xored: Array = xor(plaintext[plaintext.startIndex.advanced(by: processed)...], keystream[keystreamPosIdx...]) + keystreamPosIdx += xored.count + processed += xored.count + result += xored + } + return result + } + + func finalize(encrypt ciphertext: ArraySlice) throws -> ArraySlice { + // concatenate T at the end + guard let S0 = try? S(i: 0) else { return ciphertext } + + let computedTag = xor(last_y.prefix(tagLength), S0) as ArraySlice + return ciphertext + computedTag + } + + // Decryption is stream + // CBC is block + private var accumulatedPlaintext: [UInt8] = [] + + func decrypt(block ciphertext: ArraySlice) -> Array { + var output = Array(reserveCapacity: ciphertext.count) + + do { + var currentCounter = counter + var processed = 0 + while processed < ciphertext.count { + // Need a full block here to update keystream and do CBC + // New keystream for a new block + if keystream.isEmpty || keystreamPosIdx == blockSize { + currentCounter += 1 + guard let S = try? S(i: currentCounter) else { return Array(ciphertext) } + keystream = S + keystreamPosIdx = 0 + } + + let xored: Array = xor(ciphertext[ciphertext.startIndex.advanced(by: processed)...], keystream[keystreamPosIdx...]) // plaintext + keystreamPosIdx += xored.count + processed += xored.count + output += xored + counter = currentCounter + } + } + + // Accumulate plaintext for the MAC calculations at the end. + // It would be good to process it together though, here. + accumulatedPlaintext += output + + // Shouldn't return plaintext until validate tag. + // With incremental update, can't validate tag until all block are processed. + return output + } + + func finalize(decrypt plaintext: ArraySlice) throws -> ArraySlice { + // concatenate T at the end + let computedTag = Array(last_y.prefix(tagLength)) + guard let expectedTag = self.expectedTag, expectedTag == computedTag else { + throw CCM.Error.fail + } + + return plaintext + } + + @discardableResult + func willDecryptLast(bytes ciphertext: ArraySlice) throws -> ArraySlice { + // get tag of additionalBufferSize size + // `ciphertext` contains at least additionalBufferSize bytes + // overwrite expectedTag property used later for verification + guard let S0 = try? S(i: 0) else { return ciphertext } + self.expectedTag = xor(ciphertext.suffix(tagLength), S0) as [UInt8] + return ciphertext[ciphertext.startIndex..) throws -> ArraySlice { + + // Calculate Tag, from the last CBC block, for accumulated plaintext. + var processed = 0 + for block in accumulatedPlaintext.batched(by: blockSize) { + let blockP = addPadding(Array(block), blockSize: blockSize) + guard let y = cipherOperation(xor(last_y, blockP)) else { return plaintext } + last_y = y.slice + processed += block.count + } + accumulatedPlaintext.removeFirst(processed) + return plaintext + } +} + +// Q - octet length of P +// q - octet length of Q. Maximum length (in octets) of payload. An element of {2,3,4,5,6,7,8} +// t - octet length of T (MAC length). An element of {4,6,8,10,12,14,16} +private func format(nonce N: [UInt8], Q: UInt32, q: UInt8, t: UInt8, hasAssociatedData: Bool) throws -> [UInt8] { + var flags0: UInt8 = 0 + + if hasAssociatedData { + // 7 bit + flags0 |= (1 << 6) + } + + // 6,5,4 bit is t in 3 bits + flags0 |= (((t-2)/2) & 0x07) << 3 + + // 3,2,1 bit is q in 3 bits + flags0 |= ((q-1) & 0x07) << 0 + + var block0: [UInt8] = Array(repeating: 0, count: 16) + block0[0] = flags0 + + // N in 1...(15-q) octets, n = 15-q + // n is an element of {7,8,9,10,11,12,13} + let n = 15-Int(q) + guard (n + Int(q)) == 15 else { + // n+q == 15 + throw CCMModeWorker.Error.invalidParameter + } + block0[1...n] = N[0...(n-1)] + + // Q in (16-q)...15 octets + block0[(16-Int(q))...15] = Q.bytes(totalBytes: Int(q)).slice + + return block0 +} + +/// Formatting of the Counter Blocks. Ctr[i] +/// The counter generation function. +/// Q - octet length of P +/// q - octet length of Q. Maximum length (in octets) of payload. An element of {2,3,4,5,6,7,8} +private func format(counter i: Int, nonce N: [UInt8], q: UInt8) throws -> [UInt8] { + var flags0: UInt8 = 0 + + // bit 8,7 is Reserved + // bit 4,5,6 shall be set to 0 + // 3,2,1 bit is q in 3 bits + flags0 |= ((q-1) & 0x07) << 0 + + var block = Array(repeating: 0, count: 16) // block[0] + block[0] = flags0 + + // N in 1...(15-q) octets, n = 15-q + // n is an element of {7,8,9,10,11,12,13} + let n = 15-Int(q) + guard (n + Int(q)) == 15 else { + // n+q == 15 + throw CCMModeWorker.Error.invalidParameter + } + block[1...n] = N[0...(n-1)] + + // [i]8q in (16-q)...15 octets + block[(16-Int(q))...15] = i.bytes(totalBytes: Int(q)).slice + + return block +} + +/// Resulting can be partitioned into 16-octet blocks +private func format(aad: [UInt8]) -> [UInt8] { + let a = aad.count + + switch Double(a) { + case 0..<65280: // 2^16-2^8 + // [a]16 + return addPadding(a.bytes(totalBytes: 2) + aad, blockSize: 16) + case 65280..<4_294_967_296: // 2^32 + // [a]32 + return addPadding([0xFF, 0xFE] + a.bytes(totalBytes: 4) + aad, blockSize: 16) + case 4_294_967_296.., blockSize: Int) -> Array { + if bytes.isEmpty { + return Array(repeating: 0, count: blockSize) + } + + let remainder = bytes.count % blockSize + if remainder == 0 { + return bytes + } + + let paddingCount = blockSize - remainder + if paddingCount > 0 { + return bytes + Array(repeating: 0, count: paddingCount) + } + return bytes +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift index dd57926..316283c 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift @@ -16,17 +16,42 @@ // Cipher feedback (CFB) // +public struct CFB: BlockMode { + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + } + + public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] + private let iv: Array + + public init(iv: Array) { + self.iv = iv + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if iv.count != blockSize { + throw Error.invalidInitializationVector + } + + return CFBModeWorker(blockSize: blockSize, iv: iv.slice, cipherOperation: cipherOperation) + } +} + struct CFBModeWorker: BlockModeWorker { let cipherOperation: CipherOperationOnBlock + let blockSize: Int + let additionalBufferSize: Int = 0 private let iv: ArraySlice private var prev: ArraySlice? - init(iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + init(blockSize: Int, iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + self.blockSize = blockSize self.iv = iv self.cipherOperation = cipherOperation } - mutating func encrypt(_ plaintext: ArraySlice) -> Array { + mutating func encrypt(block plaintext: ArraySlice) -> Array { guard let ciphertext = cipherOperation(prev ?? iv) else { return Array(plaintext) } @@ -34,7 +59,7 @@ struct CFBModeWorker: BlockModeWorker { return Array(prev ?? []) } - mutating func decrypt(_ ciphertext: ArraySlice) -> Array { + mutating func decrypt(block ciphertext: ArraySlice) -> Array { guard let plaintext = cipherOperation(prev ?? iv) else { return Array(ciphertext) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift index 55011d3..2dc6a9e 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift @@ -14,38 +14,121 @@ // // Counter (CTR) -// -struct CTRModeWorker: RandomAccessBlockModeWorker { - let cipherOperation: CipherOperationOnBlock - private let iv: ArraySlice - var counter: UInt = 0 +public struct CTR: StreamMode { + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + } + + public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] + private let iv: Array + private let counter: Int - init(iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + public init(iv: Array, counter: Int = 0) { self.iv = iv + self.counter = counter + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if iv.count != blockSize { + throw Error.invalidInitializationVector + } + + return CTRModeWorker(blockSize: blockSize, iv: iv.slice, counter: counter, cipherOperation: cipherOperation) + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +struct CTRModeWorker: StreamModeWorker, SeekableModeWorker, CounterModeWorker { + typealias Counter = CTRCounter + + final class CTRCounter { + private let constPrefix: Array + private var value: UInt64 + //TODO: make it an updatable value, computing is too slow + var bytes: Array { + return constPrefix + value.bytes() + } + + init(_ initialValue: Array) { + let halfIndex = initialValue.startIndex.advanced(by: initialValue.count / 2) + constPrefix = Array(initialValue[initialValue.startIndex.., startAt index: Int) { + self.init(buildCounterValue(nonce, counter: UInt64(index))) + } + + static func +=(lhs: CTRCounter, rhs: Int) { + lhs.value += UInt64(rhs) + } + } + + let cipherOperation: CipherOperationOnBlock + let additionalBufferSize: Int = 0 + let iv: Array + var counter: CTRCounter + + private let blockSize: Int + + // The same keystream is used for the block length plaintext + // As new data is added, keystream suffix is used to xor operation. + private var keystream: Array + private var keystreamPosIdx = 0 + + init(blockSize: Int, iv: ArraySlice, counter: Int, cipherOperation: @escaping CipherOperationOnBlock) { self.cipherOperation = cipherOperation + self.blockSize = blockSize + self.iv = Array(iv) + + // the first keystream is calculated from the nonce = initial value of counter + self.counter = CTRCounter(nonce: Array(iv), startAt: counter) + self.keystream = Array(cipherOperation(self.counter.bytes.slice)!) } - mutating func encrypt(_ plaintext: ArraySlice) -> Array { - let nonce = buildNonce(iv, counter: UInt64(counter)) - counter = counter + 1 + mutating func seek(to position: Int) throws { + let offset = position % blockSize + counter = CTRCounter(nonce: iv, startAt: position / blockSize) + keystream = Array(cipherOperation(counter.bytes.slice)!) + keystreamPosIdx = offset + } + + // plaintext is at most blockSize long + mutating func encrypt(block plaintext: ArraySlice) -> Array { + var result = Array(reserveCapacity: plaintext.count) + + var processed = 0 + while processed < plaintext.count { + // Update keystream + if keystreamPosIdx == blockSize { + counter += 1 + keystream = Array(cipherOperation(counter.bytes.slice)!) + keystreamPosIdx = 0 + } - guard let ciphertext = cipherOperation(nonce.slice) else { - return Array(plaintext) + let xored: Array = xor(plaintext[plaintext.startIndex.advanced(by: processed)...], keystream[keystreamPosIdx...]) + keystreamPosIdx += xored.count + processed += xored.count + result += xored } - return xor(plaintext, ciphertext) + return result } - mutating func decrypt(_ ciphertext: ArraySlice) -> Array { - return encrypt(ciphertext) + mutating func decrypt(block ciphertext: ArraySlice) -> Array { + return encrypt(block: ciphertext) } } -private func buildNonce(_ iv: ArraySlice, counter: UInt64) -> Array { - let noncePartLen = AES.blockSize / 2 - let noncePrefix = Array(iv[iv.startIndex.., counter: UInt64) -> Array { + let noncePartLen = iv.count / 2 + let noncePrefix = iv[iv.startIndex.. +// 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: +// +// - 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 is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +public protocol CipherModeWorker { + var cipherOperation: CipherOperationOnBlock { get } + + // Additional space needed when incrementally process data + // eg. for GCM combined mode + var additionalBufferSize: Int { get } + + mutating func encrypt(block plaintext: ArraySlice) -> Array + mutating func decrypt(block ciphertext: ArraySlice) -> Array +} + +/// Block workers use `BlockEncryptor` +public protocol BlockModeWorker: CipherModeWorker { + var blockSize: Int { get } +} + +public protocol CounterModeWorker: CipherModeWorker { + associatedtype Counter + var counter: Counter { get set } +} + +public protocol SeekableModeWorker: CipherModeWorker { + mutating func seek(to position: Int) throws +} + +/// Stream workers use `StreamEncryptor` +public protocol StreamModeWorker: CipherModeWorker { +} + +public protocol FinalizingEncryptModeWorker: CipherModeWorker { + // Any final calculations, eg. calculate tag + // Called after the last block is encrypted + mutating func finalize(encrypt ciphertext: ArraySlice) throws -> ArraySlice +} + +public protocol FinalizingDecryptModeWorker: CipherModeWorker { + // Called before decryption, hence input is ciphertext. + // ciphertext is either a last block, or a tag (for stream workers) + @discardableResult + mutating func willDecryptLast(bytes ciphertext: ArraySlice) throws -> ArraySlice + // Called after decryption, hence input is ciphertext + mutating func didDecryptLast(bytes plaintext: ArraySlice) throws -> ArraySlice + // Any final calculations, eg. calculate tag + // Called after the last block is encrypted + mutating func finalize(decrypt plaintext: ArraySlice) throws -> ArraySlice +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift index 68d8ae0..ce410b3 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift @@ -16,22 +16,36 @@ // Electronic codebook (ECB) // +public struct ECB: BlockMode { + public let options: BlockModeOption = .paddingRequired + + public init() { + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + return ECBModeWorker(blockSize: blockSize, cipherOperation: cipherOperation) + } +} + struct ECBModeWorker: BlockModeWorker { typealias Element = Array let cipherOperation: CipherOperationOnBlock + let blockSize: Int + let additionalBufferSize: Int = 0 - init(cipherOperation: @escaping CipherOperationOnBlock) { + init(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) { + self.blockSize = blockSize self.cipherOperation = cipherOperation } - mutating func encrypt(_ plaintext: ArraySlice) -> Array { + mutating func encrypt(block plaintext: ArraySlice) -> Array { guard let ciphertext = cipherOperation(plaintext) else { return Array(plaintext) } return ciphertext } - mutating func decrypt(_ ciphertext: ArraySlice) -> Array { - return encrypt(ciphertext) + mutating func decrypt(block ciphertext: ArraySlice) -> Array { + return encrypt(block: ciphertext) } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift new file mode 100644 index 0000000..d9bf5d9 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/GCM.swift @@ -0,0 +1,370 @@ +// +// CryptoSwift +// +// Copyright (C) 2014-2017 Marcin Krzyżanowski +// 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: +// +// - 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 is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +// Galois/Counter Mode (GCM) +// https://csrc.nist.gov/publications/detail/sp/800-38d/final +// ref: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.694.695&rep=rep1&type=pdf +// + +public final class GCM: BlockMode { + public enum Mode { + /// In combined mode, the authentication tag is directly appended to the encrypted message. This is usually what you want. + case combined + /// Some applications may need to store the authentication tag and the encrypted message at different locations. + case detached + } + + public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] + + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + /// Special symbol FAIL that indicates that the inputs are not authentic. + case fail + } + + private let iv: Array + private let additionalAuthenticatedData: Array? + private let mode: Mode + + /// Length of authentication tag, in bytes. + /// For encryption, the value is given as init parameter. + /// For decryption, the lenght of given authentication tag is used. + private let tagLength: Int + + // `authenticationTag` nil for encryption, known tag for decryption + /// For encryption, the value is set at the end of the encryption. + /// For decryption, this is a known Tag to validate against. + public var authenticationTag: Array? + + // encrypt + /// Possible tag lengths: 4,8,12,13,14,15,16 + public init(iv: Array, additionalAuthenticatedData: Array? = nil, tagLength: Int = 16, mode: Mode = .detached) { + self.iv = iv + self.additionalAuthenticatedData = additionalAuthenticatedData + self.mode = mode + self.tagLength = tagLength + } + + // decrypt + public convenience init(iv: Array, authenticationTag: Array, additionalAuthenticatedData: Array? = nil, mode: Mode = .detached) { + self.init(iv: iv, additionalAuthenticatedData: additionalAuthenticatedData, tagLength: authenticationTag.count, mode: mode) + self.authenticationTag = authenticationTag + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if iv.isEmpty { + throw Error.invalidInitializationVector + } + + let worker = GCMModeWorker(iv: iv.slice, aad: additionalAuthenticatedData?.slice, expectedTag: authenticationTag, tagLength: tagLength, mode: mode, cipherOperation: cipherOperation) + worker.didCalculateTag = { [weak self] tag in + self?.authenticationTag = tag + } + return worker + } +} + +// MARK: - Worker + +final class GCMModeWorker: BlockModeWorker, FinalizingEncryptModeWorker, FinalizingDecryptModeWorker { + let cipherOperation: CipherOperationOnBlock + + // Callback called when authenticationTag is ready + var didCalculateTag: ((Array) -> Void)? + + private let tagLength: Int + // GCM nonce is 96-bits by default. It's the most effective length for the IV + private static let nonceSize = 12 + + // GCM is designed for 128-bit ciphers like AES (but not really for Blowfish). 64-bit mode is not implemented. + let blockSize = 16 // 128 bit + let additionalBufferSize: Int + private let iv: ArraySlice + private let mode: GCM.Mode + private var counter: UInt128 + private let eky0: UInt128 // move to GF? + private let h: UInt128 + + // Additional authenticated data + private let aad: ArraySlice? + // Known Tag used to validate during decryption + private var expectedTag: Array? + + // Note: need new worker to reset instance + // Use empty aad if not specified. AAD is optional. + private lazy var gf: GF = { + if let aad = aad { + return GF(aad: Array(aad), h: h, blockSize: blockSize) + } + return GF(aad: [UInt8](), h: h, blockSize: blockSize) + }() + + init(iv: ArraySlice, aad: ArraySlice? = nil, expectedTag: Array? = nil, tagLength: Int, mode: GCM.Mode, cipherOperation: @escaping CipherOperationOnBlock) { + self.cipherOperation = cipherOperation + self.iv = iv + self.mode = mode + self.aad = aad + self.expectedTag = expectedTag + self.tagLength = tagLength + h = UInt128(cipherOperation(Array(repeating: 0, count: blockSize).slice)!) // empty block + + if mode == .combined { + self.additionalBufferSize = tagLength + } else { + self.additionalBufferSize = 0 + } + + // Assume nonce is 12 bytes long, otherwise initial counter would be calulated from GHASH + // counter = GF.ghash(aad: [UInt8](), ciphertext: nonce) + if iv.count == GCMModeWorker.nonceSize { + counter = makeCounter(nonce: Array(self.iv)) + } else { + counter = GF.ghash(h: h, aad: [UInt8](), ciphertext: Array(iv), blockSize: blockSize) + } + + // Set constants + eky0 = UInt128(cipherOperation(counter.bytes.slice)!) + } + + func encrypt(block plaintext: ArraySlice) -> Array { + counter = incrementCounter(counter) + + guard let ekyN = cipherOperation(counter.bytes.slice) else { + return Array(plaintext) + } + + // plaintext block ^ ek1 + let ciphertext = xor(plaintext, ekyN) as Array + + // update ghash incrementally + gf.ghashUpdate(block: ciphertext) + + return Array(ciphertext) + } + + func finalize(encrypt ciphertext: ArraySlice) throws -> ArraySlice { + // Calculate MAC tag. + let ghash = gf.ghashFinish() + let tag = Array((ghash ^ eky0).bytes.prefix(tagLength)) + + // Notify handler + didCalculateTag?(tag) + + switch mode { + case .combined: + return (ciphertext + tag).slice + case .detached: + return ciphertext + } + } + + func decrypt(block ciphertext: ArraySlice) -> Array { + counter = incrementCounter(counter) + + // update ghash incrementally + gf.ghashUpdate(block: Array(ciphertext)) + + guard let ekN = cipherOperation(counter.bytes.slice) else { + return Array(ciphertext) + } + + // ciphertext block ^ ek1 + let plaintext = xor(ciphertext, ekN) as Array + return plaintext + } + + // The authenticated decryption operation has five inputs: K, IV , C, A, and T. It has only a single + // output, either the plaintext value P or a special symbol FAIL that indicates that the inputs are not + // authentic. + @discardableResult + func willDecryptLast(bytes ciphertext: ArraySlice) throws -> ArraySlice { + // Validate tag + switch mode { + case .combined: + // overwrite expectedTag property used later for verification + self.expectedTag = Array(ciphertext.suffix(tagLength)) + return ciphertext[ciphertext.startIndex..) throws -> ArraySlice { + // Calculate MAC tag. + let ghash = gf.ghashFinish() + let computedTag = Array((ghash ^ eky0).bytes.prefix(tagLength)) + + // Validate tag + guard let expectedTag = self.expectedTag, computedTag == expectedTag else { + throw GCM.Error.fail + } + + return plaintext + } + + func finalize(decrypt plaintext: ArraySlice) throws -> ArraySlice { + // do nothing + return plaintext + } +} + +// MARK: - Local utils + +private func makeCounter(nonce: Array) -> UInt128 { + return UInt128(nonce + [0, 0, 0, 1]) +} + +// Successive counter values are generated using the function incr(), which treats the rightmost 32 +// bits of its argument as a nonnegative integer with the least significant bit on the right +private func incrementCounter(_ counter: UInt128) -> UInt128 { + let b = counter.i.b + 1 + let a = (b == 0 ? counter.i.a + 1 : counter.i.a) + return UInt128((a, b)) +} + +// If data is not a multiple of block size bytes long then the remainder is zero padded +// Note: It's similar to ZeroPadding, but it's not the same. +private func addPadding(_ bytes: Array, blockSize: Int) -> Array { + if bytes.isEmpty { + return Array(repeating: 0, count: blockSize) + } + + let remainder = bytes.count % blockSize + if remainder == 0 { + return bytes + } + + let paddingCount = blockSize - remainder + if paddingCount > 0 { + return bytes + Array(repeating: 0, count: paddingCount) + } + return bytes +} + +// MARK: - GF + +/// The Field GF(2^128) +private final class GF { + static let r = UInt128(a: 0xE100000000000000, b: 0) + + let blockSize: Int + let h: UInt128 + + // AAD won't change + let aadLength: Int + + // Updated for every consumed block + var ciphertextLength: Int + + // Start with 0 + var x: UInt128 + + init(aad: [UInt8], h: UInt128, blockSize: Int) { + self.blockSize = blockSize + aadLength = aad.count + ciphertextLength = 0 + self.h = h + x = 0 + + // Calculate for AAD at the begining + x = GF.calculateX(aad: aad, x: x, h: h, blockSize: blockSize) + } + + @discardableResult + func ghashUpdate(block ciphertextBlock: Array) -> UInt128 { + ciphertextLength += ciphertextBlock.count + x = GF.calculateX(block: addPadding(ciphertextBlock, blockSize: blockSize), x: x, h: h, blockSize: blockSize) + return x + } + + func ghashFinish() -> UInt128 { + // len(A) || len(C) + let len = UInt128(a: UInt64(aadLength * 8), b: UInt64(ciphertextLength * 8)) + x = GF.multiply((x ^ len), h) + return x + } + + // GHASH. One-time calculation + static func ghash(x startx: UInt128 = 0, h: UInt128, aad: Array, ciphertext: Array, blockSize: Int) -> UInt128 { + var x = calculateX(aad: aad, x: startx, h: h, blockSize: blockSize) + x = calculateX(ciphertext: ciphertext, x: x, h: h, blockSize: blockSize) + + // len(aad) || len(ciphertext) + let len = UInt128(a: UInt64(aad.count * 8), b: UInt64(ciphertext.count * 8)) + x = multiply((x ^ len), h) + + return x + } + + // Calculate Ciphertext part, for all blocks + // Not used with incremental calculation. + private static func calculateX(ciphertext: [UInt8], x startx: UInt128, h: UInt128, blockSize: Int) -> UInt128 { + let pciphertext = addPadding(ciphertext, blockSize: blockSize) + let blocksCount = pciphertext.count / blockSize + + var x = startx + for i in 0.., x: UInt128, h: UInt128, blockSize: Int) -> UInt128 { + let k = x ^ UInt128(ciphertextBlock) + return multiply(k, h) + } + + // Calculate AAD part, for all blocks + private static func calculateX(aad: [UInt8], x startx: UInt128, h: UInt128, blockSize: Int) -> UInt128 { + let paad = addPadding(aad, blockSize: blockSize) + let blocksCount = paad.count / blockSize + + var x = startx + for i in 0.. UInt128 { + var z: UInt128 = 0 + var v = x + var k = UInt128(a: 1 << 63, b: 0) + + for _ in 0..<128 { + if y & k == k { + z = z ^ v + } + + if v & 1 != 1 { + v = v >> 1 + } else { + v = (v >> 1) ^ r + } + + k = k >> 1 + } + + return z + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift index 70e4359..0f5c66a 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift @@ -16,17 +16,42 @@ // Output Feedback (OFB) // +public struct OFB: BlockMode { + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + } + + public let options: BlockModeOption = [.initializationVectorRequired, .useEncryptToDecrypt] + private let iv: Array + + public init(iv: Array) { + self.iv = iv + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if iv.count != blockSize { + throw Error.invalidInitializationVector + } + + return OFBModeWorker(blockSize: blockSize, iv: iv.slice, cipherOperation: cipherOperation) + } +} + struct OFBModeWorker: BlockModeWorker { let cipherOperation: CipherOperationOnBlock + let blockSize: Int + let additionalBufferSize: Int = 0 private let iv: ArraySlice private var prev: ArraySlice? - init(iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + init(blockSize: Int, iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + self.blockSize = blockSize self.iv = iv self.cipherOperation = cipherOperation } - mutating func encrypt(_ plaintext: ArraySlice) -> Array { + mutating func encrypt(block plaintext: ArraySlice) -> Array { guard let ciphertext = cipherOperation(prev ?? iv) else { return Array(plaintext) } @@ -34,7 +59,7 @@ struct OFBModeWorker: BlockModeWorker { return xor(plaintext, ciphertext) } - mutating func decrypt(_ ciphertext: ArraySlice) -> Array { + mutating func decrypt(block ciphertext: ArraySlice) -> Array { guard let decrypted = cipherOperation(prev ?? iv) else { return Array(ciphertext) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift index a6dd544..846015d 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift @@ -16,17 +16,42 @@ // Propagating Cipher Block Chaining (PCBC) // +public struct PCBC: BlockMode { + public enum Error: Swift.Error { + /// Invalid IV + case invalidInitializationVector + } + + public let options: BlockModeOption = [.initializationVectorRequired, .paddingRequired] + private let iv: Array + + public init(iv: Array) { + self.iv = iv + } + + public func worker(blockSize: Int, cipherOperation: @escaping CipherOperationOnBlock) throws -> CipherModeWorker { + if iv.count != blockSize { + throw Error.invalidInitializationVector + } + + return PCBCModeWorker(blockSize: blockSize, iv: iv.slice, cipherOperation: cipherOperation) + } +} + struct PCBCModeWorker: BlockModeWorker { let cipherOperation: CipherOperationOnBlock + var blockSize: Int + let additionalBufferSize: Int = 0 private let iv: ArraySlice private var prev: ArraySlice? - init(iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + init(blockSize: Int, iv: ArraySlice, cipherOperation: @escaping CipherOperationOnBlock) { + self.blockSize = blockSize self.iv = iv self.cipherOperation = cipherOperation } - mutating func encrypt(_ plaintext: ArraySlice) -> Array { + mutating func encrypt(block plaintext: ArraySlice) -> Array { guard let ciphertext = cipherOperation(xor(prev ?? iv, plaintext)) else { return Array(plaintext) } @@ -34,7 +59,7 @@ struct PCBCModeWorker: BlockModeWorker { return ciphertext } - mutating func decrypt(_ ciphertext: ArraySlice) -> Array { + mutating func decrypt(block ciphertext: ArraySlice) -> Array { guard let plaintext = cipherOperation(ciphertext) else { return Array(ciphertext) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift index cd8a3ef..34c771c 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift @@ -18,7 +18,6 @@ // public final class Blowfish { - public enum Error: Swift.Error { /// Data padding is required case dataPaddingRequired @@ -26,13 +25,17 @@ public final class Blowfish { case invalidKeyOrInitializationVector /// Invalid IV case invalidInitializationVector + /// Invalid block mode + case invalidBlockMode } public static let blockSize: Int = 8 // 64 bit - fileprivate let blockMode: BlockMode - fileprivate let padding: Padding - private var decryptWorker: BlockModeWorker! - private var encryptWorker: BlockModeWorker! + public let keySize: Int + + private let blockMode: BlockMode + private let padding: Padding + private var decryptWorker: CipherModeWorker! + private var encryptWorker: CipherModeWorker! private let N = 16 // rounds private var P: Array @@ -311,11 +314,12 @@ public final class Blowfish { ], ] - public init(key: Array, blockMode: BlockMode = .CBC(iv: Array(repeating: 0, count: Blowfish.blockSize)), padding: Padding) throws { + public init(key: Array, blockMode: BlockMode = CBC(iv: Array(repeating: 0, count: Blowfish.blockSize)), padding: Padding) throws { precondition(key.count >= 5 && key.count <= 56) self.blockMode = blockMode self.padding = padding + keySize = key.count S = origS P = origP @@ -327,10 +331,9 @@ public final class Blowfish { private func setupBlockModeWorkers() throws { encryptWorker = try blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: encrypt) - switch blockMode { - case .CFB, .OFB, .CTR: + if blockMode.options.contains(.useEncryptToDecrypt) { decryptWorker = try blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: encrypt) - default: + } else { decryptWorker = try blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: decrypt) } } @@ -490,20 +493,18 @@ public final class Blowfish { } extension Blowfish: Cipher { - /// Encrypt the 8-byte padded buffer, block by block. Note that for amounts of data larger than a block, it is not safe to just call encrypt() on successive blocks. /// /// - Parameter bytes: Plaintext data /// - Returns: Encrypted data - public func encrypt(_ bytes: C) throws -> Array where C.Element == UInt8, C.IndexDistance == Int, C.Index == Int { - + public func encrypt(_ bytes: C) throws -> Array where C.Element == UInt8, C.Index == Int { let bytes = padding.add(to: Array(bytes), blockSize: Blowfish.blockSize) // FIXME: Array(bytes) copies var out = Array() out.reserveCapacity(bytes.count) for chunk in bytes.batched(by: Blowfish.blockSize) { - out += encryptWorker.encrypt(chunk) + out += encryptWorker.encrypt(block: chunk) } if blockMode.options.contains(.paddingRequired) && (out.count % Blowfish.blockSize != 0) { @@ -517,8 +518,7 @@ extension Blowfish: Cipher { /// /// - Parameter bytes: Ciphertext data /// - Returns: Plaintext data - public func decrypt(_ bytes: C) throws -> Array where C.Element == UInt8, C.IndexDistance == Int, C.Index == Int { - + public func decrypt(_ bytes: C) throws -> Array where C.Element == UInt8, C.Index == Int { if blockMode.options.contains(.paddingRequired) && (bytes.count % Blowfish.blockSize != 0) { throw Error.dataPaddingRequired } @@ -527,7 +527,7 @@ extension Blowfish: Cipher { out.reserveCapacity(bytes.count) for chunk in Array(bytes).batched(by: Blowfish.blockSize) { - out += decryptWorker.decrypt(chunk) // FIXME: copying here is innefective + out += decryptWorker.decrypt(block: chunk) // FIXME: copying here is innefective } out = padding.remove(from: out, blockSize: Blowfish.blockSize) diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/CBCMAC.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/CBCMAC.swift new file mode 100644 index 0000000..e14f2bd --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/CBCMAC.swift @@ -0,0 +1,104 @@ +// +// CryptoSwift +// +// Copyright (C) 2014-2017 Marcin Krzyżanowski +// 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: +// +// - 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 is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +public class CBCMAC: Authenticator { + public enum Error: Swift.Error { + case wrongKeyLength + } + + private let key: SecureBytes + + private static let BlockSize: Int = 16 + private static let Zero: Array = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] + private static let Rb: Array = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87] + + public init(key: Array) throws { + if key.count != 16 { + throw Error.wrongKeyLength + } + self.key = SecureBytes(bytes: key) + } + + // MARK: Authenticator + + public func authenticate(_ bytes: Array) throws -> Array { + let aes = try AES(key: Array(key), blockMode: CBC(iv: CBCMAC.Zero), padding: .noPadding) + + let l = try aes.encrypt(CBCMAC.Zero) + var subKey1 = leftShiftOneBit(l) + if (l[0] & 0x80) != 0 { + subKey1 = xor(CBCMAC.Rb, subKey1) + } + var subKey2 = leftShiftOneBit(subKey1) + if (subKey1[0] & 0x80) != 0 { + subKey2 = xor(CBCMAC.Rb, subKey2) + } + + let lastBlockComplete: Bool + let blockCount = (bytes.count + CBCMAC.BlockSize - 1) / CBCMAC.BlockSize + if blockCount == 0 { + lastBlockComplete = false + } else { + lastBlockComplete = bytes.count % CBCMAC.BlockSize == 0 + } + var paddedBytes = bytes + if !lastBlockComplete { + bitPadding(to: &paddedBytes, blockSize: CBCMAC.BlockSize) + } + + var blocks = Array(paddedBytes.batched(by: CBCMAC.BlockSize)) + var lastBlock = blocks.popLast()! + if lastBlockComplete { + lastBlock = xor(lastBlock, subKey1) + } else { + lastBlock = xor(lastBlock, subKey2) + } + + var x = Array(repeating: 0x00, count: CBCMAC.BlockSize) + var y = Array(repeating: 0x00, count: CBCMAC.BlockSize) + for block in blocks { + y = xor(block, x) + x = try aes.encrypt(y) + } + // the difference between CMAC and CBC-MAC is that CMAC xors the final block with a secret value + y = process(lastBlock: lastBlock, with: x) + return try aes.encrypt(y) + } + + func process(lastBlock: ArraySlice, with x: [UInt8]) -> [UInt8] { + return Array(lastBlock) + } + + // MARK: Helper methods + + /** + Performs left shift by one bit to the bit string aquired after concatenating al bytes in the byte array + - parameters: + - bytes: byte array + - returns: bit shifted bit string split again in array of bytes + */ + private func leftShiftOneBit(_ bytes: Array) -> Array { + var shifted = Array(repeating: 0x00, count: bytes.count) + let last = bytes.count - 1 + for index in 0.., with x: [UInt8]) -> [UInt8] { + return xor(lastBlock, x) + } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift index 5bc78e6..250ee9d 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift @@ -17,12 +17,13 @@ // public final class ChaCha20: BlockCipher { - public enum Error: Swift.Error { case invalidKeyOrInitializationVector + case notSupported } public static let blockSize = 64 // 512 / 8 + public let keySize: Int fileprivate let key: Key fileprivate var counter: Array @@ -35,6 +36,7 @@ public final class ChaCha20: BlockCipher { } self.key = Key(bytes: key) + keySize = self.key.count if nonce.count == 8 { counter = [0, 0, 0, 0, 0, 0, 0, 0] + nonce @@ -222,7 +224,7 @@ public final class ChaCha20: BlockCipher { var u: UInt32 = 1 for i in 0..<4 { u += UInt32(counter[i]) - counter[i] = UInt8(u & 0xFF) + counter[i] = UInt8(u & 0xff) u >>= 8 } bytesSlice = bytesSlice[bytesSlice.startIndex + ChaCha20.blockSize..) throws -> Array { return process(bytes: bytes, counter: &counter, key: Array(key)) } @@ -251,9 +253,9 @@ extension ChaCha20: Cipher { } // MARK: Encryptor -extension ChaCha20 { - public struct Encryptor: Updatable { +extension ChaCha20 { + public struct ChaChaEncryptor: Cryptor, Updatable { private var accumulated = Array() private let chacha: ChaCha20 @@ -274,13 +276,17 @@ extension ChaCha20 { } return encrypted } + + public func seek(to: Int) throws { + throw Error.notSupported + } } } // MARK: Decryptor -extension ChaCha20 { - public struct Decryptor: Updatable { +extension ChaCha20 { + public struct ChaChaDecryptor: Cryptor, Updatable { private var accumulated = Array() private var offset: Int = 0 @@ -319,17 +325,23 @@ extension ChaCha20 { return plaintext } + + public func seek(to: Int) throws { + throw Error.notSupported + } } } // MARK: Cryptors -extension ChaCha20: Cryptors { - public func makeEncryptor() -> ChaCha20.Encryptor { - return Encryptor(chacha: self) +extension ChaCha20: Cryptors { + //TODO: Use BlockEncryptor/BlockDecryptor + + public func makeEncryptor() -> Cryptor & Updatable { + return ChaCha20.ChaChaEncryptor(chacha: self) } - public func makeDecryptor() -> ChaCha20.Decryptor { - return Decryptor(chacha: self) + public func makeDecryptor() -> Cryptor & Updatable { + return ChaCha20.ChaChaDecryptor(chacha: self) } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift index 5c4c5bb..1c4fd48 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift @@ -16,91 +16,140 @@ /// CRC - cyclic redundancy check code. public final class Checksum { private static let table32: Array = [ - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, - 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, - 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, - 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, - 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, - 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, - 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, - 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, - 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, - 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, - 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, - 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, - 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, - 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, - 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, - 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, - 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, - 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, - 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, - 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, - 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, - 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, - 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, - 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, - 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, - 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, - 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, - 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, - 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, - 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d, + 0x0000_0000, 0x7707_3096, 0xEE0E_612C, 0x9909_51BA, 0x076D_C419, 0x706A_F48F, 0xE963_A535, 0x9E64_95A3, + 0x0EDB_8832, 0x79DC_B8A4, 0xE0D5_E91E, 0x97D2_D988, 0x09B6_4C2B, 0x7EB1_7CBD, 0xE7B8_2D07, 0x90BF_1D91, + 0x1DB7_1064, 0x6AB0_20F2, 0xF3B9_7148, 0x84BE_41DE, 0x1ADA_D47D, 0x6DDD_E4EB, 0xF4D4_B551, 0x83D3_85C7, + 0x136C_9856, 0x646B_A8C0, 0xFD62_F97A, 0x8A65_C9EC, 0x1401_5C4F, 0x6306_6CD9, 0xFA0F_3D63, 0x8D08_0DF5, + 0x3B6E_20C8, 0x4C69_105E, 0xD560_41E4, 0xA267_7172, 0x3C03_E4D1, 0x4B04_D447, 0xD20D_85FD, 0xA50A_B56B, + 0x35B5_A8FA, 0x42B2_986C, 0xDBBB_C9D6, 0xACBC_F940, 0x32D8_6CE3, 0x45DF_5C75, 0xDCD6_0DCF, 0xABD1_3D59, + 0x26D9_30AC, 0x51DE_003A, 0xC8D7_5180, 0xBFD0_6116, 0x21B4_F4B5, 0x56B3_C423, 0xCFBA_9599, 0xB8BD_A50F, + 0x2802_B89E, 0x5F05_8808, 0xC60C_D9B2, 0xB10B_E924, 0x2F6F_7C87, 0x5868_4C11, 0xC161_1DAB, 0xB666_2D3D, + 0x76DC_4190, 0x01DB_7106, 0x98D2_20BC, 0xEFD5_102A, 0x71B1_8589, 0x06B6_B51F, 0x9FBF_E4A5, 0xE8B8_D433, + 0x7807_C9A2, 0x0F00_F934, 0x9609_A88E, 0xE10E_9818, 0x7F6A_0DBB, 0x086D_3D2D, 0x9164_6C97, 0xE663_5C01, + 0x6B6B_51F4, 0x1C6C_6162, 0x8565_30D8, 0xF262_004E, 0x6C06_95ED, 0x1B01_A57B, 0x8208_F4C1, 0xF50F_C457, + 0x65B0_D9C6, 0x12B7_E950, 0x8BBE_B8EA, 0xFCB9_887C, 0x62DD_1DDF, 0x15DA_2D49, 0x8CD3_7CF3, 0xFBD4_4C65, + 0x4DB2_6158, 0x3AB5_51CE, 0xA3BC_0074, 0xD4BB_30E2, 0x4ADF_A541, 0x3DD8_95D7, 0xA4D1_C46D, 0xD3D6_F4FB, + 0x4369_E96A, 0x346E_D9FC, 0xAD67_8846, 0xDA60_B8D0, 0x4404_2D73, 0x3303_1DE5, 0xAA0A_4C5F, 0xDD0D_7CC9, + 0x5005_713C, 0x2702_41AA, 0xBE0B_1010, 0xC90C_2086, 0x5768_B525, 0x206F_85B3, 0xB966_D409, 0xCE61_E49F, + 0x5EDE_F90E, 0x29D9_C998, 0xB0D0_9822, 0xC7D7_A8B4, 0x59B3_3D17, 0x2EB4_0D81, 0xB7BD_5C3B, 0xC0BA_6CAD, + 0xEDB8_8320, 0x9ABF_B3B6, 0x03B6_E20C, 0x74B1_D29A, 0xEAD5_4739, 0x9DD2_77AF, 0x04DB_2615, 0x73DC_1683, + 0xE363_0B12, 0x9464_3B84, 0x0D6D_6A3E, 0x7A6A_5AA8, 0xE40E_CF0B, 0x9309_FF9D, 0x0A00_AE27, 0x7D07_9EB1, + 0xF00F_9344, 0x8708_A3D2, 0x1E01_F268, 0x6906_C2FE, 0xF762_575D, 0x8065_67CB, 0x196C_3671, 0x6E6B_06E7, + 0xFED4_1B76, 0x89D3_2BE0, 0x10DA_7A5A, 0x67DD_4ACC, 0xF9B9_DF6F, 0x8EBE_EFF9, 0x17B7_BE43, 0x60B0_8ED5, + 0xD6D6_A3E8, 0xA1D1_937E, 0x38D8_C2C4, 0x4FDF_F252, 0xD1BB_67F1, 0xA6BC_5767, 0x3FB5_06DD, 0x48B2_364B, + 0xD80D_2BDA, 0xAF0A_1B4C, 0x3603_4AF6, 0x4104_7A60, 0xDF60_EFC3, 0xA867_DF55, 0x316E_8EEF, 0x4669_BE79, + 0xCB61_B38C, 0xBC66_831A, 0x256F_D2A0, 0x5268_E236, 0xCC0C_7795, 0xBB0B_4703, 0x2202_16B9, 0x5505_262F, + 0xC5BA_3BBE, 0xB2BD_0B28, 0x2BB4_5A92, 0x5CB3_6A04, 0xC2D7_FFA7, 0xB5D0_CF31, 0x2CD9_9E8B, 0x5BDE_AE1D, + 0x9B64_C2B0, 0xEC63_F226, 0x756A_A39C, 0x026D_930A, 0x9C09_06A9, 0xEB0E_363F, 0x7207_6785, 0x0500_5713, + 0x95BF_4A82, 0xE2B8_7A14, 0x7BB1_2BAE, 0x0CB6_1B38, 0x92D2_8E9B, 0xE5D5_BE0D, 0x7CDC_EFB7, 0x0BDB_DF21, + 0x86D3_D2D4, 0xF1D4_E242, 0x68DD_B3F8, 0x1FDA_836E, 0x81BE_16CD, 0xF6B9_265B, 0x6FB0_77E1, 0x18B7_4777, + 0x8808_5AE6, 0xFF0F_6A70, 0x6606_3BCA, 0x1101_0B5C, 0x8F65_9EFF, 0xF862_AE69, 0x616B_FFD3, 0x166C_CF45, + 0xA00A_E278, 0xD70D_D2EE, 0x4E04_8354, 0x3903_B3C2, 0xA767_2661, 0xD060_16F7, 0x4969_474D, 0x3E6E_77DB, + 0xAED1_6A4A, 0xD9D6_5ADC, 0x40DF_0B66, 0x37D8_3BF0, 0xA9BC_AE53, 0xDEBB_9EC5, 0x47B2_CF7F, 0x30B5_FFE9, + 0xBDBD_F21C, 0xCABA_C28A, 0x53B3_9330, 0x24B4_A3A6, 0xBAD0_3605, 0xCDD7_0693, 0x54DE_5729, 0x23D9_67BF, + 0xB366_7A2E, 0xC461_4AB8, 0x5D68_1B02, 0x2A6F_2B94, 0xB40B_BE37, 0xC30C_8EA1, 0x5A05_DF1B, 0x2D02_EF8D, + ] + + private static let table32c: Array = [ + 0x0000_0000, 0xF26B_8303, 0xE13B_70F7, 0x1350_F3F4, 0xC79A_971F, 0x35F1_141C, 0x26A1_E7E8, 0xD4CA_64EB, + 0x8AD9_58CF, 0x78B2_DBCC, 0x6BE2_2838, 0x9989_AB3B, 0x4D43_CFD0, 0xBF28_4CD3, 0xAC78_BF27, 0x5E13_3C24, + 0x105E_C76F, 0xE235_446C, 0xF165_B798, 0x030E_349B, 0xD7C4_5070, 0x25AF_D373, 0x36FF_2087, 0xC494_A384, + 0x9A87_9FA0, 0x68EC_1CA3, 0x7BBC_EF57, 0x89D7_6C54, 0x5D1D_08BF, 0xAF76_8BBC, 0xBC26_7848, 0x4E4D_FB4B, + 0x20BD_8EDE, 0xD2D6_0DDD, 0xC186_FE29, 0x33ED_7D2A, 0xE727_19C1, 0x154C_9AC2, 0x061C_6936, 0xF477_EA35, + 0xAA64_D611, 0x580F_5512, 0x4B5F_A6E6, 0xB934_25E5, 0x6DFE_410E, 0x9F95_C20D, 0x8CC5_31F9, 0x7EAE_B2FA, + 0x30E3_49B1, 0xC288_CAB2, 0xD1D8_3946, 0x23B3_BA45, 0xF779_DEAE, 0x0512_5DAD, 0x1642_AE59, 0xE429_2D5A, + 0xBA3A_117E, 0x4851_927D, 0x5B01_6189, 0xA96A_E28A, 0x7DA0_8661, 0x8FCB_0562, 0x9C9B_F696, 0x6EF0_7595, + 0x417B_1DBC, 0xB310_9EBF, 0xA040_6D4B, 0x522B_EE48, 0x86E1_8AA3, 0x748A_09A0, 0x67DA_FA54, 0x95B1_7957, + 0xCBA2_4573, 0x39C9_C670, 0x2A99_3584, 0xD8F2_B687, 0x0C38_D26C, 0xFE53_516F, 0xED03_A29B, 0x1F68_2198, + 0x5125_DAD3, 0xA34E_59D0, 0xB01E_AA24, 0x4275_2927, 0x96BF_4DCC, 0x64D4_CECF, 0x7784_3D3B, 0x85EF_BE38, + 0xDBFC_821C, 0x2997_011F, 0x3AC7_F2EB, 0xC8AC_71E8, 0x1C66_1503, 0xEE0D_9600, 0xFD5D_65F4, 0x0F36_E6F7, + 0x61C6_9362, 0x93AD_1061, 0x80FD_E395, 0x7296_6096, 0xA65C_047D, 0x5437_877E, 0x4767_748A, 0xB50C_F789, + 0xEB1F_CBAD, 0x1974_48AE, 0x0A24_BB5A, 0xF84F_3859, 0x2C85_5CB2, 0xDEEE_DFB1, 0xCDBE_2C45, 0x3FD5_AF46, + 0x7198_540D, 0x83F3_D70E, 0x90A3_24FA, 0x62C8_A7F9, 0xB602_C312, 0x4469_4011, 0x5739_B3E5, 0xA552_30E6, + 0xFB41_0CC2, 0x092A_8FC1, 0x1A7A_7C35, 0xE811_FF36, 0x3CDB_9BDD, 0xCEB0_18DE, 0xDDE0_EB2A, 0x2F8B_6829, + 0x82F6_3B78, 0x709D_B87B, 0x63CD_4B8F, 0x91A6_C88C, 0x456C_AC67, 0xB707_2F64, 0xA457_DC90, 0x563C_5F93, + 0x082F_63B7, 0xFA44_E0B4, 0xE914_1340, 0x1B7F_9043, 0xCFB5_F4A8, 0x3DDE_77AB, 0x2E8E_845F, 0xDCE5_075C, + 0x92A8_FC17, 0x60C3_7F14, 0x7393_8CE0, 0x81F8_0FE3, 0x5532_6B08, 0xA759_E80B, 0xB409_1BFF, 0x4662_98FC, + 0x1871_A4D8, 0xEA1A_27DB, 0xF94A_D42F, 0x0B21_572C, 0xDFEB_33C7, 0x2D80_B0C4, 0x3ED0_4330, 0xCCBB_C033, + 0xA24B_B5A6, 0x5020_36A5, 0x4370_C551, 0xB11B_4652, 0x65D1_22B9, 0x97BA_A1BA, 0x84EA_524E, 0x7681_D14D, + 0x2892_ED69, 0xDAF9_6E6A, 0xC9A9_9D9E, 0x3BC2_1E9D, 0xEF08_7A76, 0x1D63_F975, 0x0E33_0A81, 0xFC58_8982, + 0xB215_72C9, 0x407E_F1CA, 0x532E_023E, 0xA145_813D, 0x758F_E5D6, 0x87E4_66D5, 0x94B4_9521, 0x66DF_1622, + 0x38CC_2A06, 0xCAA7_A905, 0xD9F7_5AF1, 0x2B9C_D9F2, 0xFF56_BD19, 0x0D3D_3E1A, 0x1E6D_CDEE, 0xEC06_4EED, + 0xC38D_26C4, 0x31E6_A5C7, 0x22B6_5633, 0xD0DD_D530, 0x0417_B1DB, 0xF67C_32D8, 0xE52C_C12C, 0x1747_422F, + 0x4954_7E0B, 0xBB3F_FD08, 0xA86F_0EFC, 0x5A04_8DFF, 0x8ECE_E914, 0x7CA5_6A17, 0x6FF5_99E3, 0x9D9E_1AE0, + 0xD3D3_E1AB, 0x21B8_62A8, 0x32E8_915C, 0xC083_125F, 0x1449_76B4, 0xE622_F5B7, 0xF572_0643, 0x0719_8540, + 0x590A_B964, 0xAB61_3A67, 0xB831_C993, 0x4A5A_4A90, 0x9E90_2E7B, 0x6CFB_AD78, 0x7FAB_5E8C, 0x8DC0_DD8F, + 0xE330_A81A, 0x115B_2B19, 0x020B_D8ED, 0xF060_5BEE, 0x24AA_3F05, 0xD6C1_BC06, 0xC591_4FF2, 0x37FA_CCF1, + 0x69E9_F0D5, 0x9B82_73D6, 0x88D2_8022, 0x7AB9_0321, 0xAE73_67CA, 0x5C18_E4C9, 0x4F48_173D, 0xBD23_943E, + 0xF36E_6F75, 0x0105_EC76, 0x1255_1F82, 0xE03E_9C81, 0x34F4_F86A, 0xC69F_7B69, 0xD5CF_889D, 0x27A4_0B9E, + 0x79B7_37BA, 0x8BDC_B4B9, 0x988C_474D, 0x6AE7_C44E, 0xBE2D_A0A5, 0x4C46_23A6, 0x5F16_D052, 0xAD7D_5351, ] private static let table16: Array = [ - 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, - 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, - 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, - 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, - 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, - 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, - 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, - 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, - 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, - 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, - 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, - 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, - 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, - 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, - 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, - 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, - 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, - 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, - 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, - 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, - 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, - 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, - 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, - 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, - 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, - 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, - 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, - 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, - 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, - 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, - 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, - 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040, + 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, + 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, + 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, + 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, + 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, + 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, + 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, + 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, + 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, + 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, + 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, + 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, + 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, + 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, + 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, + 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, + 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, + 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, + 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, + 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, + 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, + 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, + 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, + 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, + 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, + 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, + 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, + 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, + 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, + 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, + 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, + 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040, ] + /// Polynomial: 0xEDB88320 (Reversed) - IEEE func crc32(_ message: Array, seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { - var crc: UInt32 = seed != nil ? seed! : 0xffffffff + var crc: UInt32 = seed != nil ? seed! : 0xFFFF_FFFF for chunk in message.batched(by: 256) { for b in chunk { - let idx = Int((crc ^ UInt32(reflect ? b : reversed(b))) & 0xff) + let idx = Int((crc ^ UInt32(reflect ? b : reversed(b))) & 0xFF) crc = (crc >> 8) ^ Checksum.table32[idx] } } - return (reflect ? crc : reversed(crc)) ^ 0xffffffff + return (reflect ? crc : reversed(crc)) ^ 0xFFFF_FFFF } + /// Polynomial: 0x82F63B78 (Reversed) - Castagnoli + func crc32c(_ message: Array, seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { + var crc: UInt32 = seed != nil ? seed! : 0xFFFF_FFFF + for chunk in message.batched(by: 256) { + for b in chunk { + let idx = Int((crc ^ UInt32(reflect ? b : reversed(b))) & 0xFF) + crc = (crc >> 8) ^ Checksum.table32c[idx] + } + } + return (reflect ? crc : reversed(crc)) ^ 0xFFFF_FFFF + } + + /// Polynomial: 0xA001 (Reversed) - IBM func crc16(_ message: Array, seed: UInt16? = nil) -> UInt16 { var crc: UInt16 = seed != nil ? seed! : 0x0000 for chunk in message.batched(by: 256) { for b in chunk { - crc = (crc >> 8) ^ Checksum.table16[Int((crc ^ UInt16(b)) & 0xff)] + crc = (crc >> 8) ^ Checksum.table16[Int((crc ^ UInt16(b)) & 0xFF)] } } return crc @@ -108,9 +157,9 @@ public final class Checksum { } // MARK: Public interface -public extension Checksum { - /// Calculate CRC32 +public extension Checksum { + /// Calculate CRC32. /// /// - parameter message: Message /// - parameter seed: Seed value (Optional) @@ -121,6 +170,17 @@ public extension Checksum { return Checksum().crc32(message, seed: seed, reflect: reflect) } + /// Calculate CRC32C + /// + /// - parameter message: Message + /// - parameter seed: Seed value (Optional) + /// - parameter reflect: is reflect (default true) + /// + /// - returns: Calculated code + static func crc32c(_ message: Array, seed: UInt32? = nil, reflect: Bool = true) -> UInt32 { + return Checksum().crc32c(message, seed: seed, reflect: reflect) + } + /// Calculate CRC16 /// /// - parameter message: Message diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cipher.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cipher.swift index cb3acad..6e2b636 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cipher.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cipher.swift @@ -19,6 +19,8 @@ public enum CipherError: Error { } public protocol Cipher: class { + var keySize: Int { get } + /// Encrypt given bytes at once /// /// - parameter bytes: Plaintext data diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Collection+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Collection+Extension.swift index eef4e98..1b79faa 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Collection+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Collection+Extension.swift @@ -13,7 +13,6 @@ // - This notice may not be removed or altered from any source or binary distribution. // extension Collection where Self.Element == UInt8, Self.Index == Int { - // Big endian order func toUInt32Array() -> Array { if isEmpty { diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeWorker.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/CompactMap.swift similarity index 68% rename from Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeWorker.swift rename to Example/Pods/CryptoSwift/Sources/CryptoSwift/CompactMap.swift index c7beb4d..74cf92a 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeWorker.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/CompactMap.swift @@ -1,7 +1,6 @@ +//// CryptoSwift // -// CryptoSwift -// -// Copyright (C) 2014-2017 Marcin Krzyżanowski +// Copyright (C) 2014-2018 Marcin Krzyżanowski // 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. @@ -13,8 +12,12 @@ // - This notice may not be removed or altered from any source or binary distribution. // -protocol BlockModeWorker { - var cipherOperation: CipherOperationOnBlock { get } - mutating func encrypt(_ plaintext: ArraySlice) -> Array - mutating func decrypt(_ ciphertext: ArraySlice) -> Array -} +#if swift(>=4.1) + // TODO: remove this file when Xcode 9.2 is no longer used +#else + extension Sequence { + public func compactMap(_ transform: (Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult] { + return try flatMap(transform) + } + } +#endif diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomAccessCryptor.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptor.swift similarity index 85% rename from Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomAccessCryptor.swift rename to Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptor.swift index b665778..f79f4b3 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomAccessCryptor.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptor.swift @@ -13,12 +13,10 @@ // - This notice may not be removed or altered from any source or binary distribution. // -/// Random access cryptor -public protocol RandomAccessCryptor: Updatable { +/// Cryptor (Encryptor or Decryptor) +public protocol Cryptor { /// Seek to position in file, if block mode allows random access. /// /// - parameter to: new value of counter - /// - /// - returns: true if seek succeed - @discardableResult mutating func seek(to: Int) -> Bool + mutating func seek(to: Int) throws } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift index fc942f6..4baa53b 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift @@ -13,29 +13,26 @@ // - This notice may not be removed or altered from any source or binary distribution. // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif /// Worker cryptor/decryptor of `Updatable` types public protocol Cryptors: class { - associatedtype EncryptorType: Updatable - associatedtype DecryptorType: Updatable /// Cryptor suitable for encryption - func makeEncryptor() throws -> EncryptorType + func makeEncryptor() throws -> Cryptor & Updatable /// Cryptor suitable for decryption - func makeDecryptor() throws -> DecryptorType + func makeDecryptor() throws -> Cryptor & Updatable /// Generate array of random bytes. Helper function. static func randomIV(_ blockSize: Int) -> Array } extension Cryptors { - public static func randomIV(_ blockSize: Int) -> Array { var randomIV: Array = Array() randomIV.reserveCapacity(blockSize) diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift index 35e754d..c3976ea 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift @@ -13,12 +13,11 @@ // - This notice may not be removed or altered from any source or binary distribution. // -@available(*, deprecated: 0.6.0, renamed: "Digest") +@available(*, renamed: "Digest") public typealias Hash = Digest /// Hash functions to calculate Digest. public struct Digest { - /// Calculate MD5 Digest /// - parameter bytes: input message /// - returns: Digest bytes diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift index bd9da45..ba79733 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift @@ -16,9 +16,8 @@ import Foundation extension AES { - /// Initialize with CBC block mode. public convenience init(key: String, iv: String, padding: Padding = .pkcs7) throws { - try self.init(key: key.bytes, blockMode: .CBC(iv: iv.bytes), padding: padding) + try self.init(key: key.bytes, blockMode: CBC(iv: iv.bytes), padding: padding) } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift index 20feefe..ffab35d 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift @@ -16,12 +16,11 @@ import Foundation public extension Array where Element == UInt8 { - - public func toBase64() -> String? { - return Data(bytes: self).base64EncodedString() + func toBase64() -> String? { + return Data( self).base64EncodedString() } - public init(base64: String) { + init(base64: String) { self.init() guard let decodedData = Data(base64Encoded: base64) else { diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift index a871b18..be065b9 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift @@ -16,9 +16,8 @@ import Foundation extension Blowfish { - /// Initialize with CBC block mode. public convenience init(key: String, iv: String, padding: Padding = .pkcs7) throws { - try self.init(key: key.bytes, blockMode: .CBC(iv: iv.bytes), padding: padding) + try self.init(key: key.bytes, blockMode: CBC(iv: iv.bytes), padding: padding) } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift index 8cda6c7..c1f3676 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift @@ -16,7 +16,6 @@ import Foundation extension ChaCha20 { - public convenience init(key: String, iv: String) throws { try self.init(key: key.bytes, iv: iv.bytes) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift index d310f3a..5da7329 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift @@ -16,12 +16,11 @@ import Foundation extension Data { - /// Two octet checksum as defined in RFC-4880. Sum of all octets, mod 65536 public func checksum() -> UInt16 { var s: UInt32 = 0 var bytesArray = bytes - for i in 0.. Data { - return Data(bytes: Digest.md5(bytes)) + return Data( Digest.md5(bytes)) } public func sha1() -> Data { - return Data(bytes: Digest.sha1(bytes)) + return Data( Digest.sha1(bytes)) } public func sha224() -> Data { - return Data(bytes: Digest.sha224(bytes)) + return Data( Digest.sha224(bytes)) } public func sha256() -> Data { - return Data(bytes: Digest.sha256(bytes)) + return Data( Digest.sha256(bytes)) } public func sha384() -> Data { - return Data(bytes: Digest.sha384(bytes)) + return Data( Digest.sha384(bytes)) } public func sha512() -> Data { - return Data(bytes: Digest.sha512(bytes)) + return Data( Digest.sha512(bytes)) } public func sha3(_ variant: SHA3.Variant) -> Data { - return Data(bytes: Digest.sha3(bytes, variant: variant)) + return Data( Digest.sha3(bytes, variant: variant)) } public func crc32(seed: UInt32? = nil, reflect: Bool = true) -> Data { - return Data(bytes: Checksum.crc32(bytes, seed: seed, reflect: reflect).bytes()) + return Data( Checksum.crc32(bytes, seed: seed, reflect: reflect).bytes()) + } + + public func crc32c(seed: UInt32? = nil, reflect: Bool = true) -> Data { + return Data( Checksum.crc32c(bytes, seed: seed, reflect: reflect).bytes()) } public func crc16(seed: UInt16? = nil) -> Data { - return Data(bytes: Checksum.crc16(bytes, seed: seed).bytes()) + return Data( Checksum.crc16(bytes, seed: seed).bytes()) } public func encrypt(cipher: Cipher) throws -> Data { - return Data(bytes: try cipher.encrypt(bytes.slice)) + return Data( try cipher.encrypt(bytes.slice)) } public func decrypt(cipher: Cipher) throws -> Data { - return Data(bytes: try cipher.decrypt(bytes.slice)) + return Data( try cipher.decrypt(bytes.slice)) } public func authenticate(with authenticator: Authenticator) throws -> Data { - return Data(bytes: try authenticator.authenticate(bytes)) + return Data( try authenticator.authenticate(bytes)) } } extension Data { - public init(hex: String) { - self.init(bytes: Array(hex: hex)) + self.init(Array(hex: hex)) } public var bytes: Array { diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/HMAC+Foundation.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/HMAC+Foundation.swift index 796455e..fd4d77c 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/HMAC+Foundation.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/HMAC+Foundation.swift @@ -16,7 +16,6 @@ import Foundation extension HMAC { - public convenience init(key: String, variant: HMAC.Variant = .md5) throws { self.init(key: key.bytes, variant: variant) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift index b48a99c..2a497e6 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift @@ -16,7 +16,6 @@ import Foundation extension Rabbit { - public convenience init(key: String) throws { try self.init(key: key.bytes) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/String+FoundationExtension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/String+FoundationExtension.swift index fd0fa9f..5cd7e9d 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/String+FoundationExtension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/String+FoundationExtension.swift @@ -16,7 +16,6 @@ import Foundation extension String { - /// Return Base64 back to String public func decryptBase64ToString(cipher: Cipher) throws -> String { guard let decodedData = Data(base64Encoded: self, options: []) else { diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Generics.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Generics.swift index cd9a7d9..51797ce 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Generics.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Generics.swift @@ -48,8 +48,8 @@ func arrayOfBytes(value: T, length totalBytes: Int = Memor bytes[totalBytes - 1 - j] = (bytesPointer + j).pointee } - valuePointer.deinitialize() - valuePointer.deallocate(capacity: 1) + valuePointer.deinitialize(count: 1) + valuePointer.deallocate() return bytes } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift index b74fba8..daa8bbf 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift @@ -16,28 +16,27 @@ // https://www.ietf.org/rfc/rfc5869.txt // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif - + /// A key derivation function. /// /// HKDF - HMAC-based Extract-and-Expand Key Derivation Function. public struct HKDF { - public enum Error: Swift.Error { case invalidInput case derivedKeyTooLong } - + private let numBlocks: Int // l private let dkLen: Int private let info: Array fileprivate let prk: Array fileprivate let variant: HMAC.Variant - + /// - parameters: /// - variant: hash variant /// - salt: optional salt (if not provided, it is set to a sequence of variant.digestLength zeros) @@ -47,7 +46,7 @@ public struct HKDF { guard !password.isEmpty else { throw Error.invalidInput } - + let dkLen = keyLength ?? variant.digestLength let keyLengthFinal = Double(dkLen) let hLen = Double(variant.digestLength) @@ -55,32 +54,31 @@ public struct HKDF { guard numBlocks <= 255 else { throw Error.derivedKeyTooLong } - + /// HKDF-Extract(salt, password) -> PRK /// - PRK - a pseudo-random key; it is used by calculate() - self.prk = try HMAC(key: salt ?? [], variant: variant).authenticate(password) + prk = try HMAC(key: salt ?? [], variant: variant).authenticate(password) self.info = info ?? [] self.variant = variant self.dkLen = dkLen self.numBlocks = numBlocks } - + public func calculate() throws -> Array { - let hmac = HMAC(key: self.prk, variant: self.variant) + let hmac = HMAC(key: prk, variant: variant) var ret = Array() - ret.reserveCapacity(self.numBlocks * self.variant.digestLength) + ret.reserveCapacity(numBlocks * variant.digestLength) var value = Array() - for i in 1...self.numBlocks { - value.append(contentsOf: self.info) + for i in 1...numBlocks { + value.append(contentsOf: info) value.append(UInt8(i)) - + let bytes = try hmac.authenticate(value) ret.append(contentsOf: bytes) - + /// update value to use it as input for next iteration value = bytes } return Array(ret.prefix(dkLen)) } } - diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift index 0c03681..c5bfe3d 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift @@ -14,7 +14,6 @@ // public final class HMAC: Authenticator { - public enum Error: Swift.Error { case authenticateError case invalidInput @@ -38,7 +37,7 @@ public final class HMAC: Authenticator { } } - func calculateHash(_ bytes: Array) -> Array? { + func calculateHash(_ bytes: Array) -> Array { switch self { case .sha1: return Digest.sha1(bytes) @@ -73,9 +72,8 @@ public final class HMAC: Authenticator { self.key = key if key.count > variant.blockSize() { - if let hash = variant.calculateHash(key) { - self.key = hash - } + let hash = variant.calculateHash(key) + self.key = hash } if key.count < variant.blockSize() { @@ -95,10 +93,8 @@ public final class HMAC: Authenticator { ipad[idx] = key[idx] ^ ipad[idx] } - guard let ipadAndMessageHash = variant.calculateHash(ipad + bytes), - let result = variant.calculateHash(opad + ipadAndMessageHash) else { - throw Error.authenticateError - } + let ipadAndMessageHash = variant.calculateHash(ipad + bytes) + let result = variant.calculateHash(opad + ipadAndMessageHash) // return Array(result[0..<10]) // 80 bits return result diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift index deb057d..98b1476 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift @@ -14,10 +14,10 @@ // - This notice may not be removed or altered from any source or binary distribution. // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif /* array of bits */ @@ -30,9 +30,9 @@ extension Int { extension FixedWidthInteger { @_transparent func bytes(totalBytes: Int = MemoryLayout.size) -> Array { - return arrayOfBytes(value: self, length: totalBytes) + return arrayOfBytes(value: self.littleEndian, length: totalBytes) // TODO: adjust bytes order - // var value = self + // var value = self.littleEndian // return withUnsafeBytes(of: &value, Array.init).reversed() } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/MD5.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/MD5.swift index a151e7b..7f44b4a 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/MD5.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/MD5.swift @@ -122,7 +122,6 @@ public final class MD5: DigestType { } extension MD5: Updatable { - public func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { accumulated += bytes diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/NoPadding.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/NoPadding.swift index 93d2323..57670ad 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/NoPadding.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/NoPadding.swift @@ -14,7 +14,6 @@ // struct NoPadding: PaddingProtocol { - init() { } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift index cef93f9..953b36e 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift @@ -14,14 +14,12 @@ // public extension PKCS5 { - /// A key derivation function. /// /// PBKDF1 is recommended only for compatibility with existing /// applications since the keys it produces may not be large enough for /// some applications. - public struct PBKDF1 { - + struct PBKDF1 { public enum Error: Swift.Error { case invalidInput case derivedKeyTooLong @@ -39,7 +37,7 @@ public extension PKCS5 { } } - fileprivate func calculateHash(_ bytes: Array) -> Array? { + fileprivate func calculateHash(_ bytes: Array) -> Array { switch self { case .sha1: return Digest.sha1(bytes) @@ -69,9 +67,7 @@ public extension PKCS5 { throw Error.derivedKeyTooLong } - guard let t1 = variant.calculateHash(password + salt) else { - throw Error.invalidInput - } + let t1 = variant.calculateHash(password + salt) self.iterations = iterations self.variant = variant @@ -83,7 +79,7 @@ public extension PKCS5 { public func calculate() -> Array { var t = t1 for _ in 2...iterations { - t = variant.calculateHash(t)! + t = variant.calculateHash(t) } return Array(t[0.., salt: Array, iterations: Int = 4096 /* c */, keyLength: Int? = nil /* dkLen */, variant: HMAC.Variant = .sha256) throws { precondition(iterations > 0) let prf = HMAC(key: password, variant: variant) - guard iterations > 0 && !password.isEmpty && !salt.isEmpty else { + guard iterations > 0 && !salt.isEmpty else { throw Error.invalidInput } @@ -84,7 +83,6 @@ public extension PKCS5 { } fileprivate extension PKCS5.PBKDF2 { - func ARR(_ i: Int) -> Array { var inti = Array(repeating: 0, count: 4) inti[0] = UInt8((i >> 24) & 0xff) diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7Padding.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7Padding.swift index 1df1204..37cd165 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7Padding.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7Padding.swift @@ -18,7 +18,6 @@ // struct PKCS7Padding: PaddingProtocol { - enum Error: Swift.Error { case invalidPaddingValue } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift index 6abfd5b..cd6fad2 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift @@ -24,7 +24,7 @@ public enum Padding: PaddingProtocol { public func add(to: Array, blockSize: Int) -> Array { switch self { case .noPadding: - return NoPadding().add(to: to, blockSize: blockSize) + return to // NoPadding().add(to: to, blockSize: blockSize) case .zeroPadding: return ZeroPadding().add(to: to, blockSize: blockSize) case .pkcs7: @@ -37,7 +37,7 @@ public enum Padding: PaddingProtocol { public func remove(from: Array, blockSize: Int?) -> Array { switch self { case .noPadding: - return NoPadding().remove(from: from, blockSize: blockSize) + return from //NoPadding().remove(from: from, blockSize: blockSize) case .zeroPadding: return ZeroPadding().remove(from: from, blockSize: blockSize) case .pkcs7: diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Poly1305.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Poly1305.swift index 2c04615..c97f940 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Poly1305.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Poly1305.swift @@ -20,7 +20,6 @@ /// message such that an attacker has a negligible chance of producing a valid tag for an inauthentic message. public final class Poly1305: Authenticator { - public enum Error: Swift.Error { case authenticateError } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Rabbit.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Rabbit.swift index 7f24b16..974ae90 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Rabbit.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Rabbit.swift @@ -14,7 +14,6 @@ // public final class Rabbit: BlockCipher { - public enum Error: Swift.Error { case invalidKeyOrInitializationVector } @@ -28,6 +27,10 @@ public final class Rabbit: BlockCipher { /// Size of block in bytes public static let blockSize = 128 / 8 + public var keySize: Int { + return key.count + } + /// Key private let key: Key @@ -56,6 +59,7 @@ public final class Rabbit: BlockCipher { ] // MARK: - Initializers + public convenience init(key: Array) throws { try self.init(key: key, iv: nil) } @@ -70,6 +74,7 @@ public final class Rabbit: BlockCipher { } // MARK: - + fileprivate func setup() { p7 = 0 @@ -183,8 +188,8 @@ public final class Rabbit: BlockCipher { } // MARK: Cipher -extension Rabbit: Cipher { +extension Rabbit: Cipher { public func encrypt(_ bytes: ArraySlice) throws -> Array { setup() diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomBytesSequence.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomBytesSequence.swift index b88bbbb..be7bdcb 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomBytesSequence.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/RandomBytesSequence.swift @@ -13,10 +13,10 @@ // - This notice may not be removed or altered from any source or binary distribution. // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc -#else +#if canImport(Darwin) import Darwin +#else + import Glibc #endif struct RandomBytesSequence: Sequence { @@ -24,8 +24,8 @@ struct RandomBytesSequence: Sequence { func makeIterator() -> AnyIterator { var count = 0 - return AnyIterator.init({ () -> UInt8? in - if count >= self.size { + return AnyIterator.init { () -> UInt8? in + guard count < self.size else { return nil } count = count + 1 @@ -45,6 +45,6 @@ struct RandomBytesSequence: Sequence { #else return UInt8(arc4random_uniform(UInt32(UInt8.max) + 1)) #endif - }) + } } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift index ad09b69..61f6bce 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift @@ -37,10 +37,10 @@ public final class SHA1: DigestType { // break chunk into sixteen 32-bit words M[j], 0 ≤ j ≤ 15, big-endian // Extend the sixteen 32-bit words into eighty 32-bit words: let M = UnsafeMutablePointer.allocate(capacity: 80) - M.initialize(to: 0, count: 80) + M.initialize(repeating: 0, count: 80) defer { M.deinitialize(count: 80) - M.deallocate(capacity: 80) + M.deallocate() } for x in 0..<80 { @@ -104,7 +104,6 @@ public final class SHA1: DigestType { } extension SHA1: Updatable { - @discardableResult public func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { accumulated += bytes @@ -134,11 +133,11 @@ extension SHA1: Updatable { var result = Array(repeating: 0, count: SHA1.digestLength) var pos = 0 for idx in 0..> 8) & 0xff) - result[pos + 2] = UInt8((h >> 16) & 0xff) - result[pos + 3] = UInt8((h >> 24) & 0xff) + let h = accumulatedHash[idx] + result[pos + 0] = UInt8((h >> 24) & 0xff) + result[pos + 1] = UInt8((h >> 16) & 0xff) + result[pos + 2] = UInt8((h >> 8) & 0xff) + result[pos + 3] = UInt8(h & 0xff) pos += 4 } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift index f6dc723..2e9940d 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift @@ -158,10 +158,10 @@ public final class SHA2: DigestType { // break chunk into sixteen 64-bit words M[j], 0 ≤ j ≤ 15, big-endian // Extend the sixteen 64-bit words into eighty 64-bit words: let M = UnsafeMutablePointer.allocate(capacity: k.count) - M.initialize(to: 0, count: k.count) + M.initialize(repeating: 0, count: k.count) defer { M.deinitialize(count: self.k.count) - M.deallocate(capacity: self.k.count) + M.deallocate() } for x in 0...allocate(capacity: k.count) - M.initialize(to: 0, count: k.count) + M.initialize(repeating: 0, count: k.count) defer { M.deinitialize(count: self.k.count) - M.deallocate(capacity: self.k.count) + M.deallocate() } for x in 0.., isLast: Bool = false) throws -> Array { accumulated += bytes @@ -316,25 +315,25 @@ extension SHA2: Updatable { case .sha224, .sha256: var pos = 0 for idx in 0..> 8) & 0xff) - result[pos + 2] = UInt8((h >> 16) & 0xff) - result[pos + 3] = UInt8((h >> 24) & 0xff) + let h = accumulatedHash32[idx] + result[pos + 0] = UInt8((h >> 24) & 0xff) + result[pos + 1] = UInt8((h >> 16) & 0xff) + result[pos + 2] = UInt8((h >> 8) & 0xff) + result[pos + 3] = UInt8(h & 0xff) pos += 4 } case .sha384, .sha512: var pos = 0 for idx in 0..> 8) & 0xff) - result[pos + 2] = UInt8((h >> 16) & 0xff) - result[pos + 3] = UInt8((h >> 24) & 0xff) - result[pos + 4] = UInt8((h >> 32) & 0xff) - result[pos + 5] = UInt8((h >> 40) & 0xff) - result[pos + 6] = UInt8((h >> 48) & 0xff) - result[pos + 7] = UInt8((h >> 56) & 0xff) + let h = accumulatedHash64[idx] + result[pos + 0] = UInt8((h >> 56) & 0xff) + result[pos + 1] = UInt8((h >> 48) & 0xff) + result[pos + 2] = UInt8((h >> 40) & 0xff) + result[pos + 3] = UInt8((h >> 32) & 0xff) + result[pos + 4] = UInt8((h >> 24) & 0xff) + result[pos + 5] = UInt8((h >> 16) & 0xff) + result[pos + 6] = UInt8((h >> 8) & 0xff) + result[pos + 7] = UInt8(h & 0xff) pos += 8 } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift index 7567c73..b22fb5a 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift @@ -17,10 +17,10 @@ // http://keccak.noekeon.org/specs_summary.html // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif public final class SHA3: DigestType { @@ -97,16 +97,16 @@ public final class SHA3: DigestType { /// A′[x, y,z] = A[x, y,z] ⊕ D[x,z]. private func θ(_ a: inout Array) { let c = UnsafeMutablePointer.allocate(capacity: 5) - c.initialize(to: 0, count: 5) + c.initialize(repeating: 0, count: 5) defer { c.deinitialize(count: 5) - c.deallocate(capacity: 5) + c.deallocate() } let d = UnsafeMutablePointer.allocate(capacity: 5) - d.initialize(to: 0, count: 5) + d.initialize(repeating: 0, count: 5) defer { d.deinitialize(count: 5) - d.deallocate(capacity: 5) + d.deallocate() } for i in 0..<5 { @@ -249,7 +249,6 @@ public final class SHA3: DigestType { } extension SHA3: Updatable { - public func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { accumulated += bytes diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Scrypt.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Scrypt.swift new file mode 100644 index 0000000..b55a085 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Scrypt.swift @@ -0,0 +1,256 @@ +// +// CryptoSwift +// +// Copyright (C) 2014-2017 Marcin Krzyżanowski +// 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: +// +// - 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 is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +// +// https://tools.ietf.org/html/rfc7914 +// + +/// Implementation of the scrypt key derivation function. +public final class Scrypt { + enum Error: Swift.Error { + case nIsTooLarge + case rIsTooLarge + case nMustBeAPowerOf2GreaterThan1 + case invalidInput + } + + /// Configuration parameters. + private let salt: SecureBytes + private let password: SecureBytes + fileprivate let blocksize: Int // 128 * r + fileprivate let salsaBlock = UnsafeMutableRawPointer.allocate(byteCount: 64, alignment: 64) + private let dkLen: Int + private let N: Int + private let r: Int + private let p: Int + + /// - parameters: + /// - password: password + /// - salt: salt + /// - dkLen: output length + /// - N: determines extra memory used + /// - r: determines a block size + /// - p: determines parallelicity degree + public init(password: Array, salt: Array, dkLen: Int, N: Int, r: Int, p: Int) throws { + precondition(dkLen > 0) + precondition(N > 0) + precondition(r > 0) + precondition(p > 0) + + guard !(N < 2 || (N & (N - 1)) != 0) else { throw Error.nMustBeAPowerOf2GreaterThan1 } + + guard N <= .max / 128 / r else { throw Error.nIsTooLarge } + guard r <= .max / 128 / p else { throw Error.rIsTooLarge } + + guard !salt.isEmpty else { + throw Error.invalidInput + } + + blocksize = 128 * r + self.N = N + self.r = r + self.p = p + self.password = SecureBytes.init(bytes: password) + self.salt = SecureBytes.init(bytes: salt) + self.dkLen = dkLen + } + + /// Runs the key derivation function with a specific password. + public func calculate() throws -> [UInt8] { + // Allocate memory (as bytes for now) for further use in mixing steps + let B = UnsafeMutableRawPointer.allocate(byteCount: 128 * r * p, alignment: 64) + let XY = UnsafeMutableRawPointer.allocate(byteCount: 256 * r + 64, alignment: 64) + let V = UnsafeMutableRawPointer.allocate(byteCount: 128 * r * N, alignment: 64) + + // Deallocate memory when done + defer { + B.deallocate() + XY.deallocate() + V.deallocate() + } + + /* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */ + // Expand the initial key + let barray = try PKCS5.PBKDF2(password: Array(password), salt: Array(salt), iterations: 1, keyLength: p * 128 * r, variant: .sha256).calculate() + barray.withUnsafeBytes { p in + B.copyMemory(from: p.baseAddress!, byteCount: barray.count) + } + + /* 2: for i = 0 to p - 1 do */ + // do the mixing + for i in 0 ..< p { + /* 3: B_i <-- MF(B_i, N) */ + smix(B + i * 128 * r, V.assumingMemoryBound(to: UInt32.self), XY.assumingMemoryBound(to: UInt32.self)) + } + + /* 5: DK <-- PBKDF2(P, B, 1, dkLen) */ + let pointer = B.assumingMemoryBound(to: UInt8.self) + let bufferPointer = UnsafeBufferPointer(start: pointer, count: p * 128 * r) + let block = [UInt8](bufferPointer) + return try PKCS5.PBKDF2(password: Array(password), salt: block, iterations: 1, keyLength: dkLen, variant: .sha256).calculate() + } +} + +private extension Scrypt { + /// Computes `B = SMix_r(B, N)`. + /// + /// The input `block` must be `128*r` bytes in length; the temporary storage `v` must be `128*r*n` bytes in length; + /// the temporary storage `xy` must be `256*r + 64` bytes in length. The arrays `block`, `v`, and `xy` must be + /// aligned to a multiple of 64 bytes. + @inline(__always) func smix(_ block: UnsafeMutableRawPointer, _ v: UnsafeMutablePointer, _ xy: UnsafeMutablePointer) { + let X = xy + let Y = xy + 32 * r + let Z = xy + 64 * r + + /* 1: X <-- B */ + let typedBlock = block.assumingMemoryBound(to: UInt32.self) + X.assign(from: typedBlock, count: 32 * r) + + /* 2: for i = 0 to N - 1 do */ + for i in stride(from: 0, to: N, by: 2) { + /* 3: V_i <-- X */ + UnsafeMutableRawPointer(v + i * (32 * r)).copyMemory(from: X, byteCount: 128 * r) + + /* 4: X <-- H(X) */ + blockMixSalsa8(X, Y, Z) + + /* 3: V_i <-- X */ + UnsafeMutableRawPointer(v + (i + 1) * (32 * r)).copyMemory(from: Y, byteCount: 128 * r) + + /* 4: X <-- H(X) */ + blockMixSalsa8(Y, X, Z) + } + + /* 6: for i = 0 to N - 1 do */ + for _ in stride(from: 0, to: N, by: 2) { + /* + 7: j <-- Integerify (X) mod N + where Integerify (B[0] ... B[2 * r - 1]) is defined + as the result of interpreting B[2 * r - 1] as a little-endian integer. + */ + var j = Int(integerify(X) & UInt64(N - 1)) + + /* 8: X <-- H(X \xor V_j) */ + blockXor(X, v + j * 32 * r, 128 * r) + blockMixSalsa8(X, Y, Z) + + /* 7: j <-- Integerify(X) mod N */ + j = Int(integerify(Y) & UInt64(N - 1)) + + /* 8: X <-- H(X \xor V_j) */ + blockXor(Y, v + j * 32 * r, 128 * r) + blockMixSalsa8(Y, X, Z) + } + + /* 10: B' <-- X */ + for k in 0 ..< 32 * r { + UnsafeMutableRawPointer(block + 4 * k).storeBytes(of: X[k], as: UInt32.self) + } + } + + /// Returns the result of parsing `B_{2r-1}` as a little-endian integer. + @inline(__always) func integerify(_ block: UnsafeRawPointer) -> UInt64 { + let bi = block + (2 * r - 1) * 64 + return bi.load(as: UInt64.self).littleEndian + } + + /// Compute `bout = BlockMix_{salsa20/8, r}(bin)`. + /// + /// The input `bin` must be `128*r` bytes in length; the output `bout` must also be the same size. The temporary + /// space `x` must be 64 bytes. + @inline(__always) func blockMixSalsa8(_ bin: UnsafePointer, _ bout: UnsafeMutablePointer, _ x: UnsafeMutablePointer) { + /* 1: X <-- B_{2r - 1} */ + UnsafeMutableRawPointer(x).copyMemory(from: bin + (2 * r - 1) * 16, byteCount: 64) + + /* 2: for i = 0 to 2r - 1 do */ + for i in stride(from: 0, to: 2 * r, by: 2) { + /* 3: X <-- H(X \xor B_i) */ + blockXor(x, bin + i * 16, 64) + salsa20_8_typed(x) + + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + UnsafeMutableRawPointer(bout + i * 8).copyMemory(from: x, byteCount: 64) + + /* 3: X <-- H(X \xor B_i) */ + blockXor(x, bin + i * 16 + 16, 64) + salsa20_8_typed(x) + + /* 4: Y_i <-- X */ + /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */ + UnsafeMutableRawPointer(bout + i * 8 + r * 16).copyMemory(from: x, byteCount: 64) + } + } + + @inline(__always) func salsa20_8_typed(_ block: UnsafeMutablePointer) { + salsaBlock.copyMemory(from: UnsafeRawPointer(block), byteCount: 64) + let salsaBlockTyped = salsaBlock.assumingMemoryBound(to: UInt32.self) + + for _ in stride(from: 0, to: 8, by: 2) { + salsaBlockTyped[4] ^= rotateLeft(salsaBlockTyped[0] &+ salsaBlockTyped[12], by: 7) + salsaBlockTyped[8] ^= rotateLeft(salsaBlockTyped[4] &+ salsaBlockTyped[0], by: 9) + salsaBlockTyped[12] ^= rotateLeft(salsaBlockTyped[8] &+ salsaBlockTyped[4], by: 13) + salsaBlockTyped[0] ^= rotateLeft(salsaBlockTyped[12] &+ salsaBlockTyped[8], by: 18) + + salsaBlockTyped[9] ^= rotateLeft(salsaBlockTyped[5] &+ salsaBlockTyped[1], by: 7) + salsaBlockTyped[13] ^= rotateLeft(salsaBlockTyped[9] &+ salsaBlockTyped[5], by: 9) + salsaBlockTyped[1] ^= rotateLeft(salsaBlockTyped[13] &+ salsaBlockTyped[9], by: 13) + salsaBlockTyped[5] ^= rotateLeft(salsaBlockTyped[1] &+ salsaBlockTyped[13], by: 18) + + salsaBlockTyped[14] ^= rotateLeft(salsaBlockTyped[10] &+ salsaBlockTyped[6], by: 7) + salsaBlockTyped[2] ^= rotateLeft(salsaBlockTyped[14] &+ salsaBlockTyped[10], by: 9) + salsaBlockTyped[6] ^= rotateLeft(salsaBlockTyped[2] &+ salsaBlockTyped[14], by: 13) + salsaBlockTyped[10] ^= rotateLeft(salsaBlockTyped[6] &+ salsaBlockTyped[2], by: 18) + + salsaBlockTyped[3] ^= rotateLeft(salsaBlockTyped[15] &+ salsaBlockTyped[11], by: 7) + salsaBlockTyped[7] ^= rotateLeft(salsaBlockTyped[3] &+ salsaBlockTyped[15], by: 9) + salsaBlockTyped[11] ^= rotateLeft(salsaBlockTyped[7] &+ salsaBlockTyped[3], by: 13) + salsaBlockTyped[15] ^= rotateLeft(salsaBlockTyped[11] &+ salsaBlockTyped[7], by: 18) + + salsaBlockTyped[1] ^= rotateLeft(salsaBlockTyped[0] &+ salsaBlockTyped[3], by: 7) + salsaBlockTyped[2] ^= rotateLeft(salsaBlockTyped[1] &+ salsaBlockTyped[0], by: 9) + salsaBlockTyped[3] ^= rotateLeft(salsaBlockTyped[2] &+ salsaBlockTyped[1], by: 13) + salsaBlockTyped[0] ^= rotateLeft(salsaBlockTyped[3] &+ salsaBlockTyped[2], by: 18) + + salsaBlockTyped[6] ^= rotateLeft(salsaBlockTyped[5] &+ salsaBlockTyped[4], by: 7) + salsaBlockTyped[7] ^= rotateLeft(salsaBlockTyped[6] &+ salsaBlockTyped[5], by: 9) + salsaBlockTyped[4] ^= rotateLeft(salsaBlockTyped[7] &+ salsaBlockTyped[6], by: 13) + salsaBlockTyped[5] ^= rotateLeft(salsaBlockTyped[4] &+ salsaBlockTyped[7], by: 18) + + salsaBlockTyped[11] ^= rotateLeft(salsaBlockTyped[10] &+ salsaBlockTyped[9], by: 7) + salsaBlockTyped[8] ^= rotateLeft(salsaBlockTyped[11] &+ salsaBlockTyped[10], by: 9) + salsaBlockTyped[9] ^= rotateLeft(salsaBlockTyped[8] &+ salsaBlockTyped[11], by: 13) + salsaBlockTyped[10] ^= rotateLeft(salsaBlockTyped[9] &+ salsaBlockTyped[8], by: 18) + + salsaBlockTyped[12] ^= rotateLeft(salsaBlockTyped[15] &+ salsaBlockTyped[14], by: 7) + salsaBlockTyped[13] ^= rotateLeft(salsaBlockTyped[12] &+ salsaBlockTyped[15], by: 9) + salsaBlockTyped[14] ^= rotateLeft(salsaBlockTyped[13] &+ salsaBlockTyped[12], by: 13) + salsaBlockTyped[15] ^= rotateLeft(salsaBlockTyped[14] &+ salsaBlockTyped[13], by: 18) + } + for i in 0 ..< 16 { + block[i] = block[i] &+ salsaBlockTyped[i] + } + } + + @inline(__always) func blockXor(_ dest: UnsafeMutableRawPointer, _ src: UnsafeRawPointer, _ len: Int) { + let D = dest.assumingMemoryBound(to: UInt64.self) + let S = src.assumingMemoryBound(to: UInt64.self) + let L = len / MemoryLayout.size + + for i in 0 ..< L { + D[i] ^= S[i] + } + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift index c603854..61e7f69 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift @@ -13,10 +13,10 @@ // - This notice may not be removed or altered from any source or binary distribution. // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif typealias Key = SecureBytes diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamDecryptor.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamDecryptor.swift new file mode 100644 index 0000000..81ab270 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamDecryptor.swift @@ -0,0 +1,78 @@ +// CryptoSwift +// +// Copyright (C) 2014-2018 Marcin Krzyżanowski +// 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: +// +// - 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 is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +final class StreamDecryptor: Cryptor, Updatable { + private let blockSize: Int + private var worker: CipherModeWorker + private let padding: Padding + private var accumulated = Array() + + private var lastBlockRemainder = 0 + + init(blockSize: Int, padding: Padding, _ worker: CipherModeWorker) throws { + self.blockSize = blockSize + self.padding = padding + self.worker = worker + } + + // MARK: Updatable + public func update(withBytes bytes: ArraySlice, isLast: Bool) throws -> Array { + accumulated += bytes + + let toProcess = accumulated.prefix(max(accumulated.count - worker.additionalBufferSize, 0)) + + if var finalizingWorker = worker as? FinalizingDecryptModeWorker, isLast == true { + // will truncate suffix if needed + try finalizingWorker.willDecryptLast(bytes: accumulated.slice) + } + + var processedBytesCount = 0 + var plaintext = Array(reserveCapacity: bytes.count + worker.additionalBufferSize) + for chunk in toProcess.batched(by: blockSize) { + plaintext += worker.decrypt(block: chunk) + processedBytesCount += chunk.count + } + + if var finalizingWorker = worker as? FinalizingDecryptModeWorker, isLast == true { + plaintext = Array(try finalizingWorker.didDecryptLast(bytes: plaintext.slice)) + } + + // omit unecessary calculation if not needed + if padding != .noPadding { + lastBlockRemainder = plaintext.count.quotientAndRemainder(dividingBy: blockSize).remainder + } + + if isLast { + // CTR doesn't need padding. Really. Add padding to the last block if really want. but... don't. + plaintext = padding.remove(from: plaintext, blockSize: blockSize - lastBlockRemainder) + } + + accumulated.removeFirst(processedBytesCount) // super-slow + + if var finalizingWorker = worker as? FinalizingDecryptModeWorker, isLast == true { + plaintext = Array(try finalizingWorker.finalize(decrypt: plaintext.slice)) + } + + return plaintext + } + + public func seek(to position: Int) throws { + guard var worker = self.worker as? SeekableModeWorker else { + fatalError("Not supported") + } + + try worker.seek(to: position) + self.worker = worker + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamEncryptor.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamEncryptor.swift new file mode 100644 index 0000000..7cd54e3 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/StreamEncryptor.swift @@ -0,0 +1,56 @@ +// CryptoSwift +// +// Copyright (C) 2014-2018 Marcin Krzyżanowski +// 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: +// +// - 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 is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +final class StreamEncryptor: Cryptor, Updatable { + private let blockSize: Int + private var worker: CipherModeWorker + private let padding: Padding + + private var lastBlockRemainder = 0 + + init(blockSize: Int, padding: Padding, _ worker: CipherModeWorker) throws { + self.blockSize = blockSize + self.padding = padding + self.worker = worker + } + + // MARK: Updatable + public func update(withBytes bytes: ArraySlice, isLast: Bool) throws -> Array { + var accumulated = Array(bytes) + if isLast { + // CTR doesn't need padding. Really. Add padding to the last block if really want. but... don't. + accumulated = padding.add(to: accumulated, blockSize: blockSize - lastBlockRemainder) + } + + var encrypted = Array(reserveCapacity: bytes.count) + for chunk in accumulated.batched(by: blockSize) { + encrypted += worker.encrypt(block: chunk) + } + + // omit unecessary calculation if not needed + if padding != .noPadding { + lastBlockRemainder = encrypted.count.quotientAndRemainder(dividingBy: blockSize).remainder + } + + if var finalizingWorker = worker as? FinalizingEncryptModeWorker, isLast == true { + encrypted = Array(try finalizingWorker.finalize(encrypt: encrypted.slice)) + } + + return encrypted + } + + func seek(to: Int) throws { + fatalError("Not supported") + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift index d4ac91a..b186e34 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift @@ -15,7 +15,6 @@ /** String extension */ extension String { - public var bytes: Array { return data(using: String.Encoding.utf8, allowLossyConversion: true)?.bytes ?? Array(utf8) } @@ -52,6 +51,10 @@ extension String { return bytes.crc32(seed: seed, reflect: reflect).bytes().toHexString() } + public func crc32c(seed: UInt32? = nil, reflect: Bool = true) -> String { + return bytes.crc32(seed: seed, reflect: reflect).bytes().toHexString() + } + public func crc16(seed: UInt16? = nil) -> String { return bytes.crc16(seed: seed).bytes().toHexString() } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt128.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt128.swift new file mode 100644 index 0000000..2015790 --- /dev/null +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt128.swift @@ -0,0 +1,90 @@ +// +// UInt128.swift +// +// Copyright (C) 2014-2017 Marcin Krzyżanowski +// 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: +// +// - 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 is required. +// - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// - This notice may not be removed or altered from any source or binary distribution. +// + +import Foundation + +struct UInt128: Equatable, ExpressibleByIntegerLiteral { + let i: (a: UInt64, b: UInt64) + + typealias IntegerLiteralType = UInt64 + + init(integerLiteral value: IntegerLiteralType) { + self = UInt128(value) + } + + init(_ raw: Array) { + self = raw.prefix(MemoryLayout.stride).withUnsafeBytes({ (rawBufferPointer) -> UInt128 in + let arr = rawBufferPointer.bindMemory(to: UInt64.self) + return UInt128((arr[0].bigEndian, arr[1].bigEndian)) + }) + } + + init(_ raw: ArraySlice) { + self.init(Array(raw)) + } + + init(_ i: (a: UInt64, b: UInt64)) { + self.i = i + } + + init(a: UInt64, b: UInt64) { + self.init((a, b)) + } + + init(_ b: UInt64) { + self.init((0, b)) + } + + // Bytes + var bytes: Array { + var at = i.a.bigEndian + var bt = i.b.bigEndian + + let ar = Data(bytes: &at, count: MemoryLayout.size(ofValue: at)) + let br = Data(bytes: &bt, count: MemoryLayout.size(ofValue: bt)) + + var result = Data() + result.append(ar) + result.append(br) + return result.bytes + } + + static func ^(n1: UInt128, n2: UInt128) -> UInt128 { + return UInt128((n1.i.a ^ n2.i.a, n1.i.b ^ n2.i.b)) + } + + static func &(n1: UInt128, n2: UInt128) -> UInt128 { + return UInt128((n1.i.a & n2.i.a, n1.i.b & n2.i.b)) + } + + static func >>(value: UInt128, by: Int) -> UInt128 { + var result = value + for _ in 0..> 1 + let b = result.i.b >> 1 + ((result.i.a & 1) << 63) + result = UInt128((a, b)) + } + return result + } + + // Equatable. + static func ==(lhs: UInt128, rhs: UInt128) -> Bool { + return lhs.i == rhs.i + } + + static func !=(lhs: UInt128, rhs: UInt128) -> Bool { + return !(lhs == rhs) + } +} diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt16+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt16+Extension.swift index 3a31df6..65f6289 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt16+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt16+Extension.swift @@ -15,7 +15,6 @@ /** array of bytes */ extension UInt16 { - @_specialize(exported: true, where T == ArraySlice) init(bytes: T) where T.Element == UInt8, T.Index == Int { self = UInt16(bytes: bytes, fromIndex: bytes.startIndex) diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift index 3a7d60e..0901148 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift @@ -13,10 +13,10 @@ // - This notice may not be removed or altered from any source or binary distribution. // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif protocol _UInt32Type {} @@ -24,7 +24,6 @@ extension UInt32: _UInt32Type {} /** array of bytes */ extension UInt32 { - @_specialize(exported: true, where T == ArraySlice) init(bytes: T) where T.Element == UInt8, T.Index == Int { self = UInt32(bytes: bytes, fromIndex: bytes.startIndex) diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift index bfa4648..44a77d9 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift @@ -15,7 +15,6 @@ /** array of bytes */ extension UInt64 { - @_specialize(exported: true, where T == ArraySlice) init(bytes: T) where T.Element == UInt8, T.Index == Int { self = UInt64(bytes: bytes, fromIndex: bytes.startIndex) @@ -31,13 +30,13 @@ extension UInt64 { let count = bytes.count let val0 = count > 0 ? UInt64(bytes[index.advanced(by: 0)]) << 56 : 0 - let val1 = count > 0 ? UInt64(bytes[index.advanced(by: 1)]) << 48 : 0 - let val2 = count > 0 ? UInt64(bytes[index.advanced(by: 2)]) << 40 : 0 - let val3 = count > 0 ? UInt64(bytes[index.advanced(by: 3)]) << 32 : 0 - let val4 = count > 0 ? UInt64(bytes[index.advanced(by: 4)]) << 24 : 0 - let val5 = count > 0 ? UInt64(bytes[index.advanced(by: 5)]) << 16 : 0 - let val6 = count > 0 ? UInt64(bytes[index.advanced(by: 6)]) << 8 : 0 - let val7 = count > 0 ? UInt64(bytes[index.advanced(by: 7)]) : 0 + let val1 = count > 1 ? UInt64(bytes[index.advanced(by: 1)]) << 48 : 0 + let val2 = count > 2 ? UInt64(bytes[index.advanced(by: 2)]) << 40 : 0 + let val3 = count > 3 ? UInt64(bytes[index.advanced(by: 3)]) << 32 : 0 + let val4 = count > 4 ? UInt64(bytes[index.advanced(by: 4)]) << 24 : 0 + let val5 = count > 5 ? UInt64(bytes[index.advanced(by: 5)]) << 16 : 0 + let val6 = count > 6 ? UInt64(bytes[index.advanced(by: 6)]) << 8 : 0 + let val7 = count > 7 ? UInt64(bytes[index.advanced(by: 7)]) : 0 self = val0 | val1 | val2 | val3 | val4 | val5 | val6 | val7 } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift index 7297875..481d57f 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift @@ -13,10 +13,10 @@ // - This notice may not be removed or altered from any source or binary distribution. // -#if os(Linux) || os(Android) || os(FreeBSD) - import Glibc +#if canImport(Darwin) +import Darwin #else - import Darwin +import Glibc #endif public protocol _UInt8Type {} @@ -24,7 +24,6 @@ extension UInt8: _UInt8Type {} /** casting */ extension UInt8 { - /** cast because UInt8() because std initializer crash if value is > byte */ static func with(value: UInt64) -> UInt8 { let tmp = value & 0xff @@ -44,7 +43,6 @@ extension UInt8 { /** Bits */ extension UInt8 { - init(bits: [Bit]) { self.init(integerFrom(bits) as UInt8) } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift index a590233..23f1654 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift @@ -20,7 +20,7 @@ public protocol Updatable { /// /// - parameter bytes: Bytes to process. /// - parameter isLast: Indicate if given chunk is the last one. No more updates after this call. - /// - returns: Processed data or empty array. + /// - returns: Processed partial result data or empty array. mutating func update(withBytes bytes: ArraySlice, isLast: Bool) throws -> Array /// Update given bytes in chunks. @@ -29,23 +29,11 @@ public protocol Updatable { /// - bytes: Bytes to process. /// - isLast: Indicate if given chunk is the last one. No more updates after this call. /// - output: Resulting bytes callback. - /// - Returns: Processed data or empty array. + /// - Returns: Processed partial result data or empty array. mutating func update(withBytes bytes: ArraySlice, isLast: Bool, output: (_ bytes: Array) -> Void) throws - - /// Finish updates. This may apply padding. - /// - parameter bytes: Bytes to process - /// - returns: Processed data. - mutating func finish(withBytes bytes: ArraySlice) throws -> Array - - /// Finish updates. This may apply padding. - /// - parameter bytes: Bytes to process - /// - parameter output: Resulting data - /// - returns: Processed data. - mutating func finish(withBytes bytes: ArraySlice, output: (_ bytes: Array) -> Void) throws } extension Updatable { - public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = false, output: (_ bytes: Array) -> Void) throws { let processed = try update(withBytes: bytes, isLast: isLast) if !processed.isEmpty { @@ -53,16 +41,42 @@ extension Updatable { } } - @discardableResult + public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { + return try update(withBytes: bytes, isLast: isLast) + } + + public mutating func update(withBytes bytes: Array, isLast: Bool = false) throws -> Array { + return try update(withBytes: bytes.slice, isLast: isLast) + } + + public mutating func update(withBytes bytes: Array, isLast: Bool = false, output: (_ bytes: Array) -> Void) throws { + return try update(withBytes: bytes.slice, isLast: isLast, output: output) + } + + /// Finish updates. This may apply padding. + /// - parameter bytes: Bytes to process + /// - returns: Processed data. public mutating func finish(withBytes bytes: ArraySlice) throws -> Array { return try update(withBytes: bytes, isLast: true) } - @discardableResult + public mutating func finish(withBytes bytes: Array) throws -> Array { + return try finish(withBytes: bytes.slice) + } + + + /// Finish updates. May add padding. + /// + /// - Returns: Processed data + /// - Throws: Error public mutating func finish() throws -> Array { return try update(withBytes: [], isLast: true) } + /// Finish updates. This may apply padding. + /// - parameter bytes: Bytes to process + /// - parameter output: Resulting data + /// - returns: Processed data. public mutating func finish(withBytes bytes: ArraySlice, output: (_ bytes: Array) -> Void) throws { let processed = try update(withBytes: bytes, isLast: true) if !processed.isEmpty { @@ -70,28 +84,15 @@ extension Updatable { } } - public mutating func finish(output: (Array) -> Void) throws { - try finish(withBytes: [], output: output) - } -} - -extension Updatable { - - @discardableResult - public mutating func update(withBytes bytes: Array, isLast: Bool = false) throws -> Array { - return try update(withBytes: bytes.slice, isLast: isLast) - } - - public mutating func update(withBytes bytes: Array, isLast: Bool = false, output: (_ bytes: Array) -> Void) throws { - return try update(withBytes: bytes.slice, isLast: isLast, output: output) - } - - @discardableResult - public mutating func finish(withBytes bytes: Array) throws -> Array { - return try finish(withBytes: bytes.slice) - } - public mutating func finish(withBytes bytes: Array, output: (_ bytes: Array) -> Void) throws { return try finish(withBytes: bytes.slice, output: output) } + + /// Finish updates. May add padding. + /// + /// - Parameter output: Processed data + /// - Throws: Error + public mutating func finish(output: (Array) -> Void) throws { + try finish(withBytes: [], output: output) + } } diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Utils.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Utils.swift index f401d98..17b368a 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/Utils.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/Utils.swift @@ -68,18 +68,18 @@ func reversed(_ uint32: UInt32) -> UInt32 { return v } -func xor(_ left: T, _ right: V) -> ArraySlice where T: RandomAccessCollection, V: RandomAccessCollection, T.Element == UInt8, T.Index == Int, T.IndexDistance == Int, V.Element == UInt8, V.IndexDistance == Int, V.Index == Int { +func xor(_ left: T, _ right: V) -> ArraySlice where T: RandomAccessCollection, V: RandomAccessCollection, T.Element == UInt8, T.Index == Int, V.Element == UInt8, V.Index == Int { return xor(left, right).slice } -func xor(_ left: T, _ right: V) -> Array where T: RandomAccessCollection, V: RandomAccessCollection, T.Element == UInt8, T.Index == Int, T.IndexDistance == Int, V.Element == UInt8, V.IndexDistance == Int, V.Index == Int { +func xor(_ left: T, _ right: V) -> Array where T: RandomAccessCollection, V: RandomAccessCollection, T.Element == UInt8, T.Index == Int, V.Element == UInt8, V.Index == Int { let length = Swift.min(left.count, right.count) let buf = UnsafeMutablePointer.allocate(capacity: length) - buf.initialize(to: 0, count: length) + buf.initialize(repeating: 0, count: length) defer { - buf.deinitialize() - buf.deallocate(capacity: length) + buf.deinitialize(count: length) + buf.deallocate() } // xor diff --git a/Example/Pods/CryptoSwift/Sources/CryptoSwift/ZeroPadding.swift b/Example/Pods/CryptoSwift/Sources/CryptoSwift/ZeroPadding.swift index b2a4771..7d1d827 100644 --- a/Example/Pods/CryptoSwift/Sources/CryptoSwift/ZeroPadding.swift +++ b/Example/Pods/CryptoSwift/Sources/CryptoSwift/ZeroPadding.swift @@ -16,7 +16,6 @@ /// All the bytes that are required to be padded are padded with zero. /// Zero padding may not be reversible if the original file ends with one or more zero bytes. struct ZeroPadding: PaddingProtocol { - init() { } diff --git a/Example/Pods/Local Podspecs/SwiftFlyer.podspec.json b/Example/Pods/Local Podspecs/SwiftFlyer.podspec.json index 8744ac6..baa5549 100644 --- a/Example/Pods/Local Podspecs/SwiftFlyer.podspec.json +++ b/Example/Pods/Local Podspecs/SwiftFlyer.podspec.json @@ -1,6 +1,6 @@ { "name": "SwiftFlyer", - "version": "0.2.1", + "version": "0.2.2", "summary": "An API wrapper for bitFlyer written in Swift.", "description": "An API wrapper for bitFlyer that supports all providing API.", "homepage": "https://github.com/rinov/SwiftFlyer", @@ -13,7 +13,7 @@ }, "source": { "git": "https://github.com/rinov/SwiftFlyer.git", - "tag": "0.2.1" + "tag": "0.2.2" }, "platforms": { "ios": "9.0", @@ -22,10 +22,10 @@ "source_files": "SwiftFlyer/**/*", "dependencies": { "CryptoSwift": [ - "~> 0.8.3" + "~> 1.0.0" ], "Starscream": [ - "~> 3.0.5" + "~> 3.1.0" ] } } diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index be55512..a64d13c 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,28 +1,35 @@ PODS: - - CryptoSwift (0.8.3) - - Nimble (7.0.3) - - Quick (1.2.0) - - Starscream (3.0.5) - - SwiftFlyer (0.2.1): - - CryptoSwift (~> 0.8.3) - - Starscream (~> 3.0.5) + - CryptoSwift (1.0.0) + - Nimble (8.0.1) + - Quick (2.1.0) + - Starscream (3.1.0) + - SwiftFlyer (0.2.2): + - CryptoSwift (~> 1.0.0) + - Starscream (~> 3.1.0) DEPENDENCIES: - - Nimble (~> 7.0.2) - - Quick (~> 1.2.0) + - Nimble (~> 8.0.1) + - Quick (~> 2.1.0) - SwiftFlyer (from `../`) +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - CryptoSwift + - Nimble + - Quick + - Starscream + EXTERNAL SOURCES: SwiftFlyer: - :path: ../ + :path: "../" SPEC CHECKSUMS: - CryptoSwift: 033efc3523865d19cc6ab6612fa17a62613b5dfa - Nimble: 7f5a9c447a33002645a071bddafbfb24ea70e0ac - Quick: 58d203b1c5e27fff7229c4c1ae445ad7069a7a08 - Starscream: faf918b2f2eff7d5dd21180646bf015a669673bd - SwiftFlyer: d0489dd470b4f30eacec1986e2f4898f5eaa00e8 + CryptoSwift: d81eeaa59dc5a8d03720fe919a6fd07b51f7439f + Nimble: 45f786ae66faa9a709624227fae502db55a8bdd0 + Quick: 4be43f6634acfa727dd106bdf3929ce125ffa79d + Starscream: 08172b481e145289c4930cb567230fb55897cfa4 + SwiftFlyer: b3cafbb99c1c6f85e70c9c7e151dc5abf82c1930 -PODFILE CHECKSUM: 0e2e09933c4a5d391753b4d68ab707c15f8357d7 +PODFILE CHECKSUM: 51db0d67ea0f7430370160be49ec1abad8580887 -COCOAPODS: 1.4.0 +COCOAPODS: 1.6.0 diff --git a/Example/Pods/Nimble/README.md b/Example/Pods/Nimble/README.md index a190ac6..dde7fc4 100644 --- a/Example/Pods/Nimble/README.md +++ b/Example/Pods/Nimble/README.md @@ -4,6 +4,7 @@ [![CocoaPods](https://img.shields.io/cocoapods/v/Nimble.svg)](https://cocoapods.org/pods/Nimble) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Platforms](https://img.shields.io/cocoapods/p/Nimble.svg)](https://cocoapods.org/pods/Nimble) +[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com) Use Nimble to express the expected outcomes of Swift or Objective-C expressions. Inspired by @@ -226,9 +227,9 @@ exception once evaluated: // that Nimble will catch. // (see https://github.com/Quick/Nimble/issues/220#issuecomment-172667064) let exception = NSException( - name: NSInternalInconsistencyException, - reason: "Not enough fish in the sea.", - userInfo: ["something": "is fishy"]) + name: NSInternalInconsistencyException, + reason: "Not enough fish in the sea.", + userInfo: ["something": "is fishy"]) expect { exception.raise() }.to(raiseException()) // Also, you can customize raiseException to be more specific @@ -306,8 +307,7 @@ In Nimble, it's easy to make expectations on values that are updated asynchronously. Just use `toEventually` or `toEventuallyNot`: ```swift -// Swift 3.0 and later - +// Swift DispatchQueue.main.async { ocean.add("dolphins") ocean.add("whales") @@ -316,17 +316,6 @@ expect(ocean).toEventually(contain("dolphins", "whales")) ``` -```swift -// Swift 2.3 and earlier - -dispatch_async(dispatch_get_main_queue()) { - ocean.add("dolphins") - ocean.add("whales") -} -expect(ocean).toEventually(contain("dolphins", "whales")) -``` - - ```objc // Objective-C @@ -714,7 +703,7 @@ expect(actual) ≈ expected expect(actual) ≈ (expected, delta) ``` -(Type Option-x to get ≈ on a U.S. keyboard) +(Type option+x to get `≈` on a U.S. keyboard) The former version uses the default delta of 0.0001. Here is yet another way to do this: @@ -725,7 +714,7 @@ expect(actual) ≈ expected ± delta expect(actual) == expected ± delta ``` -(Type Option-Shift-= to get ± on a U.S. keyboard) +(Type option+shift+= to get `±` on a U.S. keyboard) If you are comparing arrays of floating point numbers, you'll find the following useful: @@ -857,11 +846,7 @@ Notes: ## Swift Error Handling -If you're using Swift 2.0 or newer, you can use the `throwError` matcher to check if an error is thrown. - -Note: -The following code sample references the `Swift.Error` protocol. -This is `Swift.ErrorProtocol` in versions of Swift prior to version 3.0. +You can use the `throwError` matcher to check if an error is thrown. ```swift // Swift @@ -1043,10 +1028,10 @@ let turtles: [Turtle] = functionThatReturnsSomeTurtlesInAnyOrder() // [{color: "blue"}, {color: "green"}] or [{color: "green"}, {color: "blue"}]: expect(turtles).to(containElementSatisfying({ turtle in - return turtle.color == "green" + return turtle.color == "green" })) expect(turtles).to(containElementSatisfying({ turtle in - return turtle.color == "blue" + return turtle.color == "blue" }, "that is a turtle with color 'blue'")) // The second matcher will incorporate the provided string in the error message @@ -1069,10 +1054,10 @@ NSArray * __nonnull turtles = functionThatReturnsSomeTurtlesInAnyOrder // [{color: "blue"}, {color: "green"}] or [{color: "green"}, {color: "blue"}]: expect(turtles).to(containElementSatisfying(^BOOL(id __nonnull object) { - return [[turtle color] isEqualToString:@"green"]; + return [[turtle color] isEqualToString:@"green"]; })); expect(turtles).to(containElementSatisfying(^BOOL(id __nonnull object) { - return [[turtle color] isEqualToString:@"blue"]; + return [[turtle color] isEqualToString:@"blue"]; })); ``` @@ -1273,24 +1258,24 @@ value and return a `Predicate` closure. Take `equal`, for example: // Swift public func equal(expectedValue: T?) -> Predicate { - // Can be shortened to: - // Predicate { actual in ... } - // - // But shown with types here for clarity. - return Predicate { (actual: Expression) throws -> PredicateResult in - let msg = ExpectationMessage.expectedActualValueTo("equal <\(expectedValue)>") - if let actualValue = try actualExpression.evaluate() { - return PredicateResult( - bool: actualValue == expectedValue!, - message: msg - ) - } else { - return PredicateResult( - status: .fail, - message: msg.appendedBeNilHint() - ) + // Can be shortened to: + // Predicate { actual in ... } + // + // But shown with types here for clarity. + return Predicate { (actualExpression: Expression) throws -> PredicateResult in + let msg = ExpectationMessage.expectedActualValueTo("equal <\(expectedValue)>") + if let actualValue = try actualExpression.evaluate() { + return PredicateResult( + bool: actualValue == expectedValue!, + message: msg + ) + } else { + return PredicateResult( + status: .fail, + message: msg.appendedBeNilHint() + ) + } } - } } ``` @@ -1382,11 +1367,11 @@ custom matchers should call `actualExpression.evaluate()`: // Swift public func beNil() -> Predicate { - // Predicate.simpleNilable(..) automatically generates ExpectationMessage for - // us based on the string we provide to it. Also, the 'Nilable' postfix indicates - // that this Predicate supports matching against nil actualExpressions, instead of - // always resulting in a PredicateStatus.fail result -- which is true for - // Predicate.simple(..) + // Predicate.simpleNilable(..) automatically generates ExpectationMessage for + // us based on the string we provide to it. Also, the 'Nilable' postfix indicates + // that this Predicate supports matching against nil actualExpressions, instead of + // always resulting in a PredicateStatus.fail result -- which is true for + // Predicate.simple(..) return Predicate.simpleNilable("be nil") { actualExpression in let actualValue = try actualExpression.evaluate() return PredicateStatus(bool: actualValue == nil) @@ -1412,9 +1397,9 @@ against the one provided to the matcher function, and passes if they are the sam // Swift public func haveDescription(description: String) -> Predicate { - return Predicate.simple("have description") { actual in - return PredicateStatus(bool: actual.evaluate().description == description) - } + return Predicate.simple("have description") { actual in + return PredicateStatus(bool: actual.evaluate().description == description) + } } ``` @@ -1489,7 +1474,7 @@ case expectedCustomValueTo(/* message: */ String, /* actual: */ String) // Emits standard error message without mentioning the actual value // eg - "expected to " -case expectedTo(/* message: */ String, /* actual: */ String) +case expectedTo(/* message: */ String) // ... } @@ -1526,13 +1511,13 @@ custom matcher. The example below defines the class method // Swift extension NMBObjCMatcher { - public class func beNilMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher { actualBlock, failureMessage, location in - let block = ({ actualBlock() as NSObject? }) - let expr = Expression(expression: block, location: location) - return beNil().matches(expr, failureMessage: failureMessage) + public class func beNilMatcher() -> NMBObjCMatcher { + return NMBObjCMatcher { actualBlock, failureMessage, location in + let block = ({ actualBlock() as NSObject? }) + let expr = Expression(expression: block, location: location) + return beNil().matches(expr, failureMessage: failureMessage) + } } - } } ``` @@ -1551,7 +1536,7 @@ class method: // Objective-C FOUNDATION_EXPORT id beNil() { - return [NMBObjCMatcher beNilMatcher]; + return [NMBObjCMatcher beNilMatcher]; } ``` @@ -1673,11 +1658,11 @@ backported. The deprecating plan is a 3 major versions removal. Which is as follows: 1. Introduce new `Predicate` API, deprecation warning for old matcher APIs. - (Nimble `v7.x.x`) + (Nimble `v7.x.x` and `v8.x.x`) 2. Introduce warnings on migration-path features (`.predicate`, `Predicate`-constructors with similar arguments to old API). (Nimble - `v8.x.x`) - 3. Remove old API. (Nimble `v9.x.x`) + `v9.x.x`) + 3. Remove old API. (Nimble `v10.x.x`) # Installing Nimble diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/AdapterProtocols.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/AdapterProtocols.swift index 2e58fdf..abaf532 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/AdapterProtocols.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/AdapterProtocols.swift @@ -13,5 +13,6 @@ public protocol AssertionHandler { /// /// @see AssertionHandler public var NimbleAssertionHandler: AssertionHandler = { () -> AssertionHandler in + // swiftlint:disable:previous identifier_name return isXCTestAvailable() ? NimbleXCTestHandler() : NimbleXCTestUnavailableHandler() }() diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/AssertionRecorder.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/AssertionRecorder.swift index 740c392..0f5df59 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/AssertionRecorder.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/AssertionRecorder.swift @@ -37,21 +37,48 @@ public class AssertionRecorder: AssertionHandler { } } +extension NMBExceptionCapture { + internal func tryBlockThrows(_ unsafeBlock: () throws -> Void) throws { + var catchedError: Error? + tryBlock { + do { + try unsafeBlock() + } catch { + catchedError = error + } + } + if let error = catchedError { + throw error + } + } +} + /// Allows you to temporarily replace the current Nimble assertion handler with /// the one provided for the scope of the closure. /// /// Once the closure finishes, then the original Nimble assertion handler is restored. /// /// @see AssertionHandler -public func withAssertionHandler(_ tempAssertionHandler: AssertionHandler, closure: () throws -> Void) { +public func withAssertionHandler(_ tempAssertionHandler: AssertionHandler, + file: FileString = #file, + line: UInt = #line, + closure: () throws -> Void) { let environment = NimbleEnvironment.activeInstance let oldRecorder = environment.assertionHandler let capturer = NMBExceptionCapture(handler: nil, finally: ({ environment.assertionHandler = oldRecorder })) environment.assertionHandler = tempAssertionHandler - capturer.tryBlock { - try! closure() + + do { + try capturer.tryBlockThrows { + try closure() + } + } catch { + let failureMessage = FailureMessage() + failureMessage.stringValue = "unexpected error thrown: <\(error)>" + let location = SourceLocation(file: file, line: line) + tempAssertionHandler.assert(false, message: failureMessage, location: location) } } @@ -65,7 +92,7 @@ public func withAssertionHandler(_ tempAssertionHandler: AssertionHandler, closu /// assertion handler when this is true. Defaults to false. /// /// @see gatherFailingExpectations -public func gatherExpectations(silently: Bool = false, closure: @escaping () -> Void) -> [AssertionRecord] { +public func gatherExpectations(silently: Bool = false, closure: () -> Void) -> [AssertionRecord] { let previousRecorder = NimbleEnvironment.activeInstance.assertionHandler let recorder = AssertionRecorder() let handlers: [AssertionHandler] @@ -92,7 +119,7 @@ public func gatherExpectations(silently: Bool = false, closure: @escaping () -> /// /// @see gatherExpectations /// @see raiseException source for an example use case. -public func gatherFailingExpectations(silently: Bool = false, closure: @escaping () -> Void) -> [AssertionRecord] { +public func gatherFailingExpectations(silently: Bool = false, closure: () -> Void) -> [AssertionRecord] { let assertions = gatherExpectations(silently: silently, closure: closure) return assertions.filter { assertion in !assertion.success diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift index 88d9406..b3eb09a 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift @@ -1,10 +1,10 @@ import Foundation -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE private func from(objcPredicate: NMBPredicate) -> Predicate { return Predicate { actualExpression in - let result = objcPredicate.satisfies(({ try! actualExpression.evaluate() }), + let result = objcPredicate.satisfies(({ try actualExpression.evaluate() }), location: actualExpression.location) return result.toSwift() } @@ -15,6 +15,7 @@ internal struct ObjCMatcherWrapper: Matcher { func matches(_ actualExpression: Expression, failureMessage: FailureMessage) -> Bool { return matcher.matches( + // swiftlint:disable:next force_try ({ try! actualExpression.evaluate() }), failureMessage: failureMessage, location: actualExpression.location) @@ -22,6 +23,7 @@ internal struct ObjCMatcherWrapper: Matcher { func doesNotMatch(_ actualExpression: Expression, failureMessage: FailureMessage) -> Bool { return matcher.doesNotMatch( + // swiftlint:disable:next force_try ({ try! actualExpression.evaluate() }), failureMessage: failureMessage, location: actualExpression.location) @@ -30,13 +32,15 @@ internal struct ObjCMatcherWrapper: Matcher { // Equivalent to Expectation, but for Nimble's Objective-C interface public class NMBExpectation: NSObject { - internal let _actualBlock: () -> NSObject! + // swiftlint:disable identifier_name + internal let _actualBlock: () -> NSObject? internal var _negative: Bool internal let _file: FileString internal let _line: UInt internal var _timeout: TimeInterval = 1.0 + // swiftlint:enable identifier_name - @objc public init(actualBlock: @escaping () -> NSObject!, negative: Bool, file: FileString, line: UInt) { + @objc public init(actualBlock: @escaping () -> NSObject?, negative: Bool, file: FileString, line: UInt) { self._actualBlock = actualBlock self._negative = negative self._file = file diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBObjCMatcher.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBObjCMatcher.swift index 9ba2ffa..a91efe3 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBObjCMatcher.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/NMBObjCMatcher.swift @@ -1,15 +1,17 @@ import Foundation -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) // swiftlint:disable line_length -public typealias MatcherBlock = (_ actualExpression: Expression, _ failureMessage: FailureMessage) -> Bool -public typealias FullMatcherBlock = (_ actualExpression: Expression, _ failureMessage: FailureMessage, _ shouldNotMatch: Bool) -> Bool +public typealias MatcherBlock = (_ actualExpression: Expression, _ failureMessage: FailureMessage) throws -> Bool +public typealias FullMatcherBlock = (_ actualExpression: Expression, _ failureMessage: FailureMessage, _ shouldNotMatch: Bool) throws -> Bool // swiftlint:enable line_length public class NMBObjCMatcher: NSObject, NMBMatcher { + // swiftlint:disable identifier_name let _match: MatcherBlock let _doesNotMatch: MatcherBlock + // swiftlint:enable identifier_name let canMatchNil: Bool public init(canMatchNil: Bool, matcher: @escaping MatcherBlock, notMatcher: @escaping MatcherBlock) { @@ -24,7 +26,7 @@ public class NMBObjCMatcher: NSObject, NMBMatcher { public convenience init(canMatchNil: Bool, matcher: @escaping MatcherBlock) { self.init(canMatchNil: canMatchNil, matcher: matcher, notMatcher: ({ actualExpression, failureMessage in - return !matcher(actualExpression, failureMessage) + return try !matcher(actualExpression, failureMessage) })) } @@ -34,9 +36,9 @@ public class NMBObjCMatcher: NSObject, NMBMatcher { public convenience init(canMatchNil: Bool, matcher: @escaping FullMatcherBlock) { self.init(canMatchNil: canMatchNil, matcher: ({ actualExpression, failureMessage in - return matcher(actualExpression, failureMessage, false) + return try matcher(actualExpression, failureMessage, false) }), notMatcher: ({ actualExpression, failureMessage in - return matcher(actualExpression, failureMessage, true) + return try matcher(actualExpression, failureMessage, true) })) } @@ -55,11 +57,16 @@ public class NMBObjCMatcher: NSObject, NMBMatcher { return true } - public func matches(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + public func matches(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let expr = Expression(expression: actualBlock, location: location) - let result = _match( - expr, - failureMessage) + let result: Bool + do { + result = try _match(expr, failureMessage) + } catch let error { + failureMessage.stringValue = "unexpected error thrown: <\(error)>" + return false + } + if self.canMatch(Expression(expression: actualBlock, location: location), failureMessage: failureMessage) { return result } else { @@ -67,11 +74,16 @@ public class NMBObjCMatcher: NSObject, NMBMatcher { } } - public func doesNotMatch(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + public func doesNotMatch(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let expr = Expression(expression: actualBlock, location: location) - let result = _doesNotMatch( - expr, - failureMessage) + let result: Bool + do { + result = try _doesNotMatch(expr, failureMessage) + } catch let error { + failureMessage.stringValue = "unexpected error thrown: <\(error)>" + return false + } + if self.canMatch(Expression(expression: actualBlock, location: location), failureMessage: failureMessage) { return result } else { diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift index e1b5432..1b2e8c0 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift @@ -3,7 +3,7 @@ import Foundation /// "Global" state of Nimble is stored here. Only DSL functions should access / be aware of this /// class' existence -internal class NimbleEnvironment { +internal class NimbleEnvironment: NSObject { static var activeInstance: NimbleEnvironment { get { let env = Thread.current.threadDictionary["NimbleEnvironment"] @@ -20,6 +20,7 @@ internal class NimbleEnvironment { } } + // swiftlint:disable:next todo // TODO: eventually migrate the global to this environment value var assertionHandler: AssertionHandler { get { return NimbleAssertionHandler } @@ -29,17 +30,14 @@ internal class NimbleEnvironment { var suppressTVOSAssertionWarning: Bool = false var awaiter: Awaiter - init() { - let timeoutQueue: DispatchQueue - if #available(OSX 10.10, *) { - timeoutQueue = DispatchQueue.global(qos: .userInitiated) - } else { - timeoutQueue = DispatchQueue.global(priority: .high) - } - + override init() { + let timeoutQueue = DispatchQueue.global(qos: .userInitiated) awaiter = Awaiter( waitLock: AssertionWaitLock(), asyncQueue: .main, - timeoutQueue: timeoutQueue) + timeoutQueue: timeoutQueue + ) + + super.init() } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift index 0ad8590..719bf44 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift @@ -42,18 +42,29 @@ class NimbleXCTestUnavailableHandler: AssertionHandler { private(set) var currentTestCase: XCTestCase? + private var stashed_swift_reportFatalErrorsToDebugger: Bool = false + @objc func testCaseWillStart(_ testCase: XCTestCase) { + #if swift(>=3.2) + stashed_swift_reportFatalErrorsToDebugger = _swift_reportFatalErrorsToDebugger + _swift_reportFatalErrorsToDebugger = false + #endif + currentTestCase = testCase } @objc func testCaseDidFinish(_ testCase: XCTestCase) { currentTestCase = nil + + #if swift(>=3.2) + _swift_reportFatalErrorsToDebugger = stashed_swift_reportFatalErrorsToDebugger + #endif } } #endif func isXCTestAvailable() -> Bool { -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) // XCTest is weakly linked and so may not be present return NSClassFromString("XCTestCase") != nil #else @@ -61,20 +72,19 @@ func isXCTestAvailable() -> Bool { #endif } -private func recordFailure(_ message: String, location: SourceLocation) { +public func recordFailure(_ message: String, location: SourceLocation) { #if SWIFT_PACKAGE XCTFail("\(message)", file: location.file, line: location.line) #else if let testCase = CurrentTestCaseTracker.sharedInstance.currentTestCase { - #if swift(>=4) let line = Int(location.line) - #else - let line = location.line - #endif testCase.recordFailure(withDescription: message, inFile: location.file, atLine: line, expected: true) } else { - let msg = "Attempted to report a test failure to XCTest while no test case was running. " + - "The failure was:\n\"\(message)\"\nIt occurred at: \(location.file):\(location.line)" + let msg = """ + Attempted to report a test failure to XCTest while no test case was running. The failure was: + \"\(message)\" + It occurred at: \(location.file):\(location.line) + """ NSException(name: .internalInconsistencyException, reason: msg, userInfo: nil).raise() } #endif diff --git a/Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift b/Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift index a84682f..c049417 100644 --- a/Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift +++ b/Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift @@ -14,7 +14,7 @@ internal class NMBWait: NSObject { // About these kind of lines, `@objc` attributes are only required for Objective-C // support, so that should be conditional on Darwin platforms and normal Xcode builds // (non-SwiftPM builds). -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE @objc internal class func until( timeout: TimeInterval, @@ -87,13 +87,19 @@ internal class NMBWait: NSObject { } } -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE @objc(untilFile:line:action:) - internal class func until(_ file: FileString = #file, line: UInt = #line, action: @escaping (() -> Void) -> Void) { + internal class func until( + _ file: FileString = #file, + line: UInt = #line, + action: @escaping (@escaping () -> Void) -> Void) { until(timeout: 1, file: file, line: line, action: action) } #else - internal class func until(_ file: FileString = #file, line: UInt = #line, action: @escaping (() -> Void) -> Void) { + internal class func until( + _ file: FileString = #file, + line: UInt = #line, + action: @escaping (@escaping () -> Void) -> Void) { until(timeout: 1, file: file, line: line, action: action) } #endif @@ -111,6 +117,6 @@ internal func blockedRunLoopErrorMessageFor(_ fnName: String, leeway: TimeInterv /// /// This function manages the main run loop (`NSRunLoop.mainRunLoop()`) while this function /// is executing. Any attempts to touch the run loop may cause non-deterministic behavior. -public func waitUntil(timeout: TimeInterval = 1, file: FileString = #file, line: UInt = #line, action: @escaping (@escaping () -> Void) -> Void) { +public func waitUntil(timeout: TimeInterval = AsyncDefaults.Timeout, file: FileString = #file, line: UInt = #line, action: @escaping (@escaping () -> Void) -> Void) { NMBWait.until(timeout: timeout, file: file, line: line, action: action) } diff --git a/Example/Pods/Nimble/Sources/Nimble/DSL.swift b/Example/Pods/Nimble/Sources/Nimble/DSL.swift index e49bb0c..d6dc9cc 100644 --- a/Example/Pods/Nimble/Sources/Nimble/DSL.swift +++ b/Example/Pods/Nimble/Sources/Nimble/DSL.swift @@ -43,12 +43,13 @@ internal func nimblePrecondition( line: UInt = #line) { let result = expr() if !result { -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) - let e = NSException( +#if canImport(Darwin) + let exception = NSException( name: NSExceptionName(name()), reason: message(), - userInfo: nil) - e.raise() + userInfo: nil + ) + exception.raise() #else preconditionFailure("\(name()) - \(message())", file: file, line: line) #endif @@ -56,9 +57,12 @@ internal func nimblePrecondition( } internal func internalError(_ msg: String, file: FileString = #file, line: UInt = #line) -> Never { + // swiftlint:disable line_length fatalError( - "Nimble Bug Found: \(msg) at \(file):\(line).\n" + - "Please file a bug to Nimble: https://github.com/Quick/Nimble/issues with the " + - "code snippet that caused this error." + """ + Nimble Bug Found: \(msg) at \(file):\(line). + Please file a bug to Nimble: https://github.com/Quick/Nimble/issues with the code snippet that caused this error. + """ ) + // swiftlint:enable line_length } diff --git a/Example/Pods/Nimble/Sources/Nimble/Expectation.swift b/Example/Pods/Nimble/Sources/Nimble/Expectation.swift index e3f616a..41625a1 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Expectation.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Expectation.swift @@ -1,23 +1,5 @@ import Foundation -// Deprecated -internal func expressionMatches(_ expression: Expression, matcher: U, to: String, description: String?) -> (Bool, FailureMessage) - where U: Matcher, U.ValueType == T { - let msg = FailureMessage() - msg.userDescription = description - msg.to = to - do { - let pass = try matcher.matches(expression, failureMessage: msg) - if msg.actualValue == "" { - msg.actualValue = "<\(stringify(try expression.evaluate()))>" - } - return (pass, msg) - } catch let error { - msg.stringValue = "unexpected error thrown: <\(error)>" - return (false, msg) - } -} - // Deprecated internal func expressionDoesNotMatch(_ expression: Expression, matcher: U, toNot: String, description: String?) -> (Bool, FailureMessage) where U: Matcher, U.ValueType == T { @@ -75,6 +57,10 @@ public struct Expectation { public let expression: Expression + public init(expression: Expression) { + self.expression = expression + } + public func verify(_ pass: Bool, _ message: FailureMessage) { let handler = NimbleEnvironment.activeInstance.assertionHandler handler.assert(pass, message: message, location: expression.location) @@ -85,8 +71,15 @@ public struct Expectation { /// DEPRECATED: Tests the actual value using a matcher to match. public func to(_ matcher: U, description: String? = nil) where U: Matcher, U.ValueType == T { - let (pass, msg) = expressionMatches(expression, matcher: matcher, to: "to", description: description) - verify(pass, msg) + let (pass, msg) = execute( + expression, + .toMatch, + matcher.predicate, + to: "to", + description: description, + captureExceptions: false + ) + verify(pass, msg) } /// DEPRECATED: Tests the actual value using a matcher to not match. @@ -127,6 +120,6 @@ public struct Expectation { } // see: - // - AsyncMatcherWrapper for extension + // - `async` for extension // - NMBExpectation for Objective-C interface } diff --git a/Example/Pods/Nimble/Sources/Nimble/ExpectationMessage.swift b/Example/Pods/Nimble/Sources/Nimble/ExpectationMessage.swift index 992ee0e..b0cbcc3 100644 --- a/Example/Pods/Nimble/Sources/Nimble/ExpectationMessage.swift +++ b/Example/Pods/Nimble/Sources/Nimble/ExpectationMessage.swift @@ -75,6 +75,7 @@ public indirect enum ExpectationMessage { } internal func visitLeafs(_ f: (ExpectationMessage) -> ExpectationMessage) -> ExpectationMessage { + // swiftlint:disable:previous identifier_name switch self { case .fail, .expectedTo, .expectedActualValueTo, .expectedCustomValueTo: return f(self) @@ -90,6 +91,7 @@ public indirect enum ExpectationMessage { /// Replaces a primary expectation with one returned by f. Preserves all composite expectations /// that were built upon it (aka - all appended(message:) and appended(details:). public func replacedExpectation(_ f: @escaping (ExpectationMessage) -> ExpectationMessage) -> ExpectationMessage { + // swiftlint:disable:previous identifier_name func walk(_ msg: ExpectationMessage) -> ExpectationMessage { switch msg { case .fail, .expectedTo, .expectedActualValueTo, .expectedCustomValueTo: @@ -124,6 +126,7 @@ public indirect enum ExpectationMessage { return visitLeafs(walk) } + // swiftlint:disable:next todo // TODO: test & verify correct behavior internal func prepended(message: String) -> ExpectationMessage { return .prepends(message, self) @@ -152,8 +155,10 @@ public indirect enum ExpectationMessage { // Backwards compatibility: converts ExpectationMessage tree to FailureMessage internal func update(failureMessage: FailureMessage) { switch self { - case let .fail(msg): + case let .fail(msg) where !msg.isEmpty: failureMessage.stringValue = msg + case .fail: + break case let .expectedTo(msg): failureMessage.actualValue = nil failureMessage.postfixMessage = msg @@ -181,32 +186,32 @@ public indirect enum ExpectationMessage { extension FailureMessage { internal func toExpectationMessage() -> ExpectationMessage { - let defaultMsg = FailureMessage() - if expected != defaultMsg.expected || _stringValueOverride != nil { + let defaultMessage = FailureMessage() + if expected != defaultMessage.expected || _stringValueOverride != nil { return .fail(stringValue) } - var msg: ExpectationMessage = .fail(userDescription ?? "") + var message: ExpectationMessage = .fail(userDescription ?? "") if actualValue != "" && actualValue != nil { - msg = .expectedCustomValueTo(postfixMessage, actualValue ?? "") - } else if postfixMessage != defaultMsg.postfixMessage { + message = .expectedCustomValueTo(postfixMessage, actualValue ?? "") + } else if postfixMessage != defaultMessage.postfixMessage { if actualValue == nil { - msg = .expectedTo(postfixMessage) + message = .expectedTo(postfixMessage) } else { - msg = .expectedActualValueTo(postfixMessage) + message = .expectedActualValueTo(postfixMessage) } } - if postfixActual != defaultMsg.postfixActual { - msg = .appends(msg, postfixActual) + if postfixActual != defaultMessage.postfixActual { + message = .appends(message, postfixActual) } - if let m = extendedMessage { - msg = .details(msg, m) + if let extended = extendedMessage { + message = .details(message, extended) } - return msg + return message } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) public class NMBExpectationMessage: NSObject { private let msg: ExpectationMessage diff --git a/Example/Pods/Nimble/Sources/Nimble/Expression.swift b/Example/Pods/Nimble/Sources/Nimble/Expression.swift index 5a233fd..b6b2ee3 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Expression.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Expression.swift @@ -24,8 +24,10 @@ internal func memoizedClosure(_ closure: @escaping () throws -> T) -> (Bool) /// This provides a common consumable API for matchers to utilize to allow /// Nimble to change internals to how the captured closure is managed. public struct Expression { + // swiftlint:disable identifier_name internal let _expression: (Bool) throws -> T? internal let _withoutCaching: Bool + // swiftlint:enable identifier_name public let location: SourceLocation public let isClosure: Bool diff --git a/Example/Pods/Nimble/Sources/Nimble/FailureMessage.swift b/Example/Pods/Nimble/Sources/Nimble/FailureMessage.swift index 2bc57eb..503b540 100644 --- a/Example/Pods/Nimble/Sources/Nimble/FailureMessage.swift +++ b/Example/Pods/Nimble/Sources/Nimble/FailureMessage.swift @@ -28,6 +28,7 @@ public class FailureMessage: NSObject { } } + // swiftlint:disable:next identifier_name internal var _stringValueOverride: String? internal var hasOverriddenStringValue: Bool { return _stringValueOverride != nil diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/AllPass.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/AllPass.swift index 8affa62..dbbccb9 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/AllPass.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/AllPass.swift @@ -63,12 +63,12 @@ private func createPredicate(_ elementMatcher: Predicate) } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { @objc public class func allPassMatcher(_ matcher: NMBMatcher) -> NMBPredicate { return NMBPredicate { actualExpression in let location = actualExpression.location - let actualValue = try! actualExpression.evaluate() + let actualValue = try actualExpression.evaluate() var nsObjects = [NSObject]() var collectionIsUsable = true @@ -99,10 +99,11 @@ extension NMBObjCMatcher { let expr = Expression(expression: ({ nsObjects }), location: location) let pred: Predicate<[NSObject]> = createPredicate(Predicate { expr in if let predicate = matcher as? NMBPredicate { - return predicate.satisfies(({ try! expr.evaluate() }), location: expr.location).toSwift() + return predicate.satisfies(({ try expr.evaluate() }), location: expr.location).toSwift() } else { let failureMessage = FailureMessage() let result = matcher.matches( + // swiftlint:disable:next force_try ({ try! expr.evaluate() }), failureMessage: failureMessage, location: expr.location @@ -114,7 +115,7 @@ extension NMBObjCMatcher { ) } }) - return try! pred.satisfies(expr).toObjectiveC() + return try pred.satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/AsyncMatcherWrapper.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/Async.swift similarity index 63% rename from Example/Pods/Nimble/Sources/Nimble/Matchers/AsyncMatcherWrapper.swift rename to Example/Pods/Nimble/Sources/Nimble/Matchers/Async.swift index 3cba8b0..5022fe2 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/AsyncMatcherWrapper.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/Async.swift @@ -23,92 +23,29 @@ private func async(style: ExpectationStyle, predicate: Predicate, timeout: } switch result { case .completed: return lastPredicateResult! - case .timedOut: return PredicateResult(status: .fail, message: lastPredicateResult!.message) + case .timedOut: + let message = lastPredicateResult?.message ?? .fail("timed out before returning a value") + return PredicateResult(status: .fail, message: message) case let .errorThrown(error): return PredicateResult(status: .fail, message: .fail("unexpected error thrown: <\(error)>")) case let .raisedException(exception): return PredicateResult(status: .fail, message: .fail("unexpected exception raised: \(exception)")) case .blockedRunLoop: // swiftlint:disable:next line_length - return PredicateResult(status: .fail, message: lastPredicateResult!.message.appended(message: " (timed out, but main thread was unresponsive).")) + let message = lastPredicateResult?.message.appended(message: " (timed out, but main run loop was unresponsive).") ?? + .fail("main run loop was unresponsive") + return PredicateResult(status: .fail, message: message) case .incomplete: - internalError("Reached .incomplete state for toEventually(...).") - } - } -} - -// Deprecated -internal struct AsyncMatcherWrapper: Matcher - where U: Matcher, U.ValueType == T { - let fullMatcher: U - let timeoutInterval: TimeInterval - let pollInterval: TimeInterval - - init(fullMatcher: U, timeoutInterval: TimeInterval = AsyncDefaults.Timeout, pollInterval: TimeInterval = AsyncDefaults.PollInterval) { - self.fullMatcher = fullMatcher - self.timeoutInterval = timeoutInterval - self.pollInterval = pollInterval - } - - func matches(_ actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - let uncachedExpression = actualExpression.withoutCaching() - let fnName = "expect(...).toEventually(...)" - let result = pollBlock( - pollInterval: pollInterval, - timeoutInterval: timeoutInterval, - file: actualExpression.location.file, - line: actualExpression.location.line, - fnName: fnName) { - try self.fullMatcher.matches(uncachedExpression, failureMessage: failureMessage) - } - switch result { - case let .completed(isSuccessful): return isSuccessful - case .timedOut: return false - case let .errorThrown(error): - failureMessage.stringValue = "an unexpected error thrown: <\(error)>" - return false - case let .raisedException(exception): - failureMessage.stringValue = "an unexpected exception thrown: <\(exception)>" - return false - case .blockedRunLoop: - failureMessage.postfixMessage += " (timed out, but main thread was unresponsive)." - return false - case .incomplete: - internalError("Reached .incomplete state for toEventually(...).") - } - } - - func doesNotMatch(_ actualExpression: Expression, failureMessage: FailureMessage) -> Bool { - let uncachedExpression = actualExpression.withoutCaching() - let result = pollBlock( - pollInterval: pollInterval, - timeoutInterval: timeoutInterval, - file: actualExpression.location.file, - line: actualExpression.location.line, - fnName: "expect(...).toEventuallyNot(...)") { - try self.fullMatcher.doesNotMatch(uncachedExpression, failureMessage: failureMessage) - } - switch result { - case let .completed(isSuccessful): return isSuccessful - case .timedOut: return false - case let .errorThrown(error): - failureMessage.stringValue = "an unexpected error thrown: <\(error)>" - return false - case let .raisedException(exception): - failureMessage.stringValue = "an unexpected exception thrown: <\(exception)>" - return false - case .blockedRunLoop: - failureMessage.postfixMessage += " (timed out, but main thread was unresponsive)." - return false - case .incomplete: - internalError("Reached .incomplete state for toEventuallyNot(...).") + internalError("Reached .incomplete state for \(fnName)(...).") } } } private let toEventuallyRequiresClosureError = FailureMessage( - // swiftlint:disable:next line_length - stringValue: "expect(...).toEventually(...) requires an explicit closure (eg - expect { ... }.toEventually(...) )\nSwift 1.2 @autoclosure behavior has changed in an incompatible way for Nimble to function" + stringValue: """ + expect(...).toEventually(...) requires an explicit closure (eg - expect { ... }.toEventually(...) ) + Swift 1.2 @autoclosure behavior has changed in an incompatible way for Nimble to function + """ ) extension Expectation { @@ -182,14 +119,19 @@ extension Expectation { public func toEventually(_ matcher: U, timeout: TimeInterval = AsyncDefaults.Timeout, pollInterval: TimeInterval = AsyncDefaults.PollInterval, description: String? = nil) where U: Matcher, U.ValueType == T { if expression.isClosure { - let (pass, msg) = expressionMatches( + let (pass, msg) = execute( expression, - matcher: AsyncMatcherWrapper( - fullMatcher: matcher, - timeoutInterval: timeout, - pollInterval: pollInterval), + .toMatch, + async( + style: .toMatch, + predicate: matcher.predicate, + timeout: timeout, + poll: pollInterval, + fnName: "toEventually" + ), to: "to eventually", - description: description + description: description, + captureExceptions: false ) verify(pass, msg) } else { @@ -208,10 +150,13 @@ extension Expectation { if expression.isClosure { let (pass, msg) = expressionDoesNotMatch( expression, - matcher: AsyncMatcherWrapper( - fullMatcher: matcher, - timeoutInterval: timeout, - pollInterval: pollInterval), + matcher: async( + style: .toNotMatch, + predicate: matcher.predicate, + timeout: timeout, + poll: pollInterval, + fnName: "toEventuallyNot" + ), toNot: "to eventually not", description: description ) diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAKindOf.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAKindOf.swift index 5674525..3a68b09 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAKindOf.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAKindOf.swift @@ -29,7 +29,7 @@ public func beAKindOf(_ expectedType: T.Type) -> Predicate { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) /// A Nimble matcher that succeeds when the actual value is an instance of the given class. /// @see beAnInstanceOf if you want to match against the exact class @@ -59,8 +59,8 @@ public func beAKindOf(_ expectedClass: AnyClass) -> Predicate { extension NMBObjCMatcher { @objc public class func beAKindOfMatcher(_ expected: AnyClass) -> NMBMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - return try! beAKindOf(expected).matches(actualExpression, failureMessage: failureMessage) + return NMBPredicate { actualExpression in + return try beAKindOf(expected).satisfies(actualExpression).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAnInstanceOf.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAnInstanceOf.swift index 70c5661..3cef3a7 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAnInstanceOf.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeAnInstanceOf.swift @@ -33,7 +33,7 @@ public func beAnInstanceOf(_ expectedClass: AnyClass) -> Predicate { } else { actualString = "" } - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) + #if canImport(Darwin) let matches = instance != nil && instance!.isMember(of: expectedClass) #else let matches = instance != nil && type(of: instance!) == expectedClass @@ -45,11 +45,11 @@ public func beAnInstanceOf(_ expectedClass: AnyClass) -> Predicate { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { @objc public class func beAnInstanceOfMatcher(_ expected: AnyClass) -> NMBMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - return try! beAnInstanceOf(expected).matches(actualExpression, failureMessage: failureMessage) + return NMBPredicate { actualExpression in + return try beAnInstanceOf(expected).satisfies(actualExpression).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift index dfb4e28..d6fd1ee 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift @@ -1,5 +1,6 @@ import Foundation +// swiftlint:disable:next identifier_name public let DefaultDelta = 0.0001 internal func isCloseTo(_ actualValue: NMBDoubleConvertible?, @@ -34,31 +35,45 @@ public func beCloseTo(_ expectedValue: NMBDoubleConvertible, within delta: Doubl } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) public class NMBObjCBeCloseToMatcher: NSObject, NMBMatcher { + // swiftlint:disable identifier_name var _expected: NSNumber var _delta: CDouble + // swiftlint:enable identifier_name init(expected: NSNumber, within: CDouble) { _expected = expected _delta = within } - @objc public func matches(_ actualExpression: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + @objc public func matches(_ actualExpression: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let actualBlock: () -> NMBDoubleConvertible? = ({ return actualExpression() as? NMBDoubleConvertible }) let expr = Expression(expression: actualBlock, location: location) let matcher = beCloseTo(self._expected, within: self._delta) - return try! matcher.matches(expr, failureMessage: failureMessage) + + do { + return try matcher.matches(expr, failureMessage: failureMessage) + } catch let error { + failureMessage.stringValue = "unexpected error thrown: <\(error)>" + return false + } } - @objc public func doesNotMatch(_ actualExpression: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + @objc public func doesNotMatch(_ actualExpression: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let actualBlock: () -> NMBDoubleConvertible? = ({ return actualExpression() as? NMBDoubleConvertible }) let expr = Expression(expression: actualBlock, location: location) let matcher = beCloseTo(self._expected, within: self._delta) - return try! matcher.doesNotMatch(expr, failureMessage: failureMessage) + + do { + return try matcher.doesNotMatch(expr, failureMessage: failureMessage) + } catch let error { + failureMessage.stringValue = "unexpected error thrown: <\(error)>" + return false + } } @objc public var within: (CDouble) -> NMBObjCBeCloseToMatcher { @@ -98,14 +113,17 @@ public func beCloseTo(_ expectedValues: [Double], within delta: Double = Default infix operator ≈ : ComparisonPrecedence +// swiftlint:disable:next identifier_name public func ≈(lhs: Expectation<[Double]>, rhs: [Double]) { lhs.to(beCloseTo(rhs)) } +// swiftlint:disable:next identifier_name public func ≈(lhs: Expectation, rhs: NMBDoubleConvertible) { lhs.to(beCloseTo(rhs)) } +// swiftlint:disable:next identifier_name public func ≈(lhs: Expectation, rhs: (expected: NMBDoubleConvertible, delta: Double)) { lhs.to(beCloseTo(rhs.expected, within: rhs.delta)) } @@ -121,6 +139,7 @@ precedencegroup PlusMinusOperatorPrecedence { } infix operator ± : PlusMinusOperatorPrecedence +// swiftlint:disable:next identifier_name public func ±(lhs: NMBDoubleConvertible, rhs: Double) -> (expected: NMBDoubleConvertible, delta: Double) { return (expected: lhs, delta: rhs) } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeEmpty.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeEmpty.swift index 3cbc15d..860287f 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeEmpty.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeEmpty.swift @@ -4,15 +4,36 @@ import Foundation /// means the are no items in that collection. For strings, it is an empty string. public func beEmpty() -> Predicate { return Predicate.simple("be empty") { actualExpression in - let actualSeq = try actualExpression.evaluate() - if actualSeq == nil { + guard let actual = try actualExpression.evaluate() else { return .fail } - var generator = actualSeq!.makeIterator() + var generator = actual.makeIterator() return PredicateStatus(bool: generator.next() == nil) } } +/// A Nimble matcher that succeeds when a value is "empty". For collections, this +/// means the are no items in that collection. For strings, it is an empty string. +public func beEmpty() -> Predicate { + return Predicate.simple("be empty") { actualExpression in + guard let actual = try actualExpression.evaluate() else { + return .fail + } + return PredicateStatus(bool: actual.isEmpty) + } +} + +/// A Nimble matcher that succeeds when a value is "empty". For collections, this +/// means the are no items in that collection. For strings, it is an empty string. +public func beEmpty() -> Predicate { + return Predicate.simple("be empty") { actualExpression in + guard let actual = try actualExpression.evaluate() else { + return .fail + } + return PredicateStatus(bool: actual.isEmpty) + } +} + /// A Nimble matcher that succeeds when a value is "empty". For collections, this /// means the are no items in that collection. For strings, it is an empty string. public func beEmpty() -> Predicate { @@ -61,19 +82,19 @@ public func beEmpty() -> Predicate { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { @objc public class func beEmptyMatcher() -> NMBPredicate { return NMBPredicate { actualExpression in let location = actualExpression.location - let actualValue = try! actualExpression.evaluate() + let actualValue = try actualExpression.evaluate() if let value = actualValue as? NMBCollection { let expr = Expression(expression: ({ value as NMBCollection }), location: location) - return try! beEmpty().satisfies(expr).toObjectiveC() + return try beEmpty().satisfies(expr).toObjectiveC() } else if let value = actualValue as? NSString { let expr = Expression(expression: ({ value as String }), location: location) - return try! beEmpty().satisfies(expr).toObjectiveC() + return try beEmpty().satisfies(expr).toObjectiveC() } else if let actualValue = actualValue { // swiftlint:disable:next line_length let badTypeErrorMsg = "be empty (only works for NSArrays, NSSets, NSIndexSets, NSDictionaries, NSHashTables, and NSStrings)" diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift index 8717f97..4a4cdd2 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift @@ -13,13 +13,13 @@ public func beGreaterThan(_ expectedValue: T?) -> Predicate { /// A Nimble matcher that succeeds when the actual value is greater than the expected value. public func beGreaterThan(_ expectedValue: NMBComparable?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be greater than <\(stringify(expectedValue))>" + let errorMessage = "be greater than <\(stringify(expectedValue))>" + return Predicate.simple(errorMessage) { actualExpression in let actualValue = try actualExpression.evaluate() let matches = actualValue != nil && actualValue!.NMB_compare(expectedValue) == ComparisonResult.orderedDescending - return matches - }.requireNonNil + return PredicateStatus(bool: matches) + } } public func >(lhs: Expectation, rhs: T) { @@ -30,12 +30,12 @@ public func > (lhs: Expectation, rhs: NMBComparable?) { lhs.to(beGreaterThan(rhs)) } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beGreaterThanMatcher(_ expected: NMBComparable?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func beGreaterThanMatcher(_ expected: NMBComparable?) -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { $0 as? NMBComparable } - return try! beGreaterThan(expected).matches(expr, failureMessage: failureMessage) + return try beGreaterThan(expected).satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift index 55d8e7b..39d9e63 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift @@ -3,25 +3,25 @@ import Foundation /// A Nimble matcher that succeeds when the actual value is greater than /// or equal to the expected value. public func beGreaterThanOrEqualTo(_ expectedValue: T?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be greater than or equal to <\(stringify(expectedValue))>" + let message = "be greater than or equal to <\(stringify(expectedValue))>" + return Predicate.simple(message) { actualExpression in let actualValue = try actualExpression.evaluate() if let actual = actualValue, let expected = expectedValue { - return actual >= expected + return PredicateStatus(bool: actual >= expected) } - return false - }.requireNonNil + return .fail + } } /// A Nimble matcher that succeeds when the actual value is greater than /// or equal to the expected value. public func beGreaterThanOrEqualTo(_ expectedValue: T?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be greater than or equal to <\(stringify(expectedValue))>" + let message = "be greater than or equal to <\(stringify(expectedValue))>" + return Predicate.simple(message) { actualExpression in let actualValue = try actualExpression.evaluate() let matches = actualValue != nil && actualValue!.NMB_compare(expectedValue) != ComparisonResult.orderedAscending - return matches - }.requireNonNil + return PredicateStatus(bool: matches) + } } public func >=(lhs: Expectation, rhs: T) { @@ -32,12 +32,12 @@ public func >=(lhs: Expectation, rhs: T) { lhs.to(beGreaterThanOrEqualTo(rhs)) } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beGreaterThanOrEqualToMatcher(_ expected: NMBComparable?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func beGreaterThanOrEqualToMatcher(_ expected: NMBComparable?) -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { $0 as? NMBComparable } - return try! beGreaterThanOrEqualTo(expected).matches(expr, failureMessage: failureMessage) + return try beGreaterThanOrEqualTo(expected).satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift index ad19def..49e503e 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift @@ -3,20 +3,27 @@ import Foundation /// A Nimble matcher that succeeds when the actual value is the same instance /// as the expected instance. public func beIdenticalTo(_ expected: Any?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - #if os(Linux) + return Predicate.define { actualExpression in + #if os(Linux) && !swift(>=4.1.50) let actual = try actualExpression.evaluate() as? AnyObject #else let actual = try actualExpression.evaluate() as AnyObject? #endif - failureMessage.actualValue = "\(identityAsString(actual))" - failureMessage.postfixMessage = "be identical to \(identityAsString(expected))" - #if os(Linux) - return actual === (expected as? AnyObject) && actual !== nil + + let bool: Bool + #if os(Linux) && !swift(>=4.1.50) + bool = actual === (expected as? AnyObject) && actual !== nil #else - return actual === (expected as AnyObject?) && actual !== nil + bool = actual === (expected as AnyObject?) && actual !== nil #endif - }.requireNonNil + return PredicateResult( + bool: bool, + message: .expectedCustomValueTo( + "be identical to \(identityAsString(expected))", + "\(identityAsString(actual))" + ) + ) + } } public func === (lhs: Expectation, rhs: Any?) { @@ -34,12 +41,12 @@ public func be(_ expected: Any?) -> Predicate { return beIdenticalTo(expected) } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beIdenticalToMatcher(_ expected: NSObject?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func beIdenticalToMatcher(_ expected: NSObject?) -> NMBMatcher { + return NMBPredicate { actualExpression in let aExpr = actualExpression.cast { $0 as Any? } - return try! beIdenticalTo(expected).matches(aExpr, failureMessage: failureMessage) + return try beIdenticalTo(expected).satisfies(aExpr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThan.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThan.swift index 8047efd..ef0a7d4 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThan.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThan.swift @@ -2,23 +2,23 @@ import Foundation /// A Nimble matcher that succeeds when the actual value is less than the expected value. public func beLessThan(_ expectedValue: T?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be less than <\(stringify(expectedValue))>" + let message = "be less than <\(stringify(expectedValue))>" + return Predicate.simple(message) { actualExpression in if let actual = try actualExpression.evaluate(), let expected = expectedValue { - return actual < expected + return PredicateStatus(bool: actual < expected) } - return false - }.requireNonNil + return .fail + } } /// A Nimble matcher that succeeds when the actual value is less than the expected value. public func beLessThan(_ expectedValue: NMBComparable?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be less than <\(stringify(expectedValue))>" + let message = "be less than <\(stringify(expectedValue))>" + return Predicate.simple(message) { actualExpression in let actualValue = try actualExpression.evaluate() let matches = actualValue != nil && actualValue!.NMB_compare(expectedValue) == ComparisonResult.orderedAscending - return matches - }.requireNonNil + return PredicateStatus(bool: matches) + } } public func <(lhs: Expectation, rhs: T) { @@ -29,12 +29,12 @@ public func < (lhs: Expectation, rhs: NMBComparable?) { lhs.to(beLessThan(rhs)) } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beLessThanMatcher(_ expected: NMBComparable?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func beLessThanMatcher(_ expected: NMBComparable?) -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { $0 as? NMBComparable } - return try! beLessThan(expected).matches(expr, failureMessage: failureMessage) + return try beLessThan(expected).satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift index f9e9f4e..30ce043 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift @@ -3,23 +3,22 @@ import Foundation /// A Nimble matcher that succeeds when the actual value is less than /// or equal to the expected value. public func beLessThanOrEqualTo(_ expectedValue: T?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be less than or equal to <\(stringify(expectedValue))>" + return Predicate.simple("be less than or equal to <\(stringify(expectedValue))>") { actualExpression in if let actual = try actualExpression.evaluate(), let expected = expectedValue { - return actual <= expected + return PredicateStatus(bool: actual <= expected) } - return false - }.requireNonNil + return .fail + } } /// A Nimble matcher that succeeds when the actual value is less than /// or equal to the expected value. public func beLessThanOrEqualTo(_ expectedValue: T?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be less than or equal to <\(stringify(expectedValue))>" + return Predicate.simple("be less than or equal to <\(stringify(expectedValue))>") { actualExpression in let actualValue = try actualExpression.evaluate() - return actualValue != nil && actualValue!.NMB_compare(expectedValue) != ComparisonResult.orderedDescending - }.requireNonNil + let matches = actualValue.map { $0.NMB_compare(expectedValue) != .orderedDescending } ?? false + return PredicateStatus(bool: matches) + } } public func <=(lhs: Expectation, rhs: T) { @@ -30,12 +29,12 @@ public func <=(lhs: Expectation, rhs: T) { lhs.to(beLessThanOrEqualTo(rhs)) } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beLessThanOrEqualToMatcher(_ expected: NMBComparable?) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func beLessThanOrEqualToMatcher(_ expected: NMBComparable?) -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { $0 as? NMBComparable } - return try! beLessThanOrEqualTo(expected).matches(expr, failureMessage: failureMessage) + return try beLessThanOrEqualTo(expected).satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLogical.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLogical.swift index 2b18b4c..788234b 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLogical.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeLogical.swift @@ -100,14 +100,6 @@ public func beTruthy() -> Predicate< return Predicate.simpleNilable("be truthy") { actualExpression in let actualValue = try actualExpression.evaluate() if let actualValue = actualValue { - // FIXME: This is a workaround to SR-2290. - // See: - // - https://bugs.swift.org/browse/SR-2290 - // - https://github.com/norio-nomura/Nimble/pull/5#issuecomment-237835873 - if let number = actualValue as? NSNumber { - return PredicateStatus(bool: number.boolValue == true) - } - return PredicateStatus(bool: actualValue == (true as T)) } return PredicateStatus(bool: actualValue != nil) @@ -120,47 +112,42 @@ public func beFalsy() -> Predicate NMBObjCMatcher { - return NMBObjCMatcher { actualExpression, failureMessage in + @objc public class func beTruthyMatcher() -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { ($0 as? NSNumber)?.boolValue ?? false } - return try! beTruthy().matches(expr, failureMessage: failureMessage) + return try beTruthy().satisfies(expr).toObjectiveC() } } - @objc public class func beFalsyMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher { actualExpression, failureMessage in + @objc public class func beFalsyMatcher() -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { ($0 as? NSNumber)?.boolValue ?? false } - return try! beFalsy().matches(expr, failureMessage: failureMessage) + return try beFalsy().satisfies(expr).toObjectiveC() } } - @objc public class func beTrueMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher { actualExpression, failureMessage in + @objc public class func beTrueMatcher() -> NMBMatcher { + return NMBPredicate { actualExpression in let expr = actualExpression.cast { ($0 as? NSNumber)?.boolValue ?? false } - return try! beTrue().matches(expr, failureMessage: failureMessage) + return try beTrue().satisfies(expr).toObjectiveC() } } - @objc public class func beFalseMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - let expr = actualExpression.cast { ($0 as? NSNumber)?.boolValue ?? false } - return try! beFalse().matches(expr, failureMessage: failureMessage) + @objc public class func beFalseMatcher() -> NMBMatcher { + return NMBPredicate { actualExpression in + let expr = actualExpression.cast { value -> Bool? in + guard let value = value else { return nil } + return (value as? NSNumber)?.boolValue ?? false + } + return try beFalse().satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeNil.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeNil.swift index a22e0f4..0f21d41 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeNil.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeNil.swift @@ -8,11 +8,11 @@ public func beNil() -> Predicate { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beNilMatcher() -> NMBObjCMatcher { - return NMBObjCMatcher { actualExpression, failureMessage in - return try! beNil().matches(actualExpression, failureMessage: failureMessage) + @objc public class func beNilMatcher() -> NMBMatcher { + return NMBPredicate { actualExpression in + return try beNil().satisfies(actualExpression).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeVoid.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeVoid.swift index f5bf22a..9a7eafd 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeVoid.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeVoid.swift @@ -2,17 +2,18 @@ import Foundation /// A Nimble matcher that succeeds when the actual value is Void. public func beVoid() -> Predicate<()> { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "be void" + return Predicate.simpleNilable("be void") { actualExpression in let actualValue: ()? = try actualExpression.evaluate() - return actualValue != nil + return PredicateStatus(bool: actualValue != nil) } } -public func == (lhs: Expectation<()>, rhs: ()) { - lhs.to(beVoid()) -} +extension Expectation where T == () { + public static func == (lhs: Expectation<()>, rhs: ()) { + lhs.to(beVoid()) + } -public func != (lhs: Expectation<()>, rhs: ()) { - lhs.toNot(beVoid()) + public static func != (lhs: Expectation<()>, rhs: ()) { + lhs.toNot(beVoid()) + } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift index c2ab568..3183eb9 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift @@ -35,24 +35,24 @@ public func beginWith(_ startingElement: Any) -> Predicate public func beginWith(_ startingSubstring: String) -> Predicate { return Predicate.simple("begin with <\(startingSubstring)>") { actualExpression in if let actual = try actualExpression.evaluate() { - let range = actual.range(of: startingSubstring) - return PredicateStatus(bool: range != nil && range!.lowerBound == actual.startIndex) + return PredicateStatus(bool: actual.hasPrefix(startingSubstring)) } return .fail } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func beginWithMatcher(_ expected: Any) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - let actual = try! actualExpression.evaluate() - if (actual as? String) != nil { + @objc public class func beginWithMatcher(_ expected: Any) -> NMBMatcher { + return NMBPredicate { actualExpression in + let actual = try actualExpression.evaluate() + if actual is String { let expr = actualExpression.cast { $0 as? String } - return try! beginWith(expected as! String).matches(expr, failureMessage: failureMessage) + // swiftlint:disable:next force_cast + return try beginWith(expected as! String).satisfies(expr).toObjectiveC() } else { let expr = actualExpression.cast { $0 as? NMBOrderedCollection } - return try! beginWith(expected).matches(expr, failureMessage: failureMessage) + return try beginWith(expected).satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/Contain.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/Contain.swift index f1afb72..6974a4d 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/Contain.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/Contain.swift @@ -1,22 +1,63 @@ import Foundation -/// A Nimble matcher that succeeds when the actual sequence contains the expected value. +/// A Nimble matcher that succeeds when the actual sequence contains the expected values. public func contain(_ items: T...) -> Predicate - where S.Iterator.Element == T { + where S.Element == T { return contain(items) } +/// A Nimble matcher that succeeds when the actual sequence contains the expected values. public func contain(_ items: [T]) -> Predicate - where S.Iterator.Element == T { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "contain <\(arrayAsString(items))>" + where S.Element == T { + return Predicate.simple("contain <\(arrayAsString(items))>") { actualExpression in if let actual = try actualExpression.evaluate() { - return items.all { + let matches = items.allSatisfy { return actual.contains($0) } + return PredicateStatus(bool: matches) + } + return .fail + } +} + +/// A Nimble matcher that succeeds when the actual set contains the expected values. +public func contain(_ items: T...) -> Predicate + where S.Element == T { + return contain(items) +} + +/// A Nimble matcher that succeeds when the actual set contains the expected values. +public func contain(_ items: [T]) -> Predicate + where S.Element == T { + return Predicate.simple("contain <\(arrayAsString(items))>") { actualExpression in + if let actual = try actualExpression.evaluate() { + let matches = items.allSatisfy { + return actual.contains($0) + } + return PredicateStatus(bool: matches) + } + return .fail + } +} + +/// A Nimble matcher that succeeds when the actual set contains the expected values. +public func contain(_ items: T...) -> Predicate + where S.Element == T { + return contain(items) +} + +/// A Nimble matcher that succeeds when the actual set contains the expected values. +public func contain(_ items: [T]) -> Predicate + where S.Element == T { + return Predicate.simple("contain <\(arrayAsString(items))>") { actualExpression in + if let actual = try actualExpression.evaluate() { + let matches = items.allSatisfy { + return actual.contains($0) + } + return PredicateStatus(bool: matches) + } + return .fail } - return false - }.requireNonNil } /// A Nimble matcher that succeeds when the actual string contains the expected substring. @@ -25,16 +66,16 @@ public func contain(_ substrings: String...) -> Predicate { } public func contain(_ substrings: [String]) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "contain <\(arrayAsString(substrings))>" + return Predicate.simple("contain <\(arrayAsString(substrings))>") { actualExpression in if let actual = try actualExpression.evaluate() { - return substrings.all { + let matches = substrings.allSatisfy { let range = actual.range(of: $0) return range != nil && !range!.isEmpty } + return PredicateStatus(bool: matches) } - return false - }.requireNonNil + return .fail + } } /// A Nimble matcher that succeeds when the actual string contains the expected substring. @@ -43,13 +84,13 @@ public func contain(_ substrings: NSString...) -> Predicate { } public func contain(_ substrings: [NSString]) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "contain <\(arrayAsString(substrings))>" + return Predicate.simple("contain <\(arrayAsString(substrings))>") { actualExpression in if let actual = try actualExpression.evaluate() { - return substrings.all { actual.range(of: $0.description).length != 0 } + let matches = substrings.allSatisfy { actual.range(of: $0.description).length != 0 } + return PredicateStatus(bool: matches) } - return false - }.requireNonNil + return .fail + } } /// A Nimble matcher that succeeds when the actual collection contains the expected object. @@ -58,37 +99,45 @@ public func contain(_ items: Any?...) -> Predicate { } public func contain(_ items: [Any?]) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "contain <\(arrayAsString(items))>" - guard let actual = try actualExpression.evaluate() else { return false } - return items.all { item in - return item != nil && actual.contains(item!) + return Predicate.simple("contain <\(arrayAsString(items))>") { actualExpression in + guard let actual = try actualExpression.evaluate() else { return .fail } + let matches = items.allSatisfy { item in + return item.map { actual.contains($0) } ?? false } - }.requireNonNil + return PredicateStatus(bool: matches) + } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func containMatcher(_ expected: [NSObject]) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func containMatcher(_ expected: [NSObject]) -> NMBMatcher { + return NMBPredicate { actualExpression in let location = actualExpression.location - let actualValue = try! actualExpression.evaluate() + let actualValue = try actualExpression.evaluate() if let value = actualValue as? NMBContainer { let expr = Expression(expression: ({ value as NMBContainer }), location: location) // A straightforward cast on the array causes this to crash, so we have to cast the individual items let expectedOptionals: [Any?] = expected.map({ $0 as Any? }) - return try! contain(expectedOptionals).matches(expr, failureMessage: failureMessage) + return try contain(expectedOptionals).satisfies(expr).toObjectiveC() } else if let value = actualValue as? NSString { let expr = Expression(expression: ({ value as String }), location: location) - return try! contain(expected as! [String]).matches(expr, failureMessage: failureMessage) - } else if actualValue != nil { - // swiftlint:disable:next line_length - failureMessage.postfixMessage = "contain <\(arrayAsString(expected))> (only works for NSArrays, NSSets, NSHashTables, and NSStrings)" + // swiftlint:disable:next force_cast + return try contain(expected as! [String]).satisfies(expr).toObjectiveC() + } + + let message: ExpectationMessage + if actualValue != nil { + message = ExpectationMessage.expectedActualValueTo( + // swiftlint:disable:next line_length + "contain <\(arrayAsString(expected))> (only works for NSArrays, NSSets, NSHashTables, and NSStrings)" + ) } else { - failureMessage.postfixMessage = "contain <\(arrayAsString(expected))>" + message = ExpectationMessage + .expectedActualValueTo("contain <\(arrayAsString(expected))>") + .appendedBeNilHint() } - return false + return NMBPredicateResult(status: .fail, message: message.toObjectiveC()) } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/ContainElementSatisfying.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/ContainElementSatisfying.swift index ae0d854..331f3bc 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/ContainElementSatisfying.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/ContainElementSatisfying.swift @@ -2,43 +2,44 @@ import Foundation public func containElementSatisfying(_ predicate: @escaping ((T) -> Bool), _ predicateDescription: String = "") -> Predicate where S.Iterator.Element == T { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.actualValue = nil - + return Predicate.define { actualExpression in + let message: ExpectationMessage if predicateDescription == "" { - failureMessage.postfixMessage = "find object in collection that satisfies predicate" + message = .expectedTo("find object in collection that satisfies predicate") } else { - failureMessage.postfixMessage = "find object in collection \(predicateDescription)" + message = .expectedTo("find object in collection \(predicateDescription)") } if let sequence = try actualExpression.evaluate() { for object in sequence { if predicate(object) { - return true + return PredicateResult(bool: true, message: message) } } - return false + return PredicateResult(bool: false, message: message) } - return false - }.requireNonNil + return PredicateResult(status: .fail, message: message) + } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func containElementSatisfyingMatcher(_ predicate: @escaping ((NSObject) -> Bool)) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - let value = try! actualExpression.evaluate() + @objc public class func containElementSatisfyingMatcher(_ predicate: @escaping ((NSObject) -> Bool)) -> NMBMatcher { + return NMBPredicate { actualExpression in + let value = try actualExpression.evaluate() guard let enumeration = value as? NSFastEnumeration else { - // swiftlint:disable:next line_length - failureMessage.postfixMessage = "containElementSatisfying must be provided an NSFastEnumeration object" - failureMessage.actualValue = nil - failureMessage.expected = "" - failureMessage.to = "" - return false + let message = ExpectationMessage.fail( + "containElementSatisfying must be provided an NSFastEnumeration object" + ) + return NMBPredicateResult(status: .fail, message: message.toObjectiveC()) } + let message = ExpectationMessage + .expectedTo("find object in collection that satisfies predicate") + .toObjectiveC() + var iterator = NSFastEnumerationIterator(enumeration) while let item = iterator.next() { guard let object = item as? NSObject else { @@ -46,14 +47,11 @@ public func containElementSatisfying(_ predicate: @escaping ((T) } if predicate(object) { - return true + return NMBPredicateResult(status: .matches, message: message) } } - failureMessage.actualValue = nil - failureMessage.postfixMessage = "" - failureMessage.to = "to find object in collection that satisfies predicate" - return false + return NMBPredicateResult(status: .doesNotMatch, message: message) } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/ElementsEqual.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/ElementsEqual.swift new file mode 100644 index 0000000..1704e94 --- /dev/null +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/ElementsEqual.swift @@ -0,0 +1,16 @@ +/// A Nimble matcher that succeeds when the actual sequence contain the same elements in the same order to the exepected sequence. +public func elementsEqual(_ expectedValue: S?) -> Predicate where S.Element: Equatable { + // A matcher abstraction for https://developer.apple.com/documentation/swift/sequence/2949668-elementsequal + return Predicate.define("elementsEqual <\(stringify(expectedValue))>") { (actualExpression, msg) in + let actualValue = try actualExpression.evaluate() + switch (expectedValue, actualValue) { + case (nil, _?): + return PredicateResult(status: .fail, message: msg.appendedBeNilHint()) + case (nil, nil), (_, nil): + return PredicateResult(status: .fail, message: msg) + case (let expected?, let actual?): + let matches = expected.elementsEqual(actual) + return PredicateResult(bool: matches, message: msg) + } + } +} diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/EndWith.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/EndWith.swift index a6f9f91..13bdb31 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/EndWith.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/EndWith.swift @@ -4,9 +4,7 @@ import Foundation /// is equal to the expected value. public func endWith(_ endingElement: T) -> Predicate where S.Iterator.Element == T { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "end with <\(endingElement)>" - + return Predicate.simple("end with <\(endingElement)>") { actualExpression in if let actualValue = try actualExpression.evaluate() { var actualGenerator = actualValue.makeIterator() var lastItem: T? @@ -16,55 +14,54 @@ public func endWith(_ endingElement: T) -> Predicate< item = actualGenerator.next() } while(item != nil) - return lastItem == endingElement + return PredicateStatus(bool: lastItem == endingElement) } - return false - }.requireNonNil + return .fail + } } /// A Nimble matcher that succeeds when the actual collection's last element /// is equal to the expected object. public func endWith(_ endingElement: Any) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "end with <\(endingElement)>" - guard let collection = try actualExpression.evaluate() else { return false } - guard collection.count > 0 else { return false } + return Predicate.simple("end with <\(endingElement)>") { actualExpression in + guard let collection = try actualExpression.evaluate() else { return .fail } + guard collection.count > 0 else { return PredicateStatus(bool: false) } #if os(Linux) guard let collectionValue = collection.object(at: collection.count - 1) as? NSObject else { - return false + return .fail } #else let collectionValue = collection.object(at: collection.count - 1) as AnyObject #endif - return collectionValue.isEqual(endingElement) - }.requireNonNil + return PredicateStatus(bool: collectionValue.isEqual(endingElement)) + } } /// A Nimble matcher that succeeds when the actual string contains the expected substring /// where the expected substring's location is the actual string's length minus the /// expected substring's length. public func endWith(_ endingSubstring: String) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "end with <\(endingSubstring)>" + return Predicate.simple("end with <\(endingSubstring)>") { actualExpression in if let collection = try actualExpression.evaluate() { - return collection.hasSuffix(endingSubstring) + return PredicateStatus(bool: collection.hasSuffix(endingSubstring)) } - return false - }.requireNonNil + return .fail + } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func endWithMatcher(_ expected: Any) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - let actual = try! actualExpression.evaluate() - if (actual as? String) != nil { + @objc public class func endWithMatcher(_ expected: Any) -> NMBMatcher { + return NMBPredicate { actualExpression in + let actual = try actualExpression.evaluate() + if actual is String { let expr = actualExpression.cast { $0 as? String } - return try! endWith(expected as! String).matches(expr, failureMessage: failureMessage) + // swiftlint:disable:next force_cast + return try endWith(expected as! String).satisfies(expr).toObjectiveC() } else { let expr = actualExpression.cast { $0 as? NMBOrderedCollection } - return try! endWith(expected).matches(expr, failureMessage: failureMessage) + return try endWith(expected).satisfies(expr).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift index 9467154..b08d5f6 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift @@ -7,103 +7,30 @@ import Foundation public func equal(_ expectedValue: T?) -> Predicate { return Predicate.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in let actualValue = try actualExpression.evaluate() - let matches = actualValue == expectedValue && expectedValue != nil - if expectedValue == nil || actualValue == nil { - if expectedValue == nil && actualValue != nil { - return PredicateResult( - status: .fail, - message: msg.appendedBeNilHint() - ) - } + switch (expectedValue, actualValue) { + case (nil, _?): + return PredicateResult(status: .fail, message: msg.appendedBeNilHint()) + case (nil, nil), (_, nil): return PredicateResult(status: .fail, message: msg) + case (let expected?, let actual?): + let matches = expected == actual + return PredicateResult(bool: matches, message: msg) } - return PredicateResult(status: PredicateStatus(bool: matches), message: msg) - } -} - -/// A Nimble matcher that succeeds when the actual value is equal to the expected value. -/// Values can support equal by supporting the Equatable protocol. -/// -/// @see beCloseTo if you want to match imprecise types (eg - floats, doubles). -public func equal(_ expectedValue: [T: C]?) -> Predicate<[T: C]> { - return Predicate.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in - let actualValue = try actualExpression.evaluate() - if expectedValue == nil || actualValue == nil { - if expectedValue == nil && actualValue != nil { - return PredicateResult( - status: .fail, - message: msg.appendedBeNilHint() - ) - } - return PredicateResult(status: .fail, message: msg) - } - return PredicateResult( - status: PredicateStatus(bool: expectedValue! == actualValue!), - message: msg - ) - } -} - -/// A Nimble matcher that succeeds when the actual collection is equal to the expected collection. -/// Items must implement the Equatable protocol. -public func equal(_ expectedValue: [T]?) -> Predicate<[T]> { - return Predicate.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in - let actualValue = try actualExpression.evaluate() - if expectedValue == nil || actualValue == nil { - if expectedValue == nil && actualValue != nil { - return PredicateResult( - status: .fail, - message: msg.appendedBeNilHint() - ) - } - return PredicateResult( - status: .fail, - message: msg - ) - } - return PredicateResult( - bool: expectedValue! == actualValue!, - message: msg - ) } } /// A Nimble matcher allowing comparison of collection with optional type public func equal(_ expectedValue: [T?]) -> Predicate<[T?]> { return Predicate.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in - if let actualValue = try actualExpression.evaluate() { - let doesNotMatch = PredicateResult( - status: .doesNotMatch, - message: msg - ) - - if expectedValue.count != actualValue.count { - return doesNotMatch - } - - for (index, item) in actualValue.enumerated() { - let otherItem = expectedValue[index] - if item == nil && otherItem == nil { - continue - } else if item == nil && otherItem != nil { - return doesNotMatch - } else if item != nil && otherItem == nil { - return doesNotMatch - } else if item! != otherItem! { - return doesNotMatch - } - } - - return PredicateResult( - status: .matches, - message: msg - ) - } else { + guard let actualValue = try actualExpression.evaluate() else { return PredicateResult( status: .fail, message: msg.appendedBeNilHint() ) } + + let matches = expectedValue == actualValue + return PredicateResult(bool: matches, message: msg) } } @@ -128,44 +55,45 @@ private func equal(_ expectedValue: Set?, stringify: @escaping (Set?) - var errorMessage: ExpectationMessage = .expectedActualValueTo("equal <\(stringify(expectedValue))>") - if let expectedValue = expectedValue { - if let actualValue = try actualExpression.evaluate() { - errorMessage = .expectedCustomValueTo( - "equal <\(stringify(expectedValue))>", - "<\(stringify(actualValue))>" - ) - - if expectedValue == actualValue { - return PredicateResult( - status: .matches, - message: errorMessage - ) - } - - let missing = expectedValue.subtracting(actualValue) - if missing.count > 0 { - errorMessage = errorMessage.appended(message: ", missing <\(stringify(missing))>") - } - - let extra = actualValue.subtracting(expectedValue) - if extra.count > 0 { - errorMessage = errorMessage.appended(message: ", extra <\(stringify(extra))>") - } - return PredicateResult( - status: .doesNotMatch, - message: errorMessage - ) - } + guard let expectedValue = expectedValue else { return PredicateResult( status: .fail, message: errorMessage.appendedBeNilHint() ) - } else { + } + + guard let actualValue = try actualExpression.evaluate() else { return PredicateResult( status: .fail, message: errorMessage.appendedBeNilHint() ) } + + errorMessage = .expectedCustomValueTo( + "equal <\(stringify(expectedValue))>", + "<\(stringify(actualValue))>" + ) + + if expectedValue == actualValue { + return PredicateResult( + status: .matches, + message: errorMessage + ) + } + + let missing = expectedValue.subtracting(actualValue) + if missing.count > 0 { + errorMessage = errorMessage.appended(message: ", missing <\(stringify(missing))>") + } + + let extra = actualValue.subtracting(expectedValue) + if extra.count > 0 { + errorMessage = errorMessage.appended(message: ", extra <\(stringify(extra))>") + } + return PredicateResult( + status: .doesNotMatch, + message: errorMessage + ) } } @@ -209,11 +137,11 @@ public func !=(lhs: Expectation<[T: C]>, rhs: [T: C]?) { lhs.toNot(equal(rhs)) } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { @objc public class func equalMatcher(_ expected: NSObject) -> NMBMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in - return try! equal(expected).matches(actualExpression, failureMessage: failureMessage) + return NMBPredicate { actualExpression in + return try equal(expected).satisfies(actualExpression).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/HaveCount.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/HaveCount.swift index 93335a8..984e2d4 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/HaveCount.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/HaveCount.swift @@ -7,52 +7,67 @@ import Foundation /// A Nimble matcher that succeeds when the actual Collection's count equals /// the expected value -public func haveCount(_ expectedValue: T.IndexDistance) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in +public func haveCount(_ expectedValue: Int) -> Predicate { + return Predicate.define { actualExpression in if let actualValue = try actualExpression.evaluate() { - // swiftlint:disable:next line_length - failureMessage.postfixMessage = "have \(prettyCollectionType(actualValue)) with count \(stringify(expectedValue))" + let message = ExpectationMessage + .expectedCustomValueTo( + "have \(prettyCollectionType(actualValue)) with count \(stringify(expectedValue))", + "\(actualValue.count)" + ) + .appended(details: "Actual Value: \(stringify(actualValue))") + let result = expectedValue == actualValue.count - failureMessage.actualValue = "\(actualValue.count)" - failureMessage.extendedMessage = "Actual Value: \(stringify(actualValue))" - return result + return PredicateResult(bool: result, message: message) } else { - return false + return PredicateResult(status: .fail, message: .fail("")) } - }.requireNonNil + } } /// A Nimble matcher that succeeds when the actual collection's count equals /// the expected value public func haveCount(_ expectedValue: Int) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in + return Predicate { actualExpression in if let actualValue = try actualExpression.evaluate() { - // swiftlint:disable:next line_length - failureMessage.postfixMessage = "have \(prettyCollectionType(actualValue)) with count \(stringify(expectedValue))" + let message = ExpectationMessage + .expectedCustomValueTo( + "have \(prettyCollectionType(actualValue)) with count \(stringify(expectedValue))", + "\(actualValue.count)" + ) + .appended(details: "Actual Value: \(stringify(actualValue))") + let result = expectedValue == actualValue.count - failureMessage.actualValue = "\(actualValue.count)" - failureMessage.extendedMessage = "Actual Value: \(stringify(actualValue))" - return result + return PredicateResult(bool: result, message: message) } else { - return false + return PredicateResult(status: .fail, message: .fail("")) } } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { - @objc public class func haveCountMatcher(_ expected: NSNumber) -> NMBObjCMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + @objc public class func haveCountMatcher(_ expected: NSNumber) -> NMBMatcher { + return NMBPredicate { actualExpression in let location = actualExpression.location - let actualValue = try! actualExpression.evaluate() + let actualValue = try actualExpression.evaluate() if let value = actualValue as? NMBCollection { let expr = Expression(expression: ({ value as NMBCollection}), location: location) - return try! haveCount(expected.intValue).matches(expr, failureMessage: failureMessage) - } else if let actualValue = actualValue { - failureMessage.postfixMessage = "get type of NSArray, NSSet, NSDictionary, or NSHashTable" - failureMessage.actualValue = "\(String(describing: type(of: actualValue)))" + return try haveCount(expected.intValue).satisfies(expr).toObjectiveC() + } + + let message: ExpectationMessage + if let actualValue = actualValue { + message = ExpectationMessage.expectedCustomValueTo( + "get type of NSArray, NSSet, NSDictionary, or NSHashTable", + "\(String(describing: type(of: actualValue)))" + ) + } else { + message = ExpectationMessage + .expectedActualValueTo("have a collection with count \(stringify(expected.intValue))") + .appendedBeNilHint() } - return false + return NMBPredicateResult(status: .fail, message: message.toObjectiveC()) } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/Match.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/Match.swift index 1e5762f..dbcff09 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/Match.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/Match.swift @@ -3,26 +3,25 @@ import Foundation /// A Nimble matcher that succeeds when the actual string satisfies the regular expression /// described by the expected string. public func match(_ expectedValue: String?) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - failureMessage.postfixMessage = "match <\(stringify(expectedValue))>" - + return Predicate.simple("match <\(stringify(expectedValue))>") { actualExpression in if let actual = try actualExpression.evaluate() { if let regexp = expectedValue { - return actual.range(of: regexp, options: .regularExpression) != nil + let bool = actual.range(of: regexp, options: .regularExpression) != nil + return PredicateStatus(bool: bool) } } - return false - }.requireNonNil + return .fail + } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { @objc public class func matchMatcher(_ expected: NSString) -> NMBMatcher { - return NMBObjCMatcher(canMatchNil: false) { actualExpression, failureMessage in + return NMBPredicate { actualExpression in let actual = actualExpression.cast { $0 as? String } - return try! match(expected.description).matches(actual, failureMessage: failureMessage) + return try match(expected.description).satisfies(actual).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/MatchError.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/MatchError.swift index 9c86fb7..4ad71d4 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/MatchError.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/MatchError.swift @@ -6,16 +6,24 @@ import Foundation /// Errors are tried to be compared by their implementation of Equatable, /// otherwise they fallback to comparison by _domain and _code. public func matchError(_ error: T) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - let actualError: Error? = try actualExpression.evaluate() + return Predicate.define { actualExpression in + let actualError = try actualExpression.evaluate() + + let failureMessage = FailureMessage() + setFailureMessageForError( + failureMessage, + postfixMessageVerb: "match", + actualError: actualError, + error: error + ) - setFailureMessageForError(failureMessage, postfixMessageVerb: "match", actualError: actualError, error: error) var matches = false if let actualError = actualError, errorMatchesExpectedError(actualError, expectedError: error) { matches = true } - return matches - }.requireNonNil + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) + } } /// A Nimble matcher that succeeds when the actual expression evaluates to an @@ -24,35 +32,45 @@ public func matchError(_ error: T) -> Predicate { /// Errors are tried to be compared by their implementation of Equatable, /// otherwise they fallback to comparision by _domain and _code. public func matchError(_ error: T) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - let actualError: Error? = try actualExpression.evaluate() + return Predicate.define { actualExpression in + let actualError = try actualExpression.evaluate() - setFailureMessageForError(failureMessage, postfixMessageVerb: "match", actualError: actualError, error: error) + let failureMessage = FailureMessage() + setFailureMessageForError( + failureMessage, + postfixMessageVerb: "match", + actualError: actualError, + error: error + ) var matches = false if let actualError = actualError as? T, error == actualError { matches = true } - return matches - }.requireNonNil + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) + } } /// A Nimble matcher that succeeds when the actual expression evaluates to an /// error of the specified type public func matchError(_ errorType: T.Type) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - let actualError: Error? = try actualExpression.evaluate() + return Predicate.define { actualExpression in + let actualError = try actualExpression.evaluate() + let failureMessage = FailureMessage() setFailureMessageForError( failureMessage, postfixMessageVerb: "match", actualError: actualError, errorType: errorType ) + var matches = false if actualError as? T != nil { matches = true } - return matches - }.requireNonNil + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) + } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift index 82f3cf0..38bb297 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift @@ -1,6 +1,6 @@ import Foundation // `CGFloat` is in Foundation (swift-corelibs-foundation) on Linux. -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) import CoreGraphics #endif @@ -28,11 +28,11 @@ extension Matcher { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) /// Objective-C interface to the Swift variant of Matcher. @objc public protocol NMBMatcher { - func matches(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool - func doesNotMatch(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool + func matches(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool + func doesNotMatch(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool } #endif @@ -41,7 +41,8 @@ public protocol NMBContainer { func contains(_ anObject: Any) -> Bool } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) +// swiftlint:disable:next todo // FIXME: NSHashTable can not conform to NMBContainer since swift-DEVELOPMENT-SNAPSHOT-2016-04-25-a //extension NSHashTable : NMBContainer {} // Corelibs Foundation does not include this class yet #endif @@ -54,7 +55,7 @@ public protocol NMBCollection { var count: Int { get } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NSHashTable: NMBCollection {} // Corelibs Foundation does not include these classes yet extension NSMapTable: NMBCollection {} #endif @@ -131,7 +132,7 @@ extension NSDate: TestOutputStringConvertible { /// beGreaterThan(), beGreaterThanOrEqualTo(), and equal() matchers. /// /// Types that conform to Swift's Comparable protocol will work implicitly too -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) @objc public protocol NMBComparable { func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult } @@ -144,11 +145,13 @@ public protocol NMBComparable { extension NSNumber: NMBComparable { public func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult { + // swiftlint:disable:next force_cast return compare(otherObject as! NSNumber) } } extension NSString: NMBComparable { public func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult { + // swiftlint:disable:next force_cast return compare(otherObject as! String) } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/PostNotification.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/PostNotification.swift index ee886f1..7d3e44c 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/PostNotification.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/PostNotification.swift @@ -1,36 +1,9 @@ import Foundation -// A workaround to SR-6419. -extension NotificationCenter { -#if !(os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) - #if swift(>=4.0) - #if swift(>=4.0.2) - #else - func addObserver(forName name: Notification.Name?, object obj: Any?, queue: OperationQueue?, using block: @escaping (Notification) -> Void) -> NSObjectProtocol { - return addObserver(forName: name, object: obj, queue: queue, usingBlock: block) - } - #endif - #elseif swift(>=3.2) - #if swift(>=3.2.2) - #else - // swiftlint:disable:next line_length - func addObserver(forName name: Notification.Name?, object obj: Any?, queue: OperationQueue?, using block: @escaping (Notification) -> Void) -> NSObjectProtocol { - return addObserver(forName: name, object: obj, queue: queue, usingBlock: block) - } - #endif - #else - // swiftlint:disable:next line_length - func addObserver(forName name: Notification.Name?, object obj: Any?, queue: OperationQueue?, using block: @escaping (Notification) -> Void) -> NSObjectProtocol { - return addObserver(forName: name, object: obj, queue: queue, usingBlock: block) - } - #endif -#endif -} - internal class NotificationCollector { private(set) var observedNotifications: [Notification] private let notificationCenter: NotificationCenter - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) + #if canImport(Darwin) private var token: AnyObject? #else private var token: NSObjectProtocol? @@ -43,14 +16,14 @@ internal class NotificationCollector { func startObserving() { // swiftlint:disable:next line_length - self.token = self.notificationCenter.addObserver(forName: nil, object: nil, queue: nil, using: { [weak self] n in + self.token = self.notificationCenter.addObserver(forName: nil, object: nil, queue: nil) { [weak self] notification in // linux-swift gets confused by .append(n) - self?.observedNotifications.append(n) - }) + self?.observedNotifications.append(notification) + } } deinit { - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) + #if canImport(Darwin) if let token = self.token { self.notificationCenter.removeObserver(token) } @@ -74,7 +47,8 @@ public func postNotifications( let collector = NotificationCollector(notificationCenter: center) collector.startObserving() var once: Bool = false - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in + + return Predicate { actualExpression in let collectorNotificationsExpression = Expression(memoizedExpression: { _ in return collector.observedNotifications }, location: actualExpression.location, withoutCaching: true) @@ -85,12 +59,13 @@ public func postNotifications( _ = try actualExpression.evaluate() } + let failureMessage = FailureMessage() let match = try notificationsMatcher.matches(collectorNotificationsExpression, failureMessage: failureMessage) if collector.observedNotifications.isEmpty { failureMessage.actualValue = "no notifications" } else { failureMessage.actualValue = "<\(stringify(collector.observedNotifications))>" } - return match + return PredicateResult(bool: match, message: failureMessage.toExpectationMessage()) } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/Predicate.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/Predicate.swift index e48d164..2604411 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/Predicate.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/Predicate.swift @@ -82,8 +82,8 @@ extension Predicate { } } -// Question: Should this be exposed? It's safer to not for now and decide later. -internal enum ExpectationStyle { +// The Expectation style intended for comparison to a PredicateStatus. +public enum ExpectationStyle { case toMatch, toNotMatch } @@ -91,9 +91,9 @@ internal enum ExpectationStyle { /// predicate. public struct PredicateResult { /// Status indicates if the predicate matches, does not match, or fails. - var status: PredicateStatus + public var status: PredicateStatus /// The error message that can be displayed if it does not match - var message: ExpectationMessage + public var message: ExpectationMessage /// Constructs a new PredicateResult with a given status and error message public init(status: PredicateStatus, message: ExpectationMessage) { @@ -108,7 +108,7 @@ public struct PredicateResult { } /// Converts the result to a boolean based on what the expectation intended - internal func toBoolean(expectation style: ExpectationStyle) -> Bool { + public func toBoolean(expectation style: ExpectationStyle) -> Bool { return status.toBoolean(expectation: style) } } @@ -218,6 +218,7 @@ extension Predicate: Matcher { extension Predicate { // Someday, make this public? Needs documentation internal func after(f: @escaping (Expression, PredicateResult) throws -> PredicateResult) -> Predicate { + // swiftlint:disable:previous identifier_name return Predicate { actual -> PredicateResult in let result = try self.satisfies(actual) return try f(actual, result) @@ -241,8 +242,8 @@ extension Predicate { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) -public typealias PredicateBlock = (_ actualExpression: Expression) -> NMBPredicateResult +#if canImport(Darwin) +public typealias PredicateBlock = (_ actualExpression: Expression) throws -> NMBPredicateResult public class NMBPredicate: NSObject { private let predicate: PredicateBlock @@ -251,20 +252,24 @@ public class NMBPredicate: NSObject { self.predicate = predicate } - func satisfies(_ expression: @escaping () -> NSObject!, location: SourceLocation) -> NMBPredicateResult { + func satisfies(_ expression: @escaping () throws -> NSObject?, location: SourceLocation) -> NMBPredicateResult { let expr = Expression(expression: expression, location: location) - return self.predicate(expr) + do { + return try self.predicate(expr) + } catch let error { + return PredicateResult(status: .fail, message: .fail("unexpected error thrown: <\(error)>")).toObjectiveC() + } } } extension NMBPredicate: NMBMatcher { - public func matches(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + public func matches(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let result = satisfies(actualBlock, location: location).toSwift() result.message.update(failureMessage: failureMessage) return result.status.toBoolean(expectation: .toMatch) } - public func doesNotMatch(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + public func doesNotMatch(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let result = satisfies(actualBlock, location: location).toSwift() result.message.update(failureMessage: failureMessage) return result.status.toBoolean(expectation: .toNotMatch) @@ -307,7 +312,7 @@ final public class NMBPredicateStatus: NSObject { public static let doesNotMatch: NMBPredicateStatus = NMBPredicateStatus(status: 1) public static let fail: NMBPredicateStatus = NMBPredicateStatus(status: 2) - public override var hashValue: Int { return self.status.hashValue } + public override var hash: Int { return self.status.hashValue } public override func isEqual(_ object: Any?) -> Bool { guard let otherPredicate = object as? NMBPredicateStatus else { diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/RaisesException.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/RaisesException.swift index 60553bd..f44c810 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/RaisesException.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/RaisesException.swift @@ -1,7 +1,7 @@ import Foundation // This matcher requires the Objective-C, and being built by Xcode rather than the Swift Package Manager -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE /// A Nimble matcher that succeeds when the actual expression raises an /// exception with the specified name, reason, and/or userInfo. @@ -17,18 +17,21 @@ public func raiseException( reason: String? = nil, userInfo: NSDictionary? = nil, closure: ((NSException) -> Void)? = nil) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var exception: NSException? let capture = NMBExceptionCapture(handler: ({ e in exception = e }), finally: nil) - capture.tryBlock { - _ = try! actualExpression.evaluate() - return + do { + try capture.tryBlockThrows { + _ = try actualExpression.evaluate() + } + } catch { + return PredicateResult(status: .fail, message: .fail("unexpected error thrown: <\(error)>")) } + let failureMessage = FailureMessage() setFailureMessageForException( failureMessage, exception: exception, @@ -37,13 +40,15 @@ public func raiseException( userInfo: userInfo, closure: closure ) - return exceptionMatchesNonNilFieldsOrClosure( + + let matches = exceptionMatchesNonNilFieldsOrClosure( exception, named: named, reason: reason, userInfo: userInfo, closure: closure ) + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) } } @@ -117,10 +122,12 @@ internal func exceptionMatchesNonNilFieldsOrClosure( } public class NMBObjCRaiseExceptionMatcher: NSObject, NMBMatcher { + // swiftlint:disable identifier_name internal var _name: String? internal var _reason: String? internal var _userInfo: NSDictionary? internal var _block: ((NSException) -> Void)? + // swiftlint:enable identifier_name internal init(name: String?, reason: String?, userInfo: NSDictionary?, block: ((NSException) -> Void)?) { _name = name @@ -129,19 +136,24 @@ public class NMBObjCRaiseExceptionMatcher: NSObject, NMBMatcher { _block = block } - @objc public func matches(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + @objc public func matches(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { let block: () -> Any? = ({ _ = actualBlock(); return nil }) let expr = Expression(expression: block, location: location) - return try! raiseException( - named: _name, - reason: _reason, - userInfo: _userInfo, - closure: _block - ).matches(expr, failureMessage: failureMessage) + do { + return try raiseException( + named: _name, + reason: _reason, + userInfo: _userInfo, + closure: _block + ).matches(expr, failureMessage: failureMessage) + } catch let error { + failureMessage.stringValue = "unexpected error thrown: <\(error)>" + return false + } } - @objc public func doesNotMatch(_ actualBlock: @escaping () -> NSObject!, failureMessage: FailureMessage, location: SourceLocation) -> Bool { + @objc public func doesNotMatch(_ actualBlock: @escaping () -> NSObject?, failureMessage: FailureMessage, location: SourceLocation) -> Bool { return !matches(actualBlock, failureMessage: failureMessage, location: location) } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAllOf.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAllOf.swift new file mode 100644 index 0000000..da3ea9a --- /dev/null +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAllOf.swift @@ -0,0 +1,80 @@ +import Foundation + +/// A Nimble matcher that succeeds when the actual value matches with all of the matchers +/// provided in the variable list of matchers. +public func satisfyAllOf(_ matchers: U...) -> Predicate + where U: Matcher, U.ValueType == T { + return satisfyAllOf(matchers.map { $0.predicate }) +} + +internal func satisfyAllOf(_ predicates: [Predicate]) -> Predicate { + return Predicate.define { actualExpression in + var postfixMessages = [String]() + var matches = true + for predicate in predicates { + let result = try predicate.satisfies(actualExpression) + if result.toBoolean(expectation: .toNotMatch) { + matches = false + } + postfixMessages.append("{\(result.message.expectedMessage)}") + } + + var msg: ExpectationMessage + if let actualValue = try actualExpression.evaluate() { + msg = .expectedCustomValueTo( + "match all of: " + postfixMessages.joined(separator: ", and "), + "\(actualValue)" + ) + } else { + msg = .expectedActualValueTo( + "match all of: " + postfixMessages.joined(separator: ", and ") + ) + } + + return PredicateResult(bool: matches, message: msg) + } +} + +public func && (left: Predicate, right: Predicate) -> Predicate { + return satisfyAllOf(left, right) +} + +#if canImport(Darwin) +extension NMBObjCMatcher { + @objc public class func satisfyAllOfMatcher(_ matchers: [NMBMatcher]) -> NMBPredicate { + return NMBPredicate { actualExpression in + if matchers.isEmpty { + return NMBPredicateResult( + status: NMBPredicateStatus.fail, + message: NMBExpectationMessage( + fail: "satisfyAllOf must be called with at least one matcher" + ) + ) + } + + var elementEvaluators = [Predicate]() + for matcher in matchers { + let elementEvaluator = Predicate { expression in + if let predicate = matcher as? NMBPredicate { + // swiftlint:disable:next line_length + return predicate.satisfies({ try expression.evaluate() }, location: actualExpression.location).toSwift() + } else { + let failureMessage = FailureMessage() + let success = matcher.matches( + // swiftlint:disable:next force_try + { try! expression.evaluate() }, + failureMessage: failureMessage, + location: actualExpression.location + ) + return PredicateResult(bool: success, message: failureMessage.toExpectationMessage()) + } + } + + elementEvaluators.append(elementEvaluator) + } + + return try satisfyAllOf(elementEvaluators).satisfies(actualExpression).toObjectiveC() + } + } +} +#endif diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAnyOf.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAnyOf.swift index d02a0ff..6724956 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAnyOf.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/SatisfyAnyOf.swift @@ -4,33 +4,11 @@ import Foundation /// provided in the variable list of matchers. public func satisfyAnyOf(_ matchers: U...) -> Predicate where U: Matcher, U.ValueType == T { - return satisfyAnyOf(matchers) -} - -/// Deprecated. Please use `satisfyAnyOf(_) -> Predicate` instead. -internal func satisfyAnyOf(_ matchers: [U]) -> Predicate - where U: Matcher, U.ValueType == T { - return NonNilMatcherFunc { actualExpression, failureMessage in - let postfixMessages = NSMutableArray() - var matches = false - for matcher in matchers { - if try matcher.matches(actualExpression, failureMessage: failureMessage) { - matches = true - } - postfixMessages.add(NSString(string: "{\(failureMessage.postfixMessage)}")) - } - - failureMessage.postfixMessage = "match one of: " + postfixMessages.componentsJoined(by: ", or ") - if let actualValue = try actualExpression.evaluate() { - failureMessage.actualValue = "\(actualValue)" - } - - return matches - }.predicate + return satisfyAnyOf(matchers.map { $0.predicate }) } internal func satisfyAnyOf(_ predicates: [Predicate]) -> Predicate { - return Predicate { actualExpression in + return Predicate.define { actualExpression in var postfixMessages = [String]() var matches = false for predicate in predicates { @@ -53,11 +31,8 @@ internal func satisfyAnyOf(_ predicates: [Predicate]) -> Predicate { ) } - return PredicateResult( - status: PredicateStatus(bool: matches), - message: msg - ) - }.requireNonNil + return PredicateResult(bool: matches, message: msg) + } } public func || (left: Predicate, right: Predicate) -> Predicate { @@ -72,7 +47,7 @@ public func || (left: MatcherFunc, right: MatcherFunc) -> Predicate return satisfyAnyOf(left, right) } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) extension NMBObjCMatcher { @objc public class func satisfyAnyOfMatcher(_ matchers: [NMBMatcher]) -> NMBPredicate { return NMBPredicate { actualExpression in @@ -90,11 +65,15 @@ extension NMBObjCMatcher { let elementEvaluator = Predicate { expression in if let predicate = matcher as? NMBPredicate { // swiftlint:disable:next line_length - return predicate.satisfies({ try! expression.evaluate() }, location: actualExpression.location).toSwift() + return predicate.satisfies({ try expression.evaluate() }, location: actualExpression.location).toSwift() } else { let failureMessage = FailureMessage() - // swiftlint:disable:next line_length - let success = matcher.matches({ try! expression.evaluate() }, failureMessage: failureMessage, location: actualExpression.location) + let success = matcher.matches( + // swiftlint:disable:next force_try + { try! expression.evaluate() }, + failureMessage: failureMessage, + location: actualExpression.location + ) return PredicateResult(bool: success, message: failureMessage.toExpectationMessage()) } } @@ -102,7 +81,7 @@ extension NMBObjCMatcher { elementEvaluators.append(elementEvaluator) } - return try! satisfyAnyOf(elementEvaluators).satisfies(actualExpression).toObjectiveC() + return try satisfyAnyOf(elementEvaluators).satisfies(actualExpression).toObjectiveC() } } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowAssertion.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowAssertion.swift index a530c60..53d9191 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowAssertion.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowAssertion.swift @@ -1,13 +1,11 @@ import Foundation public func throwAssertion() -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - #if arch(x86_64) && (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE - failureMessage.postfixMessage = "throw an assertion" - failureMessage.actualValue = nil - - var succeeded = true + return Predicate { actualExpression in + #if arch(x86_64) && canImport(Darwin) && !SWIFT_PACKAGE + let message = ExpectationMessage.expectedTo("throw an assertion") + var actualError: Error? let caughtException: BadInstructionException? = catchBadInstruction { #if os(tvOS) if !NimbleEnvironment.activeInstance.suppressTVOSAssertionWarning { @@ -27,30 +25,27 @@ public func throwAssertion() -> Predicate { #endif do { try actualExpression.evaluate() - } catch let error { - succeeded = false - failureMessage.postfixMessage += "; threw error instead <\(error)>" + } catch { + actualError = error } } - if !succeeded { - return false - } - - if caughtException == nil { - return false + if let actualError = actualError { + return PredicateResult( + bool: false, + message: message.appended(message: "; threw error instead <\(actualError)>") + ) + } else { + return PredicateResult(bool: caughtException != nil, message: message) } - - return true #elseif SWIFT_PACKAGE fatalError("The throwAssertion Nimble matcher does not currently support Swift CLI." + " You can silence this error by placing the test case inside an #if !SWIFT_PACKAGE" + " conditional statement") #else fatalError("The throwAssertion Nimble matcher can only run on x86_64 platforms with " + - "Objective-C (e.g. Mac, iPhone 5s or later simulators). You can silence this error " + - "by placing the test case inside an #if arch(x86_64) or (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) conditional statement") - // swiftlint:disable:previous line_length + "Objective-C (e.g. macOS, iPhone 5s or later simulators). You can silence this error " + + "by placing the test case inside an #if arch(x86_64) or canImport(Darwin) conditional statement") #endif } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowError.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowError.swift index 872ca5c..d294ba3 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowError.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/ThrowError.swift @@ -12,22 +12,19 @@ import Foundation /// nil arguments indicates that the matcher should not attempt to match against /// that parameter. public func throwError() -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var actualError: Error? do { _ = try actualExpression.evaluate() - } catch let catchedError { - actualError = catchedError + } catch { + actualError = error } - failureMessage.postfixMessage = "throw any error" if let actualError = actualError { - failureMessage.actualValue = "<\(actualError)>" + return PredicateResult(bool: true, message: .expectedCustomValueTo("throw any error", "<\(actualError)>")) } else { - failureMessage.actualValue = "no error" + return PredicateResult(bool: false, message: .expectedCustomValueTo("throw any error", "no error")) } - return actualError != nil } } @@ -43,15 +40,15 @@ public func throwError() -> Predicate { /// nil arguments indicates that the matcher should not attempt to match against /// that parameter. public func throwError(_ error: T, closure: ((Error) -> Void)? = nil) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var actualError: Error? do { _ = try actualExpression.evaluate() - } catch let catchedError { - actualError = catchedError + } catch { + actualError = error } + let failureMessage = FailureMessage() setFailureMessageForError( failureMessage, actualError: actualError, @@ -59,20 +56,23 @@ public func throwError(_ error: T, closure: ((Error) -> Void)? = nil) errorType: nil, closure: closure ) + var matches = false if let actualError = actualError, errorMatchesExpectedError(actualError, expectedError: error) { matches = true + if let closure = closure { let assertions = gatherFailingExpectations { closure(actualError) } let messages = assertions.map { $0.message } - if messages.count > 0 { + if !messages.isEmpty { matches = false } } } - return matches + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) } } @@ -88,15 +88,15 @@ public func throwError(_ error: T, closure: ((Error) -> Void)? = nil) /// nil arguments indicates that the matcher should not attempt to match against /// that parameter. public func throwError(_ error: T, closure: ((T) -> Void)? = nil) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var actualError: Error? do { _ = try actualExpression.evaluate() - } catch let catchedError { - actualError = catchedError + } catch { + actualError = error } + let failureMessage = FailureMessage() setFailureMessageForError( failureMessage, actualError: actualError, @@ -104,6 +104,7 @@ public func throwError(_ error: T, closure: ((T) -> Void)? errorType: nil, closure: closure ) + var matches = false if let actualError = actualError as? T, error == actualError { matches = true @@ -113,12 +114,13 @@ public func throwError(_ error: T, closure: ((T) -> Void)? closure(actualError) } let messages = assertions.map { $0.message } - if messages.count > 0 { + if !messages.isEmpty { matches = false } } } - return matches + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) } } @@ -136,15 +138,15 @@ public func throwError(_ error: T, closure: ((T) -> Void)? public func throwError( errorType: T.Type, closure: ((T) -> Void)? = nil) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var actualError: Error? do { _ = try actualExpression.evaluate() - } catch let catchedError { - actualError = catchedError + } catch { + actualError = error } + let failureMessage = FailureMessage() setFailureMessageForError( failureMessage, actualError: actualError, @@ -152,16 +154,18 @@ public func throwError( errorType: errorType, closure: closure ) + var matches = false if let actualError = actualError { matches = true + if let actualError = actualError as? T { if let closure = closure { let assertions = gatherFailingExpectations { closure(actualError) } let messages = assertions.map { $0.message } - if messages.count > 0 { + if !messages.isEmpty { matches = false } } @@ -176,14 +180,14 @@ public func throwError( } } let messages = assertions.map { $0.message } - if messages.count > 0 { + if !messages.isEmpty { matches = false } } } } - return matches + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) } } @@ -195,15 +199,15 @@ public func throwError( /// /// The closure only gets called when an error was thrown. public func throwError(closure: @escaping ((Error) -> Void)) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var actualError: Error? do { _ = try actualExpression.evaluate() - } catch let catchedError { - actualError = catchedError + } catch { + actualError = error } + let failureMessage = FailureMessage() setFailureMessageForError(failureMessage, actualError: actualError, closure: closure) var matches = false @@ -214,11 +218,12 @@ public func throwError(closure: @escaping ((Error) -> Void)) -> Predicate { closure(actualError) } let messages = assertions.map { $0.message } - if messages.count > 0 { + if !messages.isEmpty { matches = false } } - return matches + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) } } @@ -230,15 +235,15 @@ public func throwError(closure: @escaping ((Error) -> Void)) -> Predicate { /// /// The closure only gets called when an error was thrown. public func throwError(closure: @escaping ((T) -> Void)) -> Predicate { - return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in - + return Predicate { actualExpression in var actualError: Error? do { _ = try actualExpression.evaluate() - } catch let catchedError { - actualError = catchedError + } catch { + actualError = error } + let failureMessage = FailureMessage() setFailureMessageForError(failureMessage, actualError: actualError, closure: closure) var matches = false @@ -249,10 +254,11 @@ public func throwError(closure: @escaping ((T) -> Void)) -> Predicate< closure(actualError) } let messages = assertions.map { $0.message } - if messages.count > 0 { + if !messages.isEmpty { matches = false } } - return matches + + return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage()) } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Utils/Async.swift b/Example/Pods/Nimble/Sources/Nimble/Utils/Await.swift similarity index 94% rename from Example/Pods/Nimble/Sources/Nimble/Utils/Async.swift rename to Example/Pods/Nimble/Sources/Nimble/Utils/Await.swift index c77a8fc..276f618 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Utils/Async.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Utils/Await.swift @@ -2,7 +2,7 @@ import CoreFoundation import Dispatch import Foundation -#if !(os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) +#if canImport(CDispatch) import CDispatch #endif @@ -32,7 +32,7 @@ internal class AssertionWaitLock: WaitLock { func acquireWaitingLock(_ fnName: String, file: FileString, line: UInt) { let info = WaitingInfo(name: fnName, file: file, lineNumber: line) - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) + #if canImport(Darwin) let isMainThread = Thread.isMainThread #else let isMainThread = _CFIsMainThread() @@ -45,10 +45,15 @@ internal class AssertionWaitLock: WaitLock { nimblePrecondition( currentWaiter == nil, "InvalidNimbleAPIUsage", - "Nested async expectations are not allowed to avoid creating flaky tests.\n\n" + - "The call to\n\t\(info)\n" + - "triggered this exception because\n\t\(currentWaiter!)\n" + - "is currently managing the main run loop." + """ + Nested async expectations are not allowed to avoid creating flaky tests. + + The call to + \t\(info) + triggered this exception because + \t\(currentWaiter!) + is currently managing the main run loop. + """ ) currentWaiter = info } @@ -180,25 +185,18 @@ internal class AwaitPromiseBuilder { // checked. // // In addition, stopping the run loop is used to halt code executed on the main run loop. - #if swift(>=4.0) trigger.timeoutSource.schedule( deadline: DispatchTime.now() + timeoutInterval, repeating: .never, leeway: timeoutLeeway ) - #else - trigger.timeoutSource.scheduleOneshot( - deadline: DispatchTime.now() + timeoutInterval, - leeway: timeoutLeeway - ) - #endif trigger.timeoutSource.setEventHandler { guard self.promise.asyncResult.isIncomplete() else { return } let timedOutSem = DispatchSemaphore(value: 0) let semTimedOutOrBlocked = DispatchSemaphore(value: 0) semTimedOutOrBlocked.signal() let runLoop = CFRunLoopGetMain() - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) + #if canImport(Darwin) let runLoopMode = CFRunLoopMode.defaultMode.rawValue #else let runLoopMode = kCFRunLoopDefaultMode @@ -263,7 +261,11 @@ internal class AwaitPromiseBuilder { self.trigger.timeoutSource.resume() while self.promise.asyncResult.isIncomplete() { // Stopping the run loop does not work unless we run only 1 mode + #if (swift(>=4.2) && canImport(Darwin)) || compiler(>=5.0) + _ = RunLoop.current.run(mode: .default, before: .distantFuture) + #else _ = RunLoop.current.run(mode: .defaultRunLoopMode, before: .distantFuture) + #endif } self.trigger.timeoutSource.cancel() @@ -329,11 +331,7 @@ internal class Awaiter { let asyncSource = createTimerSource(asyncQueue) let trigger = AwaitTrigger(timeoutSource: timeoutSource, actionSource: asyncSource) { let interval = DispatchTimeInterval.nanoseconds(Int(pollInterval * TimeInterval(NSEC_PER_SEC))) - #if swift(>=4.0) asyncSource.schedule(deadline: .now(), repeating: interval, leeway: pollLeeway) - #else - asyncSource.scheduleRepeating(deadline: .now(), interval: interval, leeway: pollLeeway) - #endif asyncSource.setEventHandler { do { if let result = try closure() { diff --git a/Example/Pods/Nimble/Sources/Nimble/Utils/Functional.swift b/Example/Pods/Nimble/Sources/Nimble/Utils/Functional.swift index 6c5126a..c87af76 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Utils/Functional.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Utils/Functional.swift @@ -1,12 +1,14 @@ import Foundation +#if !swift(>=4.2) extension Sequence { - internal func all(_ fn: (Iterator.Element) -> Bool) -> Bool { + internal func allSatisfy(_ predicate: (Element) throws -> Bool) rethrows -> Bool { for item in self { - if !fn(item) { + if try !predicate(item) { return false } } return true } } +#endif diff --git a/Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift b/Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift index cd6de20..4ab18d2 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift @@ -2,7 +2,7 @@ import Foundation internal func identityAsString(_ value: Any?) -> String { let anyObject: AnyObject? -#if os(Linux) +#if os(Linux) && !swift(>=4.1.50) anyObject = value as? AnyObject #else anyObject = value as AnyObject? @@ -122,6 +122,7 @@ extension String: TestOutputStringConvertible { extension Data: TestOutputStringConvertible { public var testDescription: String { #if os(Linux) + // swiftlint:disable:next todo // FIXME: Swift on Linux triggers a segfault when calling NSData's hash() (last checked on 03-11-16) return "Data" #else @@ -144,7 +145,9 @@ extension Data: TestOutputStringConvertible { /// will return the result of constructing a string from the value. /// /// - SeeAlso: `TestOutputStringConvertible` -public func stringify(_ value: T) -> String { +public func stringify(_ value: T?) -> String { + guard let value = value else { return "nil" } + if let value = value as? TestOutputStringConvertible { return value.testDescription } @@ -156,15 +159,7 @@ public func stringify(_ value: T) -> String { return String(describing: value) } -/// -SeeAlso: `stringify(value: T)` -public func stringify(_ value: T?) -> String { - if let unboxed = value { - return stringify(unboxed) - } - return "nil" -} - -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) @objc public class NMBStringer: NSObject { @objc public class func stringify(_ obj: Any?) -> String { return Nimble.stringify(obj) diff --git a/Example/Pods/Nimble/Sources/NimbleObjectiveC/CurrentTestCaseTracker.h b/Example/Pods/Nimble/Sources/NimbleObjectiveC/CurrentTestCaseTracker.h deleted file mode 100644 index 5d416e4..0000000 --- a/Example/Pods/Nimble/Sources/NimbleObjectiveC/CurrentTestCaseTracker.h +++ /dev/null @@ -1,9 +0,0 @@ -#import -#import - -SWIFT_CLASS("_TtC6Nimble22CurrentTestCaseTracker") -@interface CurrentTestCaseTracker : NSObject -+ (CurrentTestCaseTracker *)sharedInstance; -@end - -@interface CurrentTestCaseTracker (Register) @end diff --git a/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.h b/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.h index caa3f7c..9170541 100644 --- a/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.h +++ b/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.h @@ -350,6 +350,12 @@ NIMBLE_EXPORT id NMB_satisfyAnyOfWithMatchers(id matchers); #define satisfyAnyOf(...) NMB_satisfyAnyOf(__VA_ARGS__) #endif +NIMBLE_EXPORT id NMB_satisfyAllOfWithMatchers(id matchers); +#define NMB_satisfyAllOf(...) NMB_satisfyAllOfWithMatchers(@[__VA_ARGS__]) +#ifndef NIMBLE_DISABLE_SHORT_SYNTAX +#define satisfyAllOf(...) NMB_satisfyAllOf(__VA_ARGS__) +#endif + // In order to preserve breakpoint behavior despite using macros to fill in __FILE__ and __LINE__, // define a builder that populates __FILE__ and __LINE__, and returns a block that takes timeout // and action arguments. See https://github.com/Quick/Quick/pull/185 for details. diff --git a/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.m b/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.m index 5a145b8..670415b 100644 --- a/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.m +++ b/Example/Pods/Nimble/Sources/NimbleObjectiveC/DSL.m @@ -1,13 +1,10 @@ #import -#import - -SWIFT_CLASS("_TtC6Nimble7NMBWait") -@interface NMBWait : NSObject - -+ (void)untilTimeout:(NSTimeInterval)timeout file:(NSString *)file line:(NSUInteger)line action:(void (^ _Nonnull)(void (^ _Nonnull)(void)))action; -+ (void)untilFile:(NSString *)file line:(NSUInteger)line action:(void (^ _Nonnull)(void (^ _Nonnull)(void)))action; -@end +#if __has_include("Nimble-Swift.h") +#import "Nimble-Swift.h" +#else +#import +#endif NS_ASSUME_NONNULL_BEGIN @@ -141,6 +138,10 @@ NIMBLE_EXPORT void NMB_failWithMessage(NSString *msg, NSString *file, NSUInteger return [NMBObjCMatcher satisfyAnyOfMatcher:matchers]; } +NIMBLE_EXPORT id NMB_satisfyAllOfWithMatchers(id matchers) { + return [NMBObjCMatcher satisfyAllOfMatcher:matchers]; +} + NIMBLE_EXPORT NMBObjCRaiseExceptionMatcher *NMB_raiseException() { return [NMBObjCMatcher raiseExceptionMatcher]; } diff --git a/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBExceptionCapture.m b/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBExceptionCapture.m index 3381047..52684b7 100644 --- a/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBExceptionCapture.m +++ b/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBExceptionCapture.m @@ -16,7 +16,7 @@ - (nonnull instancetype)initWithHandler:(void(^ _Nullable)(NSException * _Nonnul return self; } -- (void)tryBlock:(void(^ _Nonnull)(void))unsafeBlock { +- (void)tryBlock:(__attribute__((noescape)) void(^ _Nonnull)(void))unsafeBlock { @try { unsafeBlock(); } diff --git a/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBStringify.m b/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBStringify.m index 329d39a..31a80d6 100644 --- a/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBStringify.m +++ b/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBStringify.m @@ -1,5 +1,10 @@ #import "NMBStringify.h" + +#if __has_include("Nimble-Swift.h") +#import "Nimble-Swift.h" +#else #import +#endif NSString *_Nonnull NMBStringify(id _Nullable anyObject) { return [NMBStringer stringify:anyObject]; diff --git a/Example/Pods/Nimble/Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m b/Example/Pods/Nimble/Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m index 35f26fd..fa5030a 100644 --- a/Example/Pods/Nimble/Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m +++ b/Example/Pods/Nimble/Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m @@ -1,7 +1,12 @@ -#import "CurrentTestCaseTracker.h" #import #import +#if __has_include("Nimble-Swift.h") +#import "Nimble-Swift.h" +#else +#import +#endif + #pragma mark - Method Swizzling /// Swaps the implementations between two instance methods. diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index a825070..68d9d91 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,1797 +7,1974 @@ objects = { /* Begin PBXBuildFile section */ - 0037465FB5617E0B4E298240EDF79AEC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9E86FA035C284340FE1A4012369D251 /* Foundation.framework */; }; - 015793F5D31BE0BD7AFEB5F4E1DE580F /* QuickConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 785658597026D735E61F8B565FC76036 /* QuickConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 02540F14361405BF94497910B21E3779 /* WithdrawHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4BAEC6C45BC94B9DC4DFABA90E89372 /* WithdrawHistory.swift */; }; - 042523DFB6C76AF01DBC61E05A97A475 /* ProductCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5B4099ACE85F09FB72E59CB2F2FA264 /* ProductCode.swift */; }; - 04ADBCD2A6C9E02B9961887819A3212F /* GetPositionsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D7632746416C18753BDE7F898AA97C4 /* GetPositionsRequest.swift */; }; - 04ED4CBE1683A039945AE21E71657DCE /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = F52F49E6ABA3AE46F42D9D86765CD266 /* SHA1.swift */; }; - 0508EDF69F0259C008F6C10806356E08 /* Chat.swift in Sources */ = {isa = PBXBuildFile; fileRef = F018B2681D410E32154CC94220A56C11 /* Chat.swift */; }; - 08C450BB03BE7BFD888431D1751132F8 /* RandomAccessBlockModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A1C4B39703FCE023BFF77B6409FBA61 /* RandomAccessBlockModeWorker.swift */; }; - 0A2CA8B0DD7E300ABFCF1956E6B58248 /* Nimble.h in Headers */ = {isa = PBXBuildFile; fileRef = B678ADEDB67D0466C0654C30811950BF /* Nimble.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0AC824D360B08FE7E76B8AAC626B5B52 /* TradeHealth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA16F8FBF1C3F83E948E3DD6B278073 /* TradeHealth.swift */; }; - 0BF644EF91D85180033298DC2180EED5 /* GetPermissionsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05FF898783293B967DB07AA63550434A /* GetPermissionsRequest.swift */; }; - 10C06572848C719114D7853F461A79EA /* Market.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F68764C01C570921D5C1843F89670AC /* Market.swift */; }; - 1244A706052D9315050DA74789936748 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9E86FA035C284340FE1A4012369D251 /* Foundation.framework */; }; - 12C57311398E51F38AA588DCC121E594 /* Starscream.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4F8DD710647E5EB7A87BFC8BB213BC4 /* Starscream.framework */; }; - 152BA68678A9161227766CE6A75C19D4 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CDB38218CF227950282E87D4B2917B0 /* NoPadding.swift */; }; - 15EC94A1BB2C7772419BC66DB4BCFA4D /* Order.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E27C5178A9878D02B0857BC3AF5EF1 /* Order.swift */; }; - 175F1B1038B17F3FC944123CA8F7FADF /* World.h in Headers */ = {isa = PBXBuildFile; fileRef = 644DFF6A1424A0B31B0BABD7F634B0FA /* World.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 17C8EE7DF3F57C8F99EAF63C6E61EA99 /* FailureMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AAD93420F5C8482D8E2C84438E5C829 /* FailureMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 19F209E95649F61A5101303CA297098B /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1323B0468082404ED3EE614F665509E /* UInt8+Extension.swift */; }; - 1A3E19B9F5EEB773C3BB61CA42F8BF62 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14B475B40169DE9CE7715E5F5442F5BF /* DSL.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 1BCBD814F3A819CFEDD5B621CD6BC6E0 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C40E7A03E3E38D1F6D1FE64394A4402 /* Array+Foundation.swift */; }; - 1C9A485DA2FE04B657D7E3D8D0FF17AB /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61FCA0AD0038E50AD5FF8B5CB37A8F47 /* Digest.swift */; }; - 1D0578185B1E764BC61EC316C3D29B02 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDC7C68B92F27C77DD38F61BC028C68A /* Utils+Foundation.swift */; }; - 1E1CE28FFCCD7499620B47C910E9B9E9 /* BeLogical.swift in Sources */ = {isa = PBXBuildFile; fileRef = 418257C181B68D78D4E4A973682182F3 /* BeLogical.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 1FED2D0B6579CE173EA7E6B4E1BFA4AA /* SwiftFlyer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 21CA327C897C4762BBDD6BEEF0567A0A /* SwiftFlyer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 227ED165568A98659549C983341BF68A /* PositionSide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 591653C0AEB397E123DEA23B7EE82401 /* PositionSide.swift */; }; - 22E9F6FA56858A5F7A5D664E5968ECB0 /* NMBExceptionCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 123B73C8B3B602E16856646D034D4C9E /* NMBExceptionCapture.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 25D1805055756CAA69A167CA03B2465C /* ContainElementSatisfying.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C8182D2F5C76DF1C6E6F8585449A919 /* ContainElementSatisfying.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 2794274FC1FE105C8584FAD1B678F4A6 /* World+DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 429787B2842AA3E4AFB4121135F8D2BB /* World+DSL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 28B83D3B931D5B5E683BB05A7DA229E8 /* GetWithdrawsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BA5CAC515E63D3D62D64DCDFF15AE28 /* GetWithdrawsRequest.swift */; }; - 29A65FF7D1752DFFF87F5DC8F55CE859 /* ToSucceed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792D3CEBC116D60C0C87174C691FAC59 /* ToSucceed.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 2EF27606BDCA5005D3C30EA13493727C /* RequestableExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D60D948EF38915A880CEA46A090CD32D /* RequestableExtensions.swift */; }; - 2FB15AC820F107835C91EA0A59204542 /* TimeInForce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90DE819145B0BDF13D87FA3393E1BEBA /* TimeInForce.swift */; }; - 31C39ED8CB1C9317F1F2840FC919662D /* PostNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C748A87C709650690438EB092E0D77E /* PostNotification.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 32508A477EB8DE4F4EA066315511C4EF /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89D8D1CE48E7E123FBF984D428AFE774 /* Authenticator.swift */; }; - 327A8CEFD7FC49C5DC8DA214E75DF6F2 /* Callsite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90F0B7DD486A622CF8A7E4FE642CA9C9 /* Callsite.swift */; }; - 32A6879498466093405B98511864075F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9E86FA035C284340FE1A4012369D251 /* Foundation.framework */; }; - 32B38992751B96F21324BFC9923BFCBD /* AssertionDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F2DA68782C5D85D789DCA083C66BBFA /* AssertionDispatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 32B43DC5D0A806E9A4367291D8583C2F /* ParentOrderType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9A2B1BA4628981A6C18F14C255008A /* ParentOrderType.swift */; }; - 338E92A59022E6035872D94CB3AA57BF /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2D9A8084EC4B6FC3DA7F44BC5F8B9CB /* Array+Extensions.swift */; }; - 34168B64CC0C2ACF4B97999805AC6DCF /* Pods-SwiftFlyer_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B0732AE4A94FEF52F44974813571DD9 /* Pods-SwiftFlyer_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 350861FB3E3422A0D797A75B72438A1B /* DictionaryExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB146C43D8C073E39253930EED24CE0B /* DictionaryExtensions.swift */; }; - 350FBB819F34ED3E76CF711027C8F15B /* Permission.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33B2272AFF792D38A7CA5D24456FF178 /* Permission.swift */; }; - 35C90BEF2F9B2EF2AFF5C902B6D42AF1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9E86FA035C284340FE1A4012369D251 /* Foundation.framework */; }; - 35CADB1AD8E063A35DF68147F3183206 /* CwlMachBadInstructionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 11C368A1F40F492046575302829D2791 /* CwlMachBadInstructionHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36332D3CC4C37AD2B60E014ED55B7E9A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9E86FA035C284340FE1A4012369D251 /* Foundation.framework */; }; - 36822232A7DF27DFF5F151D2DF91992A /* XCTestSuite+QuickTestSuiteBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE316E52617626C42F35320720DF3BA3 /* XCTestSuite+QuickTestSuiteBuilder.m */; }; - 3703B6E48C92A9CA9485B91125942BA9 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C488195907024275FBF6DC742B8B9E /* AES+Foundation.swift */; }; - 395968454CBE736B64F63A633E0B68E4 /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37AD4E6137DEE6CD2DD6995B93BACC16 /* String+FoundationExtension.swift */; }; - 3B3A88E074630B1EBC2139F4F70F0443 /* ThrowAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = D60A82BA63FAB372E86E9C3EA27C2A1A /* ThrowAssertion.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 3C66D2692E811DAE57A244A67E7AC555 /* BeVoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F174958E5AB3DC11C3EEB37FFCE8FAD /* BeVoid.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 3C8A5FD4672DBB6ED5B8E8FBC12C633D /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9948A695661F290ECA768EF4FBF905E /* Poly1305.swift */; }; - 3CC7629863BF6E722F7EFC33972B249D /* GetBoardRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AD5C0DF046BD7C9B32EAA18DDFA06A7 /* GetBoardRequest.swift */; }; - 3D1A89FDD6B579BAA92AD398E5C019F9 /* EndWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ABB54CBA1D0A648690CCCF8CC6E2739 /* EndWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 3D2320BD2E93A2E4AEF67017476108AE /* QuickSelectedTestSuiteBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56ABBB1DEAD402F8FE78B8194E589354 /* QuickSelectedTestSuiteBuilder.swift */; }; - 3D87B3B0FD6435BB315EFC905422302C /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 776A2FF4B89ECC18CA0248CEE77C194B /* UInt16+Extension.swift */; }; - 3DC2810AEA96A3728F4BF638C0371E8A /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0034136A9E6A22480B68EB52D55C2D5B /* Bit.swift */; }; - 3E04D23B2995705A6106D41F3E3E4E33 /* ExpectationMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FAA8FF976692E8DA825AEBA233F46C9 /* ExpectationMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 3EB15695F4BE7EBCE4ABF6B31BA04CA9 /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70A88A8EA563B5543F4D5DA7A135834E /* ChaCha20+Foundation.swift */; }; - 3F4A5C3EB03633D2294C6EC45C21BAF2 /* GetCollateralRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D90222C1A392330888028D1D608E2F /* GetCollateralRequest.swift */; }; - 41015EC787AD1DC8AF775B3AA0F6D7C1 /* GetMarketListRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC49CDB444631EB696600B49A85AE12 /* GetMarketListRequest.swift */; }; - 414A584771758C5AE4CDD6A6A4E06EA3 /* ChildOrderType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19F13CCEC6F0017E2E6E6F22FA1A636A /* ChildOrderType.swift */; }; - 41C783192F7ECD485C8C6384D30CBF11 /* CwlDarwinDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A35BE1E678799867D23BD4B26368445A /* CwlDarwinDefinitions.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 41E2C98262823FAD8D9E1F6DEB719540 /* PostCancelParentOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C60AC5F962F125AC799B07CB6425544 /* PostCancelParentOrderRequest.swift */; }; - 42EAAE8CFB95F2352FCE036F263263E1 /* CwlCatchException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C0D5B76E79990C9E507C53283809FEF /* CwlCatchException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 44751BA17838B5BDE6AA88A7D19CDC35 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4327FDC2CC179D4EF8A37017FAA5C07F /* PKCS5.swift */; }; - 45330C9CC22BE8FD1E0D7019A268C917 /* QuickSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 666303DA16827C3B69B491CD916111BD /* QuickSpec.m */; }; - 45F183320C688F9978649F30ABE21D09 /* MatchError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 062733E497942FD42CE25439910D4D18 /* MatchError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 473DABC63FCEDEAC6C02E4AFE687DB31 /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B01144D50A5EDDB39245A07473586272 /* BatchedCollection.swift */; }; - 48E770EAFA3730666D434C9AC7E48496 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 280000CA840ED5274F6D902D79AB2908 /* Generics.swift */; }; - 494751D9321DF2E06F6FAF41A6017E7F /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = E391EE5FB468CC35518C23BF6A5AD0C9 /* HKDF.swift */; }; - 49C6022FFB654F025AE6247765EFD40C /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74A47753A8215E5E41750CA5BA67DBA0 /* ECB.swift */; }; - 4A536AB62BD8DF570AC95703B80E813A /* QCKDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 85792316DDD8F37B79B25C7D69791F50 /* QCKDSL.m */; }; - 4CDACD8A5A6CFB688838AA988E7D1E43 /* Nimble-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 007AC25EC7F97B2F1D76018B5D48808C /* Nimble-dummy.m */; }; - 4D590105F3C2ADBF8B171E5659D165C8 /* SuiteHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30CB2BFCBCC31A4C0AB82765A87C47C0 /* SuiteHooks.swift */; }; - 4FABBF5CA8F735F48035BE4144613CB7 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A0A9A23452B6294B896763B213333C /* Expression.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 50698F14E7847E18B907E9373FBF4C21 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9E86FA035C284340FE1A4012369D251 /* Foundation.framework */; }; - 52B74D4480B07CF5761318A074E813EC /* PostCancelChildOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E74D62C1FCA0CC23145C9149E84DDF72 /* PostCancelChildOrderRequest.swift */; }; - 52BA4459D46ADA4FA22177C936287DA8 /* Pods-SwiftFlyer_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 98115B61602435E016E70671ABB8A11C /* Pods-SwiftFlyer_Tests-dummy.m */; }; - 54CC2049C937561A469575AF9E6A6FE9 /* NimbleEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBDC9AD9C4B6F36A6EAC0ADC58274D93 /* NimbleEnvironment.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 55D9A5F181604263D6A23911D8D5DB3D /* ExampleMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3689C145E9D8EF9C09D5D51B4BEBC6CC /* ExampleMetadata.swift */; }; - 58C0125D796A97541FDE3414001D8A92 /* BeEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEC65775803AE4107C5F146F531A9593 /* BeEmpty.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 58D964317DFBB10F54A273CB12843017 /* BeGreaterThanOrEqualTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFD8D616AFA77105F3629E55ABC18482 /* BeGreaterThanOrEqualTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 5AB9DB61D62D8BF7B1C734B373F361E7 /* CurrentTestCaseTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = BFBB1BA3F8803072E77F3B994C9A0623 /* CurrentTestCaseTracker.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5B9080F2840DDBFFB28A89D46E37387E /* CollateralHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20831CC6ED81A2F1F0C95613DCCE9DC2 /* CollateralHistory.swift */; }; - 5BF274C2DEF332ED79B1CD15CFEC3498 /* ThrowError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B1417EBEB96E67CD97B88FBCCC803F /* ThrowError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 5DBCC0E4C72649C9A39A00D40D944DDA /* Nimble-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AC642411A4F116F82EAC1FE6F1A214AB /* Nimble-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E77A3F633DBBD4C39776F6744EDC308 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33DF2DA396A134D4B008F7360DBE0AB0 /* SecureBytes.swift */; }; - 5EE8DC4B09FB1A82ECB70FC302ADAF3C /* HTTPMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = B375EA7EDDAFCC7889E060A112D2260C /* HTTPMethod.swift */; }; - 5F9AFDECC14365CD10F3D83D50020E32 /* CwlMachBadInstructionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AF3B8AC56B5B19295D30C66376F80AA /* CwlMachBadInstructionHandler.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 62D26CE7BA3AEDB4E5E87218FDCBBA90 /* Functional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7478905852B997538A8241B69582D7F5 /* Functional.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 64FADC0FC888B73D3E49C7ACCEAB7DD9 /* QuickSpecBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 200ABE35E735A1F545CC9E49BA3CDFD3 /* QuickSpecBase.m */; }; - 6593C547A71CCEFC480CD578080A327F /* mach_excServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C01DC78B0F3AF8D3D6257798C0E2E43 /* mach_excServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 65985C142EE8A74E6E56D5E30A39C79C /* Expectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B85986E449F6BD28D1136E49689D48C5 /* Expectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 65D826FD61BD6BD47FECFFA148216844 /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B6CB19428C224DF9AEF27B38DFBF075 /* Blowfish.swift */; }; - 662CB251C58B33CF7CE9C17F27A6D800 /* Quick-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DBEAFF4A6B367DF859614E3CB701A18 /* Quick-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 680FEBBEE31D4DE14A872761BA599D37 /* QuickTestSuite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01093B9C30957B578E271CB925081125 /* QuickTestSuite.swift */; }; - 6884154FF79EE5BDC14D609A0716BBB7 /* PostChildOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF148B9E70D7796513D0B2F68C0BE489 /* PostChildOrderRequest.swift */; }; - 68FD03C72D719117929696B62038B3D7 /* NMBExpectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D522D184896916E3410377215924180C /* NMBExpectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 69086E943FDA1EF21D24289B1D5C60D2 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8E71379D14A61CF7CB775E193D3A44C /* BlockCipher.swift */; }; - 69B80157634D6FAF248D37F397732357 /* CwlPreconditionTesting.h in Headers */ = {isa = PBXBuildFile; fileRef = 7339B714C89CE62ADBBA23EA9F564F45 /* CwlPreconditionTesting.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69E4627B6E2338D2F586FA167CDC6E95 /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 955A3B6EDC014BA685477E1601464E0D /* Int+Extension.swift */; }; - 6B07891E961E005DF0A8C761A0D54DF5 /* Ticker.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEF37EC96FC54F4DB84DA1A8442C67E9 /* Ticker.swift */; }; - 6BB0EBEB4730B94AC07458E398D142C8 /* MatcherProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CADE1364ED6D24DB4644A7515397A5 /* MatcherProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 6C715228EFC892AD90E07CE6517BC9D4 /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAA2647DB2AB53986069999AA5DA22C9 /* Checksum.swift */; }; - 6CB4890B9BF5F846E980634AFE83917D /* NMBExceptionCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = E58EE668A53F4C77C98869A0CC645900 /* NMBExceptionCapture.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 6EDD89D5C68A89E32C3763CFBD286D48 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ACF1CF43AD71A6C56312D01C6F87A74A /* XCTest.framework */; }; - 6F5501B927A46CCF4F52A4CD7C1E33EC /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F706C9330666ED55D166C44E1F960EA /* SHA3.swift */; }; - 701F0F6CC14B23859F8C3AA8D274D94A /* Address.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AF909CD48FF39F5FE98806ACFBFC480 /* Address.swift */; }; - 7073740DBB60483C88302F708F2F0039 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE148B28BC97B76ACF530C4A6BDB3053 /* CBC.swift */; }; - 7339E79B4FCFC150D9387E55FB126B1E /* Quick.h in Headers */ = {isa = PBXBuildFile; fileRef = 63CAC5635C067BCE1FE8ABC806808151 /* Quick.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 73B8D403CF8453CF55729FA0B3F92BA0 /* NSString+C99ExtendedIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E950BA61C11374D6DDE36896E65C855 /* NSString+C99ExtendedIdentifier.swift */; }; - 73BC5AC2ECDB8722E085F14B53E0D24E /* AssertionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9AB35B2FA4C5E506B1E43B92CED159D /* AssertionRecorder.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 74DE9C0DBED7C14ED409BFAA17158E73 /* CryptoSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 287F7B0FD6720079EEDF973396B4BD62 /* CryptoSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 75538A8B20C7A20AF3D54BBF35D56FFE /* BeLessThanOrEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33D678852DEB0A551C8BD94BB231A38F /* BeLessThanOrEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 75ABB48E3C30C2D736C3D05D6FD566A8 /* BeNil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FAD198535E799218207A389C3DE40BA /* BeNil.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 768EC340DBEDF0447F6CAB27F99BDF4E /* MessageID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DFD4B0CEC3489269B923796E72DB841 /* MessageID.swift */; }; - 76C097041D5BA49609C1E1572C29ACE7 /* SwiftFlyer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AEF764D179A7AA412C5CF9B2213125DB /* SwiftFlyer-dummy.m */; }; - 779811AAB014C57EAB3A43BB83A42F9E /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F40F131151E091011E0285BE69C3F57D /* Rabbit+Foundation.swift */; }; - 78639814475AF9C6F28DA9016A378479 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE5759664323C323391975836C4807CB /* Configuration.swift */; }; - 790B502A5E39B63AB1CD72638362BDDD /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14630064AC3D9D8D2A9CE0EC7ECC8CB3 /* CTR.swift */; }; - 7AA141DC41A984304DC61B140ABBEB5A /* GetBalanceRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375461931C265979B41003773F22B5EF /* GetBalanceRequest.swift */; }; - 7ACE8217F850532A25AB709703AC9F86 /* QCKDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = D92EFCD5A2B442B9821DEE34BD6E33B1 /* QCKDSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7B5222991D1C53DF737242CA6C90012C /* CwlCatchException.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F29E407248C26C3B1499FAFFD5711DB /* CwlCatchException.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 7C2D406766CD09A741D004F5074871A6 /* GetExecutionsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4556FBD5ACE362D5F897D9D1E41373DB /* GetExecutionsRequest.swift */; }; - 7C4FE99E01C8A635B3CE77F05B74B2DA /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 608C50F080693DF8FC03943F919B1839 /* PKCS7.swift */; }; - 7C93878B47BE664097F3A63B89D1A862 /* RandomAccessCryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54884609DFCF072081571F8CA059A48B /* RandomAccessCryptor.swift */; }; - 7CF0E324910A270CDEC5FD99B8C2F038 /* Pods-SwiftFlyer_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F058913292922092E3AA9F017D37320 /* Pods-SwiftFlyer_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7DF98DF4ECF09A73ABE5B1092628461F /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28A031A9D440EC97C6E052319D5DE02A /* PCBC.swift */; }; - 7E0C9AE6468A5DF91F0F4C7A387D725C /* BeAKindOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 812992601CC33D447763C0CB3D01258A /* BeAKindOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 7E38C53CC00067C7A5FA953B9261BF29 /* CryptoSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 974412BF0AF3C28924A478DA832C2BA5 /* CryptoSwift-dummy.m */; }; - 80763ECA711BA3777C09B81B21E288C8 /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D294CE36B47148DFBF7348243F572B1 /* ChaCha20.swift */; }; - 8096EB4A292E02B512ACF8C0E229290A /* Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DC44215923F4F67E27E25E17972DEFE /* Contract.swift */; }; - 8131E626B940699512588EDA2CAEBD34 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3F747F6D39C3699C96F8D76ED6FE0F8 /* UInt64+Extension.swift */; }; - 8170866E2ACE0ACFBC6D90081354EC65 /* Stringers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A1DCFD9BB46A645217E74461B6A5334 /* Stringers.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 8273296B2FF4EA070DC3E0C43A04A550 /* OrderState.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7BDA171BC971E3FAD7EA6B45F52254A /* OrderState.swift */; }; - 83C5F2274CD451BF97BDCD778AC69065 /* CoinHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00153D971D5FACFAABDC1879F65DC047 /* CoinHistory.swift */; }; - 848B237EB31C02719899A90111FB08DA /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C86CD1FF66440F6D30DC5789DA31D8C /* HMAC.swift */; }; - 85F41150DC5EA8413BEE3F2608F11991 /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4BE817163E1C7844F88DA5B5A0ED51B /* Padding.swift */; }; - 87FAA6BD98D8B8712821DB532CDFF447 /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = E89C5572BAB98F811BB8466A4FD40779 /* AES.Cryptors.swift */; }; - 880E76CD7A2F06CB9312379127E5131E /* GetAddressRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D226DA5DD26B6411FBDED6647FEE43D /* GetAddressRequest.swift */; }; - 891B36AD051D399A5188835B892A9039 /* PostSimpleOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E5EB6920DE8F4A4D47E27ADC532AA1 /* PostSimpleOrderRequest.swift */; }; - 8B55BD430033027AD5FF22D630DD9F62 /* DSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AB549D3A091EBBFDA4703AEF0D14E97 /* DSL.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 8C9E5C8D1B0AF25507F63B26B1CBB13F /* HooksPhase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5388B6FE95119E1E3F9E66C275F3135C /* HooksPhase.swift */; }; - 8D58EC5EDF5F6D9A5506884FBCEB203C /* BitFlyer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58823C75D89498D7ADE576AA10FAED76 /* BitFlyer.swift */; }; - 8E93F0F04E3E060946C89D15994E7074 /* Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = B570BDA4C15FBF4D71A86EDC54136427 /* Compression.swift */; }; - 8E9D8397BA554CE359B42FBAE1BCBD08 /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3638A62C33808CFB4A209D791E8C56C8 /* SHA2.swift */; }; - 934B3EA778B62DB2D5D8F0B02777E3F5 /* BlockModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A0A6C73BF88581E62EC04929CE077C4 /* BlockModeWorker.swift */; }; - 939837AEE635367FD47F36DC9445C7C7 /* Position.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86EC793D7DC145013B6AAE5B2A442489 /* Position.swift */; }; - 93F15DA52A02964DF9990E2898C53750 /* SSLSecurity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C6B3A7B3E29AC66291C8AC95F9F7C7C /* SSLSecurity.swift */; }; - 94DA4265D2AF0A4CA879A7F6D5B5A820 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC9A9F22ABB0E418C097F23BCFB810BB /* BlockMode.swift */; }; - 94DE2EBB26B729ECC5D41DBC8D776C21 /* ParentOrderResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = D42BEFFC4B07302D81558B60E8170700 /* ParentOrderResult.swift */; }; - 960978CE23EE23DC0AF7E5954D6CB2A3 /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30708021707D8D1F66C9C784BFE010F9 /* CFB.swift */; }; - 96132E7432F8DD315A88A07C6B4F9C72 /* NMBStringify.h in Headers */ = {isa = PBXBuildFile; fileRef = 37DE0FAF724685B6E286723DB23FEF6A /* NMBStringify.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9681D82F575F79FF6D47C19D2F435C8C /* GetTransferCoinHistoriesRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 960DE468602BA4DAC1632C94DE544536 /* GetTransferCoinHistoriesRequest.swift */; }; - 97B2B4AFFA86BA7E0F85F53DC0F0B466 /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F11FA0523F4430839C3A065AB265369A /* Collection+Extension.swift */; }; - 9849B6E5DA4E1A32EA0E58E144D93E58 /* GetParentOrderDetailRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C429B1C2EC49E4BD92F6575F88FB1FEE /* GetParentOrderDetailRequest.swift */; }; - 988EED125395950177DC14AF9BC87D8D /* HaveCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2517929D14088ED1ADB734A0A5FD7166 /* HaveCount.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 98D552CF6CEEEE6FB708C3D12697CA98 /* Closures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C4985A8A219EC10371CD5DCDBCAFACF /* Closures.swift */; }; - 992BD89E9B3D5C60C6D5B77A4DDF677F /* Behavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4C2F956CE5C4612A8E3208F216E848A /* Behavior.swift */; }; - 99811870CCD008A915FF0CD3013DADCA /* PostOCOOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F68C886FE93F29C3E5510F71F00B6278 /* PostOCOOrderRequest.swift */; }; - 9A648E76F6760AD1D61247D715E37612 /* QuickSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = E9A58F0C45202FF1891223E6F2A28F0F /* QuickSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9B574F5F171D9CC0215152224E5B9144 /* QuickSpecBase.h in Headers */ = {isa = PBXBuildFile; fileRef = E109BF1DCD83F2C042AE93A5E7D30302 /* QuickSpecBase.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9C2F273DFEECC7AA39DD48312526BC6A /* GetDepositCoinHistoriesRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5806FFECF497BD279ACE7686364E9D7 /* GetDepositCoinHistoriesRequest.swift */; }; - 9D181FFF60ED11EBE8681777D792F4CD /* Starscream-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B4417E0815B1BD599C0AF1313EB3E6D3 /* Starscream-dummy.m */; }; - 9D53D73628C4FAA2EAA48EEF116177D4 /* PostIFDOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A974545224205019D3A814B567F7BB35 /* PostIFDOrderRequest.swift */; }; - 9E621EA1F1FD26B814A7CBC7488A55B2 /* ExampleGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D2143584112E82BB6CEC6FEA632A855 /* ExampleGroup.swift */; }; - 9ED1359CFD9644811D6E6E2E4B0265B3 /* OnlyStatusCodeResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9265258E4CDA2E0BD180C84F61D8643D /* OnlyStatusCodeResponse.swift */; }; - A272932A4DF9AC2D3B0A21AC70606F6D /* CwlBadInstructionException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 984C88721FC80198C4E0B4ACB6293900 /* CwlBadInstructionException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A300671F55DD95AE86819358B2C6DE32 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55D7FA756EE6023C7526FA4990B55339 /* Cryptors.swift */; }; - A38A72DDB57B9D8DC43E6A5644446996 /* Collateral.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DB28CAB4519EE2422D5A68E6490A578 /* Collateral.swift */; }; - A61ADD214AA182EEB2AC95EA3F3D658F /* XCTestObservationCenter+Register.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DA512C0A82F359D65F337D80458A8A6 /* XCTestObservationCenter+Register.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A6FECCBB848BB9F2A2C3ACD42D1442D3 /* PostIFDOCOOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFE2D98E329854CCD0FA39F9CA43F91 /* PostIFDOCOOrderRequest.swift */; }; - A74537420FF0CEDC6B9E82E1DC4C2B15 /* Contain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DBE2EFD417A0861D9E692F2AB8C6EE4 /* Contain.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A7C13C62E4116CA964A3E82179092AD5 /* NMBObjCMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8283C85647B006514F915C70A069280 /* NMBObjCMatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - AAA2830BBCD86431B3EEB0ED968DF4A3 /* CwlCatchException.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ACB4E89C4664C9281321BD0FF34BACF /* CwlCatchException.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AAC3E7DCD7C3966B6F580A21793B00FF /* GetTickerRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EED4726B6066FA0A3ED1E41F88C211C /* GetTickerRequest.swift */; }; - AB745A30CFCB31DBF8049C26CC654827 /* ChildOrderResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA6FD1EC71ACBFB41E7F4A5EF282B1B /* ChildOrderResult.swift */; }; - AC8E2D2E79F578BB794BE2669845A348 /* GetChildOrdersRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4285BB525B134623AF28744C23D08EC /* GetChildOrdersRequest.swift */; }; - AD152834CA3C1B0DE54526F950814CD1 /* BankAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C8246A97BC2022A1BECD05848A28CB3 /* BankAccount.swift */; }; - ADDC1DD15A54FB60C172435E81A0169B /* DepositHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E3A31994E027EB363665D207CC7B4E5 /* DepositHistory.swift */; }; - ADEE95A3A188BE3095990E20766BCCC8 /* DSL+Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29C3887672A9E09262ED423FD7921403 /* DSL+Wait.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - AE4DA49ECD693BF384CD824DF02D7C6E /* NMBStringify.m in Sources */ = {isa = PBXBuildFile; fileRef = DF20F56415E5F45D046F08C0D7B3424F /* NMBStringify.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - AF1174085D9BC5D50FCE0480E9C2BE94 /* BeGreaterThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = A46E849EB2A28D0D467FFC51E399EF98 /* BeGreaterThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - AF6D2F5AEF79DC96F6E0B4851AF392B0 /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF026D2696AE9A5F12D8768D05407877 /* Example.swift */; }; - AFFE2DE23B44BECEDE290348F36F04D0 /* Balance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237CB24140EEF9C3F88DFEC0190CF6CD /* Balance.swift */; }; - B102ABE4E54B71B3D2C2118E2782FAB9 /* BeLessThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A96FD818DEEC57CED732736498DD81A /* BeLessThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - B2C151B20635A480E1937E3D2B509BB4 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58B87950A3EDF7865F55765846385D5D /* Async.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - B2F16B6F4D5D5944929BF9B416772565 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36561E695FECA0FA168B81EB40BA62E3 /* Utils.swift */; }; - B856B5034004C190E8B2B8A2F038527D /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A20EF9518D77A85F2F274F6E0C9E0D3 /* UInt32+Extension.swift */; }; - B90AA1D193D9DA983C60B24EB3B5A189 /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE4E8128EF17BDFF127D9DF2A1496F8D /* Updatable.swift */; }; - BC7B9761322C74FA27969BD55833BA47 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = A81D61BDBA85C0C2C94251956FEE220F /* Errors.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - BD7F3C923AC47D15F51AD07D359BBDA4 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973A819AF5E4261DA046DFF51BBC30AB /* Array+Extension.swift */; }; - BF3B7218901760A6226C7F6346BEF454 /* BeCloseTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C174CA1E398A8E375FE6206A797B2D8 /* BeCloseTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C06FA100C1BBEE34B863BCB8A65359C1 /* MatcherFunc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 708ABDEF11619B30B3E2EA76EF935164 /* MatcherFunc.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C0D42A0AAA8113586DEC2A0442B2968B /* GetChatsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 220A361D08B03BECA0B3DB25AC225CBF /* GetChatsRequest.swift */; }; - C1D862177DC2999FAC710AC25F253BD0 /* BeAnInstanceOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C277A919C0E34A4BCA053A0A1B444AD /* BeAnInstanceOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C2467221FCD579800B9CD8FBBDB10B4D /* CwlCatchBadInstruction.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEFA3076FB54886C251E329E30AB7103 /* CwlCatchBadInstruction.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C5BBE33FBBA6486584D132859F875B4B /* GetContractsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0502CA19200CAF84F030FAA0F227C01 /* GetContractsRequest.swift */; }; - C6F2B1B66E0BF6AD1D9C251441BF9902 /* ParentOrderDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = CADA1074D03C51EE3F86EFD544D1FEB4 /* ParentOrderDetail.swift */; }; - C745A2AA05FA14326388532157D59FD2 /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50EA1065DAADA5F7CCBDC30E80AFB46A /* Rabbit.swift */; }; - C8320A6164C870ADDB8A855ADEBBBDC9 /* Equal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07CA4D9D12A0D107A7AF17D735F2A16E /* Equal.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C953641D50BEADDEC1E341FE87247AF8 /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F6730796CD866770103041DE209C7BD /* HMAC+Foundation.swift */; }; - C9CF470EC6FA549C911A82E88C0F12BD /* ErrorUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 063BCDD4169161F5F96E6C40034DC6F9 /* ErrorUtility.swift */; }; - C9EFE2157C8C2AFAB7CA3A4161AA154C /* ParentOrders.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C411EEA3A277F0D8372CB834E5B947 /* ParentOrders.swift */; }; - C9F3DC2C7BC21D7EF7AB7FC656DC66A1 /* TradingCommission.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11178B6C610082D4FBA6B5B3B6014294 /* TradingCommission.swift */; }; - CA18054768B1951EAD5BA07E5C917D15 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9E86FA035C284340FE1A4012369D251 /* Foundation.framework */; }; - CA44F79721F689C434DEFA89D31ECD53 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9533510E2364604B707C77BE784880C2 /* Blowfish+Foundation.swift */; }; - CAA3F0F3507AB5798B490B49D95E3809 /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6395593EF227FC9A8DBAD0D7485FC05 /* DigestType.swift */; }; - CBBE1B5655CD83A70E2856B7D33D3103 /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B07A23388E2E910F6FF90D493CFFC37F /* PBKDF1.swift */; }; - CCDAF11E7AF29E720C587B038145F622 /* BeginWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 814248A0C0806542F6C1A83D5BC9F059 /* BeginWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - CD11E1CA4EC90EB672AB603B3BD82EAE /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 699BFC7AD916218590D3AE966FD22624 /* ZeroPadding.swift */; }; - CEBC3C199E280B46EC37E53BC0BEECF4 /* Executions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FB0899BA7DF8C76F45C53AFA575A870 /* Executions.swift */; }; - CF55697859D633C852C3586384647EB6 /* NimbleXCTestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71EFA2EE86202CB315D55BA8E4960C5A /* NimbleXCTestHandler.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - CF8B732C6D7E08FCA5E6DC2D3C36A681 /* Quick-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C8A7F68BB1F249D5ABB471DAE40EDBFE /* Quick-dummy.m */; }; - D01C05C3460A25744E45CE8DDBD896B4 /* TradeState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 634A0577AC0FF68E262EA1387D1C8D69 /* TradeState.swift */; }; - D02966E4194949E5E173FC822A2C947B /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2795767B203A6D4D4AE3CBC280C4C47 /* WebSocket.swift */; }; - D07B27C54FC1AAF70C67E70B56248C67 /* GetBoarderStatusRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 652A79F144ACE69B05876EC53B2A55F6 /* GetBoarderStatusRequest.swift */; }; - D0A01790FB5513BE9460BE38E6048826 /* CoinStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 624B6231EAF162A30629F0FEF87D6132 /* CoinStatus.swift */; }; - D0CC6EF77721FDC29F558F2B6ACEEDCF /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1504FAE7D605CB4AA22808A89F3AF443 /* Data+Extension.swift */; }; - D0E33219049DA3DF31FEDB3F30952601 /* GetDepositsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC4D35EF29FC4D3D05E0F61C7959D06E /* GetDepositsRequest.swift */; }; - D1C92028E17B26ABB16B6C1EF3F387E5 /* ApiSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 783CB9E0AC85FF8E302FE061743698DA /* ApiSession.swift */; }; - D440BFA73275F8D055355BD6EBD7C2B6 /* Requestable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A957AE0509EABF54AE5CB4470429A33 /* Requestable.swift */; }; - D58F19BAB5B091CDB9BE884EB68124FD /* PostWithdrawRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6483C8EF295B9CC2A68B29973344E1FC /* PostWithdrawRequest.swift */; }; - D6A30385834E88F5680BE9719A145EED /* RealTimeAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39BD1DE94489D5C17C3ABBDC27AAB750 /* RealTimeAPI.swift */; }; - D73BFB603F3E62F95489ECA1BAA5E414 /* ResponseError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CE8555E3C61304E9D748C84F0E88B38 /* ResponseError.swift */; }; - D7CA1999F4D69F97C9042949C5E02286 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBC5E3DD8C5EB82B1F889BBBCF123E8 /* Operators.swift */; }; - D7CAA419C83F1856536F56FEB69FD650 /* GetParentOrdersRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7EE3CBD56B88DAC2FA46ADBCF5E9D38 /* GetParentOrdersRequest.swift */; }; - D9E62C41794D0B5D2CD68CA92C4BA836 /* mach_excServer.c in Sources */ = {isa = PBXBuildFile; fileRef = 33F3FF8080ADFFDD2A774F6B5FBA7842 /* mach_excServer.c */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - DA348E81842DF9D5C6713FD2AEFB5449 /* CurrencyCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB113CCC8BFBDFCEEDEB459F32FAB83A /* CurrencyCode.swift */; }; - DA884CBB9C772D7B980E090394488A00 /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90E8FADBCE398EB0694811111C6C37B1 /* Filter.swift */; }; - DB604F1155F211976D2924A291E2FE03 /* GetBankAccountsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26804FD869DE809893059C66D67BA59A /* GetBankAccountsRequest.swift */; }; - DBB1D41A25CE20820193E9840BF10E42 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B239461257B026CF33394A7FCEB5609 /* DSL.swift */; }; - DBBC0B3E2A77C465F817B4CB91C7CA6E /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B0011CF06F1C574A69E9A96AF0FFD9 /* RandomBytesSequence.swift */; }; - DBF51928AEA7B20A32B37134DE422D3B /* GetCollateralHistoriesRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9FB7162B096AA1BCAE10CB188A85462 /* GetCollateralHistoriesRequest.swift */; }; - DC19C8C9E1D0A3E93F387C220A45D5D9 /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8C568C2FEFAA7E3D3065666FDECD142 /* CryptoSwift.framework */; }; - DC1B98A31F1E0D50B7E95B7F69859F28 /* Pods-SwiftFlyer_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F8DF0F807D17CD352E0F05E19AFDFB6F /* Pods-SwiftFlyer_Example-dummy.m */; }; - DDEE250BDA6A6977FEF31AC3659D00AA /* Board.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FCCA9A39D2A1B29F36D3B2C1C236221 /* Board.swift */; }; - DE9989DF2956698E8490B8FE97F69159 /* QuickConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 08815BCA07F1BE4E3143D29A5F614834 /* QuickConfiguration.m */; }; - DF026F6F406A4FB6CEA63B0A4B9E27DD /* AllPass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D9F819F217C4AADF5142B20BF2F7FBB /* AllPass.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - DF9CEDAB88D813F8291FBBC4F828D1AA /* URL+FileName.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2A299FCB7594B98757A656FCBC6A7C8 /* URL+FileName.swift */; }; - E039B801D197986FE25FD3011D2A324D /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2085696690F6D83BE71E968921DCAA8C /* PBKDF2.swift */; }; - E1AACD1A06F4FEAFE4392D3863795B27 /* HealthState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6623082DE267833C3042657F9E3B5067 /* HealthState.swift */; }; - E3B66E29680F852F0900AA65931D9D46 /* RealTimeAPIDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA32E2AA8D4130A264DFB56E543BFD9E /* RealTimeAPIDelegate.swift */; }; - E76E6A4231514673FFDF374CFFF03E23 /* World+DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39DE65C12966B0FD303653D5A261E1C7 /* World+DSL.swift */; }; - E77DCC126414639AA61F4A1340307195 /* ConditionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = A108B7A80C19F0590C1C3E26DBE151CF /* ConditionType.swift */; }; - E780BDD3E588068FF869701FDC2D6BBE /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 399DEC50B1BDB78BEECC13C053AB2B07 /* OFB.swift */; }; - E9731A99FF6DE8DDF7E4E7940FBAEF07 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDF14423BCF9775074A3BFEA0BDAF89D /* Result.swift */; }; - E99E9C0D8889E1ABED1BB66EA5E26F6B /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8BF33588BD7AE4C25820DAD40CF6076 /* AES.swift */; }; - E9DDCBC12D0C48E9072371632E2EE354 /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A5231ADF0F6CA19FC18EDC0F0CFCBAB /* BlockModeOptions.swift */; }; - EAA9E8594D3379B64DF31AA12EFFFF79 /* Starscream-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D789CE3A1F400F67E0551443F8CF69D /* Starscream-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EAAA05EBBC34225C0DB45797712E24A1 /* AsyncMatcherWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41A7FFC0862DFF111C6E16525CD575B2 /* AsyncMatcherWrapper.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - EAE2AAE5EB826B38978692984BB22FDD /* RaisesException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48732E3EC65A0F892A08AA9F702A08F3 /* RaisesException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - EB3A73071ABA60E77E0704649637D8BD /* SatisfyAnyOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = C033DBF4B6F898D4CDCAB0FF112026DC /* SatisfyAnyOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - EBD17F56B9E4E86908F18DF020D04CD5 /* ExampleHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE7ED12C6D34DEB7AEE9146F53CD889D /* ExampleHooks.swift */; }; - EC44355442C7E895D8BDD437C8FC1A50 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3D7063454F94F3481D6B8190A0F0D13 /* String+Extension.swift */; }; - EDDDCA0F0C0E28122EFBD8A136CDA74B /* NSBundle+CurrentTestBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00DC53EDBF334AC456D9DF763ED9977B /* NSBundle+CurrentTestBundle.swift */; }; - EEBE924BD06D6681AAA6003C3A6DBB33 /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = C623649AC00E52CF39360EB5B3D22E59 /* MD5.swift */; }; - EEC95E134BF6663B52A72D8B53375C00 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0EE5B0E460DC54CABF8CC4FEF27BE97 /* PKCS7Padding.swift */; }; - EF8548E0C37E8888D9DDC11ED89D3568 /* Predicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E2C4C80D0DF04D4DBC7709BCFA49F07 /* Predicate.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - EFD0AEFC88AAE00ADCC4A84EA7A5B512 /* World.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BDEE817DA29A6BA5380A0DEA7A34AAE /* World.swift */; }; - F1E946058D8C8F3C5883A85E22FE5AF9 /* ChildOrders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C318E222E11AAE16624A514E997C35 /* ChildOrders.swift */; }; - F28003B228B82B7E1497D4F41F55A31E /* Match.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1519010BBB6481C9BC89D3ADC2089ABC /* Match.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F2BCF202719F77E50712C8A3FE2688BF /* GetHelthStateRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B575524D51973DF6D67E8BF751474069 /* GetHelthStateRequest.swift */; }; - F3BAA36614ABDBC0538B0DEA99CF80A0 /* SourceLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50F59B0A4C674621696A613E83F40E91 /* SourceLocation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F4BD249C60F21F5E0F7C1FAC8A5BC2AF /* BeIdenticalTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625A301504D51F3D082C0E8581A4EDB1 /* BeIdenticalTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F731950E2EEC46D48E1A8CF1F67353B6 /* GetTraidingCommissionRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5469FEFC8B793EB3F4BE9A46F6497581 /* GetTraidingCommissionRequest.swift */; }; - F9649DD59BAEE88C6864EEFE73ECA88C /* AdapterProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EB413FDACEA5F4847C43055C86481FD /* AdapterProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - FB433A84B0A557CD5E5948A8B6705024 /* DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = A684233A6F218F413DADB5799DD0BC73 /* DSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FC22873AD7E8031E42EE04532BA96651 /* PostCancelAllChildOrdersRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0573C0AD72250F233B0A0581EF56DE5 /* PostCancelAllChildOrdersRequest.swift */; }; - FE3359531449ACD10BCD0C9540592294 /* BoarderStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17EB767AB31722BF344DB83859B0BBC7 /* BoarderStatus.swift */; }; - FFEFA357A2ECFD2C8696A7D9B6559CAC /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 554AD1E2AEADF50FE94549A182A0E1F0 /* Cipher.swift */; }; + 006C8AC497B549AE7BEBCF93A11996A9 /* Quick.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2DE4C2A4A51750BE722D5856A37682 /* Quick.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0078B3BAEBF2E10A72AA609865BF516F /* Quick-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C61C39AF547E57991A6221C682D49D6A /* Quick-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 00A47BED4EE4FFD5F4F116C30BCE6959 /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23B0838DAE4AC84DE7E18FD05289B7D3 /* PBKDF1.swift */; }; + 01585FDCC132E6796586406E0CE390C4 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4E7E801440206041703DEFAF6651703 /* Configuration.swift */; }; + 03541CD6AD5CC1E500AFDD4A6FD5E12B /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B70DD81625D87328A77322CFD0EE93C /* ECB.swift */; }; + 03705FCE353B9A436320B5798C9F7A50 /* ContainElementSatisfying.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A3775BA4D2E6ECBEB115E9A9B77B0F6 /* ContainElementSatisfying.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 03EAD3FB567995D5031C71C2A592D65A /* ParentOrderResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61BFDEFFE984D4D42D99D174F8D6F2E6 /* ParentOrderResult.swift */; }; + 03F1DD79D7EDA137AB1AE37330CB949C /* RealTimeAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D9F05CB49D7D7D80C82152A06DCC6CB /* RealTimeAPI.swift */; }; + 04A9C5521EEA58DFA811A9BD59F8C5F1 /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = E90B5F0A2556086B949E78DB3F660D38 /* Example.swift */; }; + 05D6872E1E4C28423550C859B6E03820 /* CwlMachBadInstructionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = D08F6F4DABCE042A06488C1E86C327E8 /* CwlMachBadInstructionHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 06771458BE34E82CA8BFB33CE1AFC994 /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36A04BCDFF00A1E396D1F5DD3EF56B69 /* SHA3.swift */; }; + 06ED6FC42DC62BEF90689EF9790B9A1D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8136C456D19087530C1A6BE21FE8679 /* Foundation.framework */; }; + 075311A9B30D68479A7D7404A99B2FB1 /* NMBExpectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DA0DB238B6A23B30B3BD6D0D09F47EF /* NMBExpectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 0999B997CDAC772A41A7F70CEF4A1D49 /* BeginWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 120675C39E2BDD23A15CEE331D0FE80C /* BeginWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 0A00A1489D4041380B2BABC394E6162A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8136C456D19087530C1A6BE21FE8679 /* Foundation.framework */; }; + 0AD5DFDEF40D71D803951290627C3118 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 673BB5F2DC1E491CFDF20CE301EA938A /* NoPadding.swift */; }; + 0C49EAE41B7EAE212C843A7BB138B7A6 /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1492B7C97631CA3FE509CA3201C9F15 /* BlockEncryptor.swift */; }; + 0C5A535C81861A6CD14EDF8CC500FB84 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E79F6AC6E7B3BB68616A0B2228E6F71 /* XCTest.framework */; }; + 0CEBC7BE11FFDCD42D9931FD964B76A6 /* QuickSpecBase.h in Headers */ = {isa = PBXBuildFile; fileRef = CB80DC5F3D09B0A32F2A46453E558187 /* QuickSpecBase.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0EA7A0B2510FC4E7B293A85C52D1FD2F /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E61B879A6FE7CE9F19EDCC2EAF5B523B /* UInt8+Extension.swift */; }; + 0F31FA39DE65E4B1F239F8D4DC999A8A /* SourceLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15D4EBC1E82CF9C9E0BFA38513A7FEAD /* SourceLocation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 107AD33415A0C4C80D49FC753A9824C4 /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83120E42F920470E45379C51F064CDB1 /* Poly1305.swift */; }; + 11E13FE8DC4420AF5942736283AA3913 /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3F401E04D2FB118ED3FC231DCA0583 /* CipherModeWorker.swift */; }; + 126A50F3CC4FD3709951973B440B5E9C /* WithdrawHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88F003D02EA31C04C660C54681DD5E10 /* WithdrawHistory.swift */; }; + 13FBB20EA4647EA46F0CB2E7254A5F50 /* NMBObjCMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE7FE2309F60617099EED0D76DDEE1D5 /* NMBObjCMatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 14D08B876F991250D0A6995E29D3309E /* CoinHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B42A3B062D1D4083336FC0AC44DA99 /* CoinHistory.swift */; }; + 17707C863EB944AA0E2A1EE348648751 /* GetExecutionsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFAC4D53E58DE2B694B7CE50B57EE04B /* GetExecutionsRequest.swift */; }; + 1B4EC974B307A02B6FEE681077764F37 /* Quick-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DB79B9EEBD057B15E367C0A58377832 /* Quick-dummy.m */; }; + 1BAA60FABBC4047372D87D9B739C4463 /* CwlCatchBadInstruction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48483C4BB4282BB99BCF3384F1253DCE /* CwlCatchBadInstruction.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 1BAEDA109B23A9F1F66A906865309037 /* SatisfyAllOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D71AC5325479BB67A1FF3E32E096299 /* SatisfyAllOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 1BDA674B011972EE9EDC32ECAC1D3663 /* CryptoSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 73997F12ACCB42C3B7C806C6A6BA0220 /* CryptoSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C47C7900343DF5592B39BA5D2DB0599 /* GetContractsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8323E0C748A90B91BA76372A3DE83EE5 /* GetContractsRequest.swift */; }; + 1C9FC321589FE864861C2B21A509C67B /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C5E43942F2AE9C2BFBEA824D668A0AB /* Scrypt.swift */; }; + 1DBB41840F32828B61A044DB035C5B4D /* PostCancelChildOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5278EB7CA5DE0DE3BCA526CC430F4CB /* PostCancelChildOrderRequest.swift */; }; + 1FA0DEC9E883929115DD91352F570F3B /* Nimble.h in Headers */ = {isa = PBXBuildFile; fileRef = 024C0CEFCEAA6EAA79E0B878A08615BA /* Nimble.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FE1BE4F48C779A5E9F7ADE015DC2F4B /* CollateralHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE9C508C62FC6B3E160F0454017BE838 /* CollateralHistory.swift */; }; + 21B3B9B18C00CEE6A62492ECF247901E /* GetTraidingCommissionRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F4700C4A6F6AD767A87A4DCD4404E28 /* GetTraidingCommissionRequest.swift */; }; + 22DAE010912ED4E153466BB1BEDB364A /* Chat.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD941B36A9E7ACCF67CF73F6BE2CC0B9 /* Chat.swift */; }; + 238B8724EAA4524DED410783908C1181 /* Collateral.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABEE8A2030F0F754ACD8218AAF55EA1C /* Collateral.swift */; }; + 24AD9C69B1A899FA7DB0CA4D346319C5 /* CwlCatchException.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB8D211AEEE7857E713FFAF09871F644 /* CwlCatchException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 2580EC5D23720ECE2B93599E8C440CFA /* GetChildOrdersRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B45EFB9DC1FD8D9ACD6547B0D1642EA5 /* GetChildOrdersRequest.swift */; }; + 25965DD59C3DD0798E5B9D9DFB89C160 /* PostSimpleOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA277FCAE41AFD4389415BC98386A32 /* PostSimpleOrderRequest.swift */; }; + 27E43B4C2A02EA5D3BAF0625FDD1B2A7 /* Market.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C212B3C661BCAC9A623936E278D570 /* Market.swift */; }; + 2860A4D68A514043A7C7FD04FF69B4EF /* GetTickerRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EC2F584A90D28E373F86DE89E56BBA7 /* GetTickerRequest.swift */; }; + 28E30A6FFA39F755DEEF75349DC1068A /* GetDepositsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A90FC78F440CC4D9C4B4262D1C7D8EC1 /* GetDepositsRequest.swift */; }; + 2AA58694E62F034FDD42EA0A941B191E /* OrderState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D30EE8F255DA4F5837E972B81933F88 /* OrderState.swift */; }; + 2AECC9858F9621CCAF03A7F31CAF5F68 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B6B165D3EE1BAD9794DC55149B73794 /* CCM.swift */; }; + 2BE9EA5B2B73940366D2F75AC8112EEF /* PostWithdrawRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 020F0630B74EB920D4F62236E308DC0B /* PostWithdrawRequest.swift */; }; + 30819A318CA6DF57C7B01294873F9731 /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE8432F16EE87C33223BBA64D59D5A53 /* Cipher.swift */; }; + 308326ECDA6EB750D131F8F187AABECD /* GetBalanceRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB7296B7A46FE5397F38FC4DD5EA5BC0 /* GetBalanceRequest.swift */; }; + 30966E26266F62432C8E914340871113 /* NMBExceptionCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8AC5950FE0F0F06D8990A43521FFC8 /* NMBExceptionCapture.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3101D8F2678E107351E1179C14FC7BF5 /* BeAnInstanceOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = C03AE8527F89C6281883F1C4B0284D40 /* BeAnInstanceOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 319BDB83472237EEA8562ECB79749D30 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98EFE03333C6AF96B6DC8046837CBC72 /* AES+Foundation.swift */; }; + 31DCC4FEA92A71A9FE8D881B73FC7426 /* CwlDarwinDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD30593F90B3AE1A481F78BF9CAE9ABF /* CwlDarwinDefinitions.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 326469F9500A7368E36742C539AE6D4D /* QCKDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BA19B6EDC5D4F760A7341828BAA73A8 /* QCKDSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 328CBB53BF5236042DF4CB4B751EA062 /* Contain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F55B78A3189D7EFB960325D684352D3 /* Contain.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 32A3D145CF6353AFBDDBE86BE134B488 /* GetChatsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A1FD3A7BF1596DEC21A334CEEE92A3A /* GetChatsRequest.swift */; }; + 3324E2BB0EFF13F8A495A48C92AAD731 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 457B2D53884DA5C11DD0D6B531F2376A /* Authenticator.swift */; }; + 3431F5E33F78AB7C0A1565D25671E594 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5927E3351E482263BB340ED187BFA5A /* CBC.swift */; }; + 35087B8F6AC4F000C85B8D672760AFAA /* CwlMachBadInstructionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = D1B22EB41AC623C72160637B5B1708C1 /* CwlMachBadInstructionHandler.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 3537F7CBFBE04113D495FF50BC3D6672 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3068B3BC705908C4C4169D5B808CCD0 /* DSL.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 373C57D757D6DFAC77450763C6BFA620 /* FailureMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC42ABFEB69DD4CC8CA91D09B09A4D93 /* FailureMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 3817FC2AB02EA2F87FA5D94BCF6FCCBD /* GetMarketListRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3B0AFEDA0C18A6EDB0B7DAC3485957A /* GetMarketListRequest.swift */; }; + 384C222CFBC35329C4CD50B9264560CA /* PostCancelAllChildOrdersRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E3A98E693CA0E64B7E9D6CA718FE7D9 /* PostCancelAllChildOrdersRequest.swift */; }; + 389A7A51F24592CF36D4762C101D3549 /* URL+FileName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E9F73EDE43F374564B100F88E743EA /* URL+FileName.swift */; }; + 38FEA25D16ACC1E6F5C696CD95B41A69 /* CwlPreconditionTesting.h in Headers */ = {isa = PBXBuildFile; fileRef = 63C8EC34C526C4AD160D3E1D81312236 /* CwlPreconditionTesting.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 392B6696BC59BDCD988D7C5DF3E3E1C5 /* NMBStringify.m in Sources */ = {isa = PBXBuildFile; fileRef = 017B93C35C19EC039E608AB93D400503 /* NMBStringify.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 3B6BCEEA87CBE45AC437EE397183A064 /* QuickSelectedTestSuiteBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1686B4E24ECF924E94DD376D894C700 /* QuickSelectedTestSuiteBuilder.swift */; }; + 3CD980676A963E3334954EF17DDBF579 /* GetTransferCoinHistoriesRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5318052403C415075FCB13902D916E1 /* GetTransferCoinHistoriesRequest.swift */; }; + 3CDBA0038E1DEDF130C18A22CE08E600 /* CurrencyCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC2F27D97A7D40C9C17E63DA635A3A8B /* CurrencyCode.swift */; }; + 3F55C3F5EBC55B070A83231E77A06684 /* SuiteHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 022D079829314C4CF7A7CA3FCDA034F9 /* SuiteHooks.swift */; }; + 41D2C4655406C598C676AA30EDBB3FEA /* RequestableExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6F66812753B309DDE58D4464C912B37 /* RequestableExtensions.swift */; }; + 41E6B3C3D69E1165FADA2B616D793A9B /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41BC1F4CDC29F2716379F993F5C880AE /* UInt16+Extension.swift */; }; + 432E829A65495EB98C8F491850BE5E86 /* GetParentOrdersRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3BEDBB59071A6AA70D0F6C1911208CA /* GetParentOrdersRequest.swift */; }; + 43E95567704203A2DE95E07947BDF70E /* Equal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D4ADFB9D5D4A494501A4AF109E871C8 /* Equal.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 466A25D2EB90E4C77C3750BAC6B2F71A /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F1F94878AA561EBC67A47F7C815E3AF /* ChaCha20+Foundation.swift */; }; + 473BD05319983C8B4DE2DD157614FECC /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AA1DF4608166D42C089E1931C14F1D6 /* Blowfish.swift */; }; + 49D298F107CFE496C3BDB8E98012E45D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8136C456D19087530C1A6BE21FE8679 /* Foundation.framework */; }; + 4A985E199F0299126371145E219D039A /* HooksPhase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E03315C18F95AF5ECE50BFDCF23E690 /* HooksPhase.swift */; }; + 4DD124BBDCCBAAA7E12B58ADEA34E15D /* TradingCommission.swift in Sources */ = {isa = PBXBuildFile; fileRef = 805270BA384838EC46E425E6E73A6268 /* TradingCommission.swift */; }; + 4E0984F7370F4AAE787D814F5A9091E9 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94DF965A81C8444C68630CAAB1DFAB19 /* Utils.swift */; }; + 4E70FE29FB2BAD7E5427532B5D2FCF26 /* XCTestObservationCenter+Register.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CD2767523176019E2ABFEE31AEF91CE /* XCTestObservationCenter+Register.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 4EC9CCF8F1D0BE6A3CC77A85B118F77C /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BBF7671C048CA71CB1D79CC4926121E /* Operators.swift */; }; + 50B867B56D7DF05FF83AE23B2C50B474 /* BankAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 692DB64642B7B43454BBEE4BB52E655F /* BankAccount.swift */; }; + 51F015B99C1EB4047F710B107D6E309A /* BitFlyer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F4B3248C59083056AA7787FB867C6CA /* BitFlyer.swift */; }; + 52AC10789AF761D5F3D8446E46F05BE0 /* QCKDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = F5EB11F10A935969B62FF9C82B81F657 /* QCKDSL.m */; }; + 576D8F6A41A839FD5FCB1A0E582A1F5E /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42FFE1A199FBD9FEA46F8AC76DE980F1 /* Int+Extension.swift */; }; + 577364D94A9C1915DE6CDB9F280CF578 /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51098641BEC4F324B2CF4143C3668FD8 /* Cryptor.swift */; }; + 5974937F3F2B750E2A504ACF98128E51 /* CoinStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCB9FF84195C32C1CA375D16C45F943B /* CoinStatus.swift */; }; + 59AB425E25DF6E7F8AF78D7B8CA7347D /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AE31F877EF6037E1A6EA418A0EBE7C7 /* AEAD.swift */; }; + 59D862091EEB77F667B8A5FCE4532582 /* World.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB52AB907A111696B679ADB5B4A0C6B /* World.swift */; }; + 5E2A0424554D946767CF0A55D9D96714 /* ChildOrders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C477037E0DD96CBA60BC7F6DEF354A7 /* ChildOrders.swift */; }; + 5E57DC0ECFA38CE20B0922A65A721421 /* Order.swift in Sources */ = {isa = PBXBuildFile; fileRef = 630D095F1825F9A2A305A545F643B74E /* Order.swift */; }; + 5F154C985B9DE1085A993CF9AB332BF2 /* AssertionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87108EE3272301CDF2D9A12952169D64 /* AssertionRecorder.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 5FAECF8DDA78E394F93A941B6878234C /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = A606097B793AABCBBF10F3F7893BD1E1 /* Checksum.swift */; }; + 625B5F58E9EA766121AF719A182C08D1 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1CFD53BD68333BAFF44CF0318D0ECA /* Utils+Foundation.swift */; }; + 68B24B5D42E983F7CB70DA3874F7DA72 /* HTTPMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AED5E5A8D7A0BFE943CE3427D5A9887 /* HTTPMethod.swift */; }; + 69061AA3DCE50E42DBD8B85D7F9E5C4B /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CE2FE483BB49D74D31C30D070EAD084 /* GCM.swift */; }; + 6925BC821E2930CAA127E4E58A58BB08 /* Starscream-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D06AD21D3073989CE862153DC618BE0 /* Starscream-dummy.m */; }; + 699E4CCA8430D921830ED3BBFE9E8EEC /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73AAA65242BAC40B3416D49BC9F45603 /* CFB.swift */; }; + 69C594CAE30B26F166809C3E9D3B3F6A /* Requestable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25E38D9DA891AB5CFCCA51AFB2DAA0D5 /* Requestable.swift */; }; + 6A3A6B576FAEA3141C3F6E87BBFD0FCD /* GetBoardRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FE3B6F59D1130F1871D5D2FBC94BE05 /* GetBoardRequest.swift */; }; + 6B4197D2E87B5B445A7AAF18DBA22509 /* SatisfyAnyOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADD058F7306C4ACDB43F7873FE4E8173 /* SatisfyAnyOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 6B5F720EAE5B5B4817F56EF2864D74E9 /* Board.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AE10CC1A15B32A67BE67A54675B3422 /* Board.swift */; }; + 6BD7F04AC8E15AC8973BEAECAC872A2E /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 549B946663F83148E2033AFD48B9850A /* MD5.swift */; }; + 6BF9A1EFE96C6188CBC20B5D592BBCFE /* ProductCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 738724FABA22EE1C8F5BBAF6F1C1FCA2 /* ProductCode.swift */; }; + 6C3DF1E909F9D461D8FF9466BAA46483 /* QuickSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F49FB6C48C713465C68CDA3A6C0827E /* QuickSpec.m */; }; + 6CEEAE540FC9EC080A2E1120610441FD /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77C16433315CEF65CA51D59ADA65C8AE /* HMAC.swift */; }; + 6ED749CAF781EDB557E30C69637DBC5F /* MatchError.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE4C7DCF28686F007156A10F7D9B593F /* MatchError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 6FC59CBB360B3EF8E45D151D945BCA54 /* mach_excServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 38E7EBD5B2BE8C0F133DFB3CC61E09CA /* mach_excServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6FE3B386F4AD5265A59A04AD551D0A18 /* String+C99ExtendedIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F28474B25D07BCBC62F2848BCCA554B /* String+C99ExtendedIdentifier.swift */; }; + 70C9DA49355CD208829199C4DD398BFE /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = E58C10224CA7BCB185CD2188F420500F /* SHA2.swift */; }; + 7350E2E4F7B5447C5EAA43C198E5F412 /* Position.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3D165F8B24E9476B12F1D89C1685062 /* Position.swift */; }; + 735886F64401AC98E17FBB936D6DD21C /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58CF0EF6399D0D2878244DA85265C4B1 /* SecureBytes.swift */; }; + 735AA377A02CF6C41EE04B76DEBB9F01 /* ChildOrderType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D727571FFF5F1922B5028D0A3D7260D /* ChildOrderType.swift */; }; + 7403EBDEC592DF5F4AA19EEFED35AC5A /* BeIdenticalTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CE6075B6D821289D1D83F4A59062FDB /* BeIdenticalTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 74C4A30A55AC7DB057CE14BCA15299C4 /* NMBStringify.h in Headers */ = {isa = PBXBuildFile; fileRef = 627CE7A70A40151AAFA6F224B0D85D2F /* NMBStringify.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7579DFB18C9375168EBFA3DF97CCA158 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC13C658D4A8141D3B25E9E0AB6E61A9 /* PKCS5.swift */; }; + 7607162B63CD11A95BD7596E785C11E6 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BC020C62D071DCF40364050B46D6B73 /* String+Extension.swift */; }; + 779FBCFE2D103B14B40B8DF6CB4CC781 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9823575D449D37BC0B8B574D31C134C2 /* RandomBytesSequence.swift */; }; + 77A37AFFA15F14849BE2E781185E5EAA /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20CB445D90A1CE2B7B87E1F3DCF4A1B /* UInt128.swift */; }; + 77EE3C9CB05F3195BED530C9FB599481 /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = A916FD404CDE50811EE9653EC61C424C /* BatchedCollection.swift */; }; + 784DC54B4603FF9B368122FCD7D1D897 /* ElementsEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0789028A11E6622D4DB87CB746CE613 /* ElementsEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 784F2DE40F2D01222561BB0FF5071E66 /* World+DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D13F8B80ABB62A88C4C45951F39D7B2 /* World+DSL.swift */; }; + 7A6B9B9ABAAA313AA3410E63165AAEFA /* Closures.swift in Sources */ = {isa = PBXBuildFile; fileRef = A698DCEB740ADF084D5D8FC98B3B8FB6 /* Closures.swift */; }; + 7AA21A2A7686580BEF335C12D3D7AB81 /* Await.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54DA8B2621A97BBB01C0836AF48306B7 /* Await.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 7AF9349379C8CACA092674BB7714F413 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77578112849C88F960CEA266A0CDD89F /* Blowfish+Foundation.swift */; }; + 7E0FB14FCEC8C1438CAD274DD6E785E1 /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9C025A41FBFAC2C4BCBDE65E86BE4C /* HKDF.swift */; }; + 7E7C91A91D26693BDCE7085B08CC3DA0 /* PostIFDOCOOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5949615735F5351FB267838C19CE5B2 /* PostIFDOCOOrderRequest.swift */; }; + 7F81290E4FCD14135D45DD2277FF7230 /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F63AD720278F23BF25801E8FAB81620 /* CompactMap.swift */; }; + 7F9E22FD3BB649B4C6428669371D16E3 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 794C8FBA8EA18DC57518650760C7C007 /* DSL.swift */; }; + 7FA411A969F1D1A7AD517C3E7B739AA6 /* DSL+Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FCAF3E5C8F65B07C24B60368FA28D0 /* DSL+Wait.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 817BF6BD4311D438C12FBC863C3962AB /* PositionSide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71D8377DB4EF9F7B3005E9CD874741A7 /* PositionSide.swift */; }; + 81F6085577F87350CCB9CFE10EA79A16 /* XCTestSuite+QuickTestSuiteBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 169981B6084F005D82ABB10A8755ECE5 /* XCTestSuite+QuickTestSuiteBuilder.m */; }; + 82607C525BEE07050E18F0BFCF0AEA52 /* DSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE6D3FAA0247F981FCEA2BB2912393B /* DSL.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 82969FFDB1B7AD0E2950472E70810B3A /* ParentOrders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CE6CDF71FDD7702607BFA2126D36F04 /* ParentOrders.swift */; }; + 8320D7F2EA107F0B33ADFD9E8373BEC8 /* Starscream.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 142D84CD9C23AF9389F2C909937804FF /* Starscream.framework */; }; + 836B968E1EA15BA9CB9B2705638A2679 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8136C456D19087530C1A6BE21FE8679 /* Foundation.framework */; }; + 83E49C3B8280FEEAE4F2A81F64A549B4 /* Match.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1022D98DFF045AF66B2C56F57AC34A3E /* Match.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 8413172B4FBB9E364EC42674F13A9FE3 /* BeLogical.swift in Sources */ = {isa = PBXBuildFile; fileRef = E213C9EE4915DE31A7E35044962948C9 /* BeLogical.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 8530D21CDF96EF5F8687E066BEB0D43C /* ConditionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 609ED20F3B89E6FE73DF109761C004F7 /* ConditionType.swift */; }; + 858178A93AA2C1A235C65C63CEDB075E /* TradeHealth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99941C6623CE4C5FF16C8F9FA51120FD /* TradeHealth.swift */; }; + 863E2B9BCA850F60F2043DB536B339DE /* ApiSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7D2D20B67137E200CADF268FC5DDBFC /* ApiSession.swift */; }; + 870471424FE3C6BA3E33C949BEF04D50 /* ToSucceed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0102A9D8C3B4EFDBF1E96AC157FBABB5 /* ToSucceed.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 8784230CBBBC7267F29611E0E1DC961E /* BeAKindOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = B988E2F832571736DAD041BDFF8E9E20 /* BeAKindOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 888B88EF8BDEBCB1702F8BB33BCBC3B2 /* CwlCatchException.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA161A4578402836E01E0B98DDA2EFB /* CwlCatchException.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 89A206D51752309E13BD5C427C35A090 /* BeLessThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17B675A7AF8070B86B26D986C2FEA251 /* BeLessThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 89D30C28183DF9BFC6C940211DA889D7 /* BeLessThanOrEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = 109AD289E737622F73435A0064832144 /* BeLessThanOrEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 8AC3C8F230247287F2BBFB1C7651FDD3 /* GetDepositCoinHistoriesRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72A18C9900E2EB1DDB96E6F21C2F895A /* GetDepositCoinHistoriesRequest.swift */; }; + 8B6BF3261CD6188D9D508F8DE26BF471 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A93CAA2FEE946AC687524CD556952A9 /* Array+Extension.swift */; }; + 8BFF04442A40B87380A8F7A3735869D1 /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD6BC8EE51695C9943882CF7D378652B /* PCBC.swift */; }; + 8CBB08ABFBFF0005D65AABD242C478BB /* ExampleHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = B968F9965415FC24B3D83837D6DB6C7C /* ExampleHooks.swift */; }; + 8EA18644ABC296D69E4F5D9AFFAB43C0 /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7CAD0D81C2F8895402078A8A5002CA2 /* CMAC.swift */; }; + 8F1210C1F586013641FE4544C2081C5F /* Behavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 123BD09E5B437D7DBBD10DC57F4CECAF /* Behavior.swift */; }; + 8F33DAB50F7D5A01F0F90248CBA942BE /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D9B27609C355C584FAB0379E9BF075E /* Collection+Extension.swift */; }; + 8F5F91C969B41E56022AC3F83A669FA7 /* GetHelthStateRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3903978D11399EBCFCD29AE7CCCB0EA /* GetHelthStateRequest.swift */; }; + 8FCDD99ED8F64891CFE6C472C1FB641A /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6857D4BD3FFC85E4CF410B113EF7B16 /* DigestType.swift */; }; + 9001E9E62B78B0F529DE51B4C8690B1A /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1921F062A7203FDDB22657598CEC3F1 /* AES.swift */; }; + 90DE65DB13EDB7D575A1F8056EC04940 /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BBF056B75D91C543DC752203D0358A9 /* Updatable.swift */; }; + 91227FC8663612EAA927C5E4490B2961 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26E699203DEBAC6FEA976440CC5643FE /* Cryptors.swift */; }; + 91C3469261619928F9CA63F2EC81FD24 /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472E3A158793A48EF722858C51EBD007 /* AEADChaCha20Poly1305.swift */; }; + 921B5A3C1A4B6E7ADB384A1BA7EBD4BC /* ChildOrderResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D886695B6A65B41E390A76446DA489E /* ChildOrderResult.swift */; }; + 923604A515D5D85BC6A082BAA4B69CF7 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C9AB6EDFF986B1B4F2298429AE992C6 /* UInt64+Extension.swift */; }; + 92C676FAFB9906CF1BA11A96DA111315 /* SwiftFlyer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 133F1742FE5920764C1B0586F9D359D3 /* SwiftFlyer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9369F7B56B997D7CB6D5451AFAA0C4F4 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9196845427029F01A9731DF8CE7D9874 /* OFB.swift */; }; + 94C84E6DFA71C70DF521E9D995C1505F /* BeVoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB1CD7FFCCD362C860DB16D8B95EF5C /* BeVoid.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 966FBB84C847F2BCAED02AA147A2CFAB /* MatcherFunc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7775BB87B934541154ED731580E803BB /* MatcherFunc.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 970AB0DCDC59EA0530415233ABDB6E75 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2220D9B1358AD3F9D8FEEE272336ED31 /* BlockMode.swift */; }; + 9A591561CF28EE328D0A50B30EDC97C6 /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83EBCE7A7AB3FBAEFC54F591640098F2 /* HMAC+Foundation.swift */; }; + 9AEE810721C0D1796B1795F84D6166BE /* TimeInForce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25900A67B148B732562B3ADEFA63A632 /* TimeInForce.swift */; }; + 9C3F7FC69ADC5BFCE26D5BCB0B9234C6 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73D31472401D9E31DA01FAABF8384A12 /* Errors.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 9C5371C8EABA2C61D0B420980985B02F /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = F13DB55C51B6647EC01C8D920E30DB43 /* Rabbit.swift */; }; + 9DB1E08337AC3FF955539F4E0D1074D2 /* PostNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F1F12119F02F7A05C0CF77B74B3BC6 /* PostNotification.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 9DF9D8E2D790A92D25687C1AF08D8B99 /* TradeState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FB09AEDA311BB869E2F6E67B8714D39 /* TradeState.swift */; }; + 9E53964BE903BAB52DF26979589AC6BE /* Balance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 863F5BF984F12C832D817FF17865CECD /* Balance.swift */; }; + 9EEF9E84E580920E11E06170D25F65C3 /* DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 712C5F8A89367753D03F8FAA13840590 /* DSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F1B4FD18F8F51787CA48A83F69CF485 /* Callsite.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE550273AB8A5183DA39D5C400BEABA8 /* Callsite.swift */; }; + A1ACF1FFDBB6AC9173E218214AEE082F /* QuickTestSuite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FE417F490EA088BD7029C87B1736D02 /* QuickTestSuite.swift */; }; + A1D96A82A8711832664F7303AEFD4359 /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2E9E0556B19ACC35F8AA53460729B95 /* Bit.swift */; }; + A268EDF51C73BE404B028961BC0920B5 /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2623ABF5F41AA2E0ACC5A9951AAF86E /* StreamEncryptor.swift */; }; + A294002ED12715D9E94B17292394BC63 /* Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26ECC9E6D3AA6FE1930C48B2D10BD99F /* Contract.swift */; }; + A36E5FDEB55E4DD907FAC7B7045DF833 /* Pods-SwiftFlyer_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E8249D2F6921B3FF8CD1C333481DEE /* Pods-SwiftFlyer_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A3B15075CC22996E65114FC3B6D0D344 /* QuickSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = A15406387201BBBCDB2516493F2B8040 /* QuickSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A4B6197170839BA97DE105AA9D1FAD7D /* NimbleEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22F88E9A9017EF1EA6F20D5669D25AB6 /* NimbleEnvironment.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A51570857887E8E40B39F91C35358E2D /* Predicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77AD36D80944262BAF38A8AF1A043029 /* Predicate.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A7253CA8AD620F9A03BFBFCA9A43D5DE /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9C7E539208662B36AEECFC555CF60F3 /* Digest.swift */; }; + A74CEEC58BDEB1F9A37685FCA3376746 /* BeGreaterThanOrEqualTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52981CF38D84DD3A0D1DFCC1EFA1D44C /* BeGreaterThanOrEqualTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A7A92B2F2D0C5B70A627AB08BC3FC35C /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 495DCF4926FA59DEEBC4DF6E3E2A7F95 /* String+FoundationExtension.swift */; }; + A8609EBDD85CED0BBE7856046E408497 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C23A6152EF9F90DB70CA7A20DB576D68 /* Array+Foundation.swift */; }; + A9BFE60E348303E69CA8E16BDC6CF839 /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E04555B664B2242A747946EC76A0B /* Rabbit+Foundation.swift */; }; + A9F93A9C40771906414564A30333FDB9 /* AdapterProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F0947818EB04165531FEC18C5344B65 /* AdapterProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + AB871C0DB286B80FAD59A9FD2B064BDC /* PostCancelParentOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E06BA3A98F3418D053964B1C36BAEAE /* PostCancelParentOrderRequest.swift */; }; + AC26B8C4461E89CC285F1D3273A659BC /* ThrowAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA0279EDD7573EF94A3AA65054401E18 /* ThrowAssertion.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + ACC66FF9B02440C92389075D808DF780 /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0577783EDB0B9DDBA0BC953973B44AED /* StreamDecryptor.swift */; }; + AD375A1C860232E8EFA585A9A5DD10F3 /* Ticker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F60C743D46623439A89286D409C71F5 /* Ticker.swift */; }; + AEB09DBB1CB82A125B0786EBF65A29A3 /* ErrorUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5508B83DA6B2818055D48EB1430C209E /* ErrorUtility.swift */; }; + AEC9C04CC65CAA2BEEADDBA47FF5A9A7 /* DictionaryExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4315064D695DD1D6EB4E4B4EBF5EE896 /* DictionaryExtensions.swift */; }; + B02180E1B80F8C4A2634375A05B519F4 /* MessageID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97088E22F6BC1BB143AB0D5EEF34032A /* MessageID.swift */; }; + B0531FAA2BC28769A3E703F059143136 /* HealthState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86560D75522BCB3F9C3C5046BD5743A9 /* HealthState.swift */; }; + B156EFD591710C8AE8412729F733248A /* GetCollateralRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E1C30EA120D5E32B13C1C7F57B54764 /* GetCollateralRequest.swift */; }; + B29B61F898D52676014C24DBCB12B3A1 /* QuickConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = FCE5D3E74C29F350D6DF87703BC11BB0 /* QuickConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B66B9C1E24E72F89FE3E330BEC80A1FA /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = C184EFF619C48EED0A6BE9BB51DD2895 /* ChaCha20.swift */; }; + B7D907F02C3FC408DE7FA69671D82BB9 /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 157D2A2754BFCD6142DB5B00CD947A7A /* CTR.swift */; }; + B836AB3DB63144FE21C715D2944AEA07 /* NMBExceptionCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 182E99783AAE8EEECAE2FDF560BA589B /* NMBExceptionCapture.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + B9A882A071EF4D8A2814AE3CD54FB3C4 /* SwiftFlyer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B61B97165870CF6476F2E8A240AD8A88 /* SwiftFlyer-dummy.m */; }; + BBDC438AA87C72F2B4D77CD54FAF4607 /* CryptoSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EE2CDAE1A537AE9C6EE31783412EB8B9 /* CryptoSwift-dummy.m */; }; + BEBF6FF5D94450F877C329D61E40606D /* GetBoarderStatusRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54F45B1E7C0F5CEFC2904D841CC64CDE /* GetBoarderStatusRequest.swift */; }; + C0367D0510CE9E409A33E9B356422017 /* Nimble-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AA1B2871D31388CA6FF811BA9C5D737C /* Nimble-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C0CCD572ED34493C49C1F5F82E775D12 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53382BF14EF7913AB1C8C70BDB4E4A50 /* Generics.swift */; }; + C34D6CA7D9C853E4434D6ACCE5D1B1B0 /* Pods-SwiftFlyer_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F76EAFFBCA9237B801C991C329AD231B /* Pods-SwiftFlyer_Example-dummy.m */; }; + C3BE54C5690E5C78584A4986D81D7DE3 /* NSBundle+CurrentTestBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C77410623477C251573A1A94CA9607D0 /* NSBundle+CurrentTestBundle.swift */; }; + C44A421B69CA2AE5D0C42B299CFB04FE /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A039B8B9DF57F3234CE5DFFC0DC656E /* BlockDecryptor.swift */; }; + C56CE025F6E708D6F5F11DB4EA23728C /* MatcherProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = B259EC6DCA52512FFC01E52EE545A125 /* MatcherProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + C5808A46FC4C07F235753E2AE4A7511A /* mach_excServer.c in Sources */ = {isa = PBXBuildFile; fileRef = 19A179F54D1EDC5E7240C659FD6206C0 /* mach_excServer.c */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + C6F7946D47A397A47941EF7C09B27A26 /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFF5006171651975F3560EDCB1F2A5E5 /* BlockModeOptions.swift */; }; + C7B9D1E45DDA944F4C7E372D3A20999C /* Stringers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38D4E50A26612149C728C5C60C70B807 /* Stringers.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + C8D243ADE9732711FFCDB903E819993F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8136C456D19087530C1A6BE21FE8679 /* Foundation.framework */; }; + CCB1AB23B62DB3B6BCB5F4AA5496D8BA /* Pods-SwiftFlyer_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 78C60B1E627FC1D3E4695E61C57B4F34 /* Pods-SwiftFlyer_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CCDE3AA61981FE0BDFDD193F5D53AAFF /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30AF59990BAAD533A992DCED888DF88E /* WebSocket.swift */; }; + CD6C7F2EE16C6C68F213BD59297E4807 /* GetPositionsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8A7E428214369BBF1C7AF7AB3F2A0F1 /* GetPositionsRequest.swift */; }; + CDC8FEA31B2425EBB8C88A1FB210065F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8136C456D19087530C1A6BE21FE8679 /* Foundation.framework */; }; + CDE8A73C13E5926425F981C6C44BE256 /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 354DC3963D793362E5C7BBFDF2643C40 /* PBKDF2.swift */; }; + D0117BC10CB96CA7F32536A69C085C49 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850EA9D8DFED8842C9B7F249A576C3E8 /* Expression.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D0AD2F40B7AD04EB9B7841631009FC75 /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8163530C6FFA4B57A5A60FC0204B3DE9 /* SHA1.swift */; }; + D149EDAC8F492A125F09C5F11B5171B4 /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76ADDCABCD37D59C89803FEAFDB8DFD0 /* CBCMAC.swift */; }; + D1A4A1DD617C96759F7B2AB2A6AEB0E1 /* NimbleXCTestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B27F0F9EE7EB97D422F0CA13221CA9 /* NimbleXCTestHandler.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D1FD91581D2DC0A42C9134862F569C83 /* RaisesException.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33EEBE7D0ACAE446F9138D6F0CF35F3 /* RaisesException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D2BF6DE7583A39D79E85CC828A93673A /* PostIFDOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DCDC81C03BB6A05BFE219F531046C79 /* PostIFDOrderRequest.swift */; }; + D3A571F180E2A2D8A1248890490C9E36 /* BeEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1A81A55B269AC94FB58314ED668BEA /* BeEmpty.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D3E9072710D911A06B09CC0200689C0C /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34992E093ECD84F9F2DC95F3B06DB05E /* PKCS7.swift */; }; + D4FF0990DB524278EB20490C5311E19B /* AllPass.swift in Sources */ = {isa = PBXBuildFile; fileRef = C60E48E18E4929062AD9F5662B9C9DFB /* AllPass.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D69A342E85C104FE740D399FE3B15140 /* Pods-SwiftFlyer_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B51FD0E3E28BEE9C29A3FB4E0F30C98 /* Pods-SwiftFlyer_Tests-dummy.m */; }; + D6DCFAA7424401BFB0AE68CDF1F6E79A /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351CE574ACB9073427CD6CCC72220A46 /* UInt32+Extension.swift */; }; + D764273D88C7F4927B9F7ECD4C4BE059 /* Starscream-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A81FFD36A9EB1680595AC0C102C89E9 /* Starscream-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D845D55E7CD75BA58F753A5AA454E422 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA419AD0DBF06751ECB62F90BDFF0575 /* Async.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D9A6956FCE1A11FF51DA52052ACEB692 /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4CF6D4CBAC93A42A3CDBBBD0026DEB3 /* CryptoSwift.framework */; }; + D9FEB1F14A7C841D4BE3109A0F193843 /* CwlBadInstructionException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BC0EC7D8746D908EC251A005EB51E42 /* CwlBadInstructionException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + DA28D44BB7C7CE1CC8F91BEE1E89C610 /* BeNil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 051AE751702F58764C983A327CEBD2FC /* BeNil.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + DBD13E8B8C4B70C32C74A0CE015F8BC2 /* Address.swift in Sources */ = {isa = PBXBuildFile; fileRef = F07A2C278EE3721ACF4162639EF60321 /* Address.swift */; }; + DD498963FB9590B92A0375FBAF742E90 /* GetBankAccountsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7DF3B60E5478056479B0D25C86F8C93 /* GetBankAccountsRequest.swift */; }; + DE41036F5CDFE75D351DEAC46ECD9FA9 /* Nimble-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 58350A97336095194AF9041E7D5B655D /* Nimble-dummy.m */; }; + DE54DDE5C5B6283DE5ADBBDAA91ED589 /* EndWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56D98F35904BD94FEBD9F196E8EDD227 /* EndWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + DF50C201EB25B9BDDD6363698ADE639C /* HaveCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F6762FDCA8EFDE505740FE82E88426 /* HaveCount.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E1C5AE23F3288A2E8A13489165FD3FF2 /* CwlCatchException.h in Headers */ = {isa = PBXBuildFile; fileRef = C4989F68D229C2A28AD2BA03F3011FFF /* CwlCatchException.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E347B8513A5C7A369FD6E16428CCAD4A /* BoarderStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E511CFBFA9E7CEB2D0F4E6CB198E614 /* BoarderStatus.swift */; }; + E39FAF1E8808CC9194C1212DA8E9485C /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8872F55372175374BE2DD40D350B4E53 /* ZeroPadding.swift */; }; + E40A6E85823CE585BF269D1DF4EF5E04 /* ThrowError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58879B62F11B494C91C24ECA715E24FC /* ThrowError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E421CC9222B4DCD92124CA45FBA6A247 /* BeGreaterThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36582ECD297B1C877E9FAB032665D5AF /* BeGreaterThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E74095186BEDE49D6F714CE0BF7E62EF /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 346ED4D90963F002E6242D95BEEC6F4D /* Filter.swift */; }; + E74C63A506330D4E6E1DC8F3894BDC22 /* Expectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ACB9D139E3CA72B0F716655CEB04ECA /* Expectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E80F2F25B622EBC3F1CACD1AFD851A11 /* ExpectationMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D179D9F976E1CAB84091A2A6F4FFBAFC /* ExpectationMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E84A7469FFBC2A4433EA9B6C6028FE29 /* Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84610FB423F894B5F00FBA565E454D90 /* Compression.swift */; }; + E89B7BE619F5DE8FB41C3584731C4DC9 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD8860281A72A04E815B6EBBDBE7764 /* Result.swift */; }; + E933B6A54C7C36235FD06CE312641A95 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF59FCA897B6F6EDBDCB770459B434A1 /* Data+Extension.swift */; }; + EB062EA45D4A3859C6CEA85DAC1ED237 /* AssertionDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2BD13D3767CAD764BA2323E0733DAD1 /* AssertionDispatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + EBA0189514ACFE33EE36B7A640817E20 /* OnlyStatusCodeResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E85F07008F68FD5E69E28F44977BB3E /* OnlyStatusCodeResponse.swift */; }; + EC903702C9260F16537907797176294E /* ParentOrderDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CC533BB81E4D746E6FDEBC8A6039FDE /* ParentOrderDetail.swift */; }; + EE3531BF82501F5615F8E1FC689522B8 /* GetPermissionsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1699D91AEACA3A3F7EDAB70146BB9834 /* GetPermissionsRequest.swift */; }; + EEEF5A10E9D35B99D514BD28CB227EF8 /* DepositHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B7C4F13055FB4E73ACEAFBB240002C5 /* DepositHistory.swift */; }; + EF87A58C042C958EDF825B99B4B9136E /* GetAddressRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C35EF2BB0A76EBEEACDE66D49A938F3D /* GetAddressRequest.swift */; }; + F0872C443D5A26B2372FF3811D567080 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A78D2F2D560F6373A782546C1F8CCDB /* PKCS7Padding.swift */; }; + F114F1AC76F155BA4169575CD8A5C59C /* PostOCOOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA883FAD1BA3DD66F0B85C26B790AC63 /* PostOCOOrderRequest.swift */; }; + F2706BB0779219A6C2CDF88020DAAF45 /* GetCollateralHistoriesRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C5B1A301D14AC3374A7C28FA4BD3B2 /* GetCollateralHistoriesRequest.swift */; }; + F27443AF9CD27425DDD2BBA56A50B2DA /* GetWithdrawsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9F40A3A933BC6FB94A0F16522ADBB5C /* GetWithdrawsRequest.swift */; }; + F2D92B4B4E2547312AEA7CFC4681E4D6 /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DB1EBE4EA2A97BC499B5175EF2E068A /* Padding.swift */; }; + F30D7226A8A1DC3593DA0183D8ED1482 /* Permission.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CF6801C7BD14BCC8F85B3F3F9E48E2B /* Permission.swift */; }; + F333FFAB844BFF1D440EC864F64610DA /* QuickSpecBase.m in Sources */ = {isa = PBXBuildFile; fileRef = A16A8C4E31C49EF87343A26663AC6BEB /* QuickSpecBase.m */; }; + F5090F52CF4E6B768D0FB5F676B61AE9 /* Functional.swift in Sources */ = {isa = PBXBuildFile; fileRef = F35CE76FC5D66F6A0BBB1D8E065458D7 /* Functional.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + F50D54BA46385395A9D68EA8C98C4D6B /* ResponseError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 285127DE18C1C6DBB56A857BB9A4D15C /* ResponseError.swift */; }; + F596D6BBE5BAD012376F7CB73D44CE6B /* BeCloseTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4CFEA28C82DD33CC377CF894B5EAE46 /* BeCloseTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + F7F446C5618E7A154613A97DFC2125BB /* SSLSecurity.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA362A7D7A95AFA475254ADA5AF476A /* SSLSecurity.swift */; }; + F814F26F83E78B64E7D9AFEE0B519E02 /* SSLClientCertificate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08E04C4ED9FD2B230C450FA14E7EAC22 /* SSLClientCertificate.swift */; }; + F817ECF6BD9441C291BC5738CFF5A9E7 /* GetParentOrderDetailRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BFFD594F02008375A7CDBB651356C28 /* GetParentOrderDetailRequest.swift */; }; + F819EC6EA7D2DA55E19AF50DBB862F0A /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC8A7557CFC66E4DAAE858F38127A7A8 /* AES.Cryptors.swift */; }; + F84B5879379571438646CD96613E602F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8136C456D19087530C1A6BE21FE8679 /* Foundation.framework */; }; + F9E0E32F37DFB75A0186336F56AB822E /* ExampleMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3B5FA0F9E252ACEECA7D512E686BF50 /* ExampleMetadata.swift */; }; + FC2EA93D2A36289F6044019D9BDE144A /* QuickConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = BA81AF8E55D0504F18C6A1E5E0DB5D0F /* QuickConfiguration.m */; }; + FD84F5688811D2161BA33CF3C8ED6B97 /* ParentOrderType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40AA0884EE07579BED75335B60047277 /* ParentOrderType.swift */; }; + FE3309618B9FC61080B47C6F10085787 /* RealTimeAPIDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B52D34DD32780BDF9A735FCD80D45C /* RealTimeAPIDelegate.swift */; }; + FE89145E028F97514845BBBCDFCF05ED /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D826E11A876CD081671A7410D6A6B07 /* BlockCipher.swift */; }; + FE8984817A30EFC788C3845D96521C8D /* ExampleGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522260696BCADBF5D49D193661D30A08 /* ExampleGroup.swift */; }; + FF25F43F82015EF1F2DBC6B675BB8A64 /* PostChildOrderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83D08B4E69925700C211136E986004CC /* PostChildOrderRequest.swift */; }; + FFC90D19D852493F47D75441DDE2D854 /* Executions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCD6F66B2F0C01448198ABBC2B51763 /* Executions.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0CC2D3C8F5E920F49B8949F7761D6F7E /* PBXContainerItemProxy */ = { + 0C7D352AB6A09ACA74909ED87C70FF6D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = DE16D66575B4E29D54F3F5DB5CD606FB; - remoteInfo = CryptoSwift; + remoteGlobalIDString = 04618ADD15BA1B3D67AF8D975DA34BAD; + remoteInfo = SwiftFlyer; }; - 20502AC4B5D5FDE8F24E4251E92370F8 /* PBXContainerItemProxy */ = { + 0CD3D0491DD1B74BE6C9719095373735 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = DE16D66575B4E29D54F3F5DB5CD606FB; - remoteInfo = CryptoSwift; + remoteGlobalIDString = F554EA343D656E7FB0C1ACC045EB2666; + remoteInfo = Nimble; }; - 59471C00B46EA9AA9A2214696E9CD673 /* PBXContainerItemProxy */ = { + 1D0849C4DAE3B03ABE3C14491C8F4333 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = FFB534F916A11147DC3182FA60E61848; - remoteInfo = SwiftFlyer; + remoteGlobalIDString = 4199AFA0D6B764FC01BD5903BE7D1CAF; + remoteInfo = CryptoSwift; }; - 595B26BECAF430532EEB653567FE2095 /* PBXContainerItemProxy */ = { + 318281DB9F74B01192A0CDF845BE1D53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9B7B83B589D172B9D0A1450AFDCC891A; + remoteGlobalIDString = AED2DD42FFC444090BD468B8C149767F; remoteInfo = Starscream; }; - 64F463544CD53AF421041FD7D7CCCFAD /* PBXContainerItemProxy */ = { + AF76FD70BDDBE96ADA9634EBC00DDCB1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = DD7C8BF89FE8053D0A2A2D88BB49CF07; - remoteInfo = Nimble; + remoteGlobalIDString = 4529B069CB2A703C12A29AC9E4ADDE25; + remoteInfo = "Pods-SwiftFlyer_Example"; }; - 911C5134994544BBF7464574A5C4FF64 /* PBXContainerItemProxy */ = { + DAD202463CF77C19BCFF2888BB5483A8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = E42177C1A5BF913DEA219A89612113C4; + remoteGlobalIDString = 917206ED3ED92620C4E47F2A12964819; remoteInfo = Quick; }; - C47EFAFF59FDB54B29D4537C32819DE0 /* PBXContainerItemProxy */ = { + ED5EEAD7F8BBE80BCA8CA10086200771 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9B7B83B589D172B9D0A1450AFDCC891A; + remoteGlobalIDString = AED2DD42FFC444090BD468B8C149767F; remoteInfo = Starscream; }; + F8F17D7D0A7489E3E2CA8CC0882F1198 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4199AFA0D6B764FC01BD5903BE7D1CAF; + remoteInfo = CryptoSwift; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00153D971D5FACFAABDC1879F65DC047 /* CoinHistory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CoinHistory.swift; sourceTree = ""; }; - 0034136A9E6A22480B68EB52D55C2D5B /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; - 007AC25EC7F97B2F1D76018B5D48808C /* Nimble-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Nimble-dummy.m"; sourceTree = ""; }; - 00DC53EDBF334AC456D9DF763ED9977B /* NSBundle+CurrentTestBundle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSBundle+CurrentTestBundle.swift"; path = "Sources/Quick/NSBundle+CurrentTestBundle.swift"; sourceTree = ""; }; - 01093B9C30957B578E271CB925081125 /* QuickTestSuite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickTestSuite.swift; path = Sources/Quick/QuickTestSuite.swift; sourceTree = ""; }; - 02CADE1364ED6D24DB4644A7515397A5 /* MatcherProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherProtocols.swift; path = Sources/Nimble/Matchers/MatcherProtocols.swift; sourceTree = ""; }; - 0523B4ACC00736D8C5AEB2952E11B21C /* Pods-SwiftFlyer_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftFlyer_Tests-resources.sh"; sourceTree = ""; }; - 05FF898783293B967DB07AA63550434A /* GetPermissionsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetPermissionsRequest.swift; sourceTree = ""; }; - 062733E497942FD42CE25439910D4D18 /* MatchError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatchError.swift; path = Sources/Nimble/Matchers/MatchError.swift; sourceTree = ""; }; - 063BCDD4169161F5F96E6C40034DC6F9 /* ErrorUtility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorUtility.swift; path = Sources/Quick/ErrorUtility.swift; sourceTree = ""; }; - 07CA4D9D12A0D107A7AF17D735F2A16E /* Equal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Equal.swift; path = Sources/Nimble/Matchers/Equal.swift; sourceTree = ""; }; - 07DAC8F6AD702831D9B74733DE7EB441 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 08815BCA07F1BE4E3143D29A5F614834 /* QuickConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickConfiguration.m; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.m; sourceTree = ""; }; - 0A1DCFD9BB46A645217E74461B6A5334 /* Stringers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stringers.swift; path = Sources/Nimble/Utils/Stringers.swift; sourceTree = ""; }; - 0A20EF9518D77A85F2F274F6E0C9E0D3 /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; - 0ACB4E89C4664C9281321BD0FF34BACF /* CwlCatchException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlCatchException.h; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/include/CwlCatchException.h; sourceTree = ""; }; - 0AF909CD48FF39F5FE98806ACFBFC480 /* Address.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Address.swift; sourceTree = ""; }; - 0B239461257B026CF33394A7FCEB5609 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Quick/DSL/DSL.swift; sourceTree = ""; }; - 0C0D5B76E79990C9E507C53283809FEF /* CwlCatchException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchException.swift; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchException/CwlCatchException.swift; sourceTree = ""; }; - 0C748A87C709650690438EB092E0D77E /* PostNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PostNotification.swift; path = Sources/Nimble/Matchers/PostNotification.swift; sourceTree = ""; }; - 0D226DA5DD26B6411FBDED6647FEE43D /* GetAddressRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetAddressRequest.swift; sourceTree = ""; }; - 0D560E57E886EBD17524397221B6BD49 /* Nimble.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Nimble.framework; path = Nimble.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 11178B6C610082D4FBA6B5B3B6014294 /* TradingCommission.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TradingCommission.swift; sourceTree = ""; }; - 11C368A1F40F492046575302829D2791 /* CwlMachBadInstructionHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlMachBadInstructionHandler.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/include/CwlMachBadInstructionHandler.h; sourceTree = ""; }; - 123B73C8B3B602E16856646D034D4C9E /* NMBExceptionCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBExceptionCapture.h; path = Sources/NimbleObjectiveC/NMBExceptionCapture.h; sourceTree = ""; }; - 13AD6068B0131C0832F0EE57911B8DBE /* CryptoSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = CryptoSwift.modulemap; sourceTree = ""; }; - 13C488195907024275FBF6DC742B8B9E /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; - 14630064AC3D9D8D2A9CE0EC7ECC8CB3 /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; - 14B475B40169DE9CE7715E5F5442F5BF /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Nimble/DSL.swift; sourceTree = ""; }; - 1504FAE7D605CB4AA22808A89F3AF443 /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; - 1519010BBB6481C9BC89D3ADC2089ABC /* Match.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Match.swift; path = Sources/Nimble/Matchers/Match.swift; sourceTree = ""; }; - 158E1903D9048581E4C1668F5F10DE3A /* Pods-SwiftFlyer_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftFlyer_Tests.release.xcconfig"; sourceTree = ""; }; - 17EB767AB31722BF344DB83859B0BBC7 /* BoarderStatus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BoarderStatus.swift; sourceTree = ""; }; - 197B6DC19EDB1F4927B0F09DB092998D /* SwiftFlyer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftFlyer-prefix.pch"; sourceTree = ""; }; - 19F13CCEC6F0017E2E6E6F22FA1A636A /* ChildOrderType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChildOrderType.swift; sourceTree = ""; }; - 1AF3B8AC56B5B19295D30C66376F80AA /* CwlMachBadInstructionHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlMachBadInstructionHandler.m; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/CwlMachBadInstructionHandler.m; sourceTree = ""; }; - 1BDEE817DA29A6BA5380A0DEA7A34AAE /* World.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = World.swift; path = Sources/Quick/World.swift; sourceTree = ""; }; - 1C8246A97BC2022A1BECD05848A28CB3 /* BankAccount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BankAccount.swift; sourceTree = ""; }; - 1D7632746416C18753BDE7F898AA97C4 /* GetPositionsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetPositionsRequest.swift; sourceTree = ""; }; - 1DC44215923F4F67E27E25E17972DEFE /* Contract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Contract.swift; sourceTree = ""; }; - 1E950BA61C11374D6DDE36896E65C855 /* NSString+C99ExtendedIdentifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSString+C99ExtendedIdentifier.swift"; path = "Sources/Quick/NSString+C99ExtendedIdentifier.swift"; sourceTree = ""; }; - 200ABE35E735A1F545CC9E49BA3CDFD3 /* QuickSpecBase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpecBase.m; path = Sources/QuickSpecBase/QuickSpecBase.m; sourceTree = ""; }; - 20831CC6ED81A2F1F0C95613DCCE9DC2 /* CollateralHistory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollateralHistory.swift; sourceTree = ""; }; - 2085696690F6D83BE71E968921DCAA8C /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; - 21CA327C897C4762BBDD6BEEF0567A0A /* SwiftFlyer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftFlyer-umbrella.h"; sourceTree = ""; }; - 220A361D08B03BECA0B3DB25AC225CBF /* GetChatsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetChatsRequest.swift; sourceTree = ""; }; - 237CB24140EEF9C3F88DFEC0190CF6CD /* Balance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Balance.swift; sourceTree = ""; }; - 24B70E22BC55CC9A3ABD3711C10BAE24 /* SwiftFlyer.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = SwiftFlyer.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 2517929D14088ED1ADB734A0A5FD7166 /* HaveCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HaveCount.swift; path = Sources/Nimble/Matchers/HaveCount.swift; sourceTree = ""; }; - 26804FD869DE809893059C66D67BA59A /* GetBankAccountsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetBankAccountsRequest.swift; sourceTree = ""; }; - 280000CA840ED5274F6D902D79AB2908 /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; - 287F7B0FD6720079EEDF973396B4BD62 /* CryptoSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-umbrella.h"; sourceTree = ""; }; - 28A031A9D440EC97C6E052319D5DE02A /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; - 29C3887672A9E09262ED423FD7921403 /* DSL+Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DSL+Wait.swift"; path = "Sources/Nimble/DSL+Wait.swift"; sourceTree = ""; }; - 2AFDED3B763760FFE482353FC02662B1 /* Pods-SwiftFlyer_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftFlyer_Example-acknowledgements.plist"; sourceTree = ""; }; - 2C60AC5F962F125AC799B07CB6425544 /* PostCancelParentOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostCancelParentOrderRequest.swift; sourceTree = ""; }; - 2D506075381B3AC8B7E45E31753DB50F /* Quick.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Quick.framework; path = Quick.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D789CE3A1F400F67E0551443F8CF69D /* Starscream-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-umbrella.h"; sourceTree = ""; }; - 2DA16F8FBF1C3F83E948E3DD6B278073 /* TradeHealth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TradeHealth.swift; sourceTree = ""; }; - 2DA6FD1EC71ACBFB41E7F4A5EF282B1B /* ChildOrderResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChildOrderResult.swift; sourceTree = ""; }; - 2EB413FDACEA5F4847C43055C86481FD /* AdapterProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AdapterProtocols.swift; path = Sources/Nimble/Adapters/AdapterProtocols.swift; sourceTree = ""; }; - 2F29E407248C26C3B1499FAFFD5711DB /* CwlCatchException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlCatchException.m; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/CwlCatchException.m; sourceTree = ""; }; - 2F2DA68782C5D85D789DCA083C66BBFA /* AssertionDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionDispatcher.swift; path = Sources/Nimble/Adapters/AssertionDispatcher.swift; sourceTree = ""; }; - 30708021707D8D1F66C9C784BFE010F9 /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; - 30CB2BFCBCC31A4C0AB82765A87C47C0 /* SuiteHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SuiteHooks.swift; path = Sources/Quick/Hooks/SuiteHooks.swift; sourceTree = ""; }; - 331C74C0C6BC45AC2EB3F10B6A839399 /* Pods-SwiftFlyer_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwiftFlyer_Example-acknowledgements.markdown"; sourceTree = ""; }; - 33B2272AFF792D38A7CA5D24456FF178 /* Permission.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Permission.swift; sourceTree = ""; }; - 33D678852DEB0A551C8BD94BB231A38F /* BeLessThanOrEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThanOrEqual.swift; path = Sources/Nimble/Matchers/BeLessThanOrEqual.swift; sourceTree = ""; }; - 33DF2DA396A134D4B008F7360DBE0AB0 /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; - 33F3FF8080ADFFDD2A774F6B5FBA7842 /* mach_excServer.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mach_excServer.c; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.c; sourceTree = ""; }; - 35C318E222E11AAE16624A514E997C35 /* ChildOrders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChildOrders.swift; sourceTree = ""; }; - 35D3E6A006C22996B02DEB1D294346BD /* Starscream-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-prefix.pch"; sourceTree = ""; }; - 3638A62C33808CFB4A209D791E8C56C8 /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; - 36561E695FECA0FA168B81EB40BA62E3 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; - 3689C145E9D8EF9C09D5D51B4BEBC6CC /* ExampleMetadata.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleMetadata.swift; path = Sources/Quick/ExampleMetadata.swift; sourceTree = ""; }; - 375461931C265979B41003773F22B5EF /* GetBalanceRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetBalanceRequest.swift; sourceTree = ""; }; - 37AD4E6137DEE6CD2DD6995B93BACC16 /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; - 37DE0FAF724685B6E286723DB23FEF6A /* NMBStringify.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBStringify.h; path = Sources/NimbleObjectiveC/NMBStringify.h; sourceTree = ""; }; - 399DEC50B1BDB78BEECC13C053AB2B07 /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; - 39BD1DE94489D5C17C3ABBDC27AAB750 /* RealTimeAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RealTimeAPI.swift; path = SwiftFlyer/RealTimeAPI.swift; sourceTree = ""; }; - 39DE65C12966B0FD303653D5A261E1C7 /* World+DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "World+DSL.swift"; path = "Sources/Quick/DSL/World+DSL.swift"; sourceTree = ""; }; - 3BF12D4A3D0FFB957C09BE974DB904DB /* Pods-SwiftFlyer_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftFlyer_Tests.debug.xcconfig"; sourceTree = ""; }; - 3C86CD1FF66440F6D30DC5789DA31D8C /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; - 3CDB38218CF227950282E87D4B2917B0 /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; - 3DB28CAB4519EE2422D5A68E6490A578 /* Collateral.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Collateral.swift; sourceTree = ""; }; - 3F058913292922092E3AA9F017D37320 /* Pods-SwiftFlyer_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwiftFlyer_Tests-umbrella.h"; sourceTree = ""; }; - 3F706C9330666ED55D166C44E1F960EA /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; - 3FAA8FF976692E8DA825AEBA233F46C9 /* ExpectationMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpectationMessage.swift; path = Sources/Nimble/ExpectationMessage.swift; sourceTree = ""; }; - 3FB0899BA7DF8C76F45C53AFA575A870 /* Executions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Executions.swift; sourceTree = ""; }; - 418257C181B68D78D4E4A973682182F3 /* BeLogical.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLogical.swift; path = Sources/Nimble/Matchers/BeLogical.swift; sourceTree = ""; }; - 41A7FFC0862DFF111C6E16525CD575B2 /* AsyncMatcherWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsyncMatcherWrapper.swift; path = Sources/Nimble/Matchers/AsyncMatcherWrapper.swift; sourceTree = ""; }; - 429787B2842AA3E4AFB4121135F8D2BB /* World+DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "World+DSL.h"; path = "Sources/QuickObjectiveC/DSL/World+DSL.h"; sourceTree = ""; }; - 42D90222C1A392330888028D1D608E2F /* GetCollateralRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetCollateralRequest.swift; sourceTree = ""; }; - 4327FDC2CC179D4EF8A37017FAA5C07F /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; - 4556FBD5ACE362D5F897D9D1E41373DB /* GetExecutionsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetExecutionsRequest.swift; sourceTree = ""; }; - 48732E3EC65A0F892A08AA9F702A08F3 /* RaisesException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RaisesException.swift; path = Sources/Nimble/Matchers/RaisesException.swift; sourceTree = ""; }; - 4A96FD818DEEC57CED732736498DD81A /* BeLessThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThan.swift; path = Sources/Nimble/Matchers/BeLessThan.swift; sourceTree = ""; }; - 4C174CA1E398A8E375FE6206A797B2D8 /* BeCloseTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeCloseTo.swift; path = Sources/Nimble/Matchers/BeCloseTo.swift; sourceTree = ""; }; - 4C8182D2F5C76DF1C6E6F8585449A919 /* ContainElementSatisfying.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainElementSatisfying.swift; path = Sources/Nimble/Matchers/ContainElementSatisfying.swift; sourceTree = ""; }; - 4D2143584112E82BB6CEC6FEA632A855 /* ExampleGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleGroup.swift; path = Sources/Quick/ExampleGroup.swift; sourceTree = ""; }; - 4DB0BEA06B37F88E05BA894799C86EAD /* Quick.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Quick.xcconfig; sourceTree = ""; }; - 4E0200637C4165361827DD48F82EF9DD /* SwiftFlyer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwiftFlyer.framework; path = SwiftFlyer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4EC49CDB444631EB696600B49A85AE12 /* GetMarketListRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetMarketListRequest.swift; sourceTree = ""; }; - 4F6730796CD866770103041DE209C7BD /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; - 4FAD198535E799218207A389C3DE40BA /* BeNil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeNil.swift; path = Sources/Nimble/Matchers/BeNil.swift; sourceTree = ""; }; - 50B955C3DE361687879B4C019C0C77CE /* Quick.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Quick.modulemap; sourceTree = ""; }; - 50EA1065DAADA5F7CCBDC30E80AFB46A /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; - 50F59B0A4C674621696A613E83F40E91 /* SourceLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceLocation.swift; path = Sources/Nimble/Utils/SourceLocation.swift; sourceTree = ""; }; - 5383C77B1234894BF675C78E6EEB7655 /* Starscream.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Starscream.modulemap; sourceTree = ""; }; - 5388B6FE95119E1E3F9E66C275F3135C /* HooksPhase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HooksPhase.swift; path = Sources/Quick/Hooks/HooksPhase.swift; sourceTree = ""; }; - 5469FEFC8B793EB3F4BE9A46F6497581 /* GetTraidingCommissionRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetTraidingCommissionRequest.swift; sourceTree = ""; }; - 54884609DFCF072081571F8CA059A48B /* RandomAccessCryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomAccessCryptor.swift; path = Sources/CryptoSwift/RandomAccessCryptor.swift; sourceTree = ""; }; - 554AD1E2AEADF50FE94549A182A0E1F0 /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; - 55D7FA756EE6023C7526FA4990B55339 /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; - 56ABBB1DEAD402F8FE78B8194E589354 /* QuickSelectedTestSuiteBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickSelectedTestSuiteBuilder.swift; path = Sources/Quick/QuickSelectedTestSuiteBuilder.swift; sourceTree = ""; }; - 58823C75D89498D7ADE576AA10FAED76 /* BitFlyer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BitFlyer.swift; path = SwiftFlyer/BitFlyer.swift; sourceTree = ""; }; - 58B87950A3EDF7865F55765846385D5D /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/Nimble/Utils/Async.swift; sourceTree = ""; }; - 591653C0AEB397E123DEA23B7EE82401 /* PositionSide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PositionSide.swift; sourceTree = ""; }; - 5E2C4C80D0DF04D4DBC7709BCFA49F07 /* Predicate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Predicate.swift; path = Sources/Nimble/Matchers/Predicate.swift; sourceTree = ""; }; - 5F68764C01C570921D5C1843F89670AC /* Market.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Market.swift; sourceTree = ""; }; - 608C50F080693DF8FC03943F919B1839 /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; - 6096AF0A0E42FA4AA497BED20BD987AA /* Nimble.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.xcconfig; sourceTree = ""; }; - 60E27C5178A9878D02B0857BC3AF5EF1 /* Order.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Order.swift; sourceTree = ""; }; - 60E5EB6920DE8F4A4D47E27ADC532AA1 /* PostSimpleOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostSimpleOrderRequest.swift; sourceTree = ""; }; - 60EFB71D71760A2E4558787CFB473EDA /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - 61FCA0AD0038E50AD5FF8B5CB37A8F47 /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; - 624B6231EAF162A30629F0FEF87D6132 /* CoinStatus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CoinStatus.swift; sourceTree = ""; }; - 625A301504D51F3D082C0E8581A4EDB1 /* BeIdenticalTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeIdenticalTo.swift; path = Sources/Nimble/Matchers/BeIdenticalTo.swift; sourceTree = ""; }; - 634A0577AC0FF68E262EA1387D1C8D69 /* TradeState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TradeState.swift; sourceTree = ""; }; - 63CAC5635C067BCE1FE8ABC806808151 /* Quick.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Quick.h; path = Sources/QuickObjectiveC/Quick.h; sourceTree = ""; }; - 644DFF6A1424A0B31B0BABD7F634B0FA /* World.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = World.h; path = Sources/QuickObjectiveC/World.h; sourceTree = ""; }; - 6483C8EF295B9CC2A68B29973344E1FC /* PostWithdrawRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostWithdrawRequest.swift; sourceTree = ""; }; - 651167F6BE05D4B88C7C49D19A86C530 /* Pods-SwiftFlyer_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-SwiftFlyer_Tests.modulemap"; sourceTree = ""; }; - 652A79F144ACE69B05876EC53B2A55F6 /* GetBoarderStatusRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetBoarderStatusRequest.swift; sourceTree = ""; }; - 6623082DE267833C3042657F9E3B5067 /* HealthState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = HealthState.swift; sourceTree = ""; }; - 666303DA16827C3B69B491CD916111BD /* QuickSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpec.m; path = Sources/QuickObjectiveC/QuickSpec.m; sourceTree = ""; }; - 699BFC7AD916218590D3AE966FD22624 /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; - 6ABB54CBA1D0A648690CCCF8CC6E2739 /* EndWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EndWith.swift; path = Sources/Nimble/Matchers/EndWith.swift; sourceTree = ""; }; - 6B0732AE4A94FEF52F44974813571DD9 /* Pods-SwiftFlyer_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwiftFlyer_Example-umbrella.h"; sourceTree = ""; }; - 6C46954F97B8BC75C90579C2082E33CF /* Pods-SwiftFlyer_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftFlyer_Example-frameworks.sh"; sourceTree = ""; }; - 6C4985A8A219EC10371CD5DCDBCAFACF /* Closures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Closures.swift; path = Sources/Quick/Hooks/Closures.swift; sourceTree = ""; }; - 6C6B3A7B3E29AC66291C8AC95F9F7C7C /* SSLSecurity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSLSecurity.swift; path = Sources/SSLSecurity.swift; sourceTree = ""; }; - 6CE8555E3C61304E9D748C84F0E88B38 /* ResponseError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseError.swift; path = SwiftFlyer/ResponseError.swift; sourceTree = ""; }; - 6E3A31994E027EB363665D207CC7B4E5 /* DepositHistory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DepositHistory.swift; sourceTree = ""; }; - 6EBC5E3DD8C5EB82B1F889BBBCF123E8 /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; - 708ABDEF11619B30B3E2EA76EF935164 /* MatcherFunc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherFunc.swift; path = Sources/Nimble/Matchers/MatcherFunc.swift; sourceTree = ""; }; - 70A88A8EA563B5543F4D5DA7A135834E /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; - 71EFA2EE86202CB315D55BA8E4960C5A /* NimbleXCTestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleXCTestHandler.swift; path = Sources/Nimble/Adapters/NimbleXCTestHandler.swift; sourceTree = ""; }; - 7339B714C89CE62ADBBA23EA9F564F45 /* CwlPreconditionTesting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlPreconditionTesting.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/Mach/CwlPreconditionTesting.h; sourceTree = ""; }; - 73885258C8929B52F09D05F60C0F4E66 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7478905852B997538A8241B69582D7F5 /* Functional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Functional.swift; path = Sources/Nimble/Utils/Functional.swift; sourceTree = ""; }; - 74A47753A8215E5E41750CA5BA67DBA0 /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; - 776A2FF4B89ECC18CA0248CEE77C194B /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; - 783CB9E0AC85FF8E302FE061743698DA /* ApiSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ApiSession.swift; path = SwiftFlyer/ApiSession.swift; sourceTree = ""; }; - 785658597026D735E61F8B565FC76036 /* QuickConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickConfiguration.h; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.h; sourceTree = ""; }; - 792D3CEBC116D60C0C87174C691FAC59 /* ToSucceed.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToSucceed.swift; path = Sources/Nimble/Matchers/ToSucceed.swift; sourceTree = ""; }; - 7A00E99494B081791142D76983076D36 /* Pods_SwiftFlyer_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_SwiftFlyer_Tests.framework; path = "Pods-SwiftFlyer_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 7AAD93420F5C8482D8E2C84438E5C829 /* FailureMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FailureMessage.swift; path = Sources/Nimble/FailureMessage.swift; sourceTree = ""; }; - 7AD5C0DF046BD7C9B32EAA18DDFA06A7 /* GetBoardRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetBoardRequest.swift; sourceTree = ""; }; - 7C277A919C0E34A4BCA053A0A1B444AD /* BeAnInstanceOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAnInstanceOf.swift; path = Sources/Nimble/Matchers/BeAnInstanceOf.swift; sourceTree = ""; }; - 7D294CE36B47148DFBF7348243F572B1 /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; - 7DBEAFF4A6B367DF859614E3CB701A18 /* Quick-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-umbrella.h"; sourceTree = ""; }; - 7DFD4B0CEC3489269B923796E72DB841 /* MessageID.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MessageID.swift; sourceTree = ""; }; - 7FCCA9A39D2A1B29F36D3B2C1C236221 /* Board.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Board.swift; sourceTree = ""; }; - 812992601CC33D447763C0CB3D01258A /* BeAKindOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAKindOf.swift; path = Sources/Nimble/Matchers/BeAKindOf.swift; sourceTree = ""; }; - 814248A0C0806542F6C1A83D5BC9F059 /* BeginWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWith.swift; path = Sources/Nimble/Matchers/BeginWith.swift; sourceTree = ""; }; - 8175483F813B14C3ADE8B7E772C71996 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 822B178FC09D0D1A9AFB97D97987ED13 /* Nimble-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-prefix.pch"; sourceTree = ""; }; - 84CF5B350639A7D74CD7439E1252802E /* SwiftFlyer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftFlyer.modulemap; sourceTree = ""; }; - 85792316DDD8F37B79B25C7D69791F50 /* QCKDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QCKDSL.m; path = Sources/QuickObjectiveC/DSL/QCKDSL.m; sourceTree = ""; }; - 8648C67A0B2AB9657FA70214B0128732 /* Pods-SwiftFlyer_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftFlyer_Example.debug.xcconfig"; sourceTree = ""; }; - 86EC793D7DC145013B6AAE5B2A442489 /* Position.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Position.swift; sourceTree = ""; }; - 88058C4B1B6D7BA822CD40C4137D3723 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 89D8D1CE48E7E123FBF984D428AFE774 /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; - 8A0A6C73BF88581E62EC04929CE077C4 /* BlockModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeWorker.swift; path = Sources/CryptoSwift/BlockMode/BlockModeWorker.swift; sourceTree = ""; }; - 8A1C4B39703FCE023BFF77B6409FBA61 /* RandomAccessBlockModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomAccessBlockModeWorker.swift; path = Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift; sourceTree = ""; }; - 8A5231ADF0F6CA19FC18EDC0F0CFCBAB /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; - 8A957AE0509EABF54AE5CB4470429A33 /* Requestable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Requestable.swift; path = SwiftFlyer/Requestable.swift; sourceTree = ""; }; - 8B6CB19428C224DF9AEF27B38DFBF075 /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; - 8C546E2EA9A5099A8139FF06A227582D /* Starscream.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Starscream.xcconfig; sourceTree = ""; }; - 8D81C866CBD78C4C6A8437AF9E74D3C9 /* Pods_SwiftFlyer_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_SwiftFlyer_Example.framework; path = "Pods-SwiftFlyer_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 8DA512C0A82F359D65F337D80458A8A6 /* XCTestObservationCenter+Register.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestObservationCenter+Register.m"; path = "Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m"; sourceTree = ""; }; - 8DBE2EFD417A0861D9E692F2AB8C6EE4 /* Contain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contain.swift; path = Sources/Nimble/Matchers/Contain.swift; sourceTree = ""; }; - 8DFE2D98E329854CCD0FA39F9CA43F91 /* PostIFDOCOOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostIFDOCOOrderRequest.swift; sourceTree = ""; }; - 8F9A2B1BA4628981A6C18F14C255008A /* ParentOrderType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ParentOrderType.swift; sourceTree = ""; }; - 90DE819145B0BDF13D87FA3393E1BEBA /* TimeInForce.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TimeInForce.swift; sourceTree = ""; }; - 90E8FADBCE398EB0694811111C6C37B1 /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Quick/Filter.swift; sourceTree = ""; }; - 90F0B7DD486A622CF8A7E4FE642CA9C9 /* Callsite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Callsite.swift; path = Sources/Quick/Callsite.swift; sourceTree = ""; }; - 9265258E4CDA2E0BD180C84F61D8643D /* OnlyStatusCodeResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OnlyStatusCodeResponse.swift; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 93B1417EBEB96E67CD97B88FBCCC803F /* ThrowError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowError.swift; path = Sources/Nimble/Matchers/ThrowError.swift; sourceTree = ""; }; - 9533510E2364604B707C77BE784880C2 /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; - 955A3B6EDC014BA685477E1601464E0D /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; - 960DE468602BA4DAC1632C94DE544536 /* GetTransferCoinHistoriesRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetTransferCoinHistoriesRequest.swift; sourceTree = ""; }; - 973A819AF5E4261DA046DFF51BBC30AB /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; - 974412BF0AF3C28924A478DA832C2BA5 /* CryptoSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-dummy.m"; sourceTree = ""; }; - 98115B61602435E016E70671ABB8A11C /* Pods-SwiftFlyer_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwiftFlyer_Tests-dummy.m"; sourceTree = ""; }; - 984C88721FC80198C4E0B4ACB6293900 /* CwlBadInstructionException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlBadInstructionException.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlBadInstructionException.swift; sourceTree = ""; }; - 9AB549D3A091EBBFDA4703AEF0D14E97 /* DSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DSL.m; path = Sources/NimbleObjectiveC/DSL.m; sourceTree = ""; }; - 9BA5CAC515E63D3D62D64DCDFF15AE28 /* GetWithdrawsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetWithdrawsRequest.swift; sourceTree = ""; }; - 9C01DC78B0F3AF8D3D6257798C0E2E43 /* mach_excServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mach_excServer.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.h; sourceTree = ""; }; - 9C40E7A03E3E38D1F6D1FE64394A4402 /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; - 9D9F819F217C4AADF5142B20BF2F7FBB /* AllPass.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AllPass.swift; path = Sources/Nimble/Matchers/AllPass.swift; sourceTree = ""; }; - 9EED4726B6066FA0A3ED1E41F88C211C /* GetTickerRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetTickerRequest.swift; sourceTree = ""; }; - 9F174958E5AB3DC11C3EEB37FFCE8FAD /* BeVoid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeVoid.swift; path = Sources/Nimble/Matchers/BeVoid.swift; sourceTree = ""; }; - A108B7A80C19F0590C1C3E26DBE151CF /* ConditionType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConditionType.swift; sourceTree = ""; }; - A2B0011CF06F1C574A69E9A96AF0FFD9 /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; - A2CB6FE2EF14C17C08D5BDBA386CE835 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - A35BE1E678799867D23BD4B26368445A /* CwlDarwinDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlDarwinDefinitions.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlDarwinDefinitions.swift; sourceTree = ""; }; - A46E849EB2A28D0D467FFC51E399EF98 /* BeGreaterThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThan.swift; path = Sources/Nimble/Matchers/BeGreaterThan.swift; sourceTree = ""; }; - A4BE817163E1C7844F88DA5B5A0ED51B /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; - A5806FFECF497BD279ACE7686364E9D7 /* GetDepositCoinHistoriesRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetDepositCoinHistoriesRequest.swift; sourceTree = ""; }; - A684233A6F218F413DADB5799DD0BC73 /* DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSL.h; path = Sources/NimbleObjectiveC/DSL.h; sourceTree = ""; }; - A7BDA171BC971E3FAD7EA6B45F52254A /* OrderState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OrderState.swift; sourceTree = ""; }; - A7EE3CBD56B88DAC2FA46ADBCF5E9D38 /* GetParentOrdersRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetParentOrdersRequest.swift; sourceTree = ""; }; - A81D61BDBA85C0C2C94251956FEE220F /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/Nimble/Utils/Errors.swift; sourceTree = ""; }; - A8E71379D14A61CF7CB775E193D3A44C /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; - A974545224205019D3A814B567F7BB35 /* PostIFDOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostIFDOrderRequest.swift; sourceTree = ""; }; - A9948A695661F290ECA768EF4FBF905E /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; - A9AB35B2FA4C5E506B1E43B92CED159D /* AssertionRecorder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionRecorder.swift; path = Sources/Nimble/Adapters/AssertionRecorder.swift; sourceTree = ""; }; - AAA2647DB2AB53986069999AA5DA22C9 /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; - AC1114841FDCACB9FA7F8A26F12599AA /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AC4D35EF29FC4D3D05E0F61C7959D06E /* GetDepositsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetDepositsRequest.swift; sourceTree = ""; }; - AC642411A4F116F82EAC1FE6F1A214AB /* Nimble-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-umbrella.h"; sourceTree = ""; }; - ACF1CF43AD71A6C56312D01C6F87A74A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - AD11A26348001A5B0C3279167655D3B8 /* Pods-SwiftFlyer_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftFlyer_Example-resources.sh"; sourceTree = ""; }; - AD2F03CC2F2F88DD4C99D76DC5FA3493 /* SwiftFlyer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftFlyer.xcconfig; sourceTree = ""; }; - AE148B28BC97B76ACF530C4A6BDB3053 /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; - AE5759664323C323391975836C4807CB /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Quick/Configuration/Configuration.swift; sourceTree = ""; }; - AEF764D179A7AA412C5CF9B2213125DB /* SwiftFlyer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftFlyer-dummy.m"; sourceTree = ""; }; - B01144D50A5EDDB39245A07473586272 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; - B07A23388E2E910F6FF90D493CFFC37F /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; - B0EE5B0E460DC54CABF8CC4FEF27BE97 /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; - B2A299FCB7594B98757A656FCBC6A7C8 /* URL+FileName.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+FileName.swift"; path = "Sources/Quick/URL+FileName.swift"; sourceTree = ""; }; - B375EA7EDDAFCC7889E060A112D2260C /* HTTPMethod.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HTTPMethod.swift; path = SwiftFlyer/HTTPMethod.swift; sourceTree = ""; }; - B4417E0815B1BD599C0AF1313EB3E6D3 /* Starscream-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Starscream-dummy.m"; sourceTree = ""; }; - B570BDA4C15FBF4D71A86EDC54136427 /* Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Compression.swift; path = Sources/Compression.swift; sourceTree = ""; }; - B575524D51973DF6D67E8BF751474069 /* GetHelthStateRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetHelthStateRequest.swift; sourceTree = ""; }; - B6395593EF227FC9A8DBAD0D7485FC05 /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; - B678ADEDB67D0466C0654C30811950BF /* Nimble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nimble.h; path = Sources/Nimble/Nimble.h; sourceTree = ""; }; - B6EC1F79FEADCB660CE46513CA4A6764 /* CryptoSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.xcconfig; sourceTree = ""; }; - B85986E449F6BD28D1136E49689D48C5 /* Expectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expectation.swift; path = Sources/Nimble/Expectation.swift; sourceTree = ""; }; - B9E86FA035C284340FE1A4012369D251 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - BA32E2AA8D4130A264DFB56E543BFD9E /* RealTimeAPIDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RealTimeAPIDelegate.swift; path = SwiftFlyer/RealTimeAPIDelegate.swift; sourceTree = ""; }; - BB245BF5CA3D9B8A5ABEC50447849B21 /* Starscream.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Starscream.framework; path = Starscream.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BBDC9AD9C4B6F36A6EAC0ADC58274D93 /* NimbleEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleEnvironment.swift; path = Sources/Nimble/Adapters/NimbleEnvironment.swift; sourceTree = ""; }; - BC9A9F22ABB0E418C097F23BCFB810BB /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; - BDC7C68B92F27C77DD38F61BC028C68A /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; - BF95FC320488C4FBE9442D9793201769 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - BFBB1BA3F8803072E77F3B994C9A0623 /* CurrentTestCaseTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CurrentTestCaseTracker.h; path = Sources/NimbleObjectiveC/CurrentTestCaseTracker.h; sourceTree = ""; }; - C033DBF4B6F898D4CDCAB0FF112026DC /* SatisfyAnyOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAnyOf.swift; path = Sources/Nimble/Matchers/SatisfyAnyOf.swift; sourceTree = ""; }; - C1323B0468082404ED3EE614F665509E /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; - C2795767B203A6D4D4AE3CBC280C4C47 /* WebSocket.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebSocket.swift; path = Sources/WebSocket.swift; sourceTree = ""; }; - C3C411EEA3A277F0D8372CB834E5B947 /* ParentOrders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ParentOrders.swift; sourceTree = ""; }; - C4285BB525B134623AF28744C23D08EC /* GetChildOrdersRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetChildOrdersRequest.swift; sourceTree = ""; }; - C429B1C2EC49E4BD92F6575F88FB1FEE /* GetParentOrderDetailRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetParentOrderDetailRequest.swift; sourceTree = ""; }; - C4F8DD710647E5EB7A87BFC8BB213BC4 /* Starscream.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Starscream.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C5B4099ACE85F09FB72E59CB2F2FA264 /* ProductCode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ProductCode.swift; sourceTree = ""; }; - C623649AC00E52CF39360EB5B3D22E59 /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; - C8283C85647B006514F915C70A069280 /* NMBObjCMatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBObjCMatcher.swift; path = Sources/Nimble/Adapters/NMBObjCMatcher.swift; sourceTree = ""; }; - C8A7F68BB1F249D5ABB471DAE40EDBFE /* Quick-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Quick-dummy.m"; sourceTree = ""; }; - C9FB7162B096AA1BCAE10CB188A85462 /* GetCollateralHistoriesRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetCollateralHistoriesRequest.swift; sourceTree = ""; }; - CADA1074D03C51EE3F86EFD544D1FEB4 /* ParentOrderDetail.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ParentOrderDetail.swift; sourceTree = ""; }; - CC9DE89677D72DE127C3533ED9A0677D /* Pods-SwiftFlyer_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwiftFlyer_Tests-acknowledgements.markdown"; sourceTree = ""; }; - CE316E52617626C42F35320720DF3BA3 /* XCTestSuite+QuickTestSuiteBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestSuite+QuickTestSuiteBuilder.m"; path = "Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m"; sourceTree = ""; }; - CE7ED12C6D34DEB7AEE9146F53CD889D /* ExampleHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleHooks.swift; path = Sources/Quick/Hooks/ExampleHooks.swift; sourceTree = ""; }; - CF148B9E70D7796513D0B2F68C0BE489 /* PostChildOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostChildOrderRequest.swift; sourceTree = ""; }; - D13600C6DCF461040C8E2F67B61DB3BF /* Pods-SwiftFlyer_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-SwiftFlyer_Example.modulemap"; sourceTree = ""; }; - D2D9A8084EC4B6FC3DA7F44BC5F8B9CB /* Array+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extensions.swift"; path = "Sources/CryptoSwift/Array+Extensions.swift"; sourceTree = ""; }; - D3F747F6D39C3699C96F8D76ED6FE0F8 /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; - D42BEFFC4B07302D81558B60E8170700 /* ParentOrderResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ParentOrderResult.swift; sourceTree = ""; }; - D522D184896916E3410377215924180C /* NMBExpectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBExpectation.swift; path = Sources/Nimble/Adapters/NMBExpectation.swift; sourceTree = ""; }; - D60A82BA63FAB372E86E9C3EA27C2A1A /* ThrowAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowAssertion.swift; path = Sources/Nimble/Matchers/ThrowAssertion.swift; sourceTree = ""; }; - D60D948EF38915A880CEA46A090CD32D /* RequestableExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RequestableExtensions.swift; sourceTree = ""; }; - D7142173BBF2B8883BE664B3195777FD /* Quick-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-prefix.pch"; sourceTree = ""; }; - D8C568C2FEFAA7E3D3065666FDECD142 /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D92EFCD5A2B442B9821DEE34BD6E33B1 /* QCKDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QCKDSL.h; path = Sources/QuickObjectiveC/DSL/QCKDSL.h; sourceTree = ""; }; - DDBD2C5FC43A16E84F07D5ED737885FC /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CryptoSwift.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DE1337879581C2CC144F083DF562C566 /* CryptoSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-prefix.pch"; sourceTree = ""; }; - DE4E8128EF17BDFF127D9DF2A1496F8D /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; - DEF37EC96FC54F4DB84DA1A8442C67E9 /* Ticker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Ticker.swift; sourceTree = ""; }; - DF026D2696AE9A5F12D8768D05407877 /* Example.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Example.swift; path = Sources/Quick/Example.swift; sourceTree = ""; }; - DF20F56415E5F45D046F08C0D7B3424F /* NMBStringify.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBStringify.m; path = Sources/NimbleObjectiveC/NMBStringify.m; sourceTree = ""; }; - E0502CA19200CAF84F030FAA0F227C01 /* GetContractsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetContractsRequest.swift; sourceTree = ""; }; - E109BF1DCD83F2C042AE93A5E7D30302 /* QuickSpecBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpecBase.h; path = Sources/QuickSpecBase/include/QuickSpecBase.h; sourceTree = ""; }; - E371867E144E1D2DF20D50F88D9D40B2 /* Pods-SwiftFlyer_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftFlyer_Example.release.xcconfig"; sourceTree = ""; }; - E391EE5FB468CC35518C23BF6A5AD0C9 /* HKDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HKDF.swift; path = Sources/CryptoSwift/HKDF.swift; sourceTree = ""; }; - E3D7063454F94F3481D6B8190A0F0D13 /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; - E4C2F956CE5C4612A8E3208F216E848A /* Behavior.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Behavior.swift; path = Sources/Quick/Behavior.swift; sourceTree = ""; }; - E58EE668A53F4C77C98869A0CC645900 /* NMBExceptionCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBExceptionCapture.m; path = Sources/NimbleObjectiveC/NMBExceptionCapture.m; sourceTree = ""; }; - E63326F0495276248AF357A58B1E366B /* Pods-SwiftFlyer_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftFlyer_Tests-frameworks.sh"; sourceTree = ""; }; - E74D62C1FCA0CC23145C9149E84DDF72 /* PostCancelChildOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostCancelChildOrderRequest.swift; sourceTree = ""; }; - E89C5572BAB98F811BB8466A4FD40779 /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; - E8BF33588BD7AE4C25820DAD40CF6076 /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; - E9A58F0C45202FF1891223E6F2A28F0F /* QuickSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpec.h; path = Sources/QuickObjectiveC/QuickSpec.h; sourceTree = ""; }; - EB113CCC8BFBDFCEEDEB459F32FAB83A /* CurrencyCode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CurrencyCode.swift; sourceTree = ""; }; - EDF14423BCF9775074A3BFEA0BDAF89D /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = SwiftFlyer/Result.swift; sourceTree = ""; }; - EEC65775803AE4107C5F146F531A9593 /* BeEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeEmpty.swift; path = Sources/Nimble/Matchers/BeEmpty.swift; sourceTree = ""; }; - EFD8D616AFA77105F3629E55ABC18482 /* BeGreaterThanOrEqualTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThanOrEqualTo.swift; path = Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift; sourceTree = ""; }; - F018B2681D410E32154CC94220A56C11 /* Chat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Chat.swift; sourceTree = ""; }; - F0573C0AD72250F233B0A0581EF56DE5 /* PostCancelAllChildOrdersRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostCancelAllChildOrdersRequest.swift; sourceTree = ""; }; - F11FA0523F4430839C3A065AB265369A /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; - F40F131151E091011E0285BE69C3F57D /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; - F4BAEC6C45BC94B9DC4DFABA90E89372 /* WithdrawHistory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = WithdrawHistory.swift; sourceTree = ""; }; - F52F49E6ABA3AE46F42D9D86765CD266 /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; - F68C886FE93F29C3E5510F71F00B6278 /* PostOCOOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostOCOOrderRequest.swift; sourceTree = ""; }; - F6A05D73623B94EE46B240DC481A69EC /* Nimble.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Nimble.modulemap; sourceTree = ""; }; - F6A0A9A23452B6294B896763B213333C /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/Nimble/Expression.swift; sourceTree = ""; }; - F702EAA696D177D5E640689A4E18CCA1 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F8DF0F807D17CD352E0F05E19AFDFB6F /* Pods-SwiftFlyer_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwiftFlyer_Example-dummy.m"; sourceTree = ""; }; - FB146C43D8C073E39253930EED24CE0B /* DictionaryExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DictionaryExtensions.swift; sourceTree = ""; }; - FE10FBCD4DDCE25D22FBFF0E953382E9 /* Pods-SwiftFlyer_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftFlyer_Tests-acknowledgements.plist"; sourceTree = ""; }; - FEFA3076FB54886C251E329E30AB7103 /* CwlCatchBadInstruction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchBadInstruction.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlCatchBadInstruction.swift; sourceTree = ""; }; + 0102A9D8C3B4EFDBF1E96AC157FBABB5 /* ToSucceed.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToSucceed.swift; path = Sources/Nimble/Matchers/ToSucceed.swift; sourceTree = ""; }; + 017B93C35C19EC039E608AB93D400503 /* NMBStringify.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBStringify.m; path = Sources/NimbleObjectiveC/NMBStringify.m; sourceTree = ""; }; + 01F1F12119F02F7A05C0CF77B74B3BC6 /* PostNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PostNotification.swift; path = Sources/Nimble/Matchers/PostNotification.swift; sourceTree = ""; }; + 020F0630B74EB920D4F62236E308DC0B /* PostWithdrawRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostWithdrawRequest.swift; sourceTree = ""; }; + 022D079829314C4CF7A7CA3FCDA034F9 /* SuiteHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SuiteHooks.swift; path = Sources/Quick/Hooks/SuiteHooks.swift; sourceTree = ""; }; + 024C0CEFCEAA6EAA79E0B878A08615BA /* Nimble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nimble.h; path = Sources/Nimble/Nimble.h; sourceTree = ""; }; + 02B75269C4F87578F578CFB64DC917A3 /* CryptoSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-prefix.pch"; sourceTree = ""; }; + 051016DE75BB34423617BB3F0602362F /* CryptoSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "CryptoSwift-Info.plist"; sourceTree = ""; }; + 051AE751702F58764C983A327CEBD2FC /* BeNil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeNil.swift; path = Sources/Nimble/Matchers/BeNil.swift; sourceTree = ""; }; + 0577783EDB0B9DDBA0BC953973B44AED /* StreamDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamDecryptor.swift; path = Sources/CryptoSwift/StreamDecryptor.swift; sourceTree = ""; }; + 06E9F73EDE43F374564B100F88E743EA /* URL+FileName.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+FileName.swift"; path = "Sources/Quick/URL+FileName.swift"; sourceTree = ""; }; + 0714A41EAEF95D66A4ADD9C443899DA9 /* Starscream.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Starscream.framework; path = Starscream.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 08E04C4ED9FD2B230C450FA14E7EAC22 /* SSLClientCertificate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSLClientCertificate.swift; path = Sources/Starscream/SSLClientCertificate.swift; sourceTree = ""; }; + 09B469FD871645047336E17F7CED7C97 /* Pods-SwiftFlyer_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwiftFlyer_Tests-acknowledgements.markdown"; sourceTree = ""; }; + 0BC020C62D071DCF40364050B46D6B73 /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; + 0CCD6F66B2F0C01448198ABBC2B51763 /* Executions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Executions.swift; sourceTree = ""; }; + 0D13F8B80ABB62A88C4C45951F39D7B2 /* World+DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "World+DSL.swift"; path = "Sources/Quick/DSL/World+DSL.swift"; sourceTree = ""; }; + 0DA0DB238B6A23B30B3BD6D0D09F47EF /* NMBExpectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBExpectation.swift; path = Sources/Nimble/Adapters/NMBExpectation.swift; sourceTree = ""; }; + 0DB1EBE4EA2A97BC499B5175EF2E068A /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; + 0E511CFBFA9E7CEB2D0F4E6CB198E614 /* BoarderStatus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BoarderStatus.swift; sourceTree = ""; }; + 0EAF10AF9325B1660908655866EBAA37 /* CryptoSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = CryptoSwift.modulemap; sourceTree = ""; }; + 0EC2F584A90D28E373F86DE89E56BBA7 /* GetTickerRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetTickerRequest.swift; sourceTree = ""; }; + 0F2DE4C2A4A51750BE722D5856A37682 /* Quick.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Quick.h; path = Sources/QuickObjectiveC/Quick.h; sourceTree = ""; }; + 1022D98DFF045AF66B2C56F57AC34A3E /* Match.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Match.swift; path = Sources/Nimble/Matchers/Match.swift; sourceTree = ""; }; + 109AD289E737622F73435A0064832144 /* BeLessThanOrEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThanOrEqual.swift; path = Sources/Nimble/Matchers/BeLessThanOrEqual.swift; sourceTree = ""; }; + 120675C39E2BDD23A15CEE331D0FE80C /* BeginWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWith.swift; path = Sources/Nimble/Matchers/BeginWith.swift; sourceTree = ""; }; + 123BD09E5B437D7DBBD10DC57F4CECAF /* Behavior.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Behavior.swift; path = Sources/Quick/Behavior.swift; sourceTree = ""; }; + 133F1742FE5920764C1B0586F9D359D3 /* SwiftFlyer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftFlyer-umbrella.h"; sourceTree = ""; }; + 136C0BBD8ECF4D4ACAB2E7F6693B6816 /* Quick.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Quick.xcconfig; sourceTree = ""; }; + 142D84CD9C23AF9389F2C909937804FF /* Starscream.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Starscream.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 157D2A2754BFCD6142DB5B00CD947A7A /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; + 15D4EBC1E82CF9C9E0BFA38513A7FEAD /* SourceLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceLocation.swift; path = Sources/Nimble/Utils/SourceLocation.swift; sourceTree = ""; }; + 169981B6084F005D82ABB10A8755ECE5 /* XCTestSuite+QuickTestSuiteBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestSuite+QuickTestSuiteBuilder.m"; path = "Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m"; sourceTree = ""; }; + 1699D91AEACA3A3F7EDAB70146BB9834 /* GetPermissionsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetPermissionsRequest.swift; sourceTree = ""; }; + 16AFA10B0EEC6919239AD22724CBAEFF /* Pods-SwiftFlyer_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftFlyer_Example-acknowledgements.plist"; sourceTree = ""; }; + 17B675A7AF8070B86B26D986C2FEA251 /* BeLessThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThan.swift; path = Sources/Nimble/Matchers/BeLessThan.swift; sourceTree = ""; }; + 182E99783AAE8EEECAE2FDF560BA589B /* NMBExceptionCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBExceptionCapture.m; path = Sources/NimbleObjectiveC/NMBExceptionCapture.m; sourceTree = ""; }; + 19A179F54D1EDC5E7240C659FD6206C0 /* mach_excServer.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mach_excServer.c; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.c; sourceTree = ""; }; + 1A3775BA4D2E6ECBEB115E9A9B77B0F6 /* ContainElementSatisfying.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainElementSatisfying.swift; path = Sources/Nimble/Matchers/ContainElementSatisfying.swift; sourceTree = ""; }; + 1AA1DF4608166D42C089E1931C14F1D6 /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; + 1B7C4F13055FB4E73ACEAFBB240002C5 /* DepositHistory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DepositHistory.swift; sourceTree = ""; }; + 1C6C92F2A2E076BC85BD2A8C98375283 /* Nimble.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Nimble.modulemap; sourceTree = ""; }; + 1CE6075B6D821289D1D83F4A59062FDB /* BeIdenticalTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeIdenticalTo.swift; path = Sources/Nimble/Matchers/BeIdenticalTo.swift; sourceTree = ""; }; + 1D43610D6745C9E3DC6A6464D8529065 /* Nimble-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-prefix.pch"; sourceTree = ""; }; + 1D9B27609C355C584FAB0379E9BF075E /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; + 1E1C30EA120D5E32B13C1C7F57B54764 /* GetCollateralRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetCollateralRequest.swift; sourceTree = ""; }; + 1EE6D3FAA0247F981FCEA2BB2912393B /* DSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DSL.m; path = Sources/NimbleObjectiveC/DSL.m; sourceTree = ""; }; + 2220D9B1358AD3F9D8FEEE272336ED31 /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; + 2242B8C443A19A84E8106E90AD7F6E3A /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + 22AA8E851992C99EE5D9865DE1EBECBF /* Pods_SwiftFlyer_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_SwiftFlyer_Example.framework; path = "Pods-SwiftFlyer_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 22F88E9A9017EF1EA6F20D5669D25AB6 /* NimbleEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleEnvironment.swift; path = Sources/Nimble/Adapters/NimbleEnvironment.swift; sourceTree = ""; }; + 23B0838DAE4AC84DE7E18FD05289B7D3 /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; + 25900A67B148B732562B3ADEFA63A632 /* TimeInForce.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TimeInForce.swift; sourceTree = ""; }; + 25E38D9DA891AB5CFCCA51AFB2DAA0D5 /* Requestable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Requestable.swift; path = SwiftFlyer/Requestable.swift; sourceTree = ""; }; + 26E699203DEBAC6FEA976440CC5643FE /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; + 26ECC9E6D3AA6FE1930C48B2D10BD99F /* Contract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Contract.swift; sourceTree = ""; }; + 27207F52ECDCBF9FDCAF10F25040C88D /* Nimble.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Nimble.framework; path = Nimble.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 285127DE18C1C6DBB56A857BB9A4D15C /* ResponseError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseError.swift; path = SwiftFlyer/ResponseError.swift; sourceTree = ""; }; + 294EE50BBD2FCA858F65BF283206A6CF /* Pods-SwiftFlyer_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftFlyer_Tests-acknowledgements.plist"; sourceTree = ""; }; + 2A93CAA2FEE946AC687524CD556952A9 /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; + 2B51FD0E3E28BEE9C29A3FB4E0F30C98 /* Pods-SwiftFlyer_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwiftFlyer_Tests-dummy.m"; sourceTree = ""; }; + 2BBF7671C048CA71CB1D79CC4926121E /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; + 2CF6801C7BD14BCC8F85B3F3F9E48E2B /* Permission.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Permission.swift; sourceTree = ""; }; + 2DB1CD7FFCCD362C860DB16D8B95EF5C /* BeVoid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeVoid.swift; path = Sources/Nimble/Matchers/BeVoid.swift; sourceTree = ""; }; + 2E03315C18F95AF5ECE50BFDCF23E690 /* HooksPhase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HooksPhase.swift; path = Sources/Quick/Hooks/HooksPhase.swift; sourceTree = ""; }; + 30AF59990BAAD533A992DCED888DF88E /* WebSocket.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebSocket.swift; path = Sources/Starscream/WebSocket.swift; sourceTree = ""; }; + 319569DA69404E72F1B65AFEC42A8C6C /* Starscream-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-prefix.pch"; sourceTree = ""; }; + 32FCAF3E5C8F65B07C24B60368FA28D0 /* DSL+Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DSL+Wait.swift"; path = "Sources/Nimble/DSL+Wait.swift"; sourceTree = ""; }; + 346ED4D90963F002E6242D95BEEC6F4D /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Quick/Filter.swift; sourceTree = ""; }; + 34992E093ECD84F9F2DC95F3B06DB05E /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; + 351CE574ACB9073427CD6CCC72220A46 /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; + 354DC3963D793362E5C7BBFDF2643C40 /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; + 36582ECD297B1C877E9FAB032665D5AF /* BeGreaterThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThan.swift; path = Sources/Nimble/Matchers/BeGreaterThan.swift; sourceTree = ""; }; + 36A04BCDFF00A1E396D1F5DD3EF56B69 /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; + 38D4E50A26612149C728C5C60C70B807 /* Stringers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stringers.swift; path = Sources/Nimble/Utils/Stringers.swift; sourceTree = ""; }; + 38E7EBD5B2BE8C0F133DFB3CC61E09CA /* mach_excServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mach_excServer.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.h; sourceTree = ""; }; + 3ACB9D139E3CA72B0F716655CEB04ECA /* Expectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expectation.swift; path = Sources/Nimble/Expectation.swift; sourceTree = ""; }; + 3B70DD81625D87328A77322CFD0EE93C /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; + 3BA19B6EDC5D4F760A7341828BAA73A8 /* QCKDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QCKDSL.h; path = Sources/QuickObjectiveC/DSL/QCKDSL.h; sourceTree = ""; }; + 3D06AD21D3073989CE862153DC618BE0 /* Starscream-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Starscream-dummy.m"; sourceTree = ""; }; + 3D71AC5325479BB67A1FF3E32E096299 /* SatisfyAllOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAllOf.swift; path = Sources/Nimble/Matchers/SatisfyAllOf.swift; sourceTree = ""; }; + 3E85F07008F68FD5E69E28F44977BB3E /* OnlyStatusCodeResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OnlyStatusCodeResponse.swift; sourceTree = ""; }; + 3F0947818EB04165531FEC18C5344B65 /* AdapterProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AdapterProtocols.swift; path = Sources/Nimble/Adapters/AdapterProtocols.swift; sourceTree = ""; }; + 40AA0884EE07579BED75335B60047277 /* ParentOrderType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ParentOrderType.swift; sourceTree = ""; }; + 40DC247417491EFF44950FA47BA16DA5 /* Pods-SwiftFlyer_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftFlyer_Tests.debug.xcconfig"; sourceTree = ""; }; + 41BC1F4CDC29F2716379F993F5C880AE /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; + 4214DF700A0E2B15D6141F36F78AB6C4 /* SwiftFlyer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftFlyer.xcconfig; sourceTree = ""; }; + 42FFE1A199FBD9FEA46F8AC76DE980F1 /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; + 4315064D695DD1D6EB4E4B4EBF5EE896 /* DictionaryExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DictionaryExtensions.swift; sourceTree = ""; }; + 43B42A3B062D1D4083336FC0AC44DA99 /* CoinHistory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CoinHistory.swift; sourceTree = ""; }; + 457B2D53884DA5C11DD0D6B531F2376A /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; + 472E3A158793A48EF722858C51EBD007 /* AEADChaCha20Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEADChaCha20Poly1305.swift; path = Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift; sourceTree = ""; }; + 47C212B3C661BCAC9A623936E278D570 /* Market.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Market.swift; sourceTree = ""; }; + 483A7A6D9A7C0229EFACB86054799D3A /* Quick-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-prefix.pch"; sourceTree = ""; }; + 48483C4BB4282BB99BCF3384F1253DCE /* CwlCatchBadInstruction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchBadInstruction.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlCatchBadInstruction.swift; sourceTree = ""; }; + 495DCF4926FA59DEEBC4DF6E3E2A7F95 /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; + 49BE3DDC5F8605766C93DC516672CA28 /* Quick.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Quick.framework; path = Quick.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 49E8249D2F6921B3FF8CD1C333481DEE /* Pods-SwiftFlyer_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwiftFlyer_Example-umbrella.h"; sourceTree = ""; }; + 4AF8BC1136AD4D63A2A5242025A672DC /* Starscream.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Starscream.modulemap; sourceTree = ""; }; + 4EA277FCAE41AFD4389415BC98386A32 /* PostSimpleOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostSimpleOrderRequest.swift; sourceTree = ""; }; + 4F2406A4CE0DFF2DAC338A5DFF31D43B /* Pods-SwiftFlyer_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftFlyer_Example.release.xcconfig"; sourceTree = ""; }; + 4F49FB6C48C713465C68CDA3A6C0827E /* QuickSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpec.m; path = Sources/QuickObjectiveC/QuickSpec.m; sourceTree = ""; }; + 4FB09AEDA311BB869E2F6E67B8714D39 /* TradeState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TradeState.swift; sourceTree = ""; }; + 51098641BEC4F324B2CF4143C3668FD8 /* Cryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptor.swift; path = Sources/CryptoSwift/Cryptor.swift; sourceTree = ""; }; + 522260696BCADBF5D49D193661D30A08 /* ExampleGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleGroup.swift; path = Sources/Quick/ExampleGroup.swift; sourceTree = ""; }; + 52981CF38D84DD3A0D1DFCC1EFA1D44C /* BeGreaterThanOrEqualTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThanOrEqualTo.swift; path = Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift; sourceTree = ""; }; + 53382BF14EF7913AB1C8C70BDB4E4A50 /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; + 549B946663F83148E2033AFD48B9850A /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; + 54DA8B2621A97BBB01C0836AF48306B7 /* Await.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Await.swift; path = Sources/Nimble/Utils/Await.swift; sourceTree = ""; }; + 54F45B1E7C0F5CEFC2904D841CC64CDE /* GetBoarderStatusRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetBoarderStatusRequest.swift; sourceTree = ""; }; + 5508B83DA6B2818055D48EB1430C209E /* ErrorUtility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorUtility.swift; path = Sources/Quick/ErrorUtility.swift; sourceTree = ""; }; + 56D98F35904BD94FEBD9F196E8EDD227 /* EndWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EndWith.swift; path = Sources/Nimble/Matchers/EndWith.swift; sourceTree = ""; }; + 58350A97336095194AF9041E7D5B655D /* Nimble-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Nimble-dummy.m"; sourceTree = ""; }; + 58879B62F11B494C91C24ECA715E24FC /* ThrowError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowError.swift; path = Sources/Nimble/Matchers/ThrowError.swift; sourceTree = ""; }; + 58CF0EF6399D0D2878244DA85265C4B1 /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; + 5AE10CC1A15B32A67BE67A54675B3422 /* Board.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Board.swift; sourceTree = ""; }; + 5BD8860281A72A04E815B6EBBDBE7764 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = SwiftFlyer/Result.swift; sourceTree = ""; }; + 5C1A81A55B269AC94FB58314ED668BEA /* BeEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeEmpty.swift; path = Sources/Nimble/Matchers/BeEmpty.swift; sourceTree = ""; }; + 5C477037E0DD96CBA60BC7F6DEF354A7 /* ChildOrders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChildOrders.swift; sourceTree = ""; }; + 5D30EE8F255DA4F5837E972B81933F88 /* OrderState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OrderState.swift; sourceTree = ""; }; + 5D4ADFB9D5D4A494501A4AF109E871C8 /* Equal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Equal.swift; path = Sources/Nimble/Matchers/Equal.swift; sourceTree = ""; }; + 5D4EFA3D56B162FDFBA00AB3753C2D63 /* Quick-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Quick-Info.plist"; sourceTree = ""; }; + 5DCDC81C03BB6A05BFE219F531046C79 /* PostIFDOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostIFDOrderRequest.swift; sourceTree = ""; }; + 5F3F401E04D2FB118ED3FC231DCA0583 /* CipherModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CipherModeWorker.swift; path = Sources/CryptoSwift/BlockMode/CipherModeWorker.swift; sourceTree = ""; }; + 5FE417F490EA088BD7029C87B1736D02 /* QuickTestSuite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickTestSuite.swift; path = Sources/Quick/QuickTestSuite.swift; sourceTree = ""; }; + 609ED20F3B89E6FE73DF109761C004F7 /* ConditionType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConditionType.swift; sourceTree = ""; }; + 61BFDEFFE984D4D42D99D174F8D6F2E6 /* ParentOrderResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ParentOrderResult.swift; sourceTree = ""; }; + 627CE7A70A40151AAFA6F224B0D85D2F /* NMBStringify.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBStringify.h; path = Sources/NimbleObjectiveC/NMBStringify.h; sourceTree = ""; }; + 62C5B1A301D14AC3374A7C28FA4BD3B2 /* GetCollateralHistoriesRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetCollateralHistoriesRequest.swift; sourceTree = ""; }; + 630D095F1825F9A2A305A545F643B74E /* Order.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Order.swift; sourceTree = ""; }; + 63C8EC34C526C4AD160D3E1D81312236 /* CwlPreconditionTesting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlPreconditionTesting.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/Mach/CwlPreconditionTesting.h; sourceTree = ""; }; + 673BB5F2DC1E491CFDF20CE301EA938A /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; + 692DB64642B7B43454BBEE4BB52E655F /* BankAccount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BankAccount.swift; sourceTree = ""; }; + 6A039B8B9DF57F3234CE5DFFC0DC656E /* BlockDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockDecryptor.swift; path = Sources/CryptoSwift/BlockDecryptor.swift; sourceTree = ""; }; + 6AE31F877EF6037E1A6EA418A0EBE7C7 /* AEAD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEAD.swift; path = Sources/CryptoSwift/AEAD/AEAD.swift; sourceTree = ""; }; + 6CB3CF30258C82EC5647BB18788CF801 /* Starscream.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Starscream.xcconfig; sourceTree = ""; }; + 6CE6CDF71FDD7702607BFA2126D36F04 /* ParentOrders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ParentOrders.swift; sourceTree = ""; }; + 6D4E423625E7064712E7424B1E541B0C /* Pods-SwiftFlyer_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftFlyer_Example-frameworks.sh"; sourceTree = ""; }; + 6D826E11A876CD081671A7410D6A6B07 /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; + 6DB79B9EEBD057B15E367C0A58377832 /* Quick-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Quick-dummy.m"; sourceTree = ""; }; + 6DF2E2CA998C63869033FBED5DDB431B /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 6E06BA3A98F3418D053964B1C36BAEAE /* PostCancelParentOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostCancelParentOrderRequest.swift; sourceTree = ""; }; + 6E9C025A41FBFAC2C4BCBDE65E86BE4C /* HKDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HKDF.swift; path = Sources/CryptoSwift/HKDF.swift; sourceTree = ""; }; + 6F60C743D46623439A89286D409C71F5 /* Ticker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Ticker.swift; sourceTree = ""; }; + 6F63AD720278F23BF25801E8FAB81620 /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = Sources/CryptoSwift/CompactMap.swift; sourceTree = ""; }; + 712C5F8A89367753D03F8FAA13840590 /* DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSL.h; path = Sources/NimbleObjectiveC/DSL.h; sourceTree = ""; }; + 71D8377DB4EF9F7B3005E9CD874741A7 /* PositionSide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PositionSide.swift; sourceTree = ""; }; + 71F36FC5E680DF95656DD9EC484FE88F /* CryptoSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.xcconfig; sourceTree = ""; }; + 72A18C9900E2EB1DDB96E6F21C2F895A /* GetDepositCoinHistoriesRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetDepositCoinHistoriesRequest.swift; sourceTree = ""; }; + 738724FABA22EE1C8F5BBAF6F1C1FCA2 /* ProductCode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ProductCode.swift; sourceTree = ""; }; + 73997F12ACCB42C3B7C806C6A6BA0220 /* CryptoSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-umbrella.h"; sourceTree = ""; }; + 73AAA65242BAC40B3416D49BC9F45603 /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; + 73D31472401D9E31DA01FAABF8384A12 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/Nimble/Utils/Errors.swift; sourceTree = ""; }; + 76ADDCABCD37D59C89803FEAFDB8DFD0 /* CBCMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBCMAC.swift; path = Sources/CryptoSwift/CBCMAC.swift; sourceTree = ""; }; + 77578112849C88F960CEA266A0CDD89F /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; + 7775BB87B934541154ED731580E803BB /* MatcherFunc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherFunc.swift; path = Sources/Nimble/Matchers/MatcherFunc.swift; sourceTree = ""; }; + 77AD36D80944262BAF38A8AF1A043029 /* Predicate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Predicate.swift; path = Sources/Nimble/Matchers/Predicate.swift; sourceTree = ""; }; + 77C16433315CEF65CA51D59ADA65C8AE /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; + 78C60B1E627FC1D3E4695E61C57B4F34 /* Pods-SwiftFlyer_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwiftFlyer_Tests-umbrella.h"; sourceTree = ""; }; + 794C8FBA8EA18DC57518650760C7C007 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Quick/DSL/DSL.swift; sourceTree = ""; }; + 7B6B165D3EE1BAD9794DC55149B73794 /* CCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CCM.swift; path = Sources/CryptoSwift/BlockMode/CCM.swift; sourceTree = ""; }; + 7BAE4475AA96294744BAB524F5FB52F4 /* SwiftFlyer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwiftFlyer.framework; path = SwiftFlyer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7CD2767523176019E2ABFEE31AEF91CE /* XCTestObservationCenter+Register.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestObservationCenter+Register.m"; path = "Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m"; sourceTree = ""; }; + 7D727571FFF5F1922B5028D0A3D7260D /* ChildOrderType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChildOrderType.swift; sourceTree = ""; }; + 7F28474B25D07BCBC62F2848BCCA554B /* String+C99ExtendedIdentifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+C99ExtendedIdentifier.swift"; path = "Sources/Quick/String+C99ExtendedIdentifier.swift"; sourceTree = ""; }; + 805270BA384838EC46E425E6E73A6268 /* TradingCommission.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TradingCommission.swift; sourceTree = ""; }; + 8163530C6FFA4B57A5A60FC0204B3DE9 /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; + 83120E42F920470E45379C51F064CDB1 /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; + 8323E0C748A90B91BA76372A3DE83EE5 /* GetContractsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetContractsRequest.swift; sourceTree = ""; }; + 83D08B4E69925700C211136E986004CC /* PostChildOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostChildOrderRequest.swift; sourceTree = ""; }; + 83EBCE7A7AB3FBAEFC54F591640098F2 /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; + 84610FB423F894B5F00FBA565E454D90 /* Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Compression.swift; path = Sources/Starscream/Compression.swift; sourceTree = ""; }; + 850EA9D8DFED8842C9B7F249A576C3E8 /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/Nimble/Expression.swift; sourceTree = ""; }; + 863F5BF984F12C832D817FF17865CECD /* Balance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Balance.swift; sourceTree = ""; }; + 86560D75522BCB3F9C3C5046BD5743A9 /* HealthState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = HealthState.swift; sourceTree = ""; }; + 87108EE3272301CDF2D9A12952169D64 /* AssertionRecorder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionRecorder.swift; path = Sources/Nimble/Adapters/AssertionRecorder.swift; sourceTree = ""; }; + 8872F55372175374BE2DD40D350B4E53 /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; + 88F003D02EA31C04C660C54681DD5E10 /* WithdrawHistory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = WithdrawHistory.swift; sourceTree = ""; }; + 8A1FD3A7BF1596DEC21A334CEEE92A3A /* GetChatsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetChatsRequest.swift; sourceTree = ""; }; + 8A78D2F2D560F6373A782546C1F8CCDB /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; + 8BBF056B75D91C543DC752203D0358A9 /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; + 8C5E43942F2AE9C2BFBEA824D668A0AB /* Scrypt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Scrypt.swift; path = Sources/CryptoSwift/Scrypt.swift; sourceTree = ""; }; + 8C9AB6EDFF986B1B4F2298429AE992C6 /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; + 8CE2FE483BB49D74D31C30D070EAD084 /* GCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCM.swift; path = Sources/CryptoSwift/BlockMode/GCM.swift; sourceTree = ""; }; + 8F1F94878AA561EBC67A47F7C815E3AF /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; + 8F4700C4A6F6AD767A87A4DCD4404E28 /* GetTraidingCommissionRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetTraidingCommissionRequest.swift; sourceTree = ""; }; + 8F4B3248C59083056AA7787FB867C6CA /* BitFlyer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BitFlyer.swift; path = SwiftFlyer/BitFlyer.swift; sourceTree = ""; }; + 8F55B78A3189D7EFB960325D684352D3 /* Contain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contain.swift; path = Sources/Nimble/Matchers/Contain.swift; sourceTree = ""; }; + 8FE3B6F59D1130F1871D5D2FBC94BE05 /* GetBoardRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetBoardRequest.swift; sourceTree = ""; }; + 911372DAD77256623CC631586D6B8CA8 /* Pods-SwiftFlyer_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftFlyer_Example.debug.xcconfig"; sourceTree = ""; }; + 9196845427029F01A9731DF8CE7D9874 /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; + 93B27F0F9EE7EB97D422F0CA13221CA9 /* NimbleXCTestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleXCTestHandler.swift; path = Sources/Nimble/Adapters/NimbleXCTestHandler.swift; sourceTree = ""; }; + 94DF965A81C8444C68630CAAB1DFAB19 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; + 95F947B23CEA22476A008079645C8FEC /* Pods_SwiftFlyer_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_SwiftFlyer_Tests.framework; path = "Pods-SwiftFlyer_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 97088E22F6BC1BB143AB0D5EEF34032A /* MessageID.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MessageID.swift; sourceTree = ""; }; + 9823575D449D37BC0B8B574D31C134C2 /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; + 98EFE03333C6AF96B6DC8046837CBC72 /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; + 99941C6623CE4C5FF16C8F9FA51120FD /* TradeHealth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TradeHealth.swift; sourceTree = ""; }; + 9A81FFD36A9EB1680595AC0C102C89E9 /* Starscream-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-umbrella.h"; sourceTree = ""; }; + 9AED5E5A8D7A0BFE943CE3427D5A9887 /* HTTPMethod.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HTTPMethod.swift; path = SwiftFlyer/HTTPMethod.swift; sourceTree = ""; }; + 9BC0EC7D8746D908EC251A005EB51E42 /* CwlBadInstructionException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlBadInstructionException.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlBadInstructionException.swift; sourceTree = ""; }; + 9BFFD594F02008375A7CDBB651356C28 /* GetParentOrderDetailRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetParentOrderDetailRequest.swift; sourceTree = ""; }; + 9CA161A4578402836E01E0B98DDA2EFB /* CwlCatchException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlCatchException.m; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/CwlCatchException.m; sourceTree = ""; }; + 9CC533BB81E4D746E6FDEBC8A6039FDE /* ParentOrderDetail.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ParentOrderDetail.swift; sourceTree = ""; }; + 9D886695B6A65B41E390A76446DA489E /* ChildOrderResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChildOrderResult.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; }; + 9D9F05CB49D7D7D80C82152A06DCC6CB /* RealTimeAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RealTimeAPI.swift; path = SwiftFlyer/RealTimeAPI.swift; sourceTree = ""; }; + 9E3A98E693CA0E64B7E9D6CA718FE7D9 /* PostCancelAllChildOrdersRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostCancelAllChildOrdersRequest.swift; sourceTree = ""; }; + 9E79F6AC6E7B3BB68616A0B2228E6F71 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + 9F05B2975914243EA279BC22644BDA56 /* Pods-SwiftFlyer_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwiftFlyer_Example-acknowledgements.markdown"; sourceTree = ""; }; + A15406387201BBBCDB2516493F2B8040 /* QuickSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpec.h; path = Sources/QuickObjectiveC/QuickSpec.h; sourceTree = ""; }; + A1686B4E24ECF924E94DD376D894C700 /* QuickSelectedTestSuiteBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickSelectedTestSuiteBuilder.swift; path = Sources/Quick/QuickSelectedTestSuiteBuilder.swift; sourceTree = ""; }; + A16A8C4E31C49EF87343A26663AC6BEB /* QuickSpecBase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpecBase.m; path = Sources/QuickSpecBase/QuickSpecBase.m; sourceTree = ""; }; + A28E9BB5280B66E03E5B132E4A76868B /* Pods-SwiftFlyer_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftFlyer_Tests.release.xcconfig"; sourceTree = ""; }; + A2BD13D3767CAD764BA2323E0733DAD1 /* AssertionDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionDispatcher.swift; path = Sources/Nimble/Adapters/AssertionDispatcher.swift; sourceTree = ""; }; + A2E9E0556B19ACC35F8AA53460729B95 /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; + A3B5FA0F9E252ACEECA7D512E686BF50 /* ExampleMetadata.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleMetadata.swift; path = Sources/Quick/ExampleMetadata.swift; sourceTree = ""; }; + A4CF6D4CBAC93A42A3CDBBBD0026DEB3 /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A5278EB7CA5DE0DE3BCA526CC430F4CB /* PostCancelChildOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostCancelChildOrderRequest.swift; sourceTree = ""; }; + A5927E3351E482263BB340ED187BFA5A /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; + A606097B793AABCBBF10F3F7893BD1E1 /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; + A6857D4BD3FFC85E4CF410B113EF7B16 /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; + A698DCEB740ADF084D5D8FC98B3B8FB6 /* Closures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Closures.swift; path = Sources/Quick/Hooks/Closures.swift; sourceTree = ""; }; + A6E21E812B8D5080C82A11BE7E5543A7 /* SwiftFlyer.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = SwiftFlyer.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + A90FC78F440CC4D9C4B4262D1C7D8EC1 /* GetDepositsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetDepositsRequest.swift; sourceTree = ""; }; + A916FD404CDE50811EE9653EC61C424C /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; + AA1B2871D31388CA6FF811BA9C5D737C /* Nimble-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-umbrella.h"; sourceTree = ""; }; + AA20A4313F7D63E131DE3F7FC95A6F03 /* Nimble-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Nimble-Info.plist"; sourceTree = ""; }; + AAAE2B4525EA4B7752D307043C236598 /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CryptoSwift.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + ABEE8A2030F0F754ACD8218AAF55EA1C /* Collateral.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Collateral.swift; sourceTree = ""; }; + AC42ABFEB69DD4CC8CA91D09B09A4D93 /* FailureMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FailureMessage.swift; path = Sources/Nimble/FailureMessage.swift; sourceTree = ""; }; + AD30593F90B3AE1A481F78BF9CAE9ABF /* CwlDarwinDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlDarwinDefinitions.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlDarwinDefinitions.swift; sourceTree = ""; }; + AD6BC8EE51695C9943882CF7D378652B /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; + ADD058F7306C4ACDB43F7873FE4E8173 /* SatisfyAnyOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAnyOf.swift; path = Sources/Nimble/Matchers/SatisfyAnyOf.swift; sourceTree = ""; }; + B20CB445D90A1CE2B7B87E1F3DCF4A1B /* UInt128.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UInt128.swift; path = Sources/CryptoSwift/UInt128.swift; sourceTree = ""; }; + B259EC6DCA52512FFC01E52EE545A125 /* MatcherProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherProtocols.swift; path = Sources/Nimble/Matchers/MatcherProtocols.swift; sourceTree = ""; }; + B2CC312D5EF974F8368A2D3ADF725F27 /* Pods-SwiftFlyer_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftFlyer_Tests-frameworks.sh"; sourceTree = ""; }; + B2F6762FDCA8EFDE505740FE82E88426 /* HaveCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HaveCount.swift; path = Sources/Nimble/Matchers/HaveCount.swift; sourceTree = ""; }; + B45EFB9DC1FD8D9ACD6547B0D1642EA5 /* GetChildOrdersRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetChildOrdersRequest.swift; sourceTree = ""; }; + B4E7E801440206041703DEFAF6651703 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Quick/Configuration/Configuration.swift; sourceTree = ""; }; + B61B97165870CF6476F2E8A240AD8A88 /* SwiftFlyer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftFlyer-dummy.m"; sourceTree = ""; }; + B8A7E428214369BBF1C7AF7AB3F2A0F1 /* GetPositionsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetPositionsRequest.swift; sourceTree = ""; }; + B968F9965415FC24B3D83837D6DB6C7C /* ExampleHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleHooks.swift; path = Sources/Quick/Hooks/ExampleHooks.swift; sourceTree = ""; }; + B988E2F832571736DAD041BDFF8E9E20 /* BeAKindOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAKindOf.swift; path = Sources/Nimble/Matchers/BeAKindOf.swift; sourceTree = ""; }; + BA419AD0DBF06751ECB62F90BDFF0575 /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/Nimble/Matchers/Async.swift; sourceTree = ""; }; + BA81AF8E55D0504F18C6A1E5E0DB5D0F /* QuickConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickConfiguration.m; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.m; sourceTree = ""; }; + BB1CFD53BD68333BAFF44CF0318D0ECA /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; + BB8D211AEEE7857E713FFAF09871F644 /* CwlCatchException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchException.swift; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchException/CwlCatchException.swift; sourceTree = ""; }; + BC13C658D4A8141D3B25E9E0AB6E61A9 /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; + BC2F27D97A7D40C9C17E63DA635A3A8B /* CurrencyCode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CurrencyCode.swift; sourceTree = ""; }; + BC8AC5950FE0F0F06D8990A43521FFC8 /* NMBExceptionCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBExceptionCapture.h; path = Sources/NimbleObjectiveC/NMBExceptionCapture.h; sourceTree = ""; }; + BCB9FF84195C32C1CA375D16C45F943B /* CoinStatus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CoinStatus.swift; sourceTree = ""; }; + BE7FE2309F60617099EED0D76DDEE1D5 /* NMBObjCMatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBObjCMatcher.swift; path = Sources/Nimble/Adapters/NMBObjCMatcher.swift; sourceTree = ""; }; + C03AE8527F89C6281883F1C4B0284D40 /* BeAnInstanceOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAnInstanceOf.swift; path = Sources/Nimble/Matchers/BeAnInstanceOf.swift; sourceTree = ""; }; + C0789028A11E6622D4DB87CB746CE613 /* ElementsEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ElementsEqual.swift; path = Sources/Nimble/Matchers/ElementsEqual.swift; sourceTree = ""; }; + C184EFF619C48EED0A6BE9BB51DD2895 /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; + C23A6152EF9F90DB70CA7A20DB576D68 /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; + C3068B3BC705908C4C4169D5B808CCD0 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Nimble/DSL.swift; sourceTree = ""; }; + C33EEBE7D0ACAE446F9138D6F0CF35F3 /* RaisesException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RaisesException.swift; path = Sources/Nimble/Matchers/RaisesException.swift; sourceTree = ""; }; + C3420A15A79BC0F6BF701B77CBF7E2A0 /* Quick.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Quick.modulemap; sourceTree = ""; }; + C35EF2BB0A76EBEEACDE66D49A938F3D /* GetAddressRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetAddressRequest.swift; sourceTree = ""; }; + C3B0AFEDA0C18A6EDB0B7DAC3485957A /* GetMarketListRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetMarketListRequest.swift; sourceTree = ""; }; + C3BEDBB59071A6AA70D0F6C1911208CA /* GetParentOrdersRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetParentOrdersRequest.swift; sourceTree = ""; }; + C4989F68D229C2A28AD2BA03F3011FFF /* CwlCatchException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlCatchException.h; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/include/CwlCatchException.h; sourceTree = ""; }; + C4CFEA28C82DD33CC377CF894B5EAE46 /* BeCloseTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeCloseTo.swift; path = Sources/Nimble/Matchers/BeCloseTo.swift; sourceTree = ""; }; + C4D187811AB7ECDA0182A190622445CF /* Pods-SwiftFlyer_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftFlyer_Tests-Info.plist"; sourceTree = ""; }; + C60E48E18E4929062AD9F5662B9C9DFB /* AllPass.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AllPass.swift; path = Sources/Nimble/Matchers/AllPass.swift; sourceTree = ""; }; + C61C39AF547E57991A6221C682D49D6A /* Quick-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-umbrella.h"; sourceTree = ""; }; + C77410623477C251573A1A94CA9607D0 /* NSBundle+CurrentTestBundle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSBundle+CurrentTestBundle.swift"; path = "Sources/Quick/NSBundle+CurrentTestBundle.swift"; sourceTree = ""; }; + C7D2D20B67137E200CADF268FC5DDBFC /* ApiSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ApiSession.swift; path = SwiftFlyer/ApiSession.swift; sourceTree = ""; }; + C7DF3B60E5478056479B0D25C86F8C93 /* GetBankAccountsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetBankAccountsRequest.swift; sourceTree = ""; }; + CB5C2BE3DF996AB886B837C07DFC8A2F /* SwiftFlyer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SwiftFlyer-Info.plist"; sourceTree = ""; }; + CB7296B7A46FE5397F38FC4DD5EA5BC0 /* GetBalanceRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetBalanceRequest.swift; sourceTree = ""; }; + CB80DC5F3D09B0A32F2A46453E558187 /* QuickSpecBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpecBase.h; path = Sources/QuickSpecBase/include/QuickSpecBase.h; sourceTree = ""; }; + CC8A7557CFC66E4DAAE858F38127A7A8 /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; + CCC2B67931212D7B589EAD7E986D1955 /* Pods-SwiftFlyer_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-SwiftFlyer_Example.modulemap"; sourceTree = ""; }; + CE9C508C62FC6B3E160F0454017BE838 /* CollateralHistory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollateralHistory.swift; sourceTree = ""; }; + CEB52AB907A111696B679ADB5B4A0C6B /* World.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = World.swift; path = Sources/Quick/World.swift; sourceTree = ""; }; + D08F6F4DABCE042A06488C1E86C327E8 /* CwlMachBadInstructionHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlMachBadInstructionHandler.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/include/CwlMachBadInstructionHandler.h; sourceTree = ""; }; + D0B52D34DD32780BDF9A735FCD80D45C /* RealTimeAPIDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RealTimeAPIDelegate.swift; path = SwiftFlyer/RealTimeAPIDelegate.swift; sourceTree = ""; }; + D1492B7C97631CA3FE509CA3201C9F15 /* BlockEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockEncryptor.swift; path = Sources/CryptoSwift/BlockEncryptor.swift; sourceTree = ""; }; + D15E04555B664B2242A747946EC76A0B /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; + D179D9F976E1CAB84091A2A6F4FFBAFC /* ExpectationMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpectationMessage.swift; path = Sources/Nimble/ExpectationMessage.swift; sourceTree = ""; }; + D1B22EB41AC623C72160637B5B1708C1 /* CwlMachBadInstructionHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlMachBadInstructionHandler.m; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/CwlMachBadInstructionHandler.m; sourceTree = ""; }; + D301F419E612A8C2581E4F250F232202 /* Pods-SwiftFlyer_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-SwiftFlyer_Tests.modulemap"; sourceTree = ""; }; + D3903978D11399EBCFCD29AE7CCCB0EA /* GetHelthStateRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetHelthStateRequest.swift; sourceTree = ""; }; + D9C7E539208662B36AEECFC555CF60F3 /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; + DA883FAD1BA3DD66F0B85C26B790AC63 /* PostOCOOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostOCOOrderRequest.swift; sourceTree = ""; }; + DCA362A7D7A95AFA475254ADA5AF476A /* SSLSecurity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSLSecurity.swift; path = Sources/Starscream/SSLSecurity.swift; sourceTree = ""; }; + DD941B36A9E7ACCF67CF73F6BE2CC0B9 /* Chat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Chat.swift; sourceTree = ""; }; + DE550273AB8A5183DA39D5C400BEABA8 /* Callsite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Callsite.swift; path = Sources/Quick/Callsite.swift; sourceTree = ""; }; + DFF5006171651975F3560EDCB1F2A5E5 /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; + E18364C815F8E583461BE6EA746BF13E /* Pods-SwiftFlyer_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftFlyer_Example-Info.plist"; sourceTree = ""; }; + E1921F062A7203FDDB22657598CEC3F1 /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; + E213C9EE4915DE31A7E35044962948C9 /* BeLogical.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLogical.swift; path = Sources/Nimble/Matchers/BeLogical.swift; sourceTree = ""; }; + E2623ABF5F41AA2E0ACC5A9951AAF86E /* StreamEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamEncryptor.swift; path = Sources/CryptoSwift/StreamEncryptor.swift; sourceTree = ""; }; + E58C10224CA7BCB185CD2188F420500F /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; + E61B879A6FE7CE9F19EDCC2EAF5B523B /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; + E90B5F0A2556086B949E78DB3F660D38 /* Example.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Example.swift; path = Sources/Quick/Example.swift; sourceTree = ""; }; + EABB1C2BAADC8942A168784EA5093B6C /* SwiftFlyer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftFlyer-prefix.pch"; sourceTree = ""; }; + EE2CDAE1A537AE9C6EE31783412EB8B9 /* CryptoSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-dummy.m"; sourceTree = ""; }; + EE8432F16EE87C33223BBA64D59D5A53 /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; + EF59FCA897B6F6EDBDCB770459B434A1 /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; + F07A2C278EE3721ACF4162639EF60321 /* Address.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Address.swift; sourceTree = ""; }; + F13DB55C51B6647EC01C8D920E30DB43 /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; + F35CE76FC5D66F6A0BBB1D8E065458D7 /* Functional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Functional.swift; path = Sources/Nimble/Utils/Functional.swift; sourceTree = ""; }; + F3D165F8B24E9476B12F1D89C1685062 /* Position.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Position.swift; sourceTree = ""; }; + F5318052403C415075FCB13902D916E1 /* GetTransferCoinHistoriesRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetTransferCoinHistoriesRequest.swift; sourceTree = ""; }; + F5949615735F5351FB267838C19CE5B2 /* PostIFDOCOOrderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PostIFDOCOOrderRequest.swift; sourceTree = ""; }; + F5EB11F10A935969B62FF9C82B81F657 /* QCKDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QCKDSL.m; path = Sources/QuickObjectiveC/DSL/QCKDSL.m; sourceTree = ""; }; + F6F66812753B309DDE58D4464C912B37 /* RequestableExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RequestableExtensions.swift; sourceTree = ""; }; + F72EC57384E8BDBE1B4A6A406B50B4F2 /* SwiftFlyer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftFlyer.modulemap; sourceTree = ""; }; + F76EAFFBCA9237B801C991C329AD231B /* Pods-SwiftFlyer_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwiftFlyer_Example-dummy.m"; sourceTree = ""; }; + F7CAD0D81C2F8895402078A8A5002CA2 /* CMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CMAC.swift; path = Sources/CryptoSwift/CMAC.swift; sourceTree = ""; }; + F8136C456D19087530C1A6BE21FE8679 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + F9F40A3A933BC6FB94A0F16522ADBB5C /* GetWithdrawsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetWithdrawsRequest.swift; sourceTree = ""; }; + FA0279EDD7573EF94A3AA65054401E18 /* ThrowAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowAssertion.swift; path = Sources/Nimble/Matchers/ThrowAssertion.swift; sourceTree = ""; }; + FBFB4FA187DB2611169ECCB6D07F1A2F /* Nimble.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.xcconfig; sourceTree = ""; }; + FCE5D3E74C29F350D6DF87703BC11BB0 /* QuickConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickConfiguration.h; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.h; sourceTree = ""; }; + FD3C14AC1E3A7F29950E75F79BC24673 /* Starscream-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Starscream-Info.plist"; sourceTree = ""; }; + FE4C7DCF28686F007156A10F7D9B593F /* MatchError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatchError.swift; path = Sources/Nimble/Matchers/MatchError.swift; sourceTree = ""; }; + FFAC4D53E58DE2B694B7CE50B57EE04B /* GetExecutionsRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetExecutionsRequest.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 4AC4DA7E7399D08F9049EF714DB0F980 /* Frameworks */ = { + 0AA3673C3080664AD4ADE741C144C988 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1244A706052D9315050DA74789936748 /* Foundation.framework in Frameworks */, - 6EDD89D5C68A89E32C3763CFBD286D48 /* XCTest.framework in Frameworks */, + 06ED6FC42DC62BEF90689EF9790B9A1D /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 819A9B65073BE3B5599196C0A3B27EBC /* Frameworks */ = { + 112619710F78B1BA140D6AC8F22DCB56 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 50698F14E7847E18B907E9373FBF4C21 /* Foundation.framework in Frameworks */, + 0A00A1489D4041380B2BABC394E6162A /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 883D256ECC663F4EBA1CC8A55B47E3EC /* Frameworks */ = { + 6F30F6BC9C2503E550CCB769581ABDE7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0037465FB5617E0B4E298240EDF79AEC /* Foundation.framework in Frameworks */, + D9A6956FCE1A11FF51DA52052ACEB692 /* CryptoSwift.framework in Frameworks */, + C8D243ADE9732711FFCDB903E819993F /* Foundation.framework in Frameworks */, + 8320D7F2EA107F0B33ADFD9E8373BEC8 /* Starscream.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 941D990465A668BD5DEA80C6D31667ED /* Frameworks */ = { + 952A489F5335C4835EB4C6C7C32DAA5A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DC19C8C9E1D0A3E93F387C220A45D5D9 /* CryptoSwift.framework in Frameworks */, - 32A6879498466093405B98511864075F /* Foundation.framework in Frameworks */, - 12C57311398E51F38AA588DCC121E594 /* Starscream.framework in Frameworks */, + 49D298F107CFE496C3BDB8E98012E45D /* Foundation.framework in Frameworks */, + 0C5A535C81861A6CD14EDF8CC500FB84 /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 957AB12528D6CB4CBD94C74661849472 /* Frameworks */ = { + C69A8FB9A33DBCE6523D7118A65D5D86 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 36332D3CC4C37AD2B60E014ED55B7E9A /* Foundation.framework in Frameworks */, + F84B5879379571438646CD96613E602F /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B78BFDB162C0B5C38B98149696E670D9 /* Frameworks */ = { + E3E0DD29C872931A298CAF5360EC25FC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 35C90BEF2F9B2EF2AFF5C902B6D42AF1 /* Foundation.framework in Frameworks */, + CDC8FEA31B2425EBB8C88A1FB210065F /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D586CDFA32BBF2C8152C258F15ABF516 /* Frameworks */ = { + F9F8CFCD3C9798C561B7623608D3C821 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CA18054768B1951EAD5BA07E5C917D15 /* Foundation.framework in Frameworks */, + 836B968E1EA15BA9CB9B2705638A2679 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 01FC109F38F2C838E30E2BDCC168692F /* Support Files */ = { + 1172722B9E8E0ED739C1BFAB3304B1DA /* Quick */ = { isa = PBXGroup; children = ( - F702EAA696D177D5E640689A4E18CCA1 /* Info.plist */, - F6A05D73623B94EE46B240DC481A69EC /* Nimble.modulemap */, - 6096AF0A0E42FA4AA497BED20BD987AA /* Nimble.xcconfig */, - 007AC25EC7F97B2F1D76018B5D48808C /* Nimble-dummy.m */, - 822B178FC09D0D1A9AFB97D97987ED13 /* Nimble-prefix.pch */, - AC642411A4F116F82EAC1FE6F1A214AB /* Nimble-umbrella.h */, + 123BD09E5B437D7DBBD10DC57F4CECAF /* Behavior.swift */, + DE550273AB8A5183DA39D5C400BEABA8 /* Callsite.swift */, + A698DCEB740ADF084D5D8FC98B3B8FB6 /* Closures.swift */, + B4E7E801440206041703DEFAF6651703 /* Configuration.swift */, + 794C8FBA8EA18DC57518650760C7C007 /* DSL.swift */, + 5508B83DA6B2818055D48EB1430C209E /* ErrorUtility.swift */, + E90B5F0A2556086B949E78DB3F660D38 /* Example.swift */, + 522260696BCADBF5D49D193661D30A08 /* ExampleGroup.swift */, + B968F9965415FC24B3D83837D6DB6C7C /* ExampleHooks.swift */, + A3B5FA0F9E252ACEECA7D512E686BF50 /* ExampleMetadata.swift */, + 346ED4D90963F002E6242D95BEEC6F4D /* Filter.swift */, + 2E03315C18F95AF5ECE50BFDCF23E690 /* HooksPhase.swift */, + C77410623477C251573A1A94CA9607D0 /* NSBundle+CurrentTestBundle.swift */, + 3BA19B6EDC5D4F760A7341828BAA73A8 /* QCKDSL.h */, + F5EB11F10A935969B62FF9C82B81F657 /* QCKDSL.m */, + 0F2DE4C2A4A51750BE722D5856A37682 /* Quick.h */, + FCE5D3E74C29F350D6DF87703BC11BB0 /* QuickConfiguration.h */, + BA81AF8E55D0504F18C6A1E5E0DB5D0F /* QuickConfiguration.m */, + A1686B4E24ECF924E94DD376D894C700 /* QuickSelectedTestSuiteBuilder.swift */, + A15406387201BBBCDB2516493F2B8040 /* QuickSpec.h */, + 4F49FB6C48C713465C68CDA3A6C0827E /* QuickSpec.m */, + CB80DC5F3D09B0A32F2A46453E558187 /* QuickSpecBase.h */, + A16A8C4E31C49EF87343A26663AC6BEB /* QuickSpecBase.m */, + 5FE417F490EA088BD7029C87B1736D02 /* QuickTestSuite.swift */, + 7F28474B25D07BCBC62F2848BCCA554B /* String+C99ExtendedIdentifier.swift */, + 022D079829314C4CF7A7CA3FCDA034F9 /* SuiteHooks.swift */, + 06E9F73EDE43F374564B100F88E743EA /* URL+FileName.swift */, + CEB52AB907A111696B679ADB5B4A0C6B /* World.swift */, + 0D13F8B80ABB62A88C4C45951F39D7B2 /* World+DSL.swift */, + 169981B6084F005D82ABB10A8755ECE5 /* XCTestSuite+QuickTestSuiteBuilder.m */, + 502B73CEBD436A0EE6A6B458607D0547 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Nimble"; + name = Quick; + path = Quick; sourceTree = ""; }; - 04E3C13151D0A069304A64B4246DE6A9 /* Requests */ = { + 125A6D4DBF3DFDBACC8EBCF8E0CC4410 /* Products */ = { isa = PBXGroup; children = ( - 0D226DA5DD26B6411FBDED6647FEE43D /* GetAddressRequest.swift */, - 375461931C265979B41003773F22B5EF /* GetBalanceRequest.swift */, - 26804FD869DE809893059C66D67BA59A /* GetBankAccountsRequest.swift */, - 652A79F144ACE69B05876EC53B2A55F6 /* GetBoarderStatusRequest.swift */, - 7AD5C0DF046BD7C9B32EAA18DDFA06A7 /* GetBoardRequest.swift */, - 220A361D08B03BECA0B3DB25AC225CBF /* GetChatsRequest.swift */, - C4285BB525B134623AF28744C23D08EC /* GetChildOrdersRequest.swift */, - C9FB7162B096AA1BCAE10CB188A85462 /* GetCollateralHistoriesRequest.swift */, - 42D90222C1A392330888028D1D608E2F /* GetCollateralRequest.swift */, - E0502CA19200CAF84F030FAA0F227C01 /* GetContractsRequest.swift */, - A5806FFECF497BD279ACE7686364E9D7 /* GetDepositCoinHistoriesRequest.swift */, - AC4D35EF29FC4D3D05E0F61C7959D06E /* GetDepositsRequest.swift */, - 4556FBD5ACE362D5F897D9D1E41373DB /* GetExecutionsRequest.swift */, - B575524D51973DF6D67E8BF751474069 /* GetHelthStateRequest.swift */, - 4EC49CDB444631EB696600B49A85AE12 /* GetMarketListRequest.swift */, - C429B1C2EC49E4BD92F6575F88FB1FEE /* GetParentOrderDetailRequest.swift */, - A7EE3CBD56B88DAC2FA46ADBCF5E9D38 /* GetParentOrdersRequest.swift */, - 05FF898783293B967DB07AA63550434A /* GetPermissionsRequest.swift */, - 1D7632746416C18753BDE7F898AA97C4 /* GetPositionsRequest.swift */, - 9EED4726B6066FA0A3ED1E41F88C211C /* GetTickerRequest.swift */, - 5469FEFC8B793EB3F4BE9A46F6497581 /* GetTraidingCommissionRequest.swift */, - 960DE468602BA4DAC1632C94DE544536 /* GetTransferCoinHistoriesRequest.swift */, - 9BA5CAC515E63D3D62D64DCDFF15AE28 /* GetWithdrawsRequest.swift */, - F0573C0AD72250F233B0A0581EF56DE5 /* PostCancelAllChildOrdersRequest.swift */, - E74D62C1FCA0CC23145C9149E84DDF72 /* PostCancelChildOrderRequest.swift */, - 2C60AC5F962F125AC799B07CB6425544 /* PostCancelParentOrderRequest.swift */, - CF148B9E70D7796513D0B2F68C0BE489 /* PostChildOrderRequest.swift */, - 8DFE2D98E329854CCD0FA39F9CA43F91 /* PostIFDOCOOrderRequest.swift */, - A974545224205019D3A814B567F7BB35 /* PostIFDOrderRequest.swift */, - F68C886FE93F29C3E5510F71F00B6278 /* PostOCOOrderRequest.swift */, - 60E5EB6920DE8F4A4D47E27ADC532AA1 /* PostSimpleOrderRequest.swift */, - 6483C8EF295B9CC2A68B29973344E1FC /* PostWithdrawRequest.swift */, + AAAE2B4525EA4B7752D307043C236598 /* CryptoSwift.framework */, + 27207F52ECDCBF9FDCAF10F25040C88D /* Nimble.framework */, + 22AA8E851992C99EE5D9865DE1EBECBF /* Pods_SwiftFlyer_Example.framework */, + 95F947B23CEA22476A008079645C8FEC /* Pods_SwiftFlyer_Tests.framework */, + 49BE3DDC5F8605766C93DC516672CA28 /* Quick.framework */, + 0714A41EAEF95D66A4ADD9C443899DA9 /* Starscream.framework */, + 7BAE4475AA96294744BAB524F5FB52F4 /* SwiftFlyer.framework */, ); - name = Requests; - path = SwiftFlyer/Requests; + name = Products; sourceTree = ""; }; - 07735E3BE502DA4D9EF04FBC366D394C /* Products */ = { + 149F9D3EF71232705FAC002B069D1E9F /* Targets Support Files */ = { isa = PBXGroup; children = ( - DDBD2C5FC43A16E84F07D5ED737885FC /* CryptoSwift.framework */, - 0D560E57E886EBD17524397221B6BD49 /* Nimble.framework */, - 8D81C866CBD78C4C6A8437AF9E74D3C9 /* Pods_SwiftFlyer_Example.framework */, - 7A00E99494B081791142D76983076D36 /* Pods_SwiftFlyer_Tests.framework */, - 2D506075381B3AC8B7E45E31753DB50F /* Quick.framework */, - BB245BF5CA3D9B8A5ABEC50447849B21 /* Starscream.framework */, - 4E0200637C4165361827DD48F82EF9DD /* SwiftFlyer.framework */, + 3D921664AC7819E8F81E5F18E1E2A7D7 /* Pods-SwiftFlyer_Example */, + 4F9A1AD441A315546EEF0EE9C160518E /* Pods-SwiftFlyer_Tests */, ); - name = Products; + name = "Targets Support Files"; sourceTree = ""; }; - 103F8AC37AD6A15F2A9D048A5B367B7F /* CryptoSwift */ = { + 222E33B6961B0EFC419BF440F6AFA991 /* Support Files */ = { isa = PBXGroup; children = ( - E8BF33588BD7AE4C25820DAD40CF6076 /* AES.swift */, - 13C488195907024275FBF6DC742B8B9E /* AES+Foundation.swift */, - E89C5572BAB98F811BB8466A4FD40779 /* AES.Cryptors.swift */, - 973A819AF5E4261DA046DFF51BBC30AB /* Array+Extension.swift */, - D2D9A8084EC4B6FC3DA7F44BC5F8B9CB /* Array+Extensions.swift */, - 9C40E7A03E3E38D1F6D1FE64394A4402 /* Array+Foundation.swift */, - 89D8D1CE48E7E123FBF984D428AFE774 /* Authenticator.swift */, - B01144D50A5EDDB39245A07473586272 /* BatchedCollection.swift */, - 0034136A9E6A22480B68EB52D55C2D5B /* Bit.swift */, - A8E71379D14A61CF7CB775E193D3A44C /* BlockCipher.swift */, - BC9A9F22ABB0E418C097F23BCFB810BB /* BlockMode.swift */, - 8A5231ADF0F6CA19FC18EDC0F0CFCBAB /* BlockModeOptions.swift */, - 8A0A6C73BF88581E62EC04929CE077C4 /* BlockModeWorker.swift */, - 8B6CB19428C224DF9AEF27B38DFBF075 /* Blowfish.swift */, - 9533510E2364604B707C77BE784880C2 /* Blowfish+Foundation.swift */, - AE148B28BC97B76ACF530C4A6BDB3053 /* CBC.swift */, - 30708021707D8D1F66C9C784BFE010F9 /* CFB.swift */, - 7D294CE36B47148DFBF7348243F572B1 /* ChaCha20.swift */, - 70A88A8EA563B5543F4D5DA7A135834E /* ChaCha20+Foundation.swift */, - AAA2647DB2AB53986069999AA5DA22C9 /* Checksum.swift */, - 554AD1E2AEADF50FE94549A182A0E1F0 /* Cipher.swift */, - F11FA0523F4430839C3A065AB265369A /* Collection+Extension.swift */, - 55D7FA756EE6023C7526FA4990B55339 /* Cryptors.swift */, - 14630064AC3D9D8D2A9CE0EC7ECC8CB3 /* CTR.swift */, - 1504FAE7D605CB4AA22808A89F3AF443 /* Data+Extension.swift */, - 61FCA0AD0038E50AD5FF8B5CB37A8F47 /* Digest.swift */, - B6395593EF227FC9A8DBAD0D7485FC05 /* DigestType.swift */, - 74A47753A8215E5E41750CA5BA67DBA0 /* ECB.swift */, - 280000CA840ED5274F6D902D79AB2908 /* Generics.swift */, - E391EE5FB468CC35518C23BF6A5AD0C9 /* HKDF.swift */, - 3C86CD1FF66440F6D30DC5789DA31D8C /* HMAC.swift */, - 4F6730796CD866770103041DE209C7BD /* HMAC+Foundation.swift */, - 955A3B6EDC014BA685477E1601464E0D /* Int+Extension.swift */, - C623649AC00E52CF39360EB5B3D22E59 /* MD5.swift */, - 3CDB38218CF227950282E87D4B2917B0 /* NoPadding.swift */, - 399DEC50B1BDB78BEECC13C053AB2B07 /* OFB.swift */, - 6EBC5E3DD8C5EB82B1F889BBBCF123E8 /* Operators.swift */, - A4BE817163E1C7844F88DA5B5A0ED51B /* Padding.swift */, - B07A23388E2E910F6FF90D493CFFC37F /* PBKDF1.swift */, - 2085696690F6D83BE71E968921DCAA8C /* PBKDF2.swift */, - 28A031A9D440EC97C6E052319D5DE02A /* PCBC.swift */, - 4327FDC2CC179D4EF8A37017FAA5C07F /* PKCS5.swift */, - 608C50F080693DF8FC03943F919B1839 /* PKCS7.swift */, - B0EE5B0E460DC54CABF8CC4FEF27BE97 /* PKCS7Padding.swift */, - A9948A695661F290ECA768EF4FBF905E /* Poly1305.swift */, - 50EA1065DAADA5F7CCBDC30E80AFB46A /* Rabbit.swift */, - F40F131151E091011E0285BE69C3F57D /* Rabbit+Foundation.swift */, - 8A1C4B39703FCE023BFF77B6409FBA61 /* RandomAccessBlockModeWorker.swift */, - 54884609DFCF072081571F8CA059A48B /* RandomAccessCryptor.swift */, - A2B0011CF06F1C574A69E9A96AF0FFD9 /* RandomBytesSequence.swift */, - 33DF2DA396A134D4B008F7360DBE0AB0 /* SecureBytes.swift */, - F52F49E6ABA3AE46F42D9D86765CD266 /* SHA1.swift */, - 3638A62C33808CFB4A209D791E8C56C8 /* SHA2.swift */, - 3F706C9330666ED55D166C44E1F960EA /* SHA3.swift */, - E3D7063454F94F3481D6B8190A0F0D13 /* String+Extension.swift */, - 37AD4E6137DEE6CD2DD6995B93BACC16 /* String+FoundationExtension.swift */, - 776A2FF4B89ECC18CA0248CEE77C194B /* UInt16+Extension.swift */, - 0A20EF9518D77A85F2F274F6E0C9E0D3 /* UInt32+Extension.swift */, - D3F747F6D39C3699C96F8D76ED6FE0F8 /* UInt64+Extension.swift */, - C1323B0468082404ED3EE614F665509E /* UInt8+Extension.swift */, - DE4E8128EF17BDFF127D9DF2A1496F8D /* Updatable.swift */, - 36561E695FECA0FA168B81EB40BA62E3 /* Utils.swift */, - BDC7C68B92F27C77DD38F61BC028C68A /* Utils+Foundation.swift */, - 699BFC7AD916218590D3AE966FD22624 /* ZeroPadding.swift */, - 5BA3603BE380D40DC1A0164A4DC2AAF0 /* Support Files */, + 0EAF10AF9325B1660908655866EBAA37 /* CryptoSwift.modulemap */, + 71F36FC5E680DF95656DD9EC484FE88F /* CryptoSwift.xcconfig */, + EE2CDAE1A537AE9C6EE31783412EB8B9 /* CryptoSwift-dummy.m */, + 051016DE75BB34423617BB3F0602362F /* CryptoSwift-Info.plist */, + 02B75269C4F87578F578CFB64DC917A3 /* CryptoSwift-prefix.pch */, + 73997F12ACCB42C3B7C806C6A6BA0220 /* CryptoSwift-umbrella.h */, ); - name = CryptoSwift; - path = CryptoSwift; + name = "Support Files"; + path = "../Target Support Files/CryptoSwift"; sourceTree = ""; }; - 2BD53CAEC15489A1E33F9697DB5D5CD8 /* Targets Support Files */ = { + 266DB21F6233D85255291B7F5D1FAA9C /* Models */ = { isa = PBXGroup; children = ( - CC56B53AB22B44CA1737D54B914F6BE9 /* Pods-SwiftFlyer_Example */, - 3093E52E84D059044B31D8A009E5286F /* Pods-SwiftFlyer_Tests */, + F07A2C278EE3721ACF4162639EF60321 /* Address.swift */, + 863F5BF984F12C832D817FF17865CECD /* Balance.swift */, + 692DB64642B7B43454BBEE4BB52E655F /* BankAccount.swift */, + 5AE10CC1A15B32A67BE67A54675B3422 /* Board.swift */, + 0E511CFBFA9E7CEB2D0F4E6CB198E614 /* BoarderStatus.swift */, + DD941B36A9E7ACCF67CF73F6BE2CC0B9 /* Chat.swift */, + 9D886695B6A65B41E390A76446DA489E /* ChildOrderResult.swift */, + 5C477037E0DD96CBA60BC7F6DEF354A7 /* ChildOrders.swift */, + 7D727571FFF5F1922B5028D0A3D7260D /* ChildOrderType.swift */, + 43B42A3B062D1D4083336FC0AC44DA99 /* CoinHistory.swift */, + BCB9FF84195C32C1CA375D16C45F943B /* CoinStatus.swift */, + ABEE8A2030F0F754ACD8218AAF55EA1C /* Collateral.swift */, + CE9C508C62FC6B3E160F0454017BE838 /* CollateralHistory.swift */, + 609ED20F3B89E6FE73DF109761C004F7 /* ConditionType.swift */, + 26ECC9E6D3AA6FE1930C48B2D10BD99F /* Contract.swift */, + BC2F27D97A7D40C9C17E63DA635A3A8B /* CurrencyCode.swift */, + 1B7C4F13055FB4E73ACEAFBB240002C5 /* DepositHistory.swift */, + 0CCD6F66B2F0C01448198ABBC2B51763 /* Executions.swift */, + 86560D75522BCB3F9C3C5046BD5743A9 /* HealthState.swift */, + 47C212B3C661BCAC9A623936E278D570 /* Market.swift */, + 97088E22F6BC1BB143AB0D5EEF34032A /* MessageID.swift */, + 3E85F07008F68FD5E69E28F44977BB3E /* OnlyStatusCodeResponse.swift */, + 630D095F1825F9A2A305A545F643B74E /* Order.swift */, + 5D30EE8F255DA4F5837E972B81933F88 /* OrderState.swift */, + 9CC533BB81E4D746E6FDEBC8A6039FDE /* ParentOrderDetail.swift */, + 61BFDEFFE984D4D42D99D174F8D6F2E6 /* ParentOrderResult.swift */, + 6CE6CDF71FDD7702607BFA2126D36F04 /* ParentOrders.swift */, + 40AA0884EE07579BED75335B60047277 /* ParentOrderType.swift */, + 2CF6801C7BD14BCC8F85B3F3F9E48E2B /* Permission.swift */, + F3D165F8B24E9476B12F1D89C1685062 /* Position.swift */, + 71D8377DB4EF9F7B3005E9CD874741A7 /* PositionSide.swift */, + 738724FABA22EE1C8F5BBAF6F1C1FCA2 /* ProductCode.swift */, + 6F60C743D46623439A89286D409C71F5 /* Ticker.swift */, + 25900A67B148B732562B3ADEFA63A632 /* TimeInForce.swift */, + 99941C6623CE4C5FF16C8F9FA51120FD /* TradeHealth.swift */, + 4FB09AEDA311BB869E2F6E67B8714D39 /* TradeState.swift */, + 805270BA384838EC46E425E6E73A6268 /* TradingCommission.swift */, + 88F003D02EA31C04C660C54681DD5E10 /* WithdrawHistory.swift */, ); - name = "Targets Support Files"; + name = Models; + path = SwiftFlyer/Models; sourceTree = ""; }; - 2CCC2C1E68414A9E0A2BFC9175B0D2A8 /* SwiftFlyer */ = { + 3D921664AC7819E8F81E5F18E1E2A7D7 /* Pods-SwiftFlyer_Example */ = { isa = PBXGroup; children = ( - 783CB9E0AC85FF8E302FE061743698DA /* ApiSession.swift */, - 58823C75D89498D7ADE576AA10FAED76 /* BitFlyer.swift */, - B375EA7EDDAFCC7889E060A112D2260C /* HTTPMethod.swift */, - 39BD1DE94489D5C17C3ABBDC27AAB750 /* RealTimeAPI.swift */, - BA32E2AA8D4130A264DFB56E543BFD9E /* RealTimeAPIDelegate.swift */, - 8A957AE0509EABF54AE5CB4470429A33 /* Requestable.swift */, - 6CE8555E3C61304E9D748C84F0E88B38 /* ResponseError.swift */, - EDF14423BCF9775074A3BFEA0BDAF89D /* Result.swift */, - 7D5E391D265A21541089FFB44682EC31 /* Extensions */, - F76CAE5CD584C124B18F99912A4F9B1A /* Models */, - 953D5330F363262A50DA1AD96AE7F36F /* Pod */, - 04E3C13151D0A069304A64B4246DE6A9 /* Requests */, - EA70E8C8B613B6F78AF90AD1CDB1C8CE /* Support Files */, + CCC2B67931212D7B589EAD7E986D1955 /* Pods-SwiftFlyer_Example.modulemap */, + 9F05B2975914243EA279BC22644BDA56 /* Pods-SwiftFlyer_Example-acknowledgements.markdown */, + 16AFA10B0EEC6919239AD22724CBAEFF /* Pods-SwiftFlyer_Example-acknowledgements.plist */, + F76EAFFBCA9237B801C991C329AD231B /* Pods-SwiftFlyer_Example-dummy.m */, + 6D4E423625E7064712E7424B1E541B0C /* Pods-SwiftFlyer_Example-frameworks.sh */, + E18364C815F8E583461BE6EA746BF13E /* Pods-SwiftFlyer_Example-Info.plist */, + 49E8249D2F6921B3FF8CD1C333481DEE /* Pods-SwiftFlyer_Example-umbrella.h */, + 911372DAD77256623CC631586D6B8CA8 /* Pods-SwiftFlyer_Example.debug.xcconfig */, + 4F2406A4CE0DFF2DAC338A5DFF31D43B /* Pods-SwiftFlyer_Example.release.xcconfig */, ); - name = SwiftFlyer; - path = ../..; + name = "Pods-SwiftFlyer_Example"; + path = "Target Support Files/Pods-SwiftFlyer_Example"; sourceTree = ""; }; - 3093E52E84D059044B31D8A009E5286F /* Pods-SwiftFlyer_Tests */ = { + 40DA034D7192B7BB983E3052F2BA4E76 /* SwiftFlyer */ = { isa = PBXGroup; children = ( - BF95FC320488C4FBE9442D9793201769 /* Info.plist */, - 651167F6BE05D4B88C7C49D19A86C530 /* Pods-SwiftFlyer_Tests.modulemap */, - CC9DE89677D72DE127C3533ED9A0677D /* Pods-SwiftFlyer_Tests-acknowledgements.markdown */, - FE10FBCD4DDCE25D22FBFF0E953382E9 /* Pods-SwiftFlyer_Tests-acknowledgements.plist */, - 98115B61602435E016E70671ABB8A11C /* Pods-SwiftFlyer_Tests-dummy.m */, - E63326F0495276248AF357A58B1E366B /* Pods-SwiftFlyer_Tests-frameworks.sh */, - 0523B4ACC00736D8C5AEB2952E11B21C /* Pods-SwiftFlyer_Tests-resources.sh */, - 3F058913292922092E3AA9F017D37320 /* Pods-SwiftFlyer_Tests-umbrella.h */, - 3BF12D4A3D0FFB957C09BE974DB904DB /* Pods-SwiftFlyer_Tests.debug.xcconfig */, - 158E1903D9048581E4C1668F5F10DE3A /* Pods-SwiftFlyer_Tests.release.xcconfig */, + C7D2D20B67137E200CADF268FC5DDBFC /* ApiSession.swift */, + 8F4B3248C59083056AA7787FB867C6CA /* BitFlyer.swift */, + 9AED5E5A8D7A0BFE943CE3427D5A9887 /* HTTPMethod.swift */, + 9D9F05CB49D7D7D80C82152A06DCC6CB /* RealTimeAPI.swift */, + D0B52D34DD32780BDF9A735FCD80D45C /* RealTimeAPIDelegate.swift */, + 25E38D9DA891AB5CFCCA51AFB2DAA0D5 /* Requestable.swift */, + 285127DE18C1C6DBB56A857BB9A4D15C /* ResponseError.swift */, + 5BD8860281A72A04E815B6EBBDBE7764 /* Result.swift */, + C9CD6DAD47845918D49A609D174AF5D2 /* Extensions */, + 266DB21F6233D85255291B7F5D1FAA9C /* Models */, + DCF831663DD59F229F79AAFBC54A310D /* Pod */, + BD704CEC7689A3171452A0FBB79ABE49 /* Requests */, + 974A7F20E263B296A58F5918B98BD4CA /* Support Files */, ); - name = "Pods-SwiftFlyer_Tests"; - path = "Target Support Files/Pods-SwiftFlyer_Tests"; + name = SwiftFlyer; + path = ../..; sourceTree = ""; }; - 3DD3E480550E8C321DE3E91A36B0864F /* Nimble */ = { + 42B715A7FCE4AACCDCEBB5146ED74178 /* iOS */ = { isa = PBXGroup; children = ( - 2EB413FDACEA5F4847C43055C86481FD /* AdapterProtocols.swift */, - 9D9F819F217C4AADF5142B20BF2F7FBB /* AllPass.swift */, - 2F2DA68782C5D85D789DCA083C66BBFA /* AssertionDispatcher.swift */, - A9AB35B2FA4C5E506B1E43B92CED159D /* AssertionRecorder.swift */, - 58B87950A3EDF7865F55765846385D5D /* Async.swift */, - 41A7FFC0862DFF111C6E16525CD575B2 /* AsyncMatcherWrapper.swift */, - 812992601CC33D447763C0CB3D01258A /* BeAKindOf.swift */, - 7C277A919C0E34A4BCA053A0A1B444AD /* BeAnInstanceOf.swift */, - 4C174CA1E398A8E375FE6206A797B2D8 /* BeCloseTo.swift */, - EEC65775803AE4107C5F146F531A9593 /* BeEmpty.swift */, - 814248A0C0806542F6C1A83D5BC9F059 /* BeginWith.swift */, - A46E849EB2A28D0D467FFC51E399EF98 /* BeGreaterThan.swift */, - EFD8D616AFA77105F3629E55ABC18482 /* BeGreaterThanOrEqualTo.swift */, - 625A301504D51F3D082C0E8581A4EDB1 /* BeIdenticalTo.swift */, - 4A96FD818DEEC57CED732736498DD81A /* BeLessThan.swift */, - 33D678852DEB0A551C8BD94BB231A38F /* BeLessThanOrEqual.swift */, - 418257C181B68D78D4E4A973682182F3 /* BeLogical.swift */, - 4FAD198535E799218207A389C3DE40BA /* BeNil.swift */, - 9F174958E5AB3DC11C3EEB37FFCE8FAD /* BeVoid.swift */, - 8DBE2EFD417A0861D9E692F2AB8C6EE4 /* Contain.swift */, - 4C8182D2F5C76DF1C6E6F8585449A919 /* ContainElementSatisfying.swift */, - BFBB1BA3F8803072E77F3B994C9A0623 /* CurrentTestCaseTracker.h */, - 984C88721FC80198C4E0B4ACB6293900 /* CwlBadInstructionException.swift */, - FEFA3076FB54886C251E329E30AB7103 /* CwlCatchBadInstruction.swift */, - 0ACB4E89C4664C9281321BD0FF34BACF /* CwlCatchException.h */, - 2F29E407248C26C3B1499FAFFD5711DB /* CwlCatchException.m */, - 0C0D5B76E79990C9E507C53283809FEF /* CwlCatchException.swift */, - A35BE1E678799867D23BD4B26368445A /* CwlDarwinDefinitions.swift */, - 11C368A1F40F492046575302829D2791 /* CwlMachBadInstructionHandler.h */, - 1AF3B8AC56B5B19295D30C66376F80AA /* CwlMachBadInstructionHandler.m */, - 7339B714C89CE62ADBBA23EA9F564F45 /* CwlPreconditionTesting.h */, - A684233A6F218F413DADB5799DD0BC73 /* DSL.h */, - 9AB549D3A091EBBFDA4703AEF0D14E97 /* DSL.m */, - 14B475B40169DE9CE7715E5F5442F5BF /* DSL.swift */, - 29C3887672A9E09262ED423FD7921403 /* DSL+Wait.swift */, - 6ABB54CBA1D0A648690CCCF8CC6E2739 /* EndWith.swift */, - 07CA4D9D12A0D107A7AF17D735F2A16E /* Equal.swift */, - A81D61BDBA85C0C2C94251956FEE220F /* Errors.swift */, - B85986E449F6BD28D1136E49689D48C5 /* Expectation.swift */, - 3FAA8FF976692E8DA825AEBA233F46C9 /* ExpectationMessage.swift */, - F6A0A9A23452B6294B896763B213333C /* Expression.swift */, - 7AAD93420F5C8482D8E2C84438E5C829 /* FailureMessage.swift */, - 7478905852B997538A8241B69582D7F5 /* Functional.swift */, - 2517929D14088ED1ADB734A0A5FD7166 /* HaveCount.swift */, - 33F3FF8080ADFFDD2A774F6B5FBA7842 /* mach_excServer.c */, - 9C01DC78B0F3AF8D3D6257798C0E2E43 /* mach_excServer.h */, - 1519010BBB6481C9BC89D3ADC2089ABC /* Match.swift */, - 708ABDEF11619B30B3E2EA76EF935164 /* MatcherFunc.swift */, - 02CADE1364ED6D24DB4644A7515397A5 /* MatcherProtocols.swift */, - 062733E497942FD42CE25439910D4D18 /* MatchError.swift */, - B678ADEDB67D0466C0654C30811950BF /* Nimble.h */, - BBDC9AD9C4B6F36A6EAC0ADC58274D93 /* NimbleEnvironment.swift */, - 71EFA2EE86202CB315D55BA8E4960C5A /* NimbleXCTestHandler.swift */, - 123B73C8B3B602E16856646D034D4C9E /* NMBExceptionCapture.h */, - E58EE668A53F4C77C98869A0CC645900 /* NMBExceptionCapture.m */, - D522D184896916E3410377215924180C /* NMBExpectation.swift */, - C8283C85647B006514F915C70A069280 /* NMBObjCMatcher.swift */, - 37DE0FAF724685B6E286723DB23FEF6A /* NMBStringify.h */, - DF20F56415E5F45D046F08C0D7B3424F /* NMBStringify.m */, - 0C748A87C709650690438EB092E0D77E /* PostNotification.swift */, - 5E2C4C80D0DF04D4DBC7709BCFA49F07 /* Predicate.swift */, - 48732E3EC65A0F892A08AA9F702A08F3 /* RaisesException.swift */, - C033DBF4B6F898D4CDCAB0FF112026DC /* SatisfyAnyOf.swift */, - 50F59B0A4C674621696A613E83F40E91 /* SourceLocation.swift */, - 0A1DCFD9BB46A645217E74461B6A5334 /* Stringers.swift */, - D60A82BA63FAB372E86E9C3EA27C2A1A /* ThrowAssertion.swift */, - 93B1417EBEB96E67CD97B88FBCCC803F /* ThrowError.swift */, - 792D3CEBC116D60C0C87174C691FAC59 /* ToSucceed.swift */, - 8DA512C0A82F359D65F337D80458A8A6 /* XCTestObservationCenter+Register.m */, - 01FC109F38F2C838E30E2BDCC168692F /* Support Files */, + F8136C456D19087530C1A6BE21FE8679 /* Foundation.framework */, + 9E79F6AC6E7B3BB68616A0B2228E6F71 /* XCTest.framework */, ); - name = Nimble; - path = Nimble; + name = iOS; sourceTree = ""; }; - 45B6632A92C7B272664CAE91D2B80BF0 /* Support Files */ = { + 4F9A1AD441A315546EEF0EE9C160518E /* Pods-SwiftFlyer_Tests */ = { isa = PBXGroup; children = ( - 07DAC8F6AD702831D9B74733DE7EB441 /* Info.plist */, - 5383C77B1234894BF675C78E6EEB7655 /* Starscream.modulemap */, - 8C546E2EA9A5099A8139FF06A227582D /* Starscream.xcconfig */, - B4417E0815B1BD599C0AF1313EB3E6D3 /* Starscream-dummy.m */, - 35D3E6A006C22996B02DEB1D294346BD /* Starscream-prefix.pch */, - 2D789CE3A1F400F67E0551443F8CF69D /* Starscream-umbrella.h */, + D301F419E612A8C2581E4F250F232202 /* Pods-SwiftFlyer_Tests.modulemap */, + 09B469FD871645047336E17F7CED7C97 /* Pods-SwiftFlyer_Tests-acknowledgements.markdown */, + 294EE50BBD2FCA858F65BF283206A6CF /* Pods-SwiftFlyer_Tests-acknowledgements.plist */, + 2B51FD0E3E28BEE9C29A3FB4E0F30C98 /* Pods-SwiftFlyer_Tests-dummy.m */, + B2CC312D5EF974F8368A2D3ADF725F27 /* Pods-SwiftFlyer_Tests-frameworks.sh */, + C4D187811AB7ECDA0182A190622445CF /* Pods-SwiftFlyer_Tests-Info.plist */, + 78C60B1E627FC1D3E4695E61C57B4F34 /* Pods-SwiftFlyer_Tests-umbrella.h */, + 40DC247417491EFF44950FA47BA16DA5 /* Pods-SwiftFlyer_Tests.debug.xcconfig */, + A28E9BB5280B66E03E5B132E4A76868B /* Pods-SwiftFlyer_Tests.release.xcconfig */, ); - name = "Support Files"; - path = "../Target Support Files/Starscream"; + name = "Pods-SwiftFlyer_Tests"; + path = "Target Support Files/Pods-SwiftFlyer_Tests"; sourceTree = ""; }; - 4737D4D7D6D0D24CA9F776A04B3027A0 /* iOS */ = { + 502B73CEBD436A0EE6A6B458607D0547 /* Support Files */ = { isa = PBXGroup; children = ( - B9E86FA035C284340FE1A4012369D251 /* Foundation.framework */, - ACF1CF43AD71A6C56312D01C6F87A74A /* XCTest.framework */, + C3420A15A79BC0F6BF701B77CBF7E2A0 /* Quick.modulemap */, + 136C0BBD8ECF4D4ACAB2E7F6693B6816 /* Quick.xcconfig */, + 6DB79B9EEBD057B15E367C0A58377832 /* Quick-dummy.m */, + 5D4EFA3D56B162FDFBA00AB3753C2D63 /* Quick-Info.plist */, + 483A7A6D9A7C0229EFACB86054799D3A /* Quick-prefix.pch */, + C61C39AF547E57991A6221C682D49D6A /* Quick-umbrella.h */, ); - name = iOS; + name = "Support Files"; + path = "../Target Support Files/Quick"; sourceTree = ""; }; - 5BA3603BE380D40DC1A0164A4DC2AAF0 /* Support Files */ = { + 67CF476C1AC916BE73EA35705C6804DC /* Pods */ = { isa = PBXGroup; children = ( - 13AD6068B0131C0832F0EE57911B8DBE /* CryptoSwift.modulemap */, - B6EC1F79FEADCB660CE46513CA4A6764 /* CryptoSwift.xcconfig */, - 974412BF0AF3C28924A478DA832C2BA5 /* CryptoSwift-dummy.m */, - DE1337879581C2CC144F083DF562C566 /* CryptoSwift-prefix.pch */, - 287F7B0FD6720079EEDF973396B4BD62 /* CryptoSwift-umbrella.h */, - 73885258C8929B52F09D05F60C0F4E66 /* Info.plist */, + B9CAB7B28745223E3DF7604948B72FA4 /* CryptoSwift */, + B02135A7F4A52E45D5D59E6494B78334 /* Nimble */, + 1172722B9E8E0ED739C1BFAB3304B1DA /* Quick */, + 72990ED7847340DFC978E0F23F0F24C7 /* Starscream */, ); - name = "Support Files"; - path = "../Target Support Files/CryptoSwift"; + name = Pods; sourceTree = ""; }; - 7070FB6425679E6A428744EDA2A5576A /* Pods */ = { + 72990ED7847340DFC978E0F23F0F24C7 /* Starscream */ = { isa = PBXGroup; children = ( - 103F8AC37AD6A15F2A9D048A5B367B7F /* CryptoSwift */, - 3DD3E480550E8C321DE3E91A36B0864F /* Nimble */, - 737E3E478BC59AEE21D1A839E0150DDC /* Quick */, - E877497A6F0F09BA2CE49E26E81912C9 /* Starscream */, + 84610FB423F894B5F00FBA565E454D90 /* Compression.swift */, + 08E04C4ED9FD2B230C450FA14E7EAC22 /* SSLClientCertificate.swift */, + DCA362A7D7A95AFA475254ADA5AF476A /* SSLSecurity.swift */, + 30AF59990BAAD533A992DCED888DF88E /* WebSocket.swift */, + 8248A96740A970BF40600E470D0BA4AE /* Support Files */, ); - name = Pods; + name = Starscream; + path = Starscream; sourceTree = ""; }; - 737E3E478BC59AEE21D1A839E0150DDC /* Quick */ = { + 8248A96740A970BF40600E470D0BA4AE /* Support Files */ = { isa = PBXGroup; children = ( - E4C2F956CE5C4612A8E3208F216E848A /* Behavior.swift */, - 90F0B7DD486A622CF8A7E4FE642CA9C9 /* Callsite.swift */, - 6C4985A8A219EC10371CD5DCDBCAFACF /* Closures.swift */, - AE5759664323C323391975836C4807CB /* Configuration.swift */, - 0B239461257B026CF33394A7FCEB5609 /* DSL.swift */, - 063BCDD4169161F5F96E6C40034DC6F9 /* ErrorUtility.swift */, - DF026D2696AE9A5F12D8768D05407877 /* Example.swift */, - 4D2143584112E82BB6CEC6FEA632A855 /* ExampleGroup.swift */, - CE7ED12C6D34DEB7AEE9146F53CD889D /* ExampleHooks.swift */, - 3689C145E9D8EF9C09D5D51B4BEBC6CC /* ExampleMetadata.swift */, - 90E8FADBCE398EB0694811111C6C37B1 /* Filter.swift */, - 5388B6FE95119E1E3F9E66C275F3135C /* HooksPhase.swift */, - 00DC53EDBF334AC456D9DF763ED9977B /* NSBundle+CurrentTestBundle.swift */, - 1E950BA61C11374D6DDE36896E65C855 /* NSString+C99ExtendedIdentifier.swift */, - D92EFCD5A2B442B9821DEE34BD6E33B1 /* QCKDSL.h */, - 85792316DDD8F37B79B25C7D69791F50 /* QCKDSL.m */, - 63CAC5635C067BCE1FE8ABC806808151 /* Quick.h */, - 785658597026D735E61F8B565FC76036 /* QuickConfiguration.h */, - 08815BCA07F1BE4E3143D29A5F614834 /* QuickConfiguration.m */, - 56ABBB1DEAD402F8FE78B8194E589354 /* QuickSelectedTestSuiteBuilder.swift */, - E9A58F0C45202FF1891223E6F2A28F0F /* QuickSpec.h */, - 666303DA16827C3B69B491CD916111BD /* QuickSpec.m */, - E109BF1DCD83F2C042AE93A5E7D30302 /* QuickSpecBase.h */, - 200ABE35E735A1F545CC9E49BA3CDFD3 /* QuickSpecBase.m */, - 01093B9C30957B578E271CB925081125 /* QuickTestSuite.swift */, - 30CB2BFCBCC31A4C0AB82765A87C47C0 /* SuiteHooks.swift */, - B2A299FCB7594B98757A656FCBC6A7C8 /* URL+FileName.swift */, - 644DFF6A1424A0B31B0BABD7F634B0FA /* World.h */, - 1BDEE817DA29A6BA5380A0DEA7A34AAE /* World.swift */, - 429787B2842AA3E4AFB4121135F8D2BB /* World+DSL.h */, - 39DE65C12966B0FD303653D5A261E1C7 /* World+DSL.swift */, - CE316E52617626C42F35320720DF3BA3 /* XCTestSuite+QuickTestSuiteBuilder.m */, - 7E3E5CD31B68B77A602D1142F22BBD53 /* Support Files */, + 4AF8BC1136AD4D63A2A5242025A672DC /* Starscream.modulemap */, + 6CB3CF30258C82EC5647BB18788CF801 /* Starscream.xcconfig */, + 3D06AD21D3073989CE862153DC618BE0 /* Starscream-dummy.m */, + FD3C14AC1E3A7F29950E75F79BC24673 /* Starscream-Info.plist */, + 319569DA69404E72F1B65AFEC42A8C6C /* Starscream-prefix.pch */, + 9A81FFD36A9EB1680595AC0C102C89E9 /* Starscream-umbrella.h */, ); - name = Quick; - path = Quick; + name = "Support Files"; + path = "../Target Support Files/Starscream"; sourceTree = ""; }; - 7D5E391D265A21541089FFB44682EC31 /* Extensions */ = { + 974A7F20E263B296A58F5918B98BD4CA /* Support Files */ = { isa = PBXGroup; children = ( - FB146C43D8C073E39253930EED24CE0B /* DictionaryExtensions.swift */, - D60D948EF38915A880CEA46A090CD32D /* RequestableExtensions.swift */, + F72EC57384E8BDBE1B4A6A406B50B4F2 /* SwiftFlyer.modulemap */, + 4214DF700A0E2B15D6141F36F78AB6C4 /* SwiftFlyer.xcconfig */, + B61B97165870CF6476F2E8A240AD8A88 /* SwiftFlyer-dummy.m */, + CB5C2BE3DF996AB886B837C07DFC8A2F /* SwiftFlyer-Info.plist */, + EABB1C2BAADC8942A168784EA5093B6C /* SwiftFlyer-prefix.pch */, + 133F1742FE5920764C1B0586F9D359D3 /* SwiftFlyer-umbrella.h */, ); - name = Extensions; - path = SwiftFlyer/Extensions; + name = "Support Files"; + path = "Example/Pods/Target Support Files/SwiftFlyer"; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + B02135A7F4A52E45D5D59E6494B78334 /* Nimble */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - BBDA99EE898A8D186B955F682EEB1A0B /* Development Pods */, - 91D99430E1CC0BA4EA5070B162D69086 /* Frameworks */, - 7070FB6425679E6A428744EDA2A5576A /* Pods */, - 07735E3BE502DA4D9EF04FBC366D394C /* Products */, - 2BD53CAEC15489A1E33F9697DB5D5CD8 /* Targets Support Files */, + 3F0947818EB04165531FEC18C5344B65 /* AdapterProtocols.swift */, + C60E48E18E4929062AD9F5662B9C9DFB /* AllPass.swift */, + A2BD13D3767CAD764BA2323E0733DAD1 /* AssertionDispatcher.swift */, + 87108EE3272301CDF2D9A12952169D64 /* AssertionRecorder.swift */, + BA419AD0DBF06751ECB62F90BDFF0575 /* Async.swift */, + 54DA8B2621A97BBB01C0836AF48306B7 /* Await.swift */, + B988E2F832571736DAD041BDFF8E9E20 /* BeAKindOf.swift */, + C03AE8527F89C6281883F1C4B0284D40 /* BeAnInstanceOf.swift */, + C4CFEA28C82DD33CC377CF894B5EAE46 /* BeCloseTo.swift */, + 5C1A81A55B269AC94FB58314ED668BEA /* BeEmpty.swift */, + 120675C39E2BDD23A15CEE331D0FE80C /* BeginWith.swift */, + 36582ECD297B1C877E9FAB032665D5AF /* BeGreaterThan.swift */, + 52981CF38D84DD3A0D1DFCC1EFA1D44C /* BeGreaterThanOrEqualTo.swift */, + 1CE6075B6D821289D1D83F4A59062FDB /* BeIdenticalTo.swift */, + 17B675A7AF8070B86B26D986C2FEA251 /* BeLessThan.swift */, + 109AD289E737622F73435A0064832144 /* BeLessThanOrEqual.swift */, + E213C9EE4915DE31A7E35044962948C9 /* BeLogical.swift */, + 051AE751702F58764C983A327CEBD2FC /* BeNil.swift */, + 2DB1CD7FFCCD362C860DB16D8B95EF5C /* BeVoid.swift */, + 8F55B78A3189D7EFB960325D684352D3 /* Contain.swift */, + 1A3775BA4D2E6ECBEB115E9A9B77B0F6 /* ContainElementSatisfying.swift */, + 9BC0EC7D8746D908EC251A005EB51E42 /* CwlBadInstructionException.swift */, + 48483C4BB4282BB99BCF3384F1253DCE /* CwlCatchBadInstruction.swift */, + C4989F68D229C2A28AD2BA03F3011FFF /* CwlCatchException.h */, + 9CA161A4578402836E01E0B98DDA2EFB /* CwlCatchException.m */, + BB8D211AEEE7857E713FFAF09871F644 /* CwlCatchException.swift */, + AD30593F90B3AE1A481F78BF9CAE9ABF /* CwlDarwinDefinitions.swift */, + D08F6F4DABCE042A06488C1E86C327E8 /* CwlMachBadInstructionHandler.h */, + D1B22EB41AC623C72160637B5B1708C1 /* CwlMachBadInstructionHandler.m */, + 63C8EC34C526C4AD160D3E1D81312236 /* CwlPreconditionTesting.h */, + 712C5F8A89367753D03F8FAA13840590 /* DSL.h */, + 1EE6D3FAA0247F981FCEA2BB2912393B /* DSL.m */, + C3068B3BC705908C4C4169D5B808CCD0 /* DSL.swift */, + 32FCAF3E5C8F65B07C24B60368FA28D0 /* DSL+Wait.swift */, + C0789028A11E6622D4DB87CB746CE613 /* ElementsEqual.swift */, + 56D98F35904BD94FEBD9F196E8EDD227 /* EndWith.swift */, + 5D4ADFB9D5D4A494501A4AF109E871C8 /* Equal.swift */, + 73D31472401D9E31DA01FAABF8384A12 /* Errors.swift */, + 3ACB9D139E3CA72B0F716655CEB04ECA /* Expectation.swift */, + D179D9F976E1CAB84091A2A6F4FFBAFC /* ExpectationMessage.swift */, + 850EA9D8DFED8842C9B7F249A576C3E8 /* Expression.swift */, + AC42ABFEB69DD4CC8CA91D09B09A4D93 /* FailureMessage.swift */, + F35CE76FC5D66F6A0BBB1D8E065458D7 /* Functional.swift */, + B2F6762FDCA8EFDE505740FE82E88426 /* HaveCount.swift */, + 19A179F54D1EDC5E7240C659FD6206C0 /* mach_excServer.c */, + 38E7EBD5B2BE8C0F133DFB3CC61E09CA /* mach_excServer.h */, + 1022D98DFF045AF66B2C56F57AC34A3E /* Match.swift */, + 7775BB87B934541154ED731580E803BB /* MatcherFunc.swift */, + B259EC6DCA52512FFC01E52EE545A125 /* MatcherProtocols.swift */, + FE4C7DCF28686F007156A10F7D9B593F /* MatchError.swift */, + 024C0CEFCEAA6EAA79E0B878A08615BA /* Nimble.h */, + 22F88E9A9017EF1EA6F20D5669D25AB6 /* NimbleEnvironment.swift */, + 93B27F0F9EE7EB97D422F0CA13221CA9 /* NimbleXCTestHandler.swift */, + BC8AC5950FE0F0F06D8990A43521FFC8 /* NMBExceptionCapture.h */, + 182E99783AAE8EEECAE2FDF560BA589B /* NMBExceptionCapture.m */, + 0DA0DB238B6A23B30B3BD6D0D09F47EF /* NMBExpectation.swift */, + BE7FE2309F60617099EED0D76DDEE1D5 /* NMBObjCMatcher.swift */, + 627CE7A70A40151AAFA6F224B0D85D2F /* NMBStringify.h */, + 017B93C35C19EC039E608AB93D400503 /* NMBStringify.m */, + 01F1F12119F02F7A05C0CF77B74B3BC6 /* PostNotification.swift */, + 77AD36D80944262BAF38A8AF1A043029 /* Predicate.swift */, + C33EEBE7D0ACAE446F9138D6F0CF35F3 /* RaisesException.swift */, + 3D71AC5325479BB67A1FF3E32E096299 /* SatisfyAllOf.swift */, + ADD058F7306C4ACDB43F7873FE4E8173 /* SatisfyAnyOf.swift */, + 15D4EBC1E82CF9C9E0BFA38513A7FEAD /* SourceLocation.swift */, + 38D4E50A26612149C728C5C60C70B807 /* Stringers.swift */, + FA0279EDD7573EF94A3AA65054401E18 /* ThrowAssertion.swift */, + 58879B62F11B494C91C24ECA715E24FC /* ThrowError.swift */, + 0102A9D8C3B4EFDBF1E96AC157FBABB5 /* ToSucceed.swift */, + 7CD2767523176019E2ABFEE31AEF91CE /* XCTestObservationCenter+Register.m */, + FA1C799FC23E44D03426346D81C0ABFE /* Support Files */, ); + name = Nimble; + path = Nimble; sourceTree = ""; }; - 7E3E5CD31B68B77A602D1142F22BBD53 /* Support Files */ = { + B9CAB7B28745223E3DF7604948B72FA4 /* CryptoSwift */ = { isa = PBXGroup; children = ( - A2CB6FE2EF14C17C08D5BDBA386CE835 /* Info.plist */, - 50B955C3DE361687879B4C019C0C77CE /* Quick.modulemap */, - 4DB0BEA06B37F88E05BA894799C86EAD /* Quick.xcconfig */, - C8A7F68BB1F249D5ABB471DAE40EDBFE /* Quick-dummy.m */, - D7142173BBF2B8883BE664B3195777FD /* Quick-prefix.pch */, - 7DBEAFF4A6B367DF859614E3CB701A18 /* Quick-umbrella.h */, + 6AE31F877EF6037E1A6EA418A0EBE7C7 /* AEAD.swift */, + 472E3A158793A48EF722858C51EBD007 /* AEADChaCha20Poly1305.swift */, + E1921F062A7203FDDB22657598CEC3F1 /* AES.swift */, + 98EFE03333C6AF96B6DC8046837CBC72 /* AES+Foundation.swift */, + CC8A7557CFC66E4DAAE858F38127A7A8 /* AES.Cryptors.swift */, + 2A93CAA2FEE946AC687524CD556952A9 /* Array+Extension.swift */, + C23A6152EF9F90DB70CA7A20DB576D68 /* Array+Foundation.swift */, + 457B2D53884DA5C11DD0D6B531F2376A /* Authenticator.swift */, + A916FD404CDE50811EE9653EC61C424C /* BatchedCollection.swift */, + A2E9E0556B19ACC35F8AA53460729B95 /* Bit.swift */, + 6D826E11A876CD081671A7410D6A6B07 /* BlockCipher.swift */, + 6A039B8B9DF57F3234CE5DFFC0DC656E /* BlockDecryptor.swift */, + D1492B7C97631CA3FE509CA3201C9F15 /* BlockEncryptor.swift */, + 2220D9B1358AD3F9D8FEEE272336ED31 /* BlockMode.swift */, + DFF5006171651975F3560EDCB1F2A5E5 /* BlockModeOptions.swift */, + 1AA1DF4608166D42C089E1931C14F1D6 /* Blowfish.swift */, + 77578112849C88F960CEA266A0CDD89F /* Blowfish+Foundation.swift */, + A5927E3351E482263BB340ED187BFA5A /* CBC.swift */, + 76ADDCABCD37D59C89803FEAFDB8DFD0 /* CBCMAC.swift */, + 7B6B165D3EE1BAD9794DC55149B73794 /* CCM.swift */, + 73AAA65242BAC40B3416D49BC9F45603 /* CFB.swift */, + C184EFF619C48EED0A6BE9BB51DD2895 /* ChaCha20.swift */, + 8F1F94878AA561EBC67A47F7C815E3AF /* ChaCha20+Foundation.swift */, + A606097B793AABCBBF10F3F7893BD1E1 /* Checksum.swift */, + EE8432F16EE87C33223BBA64D59D5A53 /* Cipher.swift */, + 5F3F401E04D2FB118ED3FC231DCA0583 /* CipherModeWorker.swift */, + F7CAD0D81C2F8895402078A8A5002CA2 /* CMAC.swift */, + 1D9B27609C355C584FAB0379E9BF075E /* Collection+Extension.swift */, + 6F63AD720278F23BF25801E8FAB81620 /* CompactMap.swift */, + 51098641BEC4F324B2CF4143C3668FD8 /* Cryptor.swift */, + 26E699203DEBAC6FEA976440CC5643FE /* Cryptors.swift */, + 157D2A2754BFCD6142DB5B00CD947A7A /* CTR.swift */, + EF59FCA897B6F6EDBDCB770459B434A1 /* Data+Extension.swift */, + D9C7E539208662B36AEECFC555CF60F3 /* Digest.swift */, + A6857D4BD3FFC85E4CF410B113EF7B16 /* DigestType.swift */, + 3B70DD81625D87328A77322CFD0EE93C /* ECB.swift */, + 8CE2FE483BB49D74D31C30D070EAD084 /* GCM.swift */, + 53382BF14EF7913AB1C8C70BDB4E4A50 /* Generics.swift */, + 6E9C025A41FBFAC2C4BCBDE65E86BE4C /* HKDF.swift */, + 77C16433315CEF65CA51D59ADA65C8AE /* HMAC.swift */, + 83EBCE7A7AB3FBAEFC54F591640098F2 /* HMAC+Foundation.swift */, + 42FFE1A199FBD9FEA46F8AC76DE980F1 /* Int+Extension.swift */, + 549B946663F83148E2033AFD48B9850A /* MD5.swift */, + 673BB5F2DC1E491CFDF20CE301EA938A /* NoPadding.swift */, + 9196845427029F01A9731DF8CE7D9874 /* OFB.swift */, + 2BBF7671C048CA71CB1D79CC4926121E /* Operators.swift */, + 0DB1EBE4EA2A97BC499B5175EF2E068A /* Padding.swift */, + 23B0838DAE4AC84DE7E18FD05289B7D3 /* PBKDF1.swift */, + 354DC3963D793362E5C7BBFDF2643C40 /* PBKDF2.swift */, + AD6BC8EE51695C9943882CF7D378652B /* PCBC.swift */, + BC13C658D4A8141D3B25E9E0AB6E61A9 /* PKCS5.swift */, + 34992E093ECD84F9F2DC95F3B06DB05E /* PKCS7.swift */, + 8A78D2F2D560F6373A782546C1F8CCDB /* PKCS7Padding.swift */, + 83120E42F920470E45379C51F064CDB1 /* Poly1305.swift */, + F13DB55C51B6647EC01C8D920E30DB43 /* Rabbit.swift */, + D15E04555B664B2242A747946EC76A0B /* Rabbit+Foundation.swift */, + 9823575D449D37BC0B8B574D31C134C2 /* RandomBytesSequence.swift */, + 8C5E43942F2AE9C2BFBEA824D668A0AB /* Scrypt.swift */, + 58CF0EF6399D0D2878244DA85265C4B1 /* SecureBytes.swift */, + 8163530C6FFA4B57A5A60FC0204B3DE9 /* SHA1.swift */, + E58C10224CA7BCB185CD2188F420500F /* SHA2.swift */, + 36A04BCDFF00A1E396D1F5DD3EF56B69 /* SHA3.swift */, + 0577783EDB0B9DDBA0BC953973B44AED /* StreamDecryptor.swift */, + E2623ABF5F41AA2E0ACC5A9951AAF86E /* StreamEncryptor.swift */, + 0BC020C62D071DCF40364050B46D6B73 /* String+Extension.swift */, + 495DCF4926FA59DEEBC4DF6E3E2A7F95 /* String+FoundationExtension.swift */, + B20CB445D90A1CE2B7B87E1F3DCF4A1B /* UInt128.swift */, + 41BC1F4CDC29F2716379F993F5C880AE /* UInt16+Extension.swift */, + 351CE574ACB9073427CD6CCC72220A46 /* UInt32+Extension.swift */, + 8C9AB6EDFF986B1B4F2298429AE992C6 /* UInt64+Extension.swift */, + E61B879A6FE7CE9F19EDCC2EAF5B523B /* UInt8+Extension.swift */, + 8BBF056B75D91C543DC752203D0358A9 /* Updatable.swift */, + 94DF965A81C8444C68630CAAB1DFAB19 /* Utils.swift */, + BB1CFD53BD68333BAFF44CF0318D0ECA /* Utils+Foundation.swift */, + 8872F55372175374BE2DD40D350B4E53 /* ZeroPadding.swift */, + 222E33B6961B0EFC419BF440F6AFA991 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Quick"; + name = CryptoSwift; + path = CryptoSwift; sourceTree = ""; }; - 91D99430E1CC0BA4EA5070B162D69086 /* Frameworks */ = { + BD704CEC7689A3171452A0FBB79ABE49 /* Requests */ = { isa = PBXGroup; children = ( - D8C568C2FEFAA7E3D3065666FDECD142 /* CryptoSwift.framework */, - C4F8DD710647E5EB7A87BFC8BB213BC4 /* Starscream.framework */, - 4737D4D7D6D0D24CA9F776A04B3027A0 /* iOS */, + C35EF2BB0A76EBEEACDE66D49A938F3D /* GetAddressRequest.swift */, + CB7296B7A46FE5397F38FC4DD5EA5BC0 /* GetBalanceRequest.swift */, + C7DF3B60E5478056479B0D25C86F8C93 /* GetBankAccountsRequest.swift */, + 54F45B1E7C0F5CEFC2904D841CC64CDE /* GetBoarderStatusRequest.swift */, + 8FE3B6F59D1130F1871D5D2FBC94BE05 /* GetBoardRequest.swift */, + 8A1FD3A7BF1596DEC21A334CEEE92A3A /* GetChatsRequest.swift */, + B45EFB9DC1FD8D9ACD6547B0D1642EA5 /* GetChildOrdersRequest.swift */, + 62C5B1A301D14AC3374A7C28FA4BD3B2 /* GetCollateralHistoriesRequest.swift */, + 1E1C30EA120D5E32B13C1C7F57B54764 /* GetCollateralRequest.swift */, + 8323E0C748A90B91BA76372A3DE83EE5 /* GetContractsRequest.swift */, + 72A18C9900E2EB1DDB96E6F21C2F895A /* GetDepositCoinHistoriesRequest.swift */, + A90FC78F440CC4D9C4B4262D1C7D8EC1 /* GetDepositsRequest.swift */, + FFAC4D53E58DE2B694B7CE50B57EE04B /* GetExecutionsRequest.swift */, + D3903978D11399EBCFCD29AE7CCCB0EA /* GetHelthStateRequest.swift */, + C3B0AFEDA0C18A6EDB0B7DAC3485957A /* GetMarketListRequest.swift */, + 9BFFD594F02008375A7CDBB651356C28 /* GetParentOrderDetailRequest.swift */, + C3BEDBB59071A6AA70D0F6C1911208CA /* GetParentOrdersRequest.swift */, + 1699D91AEACA3A3F7EDAB70146BB9834 /* GetPermissionsRequest.swift */, + B8A7E428214369BBF1C7AF7AB3F2A0F1 /* GetPositionsRequest.swift */, + 0EC2F584A90D28E373F86DE89E56BBA7 /* GetTickerRequest.swift */, + 8F4700C4A6F6AD767A87A4DCD4404E28 /* GetTraidingCommissionRequest.swift */, + F5318052403C415075FCB13902D916E1 /* GetTransferCoinHistoriesRequest.swift */, + F9F40A3A933BC6FB94A0F16522ADBB5C /* GetWithdrawsRequest.swift */, + 9E3A98E693CA0E64B7E9D6CA718FE7D9 /* PostCancelAllChildOrdersRequest.swift */, + A5278EB7CA5DE0DE3BCA526CC430F4CB /* PostCancelChildOrderRequest.swift */, + 6E06BA3A98F3418D053964B1C36BAEAE /* PostCancelParentOrderRequest.swift */, + 83D08B4E69925700C211136E986004CC /* PostChildOrderRequest.swift */, + F5949615735F5351FB267838C19CE5B2 /* PostIFDOCOOrderRequest.swift */, + 5DCDC81C03BB6A05BFE219F531046C79 /* PostIFDOrderRequest.swift */, + DA883FAD1BA3DD66F0B85C26B790AC63 /* PostOCOOrderRequest.swift */, + 4EA277FCAE41AFD4389415BC98386A32 /* PostSimpleOrderRequest.swift */, + 020F0630B74EB920D4F62236E308DC0B /* PostWithdrawRequest.swift */, ); - name = Frameworks; + name = Requests; + path = SwiftFlyer/Requests; sourceTree = ""; }; - 953D5330F363262A50DA1AD96AE7F36F /* Pod */ = { + C9CD6DAD47845918D49A609D174AF5D2 /* Extensions */ = { isa = PBXGroup; children = ( - 60EFB71D71760A2E4558787CFB473EDA /* LICENSE */, - 8175483F813B14C3ADE8B7E772C71996 /* README.md */, - 24B70E22BC55CC9A3ABD3711C10BAE24 /* SwiftFlyer.podspec */, + 4315064D695DD1D6EB4E4B4EBF5EE896 /* DictionaryExtensions.swift */, + F6F66812753B309DDE58D4464C912B37 /* RequestableExtensions.swift */, ); - name = Pod; + name = Extensions; + path = SwiftFlyer/Extensions; sourceTree = ""; }; - BBDA99EE898A8D186B955F682EEB1A0B /* Development Pods */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - 2CCC2C1E68414A9E0A2BFC9175B0D2A8 /* SwiftFlyer */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + EAF4F2F9735ABB61448A012B4AD9AD6D /* Development Pods */, + D0E9115611C0CC93C8756E76DF8F25C6 /* Frameworks */, + 67CF476C1AC916BE73EA35705C6804DC /* Pods */, + 125A6D4DBF3DFDBACC8EBCF8E0CC4410 /* Products */, + 149F9D3EF71232705FAC002B069D1E9F /* Targets Support Files */, ); - name = "Development Pods"; sourceTree = ""; }; - CC56B53AB22B44CA1737D54B914F6BE9 /* Pods-SwiftFlyer_Example */ = { + D0E9115611C0CC93C8756E76DF8F25C6 /* Frameworks */ = { isa = PBXGroup; children = ( - AC1114841FDCACB9FA7F8A26F12599AA /* Info.plist */, - D13600C6DCF461040C8E2F67B61DB3BF /* Pods-SwiftFlyer_Example.modulemap */, - 331C74C0C6BC45AC2EB3F10B6A839399 /* Pods-SwiftFlyer_Example-acknowledgements.markdown */, - 2AFDED3B763760FFE482353FC02662B1 /* Pods-SwiftFlyer_Example-acknowledgements.plist */, - F8DF0F807D17CD352E0F05E19AFDFB6F /* Pods-SwiftFlyer_Example-dummy.m */, - 6C46954F97B8BC75C90579C2082E33CF /* Pods-SwiftFlyer_Example-frameworks.sh */, - AD11A26348001A5B0C3279167655D3B8 /* Pods-SwiftFlyer_Example-resources.sh */, - 6B0732AE4A94FEF52F44974813571DD9 /* Pods-SwiftFlyer_Example-umbrella.h */, - 8648C67A0B2AB9657FA70214B0128732 /* Pods-SwiftFlyer_Example.debug.xcconfig */, - E371867E144E1D2DF20D50F88D9D40B2 /* Pods-SwiftFlyer_Example.release.xcconfig */, + A4CF6D4CBAC93A42A3CDBBBD0026DEB3 /* CryptoSwift.framework */, + 142D84CD9C23AF9389F2C909937804FF /* Starscream.framework */, + 42B715A7FCE4AACCDCEBB5146ED74178 /* iOS */, ); - name = "Pods-SwiftFlyer_Example"; - path = "Target Support Files/Pods-SwiftFlyer_Example"; + name = Frameworks; sourceTree = ""; }; - E877497A6F0F09BA2CE49E26E81912C9 /* Starscream */ = { + DCF831663DD59F229F79AAFBC54A310D /* Pod */ = { isa = PBXGroup; children = ( - B570BDA4C15FBF4D71A86EDC54136427 /* Compression.swift */, - 6C6B3A7B3E29AC66291C8AC95F9F7C7C /* SSLSecurity.swift */, - C2795767B203A6D4D4AE3CBC280C4C47 /* WebSocket.swift */, - 45B6632A92C7B272664CAE91D2B80BF0 /* Support Files */, + 6DF2E2CA998C63869033FBED5DDB431B /* LICENSE */, + 2242B8C443A19A84E8106E90AD7F6E3A /* README.md */, + A6E21E812B8D5080C82A11BE7E5543A7 /* SwiftFlyer.podspec */, ); - name = Starscream; - path = Starscream; + name = Pod; sourceTree = ""; }; - EA70E8C8B613B6F78AF90AD1CDB1C8CE /* Support Files */ = { + EAF4F2F9735ABB61448A012B4AD9AD6D /* Development Pods */ = { isa = PBXGroup; children = ( - 88058C4B1B6D7BA822CD40C4137D3723 /* Info.plist */, - 84CF5B350639A7D74CD7439E1252802E /* SwiftFlyer.modulemap */, - AD2F03CC2F2F88DD4C99D76DC5FA3493 /* SwiftFlyer.xcconfig */, - AEF764D179A7AA412C5CF9B2213125DB /* SwiftFlyer-dummy.m */, - 197B6DC19EDB1F4927B0F09DB092998D /* SwiftFlyer-prefix.pch */, - 21CA327C897C4762BBDD6BEEF0567A0A /* SwiftFlyer-umbrella.h */, + 40DA034D7192B7BB983E3052F2BA4E76 /* SwiftFlyer */, ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/SwiftFlyer"; + name = "Development Pods"; sourceTree = ""; }; - F76CAE5CD584C124B18F99912A4F9B1A /* Models */ = { + FA1C799FC23E44D03426346D81C0ABFE /* Support Files */ = { isa = PBXGroup; children = ( - 0AF909CD48FF39F5FE98806ACFBFC480 /* Address.swift */, - 237CB24140EEF9C3F88DFEC0190CF6CD /* Balance.swift */, - 1C8246A97BC2022A1BECD05848A28CB3 /* BankAccount.swift */, - 7FCCA9A39D2A1B29F36D3B2C1C236221 /* Board.swift */, - 17EB767AB31722BF344DB83859B0BBC7 /* BoarderStatus.swift */, - F018B2681D410E32154CC94220A56C11 /* Chat.swift */, - 2DA6FD1EC71ACBFB41E7F4A5EF282B1B /* ChildOrderResult.swift */, - 35C318E222E11AAE16624A514E997C35 /* ChildOrders.swift */, - 19F13CCEC6F0017E2E6E6F22FA1A636A /* ChildOrderType.swift */, - 00153D971D5FACFAABDC1879F65DC047 /* CoinHistory.swift */, - 624B6231EAF162A30629F0FEF87D6132 /* CoinStatus.swift */, - 3DB28CAB4519EE2422D5A68E6490A578 /* Collateral.swift */, - 20831CC6ED81A2F1F0C95613DCCE9DC2 /* CollateralHistory.swift */, - A108B7A80C19F0590C1C3E26DBE151CF /* ConditionType.swift */, - 1DC44215923F4F67E27E25E17972DEFE /* Contract.swift */, - EB113CCC8BFBDFCEEDEB459F32FAB83A /* CurrencyCode.swift */, - 6E3A31994E027EB363665D207CC7B4E5 /* DepositHistory.swift */, - 3FB0899BA7DF8C76F45C53AFA575A870 /* Executions.swift */, - 6623082DE267833C3042657F9E3B5067 /* HealthState.swift */, - 5F68764C01C570921D5C1843F89670AC /* Market.swift */, - 7DFD4B0CEC3489269B923796E72DB841 /* MessageID.swift */, - 9265258E4CDA2E0BD180C84F61D8643D /* OnlyStatusCodeResponse.swift */, - 60E27C5178A9878D02B0857BC3AF5EF1 /* Order.swift */, - A7BDA171BC971E3FAD7EA6B45F52254A /* OrderState.swift */, - CADA1074D03C51EE3F86EFD544D1FEB4 /* ParentOrderDetail.swift */, - D42BEFFC4B07302D81558B60E8170700 /* ParentOrderResult.swift */, - C3C411EEA3A277F0D8372CB834E5B947 /* ParentOrders.swift */, - 8F9A2B1BA4628981A6C18F14C255008A /* ParentOrderType.swift */, - 33B2272AFF792D38A7CA5D24456FF178 /* Permission.swift */, - 86EC793D7DC145013B6AAE5B2A442489 /* Position.swift */, - 591653C0AEB397E123DEA23B7EE82401 /* PositionSide.swift */, - C5B4099ACE85F09FB72E59CB2F2FA264 /* ProductCode.swift */, - DEF37EC96FC54F4DB84DA1A8442C67E9 /* Ticker.swift */, - 90DE819145B0BDF13D87FA3393E1BEBA /* TimeInForce.swift */, - 2DA16F8FBF1C3F83E948E3DD6B278073 /* TradeHealth.swift */, - 634A0577AC0FF68E262EA1387D1C8D69 /* TradeState.swift */, - 11178B6C610082D4FBA6B5B3B6014294 /* TradingCommission.swift */, - F4BAEC6C45BC94B9DC4DFABA90E89372 /* WithdrawHistory.swift */, + 1C6C92F2A2E076BC85BD2A8C98375283 /* Nimble.modulemap */, + FBFB4FA187DB2611169ECCB6D07F1A2F /* Nimble.xcconfig */, + 58350A97336095194AF9041E7D5B655D /* Nimble-dummy.m */, + AA20A4313F7D63E131DE3F7FC95A6F03 /* Nimble-Info.plist */, + 1D43610D6745C9E3DC6A6464D8529065 /* Nimble-prefix.pch */, + AA1B2871D31388CA6FF811BA9C5D737C /* Nimble-umbrella.h */, ); - name = Models; - path = SwiftFlyer/Models; + name = "Support Files"; + path = "../Target Support Files/Nimble"; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 165D3747C097DB2E4CA9DAD135E22C99 /* Headers */ = { + 005A4374B46C319A285835342F0E8756 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - EAA9E8594D3379B64DF31AA12EFFFF79 /* Starscream-umbrella.h in Headers */, + D764273D88C7F4927B9F7ECD4C4BE059 /* Starscream-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 30E632906193F6848B4079E6DD0A618F /* Headers */ = { + 0BE4AA1CFB0BFCC908FBF0366C02A73B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 7CF0E324910A270CDEC5FD99B8C2F038 /* Pods-SwiftFlyer_Tests-umbrella.h in Headers */, + 1BDA674B011972EE9EDC32ECAC1D3663 /* CryptoSwift-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4520A9B79F1A370E217D57A302CC1981 /* Headers */ = { + 1B52BA24F63939787CD3A194C48A0FBD /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 74DE9C0DBED7C14ED409BFAA17158E73 /* CryptoSwift-umbrella.h in Headers */, + 92C676FAFB9906CF1BA11A96DA111315 /* SwiftFlyer-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 59BD496AB782942F8305289556B3C7DB /* Headers */ = { + 5534021AD2D4635A45FB165B34667821 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 34168B64CC0C2ACF4B97999805AC6DCF /* Pods-SwiftFlyer_Example-umbrella.h in Headers */, + A36E5FDEB55E4DD907FAC7B7045DF833 /* Pods-SwiftFlyer_Example-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 85497845823171A47E23A59621A44463 /* Headers */ = { + DB8ACF2A9C0781C5B78ED7B864F1AF33 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 5AB9DB61D62D8BF7B1C734B373F361E7 /* CurrentTestCaseTracker.h in Headers */, - AAA2830BBCD86431B3EEB0ED968DF4A3 /* CwlCatchException.h in Headers */, - 35CADB1AD8E063A35DF68147F3183206 /* CwlMachBadInstructionHandler.h in Headers */, - 69B80157634D6FAF248D37F397732357 /* CwlPreconditionTesting.h in Headers */, - FB433A84B0A557CD5E5948A8B6705024 /* DSL.h in Headers */, - 6593C547A71CCEFC480CD578080A327F /* mach_excServer.h in Headers */, - 5DBCC0E4C72649C9A39A00D40D944DDA /* Nimble-umbrella.h in Headers */, - 0A2CA8B0DD7E300ABFCF1956E6B58248 /* Nimble.h in Headers */, - 22E9F6FA56858A5F7A5D664E5968ECB0 /* NMBExceptionCapture.h in Headers */, - 96132E7432F8DD315A88A07C6B4F9C72 /* NMBStringify.h in Headers */, + CCB1AB23B62DB3B6BCB5F4AA5496D8BA /* Pods-SwiftFlyer_Tests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 900F693E2991D0AD8FE5E885E8082145 /* Headers */ = { + E0A26B2D56C6E3CF30BAA26612EA621E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1FED2D0B6579CE173EA7E6B4E1BFA4AA /* SwiftFlyer-umbrella.h in Headers */, + 326469F9500A7368E36742C539AE6D4D /* QCKDSL.h in Headers */, + 0078B3BAEBF2E10A72AA609865BF516F /* Quick-umbrella.h in Headers */, + 006C8AC497B549AE7BEBCF93A11996A9 /* Quick.h in Headers */, + B29B61F898D52676014C24DBCB12B3A1 /* QuickConfiguration.h in Headers */, + A3B15075CC22996E65114FC3B6D0D344 /* QuickSpec.h in Headers */, + 0CEBC7BE11FFDCD42D9931FD964B76A6 /* QuickSpecBase.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - EE43566550392AA77060FD261CDD7188 /* Headers */ = { + F684E10CDA60BAC918A92251A0A1968A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 7ACE8217F850532A25AB709703AC9F86 /* QCKDSL.h in Headers */, - 662CB251C58B33CF7CE9C17F27A6D800 /* Quick-umbrella.h in Headers */, - 7339E79B4FCFC150D9387E55FB126B1E /* Quick.h in Headers */, - 015793F5D31BE0BD7AFEB5F4E1DE580F /* QuickConfiguration.h in Headers */, - 9A648E76F6760AD1D61247D715E37612 /* QuickSpec.h in Headers */, - 9B574F5F171D9CC0215152224E5B9144 /* QuickSpecBase.h in Headers */, - 2794274FC1FE105C8584FAD1B678F4A6 /* World+DSL.h in Headers */, - 175F1B1038B17F3FC944123CA8F7FADF /* World.h in Headers */, + E1C5AE23F3288A2E8A13489165FD3FF2 /* CwlCatchException.h in Headers */, + 05D6872E1E4C28423550C859B6E03820 /* CwlMachBadInstructionHandler.h in Headers */, + 38FEA25D16ACC1E6F5C696CD95B41A69 /* CwlPreconditionTesting.h in Headers */, + 9EEF9E84E580920E11E06170D25F65C3 /* DSL.h in Headers */, + 6FC59CBB360B3EF8E45D151D945BCA54 /* mach_excServer.h in Headers */, + C0367D0510CE9E409A33E9B356422017 /* Nimble-umbrella.h in Headers */, + 1FA0DEC9E883929115DD91352F570F3B /* Nimble.h in Headers */, + 30966E26266F62432C8E914340871113 /* NMBExceptionCapture.h in Headers */, + 74C4A30A55AC7DB057CE14BCA15299C4 /* NMBStringify.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 674F95267FDD3D4FDE4522A49DF42DF4 /* Pods-SwiftFlyer_Example */ = { + 04618ADD15BA1B3D67AF8D975DA34BAD /* SwiftFlyer */ = { isa = PBXNativeTarget; - buildConfigurationList = 2B83BB8C19C91C784722AA3D25C1F13D /* Build configuration list for PBXNativeTarget "Pods-SwiftFlyer_Example" */; + buildConfigurationList = 50D92DC916A25B532B47D23DDCA1F5F1 /* Build configuration list for PBXNativeTarget "SwiftFlyer" */; buildPhases = ( - 6F3D14AD8844F09FB61B6E5C0675D0DE /* Sources */, - 957AB12528D6CB4CBD94C74661849472 /* Frameworks */, - 59BD496AB782942F8305289556B3C7DB /* Headers */, + 1B52BA24F63939787CD3A194C48A0FBD /* Headers */, + 2E6B7ABA21D6D5EC0D5657D19E050092 /* Sources */, + 6F30F6BC9C2503E550CCB769581ABDE7 /* Frameworks */, + 06F03A2052B40927812F7CAF7479C211 /* Resources */, ); buildRules = ( ); dependencies = ( - 07F9DC78A61DE86868974BF5F61286D2 /* PBXTargetDependency */, - DD8484B4DAD78C21BB9C3B33645FE4BD /* PBXTargetDependency */, - 88A772AE320FA3ED185BF3B3117E1B78 /* PBXTargetDependency */, + FEA9985F545B0897F217EE07766BC1D4 /* PBXTargetDependency */, + F976293466ABD6CEDE3E232100FF86C1 /* PBXTargetDependency */, ); - name = "Pods-SwiftFlyer_Example"; - productName = "Pods-SwiftFlyer_Example"; - productReference = 8D81C866CBD78C4C6A8437AF9E74D3C9 /* Pods_SwiftFlyer_Example.framework */; + name = SwiftFlyer; + productName = SwiftFlyer; + productReference = 7BAE4475AA96294744BAB524F5FB52F4 /* SwiftFlyer.framework */; productType = "com.apple.product-type.framework"; }; - 9B7B83B589D172B9D0A1450AFDCC891A /* Starscream */ = { + 4199AFA0D6B764FC01BD5903BE7D1CAF /* CryptoSwift */ = { isa = PBXNativeTarget; - buildConfigurationList = 9269BAECFFD4175D15E93D6204807CDA /* Build configuration list for PBXNativeTarget "Starscream" */; + buildConfigurationList = 06FA395FFEAF5E28FA7208D7C6BD74D0 /* Build configuration list for PBXNativeTarget "CryptoSwift" */; buildPhases = ( - 1367C0AE728DF6DA8DA8C43FFD1057A6 /* Sources */, - 883D256ECC663F4EBA1CC8A55B47E3EC /* Frameworks */, - 165D3747C097DB2E4CA9DAD135E22C99 /* Headers */, + 0BE4AA1CFB0BFCC908FBF0366C02A73B /* Headers */, + 4723685B13526BF5C2E12DE28C2F334F /* Sources */, + 112619710F78B1BA140D6AC8F22DCB56 /* Frameworks */, + 2E9AA85742E9AEED9BC015B266EEA3C9 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = Starscream; - productName = Starscream; - productReference = BB245BF5CA3D9B8A5ABEC50447849B21 /* Starscream.framework */; + name = CryptoSwift; + productName = CryptoSwift; + productReference = AAAE2B4525EA4B7752D307043C236598 /* CryptoSwift.framework */; productType = "com.apple.product-type.framework"; }; - AD0D4DBDC5BBF5CF713DE02CD90681AA /* Pods-SwiftFlyer_Tests */ = { + 4529B069CB2A703C12A29AC9E4ADDE25 /* Pods-SwiftFlyer_Example */ = { isa = PBXNativeTarget; - buildConfigurationList = 45CF398CE752AB13CF1CD1B59C8B2718 /* Build configuration list for PBXNativeTarget "Pods-SwiftFlyer_Tests" */; + buildConfigurationList = F2E4CB74C7F3C05127E323F94C197DE7 /* Build configuration list for PBXNativeTarget "Pods-SwiftFlyer_Example" */; buildPhases = ( - E9B7A2993A09E52BEB329145FE111E15 /* Sources */, - D586CDFA32BBF2C8152C258F15ABF516 /* Frameworks */, - 30E632906193F6848B4079E6DD0A618F /* Headers */, + 5534021AD2D4635A45FB165B34667821 /* Headers */, + 9F825C1D6AC6991569F95D25D78E2BE3 /* Sources */, + C69A8FB9A33DBCE6523D7118A65D5D86 /* Frameworks */, + 46DB61D38A73705A9B89AEDB2EE288D0 /* Resources */, ); buildRules = ( ); dependencies = ( - 679056975BCD81DB9C18EED11833125A /* PBXTargetDependency */, - 1868C06C4F09C89D30AAE98B901E1C93 /* PBXTargetDependency */, + FFDDA6DBB3813359F2B814779A22D19D /* PBXTargetDependency */, + 9E93B069F9B326A123E324651A9D2272 /* PBXTargetDependency */, + B121DB8C7C9E38A49A59F7FB499E8CBD /* PBXTargetDependency */, ); - name = "Pods-SwiftFlyer_Tests"; - productName = "Pods-SwiftFlyer_Tests"; - productReference = 7A00E99494B081791142D76983076D36 /* Pods_SwiftFlyer_Tests.framework */; + name = "Pods-SwiftFlyer_Example"; + productName = "Pods-SwiftFlyer_Example"; + productReference = 22AA8E851992C99EE5D9865DE1EBECBF /* Pods_SwiftFlyer_Example.framework */; productType = "com.apple.product-type.framework"; }; - DD7C8BF89FE8053D0A2A2D88BB49CF07 /* Nimble */ = { + 917206ED3ED92620C4E47F2A12964819 /* Quick */ = { isa = PBXNativeTarget; - buildConfigurationList = 439502BDB29394EE0D69336E69C8494C /* Build configuration list for PBXNativeTarget "Nimble" */; + buildConfigurationList = 1D21474ADC3AB41E8D3036DB16A55538 /* Build configuration list for PBXNativeTarget "Quick" */; buildPhases = ( - 3B8E072FBCB923980AC89BAC33C449B9 /* Sources */, - 819A9B65073BE3B5599196C0A3B27EBC /* Frameworks */, - 85497845823171A47E23A59621A44463 /* Headers */, + E0A26B2D56C6E3CF30BAA26612EA621E /* Headers */, + 21F8539284FC2AEFCFF33B165514485B /* Sources */, + 952A489F5335C4835EB4C6C7C32DAA5A /* Frameworks */, + E1D783FCD702780F7EA3321D230215FE /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = Nimble; - productName = Nimble; - productReference = 0D560E57E886EBD17524397221B6BD49 /* Nimble.framework */; + name = Quick; + productName = Quick; + productReference = 49BE3DDC5F8605766C93DC516672CA28 /* Quick.framework */; productType = "com.apple.product-type.framework"; }; - DE16D66575B4E29D54F3F5DB5CD606FB /* CryptoSwift */ = { + AED2DD42FFC444090BD468B8C149767F /* Starscream */ = { isa = PBXNativeTarget; - buildConfigurationList = A2A1FC75CCCDCE10818AD7D9284ED293 /* Build configuration list for PBXNativeTarget "CryptoSwift" */; + buildConfigurationList = A00C410565E99E4828DD70E3712D38A7 /* Build configuration list for PBXNativeTarget "Starscream" */; buildPhases = ( - D3781A86E789739B2F1EE90C420EAA11 /* Sources */, - B78BFDB162C0B5C38B98149696E670D9 /* Frameworks */, - 4520A9B79F1A370E217D57A302CC1981 /* Headers */, + 005A4374B46C319A285835342F0E8756 /* Headers */, + D53B796F411F627ED5666EF4B8711F49 /* Sources */, + 0AA3673C3080664AD4ADE741C144C988 /* Frameworks */, + DFB949BD93D72C5BAB05898634BBDCF6 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = CryptoSwift; - productName = CryptoSwift; - productReference = DDBD2C5FC43A16E84F07D5ED737885FC /* CryptoSwift.framework */; + name = Starscream; + productName = Starscream; + productReference = 0714A41EAEF95D66A4ADD9C443899DA9 /* Starscream.framework */; productType = "com.apple.product-type.framework"; }; - E42177C1A5BF913DEA219A89612113C4 /* Quick */ = { + C16A9834C8E278D77C1C4EE084CE8E49 /* Pods-SwiftFlyer_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = F04361EA26CD019ED69B5EEEA6242C1D /* Build configuration list for PBXNativeTarget "Quick" */; + buildConfigurationList = 0BFE0963F4DDAA4E6575407FF1C2A9D7 /* Build configuration list for PBXNativeTarget "Pods-SwiftFlyer_Tests" */; buildPhases = ( - CCC8FFB558B6A3E00039BDAB81E2DDB9 /* Sources */, - 4AC4DA7E7399D08F9049EF714DB0F980 /* Frameworks */, - EE43566550392AA77060FD261CDD7188 /* Headers */, + DB8ACF2A9C0781C5B78ED7B864F1AF33 /* Headers */, + A56346E460EBF4EBDE01FDAED7E1EA2B /* Sources */, + E3E0DD29C872931A298CAF5360EC25FC /* Frameworks */, + E304AFF35857436A3EE4D8F06A427F9B /* Resources */, ); buildRules = ( ); dependencies = ( + 61D0D1733DB98274C269228215D17990 /* PBXTargetDependency */, + 1A2E31CC480F22CA92A835861F313A1D /* PBXTargetDependency */, + 392C298FA50DC646C1568F768DB24B6F /* PBXTargetDependency */, ); - name = Quick; - productName = Quick; - productReference = 2D506075381B3AC8B7E45E31753DB50F /* Quick.framework */; + name = "Pods-SwiftFlyer_Tests"; + productName = "Pods-SwiftFlyer_Tests"; + productReference = 95F947B23CEA22476A008079645C8FEC /* Pods_SwiftFlyer_Tests.framework */; productType = "com.apple.product-type.framework"; }; - FFB534F916A11147DC3182FA60E61848 /* SwiftFlyer */ = { + F554EA343D656E7FB0C1ACC045EB2666 /* Nimble */ = { isa = PBXNativeTarget; - buildConfigurationList = 0062D0E412944B0375A8BF2742405D01 /* Build configuration list for PBXNativeTarget "SwiftFlyer" */; + buildConfigurationList = E3A98634DB5DA9D006BDFE48B5C34CB5 /* Build configuration list for PBXNativeTarget "Nimble" */; buildPhases = ( - FBAF0971C0BF1FC9854F1FA92186A941 /* Sources */, - 941D990465A668BD5DEA80C6D31667ED /* Frameworks */, - 900F693E2991D0AD8FE5E885E8082145 /* Headers */, + F684E10CDA60BAC918A92251A0A1968A /* Headers */, + 843204FEA6D0A77E8262CB3DE7F86658 /* Sources */, + F9F8CFCD3C9798C561B7623608D3C821 /* Frameworks */, + AD1799A208BE417CCE05899E167D813E /* Resources */, ); buildRules = ( ); dependencies = ( - 6909E3B29F724EAC4D4714B9D16B34DA /* PBXTargetDependency */, - EA7DAC9CA57C6AE75538E770209FFF6A /* PBXTargetDependency */, ); - name = SwiftFlyer; - productName = SwiftFlyer; - productReference = 4E0200637C4165361827DD48F82EF9DD /* SwiftFlyer.framework */; + name = Nimble; + productName = Nimble; + productReference = 27207F52ECDCBF9FDCAF10F25040C88D /* Nimble.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0930; LastUpgradeCheck = 0930; }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 07735E3BE502DA4D9EF04FBC366D394C /* Products */; + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = 125A6D4DBF3DFDBACC8EBCF8E0CC4410 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - DE16D66575B4E29D54F3F5DB5CD606FB /* CryptoSwift */, - DD7C8BF89FE8053D0A2A2D88BB49CF07 /* Nimble */, - 674F95267FDD3D4FDE4522A49DF42DF4 /* Pods-SwiftFlyer_Example */, - AD0D4DBDC5BBF5CF713DE02CD90681AA /* Pods-SwiftFlyer_Tests */, - E42177C1A5BF913DEA219A89612113C4 /* Quick */, - 9B7B83B589D172B9D0A1450AFDCC891A /* Starscream */, - FFB534F916A11147DC3182FA60E61848 /* SwiftFlyer */, + 4199AFA0D6B764FC01BD5903BE7D1CAF /* CryptoSwift */, + F554EA343D656E7FB0C1ACC045EB2666 /* Nimble */, + 4529B069CB2A703C12A29AC9E4ADDE25 /* Pods-SwiftFlyer_Example */, + C16A9834C8E278D77C1C4EE084CE8E49 /* Pods-SwiftFlyer_Tests */, + 917206ED3ED92620C4E47F2A12964819 /* Quick */, + AED2DD42FFC444090BD468B8C149767F /* Starscream */, + 04618ADD15BA1B3D67AF8D975DA34BAD /* SwiftFlyer */, ); }; /* End PBXProject section */ +/* Begin PBXResourcesBuildPhase section */ + 06F03A2052B40927812F7CAF7479C211 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2E9AA85742E9AEED9BC015B266EEA3C9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 46DB61D38A73705A9B89AEDB2EE288D0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AD1799A208BE417CCE05899E167D813E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DFB949BD93D72C5BAB05898634BBDCF6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E1D783FCD702780F7EA3321D230215FE /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E304AFF35857436A3EE4D8F06A427F9B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ - 1367C0AE728DF6DA8DA8C43FFD1057A6 /* Sources */ = { + 21F8539284FC2AEFCFF33B165514485B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8E93F0F04E3E060946C89D15994E7074 /* Compression.swift in Sources */, - 93F15DA52A02964DF9990E2898C53750 /* SSLSecurity.swift in Sources */, - 9D181FFF60ED11EBE8681777D792F4CD /* Starscream-dummy.m in Sources */, - D02966E4194949E5E173FC822A2C947B /* WebSocket.swift in Sources */, + 8F1210C1F586013641FE4544C2081C5F /* Behavior.swift in Sources */, + 9F1B4FD18F8F51787CA48A83F69CF485 /* Callsite.swift in Sources */, + 7A6B9B9ABAAA313AA3410E63165AAEFA /* Closures.swift in Sources */, + 01585FDCC132E6796586406E0CE390C4 /* Configuration.swift in Sources */, + 7F9E22FD3BB649B4C6428669371D16E3 /* DSL.swift in Sources */, + AEB09DBB1CB82A125B0786EBF65A29A3 /* ErrorUtility.swift in Sources */, + 04A9C5521EEA58DFA811A9BD59F8C5F1 /* Example.swift in Sources */, + FE8984817A30EFC788C3845D96521C8D /* ExampleGroup.swift in Sources */, + 8CBB08ABFBFF0005D65AABD242C478BB /* ExampleHooks.swift in Sources */, + F9E0E32F37DFB75A0186336F56AB822E /* ExampleMetadata.swift in Sources */, + E74095186BEDE49D6F714CE0BF7E62EF /* Filter.swift in Sources */, + 4A985E199F0299126371145E219D039A /* HooksPhase.swift in Sources */, + C3BE54C5690E5C78584A4986D81D7DE3 /* NSBundle+CurrentTestBundle.swift in Sources */, + 52AC10789AF761D5F3D8446E46F05BE0 /* QCKDSL.m in Sources */, + 1B4EC974B307A02B6FEE681077764F37 /* Quick-dummy.m in Sources */, + FC2EA93D2A36289F6044019D9BDE144A /* QuickConfiguration.m in Sources */, + 3B6BCEEA87CBE45AC437EE397183A064 /* QuickSelectedTestSuiteBuilder.swift in Sources */, + 6C3DF1E909F9D461D8FF9466BAA46483 /* QuickSpec.m in Sources */, + F333FFAB844BFF1D440EC864F64610DA /* QuickSpecBase.m in Sources */, + A1ACF1FFDBB6AC9173E218214AEE082F /* QuickTestSuite.swift in Sources */, + 6FE3B386F4AD5265A59A04AD551D0A18 /* String+C99ExtendedIdentifier.swift in Sources */, + 3F55C3F5EBC55B070A83231E77A06684 /* SuiteHooks.swift in Sources */, + 389A7A51F24592CF36D4762C101D3549 /* URL+FileName.swift in Sources */, + 784F2DE40F2D01222561BB0FF5071E66 /* World+DSL.swift in Sources */, + 59D862091EEB77F667B8A5FCE4532582 /* World.swift in Sources */, + 81F6085577F87350CCB9CFE10EA79A16 /* XCTestSuite+QuickTestSuiteBuilder.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3B8E072FBCB923980AC89BAC33C449B9 /* Sources */ = { + 2E6B7ABA21D6D5EC0D5657D19E050092 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F9649DD59BAEE88C6864EEFE73ECA88C /* AdapterProtocols.swift in Sources */, - DF026F6F406A4FB6CEA63B0A4B9E27DD /* AllPass.swift in Sources */, - 32B38992751B96F21324BFC9923BFCBD /* AssertionDispatcher.swift in Sources */, - 73BC5AC2ECDB8722E085F14B53E0D24E /* AssertionRecorder.swift in Sources */, - B2C151B20635A480E1937E3D2B509BB4 /* Async.swift in Sources */, - EAAA05EBBC34225C0DB45797712E24A1 /* AsyncMatcherWrapper.swift in Sources */, - 7E0C9AE6468A5DF91F0F4C7A387D725C /* BeAKindOf.swift in Sources */, - C1D862177DC2999FAC710AC25F253BD0 /* BeAnInstanceOf.swift in Sources */, - BF3B7218901760A6226C7F6346BEF454 /* BeCloseTo.swift in Sources */, - 58C0125D796A97541FDE3414001D8A92 /* BeEmpty.swift in Sources */, - CCDAF11E7AF29E720C587B038145F622 /* BeginWith.swift in Sources */, - AF1174085D9BC5D50FCE0480E9C2BE94 /* BeGreaterThan.swift in Sources */, - 58D964317DFBB10F54A273CB12843017 /* BeGreaterThanOrEqualTo.swift in Sources */, - F4BD249C60F21F5E0F7C1FAC8A5BC2AF /* BeIdenticalTo.swift in Sources */, - B102ABE4E54B71B3D2C2118E2782FAB9 /* BeLessThan.swift in Sources */, - 75538A8B20C7A20AF3D54BBF35D56FFE /* BeLessThanOrEqual.swift in Sources */, - 1E1CE28FFCCD7499620B47C910E9B9E9 /* BeLogical.swift in Sources */, - 75ABB48E3C30C2D736C3D05D6FD566A8 /* BeNil.swift in Sources */, - 3C66D2692E811DAE57A244A67E7AC555 /* BeVoid.swift in Sources */, - A74537420FF0CEDC6B9E82E1DC4C2B15 /* Contain.swift in Sources */, - 25D1805055756CAA69A167CA03B2465C /* ContainElementSatisfying.swift in Sources */, - A272932A4DF9AC2D3B0A21AC70606F6D /* CwlBadInstructionException.swift in Sources */, - C2467221FCD579800B9CD8FBBDB10B4D /* CwlCatchBadInstruction.swift in Sources */, - 7B5222991D1C53DF737242CA6C90012C /* CwlCatchException.m in Sources */, - 42EAAE8CFB95F2352FCE036F263263E1 /* CwlCatchException.swift in Sources */, - 41C783192F7ECD485C8C6384D30CBF11 /* CwlDarwinDefinitions.swift in Sources */, - 5F9AFDECC14365CD10F3D83D50020E32 /* CwlMachBadInstructionHandler.m in Sources */, - ADEE95A3A188BE3095990E20766BCCC8 /* DSL+Wait.swift in Sources */, - 8B55BD430033027AD5FF22D630DD9F62 /* DSL.m in Sources */, - 1A3E19B9F5EEB773C3BB61CA42F8BF62 /* DSL.swift in Sources */, - 3D1A89FDD6B579BAA92AD398E5C019F9 /* EndWith.swift in Sources */, - C8320A6164C870ADDB8A855ADEBBBDC9 /* Equal.swift in Sources */, - BC7B9761322C74FA27969BD55833BA47 /* Errors.swift in Sources */, - 65985C142EE8A74E6E56D5E30A39C79C /* Expectation.swift in Sources */, - 3E04D23B2995705A6106D41F3E3E4E33 /* ExpectationMessage.swift in Sources */, - 4FABBF5CA8F735F48035BE4144613CB7 /* Expression.swift in Sources */, - 17C8EE7DF3F57C8F99EAF63C6E61EA99 /* FailureMessage.swift in Sources */, - 62D26CE7BA3AEDB4E5E87218FDCBBA90 /* Functional.swift in Sources */, - 988EED125395950177DC14AF9BC87D8D /* HaveCount.swift in Sources */, - D9E62C41794D0B5D2CD68CA92C4BA836 /* mach_excServer.c in Sources */, - F28003B228B82B7E1497D4F41F55A31E /* Match.swift in Sources */, - C06FA100C1BBEE34B863BCB8A65359C1 /* MatcherFunc.swift in Sources */, - 6BB0EBEB4730B94AC07458E398D142C8 /* MatcherProtocols.swift in Sources */, - 45F183320C688F9978649F30ABE21D09 /* MatchError.swift in Sources */, - 4CDACD8A5A6CFB688838AA988E7D1E43 /* Nimble-dummy.m in Sources */, - 54CC2049C937561A469575AF9E6A6FE9 /* NimbleEnvironment.swift in Sources */, - CF55697859D633C852C3586384647EB6 /* NimbleXCTestHandler.swift in Sources */, - 6CB4890B9BF5F846E980634AFE83917D /* NMBExceptionCapture.m in Sources */, - 68FD03C72D719117929696B62038B3D7 /* NMBExpectation.swift in Sources */, - A7C13C62E4116CA964A3E82179092AD5 /* NMBObjCMatcher.swift in Sources */, - AE4DA49ECD693BF384CD824DF02D7C6E /* NMBStringify.m in Sources */, - 31C39ED8CB1C9317F1F2840FC919662D /* PostNotification.swift in Sources */, - EF8548E0C37E8888D9DDC11ED89D3568 /* Predicate.swift in Sources */, - EAE2AAE5EB826B38978692984BB22FDD /* RaisesException.swift in Sources */, - EB3A73071ABA60E77E0704649637D8BD /* SatisfyAnyOf.swift in Sources */, - F3BAA36614ABDBC0538B0DEA99CF80A0 /* SourceLocation.swift in Sources */, - 8170866E2ACE0ACFBC6D90081354EC65 /* Stringers.swift in Sources */, - 3B3A88E074630B1EBC2139F4F70F0443 /* ThrowAssertion.swift in Sources */, - 5BF274C2DEF332ED79B1CD15CFEC3498 /* ThrowError.swift in Sources */, - 29A65FF7D1752DFFF87F5DC8F55CE859 /* ToSucceed.swift in Sources */, - A61ADD214AA182EEB2AC95EA3F3D658F /* XCTestObservationCenter+Register.m in Sources */, + DBD13E8B8C4B70C32C74A0CE015F8BC2 /* Address.swift in Sources */, + 863E2B9BCA850F60F2043DB536B339DE /* ApiSession.swift in Sources */, + 9E53964BE903BAB52DF26979589AC6BE /* Balance.swift in Sources */, + 50B867B56D7DF05FF83AE23B2C50B474 /* BankAccount.swift in Sources */, + 51F015B99C1EB4047F710B107D6E309A /* BitFlyer.swift in Sources */, + 6B5F720EAE5B5B4817F56EF2864D74E9 /* Board.swift in Sources */, + E347B8513A5C7A369FD6E16428CCAD4A /* BoarderStatus.swift in Sources */, + 22DAE010912ED4E153466BB1BEDB364A /* Chat.swift in Sources */, + 921B5A3C1A4B6E7ADB384A1BA7EBD4BC /* ChildOrderResult.swift in Sources */, + 5E2A0424554D946767CF0A55D9D96714 /* ChildOrders.swift in Sources */, + 735AA377A02CF6C41EE04B76DEBB9F01 /* ChildOrderType.swift in Sources */, + 14D08B876F991250D0A6995E29D3309E /* CoinHistory.swift in Sources */, + 5974937F3F2B750E2A504ACF98128E51 /* CoinStatus.swift in Sources */, + 238B8724EAA4524DED410783908C1181 /* Collateral.swift in Sources */, + 1FE1BE4F48C779A5E9F7ADE015DC2F4B /* CollateralHistory.swift in Sources */, + 8530D21CDF96EF5F8687E066BEB0D43C /* ConditionType.swift in Sources */, + A294002ED12715D9E94B17292394BC63 /* Contract.swift in Sources */, + 3CDBA0038E1DEDF130C18A22CE08E600 /* CurrencyCode.swift in Sources */, + EEEF5A10E9D35B99D514BD28CB227EF8 /* DepositHistory.swift in Sources */, + AEC9C04CC65CAA2BEEADDBA47FF5A9A7 /* DictionaryExtensions.swift in Sources */, + FFC90D19D852493F47D75441DDE2D854 /* Executions.swift in Sources */, + EF87A58C042C958EDF825B99B4B9136E /* GetAddressRequest.swift in Sources */, + 308326ECDA6EB750D131F8F187AABECD /* GetBalanceRequest.swift in Sources */, + DD498963FB9590B92A0375FBAF742E90 /* GetBankAccountsRequest.swift in Sources */, + BEBF6FF5D94450F877C329D61E40606D /* GetBoarderStatusRequest.swift in Sources */, + 6A3A6B576FAEA3141C3F6E87BBFD0FCD /* GetBoardRequest.swift in Sources */, + 32A3D145CF6353AFBDDBE86BE134B488 /* GetChatsRequest.swift in Sources */, + 2580EC5D23720ECE2B93599E8C440CFA /* GetChildOrdersRequest.swift in Sources */, + F2706BB0779219A6C2CDF88020DAAF45 /* GetCollateralHistoriesRequest.swift in Sources */, + B156EFD591710C8AE8412729F733248A /* GetCollateralRequest.swift in Sources */, + 1C47C7900343DF5592B39BA5D2DB0599 /* GetContractsRequest.swift in Sources */, + 8AC3C8F230247287F2BBFB1C7651FDD3 /* GetDepositCoinHistoriesRequest.swift in Sources */, + 28E30A6FFA39F755DEEF75349DC1068A /* GetDepositsRequest.swift in Sources */, + 17707C863EB944AA0E2A1EE348648751 /* GetExecutionsRequest.swift in Sources */, + 8F5F91C969B41E56022AC3F83A669FA7 /* GetHelthStateRequest.swift in Sources */, + 3817FC2AB02EA2F87FA5D94BCF6FCCBD /* GetMarketListRequest.swift in Sources */, + F817ECF6BD9441C291BC5738CFF5A9E7 /* GetParentOrderDetailRequest.swift in Sources */, + 432E829A65495EB98C8F491850BE5E86 /* GetParentOrdersRequest.swift in Sources */, + EE3531BF82501F5615F8E1FC689522B8 /* GetPermissionsRequest.swift in Sources */, + CD6C7F2EE16C6C68F213BD59297E4807 /* GetPositionsRequest.swift in Sources */, + 2860A4D68A514043A7C7FD04FF69B4EF /* GetTickerRequest.swift in Sources */, + 21B3B9B18C00CEE6A62492ECF247901E /* GetTraidingCommissionRequest.swift in Sources */, + 3CD980676A963E3334954EF17DDBF579 /* GetTransferCoinHistoriesRequest.swift in Sources */, + F27443AF9CD27425DDD2BBA56A50B2DA /* GetWithdrawsRequest.swift in Sources */, + B0531FAA2BC28769A3E703F059143136 /* HealthState.swift in Sources */, + 68B24B5D42E983F7CB70DA3874F7DA72 /* HTTPMethod.swift in Sources */, + 27E43B4C2A02EA5D3BAF0625FDD1B2A7 /* Market.swift in Sources */, + B02180E1B80F8C4A2634375A05B519F4 /* MessageID.swift in Sources */, + EBA0189514ACFE33EE36B7A640817E20 /* OnlyStatusCodeResponse.swift in Sources */, + 5E57DC0ECFA38CE20B0922A65A721421 /* Order.swift in Sources */, + 2AA58694E62F034FDD42EA0A941B191E /* OrderState.swift in Sources */, + EC903702C9260F16537907797176294E /* ParentOrderDetail.swift in Sources */, + 03EAD3FB567995D5031C71C2A592D65A /* ParentOrderResult.swift in Sources */, + 82969FFDB1B7AD0E2950472E70810B3A /* ParentOrders.swift in Sources */, + FD84F5688811D2161BA33CF3C8ED6B97 /* ParentOrderType.swift in Sources */, + F30D7226A8A1DC3593DA0183D8ED1482 /* Permission.swift in Sources */, + 7350E2E4F7B5447C5EAA43C198E5F412 /* Position.swift in Sources */, + 817BF6BD4311D438C12FBC863C3962AB /* PositionSide.swift in Sources */, + 384C222CFBC35329C4CD50B9264560CA /* PostCancelAllChildOrdersRequest.swift in Sources */, + 1DBB41840F32828B61A044DB035C5B4D /* PostCancelChildOrderRequest.swift in Sources */, + AB871C0DB286B80FAD59A9FD2B064BDC /* PostCancelParentOrderRequest.swift in Sources */, + FF25F43F82015EF1F2DBC6B675BB8A64 /* PostChildOrderRequest.swift in Sources */, + 7E7C91A91D26693BDCE7085B08CC3DA0 /* PostIFDOCOOrderRequest.swift in Sources */, + D2BF6DE7583A39D79E85CC828A93673A /* PostIFDOrderRequest.swift in Sources */, + F114F1AC76F155BA4169575CD8A5C59C /* PostOCOOrderRequest.swift in Sources */, + 25965DD59C3DD0798E5B9D9DFB89C160 /* PostSimpleOrderRequest.swift in Sources */, + 2BE9EA5B2B73940366D2F75AC8112EEF /* PostWithdrawRequest.swift in Sources */, + 6BF9A1EFE96C6188CBC20B5D592BBCFE /* ProductCode.swift in Sources */, + 03F1DD79D7EDA137AB1AE37330CB949C /* RealTimeAPI.swift in Sources */, + FE3309618B9FC61080B47C6F10085787 /* RealTimeAPIDelegate.swift in Sources */, + 69C594CAE30B26F166809C3E9D3B3F6A /* Requestable.swift in Sources */, + 41D2C4655406C598C676AA30EDBB3FEA /* RequestableExtensions.swift in Sources */, + F50D54BA46385395A9D68EA8C98C4D6B /* ResponseError.swift in Sources */, + E89B7BE619F5DE8FB41C3584731C4DC9 /* Result.swift in Sources */, + B9A882A071EF4D8A2814AE3CD54FB3C4 /* SwiftFlyer-dummy.m in Sources */, + AD375A1C860232E8EFA585A9A5DD10F3 /* Ticker.swift in Sources */, + 9AEE810721C0D1796B1795F84D6166BE /* TimeInForce.swift in Sources */, + 858178A93AA2C1A235C65C63CEDB075E /* TradeHealth.swift in Sources */, + 9DF9D8E2D790A92D25687C1AF08D8B99 /* TradeState.swift in Sources */, + 4DD124BBDCCBAAA7E12B58ADEA34E15D /* TradingCommission.swift in Sources */, + 126A50F3CC4FD3709951973B440B5E9C /* WithdrawHistory.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6F3D14AD8844F09FB61B6E5C0675D0DE /* Sources */ = { + 4723685B13526BF5C2E12DE28C2F334F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DC1B98A31F1E0D50B7E95B7F69859F28 /* Pods-SwiftFlyer_Example-dummy.m in Sources */, + 59AB425E25DF6E7F8AF78D7B8CA7347D /* AEAD.swift in Sources */, + 91C3469261619928F9CA63F2EC81FD24 /* AEADChaCha20Poly1305.swift in Sources */, + 319BDB83472237EEA8562ECB79749D30 /* AES+Foundation.swift in Sources */, + F819EC6EA7D2DA55E19AF50DBB862F0A /* AES.Cryptors.swift in Sources */, + 9001E9E62B78B0F529DE51B4C8690B1A /* AES.swift in Sources */, + 8B6BF3261CD6188D9D508F8DE26BF471 /* Array+Extension.swift in Sources */, + A8609EBDD85CED0BBE7856046E408497 /* Array+Foundation.swift in Sources */, + 3324E2BB0EFF13F8A495A48C92AAD731 /* Authenticator.swift in Sources */, + 77EE3C9CB05F3195BED530C9FB599481 /* BatchedCollection.swift in Sources */, + A1D96A82A8711832664F7303AEFD4359 /* Bit.swift in Sources */, + FE89145E028F97514845BBBCDFCF05ED /* BlockCipher.swift in Sources */, + C44A421B69CA2AE5D0C42B299CFB04FE /* BlockDecryptor.swift in Sources */, + 0C49EAE41B7EAE212C843A7BB138B7A6 /* BlockEncryptor.swift in Sources */, + 970AB0DCDC59EA0530415233ABDB6E75 /* BlockMode.swift in Sources */, + C6F7946D47A397A47941EF7C09B27A26 /* BlockModeOptions.swift in Sources */, + 7AF9349379C8CACA092674BB7714F413 /* Blowfish+Foundation.swift in Sources */, + 473BD05319983C8B4DE2DD157614FECC /* Blowfish.swift in Sources */, + 3431F5E33F78AB7C0A1565D25671E594 /* CBC.swift in Sources */, + D149EDAC8F492A125F09C5F11B5171B4 /* CBCMAC.swift in Sources */, + 2AECC9858F9621CCAF03A7F31CAF5F68 /* CCM.swift in Sources */, + 699E4CCA8430D921830ED3BBFE9E8EEC /* CFB.swift in Sources */, + 466A25D2EB90E4C77C3750BAC6B2F71A /* ChaCha20+Foundation.swift in Sources */, + B66B9C1E24E72F89FE3E330BEC80A1FA /* ChaCha20.swift in Sources */, + 5FAECF8DDA78E394F93A941B6878234C /* Checksum.swift in Sources */, + 30819A318CA6DF57C7B01294873F9731 /* Cipher.swift in Sources */, + 11E13FE8DC4420AF5942736283AA3913 /* CipherModeWorker.swift in Sources */, + 8EA18644ABC296D69E4F5D9AFFAB43C0 /* CMAC.swift in Sources */, + 8F33DAB50F7D5A01F0F90248CBA942BE /* Collection+Extension.swift in Sources */, + 7F81290E4FCD14135D45DD2277FF7230 /* CompactMap.swift in Sources */, + 577364D94A9C1915DE6CDB9F280CF578 /* Cryptor.swift in Sources */, + 91227FC8663612EAA927C5E4490B2961 /* Cryptors.swift in Sources */, + BBDC438AA87C72F2B4D77CD54FAF4607 /* CryptoSwift-dummy.m in Sources */, + B7D907F02C3FC408DE7FA69671D82BB9 /* CTR.swift in Sources */, + E933B6A54C7C36235FD06CE312641A95 /* Data+Extension.swift in Sources */, + A7253CA8AD620F9A03BFBFCA9A43D5DE /* Digest.swift in Sources */, + 8FCDD99ED8F64891CFE6C472C1FB641A /* DigestType.swift in Sources */, + 03541CD6AD5CC1E500AFDD4A6FD5E12B /* ECB.swift in Sources */, + 69061AA3DCE50E42DBD8B85D7F9E5C4B /* GCM.swift in Sources */, + C0CCD572ED34493C49C1F5F82E775D12 /* Generics.swift in Sources */, + 7E0FB14FCEC8C1438CAD274DD6E785E1 /* HKDF.swift in Sources */, + 9A591561CF28EE328D0A50B30EDC97C6 /* HMAC+Foundation.swift in Sources */, + 6CEEAE540FC9EC080A2E1120610441FD /* HMAC.swift in Sources */, + 576D8F6A41A839FD5FCB1A0E582A1F5E /* Int+Extension.swift in Sources */, + 6BD7F04AC8E15AC8973BEAECAC872A2E /* MD5.swift in Sources */, + 0AD5DFDEF40D71D803951290627C3118 /* NoPadding.swift in Sources */, + 9369F7B56B997D7CB6D5451AFAA0C4F4 /* OFB.swift in Sources */, + 4EC9CCF8F1D0BE6A3CC77A85B118F77C /* Operators.swift in Sources */, + F2D92B4B4E2547312AEA7CFC4681E4D6 /* Padding.swift in Sources */, + 00A47BED4EE4FFD5F4F116C30BCE6959 /* PBKDF1.swift in Sources */, + CDE8A73C13E5926425F981C6C44BE256 /* PBKDF2.swift in Sources */, + 8BFF04442A40B87380A8F7A3735869D1 /* PCBC.swift in Sources */, + 7579DFB18C9375168EBFA3DF97CCA158 /* PKCS5.swift in Sources */, + D3E9072710D911A06B09CC0200689C0C /* PKCS7.swift in Sources */, + F0872C443D5A26B2372FF3811D567080 /* PKCS7Padding.swift in Sources */, + 107AD33415A0C4C80D49FC753A9824C4 /* Poly1305.swift in Sources */, + A9BFE60E348303E69CA8E16BDC6CF839 /* Rabbit+Foundation.swift in Sources */, + 9C5371C8EABA2C61D0B420980985B02F /* Rabbit.swift in Sources */, + 779FBCFE2D103B14B40B8DF6CB4CC781 /* RandomBytesSequence.swift in Sources */, + 1C9FC321589FE864861C2B21A509C67B /* Scrypt.swift in Sources */, + 735886F64401AC98E17FBB936D6DD21C /* SecureBytes.swift in Sources */, + D0AD2F40B7AD04EB9B7841631009FC75 /* SHA1.swift in Sources */, + 70C9DA49355CD208829199C4DD398BFE /* SHA2.swift in Sources */, + 06771458BE34E82CA8BFB33CE1AFC994 /* SHA3.swift in Sources */, + ACC66FF9B02440C92389075D808DF780 /* StreamDecryptor.swift in Sources */, + A268EDF51C73BE404B028961BC0920B5 /* StreamEncryptor.swift in Sources */, + 7607162B63CD11A95BD7596E785C11E6 /* String+Extension.swift in Sources */, + A7A92B2F2D0C5B70A627AB08BC3FC35C /* String+FoundationExtension.swift in Sources */, + 77A37AFFA15F14849BE2E781185E5EAA /* UInt128.swift in Sources */, + 41E6B3C3D69E1165FADA2B616D793A9B /* UInt16+Extension.swift in Sources */, + D6DCFAA7424401BFB0AE68CDF1F6E79A /* UInt32+Extension.swift in Sources */, + 923604A515D5D85BC6A082BAA4B69CF7 /* UInt64+Extension.swift in Sources */, + 0EA7A0B2510FC4E7B293A85C52D1FD2F /* UInt8+Extension.swift in Sources */, + 90DE65DB13EDB7D575A1F8056EC04940 /* Updatable.swift in Sources */, + 625B5F58E9EA766121AF719A182C08D1 /* Utils+Foundation.swift in Sources */, + 4E0984F7370F4AAE787D814F5A9091E9 /* Utils.swift in Sources */, + E39FAF1E8808CC9194C1212DA8E9485C /* ZeroPadding.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - CCC8FFB558B6A3E00039BDAB81E2DDB9 /* Sources */ = { + 843204FEA6D0A77E8262CB3DE7F86658 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 992BD89E9B3D5C60C6D5B77A4DDF677F /* Behavior.swift in Sources */, - 327A8CEFD7FC49C5DC8DA214E75DF6F2 /* Callsite.swift in Sources */, - 98D552CF6CEEEE6FB708C3D12697CA98 /* Closures.swift in Sources */, - 78639814475AF9C6F28DA9016A378479 /* Configuration.swift in Sources */, - DBB1D41A25CE20820193E9840BF10E42 /* DSL.swift in Sources */, - C9CF470EC6FA549C911A82E88C0F12BD /* ErrorUtility.swift in Sources */, - AF6D2F5AEF79DC96F6E0B4851AF392B0 /* Example.swift in Sources */, - 9E621EA1F1FD26B814A7CBC7488A55B2 /* ExampleGroup.swift in Sources */, - EBD17F56B9E4E86908F18DF020D04CD5 /* ExampleHooks.swift in Sources */, - 55D9A5F181604263D6A23911D8D5DB3D /* ExampleMetadata.swift in Sources */, - DA884CBB9C772D7B980E090394488A00 /* Filter.swift in Sources */, - 8C9E5C8D1B0AF25507F63B26B1CBB13F /* HooksPhase.swift in Sources */, - EDDDCA0F0C0E28122EFBD8A136CDA74B /* NSBundle+CurrentTestBundle.swift in Sources */, - 73B8D403CF8453CF55729FA0B3F92BA0 /* NSString+C99ExtendedIdentifier.swift in Sources */, - 4A536AB62BD8DF570AC95703B80E813A /* QCKDSL.m in Sources */, - CF8B732C6D7E08FCA5E6DC2D3C36A681 /* Quick-dummy.m in Sources */, - DE9989DF2956698E8490B8FE97F69159 /* QuickConfiguration.m in Sources */, - 3D2320BD2E93A2E4AEF67017476108AE /* QuickSelectedTestSuiteBuilder.swift in Sources */, - 45330C9CC22BE8FD1E0D7019A268C917 /* QuickSpec.m in Sources */, - 64FADC0FC888B73D3E49C7ACCEAB7DD9 /* QuickSpecBase.m in Sources */, - 680FEBBEE31D4DE14A872761BA599D37 /* QuickTestSuite.swift in Sources */, - 4D590105F3C2ADBF8B171E5659D165C8 /* SuiteHooks.swift in Sources */, - DF9CEDAB88D813F8291FBBC4F828D1AA /* URL+FileName.swift in Sources */, - E76E6A4231514673FFDF374CFFF03E23 /* World+DSL.swift in Sources */, - EFD0AEFC88AAE00ADCC4A84EA7A5B512 /* World.swift in Sources */, - 36822232A7DF27DFF5F151D2DF91992A /* XCTestSuite+QuickTestSuiteBuilder.m in Sources */, + A9F93A9C40771906414564A30333FDB9 /* AdapterProtocols.swift in Sources */, + D4FF0990DB524278EB20490C5311E19B /* AllPass.swift in Sources */, + EB062EA45D4A3859C6CEA85DAC1ED237 /* AssertionDispatcher.swift in Sources */, + 5F154C985B9DE1085A993CF9AB332BF2 /* AssertionRecorder.swift in Sources */, + D845D55E7CD75BA58F753A5AA454E422 /* Async.swift in Sources */, + 7AA21A2A7686580BEF335C12D3D7AB81 /* Await.swift in Sources */, + 8784230CBBBC7267F29611E0E1DC961E /* BeAKindOf.swift in Sources */, + 3101D8F2678E107351E1179C14FC7BF5 /* BeAnInstanceOf.swift in Sources */, + F596D6BBE5BAD012376F7CB73D44CE6B /* BeCloseTo.swift in Sources */, + D3A571F180E2A2D8A1248890490C9E36 /* BeEmpty.swift in Sources */, + 0999B997CDAC772A41A7F70CEF4A1D49 /* BeginWith.swift in Sources */, + E421CC9222B4DCD92124CA45FBA6A247 /* BeGreaterThan.swift in Sources */, + A74CEEC58BDEB1F9A37685FCA3376746 /* BeGreaterThanOrEqualTo.swift in Sources */, + 7403EBDEC592DF5F4AA19EEFED35AC5A /* BeIdenticalTo.swift in Sources */, + 89A206D51752309E13BD5C427C35A090 /* BeLessThan.swift in Sources */, + 89D30C28183DF9BFC6C940211DA889D7 /* BeLessThanOrEqual.swift in Sources */, + 8413172B4FBB9E364EC42674F13A9FE3 /* BeLogical.swift in Sources */, + DA28D44BB7C7CE1CC8F91BEE1E89C610 /* BeNil.swift in Sources */, + 94C84E6DFA71C70DF521E9D995C1505F /* BeVoid.swift in Sources */, + 328CBB53BF5236042DF4CB4B751EA062 /* Contain.swift in Sources */, + 03705FCE353B9A436320B5798C9F7A50 /* ContainElementSatisfying.swift in Sources */, + D9FEB1F14A7C841D4BE3109A0F193843 /* CwlBadInstructionException.swift in Sources */, + 1BAA60FABBC4047372D87D9B739C4463 /* CwlCatchBadInstruction.swift in Sources */, + 888B88EF8BDEBCB1702F8BB33BCBC3B2 /* CwlCatchException.m in Sources */, + 24AD9C69B1A899FA7DB0CA4D346319C5 /* CwlCatchException.swift in Sources */, + 31DCC4FEA92A71A9FE8D881B73FC7426 /* CwlDarwinDefinitions.swift in Sources */, + 35087B8F6AC4F000C85B8D672760AFAA /* CwlMachBadInstructionHandler.m in Sources */, + 7FA411A969F1D1A7AD517C3E7B739AA6 /* DSL+Wait.swift in Sources */, + 82607C525BEE07050E18F0BFCF0AEA52 /* DSL.m in Sources */, + 3537F7CBFBE04113D495FF50BC3D6672 /* DSL.swift in Sources */, + 784DC54B4603FF9B368122FCD7D1D897 /* ElementsEqual.swift in Sources */, + DE54DDE5C5B6283DE5ADBBDAA91ED589 /* EndWith.swift in Sources */, + 43E95567704203A2DE95E07947BDF70E /* Equal.swift in Sources */, + 9C3F7FC69ADC5BFCE26D5BCB0B9234C6 /* Errors.swift in Sources */, + E74C63A506330D4E6E1DC8F3894BDC22 /* Expectation.swift in Sources */, + E80F2F25B622EBC3F1CACD1AFD851A11 /* ExpectationMessage.swift in Sources */, + D0117BC10CB96CA7F32536A69C085C49 /* Expression.swift in Sources */, + 373C57D757D6DFAC77450763C6BFA620 /* FailureMessage.swift in Sources */, + F5090F52CF4E6B768D0FB5F676B61AE9 /* Functional.swift in Sources */, + DF50C201EB25B9BDDD6363698ADE639C /* HaveCount.swift in Sources */, + C5808A46FC4C07F235753E2AE4A7511A /* mach_excServer.c in Sources */, + 83E49C3B8280FEEAE4F2A81F64A549B4 /* Match.swift in Sources */, + 966FBB84C847F2BCAED02AA147A2CFAB /* MatcherFunc.swift in Sources */, + C56CE025F6E708D6F5F11DB4EA23728C /* MatcherProtocols.swift in Sources */, + 6ED749CAF781EDB557E30C69637DBC5F /* MatchError.swift in Sources */, + DE41036F5CDFE75D351DEAC46ECD9FA9 /* Nimble-dummy.m in Sources */, + A4B6197170839BA97DE105AA9D1FAD7D /* NimbleEnvironment.swift in Sources */, + D1A4A1DD617C96759F7B2AB2A6AEB0E1 /* NimbleXCTestHandler.swift in Sources */, + B836AB3DB63144FE21C715D2944AEA07 /* NMBExceptionCapture.m in Sources */, + 075311A9B30D68479A7D7404A99B2FB1 /* NMBExpectation.swift in Sources */, + 13FBB20EA4647EA46F0CB2E7254A5F50 /* NMBObjCMatcher.swift in Sources */, + 392B6696BC59BDCD988D7C5DF3E3E1C5 /* NMBStringify.m in Sources */, + 9DB1E08337AC3FF955539F4E0D1074D2 /* PostNotification.swift in Sources */, + A51570857887E8E40B39F91C35358E2D /* Predicate.swift in Sources */, + D1FD91581D2DC0A42C9134862F569C83 /* RaisesException.swift in Sources */, + 1BAEDA109B23A9F1F66A906865309037 /* SatisfyAllOf.swift in Sources */, + 6B4197D2E87B5B445A7AAF18DBA22509 /* SatisfyAnyOf.swift in Sources */, + 0F31FA39DE65E4B1F239F8D4DC999A8A /* SourceLocation.swift in Sources */, + C7B9D1E45DDA944F4C7E372D3A20999C /* Stringers.swift in Sources */, + AC26B8C4461E89CC285F1D3273A659BC /* ThrowAssertion.swift in Sources */, + E40A6E85823CE585BF269D1DF4EF5E04 /* ThrowError.swift in Sources */, + 870471424FE3C6BA3E33C949BEF04D50 /* ToSucceed.swift in Sources */, + 4E70FE29FB2BAD7E5427532B5D2FCF26 /* XCTestObservationCenter+Register.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D3781A86E789739B2F1EE90C420EAA11 /* Sources */ = { + 9F825C1D6AC6991569F95D25D78E2BE3 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3703B6E48C92A9CA9485B91125942BA9 /* AES+Foundation.swift in Sources */, - 87FAA6BD98D8B8712821DB532CDFF447 /* AES.Cryptors.swift in Sources */, - E99E9C0D8889E1ABED1BB66EA5E26F6B /* AES.swift in Sources */, - BD7F3C923AC47D15F51AD07D359BBDA4 /* Array+Extension.swift in Sources */, - 338E92A59022E6035872D94CB3AA57BF /* Array+Extensions.swift in Sources */, - 1BCBD814F3A819CFEDD5B621CD6BC6E0 /* Array+Foundation.swift in Sources */, - 32508A477EB8DE4F4EA066315511C4EF /* Authenticator.swift in Sources */, - 473DABC63FCEDEAC6C02E4AFE687DB31 /* BatchedCollection.swift in Sources */, - 3DC2810AEA96A3728F4BF638C0371E8A /* Bit.swift in Sources */, - 69086E943FDA1EF21D24289B1D5C60D2 /* BlockCipher.swift in Sources */, - 94DA4265D2AF0A4CA879A7F6D5B5A820 /* BlockMode.swift in Sources */, - E9DDCBC12D0C48E9072371632E2EE354 /* BlockModeOptions.swift in Sources */, - 934B3EA778B62DB2D5D8F0B02777E3F5 /* BlockModeWorker.swift in Sources */, - CA44F79721F689C434DEFA89D31ECD53 /* Blowfish+Foundation.swift in Sources */, - 65D826FD61BD6BD47FECFFA148216844 /* Blowfish.swift in Sources */, - 7073740DBB60483C88302F708F2F0039 /* CBC.swift in Sources */, - 960978CE23EE23DC0AF7E5954D6CB2A3 /* CFB.swift in Sources */, - 3EB15695F4BE7EBCE4ABF6B31BA04CA9 /* ChaCha20+Foundation.swift in Sources */, - 80763ECA711BA3777C09B81B21E288C8 /* ChaCha20.swift in Sources */, - 6C715228EFC892AD90E07CE6517BC9D4 /* Checksum.swift in Sources */, - FFEFA357A2ECFD2C8696A7D9B6559CAC /* Cipher.swift in Sources */, - 97B2B4AFFA86BA7E0F85F53DC0F0B466 /* Collection+Extension.swift in Sources */, - A300671F55DD95AE86819358B2C6DE32 /* Cryptors.swift in Sources */, - 7E38C53CC00067C7A5FA953B9261BF29 /* CryptoSwift-dummy.m in Sources */, - 790B502A5E39B63AB1CD72638362BDDD /* CTR.swift in Sources */, - D0CC6EF77721FDC29F558F2B6ACEEDCF /* Data+Extension.swift in Sources */, - 1C9A485DA2FE04B657D7E3D8D0FF17AB /* Digest.swift in Sources */, - CAA3F0F3507AB5798B490B49D95E3809 /* DigestType.swift in Sources */, - 49C6022FFB654F025AE6247765EFD40C /* ECB.swift in Sources */, - 48E770EAFA3730666D434C9AC7E48496 /* Generics.swift in Sources */, - 494751D9321DF2E06F6FAF41A6017E7F /* HKDF.swift in Sources */, - C953641D50BEADDEC1E341FE87247AF8 /* HMAC+Foundation.swift in Sources */, - 848B237EB31C02719899A90111FB08DA /* HMAC.swift in Sources */, - 69E4627B6E2338D2F586FA167CDC6E95 /* Int+Extension.swift in Sources */, - EEBE924BD06D6681AAA6003C3A6DBB33 /* MD5.swift in Sources */, - 152BA68678A9161227766CE6A75C19D4 /* NoPadding.swift in Sources */, - E780BDD3E588068FF869701FDC2D6BBE /* OFB.swift in Sources */, - D7CA1999F4D69F97C9042949C5E02286 /* Operators.swift in Sources */, - 85F41150DC5EA8413BEE3F2608F11991 /* Padding.swift in Sources */, - CBBE1B5655CD83A70E2856B7D33D3103 /* PBKDF1.swift in Sources */, - E039B801D197986FE25FD3011D2A324D /* PBKDF2.swift in Sources */, - 7DF98DF4ECF09A73ABE5B1092628461F /* PCBC.swift in Sources */, - 44751BA17838B5BDE6AA88A7D19CDC35 /* PKCS5.swift in Sources */, - 7C4FE99E01C8A635B3CE77F05B74B2DA /* PKCS7.swift in Sources */, - EEC95E134BF6663B52A72D8B53375C00 /* PKCS7Padding.swift in Sources */, - 3C8A5FD4672DBB6ED5B8E8FBC12C633D /* Poly1305.swift in Sources */, - 779811AAB014C57EAB3A43BB83A42F9E /* Rabbit+Foundation.swift in Sources */, - C745A2AA05FA14326388532157D59FD2 /* Rabbit.swift in Sources */, - 08C450BB03BE7BFD888431D1751132F8 /* RandomAccessBlockModeWorker.swift in Sources */, - 7C93878B47BE664097F3A63B89D1A862 /* RandomAccessCryptor.swift in Sources */, - DBBC0B3E2A77C465F817B4CB91C7CA6E /* RandomBytesSequence.swift in Sources */, - 5E77A3F633DBBD4C39776F6744EDC308 /* SecureBytes.swift in Sources */, - 04ED4CBE1683A039945AE21E71657DCE /* SHA1.swift in Sources */, - 8E9D8397BA554CE359B42FBAE1BCBD08 /* SHA2.swift in Sources */, - 6F5501B927A46CCF4F52A4CD7C1E33EC /* SHA3.swift in Sources */, - EC44355442C7E895D8BDD437C8FC1A50 /* String+Extension.swift in Sources */, - 395968454CBE736B64F63A633E0B68E4 /* String+FoundationExtension.swift in Sources */, - 3D87B3B0FD6435BB315EFC905422302C /* UInt16+Extension.swift in Sources */, - B856B5034004C190E8B2B8A2F038527D /* UInt32+Extension.swift in Sources */, - 8131E626B940699512588EDA2CAEBD34 /* UInt64+Extension.swift in Sources */, - 19F209E95649F61A5101303CA297098B /* UInt8+Extension.swift in Sources */, - B90AA1D193D9DA983C60B24EB3B5A189 /* Updatable.swift in Sources */, - 1D0578185B1E764BC61EC316C3D29B02 /* Utils+Foundation.swift in Sources */, - B2F16B6F4D5D5944929BF9B416772565 /* Utils.swift in Sources */, - CD11E1CA4EC90EB672AB603B3BD82EAE /* ZeroPadding.swift in Sources */, + C34D6CA7D9C853E4434D6ACCE5D1B1B0 /* Pods-SwiftFlyer_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - E9B7A2993A09E52BEB329145FE111E15 /* Sources */ = { + A56346E460EBF4EBDE01FDAED7E1EA2B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 52BA4459D46ADA4FA22177C936287DA8 /* Pods-SwiftFlyer_Tests-dummy.m in Sources */, + D69A342E85C104FE740D399FE3B15140 /* Pods-SwiftFlyer_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - FBAF0971C0BF1FC9854F1FA92186A941 /* Sources */ = { + D53B796F411F627ED5666EF4B8711F49 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 701F0F6CC14B23859F8C3AA8D274D94A /* Address.swift in Sources */, - D1C92028E17B26ABB16B6C1EF3F387E5 /* ApiSession.swift in Sources */, - AFFE2DE23B44BECEDE290348F36F04D0 /* Balance.swift in Sources */, - AD152834CA3C1B0DE54526F950814CD1 /* BankAccount.swift in Sources */, - 8D58EC5EDF5F6D9A5506884FBCEB203C /* BitFlyer.swift in Sources */, - DDEE250BDA6A6977FEF31AC3659D00AA /* Board.swift in Sources */, - FE3359531449ACD10BCD0C9540592294 /* BoarderStatus.swift in Sources */, - 0508EDF69F0259C008F6C10806356E08 /* Chat.swift in Sources */, - AB745A30CFCB31DBF8049C26CC654827 /* ChildOrderResult.swift in Sources */, - F1E946058D8C8F3C5883A85E22FE5AF9 /* ChildOrders.swift in Sources */, - 414A584771758C5AE4CDD6A6A4E06EA3 /* ChildOrderType.swift in Sources */, - 83C5F2274CD451BF97BDCD778AC69065 /* CoinHistory.swift in Sources */, - D0A01790FB5513BE9460BE38E6048826 /* CoinStatus.swift in Sources */, - A38A72DDB57B9D8DC43E6A5644446996 /* Collateral.swift in Sources */, - 5B9080F2840DDBFFB28A89D46E37387E /* CollateralHistory.swift in Sources */, - E77DCC126414639AA61F4A1340307195 /* ConditionType.swift in Sources */, - 8096EB4A292E02B512ACF8C0E229290A /* Contract.swift in Sources */, - DA348E81842DF9D5C6713FD2AEFB5449 /* CurrencyCode.swift in Sources */, - ADDC1DD15A54FB60C172435E81A0169B /* DepositHistory.swift in Sources */, - 350861FB3E3422A0D797A75B72438A1B /* DictionaryExtensions.swift in Sources */, - CEBC3C199E280B46EC37E53BC0BEECF4 /* Executions.swift in Sources */, - 880E76CD7A2F06CB9312379127E5131E /* GetAddressRequest.swift in Sources */, - 7AA141DC41A984304DC61B140ABBEB5A /* GetBalanceRequest.swift in Sources */, - DB604F1155F211976D2924A291E2FE03 /* GetBankAccountsRequest.swift in Sources */, - D07B27C54FC1AAF70C67E70B56248C67 /* GetBoarderStatusRequest.swift in Sources */, - 3CC7629863BF6E722F7EFC33972B249D /* GetBoardRequest.swift in Sources */, - C0D42A0AAA8113586DEC2A0442B2968B /* GetChatsRequest.swift in Sources */, - AC8E2D2E79F578BB794BE2669845A348 /* GetChildOrdersRequest.swift in Sources */, - DBF51928AEA7B20A32B37134DE422D3B /* GetCollateralHistoriesRequest.swift in Sources */, - 3F4A5C3EB03633D2294C6EC45C21BAF2 /* GetCollateralRequest.swift in Sources */, - C5BBE33FBBA6486584D132859F875B4B /* GetContractsRequest.swift in Sources */, - 9C2F273DFEECC7AA39DD48312526BC6A /* GetDepositCoinHistoriesRequest.swift in Sources */, - D0E33219049DA3DF31FEDB3F30952601 /* GetDepositsRequest.swift in Sources */, - 7C2D406766CD09A741D004F5074871A6 /* GetExecutionsRequest.swift in Sources */, - F2BCF202719F77E50712C8A3FE2688BF /* GetHelthStateRequest.swift in Sources */, - 41015EC787AD1DC8AF775B3AA0F6D7C1 /* GetMarketListRequest.swift in Sources */, - 9849B6E5DA4E1A32EA0E58E144D93E58 /* GetParentOrderDetailRequest.swift in Sources */, - D7CAA419C83F1856536F56FEB69FD650 /* GetParentOrdersRequest.swift in Sources */, - 0BF644EF91D85180033298DC2180EED5 /* GetPermissionsRequest.swift in Sources */, - 04ADBCD2A6C9E02B9961887819A3212F /* GetPositionsRequest.swift in Sources */, - AAC3E7DCD7C3966B6F580A21793B00FF /* GetTickerRequest.swift in Sources */, - F731950E2EEC46D48E1A8CF1F67353B6 /* GetTraidingCommissionRequest.swift in Sources */, - 9681D82F575F79FF6D47C19D2F435C8C /* GetTransferCoinHistoriesRequest.swift in Sources */, - 28B83D3B931D5B5E683BB05A7DA229E8 /* GetWithdrawsRequest.swift in Sources */, - E1AACD1A06F4FEAFE4392D3863795B27 /* HealthState.swift in Sources */, - 5EE8DC4B09FB1A82ECB70FC302ADAF3C /* HTTPMethod.swift in Sources */, - 10C06572848C719114D7853F461A79EA /* Market.swift in Sources */, - 768EC340DBEDF0447F6CAB27F99BDF4E /* MessageID.swift in Sources */, - 9ED1359CFD9644811D6E6E2E4B0265B3 /* OnlyStatusCodeResponse.swift in Sources */, - 15EC94A1BB2C7772419BC66DB4BCFA4D /* Order.swift in Sources */, - 8273296B2FF4EA070DC3E0C43A04A550 /* OrderState.swift in Sources */, - C6F2B1B66E0BF6AD1D9C251441BF9902 /* ParentOrderDetail.swift in Sources */, - 94DE2EBB26B729ECC5D41DBC8D776C21 /* ParentOrderResult.swift in Sources */, - C9EFE2157C8C2AFAB7CA3A4161AA154C /* ParentOrders.swift in Sources */, - 32B43DC5D0A806E9A4367291D8583C2F /* ParentOrderType.swift in Sources */, - 350FBB819F34ED3E76CF711027C8F15B /* Permission.swift in Sources */, - 939837AEE635367FD47F36DC9445C7C7 /* Position.swift in Sources */, - 227ED165568A98659549C983341BF68A /* PositionSide.swift in Sources */, - FC22873AD7E8031E42EE04532BA96651 /* PostCancelAllChildOrdersRequest.swift in Sources */, - 52B74D4480B07CF5761318A074E813EC /* PostCancelChildOrderRequest.swift in Sources */, - 41E2C98262823FAD8D9E1F6DEB719540 /* PostCancelParentOrderRequest.swift in Sources */, - 6884154FF79EE5BDC14D609A0716BBB7 /* PostChildOrderRequest.swift in Sources */, - A6FECCBB848BB9F2A2C3ACD42D1442D3 /* PostIFDOCOOrderRequest.swift in Sources */, - 9D53D73628C4FAA2EAA48EEF116177D4 /* PostIFDOrderRequest.swift in Sources */, - 99811870CCD008A915FF0CD3013DADCA /* PostOCOOrderRequest.swift in Sources */, - 891B36AD051D399A5188835B892A9039 /* PostSimpleOrderRequest.swift in Sources */, - D58F19BAB5B091CDB9BE884EB68124FD /* PostWithdrawRequest.swift in Sources */, - 042523DFB6C76AF01DBC61E05A97A475 /* ProductCode.swift in Sources */, - D6A30385834E88F5680BE9719A145EED /* RealTimeAPI.swift in Sources */, - E3B66E29680F852F0900AA65931D9D46 /* RealTimeAPIDelegate.swift in Sources */, - D440BFA73275F8D055355BD6EBD7C2B6 /* Requestable.swift in Sources */, - 2EF27606BDCA5005D3C30EA13493727C /* RequestableExtensions.swift in Sources */, - D73BFB603F3E62F95489ECA1BAA5E414 /* ResponseError.swift in Sources */, - E9731A99FF6DE8DDF7E4E7940FBAEF07 /* Result.swift in Sources */, - 76C097041D5BA49609C1E1572C29ACE7 /* SwiftFlyer-dummy.m in Sources */, - 6B07891E961E005DF0A8C761A0D54DF5 /* Ticker.swift in Sources */, - 2FB15AC820F107835C91EA0A59204542 /* TimeInForce.swift in Sources */, - 0AC824D360B08FE7E76B8AAC626B5B52 /* TradeHealth.swift in Sources */, - D01C05C3460A25744E45CE8DDBD896B4 /* TradeState.swift in Sources */, - C9F3DC2C7BC21D7EF7AB7FC656DC66A1 /* TradingCommission.swift in Sources */, - 02540F14361405BF94497910B21E3779 /* WithdrawHistory.swift in Sources */, + E84A7469FFBC2A4433EA9B6C6028FE29 /* Compression.swift in Sources */, + F814F26F83E78B64E7D9AFEE0B519E02 /* SSLClientCertificate.swift in Sources */, + F7F446C5618E7A154613A97DFC2125BB /* SSLSecurity.swift in Sources */, + 6925BC821E2930CAA127E4E58A58BB08 /* Starscream-dummy.m in Sources */, + CCDE3AA61981FE0BDFDD193F5D53AAFF /* WebSocket.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 07F9DC78A61DE86868974BF5F61286D2 /* PBXTargetDependency */ = { + 1A2E31CC480F22CA92A835861F313A1D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = CryptoSwift; - target = DE16D66575B4E29D54F3F5DB5CD606FB /* CryptoSwift */; - targetProxy = 20502AC4B5D5FDE8F24E4251E92370F8 /* PBXContainerItemProxy */; + name = "Pods-SwiftFlyer_Example"; + target = 4529B069CB2A703C12A29AC9E4ADDE25 /* Pods-SwiftFlyer_Example */; + targetProxy = AF76FD70BDDBE96ADA9634EBC00DDCB1 /* PBXContainerItemProxy */; }; - 1868C06C4F09C89D30AAE98B901E1C93 /* PBXTargetDependency */ = { + 392C298FA50DC646C1568F768DB24B6F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Quick; - target = E42177C1A5BF913DEA219A89612113C4 /* Quick */; - targetProxy = 911C5134994544BBF7464574A5C4FF64 /* PBXContainerItemProxy */; + target = 917206ED3ED92620C4E47F2A12964819 /* Quick */; + targetProxy = DAD202463CF77C19BCFF2888BB5483A8 /* PBXContainerItemProxy */; }; - 679056975BCD81DB9C18EED11833125A /* PBXTargetDependency */ = { + 61D0D1733DB98274C269228215D17990 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Nimble; - target = DD7C8BF89FE8053D0A2A2D88BB49CF07 /* Nimble */; - targetProxy = 64F463544CD53AF421041FD7D7CCCFAD /* PBXContainerItemProxy */; + target = F554EA343D656E7FB0C1ACC045EB2666 /* Nimble */; + targetProxy = 0CD3D0491DD1B74BE6C9719095373735 /* PBXContainerItemProxy */; }; - 6909E3B29F724EAC4D4714B9D16B34DA /* PBXTargetDependency */ = { + 9E93B069F9B326A123E324651A9D2272 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = CryptoSwift; - target = DE16D66575B4E29D54F3F5DB5CD606FB /* CryptoSwift */; - targetProxy = 0CC2D3C8F5E920F49B8949F7761D6F7E /* PBXContainerItemProxy */; + name = Starscream; + target = AED2DD42FFC444090BD468B8C149767F /* Starscream */; + targetProxy = 318281DB9F74B01192A0CDF845BE1D53 /* PBXContainerItemProxy */; }; - 88A772AE320FA3ED185BF3B3117E1B78 /* PBXTargetDependency */ = { + B121DB8C7C9E38A49A59F7FB499E8CBD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SwiftFlyer; - target = FFB534F916A11147DC3182FA60E61848 /* SwiftFlyer */; - targetProxy = 59471C00B46EA9AA9A2214696E9CD673 /* PBXContainerItemProxy */; + target = 04618ADD15BA1B3D67AF8D975DA34BAD /* SwiftFlyer */; + targetProxy = 0C7D352AB6A09ACA74909ED87C70FF6D /* PBXContainerItemProxy */; }; - DD8484B4DAD78C21BB9C3B33645FE4BD /* PBXTargetDependency */ = { + F976293466ABD6CEDE3E232100FF86C1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Starscream; - target = 9B7B83B589D172B9D0A1450AFDCC891A /* Starscream */; - targetProxy = C47EFAFF59FDB54B29D4537C32819DE0 /* PBXContainerItemProxy */; + target = AED2DD42FFC444090BD468B8C149767F /* Starscream */; + targetProxy = ED5EEAD7F8BBE80BCA8CA10086200771 /* PBXContainerItemProxy */; }; - EA7DAC9CA57C6AE75538E770209FFF6A /* PBXTargetDependency */ = { + FEA9985F545B0897F217EE07766BC1D4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Starscream; - target = 9B7B83B589D172B9D0A1450AFDCC891A /* Starscream */; - targetProxy = 595B26BECAF430532EEB653567FE2095 /* PBXContainerItemProxy */; + name = CryptoSwift; + target = 4199AFA0D6B764FC01BD5903BE7D1CAF /* CryptoSwift */; + targetProxy = 1D0849C4DAE3B03ABE3C14491C8F4333 /* PBXContainerItemProxy */; + }; + FFDDA6DBB3813359F2B814779A22D19D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = CryptoSwift; + target = 4199AFA0D6B764FC01BD5903BE7D1CAF /* CryptoSwift */; + targetProxy = F8F17D7D0A7489E3E2CA8CC0882F1198 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 0E2F51923D7563BE3A01CF08834DB159 /* Release */ = { + 07488D4657FB0A78086563621D425F8A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + 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_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 = 9.0; + 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 = 4.2; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + 1A2896DA45B80C48372E5D769ED5D5E8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD2F03CC2F2F88DD4C99D76DC5FA3493 /* SwiftFlyer.xcconfig */; + baseConfigurationReference = 4214DF700A0E2B15D6141F36F78AB6C4 /* SwiftFlyer.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1809,17 +1986,17 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_PREFIX_HEADER = "Target Support Files/SwiftFlyer/SwiftFlyer-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftFlyer/Info.plist"; + INFOPLIST_FILE = "Target Support Files/SwiftFlyer/SwiftFlyer-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/SwiftFlyer/SwiftFlyer.modulemap"; + PRODUCT_MODULE_NAME = SwiftFlyer; PRODUCT_NAME = SwiftFlyer; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -1827,9 +2004,9 @@ }; name = Release; }; - 1B230D4A47175B0A5ED63DEFA20FCB16 /* Release */ = { + 2D6A65327F1FC565E63668AE8D630ECC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6096AF0A0E42FA4AA497BED20BD987AA /* Nimble.xcconfig */; + baseConfigurationReference = FBFB4FA187DB2611169ECCB6D07F1A2F /* Nimble.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1841,17 +2018,17 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Nimble/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Nimble/Nimble-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/Nimble/Nimble.modulemap"; + PRODUCT_MODULE_NAME = Nimble; PRODUCT_NAME = Nimble; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -1859,9 +2036,9 @@ }; name = Release; }; - 1EC6E80B3F946C3B0B2629BBD4A56103 /* Debug */ = { + 3437A7A2AE86E43FAF509AFF7E2EE874 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B6EC1F79FEADCB660CE46513CA4A6764 /* CryptoSwift.xcconfig */; + baseConfigurationReference = 6CB3CF30258C82EC5647BB18788CF801 /* Starscream.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1872,85 +2049,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/CryptoSwift/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Starscream/Starscream-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Starscream/Starscream-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; - PRODUCT_NAME = CryptoSwift; + MODULEMAP_FILE = "Target Support Files/Starscream/Starscream.modulemap"; + PRODUCT_MODULE_NAME = Starscream; + PRODUCT_NAME = Starscream; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 26F954BA177A9A46FFFD4E23ED11D67A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - 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_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; - CODE_SIGNING_REQUIRED = NO; - 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 = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Release; - }; - 29C64259B916283127BC8AF57F87DE1C /* Debug */ = { + 37FDCB630026A35CAEA27A1A1F3C3438 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3BF12D4A3D0FFB957C09BE974DB904DB /* Pods-SwiftFlyer_Tests.debug.xcconfig */; + baseConfigurationReference = 71F36FC5E680DF95656DD9EC484FE88F /* CryptoSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1961,30 +2080,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-SwiftFlyer_Tests/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/CryptoSwift/CryptoSwift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_SwiftFlyer_Tests; + MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; + PRODUCT_MODULE_NAME = CryptoSwift; + PRODUCT_NAME = CryptoSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 34AAD49A66933A8C44FFF8FF0FD3E041 /* Release */ = { + 48CD1A254FDDDA56D51D2A99FB403321 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B6EC1F79FEADCB660CE46513CA4A6764 /* CryptoSwift.xcconfig */; + baseConfigurationReference = 71F36FC5E680DF95656DD9EC484FE88F /* CryptoSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1996,17 +2112,17 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/CryptoSwift/Info.plist"; + INFOPLIST_FILE = "Target Support Files/CryptoSwift/CryptoSwift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; + PRODUCT_MODULE_NAME = CryptoSwift; PRODUCT_NAME = CryptoSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2014,10 +2130,11 @@ }; name = Release; }; - 354A6BA65385A7BB4F0EE3774F99BEF4 /* Debug */ = { + 6FC531CE7D156C7597437983C9D52CBF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8C546E2EA9A5099A8139FF06A227582D /* Starscream.xcconfig */; + baseConfigurationReference = A28E9BB5280B66E03E5B132E4A76868B /* Pods-SwiftFlyer_Tests.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -2027,27 +2144,89 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Starscream/Starscream-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Starscream/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Starscream/Starscream.modulemap"; - PRODUCT_NAME = Starscream; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests.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; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 4A222EDF064418FA01048D2F3F5FF622 /* Release */ = { + A1962E6FF39BBAC201A2E5DDF99557DF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8C546E2EA9A5099A8139FF06A227582D /* Starscream.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + 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_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 = 9.0; + 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 = 4.2; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + C2700F90A2918271E4353431D04EB7FF /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4214DF700A0E2B15D6141F36F78AB6C4 /* SwiftFlyer.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2058,29 +2237,29 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Starscream/Starscream-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Starscream/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SwiftFlyer/SwiftFlyer-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SwiftFlyer/SwiftFlyer-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Starscream/Starscream.modulemap"; - PRODUCT_NAME = Starscream; + MODULEMAP_FILE = "Target Support Files/SwiftFlyer/SwiftFlyer.modulemap"; + PRODUCT_MODULE_NAME = SwiftFlyer; + PRODUCT_NAME = SwiftFlyer; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 6C3E4B5868789FE704071B038BE212E6 /* Release */ = { + C6C71352245623653FB532114261673C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E371867E144E1D2DF20D50F88D9D40B2 /* Pods-SwiftFlyer_Example.release.xcconfig */; + baseConfigurationReference = 4F2406A4CE0DFF2DAC338A5DFF31D43B /* Pods-SwiftFlyer_Example.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -2090,7 +2269,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-SwiftFlyer_Example/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -2100,10 +2279,9 @@ OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_SwiftFlyer_Example; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2111,9 +2289,9 @@ }; name = Release; }; - 707074C1A853CD0F0E491AE0CEB207CB /* Debug */ = { + CC8BC9CEED406AFE54F4B0A31B75BBAE /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4DB0BEA06B37F88E05BA894799C86EAD /* Quick.xcconfig */; + baseConfigurationReference = 136C0BBD8ECF4D4ACAB2E7F6693B6816 /* Quick.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2125,26 +2303,26 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_PREFIX_HEADER = "Target Support Files/Quick/Quick-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Quick/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Quick/Quick-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/Quick/Quick.modulemap"; + PRODUCT_MODULE_NAME = Quick; PRODUCT_NAME = Quick; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 711DCFDA615E0221CA91503502992821 /* Debug */ = { + CF389F750F700469742970304E1E1BC5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD2F03CC2F2F88DD4C99D76DC5FA3493 /* SwiftFlyer.xcconfig */; + baseConfigurationReference = FBFB4FA187DB2611169ECCB6D07F1A2F /* Nimble.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2155,27 +2333,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SwiftFlyer/SwiftFlyer-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftFlyer/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Nimble/Nimble-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftFlyer/SwiftFlyer.modulemap"; - PRODUCT_NAME = SwiftFlyer; + MODULEMAP_FILE = "Target Support Files/Nimble/Nimble.modulemap"; + PRODUCT_MODULE_NAME = Nimble; + PRODUCT_NAME = Nimble; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 766BD7A5177C94D8C764C35A357CECB4 /* Debug */ = { + D32C464BDEF70E81490B0EAFB74524B0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6096AF0A0E42FA4AA497BED20BD987AA /* Nimble.xcconfig */; + baseConfigurationReference = 6CB3CF30258C82EC5647BB18788CF801 /* Starscream.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2186,28 +2364,30 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Nimble/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Starscream/Starscream-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Starscream/Starscream-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Nimble/Nimble.modulemap"; - PRODUCT_NAME = Nimble; + MODULEMAP_FILE = "Target Support Files/Starscream/Starscream.modulemap"; + PRODUCT_MODULE_NAME = Starscream; + PRODUCT_NAME = Starscream; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 9FE581C331D423E28E3515CCDE10609A /* Release */ = { + D62BC8B484CA5F14BDC476CD2499BC52 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4DB0BEA06B37F88E05BA894799C86EAD /* Quick.xcconfig */; + baseConfigurationReference = 911372DAD77256623CC631586D6B8CA8 /* Pods-SwiftFlyer_Example.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -2217,29 +2397,30 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Quick/Quick-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Quick/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Quick/Quick.modulemap"; - PRODUCT_NAME = Quick; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example.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; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - C8B35874259267CAA9FF2A7B5F77C17C /* Release */ = { + E6CB8602CA1F5998FF55A0D161E6D17B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 158E1903D9048581E4C1668F5F10DE3A /* Pods-SwiftFlyer_Tests.release.xcconfig */; + baseConfigurationReference = 40DC247417491EFF44950FA47BA16DA5 /* Pods-SwiftFlyer_Tests.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -2249,7 +2430,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-SwiftFlyer_Tests/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -2259,83 +2440,18 @@ OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_SwiftFlyer_Tests; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; - }; - E2BF6D6731C31DE69900B7B24E6F0445 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - 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_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; - CODE_SIGNING_REQUIRED = NO; - 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 = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SYMROOT = "${SRCROOT}/../build"; - }; name = Debug; }; - E49A3E7B847832B0E8D028C3AB397B85 /* Debug */ = { + E7E420DD5A5E83512E8E238FC88CEDA3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8648C67A0B2AB9657FA70214B0128732 /* Pods-SwiftFlyer_Example.debug.xcconfig */; + baseConfigurationReference = 136C0BBD8ECF4D4ACAB2E7F6693B6816 /* Quick.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2346,103 +2462,101 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-SwiftFlyer_Example/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Quick/Quick-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Quick/Quick-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_SwiftFlyer_Example; + MODULEMAP_FILE = "Target Support Files/Quick/Quick.modulemap"; + PRODUCT_MODULE_NAME = Quick; + PRODUCT_NAME = Quick; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0062D0E412944B0375A8BF2742405D01 /* Build configuration list for PBXNativeTarget "SwiftFlyer" */ = { + 06FA395FFEAF5E28FA7208D7C6BD74D0 /* Build configuration list for PBXNativeTarget "CryptoSwift" */ = { isa = XCConfigurationList; buildConfigurations = ( - 711DCFDA615E0221CA91503502992821 /* Debug */, - 0E2F51923D7563BE3A01CF08834DB159 /* Release */, + 37FDCB630026A35CAEA27A1A1F3C3438 /* Debug */, + 48CD1A254FDDDA56D51D2A99FB403321 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2B83BB8C19C91C784722AA3D25C1F13D /* Build configuration list for PBXNativeTarget "Pods-SwiftFlyer_Example" */ = { + 0BFE0963F4DDAA4E6575407FF1C2A9D7 /* Build configuration list for PBXNativeTarget "Pods-SwiftFlyer_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - E49A3E7B847832B0E8D028C3AB397B85 /* Debug */, - 6C3E4B5868789FE704071B038BE212E6 /* Release */, + E6CB8602CA1F5998FF55A0D161E6D17B /* Debug */, + 6FC531CE7D156C7597437983C9D52CBF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 1D21474ADC3AB41E8D3036DB16A55538 /* Build configuration list for PBXNativeTarget "Quick" */ = { isa = XCConfigurationList; buildConfigurations = ( - E2BF6D6731C31DE69900B7B24E6F0445 /* Debug */, - 26F954BA177A9A46FFFD4E23ED11D67A /* Release */, + CC8BC9CEED406AFE54F4B0A31B75BBAE /* Debug */, + E7E420DD5A5E83512E8E238FC88CEDA3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 439502BDB29394EE0D69336E69C8494C /* Build configuration list for PBXNativeTarget "Nimble" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 766BD7A5177C94D8C764C35A357CECB4 /* Debug */, - 1B230D4A47175B0A5ED63DEFA20FCB16 /* Release */, + 07488D4657FB0A78086563621D425F8A /* Debug */, + A1962E6FF39BBAC201A2E5DDF99557DF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 45CF398CE752AB13CF1CD1B59C8B2718 /* Build configuration list for PBXNativeTarget "Pods-SwiftFlyer_Tests" */ = { + 50D92DC916A25B532B47D23DDCA1F5F1 /* Build configuration list for PBXNativeTarget "SwiftFlyer" */ = { isa = XCConfigurationList; buildConfigurations = ( - 29C64259B916283127BC8AF57F87DE1C /* Debug */, - C8B35874259267CAA9FF2A7B5F77C17C /* Release */, + C2700F90A2918271E4353431D04EB7FF /* Debug */, + 1A2896DA45B80C48372E5D769ED5D5E8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9269BAECFFD4175D15E93D6204807CDA /* Build configuration list for PBXNativeTarget "Starscream" */ = { + A00C410565E99E4828DD70E3712D38A7 /* Build configuration list for PBXNativeTarget "Starscream" */ = { isa = XCConfigurationList; buildConfigurations = ( - 354A6BA65385A7BB4F0EE3774F99BEF4 /* Debug */, - 4A222EDF064418FA01048D2F3F5FF622 /* Release */, + 3437A7A2AE86E43FAF509AFF7E2EE874 /* Debug */, + D32C464BDEF70E81490B0EAFB74524B0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A2A1FC75CCCDCE10818AD7D9284ED293 /* Build configuration list for PBXNativeTarget "CryptoSwift" */ = { + E3A98634DB5DA9D006BDFE48B5C34CB5 /* Build configuration list for PBXNativeTarget "Nimble" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1EC6E80B3F946C3B0B2629BBD4A56103 /* Debug */, - 34AAD49A66933A8C44FFF8FF0FD3E041 /* Release */, + CF389F750F700469742970304E1E1BC5 /* Debug */, + 2D6A65327F1FC565E63668AE8D630ECC /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F04361EA26CD019ED69B5EEEA6242C1D /* Build configuration list for PBXNativeTarget "Quick" */ = { + F2E4CB74C7F3C05127E323F94C197DE7 /* Build configuration list for PBXNativeTarget "Pods-SwiftFlyer_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 707074C1A853CD0F0E491AE0CEB207CB /* Debug */, - 9FE581C331D423E28E3515CCDE10609A /* Release */, + D62BC8B484CA5F14BDC476CD2499BC52 /* Debug */, + C6C71352245623653FB532114261673C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; } diff --git a/Example/Pods/Quick/README.md b/Example/Pods/Quick/README.md index e6dc0ad..2cb397f 100644 --- a/Example/Pods/Quick/README.md +++ b/Example/Pods/Quick/README.md @@ -4,6 +4,7 @@ [![CocoaPods](https://img.shields.io/cocoapods/v/Quick.svg)](https://cocoapods.org/pods/Quick) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Platforms](https://img.shields.io/cocoapods/p/Quick.svg)](https://cocoapods.org/pods/Quick) +[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com) Quick is a behavior-driven development framework for Swift and Objective-C. Inspired by [RSpec](https://github.com/rspec/rspec), [Specta](https://github.com/specta/specta), and [Ginkgo](https://github.com/onsi/ginkgo). @@ -44,7 +45,8 @@ Certain versions of Quick and Nimble only support certain versions of Swift. Dep |Swift version |Quick version |Nimble version | |:--------------------|:---------------|:--------------| -|Swift 3 |v1.0.0 or later |v5.0.0 or later| +|Swift 4.2 |v1.3.2 or later |v7.3.2 or later| +|Swift 3 / Swift 4 |v1.0.0 or later |v5.0.0 or later| |Swift 2.2 / Swift 2.3|v0.9.3 |v4.1.0 | ## Documentation diff --git a/Example/Pods/Quick/Sources/Quick/Behavior.swift b/Example/Pods/Quick/Sources/Quick/Behavior.swift index 1d98702..7dfefac 100644 --- a/Example/Pods/Quick/Sources/Quick/Behavior.swift +++ b/Example/Pods/Quick/Sources/Quick/Behavior.swift @@ -4,7 +4,7 @@ open class Behavior { - open static var name: String { return String(describing: self) } + public static var name: String { return String(describing: self) } /** override this method in your behavior to define a set of reusable examples. diff --git a/Example/Pods/Quick/Sources/Quick/Callsite.swift b/Example/Pods/Quick/Sources/Quick/Callsite.swift index f5e3711..47b3442 100644 --- a/Example/Pods/Quick/Sources/Quick/Callsite.swift +++ b/Example/Pods/Quick/Sources/Quick/Callsite.swift @@ -1,18 +1,23 @@ import Foundation -// `#if swift(>=3.2) && (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE` -// does not work as expected. -#if swift(>=3.2) - #if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE - @objcMembers - public class _CallsiteBase: NSObject {} - #else - public class _CallsiteBase: NSObject {} - #endif +#if canImport(Darwin) && !SWIFT_PACKAGE +@objcMembers +public class _CallsiteBase: NSObject {} #else public class _CallsiteBase: NSObject {} #endif +// Ideally we would always use `StaticString` as the type for tracking the file name +// in which an example is defined, for consistency with `assert` etc. from the +// stdlib, and because recent versions of the XCTest overlay require `StaticString` +// when calling `XCTFail`. Under the Objective-C runtime (i.e. building on macOS), we +// have to use `String` instead because StaticString can't be generated from Objective-C +#if SWIFT_PACKAGE +public typealias FileString = StaticString +#else +public typealias FileString = String +#endif + /** An object encapsulating the file and line number at which a particular example is defined. @@ -21,14 +26,14 @@ final public class Callsite: _CallsiteBase { /** The absolute path of the file in which an example is defined. */ - public let file: String + public let file: FileString /** The line number on which an example is defined. */ public let line: UInt - internal init(file: String, line: UInt) { + internal init(file: FileString, line: UInt) { self.file = file self.line = line } @@ -40,6 +45,6 @@ extension Callsite { If two callsites are in the same file and on the same line, they must be equal. */ @nonobjc public static func == (lhs: Callsite, rhs: Callsite) -> Bool { - return lhs.file == rhs.file && lhs.line == rhs.line + return String(describing: lhs.file) == String(describing: rhs.file) && lhs.line == rhs.line } } diff --git a/Example/Pods/Quick/Sources/Quick/Configuration/Configuration.swift b/Example/Pods/Quick/Sources/Quick/Configuration/Configuration.swift index dbb95f1..fe33997 100644 --- a/Example/Pods/Quick/Sources/Quick/Configuration/Configuration.swift +++ b/Example/Pods/Quick/Sources/Quick/Configuration/Configuration.swift @@ -72,7 +72,7 @@ final public class Configuration: NSObject { provided with metadata on the example that the closure is being run prior to. */ -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) @objc(beforeEachWithMetadata:) public func beforeEach(_ closure: @escaping BeforeExampleWithMetadataClosure) { exampleHooks.appendBefore(closure) @@ -109,7 +109,7 @@ final public class Configuration: NSObject { is provided with metadata on the example that the closure is being run after. */ -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) @objc(afterEachWithMetadata:) public func afterEach(_ closure: @escaping AfterExampleWithMetadataClosure) { exampleHooks.appendAfter(closure) diff --git a/Example/Pods/Quick/Sources/Quick/DSL/DSL.swift b/Example/Pods/Quick/Sources/Quick/DSL/DSL.swift index 94f20c5..284ffe1 100644 --- a/Example/Pods/Quick/Sources/Quick/DSL/DSL.swift +++ b/Example/Pods/Quick/Sources/Quick/DSL/DSL.swift @@ -127,7 +127,7 @@ public func afterEach(_ closure: @escaping AfterExampleWithMetadataClosure) { - parameter file: The absolute path to the file containing the example. A sensible default is provided. - parameter line: The line containing the example. A sensible default is provided. */ -public func it(_ description: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, closure: @escaping () -> Void) { +public func it(_ description: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, closure: @escaping () -> Void) { World.sharedWorld.it(description, flags: flags, file: file, line: line, closure: closure) } @@ -143,7 +143,7 @@ public func it(_ description: String, flags: FilterFlags = [:], file: String = # - parameter file: The absolute path to the file containing the current example group. A sensible default is provided. - parameter line: The line containing the current example group. A sensible default is provided. */ -public func itBehavesLike(_ name: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line) { +public func itBehavesLike(_ name: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line) { itBehavesLike(name, flags: flags, file: file, line: line, sharedExampleContext: { return [:] }) } @@ -163,7 +163,7 @@ public func itBehavesLike(_ name: String, flags: FilterFlags = [:], file: String - parameter file: The absolute path to the file containing the current example group. A sensible default is provided. - parameter line: The line containing the current example group. A sensible default is provided. */ -public func itBehavesLike(_ name: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, sharedExampleContext: @escaping SharedExampleContext) { +public func itBehavesLike(_ name: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, sharedExampleContext: @escaping SharedExampleContext) { World.sharedWorld.itBehavesLike(name, sharedExampleContext: sharedExampleContext, flags: flags, file: file, line: line) } @@ -179,7 +179,7 @@ public func itBehavesLike(_ name: String, flags: FilterFlags = [:], file: String - parameter file: The absolute path to the file containing the current example group. A sensible default is provided. - parameter line: The line containing the current example group. A sensible default is provided. */ -public func itBehavesLike(_ behavior: Behavior.Type, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, context: @escaping () -> C) { +public func itBehavesLike(_ behavior: Behavior.Type, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, context: @escaping () -> C) { World.sharedWorld.itBehavesLike(behavior, context: context, flags: flags, file: file, line: line) } @@ -214,7 +214,7 @@ public func xcontext(_ description: String, flags: FilterFlags, closure: () -> V Use this to quickly mark an `it` closure as pending. This disables the example and ensures the code within the closure is never run. */ -public func xit(_ description: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, closure: @escaping () -> Void) { +public func xit(_ description: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, closure: @escaping () -> Void) { World.sharedWorld.xit(description, flags: flags, file: file, line: line, closure: closure) } @@ -222,7 +222,7 @@ public func xit(_ description: String, flags: FilterFlags = [:], file: String = Use this to quicklu mark an `itBehavesLike` closure as pending. This disables the example group defined by this behavior and ensures the code within is never run. */ -public func xitBehavesLike(_ behavior: Behavior.Type, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, context: @escaping () -> C) { +public func xitBehavesLike(_ behavior: Behavior.Type, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, context: @escaping () -> C) { World.sharedWorld.xitBehavesLike(behavior, context: context, flags: flags, file: file, line: line) } /** @@ -245,27 +245,27 @@ public func fcontext(_ description: String, flags: FilterFlags = [:], closure: ( Use this to quickly focus an `it` closure, focusing the example. If any examples in the test suite are focused, only those examples are executed. */ -public func fit(_ description: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, closure: @escaping () -> Void) { +public func fit(_ description: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, closure: @escaping () -> Void) { World.sharedWorld.fit(description, flags: flags, file: file, line: line, closure: closure) } /** Use this to quickly focus an `itBehavesLike` closure. */ -public func fitBehavesLike(_ name: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line) { +public func fitBehavesLike(_ name: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line) { fitBehavesLike(name, flags: flags, file: file, line: line, sharedExampleContext: { return [:] }) } /** Use this to quickly focus an `itBehavesLike` closure. */ -public func fitBehavesLike(_ name: String, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, sharedExampleContext: @escaping SharedExampleContext) { +public func fitBehavesLike(_ name: String, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, sharedExampleContext: @escaping SharedExampleContext) { World.sharedWorld.fitBehavesLike(name, sharedExampleContext: sharedExampleContext, flags: flags, file: file, line: line) } /** Use this to quickly focus on `itBehavesLike` closure. */ -public func fitBehavesLike(_ behavior: Behavior.Type, flags: FilterFlags = [:], file: String = #file, line: UInt = #line, context: @escaping () -> C) { +public func fitBehavesLike(_ behavior: Behavior.Type, flags: FilterFlags = [:], file: FileString = #file, line: UInt = #line, context: @escaping () -> C) { World.sharedWorld.fitBehavesLike(behavior, context: context, flags: flags, file: file, line: line) } diff --git a/Example/Pods/Quick/Sources/Quick/DSL/World+DSL.swift b/Example/Pods/Quick/Sources/Quick/DSL/World+DSL.swift index 5249027..d331d69 100644 --- a/Example/Pods/Quick/Sources/Quick/DSL/World+DSL.swift +++ b/Example/Pods/Quick/Sources/Quick/DSL/World+DSL.swift @@ -56,7 +56,7 @@ extension World { currentExampleGroup.hooks.appendBefore(closure) } -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE @objc(beforeEachWithMetadata:) internal func beforeEach(closure: @escaping BeforeExampleWithMetadataClosure) { currentExampleGroup.hooks.appendBefore(closure) @@ -74,7 +74,7 @@ extension World { currentExampleGroup.hooks.appendAfter(closure) } -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE @objc(afterEachWithMetadata:) internal func afterEach(closure: @escaping AfterExampleWithMetadataClosure) { currentExampleGroup.hooks.appendAfter(closure) @@ -85,7 +85,8 @@ extension World { } #endif - internal func it(_ description: String, flags: FilterFlags, file: String, line: UInt, closure: @escaping () -> Void) { + @nonobjc + internal func it(_ description: String, flags: FilterFlags, file: FileString, line: UInt, closure: @escaping () -> Void) { if beforesCurrentlyExecuting { raiseError("'it' cannot be used inside 'beforeEach', 'it' may only be used inside 'context' or 'describe'. ") } @@ -100,19 +101,22 @@ extension World { currentExampleGroup.appendExample(example) } - internal func fit(_ description: String, flags: FilterFlags, file: String, line: UInt, closure: @escaping () -> Void) { + @nonobjc + internal func fit(_ description: String, flags: FilterFlags, file: FileString, line: UInt, closure: @escaping () -> Void) { var focusedFlags = flags focusedFlags[Filter.focused] = true self.it(description, flags: focusedFlags, file: file, line: line, closure: closure) } - internal func xit(_ description: String, flags: FilterFlags, file: String, line: UInt, closure: @escaping () -> Void) { + @nonobjc + internal func xit(_ description: String, flags: FilterFlags, file: FileString, line: UInt, closure: @escaping () -> Void) { var pendingFlags = flags pendingFlags[Filter.pending] = true self.it(description, flags: pendingFlags, file: file, line: line, closure: closure) } - internal func itBehavesLike(_ name: String, sharedExampleContext: @escaping SharedExampleContext, flags: FilterFlags, file: String, line: UInt) { + @nonobjc + internal func itBehavesLike(_ name: String, sharedExampleContext: @escaping SharedExampleContext, flags: FilterFlags, file: FileString, line: UInt) { guard currentExampleMetadata == nil else { raiseError("'itBehavesLike' cannot be used inside '\(currentPhase)', 'itBehavesLike' may only be used inside 'context' or 'describe'. ") } @@ -131,13 +135,14 @@ extension World { } } - internal func fitBehavesLike(_ name: String, sharedExampleContext: @escaping SharedExampleContext, flags: FilterFlags, file: String, line: UInt) { + @nonobjc + internal func fitBehavesLike(_ name: String, sharedExampleContext: @escaping SharedExampleContext, flags: FilterFlags, file: FileString, line: UInt) { var focusedFlags = flags focusedFlags[Filter.focused] = true self.itBehavesLike(name, sharedExampleContext: sharedExampleContext, flags: focusedFlags, file: file, line: line) } - internal func itBehavesLike(_ behavior: Behavior.Type, context: @escaping () -> C, flags: FilterFlags, file: String, line: UInt) { + internal func itBehavesLike(_ behavior: Behavior.Type, context: @escaping () -> C, flags: FilterFlags, file: FileString, line: UInt) { guard currentExampleMetadata == nil else { raiseError("'itBehavesLike' cannot be used inside '\(currentPhase)', 'itBehavesLike' may only be used inside 'context' or 'describe'. ") } @@ -155,36 +160,36 @@ extension World { } } - internal func fitBehavesLike(_ behavior: Behavior.Type, context: @escaping () -> C, flags: FilterFlags, file: String, line: UInt) { + internal func fitBehavesLike(_ behavior: Behavior.Type, context: @escaping () -> C, flags: FilterFlags, file: FileString, line: UInt) { var focusedFlags = flags focusedFlags[Filter.focused] = true self.itBehavesLike(behavior, context: context, flags: focusedFlags, file: file, line: line) } - internal func xitBehavesLike(_ behavior: Behavior.Type, context: @escaping () -> C, flags: FilterFlags, file: String, line: UInt) { + internal func xitBehavesLike(_ behavior: Behavior.Type, context: @escaping () -> C, flags: FilterFlags, file: FileString, line: UInt) { var pendingFlags = flags pendingFlags[Filter.pending] = true self.itBehavesLike(behavior, context: context, flags: pendingFlags, file: file, line: line) } -#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE +#if canImport(Darwin) && !SWIFT_PACKAGE @objc(itWithDescription:flags:file:line:closure:) - private func objc_it(_ description: String, flags: FilterFlags, file: String, line: UInt, closure: @escaping () -> Void) { + internal func objc_it(_ description: String, flags: FilterFlags, file: FileString, line: UInt, closure: @escaping () -> Void) { it(description, flags: flags, file: file, line: line, closure: closure) } @objc(fitWithDescription:flags:file:line:closure:) - private func objc_fit(_ description: String, flags: FilterFlags, file: String, line: UInt, closure: @escaping () -> Void) { + internal func objc_fit(_ description: String, flags: FilterFlags, file: FileString, line: UInt, closure: @escaping () -> Void) { fit(description, flags: flags, file: file, line: line, closure: closure) } @objc(xitWithDescription:flags:file:line:closure:) - private func objc_xit(_ description: String, flags: FilterFlags, file: String, line: UInt, closure: @escaping () -> Void) { + internal func objc_xit(_ description: String, flags: FilterFlags, file: FileString, line: UInt, closure: @escaping () -> Void) { xit(description, flags: flags, file: file, line: line, closure: closure) } @objc(itBehavesLikeSharedExampleNamed:sharedExampleContext:flags:file:line:) - private func objc_itBehavesLike(_ name: String, sharedExampleContext: @escaping SharedExampleContext, flags: FilterFlags, file: String, line: UInt) { + internal func objc_itBehavesLike(_ name: String, sharedExampleContext: @escaping SharedExampleContext, flags: FilterFlags, file: FileString, line: UInt) { itBehavesLike(name, sharedExampleContext: sharedExampleContext, flags: flags, file: file, line: line) } #endif diff --git a/Example/Pods/Quick/Sources/Quick/ErrorUtility.swift b/Example/Pods/Quick/Sources/Quick/ErrorUtility.swift index 155fefd..f13f43a 100644 --- a/Example/Pods/Quick/Sources/Quick/ErrorUtility.swift +++ b/Example/Pods/Quick/Sources/Quick/ErrorUtility.swift @@ -1,7 +1,7 @@ import Foundation internal func raiseError(_ message: String) -> Never { -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) NSException(name: .internalInconsistencyException, reason: message, userInfo: nil).raise() #endif diff --git a/Example/Pods/Quick/Sources/Quick/Example.swift b/Example/Pods/Quick/Sources/Quick/Example.swift index c15b31a..594efa0 100644 --- a/Example/Pods/Quick/Sources/Quick/Example.swift +++ b/Example/Pods/Quick/Sources/Quick/Example.swift @@ -3,15 +3,9 @@ import Foundation private var numberOfExamplesRun = 0 private var numberOfIncludedExamples = 0 -// `#if swift(>=3.2) && (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE` -// does not work as expected. -#if swift(>=3.2) - #if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE - @objcMembers - public class _ExampleBase: NSObject {} - #else - public class _ExampleBase: NSObject {} - #endif +#if canImport(Darwin) && !SWIFT_PACKAGE +@objcMembers +public class _ExampleBase: NSObject {} #else public class _ExampleBase: NSObject {} #endif @@ -81,6 +75,9 @@ final public class Example: _ExampleBase { let exampleMetadata = ExampleMetadata(example: self, exampleIndex: numberOfExamplesRun) world.currentExampleMetadata = exampleMetadata + defer { + world.currentExampleMetadata = nil + } world.exampleHooks.executeBefores(exampleMetadata) group!.phase = .beforesExecuting diff --git a/Example/Pods/Quick/Sources/Quick/ExampleMetadata.swift b/Example/Pods/Quick/Sources/Quick/ExampleMetadata.swift index 3dd28ab..b07b3bd 100644 --- a/Example/Pods/Quick/Sources/Quick/ExampleMetadata.swift +++ b/Example/Pods/Quick/Sources/Quick/ExampleMetadata.swift @@ -1,14 +1,8 @@ import Foundation -// `#if swift(>=3.2) && (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE` -// does not work as expected. -#if swift(>=3.2) - #if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE - @objcMembers - public class _ExampleMetadataBase: NSObject {} - #else - public class _ExampleMetadataBase: NSObject {} - #endif +#if canImport(Darwin) && !SWIFT_PACKAGE +@objcMembers +public class _ExampleMetadataBase: NSObject {} #else public class _ExampleMetadataBase: NSObject {} #endif diff --git a/Example/Pods/Quick/Sources/Quick/Filter.swift b/Example/Pods/Quick/Sources/Quick/Filter.swift index da137f8..304f6ec 100644 --- a/Example/Pods/Quick/Sources/Quick/Filter.swift +++ b/Example/Pods/Quick/Sources/Quick/Filter.swift @@ -1,14 +1,8 @@ import Foundation -// `#if swift(>=3.2) && (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE` -// does not work as expected. -#if swift(>=3.2) - #if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE - @objcMembers - public class _FilterBase: NSObject {} - #else - public class _FilterBase: NSObject {} - #endif +#if canImport(Darwin) && !SWIFT_PACKAGE +@objcMembers +public class _FilterBase: NSObject {} #else public class _FilterBase: NSObject {} #endif diff --git a/Example/Pods/Quick/Sources/Quick/NSBundle+CurrentTestBundle.swift b/Example/Pods/Quick/Sources/Quick/NSBundle+CurrentTestBundle.swift index d7a1442..f5596cc 100644 --- a/Example/Pods/Quick/Sources/Quick/NSBundle+CurrentTestBundle.swift +++ b/Example/Pods/Quick/Sources/Quick/NSBundle+CurrentTestBundle.swift @@ -1,4 +1,4 @@ -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) +#if canImport(Darwin) import Foundation @@ -17,7 +17,7 @@ extension Bundle { Module name has to be a valid "C99 extended identifier". */ internal var moduleName: String { - let fileName = bundleURL.fileName as NSString + let fileName = bundleURL.fileName return fileName.c99ExtendedIdentifier } } diff --git a/Example/Pods/Quick/Sources/Quick/NSString+C99ExtendedIdentifier.swift b/Example/Pods/Quick/Sources/Quick/NSString+C99ExtendedIdentifier.swift deleted file mode 100644 index ef73762..0000000 --- a/Example/Pods/Quick/Sources/Quick/NSString+C99ExtendedIdentifier.swift +++ /dev/null @@ -1,33 +0,0 @@ -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) -import Foundation - -public extension NSString { - - private static var invalidCharacters: CharacterSet = { - var invalidCharacters = CharacterSet() - - let invalidCharacterSets: [CharacterSet] = [ - .whitespacesAndNewlines, - .illegalCharacters, - .controlCharacters, - .punctuationCharacters, - .nonBaseCharacters, - .symbols - ] - - for invalidSet in invalidCharacterSets { - invalidCharacters.formUnion(invalidSet) - } - - return invalidCharacters - }() - - @objc(qck_c99ExtendedIdentifier) - var c99ExtendedIdentifier: String { - let validComponents = components(separatedBy: NSString.invalidCharacters) - let result = validComponents.joined(separator: "_") - - return result.isEmpty ? "_" : result - } -} -#endif diff --git a/Example/Pods/Quick/Sources/Quick/QuickSelectedTestSuiteBuilder.swift b/Example/Pods/Quick/Sources/Quick/QuickSelectedTestSuiteBuilder.swift index 415b680..865c3ae 100644 --- a/Example/Pods/Quick/Sources/Quick/QuickSelectedTestSuiteBuilder.swift +++ b/Example/Pods/Quick/Sources/Quick/QuickSelectedTestSuiteBuilder.swift @@ -1,4 +1,4 @@ -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) +#if canImport(Darwin) import Foundation /** diff --git a/Example/Pods/Quick/Sources/Quick/QuickTestSuite.swift b/Example/Pods/Quick/Sources/Quick/QuickTestSuite.swift index 0fe76a7..5cdc6d8 100644 --- a/Example/Pods/Quick/Sources/Quick/QuickTestSuite.swift +++ b/Example/Pods/Quick/Sources/Quick/QuickTestSuite.swift @@ -1,4 +1,4 @@ -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) +#if canImport(Darwin) import XCTest diff --git a/Example/Pods/Quick/Sources/Quick/String+C99ExtendedIdentifier.swift b/Example/Pods/Quick/Sources/Quick/String+C99ExtendedIdentifier.swift new file mode 100644 index 0000000..2dcd606 --- /dev/null +++ b/Example/Pods/Quick/Sources/Quick/String+C99ExtendedIdentifier.swift @@ -0,0 +1,46 @@ +#if canImport(Darwin) +import Foundation + +extension String { + private static var invalidCharacters: CharacterSet = { + var invalidCharacters = CharacterSet() + + let invalidCharacterSets: [CharacterSet] = [ + .whitespacesAndNewlines, + .illegalCharacters, + .controlCharacters, + .punctuationCharacters, + .nonBaseCharacters, + .symbols + ] + + for invalidSet in invalidCharacterSets { + invalidCharacters.formUnion(invalidSet) + } + + return invalidCharacters + }() + + internal var c99ExtendedIdentifier: String { + let validComponents = components(separatedBy: String.invalidCharacters) + let result = validComponents.joined(separator: "_") + + return result.isEmpty ? "_" : result + } +} + +/// Extension methods or properties for NSObject subclasses are invisible from +/// the Objective-C runtime on static linking unless the consumers add `-ObjC` +/// linker flag, so let's make a wrapper class to mitigate that situation. +/// +/// See: https://github.com/Quick/Quick/issues/785 and https://github.com/Quick/Quick/pull/803 +@objc +class QCKObjCStringUtils: NSObject { + override private init() {} + + @objc + static func c99ExtendedIdentifier(from string: String) -> String { + return string.c99ExtendedIdentifier + } +} +#endif diff --git a/Example/Pods/Quick/Sources/Quick/World.swift b/Example/Pods/Quick/Sources/Quick/World.swift index 127239a..e652871 100644 --- a/Example/Pods/Quick/Sources/Quick/World.swift +++ b/Example/Pods/Quick/Sources/Quick/World.swift @@ -12,15 +12,9 @@ public typealias SharedExampleContext = () -> [String: Any] */ public typealias SharedExampleClosure = (@escaping SharedExampleContext) -> Void -// `#if swift(>=3.2) && (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE` -// does not work as expected. -#if swift(>=3.2) - #if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE - @objcMembers - internal class _WorldBase: NSObject {} - #else - internal class _WorldBase: NSObject {} - #endif +#if canImport(Darwin) && !SWIFT_PACKAGE +@objcMembers +internal class _WorldBase: NSObject {} #else internal class _WorldBase: NSObject {} #endif @@ -57,7 +51,7 @@ final internal class World: _WorldBase { within this test suite. This is only true within the context of Quick functional tests. */ -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) // Convention of generating Objective-C selector has been changed on Swift 3 @objc(isRunningAdditionalSuites) internal var isRunningAdditionalSuites = false @@ -158,9 +152,9 @@ final internal class World: _WorldBase { } } -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) +#if canImport(Darwin) @objc(examplesForSpecClass:) - private func objc_examples(_ specClass: AnyClass) -> [Example] { + internal func objc_examples(_ specClass: AnyClass) -> [Example] { return examples(specClass) } #endif diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/Configuration/QuickConfiguration.m b/Example/Pods/Quick/Sources/QuickObjectiveC/Configuration/QuickConfiguration.m index 937b818..17beaa7 100644 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/Configuration/QuickConfiguration.m +++ b/Example/Pods/Quick/Sources/QuickObjectiveC/Configuration/QuickConfiguration.m @@ -1,7 +1,12 @@ #import "QuickConfiguration.h" -#import "World.h" #import +#if __has_include("Quick-Swift.h") +#import "Quick-Swift.h" +#else +#import +#endif + typedef void (^QCKClassEnumerationBlock)(Class klass); /** diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/QCKDSL.m b/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/QCKDSL.m index 10e8a3d..624832e 100644 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/QCKDSL.m +++ b/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/QCKDSL.m @@ -1,6 +1,10 @@ #import "QCKDSL.h" -#import "World.h" -#import "World+DSL.h" + +#if __has_include("Quick-Swift.h") +#import "Quick-Swift.h" +#else +#import +#endif void qck_beforeSuite(QCKDSLEmptyBlock closure) { [[World sharedWorld] beforeSuite:closure]; diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/World+DSL.h b/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/World+DSL.h deleted file mode 100644 index a3b8524..0000000 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/DSL/World+DSL.h +++ /dev/null @@ -1,20 +0,0 @@ -#import - -@interface World (SWIFT_EXTENSION(Quick)) -- (void)beforeSuite:(void (^ __nonnull)(void))closure; -- (void)afterSuite:(void (^ __nonnull)(void))closure; -- (void)sharedExamples:(NSString * __nonnull)name closure:(void (^ __nonnull)(NSDictionary * __nonnull (^ __nonnull)(void)))closure; -- (void)describe:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags closure:(void (^ __nonnull)(void))closure; -- (void)context:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags closure:(void (^ __nonnull)(void))closure; -- (void)fdescribe:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags closure:(void (^ __nonnull)(void))closure; -- (void)xdescribe:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags closure:(void (^ __nonnull)(void))closure; -- (void)beforeEach:(void (^ __nonnull)(void))closure; -- (void)beforeEachWithMetadata:(void (^ __nonnull)(ExampleMetadata * __nonnull))closure; -- (void)afterEach:(void (^ __nonnull)(void))closure; -- (void)afterEachWithMetadata:(void (^ __nonnull)(ExampleMetadata * __nonnull))closure; -- (void)itWithDescription:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags file:(NSString * __nonnull)file line:(NSUInteger)line closure:(void (^ __nonnull)(void))closure; -- (void)fitWithDescription:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags file:(NSString * __nonnull)file line:(NSUInteger)line closure:(void (^ __nonnull)(void))closure; -- (void)xitWithDescription:(NSString * __nonnull)description flags:(NSDictionary * __nonnull)flags file:(NSString * __nonnull)file line:(NSUInteger)line closure:(void (^ __nonnull)(void))closure; -- (void)itBehavesLikeSharedExampleNamed:(NSString * __nonnull)name sharedExampleContext:(NSDictionary * __nonnull (^ __nonnull)(void))sharedExampleContext flags:(NSDictionary * __nonnull)flags file:(NSString * __nonnull)file line:(NSUInteger)line; -- (void)pending:(NSString * __nonnull)description closure:(void (^ __nonnull)(void))closure; -@end diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.h b/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.h index 105a97e..ccf006e 100644 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.h +++ b/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.h @@ -47,4 +47,10 @@ */ - (void)spec; +/** + Returns the currently executing spec. Use in specs that require XCTestCase + methods, e.g. expectationWithDescription. +*/ +@property (class, nonatomic, readonly) QuickSpec *current; + @end diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.m b/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.m index 4891679..ed70d35 100644 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.m +++ b/Example/Pods/Quick/Sources/QuickObjectiveC/QuickSpec.m @@ -1,7 +1,11 @@ #import "QuickSpec.h" #import "QuickConfiguration.h" -#import "World.h" + +#if __has_include("Quick-Swift.h") +#import "Quick-Swift.h" +#else #import +#endif static QuickSpec *currentSpec = nil; @@ -75,6 +79,10 @@ + (NSArray *)testInvocations { - (void)spec { } ++ (QuickSpec*) current { + return currentSpec; +} + #pragma mark - Internal Methods /** @@ -101,8 +109,8 @@ + (SEL)addInstanceMethodForExample:(Example *)example classSelectorNames:(NSMuta }); const char *types = [[NSString stringWithFormat:@"%s%s%s", @encode(void), @encode(id), @encode(SEL)] UTF8String]; - - NSString *originalName = example.name.qck_c99ExtendedIdentifier; + + NSString *originalName = [QCKObjCStringUtils c99ExtendedIdentifierFrom:example.name]; NSString *selectorName = originalName; NSUInteger i = 2; diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/World.h b/Example/Pods/Quick/Sources/QuickObjectiveC/World.h deleted file mode 100644 index e638cf6..0000000 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/World.h +++ /dev/null @@ -1,18 +0,0 @@ -#import - -@class ExampleGroup; -@class ExampleMetadata; - -SWIFT_CLASS("_TtC5Quick5World") -@interface World - -@property (nonatomic) ExampleGroup * __nullable currentExampleGroup; -@property (nonatomic) ExampleMetadata * __nullable currentExampleMetadata; -@property (nonatomic) BOOL isRunningAdditionalSuites; -+ (World * __nonnull)sharedWorld; -- (void)configure:(void (^ __nonnull)(Configuration * __nonnull))closure; -- (void)finalizeConfiguration; -- (ExampleGroup * __nonnull)rootExampleGroupForSpecClass:(Class __nonnull)cls; -- (NSArray * __nonnull)examplesForSpecClass:(Class __nonnull)specClass; -- (void)performWithCurrentExampleGroup:(ExampleGroup * __nonnull)group closure:(void (^ __nonnull)(void))closure; -@end diff --git a/Example/Pods/Quick/Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m b/Example/Pods/Quick/Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m index e49939e..ae63036 100644 --- a/Example/Pods/Quick/Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m +++ b/Example/Pods/Quick/Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m @@ -1,6 +1,11 @@ #import #import + +#if __has_include("Quick-Swift.h") +#import "Quick-Swift.h" +#else #import +#endif @interface XCTestSuite (QuickTestSuiteBuilder) @end diff --git a/Example/Pods/Starscream/README.md b/Example/Pods/Starscream/README.md index 004fcd5..cb58e04 100644 --- a/Example/Pods/Starscream/README.md +++ b/Example/Pods/Starscream/README.md @@ -144,7 +144,7 @@ socket.write(pong: Data()) //example on how to write a pong control frame over t Starscream will automatically respond to incoming `ping` control frames so you do not need to manually send `pong`s. -However if for some reason you need to control this prosses you can turn off the automatic `ping` response by disabling `respondToPingWithPong`. +However if for some reason you need to control this process you can turn off the automatic `ping` response by disabling `respondToPingWithPong`. ```swift socket.respondToPingWithPong = false //Do not automaticaly respond to incoming pings with pongs. @@ -160,6 +160,12 @@ The disconnect method does what you would expect and closes the socket. socket.disconnect() ``` +The socket can be forcefully closed, by specifying a timeout (in milliseconds). A timeout of zero will also close the socket immediately without waiting on the server. + +```swift +socket.disconnect(forceTimeout: 10, closeCode: CloseCode.normal.rawValue) +``` + ### isConnected Returns if the socket is connected or not. @@ -379,6 +385,10 @@ func websocketHttpUpgrade(socket: WebSocketClient, response: CFHTTPMessage) { } ``` +## Swift versions + +* Swift 4.2 - 3.0.6 + ## KNOWN ISSUES - WatchOS does not have the the CFNetwork String constants to modify the stream's SSL behavior. It will be the default Foundation SSL behavior. This means watchOS CANNOT use `SSLCiphers`, `disableSSLCertValidation`, or SSL pinning. All these values set on watchOS will do nothing. - Linux does not have the security framework, so it CANNOT use SSL pinning or `SSLCiphers` either. diff --git a/Example/Pods/Starscream/Sources/Compression.swift b/Example/Pods/Starscream/Sources/Starscream/Compression.swift similarity index 99% rename from Example/Pods/Starscream/Sources/Compression.swift rename to Example/Pods/Starscream/Sources/Starscream/Compression.swift index f20ff75..ab65790 100644 --- a/Example/Pods/Starscream/Sources/Compression.swift +++ b/Example/Pods/Starscream/Sources/Starscream/Compression.swift @@ -27,7 +27,7 @@ ////////////////////////////////////////////////////////////////////////////////////////////////// import Foundation -import SSCZLib +import zlib class Decompressor { private var strm = z_stream() diff --git a/Example/Pods/Starscream/Sources/Starscream/SSLClientCertificate.swift b/Example/Pods/Starscream/Sources/Starscream/SSLClientCertificate.swift new file mode 100644 index 0000000..3410912 --- /dev/null +++ b/Example/Pods/Starscream/Sources/Starscream/SSLClientCertificate.swift @@ -0,0 +1,92 @@ +// +// SSLClientCertificate.swift +// Starscream +// +// Created by Tomasz Trela on 08/03/2018. +// Copyright © 2018 Vluxe. All rights reserved. +// + +import Foundation + +public struct SSLClientCertificateError: LocalizedError { + public var errorDescription: String? + + init(errorDescription: String) { + self.errorDescription = errorDescription + } +} + +public class SSLClientCertificate { + internal let streamSSLCertificates: NSArray + + /** + Convenience init. + - parameter pkcs12Path: Path to pkcs12 file containing private key and X.509 ceritifacte (.p12) + - parameter password: file password, see **kSecImportExportPassphrase** + */ + public convenience init(pkcs12Path: String, password: String) throws { + let pkcs12Url = URL(fileURLWithPath: pkcs12Path) + do { + try self.init(pkcs12Url: pkcs12Url, password: password) + } catch { + throw error + } + } + + /** + Designated init. For more information, see SSLSetCertificate() in Security/SecureTransport.h. + - parameter identity: SecIdentityRef, see **kCFStreamSSLCertificates** + - parameter identityCertificate: CFArray of SecCertificateRefs, see **kCFStreamSSLCertificates** + */ + public init(identity: SecIdentity, identityCertificate: SecCertificate) { + self.streamSSLCertificates = NSArray(objects: identity, identityCertificate) + } + + /** + Convenience init. + - parameter pkcs12Url: URL to pkcs12 file containing private key and X.509 ceritifacte (.p12) + - parameter password: file password, see **kSecImportExportPassphrase** + */ + public convenience init(pkcs12Url: URL, password: String) throws { + let importOptions = [kSecImportExportPassphrase as String : password] as CFDictionary + do { + try self.init(pkcs12Url: pkcs12Url, importOptions: importOptions) + } catch { + throw error + } + } + + /** + Designated init. + - parameter pkcs12Url: URL to pkcs12 file containing private key and X.509 ceritifacte (.p12) + - parameter importOptions: A dictionary containing import options. A + kSecImportExportPassphrase entry is required at minimum. Only password-based + PKCS12 blobs are currently supported. See **SecImportExport.h** + */ + public init(pkcs12Url: URL, importOptions: CFDictionary) throws { + do { + let pkcs12Data = try Data(contentsOf: pkcs12Url) + var rawIdentitiesAndCertificates: CFArray? + let pkcs12CFData: CFData = pkcs12Data as CFData + let importStatus = SecPKCS12Import(pkcs12CFData, importOptions, &rawIdentitiesAndCertificates) + + guard importStatus == errSecSuccess else { + throw SSLClientCertificateError(errorDescription: "(Starscream) Error during 'SecPKCS12Import', see 'SecBase.h' - OSStatus: \(importStatus)") + } + guard let identitiyAndCertificate = (rawIdentitiesAndCertificates as? Array>)?.first else { + throw SSLClientCertificateError(errorDescription: "(Starscream) Error - PKCS12 file is empty") + } + + let identity = identitiyAndCertificate[kSecImportItemIdentity as String] as! SecIdentity + var identityCertificate: SecCertificate? + let copyStatus = SecIdentityCopyCertificate(identity, &identityCertificate) + guard copyStatus == errSecSuccess else { + throw SSLClientCertificateError(errorDescription: "(Starscream) Error during 'SecIdentityCopyCertificate', see 'SecBase.h' - OSStatus: \(copyStatus)") + } + self.streamSSLCertificates = NSArray(objects: identity, identityCertificate!) + } catch { + throw error + } + } +} + diff --git a/Example/Pods/Starscream/Sources/SSLSecurity.swift b/Example/Pods/Starscream/Sources/Starscream/SSLSecurity.swift similarity index 96% rename from Example/Pods/Starscream/Sources/SSLSecurity.swift rename to Example/Pods/Starscream/Sources/Starscream/SSLSecurity.swift index 627529c..6a14dd1 100644 --- a/Example/Pods/Starscream/Sources/SSLSecurity.swift +++ b/Example/Pods/Starscream/Sources/Starscream/SSLSecurity.swift @@ -133,7 +133,7 @@ open class SSLSecurity : SSLTrustValidator { - returns: if the key was successfully validated */ - public func isValid(_ trust: SecTrust, domain: String?) -> Bool { + open func isValid(_ trust: SecTrust, domain: String?) -> Bool { var tries = 0 while !self.isReady { @@ -198,7 +198,7 @@ open class SSLSecurity : SSLTrustValidator { - returns: a public key */ - func extractPublicKey(_ data: Data) -> SecKey? { + public func extractPublicKey(_ data: Data) -> SecKey? { guard let cert = SecCertificateCreateWithData(nil, data as CFData) else { return nil } return extractPublicKey(cert, policy: SecPolicyCreateBasicX509()) @@ -211,7 +211,7 @@ open class SSLSecurity : SSLTrustValidator { - returns: a public key */ - func extractPublicKey(_ cert: SecCertificate, policy: SecPolicy) -> SecKey? { + public func extractPublicKey(_ cert: SecCertificate, policy: SecPolicy) -> SecKey? { var possibleTrust: SecTrust? SecTrustCreateWithCertificates(cert, policy, &possibleTrust) @@ -228,7 +228,7 @@ open class SSLSecurity : SSLTrustValidator { - returns: the certificate chain for the trust */ - func certificateChain(_ trust: SecTrust) -> [Data] { + public func certificateChain(_ trust: SecTrust) -> [Data] { let certificates = (0.. [Data] in var certificates = certificates let cert = SecTrustGetCertificateAtIndex(trust, index) @@ -246,7 +246,7 @@ open class SSLSecurity : SSLTrustValidator { - returns: the public keys from the certifcate chain for the trust */ - func publicKeyChain(_ trust: SecTrust) -> [SecKey] { + public func publicKeyChain(_ trust: SecTrust) -> [SecKey] { let policy = SecPolicyCreateBasicX509() let keys = (0.. [SecKey] in var keys = keys diff --git a/Example/Pods/Starscream/Sources/WebSocket.swift b/Example/Pods/Starscream/Sources/Starscream/WebSocket.swift similarity index 92% rename from Example/Pods/Starscream/Sources/WebSocket.swift rename to Example/Pods/Starscream/Sources/Starscream/WebSocket.swift index cdae507..7d48a20 100644 --- a/Example/Pods/Starscream/Sources/WebSocket.swift +++ b/Example/Pods/Starscream/Sources/Starscream/WebSocket.swift @@ -21,7 +21,7 @@ import Foundation import CoreFoundation -import SSCommonCrypto +import CommonCrypto public let WebsocketDidConnectNotification = "WebsocketDidConnectNotification" public let WebsocketDidDisconnectNotification = "WebsocketDidDisconnectNotification" @@ -60,9 +60,11 @@ public struct WSError: Error { //WebSocketClient is setup to be dependency injection for testing public protocol WebSocketClient: class { var delegate: WebSocketDelegate? {get set} + var pongDelegate: WebSocketPongDelegate? {get set} var disableSSLCertValidation: Bool {get set} var overrideTrustHostname: Bool {get set} var desiredTrustHostname: String? {get set} + var sslClientCertificate: SSLClientCertificate? {get set} #if os(Linux) #else var security: SSLTrustValidator? {get set} @@ -107,6 +109,7 @@ public struct SSLSettings { public let disableCertValidation: Bool public var overrideTrustHostname: Bool public var desiredTrustHostname: String? + public let sslClientCertificate: SSLClientCertificate? #if os(Linux) #else public let cipherSuites: [SSLCipherSuite]? @@ -132,7 +135,7 @@ public protocol WSStream { } open class FoundationStream : NSObject, WSStream, StreamDelegate { - private static let sharedWorkQueue = DispatchQueue(label: "com.vluxe.starscream.websocket", attributes: []) + private let workQueue = DispatchQueue(label: "com.vluxe.starscream.websocket", attributes: []) private var inputStream: InputStream? private var outputStream: OutputStream? public weak var delegate: WSStreamDelegate? @@ -178,6 +181,10 @@ open class FoundationStream : NSObject, WSStream, StreamDelegate { settings[kCFStreamSSLPeerName] = kCFNull } } + if let sslClientCertificate = ssl.sslClientCertificate { + settings[kCFStreamSSLCertificates] = sslClientCertificate.streamSSLCertificates + } + inStream.setProperty(settings, forKey: kCFStreamPropertySSLSettings as Stream.PropertyKey) outStream.setProperty(settings, forKey: kCFStreamPropertySSLSettings as Stream.PropertyKey) #endif @@ -203,13 +210,13 @@ open class FoundationStream : NSObject, WSStream, StreamDelegate { #endif } - CFReadStreamSetDispatchQueue(inStream, FoundationStream.sharedWorkQueue) - CFWriteStreamSetDispatchQueue(outStream, FoundationStream.sharedWorkQueue) + CFReadStreamSetDispatchQueue(inStream, workQueue) + CFWriteStreamSetDispatchQueue(outStream, workQueue) inStream.open() outStream.open() var out = timeout// wait X seconds before giving up - FoundationStream.sharedWorkQueue.async { [weak self] in + workQueue.async { [weak self] in while !outStream.hasSpaceAvailable { usleep(100) // wait until the socket is ready out -= 100 @@ -263,8 +270,10 @@ open class FoundationStream : NSObject, WSStream, StreamDelegate { #if os(Linux) || os(watchOS) #else public func sslTrust() -> (trust: SecTrust?, domain: String?) { - let trust = outputStream!.property(forKey: kCFStreamPropertySSLPeerTrust as Stream.PropertyKey) as! SecTrust? - var domain = outputStream!.property(forKey: kCFStreamSSLPeerName as Stream.PropertyKey) as? String + guard let outputStream = outputStream else { return (nil, nil) } + + let trust = outputStream.property(forKey: kCFStreamPropertySSLPeerTrust as Stream.PropertyKey) as! SecTrust? + var domain = outputStream.property(forKey: kCFStreamSSLPeerName as Stream.PropertyKey) as! String? if domain == nil, let sslContextOut = CFWriteStreamCopyProperty(outputStream, CFStreamPropertyKey(rawValue: kCFStreamPropertySSLContext)) as! SSLContext? { var peerNameLen: Int = 0 @@ -395,10 +404,12 @@ open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelega public var onText: ((String) -> Void)? public var onData: ((Data) -> Void)? public var onPong: ((Data?) -> Void)? + public var onHttpResponseHeaders: (([String: String]) -> Void)? public var disableSSLCertValidation = false public var overrideTrustHostname = false public var desiredTrustHostname: String? = nil + public var sslClientCertificate: SSLClientCertificate? = nil public var enableCompression = true #if os(Linux) @@ -464,7 +475,7 @@ open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelega } self.request.setValue(origin, forHTTPHeaderField: headerOriginName) } - if let protocols = protocols { + if let protocols = protocols, !protocols.isEmpty { self.request.setValue(protocols.joined(separator: ","), forHTTPHeaderField: headerWSProtocolName) } writeQueue.maxConcurrentOperationCount = 1 @@ -646,47 +657,49 @@ open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelega let settings = SSLSettings(useSSL: useSSL, disableCertValidation: disableSSLCertValidation, overrideTrustHostname: overrideTrustHostname, - desiredTrustHostname: desiredTrustHostname) + desiredTrustHostname: desiredTrustHostname), + sslClientCertificate: sslClientCertificate #else let settings = SSLSettings(useSSL: useSSL, disableCertValidation: disableSSLCertValidation, overrideTrustHostname: overrideTrustHostname, desiredTrustHostname: desiredTrustHostname, + sslClientCertificate: sslClientCertificate, cipherSuites: self.enabledSSLCipherSuites) #endif certValidated = !useSSL let timeout = request.timeoutInterval * 1_000_000 stream.delegate = self stream.connect(url: url, port: port, timeout: timeout, ssl: settings, completion: { [weak self] (error) in - guard let s = self else {return} + guard let self = self else {return} if error != nil { - s.disconnectStream(error) + self.disconnectStream(error) return } let operation = BlockOperation() operation.addExecutionBlock { [weak self, weak operation] in - guard let sOperation = operation, let s = self else { return } + guard let sOperation = operation, let self = self else { return } guard !sOperation.isCancelled else { return } // Do the pinning now if needed #if os(Linux) || os(watchOS) - s.certValidated = false + self.certValidated = false #else - if let sec = s.security, !s.certValidated { - let trustObj = s.stream.sslTrust() + if let sec = self.security, !self.certValidated { + let trustObj = self.stream.sslTrust() if let possibleTrust = trustObj.trust { - s.certValidated = sec.isValid(possibleTrust, domain: trustObj.domain) + self.certValidated = sec.isValid(possibleTrust, domain: trustObj.domain) } else { - s.certValidated = false + self.certValidated = false } - if !s.certValidated { - s.disconnectStream(WSError(type: .invalidSSLError, message: "Invalid SSL certificate", code: 0)) + if !self.certValidated { + self.disconnectStream(WSError(type: .invalidSSLError, message: "Invalid SSL certificate", code: 0)) return } } #endif - let _ = s.stream.write(data: data) + let _ = self.stream.write(data: data) } - s.writeQueue.addOperation(operation) + self.writeQueue.addOperation(operation) }) self.mutex.lock() @@ -821,10 +834,10 @@ open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelega didDisconnect = false if canDispatch { callbackQueue.async { [weak self] in - guard let s = self else { return } - s.onConnect?() - s.delegate?.websocketDidConnect(socket: s) - s.advancedDelegate?.websocketDidConnect(socket: s) + guard let self = self else { return } + self.onConnect?() + self.delegate?.websocketDidConnect(socket: self) + self.advancedDelegate?.websocketDidConnect(socket: self) NotificationCenter.default.post(name: NSNotification.Name(WebsocketDidConnectNotification), object: self) } } @@ -864,6 +877,7 @@ open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelega i += 1 } advancedDelegate?.websocketHttpUpgrade(socket: self, response: str) + onHttpResponseHeaders?(headers) if code != httpSwitchProtocolCode { return code } @@ -1076,10 +1090,10 @@ open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelega if receivedOpcode == .pong { if canDispatch { callbackQueue.async { [weak self] in - guard let s = self else { return } + guard let self = self else { return } let pongData: Data? = data.count > 0 ? data : nil - s.onPong?(pongData) - s.pongDelegate?.websocketDidReceivePong(socket: s, data: pongData) + self.onPong?(pongData) + self.pongDelegate?.websocketDidReceivePong(socket: self, data: pongData) } } return buffer.fromOffset(offset + Int(len)) @@ -1163,20 +1177,20 @@ open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelega } if canDispatch { callbackQueue.async { [weak self] in - guard let s = self else { return } - s.onText?(str) - s.delegate?.websocketDidReceiveMessage(socket: s, text: str) - s.advancedDelegate?.websocketDidReceiveMessage(socket: s, text: str, response: response) + guard let self = self else { return } + self.onText?(str) + self.delegate?.websocketDidReceiveMessage(socket: self, text: str) + self.advancedDelegate?.websocketDidReceiveMessage(socket: self, text: str, response: response) } } } else if response.code == .binaryFrame { if canDispatch { let data = response.buffer! // local copy so it is perverse for writing callbackQueue.async { [weak self] in - guard let s = self else { return } - s.onData?(data as Data) - s.delegate?.websocketDidReceiveData(socket: s, data: data as Data) - s.advancedDelegate?.websocketDidReceiveData(socket: s, data: data as Data, response: response) + guard let self = self else { return } + self.onData?(data as Data) + self.delegate?.websocketDidReceiveData(socket: self, data: data as Data) + self.advancedDelegate?.websocketDidReceiveData(socket: self, data: data as Data, response: response) } } } @@ -1203,24 +1217,24 @@ open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelega let operation = BlockOperation() operation.addExecutionBlock { [weak self, weak operation] in //stream isn't ready, let's wait - guard let s = self else { return } + guard let self = self else { return } guard let sOperation = operation else { return } var offset = 2 - var firstByte:UInt8 = s.FinMask | code.rawValue + var firstByte:UInt8 = self.FinMask | code.rawValue var data = data - if [.textFrame, .binaryFrame].contains(code), let compressor = s.compressionState.compressor { + if [.textFrame, .binaryFrame].contains(code), let compressor = self.compressionState.compressor { do { data = try compressor.compress(data) - if s.compressionState.clientNoContextTakeover { + if self.compressionState.clientNoContextTakeover { try compressor.reset() } - firstByte |= s.RSV1Mask + firstByte |= self.RSV1Mask } catch { // TODO: report error? We can just send the uncompressed frame. } } let dataLength = data.count - let frame = NSMutableData(capacity: dataLength + s.MaxFrameSize) + let frame = NSMutableData(capacity: dataLength + self.MaxFrameSize) let buffer = UnsafeMutableRawPointer(frame!.mutableBytes).assumingMemoryBound(to: UInt8.self) buffer[0] = firstByte if dataLength < 126 { @@ -1234,7 +1248,7 @@ open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelega WebSocket.writeUint64(buffer, offset: offset, value: UInt64(dataLength)) offset += MemoryLayout.size } - buffer[1] |= s.MaskMask + buffer[1] |= self.MaskMask let maskKey = UnsafeMutablePointer(buffer + offset) _ = SecRandomCopyBytes(kSecRandomDefault, Int(MemoryLayout.size), maskKey) offset += MemoryLayout.size @@ -1245,22 +1259,22 @@ open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelega } var total = 0 while !sOperation.isCancelled { - if !s.readyToWrite { - s.doDisconnect(WSError(type: .outputStreamWriteError, message: "output stream had an error during write", code: 0)) + if !self.readyToWrite { + self.doDisconnect(WSError(type: .outputStreamWriteError, message: "output stream had an error during write", code: 0)) break } - let stream = s.stream + let stream = self.stream let writeBuffer = UnsafeRawPointer(frame!.bytes+total).assumingMemoryBound(to: UInt8.self) let len = stream.write(data: Data(bytes: writeBuffer, count: offset-total)) if len <= 0 { - s.doDisconnect(WSError(type: .outputStreamWriteError, message: "output stream had an error during write", code: 0)) + self.doDisconnect(WSError(type: .outputStreamWriteError, message: "output stream had an error during write", code: 0)) break } else { total += len } if total >= offset { - if let queue = self?.callbackQueue, let callback = writeCompletion { - queue.async { + if let callback = writeCompletion { + self.callbackQueue.async { callback() } } @@ -1284,10 +1298,10 @@ open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelega mutex.unlock() guard canDispatch else {return} callbackQueue.async { [weak self] in - guard let s = self else { return } - s.onDisconnect?(error) - s.delegate?.websocketDidDisconnect(socket: s, error: error) - s.advancedDelegate?.websocketDidDisconnect(socket: s, error: error) + guard let self = self else { return } + self.onDisconnect?(error) + self.delegate?.websocketDidDisconnect(socket: self, error: error) + self.advancedDelegate?.websocketDidDisconnect(socket: self, error: error) let userInfo = error.map{ [WebsocketDisconnectionErrorKeyName: $0] } NotificationCenter.default.post(name: NSNotification.Name(WebsocketDidDisconnectNotification), object: self, userInfo: userInfo) } diff --git a/Example/Pods/Starscream/zlib/include.h b/Example/Pods/Starscream/zlib/include.h deleted file mode 100644 index cb3747f..0000000 --- a/Example/Pods/Starscream/zlib/include.h +++ /dev/null @@ -1,2 +0,0 @@ -#include -#include diff --git a/Example/Pods/Starscream/zlib/module.modulemap b/Example/Pods/Starscream/zlib/module.modulemap deleted file mode 100644 index ed0676f..0000000 --- a/Example/Pods/Starscream/zlib/module.modulemap +++ /dev/null @@ -1,9 +0,0 @@ -module SSCZLib [system] { - header "include.h" - link "z" - export * -} -module SSCommonCrypto [system] { - header "include.h" - export * -} diff --git a/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist b/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig b/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig index 1d56a73..f3e0234 100644 --- a/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig +++ b/Example/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig @@ -1,15 +1,14 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_UNROLL_LOOPS = YES -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/CryptoSwift PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +SWIFT_COMPILATION_MODE = wholemodule SWIFT_DISABLE_SAFETY_CHECKS = YES -SWIFT_ENFORCE_EXCLUSIVE_ACCESS = compile-time -SWIFT_OPTIMIZATION_LEVEL = -Owholemodule -SWIFT_VERSION = 4.0 +SWIFT_ENFORCE_EXCLUSIVE_ACCESS = debug-only +SWIFT_OPTIMIZATION_LEVEL = -O diff --git a/Example/Pods/Target Support Files/Nimble/Nimble-Info.plist b/Example/Pods/Target Support Files/Nimble/Nimble-Info.plist new file mode 100644 index 0000000..17b8536 --- /dev/null +++ b/Example/Pods/Target Support Files/Nimble/Nimble-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 8.0.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Nimble/Nimble.xcconfig b/Example/Pods/Target Support Files/Nimble/Nimble.xcconfig index 3eb970f..bd9af2e 100644 --- a/Example/Pods/Target Support Files/Nimble/Nimble.xcconfig +++ b/Example/Pods/Target Support Files/Nimble/Nimble.xcconfig @@ -1,10 +1,10 @@ +APPLICATION_EXTENSION_API_ONLY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Nimble ENABLE_BITCODE = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" -OTHER_LDFLAGS = -weak-lswiftXCTest -weak_framework "XCTest" -OTHER_SWIFT_FLAGS = $(inherited) -suppress-warnings $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -Xlinker -no_application_extension -weak-lswiftXCTest +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS $(inherited) -suppress-warnings PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-Info.plist b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-acknowledgements.plist index a80e43b..c218799 100644 --- a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-acknowledgements.plist @@ -26,7 +26,7 @@ Permission is granted to anyone to use this software for any purpose,including c - This notice may not be removed or altered from any source or binary distribution. - Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' License - Attribution License + Attribution Title CryptoSwift Type diff --git a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-frameworks.sh index c4d2967..4497e6b 100755 --- a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-frameworks.sh @@ -1,9 +1,23 @@ #!/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="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" # Used as a return value for each invocation of `strip_invalid_archs` function. @@ -27,8 +41,8 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink "${source}")" fi # Use filter instead of exclude so missing patterns don't throw errors. @@ -38,8 +52,13 @@ install_framework() 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 @@ -53,7 +72,7 @@ install_framework() # 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 && exit ${PIPESTATUS[0]}) + 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}" @@ -92,10 +111,10 @@ install_dsym() { # 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_identitiy + 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'" + 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 &" @@ -122,7 +141,7 @@ strip_invalid_archs() { for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done diff --git a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example.debug.xcconfig index 862081c..bab93a9 100644 --- a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example.debug.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer/SwiftFlyer.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer/SwiftFlyer.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "CryptoSwift" -framework "Starscream" -framework "SwiftFlyer" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +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}/. diff --git a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example.release.xcconfig index 862081c..bab93a9 100644 --- a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example.release.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer/SwiftFlyer.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer/SwiftFlyer.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "CryptoSwift" -framework "Starscream" -framework "SwiftFlyer" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +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}/. diff --git a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-Info.plist b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-frameworks.sh index 9f3ce79..d8b614f 100755 --- a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-frameworks.sh @@ -1,9 +1,23 @@ #!/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="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" # Used as a return value for each invocation of `strip_invalid_archs` function. @@ -27,8 +41,8 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink "${source}")" fi # Use filter instead of exclude so missing patterns don't throw errors. @@ -38,8 +52,13 @@ install_framework() 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 @@ -53,7 +72,7 @@ install_framework() # 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 && exit ${PIPESTATUS[0]}) + 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}" @@ -92,10 +111,10 @@ install_dsym() { # 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_identitiy + 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'" + 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 &" @@ -122,7 +141,7 @@ strip_invalid_archs() { for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done diff --git a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests.debug.xcconfig index 2a6cae3..02bf6ca 100644 --- a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests.debug.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "${PODS_CONFIGURATION_BUILD_DIR}/Nimble" "${PODS_CONFIGURATION_BUILD_DIR}/Quick" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble" "${PODS_CONFIGURATION_BUILD_DIR}/Quick" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble/Nimble.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Quick/Quick.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer/SwiftFlyer.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Nimble/Nimble.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Quick/Quick.framework/Headers" $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer/SwiftFlyer.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "Nimble" -framework "Quick" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "CryptoSwift" -framework "Nimble" -framework "Quick" -framework "Starscream" -framework "SwiftFlyer" -framework "XCTest" -weak_framework "XCTest" +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}/. diff --git a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests.release.xcconfig index 2a6cae3..02bf6ca 100644 --- a/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests.release.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "${PODS_CONFIGURATION_BUILD_DIR}/Nimble" "${PODS_CONFIGURATION_BUILD_DIR}/Quick" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble" "${PODS_CONFIGURATION_BUILD_DIR}/Quick" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble/Nimble.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Quick/Quick.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer/SwiftFlyer.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Nimble/Nimble.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Quick/Quick.framework/Headers" $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer/SwiftFlyer.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "Nimble" -framework "Quick" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "CryptoSwift" -framework "Nimble" -framework "Quick" -framework "Starscream" -framework "SwiftFlyer" -framework "XCTest" -weak_framework "XCTest" +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}/. diff --git a/Example/Pods/Target Support Files/Quick/Quick-Info.plist b/Example/Pods/Target Support Files/Quick/Quick-Info.plist new file mode 100644 index 0000000..7f71fff --- /dev/null +++ b/Example/Pods/Target Support Files/Quick/Quick-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Quick/Quick.xcconfig b/Example/Pods/Target Support Files/Quick/Quick.xcconfig index 6c4e8fd..4bb3cab 100644 --- a/Example/Pods/Target Support Files/Quick/Quick.xcconfig +++ b/Example/Pods/Target Support Files/Quick/Quick.xcconfig @@ -1,10 +1,10 @@ +APPLICATION_EXTENSION_API_ONLY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Quick ENABLE_BITCODE = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" -OTHER_LDFLAGS = -framework "XCTest" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -Xlinker -no_application_extension +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Example/Pods/Target Support Files/Starscream/Starscream-Info.plist b/Example/Pods/Target Support Files/Starscream/Starscream-Info.plist new file mode 100644 index 0000000..90db36a --- /dev/null +++ b/Example/Pods/Target Support Files/Starscream/Starscream-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 3.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Starscream/Starscream.xcconfig b/Example/Pods/Target Support Files/Starscream/Starscream.xcconfig index 48ef6b6..9b509fc 100644 --- a/Example/Pods/Target Support Files/Starscream/Starscream.xcconfig +++ b/Example/Pods/Target Support Files/Starscream/Starscream.xcconfig @@ -1,13 +1,9 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Starscream GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" -OTHER_LDFLAGS = -l"z" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/Starscream PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(PODS_ROOT)/Starscream/zlib -SWIFT_VERSION = 4.1 diff --git a/Example/Pods/Target Support Files/SwiftFlyer/SwiftFlyer-Info.plist b/Example/Pods/Target Support Files/SwiftFlyer/SwiftFlyer-Info.plist new file mode 100644 index 0000000..3f68a24 --- /dev/null +++ b/Example/Pods/Target Support Files/SwiftFlyer/SwiftFlyer-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.2.2 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/SwiftFlyer/SwiftFlyer.xcconfig b/Example/Pods/Target Support Files/SwiftFlyer/SwiftFlyer.xcconfig index 98cfe73..0bf6533 100644 --- a/Example/Pods/Target Support Files/SwiftFlyer/SwiftFlyer.xcconfig +++ b/Example/Pods/Target Support Files/SwiftFlyer/SwiftFlyer.xcconfig @@ -1,8 +1,7 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftFlyer FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Example/SwiftFlyer.xcodeproj/project.pbxproj b/Example/SwiftFlyer.xcodeproj/project.pbxproj index a42f233..0cf716c 100644 --- a/Example/SwiftFlyer.xcodeproj/project.pbxproj +++ b/Example/SwiftFlyer.xcodeproj/project.pbxproj @@ -48,7 +48,7 @@ 9FDD5B242DBB417DC4748C15 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; BD63FEFE4959D4328F3D5EB4 /* Pods-SwiftFlyer_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftFlyer_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests.debug.xcconfig"; sourceTree = ""; }; C08A3A4F508106C600E9729D /* Pods-SwiftFlyer_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftFlyer_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests.release.xcconfig"; sourceTree = ""; }; - EAFEA9E529612DBA4F3A8A87 /* SwiftFlyer.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = SwiftFlyer.podspec; path = ../SwiftFlyer.podspec; sourceTree = ""; }; + EAFEA9E529612DBA4F3A8A87 /* SwiftFlyer.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = SwiftFlyer.podspec; path = ../SwiftFlyer.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; EF5234AE692960EE2000C099 /* Pods_SwiftFlyer_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftFlyer_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; FF816D15DD89B3D6FE2FE453 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; /* End PBXFileReference section */ @@ -177,7 +177,6 @@ 607FACCD1AFB9204008FA782 /* Frameworks */, 607FACCE1AFB9204008FA782 /* Resources */, A893F7E73B2CCFFA24DE6E81 /* [CP] Embed Pods Frameworks */, - 921303AE893133DAED1B1246 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -197,7 +196,6 @@ 607FACE21AFB9204008FA782 /* Frameworks */, 607FACE31AFB9204008FA782 /* Resources */, 18DFB9CDA6C71A83C8A21B38 /* [CP] Embed Pods Frameworks */, - E5F4A5C6781D9BFC93D7D8EB /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -235,6 +233,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, ); @@ -277,7 +276,7 @@ files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-frameworks.sh", "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework", "${BUILT_PRODUCTS_DIR}/Quick/Quick.framework", ); @@ -288,7 +287,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 35901204AA4EF62FD5BE6D0A /* [CP] Check Pods Manifest.lock */ = { @@ -309,28 +308,13 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 921303AE893133DAED1B1246 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; A893F7E73B2CCFFA24DE6E81 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-frameworks.sh", "${BUILT_PRODUCTS_DIR}/CryptoSwift/CryptoSwift.framework", "${BUILT_PRODUCTS_DIR}/Starscream/Starscream.framework", "${BUILT_PRODUCTS_DIR}/SwiftFlyer/SwiftFlyer.framework", @@ -343,22 +327,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - E5F4A5C6781D9BFC93D7D8EB /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwiftFlyer_Tests/Pods-SwiftFlyer_Tests-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SwiftFlyer_Example/Pods-SwiftFlyer_Example-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; FB96DB7897299587951DF95F /* [CP] Check Pods Manifest.lock */ = { @@ -542,7 +511,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -557,7 +526,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -578,7 +547,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -595,7 +564,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/Example/SwiftFlyer.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/SwiftFlyer.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/SwiftFlyer.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/SwiftFlyer/AppDelegate.swift b/Example/SwiftFlyer/AppDelegate.swift index c3bd171..57c8329 100644 --- a/Example/SwiftFlyer/AppDelegate.swift +++ b/Example/SwiftFlyer/AppDelegate.swift @@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // (Optional) Set your API keys, if you access to private API. BitFlyer.apiKey = "Your API Key" diff --git a/SwiftFlyer.podspec b/SwiftFlyer.podspec index c64950c..b28ca75 100644 --- a/SwiftFlyer.podspec +++ b/SwiftFlyer.podspec @@ -14,6 +14,6 @@ An API wrapper for bitFlyer that supports all providing API. s.ios.deployment_target = '9.0' s.osx.deployment_target = '10.11' s.source_files = 'SwiftFlyer/**/*' - s.dependency 'CryptoSwift', '~> 0.8.3' - s.dependency 'Starscream', '~> 3.0.5' + s.dependency 'CryptoSwift', '~> 1.0.0' + s.dependency 'Starscream', '~> 3.1.0' end diff --git a/SwiftFlyer/Extensions/RequestableExtensions.swift b/SwiftFlyer/Extensions/RequestableExtensions.swift index 4f1151c..d916f68 100644 --- a/SwiftFlyer/Extensions/RequestableExtensions.swift +++ b/SwiftFlyer/Extensions/RequestableExtensions.swift @@ -9,7 +9,7 @@ import Foundation import CryptoSwift -public extension Requestable { +extension Requestable { public var baseURL: URL { return URL(string: "https://api.bitflyer.jp")!