diff --git a/External/Harmony b/External/Harmony index 7234d66..b72a3fd 160000 --- a/External/Harmony +++ b/External/Harmony @@ -1 +1 @@ -Subproject commit 7234d6626a49e56ddceaaec0c04cc4f4f43b572c +Subproject commit b72a3fdd4e2a3fe1d34b4b9ca75cbe352570a9f2 diff --git a/Podfile.lock b/Podfile.lock index 9de5bcc..d58ac8a 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,5 +1,11 @@ PODS: - Alamofire (4.7.3) + - AppAuth (1.6.2): + - AppAuth/Core (= 1.6.2) + - AppAuth/ExternalUserAgent (= 1.6.2) + - AppAuth/Core (1.6.2) + - AppAuth/ExternalUserAgent (1.6.2): + - AppAuth/Core - Crashlytics (3.8.6): - Fabric (~> 1.6.3) - DeltaCore (0.1): @@ -16,30 +22,25 @@ PODS: - GoogleAPIClientForREST/Drive (1.3.11): - GoogleAPIClientForREST/Core - GTMSessionFetcher (>= 1.1.7) - - GoogleSignIn (4.4.0): - - "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)" - - "GoogleToolboxForMac/NSString+URLArguments (~> 2.1)" + - GoogleSignIn (5.0.2): + - AppAuth (~> 1.2) + - GTMAppAuth (~> 1.0) - GTMSessionFetcher/Core (~> 1.1) - - GoogleToolboxForMac/DebugUtils (2.3.0): - - GoogleToolboxForMac/Defines (= 2.3.0) - - GoogleToolboxForMac/Defines (2.3.0) - - "GoogleToolboxForMac/NSDictionary+URLArguments (2.3.0)": - - GoogleToolboxForMac/DebugUtils (= 2.3.0) - - GoogleToolboxForMac/Defines (= 2.3.0) - - "GoogleToolboxForMac/NSString+URLArguments (= 2.3.0)" - - "GoogleToolboxForMac/NSString+URLArguments (2.3.0)" - - GTMSessionFetcher (1.5.0): - - GTMSessionFetcher/Full (= 1.5.0) - - GTMSessionFetcher/Core (1.5.0) - - GTMSessionFetcher/Full (1.5.0): - - GTMSessionFetcher/Core (= 1.5.0) + - GTMAppAuth (1.3.1): + - AppAuth/Core (~> 1.6) + - GTMSessionFetcher/Core (< 3.0, >= 1.5) + - GTMSessionFetcher (1.7.2): + - GTMSessionFetcher/Full (= 1.7.2) + - GTMSessionFetcher/Core (1.7.2) + - GTMSessionFetcher/Full (1.7.2): + - GTMSessionFetcher/Core (= 1.7.2) - Harmony (0.1): - Harmony/Harmony-Drive (= 0.1) - Harmony/Harmony-Dropbox (= 0.1) - Roxas - Harmony/Harmony-Drive (0.1): - GoogleAPIClientForREST/Drive (~> 1.3.0) - - GoogleSignIn (~> 4.4.0) + - GoogleSignIn (~> 5.0) - Roxas - Harmony/Harmony-Dropbox (0.1): - Roxas @@ -90,11 +91,12 @@ DEPENDENCIES: SPEC REPOS: trunk: - Alamofire + - AppAuth - Crashlytics - Fabric - GoogleAPIClientForREST - GoogleSignIn - - GoogleToolboxForMac + - GTMAppAuth - GTMSessionFetcher - SDWebImage - SMCalloutView @@ -126,6 +128,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Alamofire: c7287b6e5d7da964a70935e5db17046b7fde6568 + AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570 Crashlytics: e156f27e43abaa331f9b7afed091bda37e1052cc DeltaCore: 6a430005ea397fcd5b40b964effe41ac69cc9037 DSDeltaCore: d22a7cfbbe70f063b8c72dec9d1bcd2c59e14893 @@ -133,10 +136,10 @@ SPEC CHECKSUMS: GBADeltaCore: c2f7ce5e5616ed63d2b99c9ba9a7e020f2263248 GBCDeltaCore: 27f09a1c88a4ac832aa549fbe34aaf277251b6b8 GoogleAPIClientForREST: 0f19a8280dfe6471f76016645d26eb5dae305101 - GoogleSignIn: 7ff245e1a7b26d379099d3243a562f5747e23d39 - GoogleToolboxForMac: 1350d40e86a76f7863928d63bcb0b89c84c521c5 - GTMSessionFetcher: b3503b20a988c4e20cc189aa798fd18220133f52 - Harmony: cea514db17c41c22f78f54b17d2135935b5e9b96 + GoogleSignIn: 7137d297ddc022a7e0aa4619c86d72c909fa7213 + GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd + GTMSessionFetcher: 5595ec75acf5be50814f81e9189490412bad82ba + Harmony: 5fdc51d0a4f2ce7dcd4439becbbdda1fac4c9e3f MelonDSDeltaCore: 46193f4fd88e4e18e4a5c841b1ae02dc46d1daa6 N64DeltaCore: 4eeb468746722952bcd5467ecb9ebe7df070f53a NESDeltaCore: ffae3bba878fc505bac0914150a695ede7bc9550 diff --git a/Pods/GoogleToolboxForMac/LICENSE b/Pods/AppAuth/LICENSE similarity index 100% rename from Pods/GoogleToolboxForMac/LICENSE rename to Pods/AppAuth/LICENSE diff --git a/Pods/AppAuth/README.md b/Pods/AppAuth/README.md new file mode 100644 index 0000000..78f7995 --- /dev/null +++ b/Pods/AppAuth/README.md @@ -0,0 +1,717 @@ +![AppAuth for iOS and macOS](https://rawgit.com/openid/AppAuth-iOS/master/appauth_lockup.svg) +[![tests](https://github.com/openid/AppAuth-iOS/actions/workflows/tests.yml/badge.svg?event=push)](https://github.com/openid/AppAuth-iOS/actions/workflows/tests.yml) +[![codecov](https://codecov.io/gh/openid/AppAuth-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/openid/AppAuth-iOS) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg?style=flat)](https://github.com/Carthage/Carthage) +[![SwiftPM compatible](https://img.shields.io/badge/SwiftPM-compatible-brightgreen.svg?style=flat)](https://swift.org/package-manager) +[![Pod Version](https://img.shields.io/cocoapods/v/AppAuth.svg?style=flat)](https://cocoapods.org/pods/AppAuth) +[![Pod License](https://img.shields.io/cocoapods/l/AppAuth.svg?style=flat)](https://github.com/openid/AppAuth-iOS/blob/master/LICENSE) +[![Pod Platform](https://img.shields.io/cocoapods/p/AppAuth.svg?style=flat)](https://cocoapods.org/pods/AppAuth) +[![Catalyst compatible](https://img.shields.io/badge/Catalyst-compatible-brightgreen.svg?style=flat)](https://developer.apple.com/documentation/xcode/creating_a_mac_version_of_your_ipad_app) + +AppAuth for iOS and macOS, and tvOS is a client SDK for communicating with +[OAuth 2.0](https://tools.ietf.org/html/rfc6749) and +[OpenID Connect](http://openid.net/specs/openid-connect-core-1_0.html) providers. +It strives to +directly map the requests and responses of those specifications, while following +the idiomatic style of the implementation language. In addition to mapping the +raw protocol flows, convenience methods are available to assist with common +tasks like performing an action with fresh tokens. + +It follows the best practices set out in +[RFC 8252 - OAuth 2.0 for Native Apps](https://tools.ietf.org/html/rfc8252) +including using `SFAuthenticationSession` and `SFSafariViewController` on iOS +for the auth request. `UIWebView` and `WKWebView` are explicitly *not* +supported due to the security and usability reasons explained in +[Section 8.12 of RFC 8252](https://tools.ietf.org/html/rfc8252#section-8.12). + +It also supports the [PKCE](https://tools.ietf.org/html/rfc7636) extension to +OAuth, which was created to secure authorization codes in public clients when +custom URI scheme redirects are used. The library is friendly to other +extensions (standard or otherwise), with the ability to handle additional params +in all protocol requests and responses. + +For tvOS, AppAuth implements [OAuth 2.0 Device Authorization Grant +](https://tools.ietf.org/html/rfc8628) to allow for tvOS sign-ins through a secondary device. + +## Specification + +### iOS + +#### Supported Versions + +AppAuth supports iOS 7 and above. + +iOS 9+ uses the in-app browser tab pattern +(via `SFSafariViewController`), and falls back to the system browser (mobile +Safari) on earlier versions. + +#### Authorization Server Requirements + +Both Custom URI Schemes (all supported versions of iOS) and Universal Links +(iOS 9+) can be used with the library. + +In general, AppAuth can work with any authorization server that supports +native apps, as documented in [RFC 8252](https://tools.ietf.org/html/rfc8252), +either through custom URI scheme redirects, or universal links. +Authorization servers that assume all clients are web-based, or require clients to maintain +confidentiality of the client secrets may not work well. + +### macOS + +#### Supported Versions + +AppAuth supports macOS (OS X) 10.9 and above. + +#### Authorization Server Requirements + +AppAuth for macOS supports both custom schemes; a loopback HTTP redirects +via a small embedded server. + +In general, AppAuth can work with any authorization server that supports +native apps, as documented in [RFC 8252](https://tools.ietf.org/html/rfc8252); +either through custom URI schemes, or loopback HTTP redirects. +Authorization servers that assume all clients are web-based, or require clients to maintain +confidentiality of the client secrets may not work well. + +### tvOS + +#### Supported Versions + +AppAuth supports tvOS 9.0 and above. Please note that while it is possible to run the standard AppAuth library on tvOS, the documentation below describes implementing [OAuth 2.0 Device Authorization Grant](https://tools.ietf.org/html/rfc8628) (AppAuthTV). + +#### Authorization Server Requirements + +AppAuthTV is designed for servers that support the device authorization flow as documented in [RFC 8628](https://tools.ietf.org/html/rfc8628). + +## Try + +Want to try out AppAuth? Just run: + + pod try AppAuth + +Follow the instructions in [Examples/README.md](Examples/README.md) to configure +with your own OAuth client (you need to update three configuration points with your +client info to try the demo). + +## Setup + +AppAuth supports four options for dependency management. + +### CocoaPods + +With [CocoaPods](https://guides.cocoapods.org/using/getting-started.html), +add the following line to your `Podfile`: + + pod 'AppAuth' + +Then, run `pod install`. + +**tvOS:** Use the `TV` subspec: + + pod 'AppAuth/TV' + + +### Swift Package Manager + +With [Swift Package Manager](https://swift.org/package-manager), +add the following `dependency` to your `Package.swift`: + +```swift +dependencies: [ + .package(url: "https://github.com/openid/AppAuth-iOS.git", .upToNextMajor(from: "1.3.0")) +] +``` + +**tvOS:** Use the `AppAuthTV` target. + +### Carthage + +With [Carthage](https://github.com/Carthage/Carthage), add the following +line to your `Cartfile`: + + github "openid/AppAuth-iOS" "master" + +Then, run `carthage bootstrap`. + +**tvOS:** Use the `AppAuthTV` framework. + +### Static Library + +You can also use AppAuth as a static library. This requires linking the library +and your project, and including the headers. Here is a suggested configuration: + +1. Create an Xcode Workspace. +2. Add `AppAuth.xcodeproj` to your Workspace. +3. Include libAppAuth as a linked library for your target (in the "General -> +Linked Framework and Libraries" section of your target). +4. Add `AppAuth-iOS/Source` to your search paths of your target ("Build Settings -> +"Header Search Paths"). + +*Note: There is no static library for AppAuthTV.* + +## Auth Flow + +AppAuth supports both manual interaction with the authorization server +where you need to perform your own token exchanges, as well as convenience +methods that perform some of this logic for you. This example uses the +convenience method, which returns either an `OIDAuthState` object, or an error. + +`OIDAuthState` is a class that keeps track of the authorization and token +requests and responses, and provides a convenience method to call an API with +fresh tokens. This is the only object that you need to serialize to retain the +authorization state of the session. + +### Configuration + +You can configure AppAuth by specifying the endpoints directly: + +Objective-C +```objc +NSURL *authorizationEndpoint = + [NSURL URLWithString:@"https://accounts.google.com/o/oauth2/v2/auth"]; +NSURL *tokenEndpoint = + [NSURL URLWithString:@"https://www.googleapis.com/oauth2/v4/token"]; + +OIDServiceConfiguration *configuration = + [[OIDServiceConfiguration alloc] + initWithAuthorizationEndpoint:authorizationEndpoint + tokenEndpoint:tokenEndpoint]; + +// perform the auth request... +``` + +Swift +```swift +let authorizationEndpoint = URL(string: "https://accounts.google.com/o/oauth2/v2/auth")! +let tokenEndpoint = URL(string: "https://www.googleapis.com/oauth2/v4/token")! +let configuration = OIDServiceConfiguration(authorizationEndpoint: authorizationEndpoint, + tokenEndpoint: tokenEndpoint) + +// perform the auth request... +``` + +**tvOS** + +Objective-C +```objc +NSURL *deviceAuthorizationEndpoint = + [NSURL URLWithString:@"https://oauth2.googleapis.com/device/code"]; +NSURL *tokenEndpoint = + [NSURL URLWithString:@"https://www.googleapis.com/oauth2/v4/token"]; + +OIDTVServiceConfiguration *configuration = + [[OIDTVServiceConfiguration alloc] + initWithDeviceAuthorizationEndpoint:deviceAuthorizationEndpoint + tokenEndpoint:tokenEndpoint]; + +// perform the auth request... +``` + + +Or through discovery: + +Objective-C +```objc +NSURL *issuer = [NSURL URLWithString:@"https://accounts.google.com"]; + +[OIDAuthorizationService discoverServiceConfigurationForIssuer:issuer + completion:^(OIDServiceConfiguration *_Nullable configuration, + NSError *_Nullable error) { + + if (!configuration) { + NSLog(@"Error retrieving discovery document: %@", + [error localizedDescription]); + return; + } + + // perform the auth request... +}]; +``` + +Swift +```swift +let issuer = URL(string: "https://accounts.google.com")! + +// discovers endpoints +OIDAuthorizationService.discoverConfiguration(forIssuer: issuer) { configuration, error in + guard let config = configuration else { + print("Error retrieving discovery document: \(error?.localizedDescription ?? "Unknown error")") + return + } + + // perform the auth request... +} +``` + +**tvOS** + +Objective-C +```objc +NSURL *issuer = [NSURL URLWithString:@"https://accounts.google.com"]; + +[OIDTVAuthorizationService discoverServiceConfigurationForIssuer:issuer + completion:^(OIDTVServiceConfiguration *_Nullable configuration, + NSError *_Nullable error) { + + if (!configuration) { + NSLog(@"Error retrieving discovery document: %@", + [error localizedDescription]); + return; + } + + // perform the auth request... +}]; +``` + +### Authorizing – iOS + +First, you need to have a property in your `UIApplicationDelegate` +implementation to hold the session, in order to continue the authorization flow +from the redirect. In this example, the implementation of this delegate is +a class named `AppDelegate`, if your app's application delegate has a different +name, please update the class name in samples below accordingly. + +Objective-C +```objc +@interface AppDelegate : UIResponder +// property of the app's AppDelegate +@property(nonatomic, strong, nullable) id currentAuthorizationFlow; +@end +``` + +Swift +```swift +class AppDelegate: UIResponder, UIApplicationDelegate { + // property of the app's AppDelegate + var currentAuthorizationFlow: OIDExternalUserAgentSession? +} +``` + + +And your main class, a property to store the auth state: + +Objective-C +```objc +// property of the containing class +@property(nonatomic, strong, nullable) OIDAuthState *authState; +``` +Swift +```swift +// property of the containing class +private var authState: OIDAuthState? +``` + + +Then, initiate the authorization request. By using the +`authStateByPresentingAuthorizationRequest` convenience method, the token +exchange will be performed automatically, and everything will be protected with +PKCE (if the server supports it). AppAuth also lets you perform these +requests manually. See the `authNoCodeExchange` method in the included Example +app for a demonstration: + +Objective-C +```objc +// builds authentication request +OIDAuthorizationRequest *request = + [[OIDAuthorizationRequest alloc] initWithConfiguration:configuration + clientId:kClientID + scopes:@[OIDScopeOpenID, + OIDScopeProfile] + redirectURL:kRedirectURI + responseType:OIDResponseTypeCode + additionalParameters:nil]; + +// performs authentication request +AppDelegate *appDelegate = + (AppDelegate *)[UIApplication sharedApplication].delegate; +appDelegate.currentAuthorizationFlow = + [OIDAuthState authStateByPresentingAuthorizationRequest:request + presentingViewController:self + callback:^(OIDAuthState *_Nullable authState, + NSError *_Nullable error) { + if (authState) { + NSLog(@"Got authorization tokens. Access token: %@", + authState.lastTokenResponse.accessToken); + [self setAuthState:authState]; + } else { + NSLog(@"Authorization error: %@", [error localizedDescription]); + [self setAuthState:nil]; + } +}]; +``` + +Swift +```swift +// builds authentication request +let request = OIDAuthorizationRequest(configuration: configuration, + clientId: clientID, + clientSecret: clientSecret, + scopes: [OIDScopeOpenID, OIDScopeProfile], + redirectURL: redirectURI, + responseType: OIDResponseTypeCode, + additionalParameters: nil) + +// performs authentication request +print("Initiating authorization request with scope: \(request.scope ?? "nil")") + +let appDelegate = UIApplication.shared.delegate as! AppDelegate + +appDelegate.currentAuthorizationFlow = + OIDAuthState.authState(byPresenting: request, presenting: self) { authState, error in + if let authState = authState { + self.setAuthState(authState) + print("Got authorization tokens. Access token: " + + "\(authState.lastTokenResponse?.accessToken ?? "nil")") + } else { + print("Authorization error: \(error?.localizedDescription ?? "Unknown error")") + self.setAuthState(nil) + } +} +``` + +*Handling the Redirect* + +The authorization response URL is returned to the app via the iOS openURL +app delegate method, so you need to pipe this through to the current +authorization session (created in the previous session): + +Objective-C +```objc +- (BOOL)application:(UIApplication *)app + openURL:(NSURL *)url + options:(NSDictionary *)options { + // Sends the URL to the current authorization flow (if any) which will + // process it if it relates to an authorization response. + if ([_currentAuthorizationFlow resumeExternalUserAgentFlowWithURL:url]) { + _currentAuthorizationFlow = nil; + return YES; + } + + // Your additional URL handling (if any) goes here. + + return NO; +} +``` + +Swift +```swift +func application(_ app: UIApplication, + open url: URL, + options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { + // Sends the URL to the current authorization flow (if any) which will + // process it if it relates to an authorization response. + if let authorizationFlow = self.currentAuthorizationFlow, + authorizationFlow.resumeExternalUserAgentFlow(with: url) { + self.currentAuthorizationFlow = nil + return true + } + + // Your additional URL handling (if any) + + return false +} +``` + +### Authorizing – MacOS + +On macOS, the most popular way to get the authorization response redirect is to +start a local HTTP server on the loopback interface (limited to incoming +requests from the user's machine only). When the authorization is complete, the +user is redirected to that local server, and the authorization response can be +processed by the app. AppAuth takes care of managing the local HTTP server +lifecycle for you. + +> #### :bulb: Alternative: Custom URI Schemes +> Custom URI schemes are also supported on macOS, but some browsers display +> an interstitial, which reduces the usability. For an example on using custom +> URI schemes with macOS, See `Example-Mac`. + +To receive the authorization response using a local HTTP server, first you need +to have an instance variable in your main class to retain the HTTP redirect +handler: + +Objective-C +```objc +OIDRedirectHTTPHandler *_redirectHTTPHandler; +``` + +Then, as the port used by the local HTTP server varies, you need to start it +before building the authorization request, in order to get the exact redirect +URI to use: + +Objective-C +```objc +static NSString *const kSuccessURLString = + @"http://openid.github.io/AppAuth-iOS/redirect/"; +NSURL *successURL = [NSURL URLWithString:kSuccessURLString]; + +// Starts a loopback HTTP redirect listener to receive the code. This needs to be started first, +// as the exact redirect URI (including port) must be passed in the authorization request. +_redirectHTTPHandler = [[OIDRedirectHTTPHandler alloc] initWithSuccessURL:successURL]; +NSURL *redirectURI = [_redirectHTTPHandler startHTTPListener:nil]; +``` + +Then, initiate the authorization request. By using the +`authStateByPresentingAuthorizationRequest` convenience method, the token +exchange will be performed automatically, and everything will be protected with +PKCE (if the server supports it). By assigning the return value to the +`OIDRedirectHTTPHandler`'s `currentAuthorizationFlow`, the authorization will +continue automatically once the user makes their choice: + +```objc +// builds authentication request +OIDAuthorizationRequest *request = + [[OIDAuthorizationRequest alloc] initWithConfiguration:configuration + clientId:kClientID + clientSecret:kClientSecret + scopes:@[ OIDScopeOpenID ] + redirectURL:redirectURI + responseType:OIDResponseTypeCode + additionalParameters:nil]; +// performs authentication request +__weak __typeof(self) weakSelf = self; +_redirectHTTPHandler.currentAuthorizationFlow = + [OIDAuthState authStateByPresentingAuthorizationRequest:request + callback:^(OIDAuthState *_Nullable authState, + NSError *_Nullable error) { + // Brings this app to the foreground. + [[NSRunningApplication currentApplication] + activateWithOptions:(NSApplicationActivateAllWindows | + NSApplicationActivateIgnoringOtherApps)]; + + // Processes the authorization response. + if (authState) { + NSLog(@"Got authorization tokens. Access token: %@", + authState.lastTokenResponse.accessToken); + } else { + NSLog(@"Authorization error: %@", error.localizedDescription); + } + [weakSelf setAuthState:authState]; +}]; +``` + + +### Authorizing – tvOS + +Ensure that your main class is a delegate of `OIDAuthStateChangeDelegate`, `OIDAuthStateErrorDelegate`, implement the corresponding methods, and include the following property and instance variable: + +Objective-C +```objc +// property of the containing class +@property(nonatomic, strong, nullable) OIDAuthState *authState; + +// instance variable of the containing class +OIDTVAuthorizationCancelBlock _cancelBlock; +``` + +Then, build and perform the authorization request. + +Objective-C +```objc +// builds authentication request +__weak __typeof(self) weakSelf = self; + +OIDTVAuthorizationRequest *request = + [[OIDTVAuthorizationRequest alloc] initWithConfiguration:configuration + clientId:kClientID + clientSecret:kClientSecret + scopes:@[ OIDScopeOpenID, OIDScopeProfile ] + additionalParameters:nil]; + +// performs authentication request +OIDTVAuthorizationInitialization initBlock = + ^(OIDTVAuthorizationResponse *_Nullable response, NSError *_Nullable error) { + if (response) { + // process authorization response + NSLog(@"Got authorization response: %@", response); + } else { + // handle initialization error + NSLog(@"Error: %@", error); + } + }; + +OIDTVAuthorizationCompletion completionBlock = + ^(OIDAuthState *_Nullable authState, NSError *_Nullable error) { + weakSelf.signInView.hidden = YES; + if (authState) { + NSLog(@"Token response: %@", authState.lastTokenResponse); + [weakSelf setAuthState:authState]; + } else { + NSLog(@"Error: %@", error); + [weakSelf setAuthState:nil]; + } + }; + +_cancelBlock = [OIDTVAuthorizationService authorizeTVRequest:request + initialization:initBlock + completion:completionBlock]; +``` + +### Making API Calls + +AppAuth gives you the raw token information, if you need it. However, we +recommend that users of the `OIDAuthState` convenience wrapper use the provided +`performActionWithFreshTokens:` method to perform their API calls to avoid +needing to worry about token freshness: + +Objective-C +```objc +[_authState performActionWithFreshTokens:^(NSString *_Nonnull accessToken, + NSString *_Nonnull idToken, + NSError *_Nullable error) { + if (error) { + NSLog(@"Error fetching fresh tokens: %@", [error localizedDescription]); + return; + } + + // perform your API request using the tokens +}]; +``` + +Swift +```swift +let userinfoEndpoint = URL(string:"https://openidconnect.googleapis.com/v1/userinfo")! +self.authState?.performAction() { (accessToken, idToken, error) in + + if error != nil { + print("Error fetching fresh tokens: \(error?.localizedDescription ?? "Unknown error")") + return + } + guard let accessToken = accessToken else { + return + } + + // Add Bearer token to request + var urlRequest = URLRequest(url: userinfoEndpoint) + urlRequest.allHTTPHeaderFields = ["Authorization": "Bearer \(accessToken)"] + + // Perform request... +} +``` + +### Custom User-Agents (iOS and macOS) + +Each OAuth flow involves presenting an external user-agent to the user, that +allows them to interact with the OAuth authorization server. Typical examples +of a user-agent are the user's browser, or an in-app browser tab incarnation +like `ASWebAuthenticationSession` on iOS. + +AppAuth ships with several implementations of an external user-agent out of the +box, including defaults for iOS and macOS suitable for most cases. The default +user-agents typically share persistent cookies with the system default browser, +to improve the chance that the user doesn't need to sign-in all over again. + +It is possible to change the user-agent that AppAuth uses, and even write your +own - all without needing to fork the library. + +All implementations of the external user-agent, be they included or created by +you need to conform to the +[`OIDExternalUserAgent`](http://openid.github.io/AppAuth-iOS/docs/latest/protocol_o_i_d_external_user_agent-p.html) +protocol. + +Instances of the `OIDExternalUserAgent`are passed into +[`OIDAuthState.authStateByPresentingAuthorizationRequest:externalUserAgent:callback`](http://openid.github.io/AppAuth-iOS/docs/latest/interface_o_i_d_auth_state.html#ac762fe2bf95c116f0b437419be211fa1) +and/or +[`OIDAuthorizationService.presentAuthorizationRequest:externalUserAgent:callback:`](http://openid.github.io/AppAuth-iOS/docs/latest/interface_o_i_d_authorization_service.html#ae551f8e6887366a46e49b09b37389b8f) +rather than using the platform-specific convenience methods (which use the +default user-agents for their respective platforms), like +[`OIDAuthState.authStateByPresentingAuthorizationRequest:presentingViewController:callback:`](http://openid.github.io/AppAuth-iOS/docs/latest/category_o_i_d_auth_state_07_i_o_s_08.html#ae32fd0732cd3192cd5219f2655a4c85c). + +Popular use-cases for writing your own user-agent implementation include needing +to style the user-agent in ways not supported by AppAuth, and implementing a +fully custom flow with your own business logic. You can take one of the existing +implementations as a starting point to copy, rename, and customize to your +needs. + +#### Custom Browser User-Agent + +AppAuth for iOS includes a few extra user-agent implementations which you can +try, or use as a reference for your own implementation. One of them, +[`OIDExternalUserAgentIOSCustomBrowser`](http://openid.github.io/AppAuth-iOS/docs/latest/interface_o_i_d_external_user_agent_i_o_s_custom_browser.html) +enables you to use a different browser for authentication, like Chrome for iOS +or Firefox for iOS. + +Here's how to configure AppAuth to use a custom browser using the +`OIDExternalUserAgentIOSCustomBrowser` user agent: + +First, add the following array to your +[Info.plist](https://github.com/openid/AppAuth-iOS/blob/135f99d2cb4e9d18d310ac2588b905e612461561/Examples/Example-iOS_ObjC/Source/Info.plist#L34) +(in XCode, right click -> Open As -> Source Code) + +``` + LSApplicationQueriesSchemes + + googlechromes + opera-https + firefox + +``` + +This is required so that AppAuth can test for the browser and open the app store +if it's not installed (the default behavior of this user-agent). You only need +to include the URL scheme of the actual browser you intend to use. + +Objective-C +```objc +// performs authentication request +AppDelegate *appDelegate = + (AppDelegate *)[UIApplication sharedApplication].delegate; +id userAgent = + [OIDExternalUserAgentIOSCustomBrowser CustomBrowserChrome]; +appDelegate.currentAuthorizationFlow = + [OIDAuthState authStateByPresentingAuthorizationRequest:request + externalUserAgent:userAgent + callback:^(OIDAuthState *_Nullable authState, + NSError *_Nullable error) { + if (authState) { + NSLog(@"Got authorization tokens. Access token: %@", + authState.lastTokenResponse.accessToken); + [self setAuthState:authState]; + } else { + NSLog(@"Authorization error: %@", [error localizedDescription]); + [self setAuthState:nil]; + } +}]; +``` + +Swift +``` +guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { + self.logMessage("Error accessing AppDelegate") + return + } +let userAgent = OIDExternalUserAgentIOSCustomBrowser.customBrowserChrome() +appDelegate.currentAuthorizationFlow = OIDAuthState.authState(byPresenting: request, externalUserAgent: userAgent) { authState, error in + if let authState = authState { + self.setAuthState(authState) + self.logMessage("Got authorization tokens. Access token: \(authState.lastTokenResponse?.accessToken ?? "DEFAULT_TOKEN")") + } else { + self.logMessage("Authorization error: \(error?.localizedDescription ?? "DEFAULT_ERROR")") + self.setAuthState(nil) + } +} +``` + +That's it! With those two changes (which you can try on the included sample), +AppAuth will use Chrome iOS for the authorization request (and open Chrome in +the App Store if it's not installed). + +⚠️**Note: the `OIDExternalUserAgentIOSCustomBrowser` user-agent is not intended for consumer apps**. It is designed for +advanced enterprise use-cases where the app developers have greater control over +the operating environment and have special requirements that require a custom +browser like Chrome. + +You don't need to stop with the included external user agents either! Since the +[`OIDExternalUserAgent`](http://openid.github.io/AppAuth-iOS/docs/latest/protocol_o_i_d_external_user_agent-p.html) +protocol is part of AppAuth's public API, you can implement your own versions of +it. In the above example, +`userAgent = [OIDExternalUserAgentIOSCustomBrowser CustomBrowserChrome]` would +be replaced with an instantiation of your user-agent implementation. + +## API Documentation + +Browse the [API documentation](http://openid.github.io/AppAuth-iOS/docs/latest/annotated.html). + +## Included Samples + +Sample apps that explore core AppAuth features are available for iOS, macOS and tvOS; follow the instructions in [Examples/README.md](Examples/README.md) to get started. diff --git a/Pods/AppAuth/Source/AppAuth.h b/Pods/AppAuth/Source/AppAuth.h new file mode 100644 index 0000000..19abc55 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuth.h @@ -0,0 +1,92 @@ +/*! @file AppAuth.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDAuthState.h" +#import "OIDAuthStateChangeDelegate.h" +#import "OIDAuthStateErrorDelegate.h" +#import "OIDAuthorizationRequest.h" +#import "OIDAuthorizationResponse.h" +#import "OIDAuthorizationService.h" +#import "OIDError.h" +#import "OIDErrorUtilities.h" +#import "OIDExternalUserAgent.h" +#import "OIDExternalUserAgentRequest.h" +#import "OIDExternalUserAgentSession.h" +#import "OIDGrantTypes.h" +#import "OIDIDToken.h" +#import "OIDRegistrationRequest.h" +#import "OIDRegistrationResponse.h" +#import "OIDResponseTypes.h" +#import "OIDScopes.h" +#import "OIDScopeUtilities.h" +#import "OIDServiceConfiguration.h" +#import "OIDServiceDiscovery.h" +#import "OIDTokenRequest.h" +#import "OIDTokenResponse.h" +#import "OIDTokenUtilities.h" +#import "OIDURLSessionProvider.h" +#import "OIDEndSessionRequest.h" +#import "OIDEndSessionResponse.h" + +#if TARGET_OS_TV +#elif TARGET_OS_WATCH +#elif TARGET_OS_IOS || TARGET_OS_MACCATALYST +#import "OIDAuthState+IOS.h" +#import "OIDAuthorizationService+IOS.h" +#import "OIDExternalUserAgentIOS.h" +#import "OIDExternalUserAgentIOSCustomBrowser.h" +#import "OIDExternalUserAgentCatalyst.h" +#elif TARGET_OS_OSX +#import "OIDAuthState+Mac.h" +#import "OIDAuthorizationService+Mac.h" +#import "OIDExternalUserAgentMac.h" +#import "OIDRedirectHTTPHandler.h" +#else +#error "Platform Undefined" +#endif + +/*! @mainpage AppAuth for iOS and macOS + + @section introduction Introduction + + AppAuth for iOS and macOS is a client SDK for communicating with [OAuth 2.0] + (https://tools.ietf.org/html/rfc6749) and [OpenID Connect] + (http://openid.net/specs/openid-connect-core-1_0.html) providers. It strives to + directly map the requests and responses of those specifications, while following + the idiomatic style of the implementation language. In addition to mapping the + raw protocol flows, convenience methods are available to assist with common + tasks like performing an action with fresh tokens. + + It follows the best practices set out in + [RFC 8252 - OAuth 2.0 for Native Apps](https://tools.ietf.org/html/rfc8252) + including using `SFAuthenticationSession` and `SFSafariViewController` on iOS + for the auth request. Web view and `WKWebView` are explicitly *not* + supported due to the security and usability reasons explained in + [Section 8.12 of RFC 8252](https://tools.ietf.org/html/rfc8252#section-8.12). + + It also supports the [PKCE](https://tools.ietf.org/html/rfc7636) extension to + OAuth which was created to secure authorization codes in public clients when + custom URI scheme redirects are used. The library is friendly to other + extensions (standard or otherwise) with the ability to handle additional params + in all protocol requests and responses. + + Homepage: http://openid.github.io/AppAuth-iOS/
+ API Documentation: http://openid.github.io/AppAuth-iOS/docs/latest
+ Git Repository: https://github.com/openid/AppAuth-iOS
+ + */ diff --git a/Pods/AppAuth/Source/AppAuth/iOS/OIDAuthState+IOS.h b/Pods/AppAuth/Source/AppAuth/iOS/OIDAuthState+IOS.h new file mode 100644 index 0000000..1a1ee63 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuth/iOS/OIDAuthState+IOS.h @@ -0,0 +1,84 @@ +/*! @file OIDAuthState+IOS.h + @brief AppAuth iOS SDK + @copyright + Copyright 2016 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +#if TARGET_OS_IOS || TARGET_OS_MACCATALYST + +#import + +#import "OIDAuthState.h" + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief iOS specific convenience methods for @c OIDAuthState. + */ +@interface OIDAuthState (IOS) + +/*! @brief Convenience method to create a @c OIDAuthState by presenting an authorization request + and performing the authorization code exchange in the case of code flow requests. For + the hybrid flow, the caller should validate the id_token and c_hash, then perform the token + request (@c OIDAuthorizationService.performTokenRequest:callback:) + and update the OIDAuthState with the results (@c + OIDAuthState.updateWithTokenResponse:error:). + @param authorizationRequest The authorization request to present. + @param presentingViewController The view controller to use for presenting the authentication UI. + @param callback The method called when the request has completed or failed. + @return A @c OIDExternalUserAgentSession instance which will terminate when it + receives a @c OIDExternalUserAgentSession.cancel message, or after processing a + @c OIDExternalUserAgentSession.resumeExternalUserAgentFlowWithURL: message. + */ ++ (id) + authStateByPresentingAuthorizationRequest:(OIDAuthorizationRequest *)authorizationRequest + presentingViewController:(UIViewController *)presentingViewController + callback:(OIDAuthStateAuthorizationCallback)callback; + +/*! @brief Convenience method to create a @c OIDAuthState by presenting an authorization request + (optionally using an emphemeral browser session that shares no cookies or data with the + normal browser session) and performing the authorization code exchange in the case of code + flow requests. For the hybrid flow, the caller should validate the id_token and c_hash, then + perform the token request (@c OIDAuthorizationService.performTokenRequest:callback:) + and update the OIDAuthState with the results (@c + OIDAuthState.updateWithTokenResponse:error:). + @param authorizationRequest The authorization request to present. + @param presentingViewController The view controller to use for presenting the authentication UI. + @param prefersEphemeralSession Whether the caller prefers to use a private authentication + session. See @c ASWebAuthenticationSession.prefersEphemeralWebBrowserSession for more. + @param callback The method called when the request has completed or failed. + @return A @c OIDExternalUserAgentSession instance which will terminate when it + receives a @c OIDExternalUserAgentSession.cancel message, or after processing a + @c OIDExternalUserAgentSession.resumeExternalUserAgentFlowWithURL: message. + */ ++ (id) + authStateByPresentingAuthorizationRequest:(OIDAuthorizationRequest *)authorizationRequest + presentingViewController:(UIViewController *)presentingViewController + prefersEphemeralSession:(BOOL)prefersEphemeralSession + callback:(OIDAuthStateAuthorizationCallback)callback + API_AVAILABLE(ios(13)); + ++ (id) + authStateByPresentingAuthorizationRequest:(OIDAuthorizationRequest *)authorizationRequest + callback:(OIDAuthStateAuthorizationCallback)callback API_AVAILABLE(ios(11)) API_UNAVAILABLE(macCatalyst) + __deprecated_msg("This method will not work on iOS 13. Use " + "authStateByPresentingAuthorizationRequest:presentingViewController:callback:"); + +@end + +NS_ASSUME_NONNULL_END + +#endif // TARGET_OS_IOS || TARGET_OS_MACCATALYST diff --git a/Pods/AppAuth/Source/AppAuth/iOS/OIDAuthState+IOS.m b/Pods/AppAuth/Source/AppAuth/iOS/OIDAuthState+IOS.m new file mode 100644 index 0000000..c474a77 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuth/iOS/OIDAuthState+IOS.m @@ -0,0 +1,78 @@ +/*! @file OIDAuthState+IOS.m + @brief AppAuth iOS SDK + @copyright + Copyright 2016 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +#if TARGET_OS_IOS || TARGET_OS_MACCATALYST + +#import "OIDAuthState+IOS.h" +#import "OIDExternalUserAgentIOS.h" +#import "OIDExternalUserAgentCatalyst.h" + +@implementation OIDAuthState (IOS) + ++ (id) + authStateByPresentingAuthorizationRequest:(OIDAuthorizationRequest *)authorizationRequest + presentingViewController:(UIViewController *)presentingViewController + callback:(OIDAuthStateAuthorizationCallback)callback { + id externalUserAgent; +#if TARGET_OS_MACCATALYST + externalUserAgent = [[OIDExternalUserAgentCatalyst alloc] + initWithPresentingViewController:presentingViewController]; +#else // TARGET_OS_MACCATALYST + externalUserAgent = [[OIDExternalUserAgentIOS alloc] initWithPresentingViewController:presentingViewController]; +#endif // TARGET_OS_MACCATALYST + return [self authStateByPresentingAuthorizationRequest:authorizationRequest + externalUserAgent:externalUserAgent + callback:callback]; +} + ++ (id) + authStateByPresentingAuthorizationRequest:(OIDAuthorizationRequest *)authorizationRequest + presentingViewController:(UIViewController *)presentingViewController + prefersEphemeralSession:(BOOL)prefersEphemeralSession + callback:(OIDAuthStateAuthorizationCallback)callback { + id externalUserAgent; +#if TARGET_OS_MACCATALYST + externalUserAgent = [[OIDExternalUserAgentCatalyst alloc] + initWithPresentingViewController:presentingViewController + prefersEphemeralSession:prefersEphemeralSession]; +#else // TARGET_OS_MACCATALYST + externalUserAgent = [[OIDExternalUserAgentIOS alloc] + initWithPresentingViewController:presentingViewController + prefersEphemeralSession:prefersEphemeralSession]; +#endif // TARGET_OS_MACCATALYST + return [self authStateByPresentingAuthorizationRequest:authorizationRequest + externalUserAgent:externalUserAgent + callback:callback]; +} + +#if !TARGET_OS_MACCATALYST ++ (id) + authStateByPresentingAuthorizationRequest:(OIDAuthorizationRequest *)authorizationRequest + callback:(OIDAuthStateAuthorizationCallback)callback { + OIDExternalUserAgentIOS *externalUserAgent = [[OIDExternalUserAgentIOS alloc] init]; + return [self authStateByPresentingAuthorizationRequest:authorizationRequest + externalUserAgent:externalUserAgent + callback:callback]; +} +#endif // !TARGET_OS_MACCATALYST + +@end + +#endif // TARGET_OS_IOS || TARGET_OS_MACCATALYST diff --git a/Pods/AppAuth/Source/AppAuth/iOS/OIDAuthorizationService+IOS.h b/Pods/AppAuth/Source/AppAuth/iOS/OIDAuthorizationService+IOS.h new file mode 100644 index 0000000..c7c685d --- /dev/null +++ b/Pods/AppAuth/Source/AppAuth/iOS/OIDAuthorizationService+IOS.h @@ -0,0 +1,67 @@ +/*! @file OIDAuthorizationService+IOS.h + @brief AppAuth iOS SDK + @copyright + Copyright 2016 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +#if TARGET_OS_IOS || TARGET_OS_MACCATALYST + +#import + +#import "OIDAuthorizationService.h" +#import "OIDExternalUserAgentSession.h" + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Provides iOS specific authorization request handling. + */ +@interface OIDAuthorizationService (IOS) + +/*! @brief Perform an authorization flow, presenting an appropriate browser for the user to + authenticate. + @param request The authorization request. + @param presentingViewController The view controller from which to present authentication UI. + @param callback The method called when the request has completed or failed. + @return A @c OIDExternalUserAgentSession instance which will terminate when it + receives a @c OIDExternalUserAgentSession.cancel message, or after processing a + @c OIDExternalUserAgentSession.resumeExternalUserAgentFlowWithURL: message. + */ ++ (id) presentAuthorizationRequest:(OIDAuthorizationRequest *)request + presentingViewController:(UIViewController *)presentingViewController + callback:(OIDAuthorizationCallback)callback; + +/*! @brief Perform an authorization flow using the @c ASWebAuthenticationSession optionally using an + emphemeral browser session that shares no cookies or data with the normal browser session. + @param request The authorization request. + @param presentingViewController The view controller from which to present authentication UI. + @param prefersEphemeralSession Whether the caller prefers to use a private authentication + session. See @c ASWebAuthenticationSession.prefersEphemeralWebBrowserSession for more. + @param callback The method called when the request has completed or failed. + @return A @c OIDExternalUserAgentSession instance which will terminate when it + receives a @c OIDExternalUserAgentSession.cancel message, or after processing a + @c OIDExternalUserAgentSession.resumeExternalUserAgentFlowWithURL: message. + */ ++ (id) presentAuthorizationRequest:(OIDAuthorizationRequest *)request + presentingViewController:(UIViewController *)presentingViewController + prefersEphemeralSession:(BOOL)prefersEphemeralSession + callback:(OIDAuthorizationCallback)callback API_AVAILABLE(ios(13)); + +@end + +NS_ASSUME_NONNULL_END + +#endif // TARGET_OS_IOS || TARGET_OS_MACCATALYST diff --git a/Pods/AppAuth/Source/AppAuth/iOS/OIDAuthorizationService+IOS.m b/Pods/AppAuth/Source/AppAuth/iOS/OIDAuthorizationService+IOS.m new file mode 100644 index 0000000..4ca07c5 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuth/iOS/OIDAuthorizationService+IOS.m @@ -0,0 +1,64 @@ +/*! @file OIDAuthorizationService+IOS.m + @brief AppAuth iOS SDK + @copyright + Copyright 2016 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +#if TARGET_OS_IOS || TARGET_OS_MACCATALYST + +#import "OIDAuthorizationService+IOS.h" +#import "OIDExternalUserAgentIOS.h" +#import "OIDExternalUserAgentCatalyst.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation OIDAuthorizationService (IOS) + ++ (id) presentAuthorizationRequest:(OIDAuthorizationRequest *)request + presentingViewController:(UIViewController *)presentingViewController + callback:(OIDAuthorizationCallback)callback { + id externalUserAgent; +#if TARGET_OS_MACCATALYST + externalUserAgent = [[OIDExternalUserAgentCatalyst alloc] + initWithPresentingViewController:presentingViewController]; +#else // TARGET_OS_MACCATALYST + externalUserAgent = [[OIDExternalUserAgentIOS alloc] initWithPresentingViewController:presentingViewController]; +#endif // TARGET_OS_MACCATALYST + return [self presentAuthorizationRequest:request externalUserAgent:externalUserAgent callback:callback]; +} + ++ (id) presentAuthorizationRequest:(OIDAuthorizationRequest *)request + presentingViewController:(UIViewController *)presentingViewController + prefersEphemeralSession:(BOOL)prefersEphemeralSession + callback:(OIDAuthorizationCallback)callback { + id externalUserAgent; +#if TARGET_OS_MACCATALYST + externalUserAgent = [[OIDExternalUserAgentCatalyst alloc] + initWithPresentingViewController:presentingViewController + prefersEphemeralSession:prefersEphemeralSession]; +#else // TARGET_OS_MACCATALYST + externalUserAgent = [[OIDExternalUserAgentIOS alloc] initWithPresentingViewController:presentingViewController + prefersEphemeralSession:prefersEphemeralSession]; +#endif // TARGET_OS_MACCATALYST + return [self presentAuthorizationRequest:request externalUserAgent:externalUserAgent callback:callback]; +} + +@end + +NS_ASSUME_NONNULL_END + +#endif // TARGET_OS_IOS || TARGET_OS_MACCATALYST diff --git a/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentCatalyst.h b/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentCatalyst.h new file mode 100644 index 0000000..910d0bb --- /dev/null +++ b/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentCatalyst.h @@ -0,0 +1,61 @@ +/*! @file OIDExternalUserAgentCatalyst.h + @brief AppAuth iOS SDK + @copyright + Copyright 2019 The AppAuth Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#import + +#if TARGET_OS_IOS || TARGET_OS_MACCATALYST + +#import + +#import "OIDExternalUserAgent.h" + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief A Catalyst specific external user-agent that uses `ASWebAuthenticationSession` to + present the request. +*/ +API_AVAILABLE(macCatalyst(13)) API_UNAVAILABLE(ios) +@interface OIDExternalUserAgentCatalyst : NSObject + +/*! @internal + @brief Unavailable. Please use @c initWithPresentingViewController: + */ +- (nonnull instancetype)init NS_UNAVAILABLE; + +/*! @brief The designated initializer. + @param presentingViewController The view controller from which to present the + \SFSafariViewController. + */ +- (nullable instancetype)initWithPresentingViewController: + (UIViewController *)presentingViewController + NS_DESIGNATED_INITIALIZER; + +/*! @brief Create an external user-agent which optionally uses a private authentication session. + @param presentingViewController The view controller from which to present the browser. + @param prefersEphemeralSession Whether the caller prefers to use a private authentication + session. See @c ASWebAuthenticationSession.prefersEphemeralWebBrowserSession for more. + */ +- (nullable instancetype)initWithPresentingViewController: + (UIViewController *)presentingViewController + prefersEphemeralSession:(BOOL)prefersEphemeralSession; + +@end + +NS_ASSUME_NONNULL_END + +#endif // TARGET_OS_IOS || TARGET_OS_MACCATALYST diff --git a/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentCatalyst.m b/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentCatalyst.m new file mode 100644 index 0000000..d6771b3 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentCatalyst.m @@ -0,0 +1,157 @@ +/*! @file OIDExternalUserAgentCatalyst.m + @brief AppAuth iOS SDK + @copyright + Copyright 2019 The AppAuth Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#import + +#if TARGET_OS_IOS || TARGET_OS_MACCATALYST + +#import "OIDExternalUserAgentCatalyst.h" + +#import +#import + +#import "OIDErrorUtilities.h" +#import "OIDExternalUserAgentSession.h" +#import "OIDExternalUserAgentRequest.h" + +#if TARGET_OS_MACCATALYST + +NS_ASSUME_NONNULL_BEGIN + +@interface OIDExternalUserAgentCatalyst () +@end + +@implementation OIDExternalUserAgentCatalyst { + UIViewController *_presentingViewController; + BOOL _prefersEphemeralSession; + + BOOL _externalUserAgentFlowInProgress; + __weak id _session; + ASWebAuthenticationSession *_webAuthenticationVC; +} + +- (nullable instancetype)initWithPresentingViewController: + (UIViewController *)presentingViewController { + self = [super init]; + if (self) { + _presentingViewController = presentingViewController; + } + return self; +} + +- (nullable instancetype)initWithPresentingViewController: + (UIViewController *)presentingViewController + prefersEphemeralSession:(BOOL)prefersEphemeralSession { + self = [self initWithPresentingViewController:presentingViewController]; + if (self) { + _prefersEphemeralSession = prefersEphemeralSession; + } + return self; +} + +- (BOOL)presentExternalUserAgentRequest:(id)request + session:(id)session { + if (_externalUserAgentFlowInProgress) { + // TODO: Handle errors as authorization is already in progress. + return NO; + } + + _externalUserAgentFlowInProgress = YES; + _session = session; + BOOL openedUserAgent = NO; + NSURL *requestURL = [request externalUserAgentRequestURL]; + + __weak OIDExternalUserAgentCatalyst *weakSelf = self; + NSString *redirectScheme = request.redirectScheme; + ASWebAuthenticationSession *authenticationVC = + [[ASWebAuthenticationSession alloc] initWithURL:requestURL + callbackURLScheme:redirectScheme + completionHandler:^(NSURL * _Nullable callbackURL, + NSError * _Nullable error) { + __strong OIDExternalUserAgentCatalyst *strongSelf = weakSelf; + if (!strongSelf) { + return; + } + strongSelf->_webAuthenticationVC = nil; + if (callbackURL) { + [strongSelf->_session resumeExternalUserAgentFlowWithURL:callbackURL]; + } else { + NSError *safariError = + [OIDErrorUtilities errorWithCode:OIDErrorCodeUserCanceledAuthorizationFlow + underlyingError:error + description:nil]; + [strongSelf->_session failExternalUserAgentFlowWithError:safariError]; + } + }]; + + authenticationVC.presentationContextProvider = self; + authenticationVC.prefersEphemeralWebBrowserSession = _prefersEphemeralSession; + _webAuthenticationVC = authenticationVC; + openedUserAgent = [authenticationVC start]; + + if (!openedUserAgent) { + [self cleanUp]; + NSError *safariError = [OIDErrorUtilities errorWithCode:OIDErrorCodeSafariOpenError + underlyingError:nil + description:@"Unable to open ASWebAuthenticationSession view controller."]; + [session failExternalUserAgentFlowWithError:safariError]; + } + return openedUserAgent; +} + +- (void)dismissExternalUserAgentAnimated:(BOOL)animated completion:(void (^)(void))completion { + if (!_externalUserAgentFlowInProgress) { + // Ignore this call if there is no authorization flow in progress. + if (completion) completion(); + return; + } + + ASWebAuthenticationSession *webAuthenticationVC = _webAuthenticationVC; + + [self cleanUp]; + + if (webAuthenticationVC) { + // dismiss the ASWebAuthenticationSession + [webAuthenticationVC cancel]; + if (completion) completion(); + } else { + if (completion) completion(); + } +} + +- (void)cleanUp { + // The weak reference to |_session| is set to nil to avoid accidentally using + // it while not in an authorization flow. + _webAuthenticationVC = nil; + _session = nil; + _externalUserAgentFlowInProgress = NO; +} + +#pragma mark - ASWebAuthenticationPresentationContextProviding + +- (ASPresentationAnchor)presentationAnchorForWebAuthenticationSession:(ASWebAuthenticationSession *)session { + return _presentingViewController.view.window; +} + +@end + +NS_ASSUME_NONNULL_END + +#endif // TARGET_OS_MACCATALYST + +#endif // TARGET_OS_IOS || TARGET_OS_MACCATALYST diff --git a/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOS.h b/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOS.h new file mode 100644 index 0000000..ae0773c --- /dev/null +++ b/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOS.h @@ -0,0 +1,69 @@ +/*! @file OIDExternalUserAgentIOS.h + @brief AppAuth iOS SDK + @copyright + Copyright 2016 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +#if TARGET_OS_IOS || TARGET_OS_MACCATALYST + +#import + +#import "OIDExternalUserAgent.h" + +@class SFSafariViewController; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief An iOS specific external user-agent that uses the best possible user-agent available + depending on the version of iOS to present the request. + */ +API_UNAVAILABLE(macCatalyst) +@interface OIDExternalUserAgentIOS : NSObject + +- (nullable instancetype)init API_AVAILABLE(ios(11)) + __deprecated_msg("This method will not work on iOS 13, use " + "initWithPresentingViewController:presentingViewController"); + +/*! @brief The designated initializer. + @param presentingViewController The view controller from which to present the authentication UI. + @discussion The specific authentication UI used depends on the iOS version and accessibility + options. iOS 8 uses the system browser, iOS 9-10 use @c SFSafariViewController, iOS 11 uses + @c SFAuthenticationSession + (unless Guided Access is on which does not work) or uses @c SFSafariViewController, and iOS + 12+ uses @c ASWebAuthenticationSession (unless Guided Access is on). + */ +- (nullable instancetype)initWithPresentingViewController: + (UIViewController *)presentingViewController + NS_DESIGNATED_INITIALIZER; + +/*! @brief Create an external user-agent which optionally uses a private authentication session. + @param presentingViewController The view controller from which to present the browser. + @param prefersEphemeralSession Whether the caller prefers to use a private authentication + session. See @c ASWebAuthenticationSession.prefersEphemeralWebBrowserSession for more. + @discussion Authentication is performed with @c ASWebAuthenticationSession (unless Guided Access + is on), setting the ephemerality based on the argument. + */ +- (nullable instancetype)initWithPresentingViewController: + (UIViewController *)presentingViewController + prefersEphemeralSession:(BOOL)prefersEphemeralSession + API_AVAILABLE(ios(13)); + +@end + +NS_ASSUME_NONNULL_END + +#endif // TARGET_OS_IOS || TARGET_OS_MACCATALYST diff --git a/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOS.m b/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOS.m new file mode 100644 index 0000000..eab7aa3 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOS.m @@ -0,0 +1,268 @@ +/*! @file OIDExternalUserAgentIOS.m + @brief AppAuth iOS SDK + @copyright + Copyright 2016 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +#if TARGET_OS_IOS || TARGET_OS_MACCATALYST + +#import "OIDExternalUserAgentIOS.h" + +#import +#import + +#import "OIDErrorUtilities.h" +#import "OIDExternalUserAgentSession.h" +#import "OIDExternalUserAgentRequest.h" + +#if !TARGET_OS_MACCATALYST + +NS_ASSUME_NONNULL_BEGIN + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 +@interface OIDExternalUserAgentIOS () +@end +#else +@interface OIDExternalUserAgentIOS () +@end +#endif + +@implementation OIDExternalUserAgentIOS { + UIViewController *_presentingViewController; + BOOL _prefersEphemeralSession; + + BOOL _externalUserAgentFlowInProgress; + __weak id _session; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpartial-availability" + __weak SFSafariViewController *_safariVC; + SFAuthenticationSession *_authenticationVC; + ASWebAuthenticationSession *_webAuthenticationVC; +#pragma clang diagnostic pop +} + +- (nullable instancetype)init { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnonnull" + return [self initWithPresentingViewController:nil]; +#pragma clang diagnostic pop +} + +- (nullable instancetype)initWithPresentingViewController: + (UIViewController *)presentingViewController { + self = [super init]; + if (self) { +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 + NSAssert(presentingViewController != nil, + @"presentingViewController cannot be nil on iOS 13"); +#endif // __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 + + _presentingViewController = presentingViewController; + } + return self; +} + +- (nullable instancetype)initWithPresentingViewController: + (UIViewController *)presentingViewController + prefersEphemeralSession:(BOOL)prefersEphemeralSession { + self = [self initWithPresentingViewController:presentingViewController]; + if (self) { + _prefersEphemeralSession = prefersEphemeralSession; + } + return self; +} + +- (BOOL)presentExternalUserAgentRequest:(id)request + session:(id)session { + if (_externalUserAgentFlowInProgress) { + // TODO: Handle errors as authorization is already in progress. + return NO; + } + + _externalUserAgentFlowInProgress = YES; + _session = session; + BOOL openedUserAgent = NO; + NSURL *requestURL = [request externalUserAgentRequestURL]; + + // iOS 12 and later, use ASWebAuthenticationSession + if (@available(iOS 12.0, *)) { + // ASWebAuthenticationSession doesn't work with guided access (rdar://40809553) + if (!UIAccessibilityIsGuidedAccessEnabled()) { + __weak OIDExternalUserAgentIOS *weakSelf = self; + NSString *redirectScheme = request.redirectScheme; + ASWebAuthenticationSession *authenticationVC = + [[ASWebAuthenticationSession alloc] initWithURL:requestURL + callbackURLScheme:redirectScheme + completionHandler:^(NSURL * _Nullable callbackURL, + NSError * _Nullable error) { + __strong OIDExternalUserAgentIOS *strongSelf = weakSelf; + if (!strongSelf) { + return; + } + strongSelf->_webAuthenticationVC = nil; + if (callbackURL) { + [strongSelf->_session resumeExternalUserAgentFlowWithURL:callbackURL]; + } else { + NSError *safariError = + [OIDErrorUtilities errorWithCode:OIDErrorCodeUserCanceledAuthorizationFlow + underlyingError:error + description:nil]; + [strongSelf->_session failExternalUserAgentFlowWithError:safariError]; + } + }]; +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 + if (@available(iOS 13.0, *)) { + authenticationVC.presentationContextProvider = self; + authenticationVC.prefersEphemeralWebBrowserSession = _prefersEphemeralSession; + } +#endif + _webAuthenticationVC = authenticationVC; + openedUserAgent = [authenticationVC start]; + } + } + // iOS 11, use SFAuthenticationSession + if (@available(iOS 11.0, *)) { + // SFAuthenticationSession doesn't work with guided access (rdar://40809553) + if (!openedUserAgent && !UIAccessibilityIsGuidedAccessEnabled()) { + __weak OIDExternalUserAgentIOS *weakSelf = self; + NSString *redirectScheme = request.redirectScheme; + SFAuthenticationSession *authenticationVC = + [[SFAuthenticationSession alloc] initWithURL:requestURL + callbackURLScheme:redirectScheme + completionHandler:^(NSURL * _Nullable callbackURL, + NSError * _Nullable error) { + __strong OIDExternalUserAgentIOS *strongSelf = weakSelf; + if (!strongSelf) { + return; + } + strongSelf->_authenticationVC = nil; + if (callbackURL) { + [strongSelf->_session resumeExternalUserAgentFlowWithURL:callbackURL]; + } else { + NSError *safariError = + [OIDErrorUtilities errorWithCode:OIDErrorCodeUserCanceledAuthorizationFlow + underlyingError:error + description:@"User cancelled."]; + [strongSelf->_session failExternalUserAgentFlowWithError:safariError]; + } + }]; + _authenticationVC = authenticationVC; + openedUserAgent = [authenticationVC start]; + } + } + // iOS 9 and 10, use SFSafariViewController + if (@available(iOS 9.0, *)) { + if (!openedUserAgent && _presentingViewController) { + SFSafariViewController *safariVC = + [[SFSafariViewController alloc] initWithURL:requestURL]; + safariVC.delegate = self; + _safariVC = safariVC; + [_presentingViewController presentViewController:safariVC animated:YES completion:nil]; + openedUserAgent = YES; + } + } + // iOS 8 and earlier, use mobile Safari + if (!openedUserAgent){ + openedUserAgent = [[UIApplication sharedApplication] openURL:requestURL]; + } + + if (!openedUserAgent) { + [self cleanUp]; + NSError *safariError = [OIDErrorUtilities errorWithCode:OIDErrorCodeSafariOpenError + underlyingError:nil + description:@"Unable to open Safari."]; + [session failExternalUserAgentFlowWithError:safariError]; + } + return openedUserAgent; +} + +- (void)dismissExternalUserAgentAnimated:(BOOL)animated completion:(void (^)(void))completion { + if (!_externalUserAgentFlowInProgress) { + // Ignore this call if there is no authorization flow in progress. + if (completion) completion(); + return; + } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpartial-availability" + SFSafariViewController *safariVC = _safariVC; + SFAuthenticationSession *authenticationVC = _authenticationVC; + ASWebAuthenticationSession *webAuthenticationVC = _webAuthenticationVC; +#pragma clang diagnostic pop + + [self cleanUp]; + + if (webAuthenticationVC) { + // dismiss the ASWebAuthenticationSession + [webAuthenticationVC cancel]; + if (completion) completion(); + } else if (authenticationVC) { + // dismiss the SFAuthenticationSession + [authenticationVC cancel]; + if (completion) completion(); + } else if (safariVC) { + // dismiss the SFSafariViewController + [safariVC dismissViewControllerAnimated:YES completion:completion]; + } else { + if (completion) completion(); + } +} + +- (void)cleanUp { + // The weak references to |_safariVC| and |_session| are set to nil to avoid accidentally using + // them while not in an authorization flow. + _safariVC = nil; + _authenticationVC = nil; + _webAuthenticationVC = nil; + _session = nil; + _externalUserAgentFlowInProgress = NO; +} + +#pragma mark - SFSafariViewControllerDelegate + +- (void)safariViewControllerDidFinish:(SFSafariViewController *)controller NS_AVAILABLE_IOS(9.0) { + if (controller != _safariVC) { + // Ignore this call if the safari view controller do not match. + return; + } + if (!_externalUserAgentFlowInProgress) { + // Ignore this call if there is no authorization flow in progress. + return; + } + id session = _session; + [self cleanUp]; + NSError *error = [OIDErrorUtilities errorWithCode:OIDErrorCodeUserCanceledAuthorizationFlow + underlyingError:nil + description:@"No external user agent flow in progress."]; + [session failExternalUserAgentFlowWithError:error]; +} + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 +#pragma mark - ASWebAuthenticationPresentationContextProviding + +- (ASPresentationAnchor)presentationAnchorForWebAuthenticationSession:(ASWebAuthenticationSession *)session API_AVAILABLE(ios(13.0)){ + return _presentingViewController.view.window; +} +#endif // __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 + +@end + +NS_ASSUME_NONNULL_END + +#endif // !TARGET_OS_MACCATALYST + +#endif // TARGET_OS_IOS || TARGET_OS_MACCATALYST diff --git a/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOSCustomBrowser.h b/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOSCustomBrowser.h new file mode 100644 index 0000000..2032e8c --- /dev/null +++ b/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOSCustomBrowser.h @@ -0,0 +1,113 @@ +/*! @file OIDExternalUserAgentIOSCustomBrowser.h + @brief AppAuth iOS SDK + @copyright + Copyright 2018 Google LLC + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +#if TARGET_OS_IOS || TARGET_OS_MACCATALYST + +#import + +#import "OIDExternalUserAgent.h" + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief A block that transforms a regular http/https URL into one that will open in an + alternative browser. + @param requestURL the http/https request URL to be transformed. + @return transformed URL. + */ +typedef NSURL *_Nullable (^OIDCustomBrowserURLTransformation)(NSURL *_Nullable requestURL); + +/*! @brief An implementation of the OIDExternalUserAgent protocol for iOS that uses + a custom browser (i.e. not Safari) for external requests. It is suitable for browsers that + offer a custom url scheme that simply replaces the "https" scheme. It is not designed + for browsers that require other modifications to the URL. If the browser is not installed + the user will be prompted to install it. + */ +API_UNAVAILABLE(macCatalyst) +@interface OIDExternalUserAgentIOSCustomBrowser : NSObject + +/*! @brief URL transformation block for the browser. + */ +@property(nonatomic, readonly) OIDCustomBrowserURLTransformation URLTransformation; + +/*! @brief URL Scheme used to test for whether the browser is installed. + */ +@property(nonatomic, readonly, nullable) NSString *canOpenURLScheme; + +/*! @brief URL of the browser's App Store listing. + */ +@property(nonatomic, readonly, nullable) NSURL *appStoreURL; + +/*! @brief An instance of @c OIDExternalUserAgentIOSCustomBrowser for Chrome. + */ ++ (instancetype)CustomBrowserChrome; + +/*! @brief An instance of @c OIDExternalUserAgentIOSCustomBrowser for Firefox. + */ ++ (instancetype)CustomBrowserFirefox; + +/*! @brief An instance of @c OIDExternalUserAgentIOSCustomBrowser for Opera. + */ ++ (instancetype)CustomBrowserOpera; + +/*! @brief An instance of @c OIDExternalUserAgentIOSCustomBrowser for Safari. + */ ++ (instancetype)CustomBrowserSafari; + +/*! @brief Creates a @c OIDCustomBrowserURLTransformation using the scheme substitution method used + iOS browsers like Chrome and Firefox. + */ ++ (OIDCustomBrowserURLTransformation) + URLTransformationSchemeSubstitutionHTTPS:(NSString *)browserSchemeHTTPS + HTTP:(nullable NSString *)browserSchemeHTTP; + +/*! @brief Creates a @c OIDCustomBrowserURLTransformation with the URL prefix method used by + iOS browsers like Firefox. + */ ++ (OIDCustomBrowserURLTransformation) URLTransformationSchemeConcatPrefix:(NSString*)URLprefix; + +/*! @internal + @brief Unavailable. Please use @c initWithURLTransformation:canOpenURLScheme:appStoreURL: + */ +- (nonnull instancetype)init NS_UNAVAILABLE; + +/*! @brief OIDExternalUserAgent for a custom browser. @c presentExternalUserAgentRequest:session method + will return NO if the browser isn't installed. + */ +- (nullable instancetype)initWithURLTransformation:(OIDCustomBrowserURLTransformation)URLTransformation; + +/*! @brief The designated initializer. + @param URLTransformation the transformation block to translate the URL into one that will open + in the desired custom browser. + @param canOpenURLScheme any scheme supported by the browser used to check if the browser is + installed. + @param appStoreURL URL of the browser in the app store. When this and @c canOpenURLScheme + are non-nil, @c presentExternalUserAgentRequest:session will redirect the user to the app store + if the browser is not installed. + */ +- (nullable instancetype)initWithURLTransformation:(OIDCustomBrowserURLTransformation)URLTransformation + canOpenURLScheme:(nullable NSString *)canOpenURLScheme + appStoreURL:(nullable NSURL *)appStoreURL + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END + +#endif // TARGET_OS_IOS || TARGET_OS_MACCATALYST diff --git a/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOSCustomBrowser.m b/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOSCustomBrowser.m new file mode 100644 index 0000000..be5dc82 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOSCustomBrowser.m @@ -0,0 +1,171 @@ +/*! @file OIDExternalUserAgentIOSCustomBrowser.m + @brief AppAuth iOS SDK + @copyright + Copyright 2018 Google LLC + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +#if TARGET_OS_IOS || TARGET_OS_MACCATALYST + +#import "OIDExternalUserAgentIOSCustomBrowser.h" + +#import + +#import "OIDAuthorizationRequest.h" +#import "OIDAuthorizationService.h" +#import "OIDErrorUtilities.h" +#import "OIDURLQueryComponent.h" + +#if !TARGET_OS_MACCATALYST + +NS_ASSUME_NONNULL_BEGIN + +@implementation OIDExternalUserAgentIOSCustomBrowser + ++ (instancetype)CustomBrowserChrome { + // Chrome iOS documentation: https://developer.chrome.com/multidevice/ios/links + OIDCustomBrowserURLTransformation transform = [[self class] URLTransformationSchemeSubstitutionHTTPS:@"googlechromes" HTTP:@"googlechrome"]; + NSURL *appStoreURL = + [NSURL URLWithString:@"https://itunes.apple.com/us/app/chrome/id535886823"]; + return [[[self class] alloc] initWithURLTransformation:transform + canOpenURLScheme:@"googlechromes" + appStoreURL:appStoreURL]; +} + ++ (instancetype)CustomBrowserFirefox { + // Firefox iOS documentation: https://github.com/mozilla-mobile/firefox-ios-open-in-client + OIDCustomBrowserURLTransformation transform = + [[self class] URLTransformationSchemeConcatPrefix:@"firefox://open-url?url="]; + NSURL *appStoreURL = + [NSURL URLWithString:@"https://itunes.apple.com/us/app/firefox-web-browser/id989804926"]; + return [[[self class] alloc] initWithURLTransformation:transform + canOpenURLScheme:@"firefox" + appStoreURL:appStoreURL]; +} + ++ (instancetype)CustomBrowserOpera { + OIDCustomBrowserURLTransformation transform = + [[self class] URLTransformationSchemeSubstitutionHTTPS:@"opera-https" HTTP:@"opera-http"]; + NSURL *appStoreURL = + [NSURL URLWithString:@"https://itunes.apple.com/us/app/opera-mini-web-browser/id363729560"]; + return [[[self class] alloc] initWithURLTransformation:transform + canOpenURLScheme:@"opera-https" + appStoreURL:appStoreURL]; +} + ++ (instancetype)CustomBrowserSafari { + OIDCustomBrowserURLTransformation transformNOP = ^NSURL *(NSURL *requestURL) { + return requestURL; + }; + OIDExternalUserAgentIOSCustomBrowser *transform = + [[[self class] alloc] initWithURLTransformation:transformNOP]; + return transform; +} + ++ (OIDCustomBrowserURLTransformation) + URLTransformationSchemeSubstitutionHTTPS:(NSString *)browserSchemeHTTPS + HTTP:(nullable NSString *)browserSchemeHTTP { + OIDCustomBrowserURLTransformation transform = ^NSURL *(NSURL *requestURL) { + // Replace the URL Scheme with the Chrome equivalent. + NSString *newScheme = nil; + if ([requestURL.scheme isEqualToString:@"https"]) { + newScheme = browserSchemeHTTPS; + } else if ([requestURL.scheme isEqualToString:@"http"]) { + if (!browserSchemeHTTP) { + NSAssert(false, @"No HTTP scheme registered for browser"); + return nil; + } + newScheme = browserSchemeHTTP; + } + + // Replaces the URI scheme with the custom scheme + NSURLComponents *components = [NSURLComponents componentsWithURL:requestURL + resolvingAgainstBaseURL:YES]; + components.scheme = newScheme; + return components.URL; + }; + return transform; +} + ++ (OIDCustomBrowserURLTransformation)URLTransformationSchemeConcatPrefix:(NSString *)URLprefix { + OIDCustomBrowserURLTransformation transform = ^NSURL *(NSURL *requestURL) { + NSString *requestURLString = [requestURL absoluteString]; + NSMutableCharacterSet *allowedParamCharacters = + [OIDURLQueryComponent URLParamValueAllowedCharacters]; + NSString *encodedUrl = [requestURLString stringByAddingPercentEncodingWithAllowedCharacters:allowedParamCharacters]; + NSString *newURL = [NSString stringWithFormat:@"%@%@", URLprefix, encodedUrl]; + return [NSURL URLWithString:newURL]; + }; + return transform; +} + +- (nullable instancetype)initWithURLTransformation: + (OIDCustomBrowserURLTransformation)URLTransformation { + return [self initWithURLTransformation:URLTransformation canOpenURLScheme:nil appStoreURL:nil]; +} + +- (nullable instancetype) + initWithURLTransformation:(OIDCustomBrowserURLTransformation)URLTransformation + canOpenURLScheme:(nullable NSString *)canOpenURLScheme + appStoreURL:(nullable NSURL *)appStoreURL { + self = [super init]; + if (self) { + _URLTransformation = URLTransformation; + _canOpenURLScheme = canOpenURLScheme; + _appStoreURL = appStoreURL; + } + return self; +} + +- (BOOL)presentExternalUserAgentRequest:(nonnull id)request + session:(nonnull id)session { + // If the app store URL is set, checks if the app is installed and if not opens the app store. + if (_appStoreURL && _canOpenURLScheme) { + // Verifies existence of LSApplicationQueriesSchemes Info.plist key. + NSArray __unused* canOpenURLs = + [[NSBundle mainBundle] objectForInfoDictionaryKey:@"LSApplicationQueriesSchemes"]; + NSAssert(canOpenURLs, @"plist missing LSApplicationQueriesSchemes key"); + NSAssert1([canOpenURLs containsObject:_canOpenURLScheme], + @"plist missing LSApplicationQueriesSchemes entry for '%@'", _canOpenURLScheme); + + // Opens AppStore if app isn't installed + NSString *testURLString = [NSString stringWithFormat:@"%@://example.com", _canOpenURLScheme]; + NSURL *testURL = [NSURL URLWithString:testURLString]; + if (![[UIApplication sharedApplication] canOpenURL:testURL]) { + [[UIApplication sharedApplication] openURL:_appStoreURL]; + return NO; + } + } + + // Transforms the request URL and opens it. + NSURL *requestURL = [request externalUserAgentRequestURL]; + requestURL = _URLTransformation(requestURL); + BOOL openedInBrowser = [[UIApplication sharedApplication] openURL:requestURL]; + return openedInBrowser; +} + +- (void)dismissExternalUserAgentAnimated:(BOOL)animated + completion:(nonnull void (^)(void))completion { + completion(); +} + +@end + +NS_ASSUME_NONNULL_END + +#endif // !TARGET_OS_MACCATALYST + +#endif // TARGET_OS_IOS || TARGET_OS_MACCATALYST diff --git a/Pods/AppAuth/Source/AppAuthCore.h b/Pods/AppAuth/Source/AppAuthCore.h new file mode 100644 index 0000000..c30af46 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore.h @@ -0,0 +1,44 @@ +/*! @file AppAuthCore.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDAuthState.h" +#import "OIDAuthStateChangeDelegate.h" +#import "OIDAuthStateErrorDelegate.h" +#import "OIDAuthorizationRequest.h" +#import "OIDAuthorizationResponse.h" +#import "OIDAuthorizationService.h" +#import "OIDError.h" +#import "OIDErrorUtilities.h" +#import "OIDExternalUserAgent.h" +#import "OIDExternalUserAgentRequest.h" +#import "OIDExternalUserAgentSession.h" +#import "OIDGrantTypes.h" +#import "OIDIDToken.h" +#import "OIDRegistrationRequest.h" +#import "OIDRegistrationResponse.h" +#import "OIDResponseTypes.h" +#import "OIDScopes.h" +#import "OIDScopeUtilities.h" +#import "OIDServiceConfiguration.h" +#import "OIDServiceDiscovery.h" +#import "OIDTokenRequest.h" +#import "OIDTokenResponse.h" +#import "OIDTokenUtilities.h" +#import "OIDURLSessionProvider.h" +#import "OIDEndSessionRequest.h" +#import "OIDEndSessionResponse.h" diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDAuthState.h b/Pods/AppAuth/Source/AppAuthCore/OIDAuthState.h new file mode 100644 index 0000000..68697d2 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDAuthState.h @@ -0,0 +1,272 @@ +/*! @file OIDAuthState.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ +#import + +@class OIDAuthorizationRequest; +@class OIDAuthorizationResponse; +@class OIDAuthState; +@class OIDRegistrationResponse; +@class OIDTokenResponse; +@class OIDTokenRequest; +@protocol OIDAuthStateChangeDelegate; +@protocol OIDAuthStateErrorDelegate; +@protocol OIDExternalUserAgent; +@protocol OIDExternalUserAgentSession; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Represents a block used to call an action with a fresh access token. + @param accessToken A valid access token if available. + @param idToken A valid ID token if available. + @param error The error if an error occurred. + */ +typedef void (^OIDAuthStateAction)(NSString *_Nullable accessToken, + NSString *_Nullable idToken, + NSError *_Nullable error); + +/*! @brief The method called when the @c + OIDAuthState.authStateByPresentingAuthorizationRequest:presentingViewController:callback: + method has completed or failed. + @param authState The auth state, if the authorization request succeeded. + @param error The error if an error occurred. + */ +typedef void (^OIDAuthStateAuthorizationCallback)(OIDAuthState *_Nullable authState, + NSError *_Nullable error); + +/*! @brief A convenience class that retains the auth state between @c OIDAuthorizationResponse%s + and @c OIDTokenResponse%s. + */ +@interface OIDAuthState : NSObject + +/*! @brief The most recent refresh token received from the server. + @discussion Rather than using this property directly, you should call + @c OIDAuthState.performActionWithFreshTokens:. + @remarks refresh_token + @see https://tools.ietf.org/html/rfc6749#section-5.1 + */ +@property(nonatomic, readonly, nullable) NSString *refreshToken; + +/*! @brief The scope of the current authorization grant. + @discussion This represents the latest scope returned by the server and may be a subset of the + scope that was initially granted. + @remarks scope + */ +@property(nonatomic, readonly, nullable) NSString *scope; + +/*! @brief The most recent authorization response used to update the authorization state. For the + implicit flow, this will contain the latest access token. + */ +@property(nonatomic, readonly) OIDAuthorizationResponse *lastAuthorizationResponse; + +/*! @brief The most recent token response used to update this authorization state. This will + contain the latest access token. + */ +@property(nonatomic, readonly, nullable) OIDTokenResponse *lastTokenResponse; + +/*! @brief The most recent registration response used to update this authorization state. This will + contain the latest client credentials. + */ +@property(nonatomic, readonly, nullable) OIDRegistrationResponse *lastRegistrationResponse; + +/*! @brief The authorization error that invalidated this @c OIDAuthState. + @discussion The authorization error encountered by @c OIDAuthState or set by the user via + @c OIDAuthState.updateWithAuthorizationError: that invalidated this @c OIDAuthState. + Authorization errors from @c OIDAuthState will always have a domain of + @c ::OIDOAuthAuthorizationErrorDomain or @c ::OIDOAuthTokenErrorDomain. Note: that after + unarchiving the @c OIDAuthState object, the \NSError_userInfo property of this error will + be nil. + */ +@property(nonatomic, readonly, nullable) NSError *authorizationError; + +/*! @brief Returns YES if the authorization state is not known to be invalid. + @discussion Returns YES if no OAuth errors have been received, and the last call resulted in a + successful access token or id token. This does not mean that the access is fresh - just + that it was valid the last time it was used. Note that network and other transient errors + do not invalidate the authorized state. If NO, you should authenticate the user again, + using a fresh authorization request. Invalid @c OIDAuthState objects may still be useful in + that case, to hint at the previously authorized user and streamline the re-authentication + experience. + */ +@property(nonatomic, readonly) BOOL isAuthorized; + +/*! @brief The @c OIDAuthStateChangeDelegate delegate. + @discussion Use the delegate to observe state changes (and update storage) as well as error + states. + */ +@property(nonatomic, weak, nullable) id stateChangeDelegate; + +/*! @brief The @c OIDAuthStateErrorDelegate delegate. + @discussion Use the delegate to observe state changes (and update storage) as well as error + states. + */ +@property(nonatomic, weak, nullable) id errorDelegate; + +/*! @brief Convenience method to create a @c OIDAuthState by presenting an authorization request + and performing the authorization code exchange in the case of code flow requests. For + the hybrid flow, the caller should validate the id_token and c_hash, then perform the token + request (@c OIDAuthorizationService.performTokenRequest:callback:) + and update the OIDAuthState with the results (@c + OIDAuthState.updateWithTokenResponse:error:). + @param authorizationRequest The authorization request to present. + @param externalUserAgent A external user agent that can present an external user-agent request. + @param callback The method called when the request has completed or failed. + @return A @c OIDExternalUserAgentSession instance which will terminate when it + receives a @c OIDExternalUserAgentSession.cancel message, or after processing a + @c OIDExternalUserAgentSession.resumeExternalUserAgentFlowWithURL: message. + */ ++ (id) + authStateByPresentingAuthorizationRequest:(OIDAuthorizationRequest *)authorizationRequest + externalUserAgent:(id)externalUserAgent + callback:(OIDAuthStateAuthorizationCallback)callback; + +/*! @internal + @brief Unavailable. Please use @c initWithAuthorizationResponse:. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief Creates an auth state from an authorization response. + @param authorizationResponse The authorization response. + */ +- (instancetype)initWithAuthorizationResponse:(OIDAuthorizationResponse *)authorizationResponse; + +/*! @brief Creates an auth state from an authorization and token response. + @param authorizationResponse The authorization response. + @param tokenResponse The token response. + */ +- (instancetype)initWithAuthorizationResponse:(OIDAuthorizationResponse *)authorizationResponse + tokenResponse:(nullable OIDTokenResponse *)tokenResponse; + +/*! @brief Creates an auth state from an registration response. + @param registrationResponse The registration response. + */ +- (instancetype)initWithRegistrationResponse:(OIDRegistrationResponse *)registrationResponse; + +/*! @brief Creates an auth state from an authorization, token and registration response. + @param authorizationResponse The authorization response. + @param tokenResponse The token response. + @param registrationResponse The registration response. + */ +- (instancetype)initWithAuthorizationResponse: + (nullable OIDAuthorizationResponse *)authorizationResponse + tokenResponse:(nullable OIDTokenResponse *)tokenResponse + registrationResponse:(nullable OIDRegistrationResponse *)registrationResponse + NS_DESIGNATED_INITIALIZER; + +/*! @brief Updates the authorization state based on a new authorization response. + @param authorizationResponse The new authorization response to update the state with. + @param error Any error encountered when performing the authorization request. Errors in the + domain @c ::OIDOAuthAuthorizationErrorDomain are reflected in the auth state, other errors + are assumed to be transient, and ignored. + @discussion Typically called with the response from an incremental authorization request, + or if using the implicit flow. Will clear the @c #lastTokenResponse property. + */ +- (void)updateWithAuthorizationResponse:(nullable OIDAuthorizationResponse *)authorizationResponse + error:(nullable NSError *)error; + +/*! @brief Updates the authorization state based on a new token response. + @param tokenResponse The new token response to update the state from. + @param error Any error encountered when performing the authorization request. Errors in the + domain @c ::OIDOAuthTokenErrorDomain are reflected in the auth state, other errors + are assumed to be transient, and ignored. + @discussion Typically called with the response from an authorization code exchange, or a token + refresh. + */ +- (void)updateWithTokenResponse:(nullable OIDTokenResponse *)tokenResponse + error:(nullable NSError *)error; + +/*! @brief Updates the authorization state based on a new registration response. + @param registrationResponse The new registration response to update the state with. + @discussion Typically called with the response from a successful client registration + request. Will reset the auth state. + */ +- (void)updateWithRegistrationResponse:(nullable OIDRegistrationResponse *)registrationResponse; + +/*! @brief Updates the authorization state based on an authorization error. + @param authorizationError The authorization error. + @discussion Call this method if you receive an authorization error during an API call to + invalidate the authentication state of this @c OIDAuthState. Don't call with errors + unrelated to authorization, such as transient network errors. + The OIDAuthStateErrorDelegate.authState:didEncounterAuthorizationError: method of + @c #errorDelegate will be called with the error. + You may optionally use the convenience method + OIDErrorUtilities.resourceServerAuthorizationErrorWithCode:errorResponse:underlyingError: + to create \NSError objects for use here. + The latest error received is stored in @c #authorizationError. Note: that after unarchiving + this object, the \NSError_userInfo property of this error will be nil. + */ +- (void)updateWithAuthorizationError:(NSError *)authorizationError; + +/*! @brief Calls the block with a valid access token (refreshing it first, if needed), or if a + refresh was needed and failed, with the error that caused it to fail. + @param action The block to execute with a fresh token. This block will be executed on the main + thread. + */ +- (void)performActionWithFreshTokens:(OIDAuthStateAction)action; + +/*! @brief Calls the block with a valid access token (refreshing it first, if needed), or if a + refresh was needed and failed, with the error that caused it to fail. + @param action The block to execute with a fresh token. This block will be executed on the main + thread. + @param additionalParameters Additional parameters for the token request if token is + refreshed. + */ +- (void)performActionWithFreshTokens:(OIDAuthStateAction)action + additionalRefreshParameters: + (nullable NSDictionary *)additionalParameters; + +/*! @brief Calls the block with a valid access token (refreshing it first, if needed), or if a + refresh was needed and failed, with the error that caused it to fail. + @param action The block to execute with a fresh token. This block will be executed on the main + thread. + @param additionalParameters Additional parameters for the token request if token is + refreshed. + @param dispatchQueue The dispatchQueue on which to dispatch the action block. + */ +- (void)performActionWithFreshTokens:(OIDAuthStateAction)action + additionalRefreshParameters: + (nullable NSDictionary *)additionalParameters + dispatchQueue:(dispatch_queue_t)dispatchQueue; + +/*! @brief Forces a token refresh the next time @c OIDAuthState.performActionWithFreshTokens: is + called, even if the current tokens are considered valid. + */ +- (void)setNeedsTokenRefresh; + +/*! @brief Creates a token request suitable for refreshing an access token. + @return A @c OIDTokenRequest suitable for using a refresh token to obtain a new access token. + @discussion After performing the refresh, call @c OIDAuthState.updateWithTokenResponse:error: + to update the authorization state based on the response. Rather than doing the token refresh + yourself, you should use @c OIDAuthState.performActionWithFreshTokens:. + @see https://tools.ietf.org/html/rfc6749#section-1.5 + */ +- (nullable OIDTokenRequest *)tokenRefreshRequest; + +/*! @brief Creates a token request suitable for refreshing an access token. + @param additionalParameters Additional parameters for the token request. + @return A @c OIDTokenRequest suitable for using a refresh token to obtain a new access token. + @discussion After performing the refresh, call @c OIDAuthState.updateWithTokenResponse:error: + to update the authorization state based on the response. Rather than doing the token refresh + yourself, you should use @c OIDAuthState.performActionWithFreshTokens:. + @see https://tools.ietf.org/html/rfc6749#section-1.5 + */ +- (nullable OIDTokenRequest *)tokenRefreshRequestWithAdditionalParameters: + (nullable NSDictionary *)additionalParameters; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDAuthState.m b/Pods/AppAuth/Source/AppAuthCore/OIDAuthState.m new file mode 100644 index 0000000..fe8a162 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDAuthState.m @@ -0,0 +1,570 @@ +/*! @file OIDAuthState.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDAuthState.h" + +#import "OIDAuthStateChangeDelegate.h" +#import "OIDAuthStateErrorDelegate.h" +#import "OIDAuthorizationRequest.h" +#import "OIDAuthorizationResponse.h" +#import "OIDAuthorizationService.h" +#import "OIDDefines.h" +#import "OIDError.h" +#import "OIDErrorUtilities.h" +#import "OIDRegistrationResponse.h" +#import "OIDTokenRequest.h" +#import "OIDTokenResponse.h" +#import "OIDTokenUtilities.h" + +/*! @brief Key used to encode the @c refreshToken property for @c NSSecureCoding. + */ +static NSString *const kRefreshTokenKey = @"refreshToken"; + +/*! @brief Key used to encode the @c needsTokenRefresh property for @c NSSecureCoding. + */ +static NSString *const kNeedsTokenRefreshKey = @"needsTokenRefresh"; + +/*! @brief Key used to encode the @c scope property for @c NSSecureCoding. + */ +static NSString *const kScopeKey = @"scope"; + +/*! @brief Key used to encode the @c lastAuthorizationResponse property for @c NSSecureCoding. + */ +static NSString *const kLastAuthorizationResponseKey = @"lastAuthorizationResponse"; + +/*! @brief Key used to encode the @c lastTokenResponse property for @c NSSecureCoding. + */ +static NSString *const kLastTokenResponseKey = @"lastTokenResponse"; + +/*! @brief Key used to encode the @c lastOAuthError property for @c NSSecureCoding. + */ +static NSString *const kAuthorizationErrorKey = @"authorizationError"; + +/*! @brief The exception thrown when a developer tries to create a refresh request from an + authorization request with no authorization code. + */ +static NSString *const kRefreshTokenRequestException = + @"Attempted to create a token refresh request from a token response with no refresh token."; + +/*! @brief Number of seconds the access token is refreshed before it actually expires. + */ +static const NSUInteger kExpiryTimeTolerance = 60; + +/*! @brief Object to hold OIDAuthState pending actions. + */ +@interface OIDAuthStatePendingAction : NSObject +@property(nonatomic, readonly, nullable) OIDAuthStateAction action; +@property(nonatomic, readonly, nullable) dispatch_queue_t dispatchQueue; +@end +@implementation OIDAuthStatePendingAction +- (id)initWithAction:(OIDAuthStateAction)action andDispatchQueue:(dispatch_queue_t)dispatchQueue { + self = [super init]; + if (self) { + _action = action; + _dispatchQueue = dispatchQueue; + } + return self; +} +@end + +@interface OIDAuthState () + +/*! @brief The access token generated by the authorization server. + @discussion Rather than using this property directly, you should call + @c OIDAuthState.withFreshTokenPerformAction:. + */ +@property(nonatomic, readonly, nullable) NSString *accessToken; + +/*! @brief The approximate expiration date & time of the access token. + @discussion Rather than using this property directly, you should call + @c OIDAuthState.withFreshTokenPerformAction:. + */ +@property(nonatomic, readonly, nullable) NSDate *accessTokenExpirationDate; + +/*! @brief ID Token value associated with the authenticated session. + @discussion Rather than using this property directly, you should call + OIDAuthState.withFreshTokenPerformAction:. + */ +@property(nonatomic, readonly, nullable) NSString *idToken; + +/*! @brief Private method, called when the internal state changes. + */ +- (void)didChangeState; + +@end + + +@implementation OIDAuthState { + /*! @brief Array of pending actions (use @c _pendingActionsSyncObject to synchronize access). + */ + NSMutableArray *_pendingActions; + + /*! @brief Object for synchronizing access to @c pendingActions. + */ + id _pendingActionsSyncObject; + + /*! @brief If YES, tokens will be refreshed on the next API call regardless of expiry. + */ + BOOL _needsTokenRefresh; +} + +#pragma mark - Convenience initializers + ++ (id) + authStateByPresentingAuthorizationRequest:(OIDAuthorizationRequest *)authorizationRequest + externalUserAgent:(id)externalUserAgent + callback:(OIDAuthStateAuthorizationCallback)callback { + // presents the authorization request + id authFlowSession = [OIDAuthorizationService + presentAuthorizationRequest:authorizationRequest + externalUserAgent:externalUserAgent + callback:^(OIDAuthorizationResponse *_Nullable authorizationResponse, + NSError *_Nullable authorizationError) { + // inspects response and processes further if needed (e.g. authorization + // code exchange) + if (authorizationResponse) { + if ([authorizationRequest.responseType + isEqualToString:OIDResponseTypeCode]) { + // if the request is for the code flow (NB. not hybrid), assumes the + // code is intended for this client, and performs the authorization + // code exchange + OIDTokenRequest *tokenExchangeRequest = + [authorizationResponse tokenExchangeRequest]; + [OIDAuthorizationService performTokenRequest:tokenExchangeRequest + originalAuthorizationResponse:authorizationResponse + callback:^(OIDTokenResponse *_Nullable tokenResponse, + NSError *_Nullable tokenError) { + OIDAuthState *authState; + if (tokenResponse) { + authState = [[OIDAuthState alloc] + initWithAuthorizationResponse: + authorizationResponse + tokenResponse:tokenResponse]; + } + callback(authState, tokenError); + }]; + } else { + // hybrid flow (code id_token). Two possible cases: + // 1. The code is not for this client, ie. will be sent to a + // webservice that performs the id token verification and token + // exchange + // 2. The code is for this client and, for security reasons, the + // application developer must verify the id_token signature and + // c_hash before calling the token endpoint + OIDAuthState *authState = [[OIDAuthState alloc] + initWithAuthorizationResponse:authorizationResponse]; + callback(authState, authorizationError); + } + } else { + callback(nil, authorizationError); + } + }]; + return authFlowSession; +} + +#pragma mark - Initializers + +- (nonnull instancetype)init + OID_UNAVAILABLE_USE_INITIALIZER(@selector(initWithAuthorizationResponse:tokenResponse:)) + +/*! @brief Creates an auth state from an authorization response. + @param authorizationResponse The authorization response. + */ +- (instancetype)initWithAuthorizationResponse:(OIDAuthorizationResponse *)authorizationResponse { + return [self initWithAuthorizationResponse:authorizationResponse tokenResponse:nil]; +} + + +/*! @brief Designated initializer. + @param authorizationResponse The authorization response. + @discussion Creates an auth state from an authorization response and token response. + */ +- (instancetype)initWithAuthorizationResponse:(OIDAuthorizationResponse *)authorizationResponse + tokenResponse:(nullable OIDTokenResponse *)tokenResponse { + return [self initWithAuthorizationResponse:authorizationResponse + tokenResponse:tokenResponse + registrationResponse:nil]; +} + +/*! @brief Creates an auth state from an registration response. + @param registrationResponse The registration response. + */ +- (instancetype)initWithRegistrationResponse:(OIDRegistrationResponse *)registrationResponse { + return [self initWithAuthorizationResponse:nil + tokenResponse:nil + registrationResponse:registrationResponse]; +} + +- (instancetype)initWithAuthorizationResponse: + (nullable OIDAuthorizationResponse *)authorizationResponse + tokenResponse:(nullable OIDTokenResponse *)tokenResponse + registrationResponse:(nullable OIDRegistrationResponse *)registrationResponse { + self = [super init]; + if (self) { + _pendingActionsSyncObject = [[NSObject alloc] init]; + + if (registrationResponse) { + [self updateWithRegistrationResponse:registrationResponse]; + } + + if (authorizationResponse) { + [self updateWithAuthorizationResponse:authorizationResponse error:nil]; + } + + if (tokenResponse) { + [self updateWithTokenResponse:tokenResponse error:nil]; + } + } + return self; +} + +#pragma mark - NSObject overrides + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, isAuthorized: %@, refreshToken: \"%@\", " + "scope: \"%@\", accessToken: \"%@\", " + "accessTokenExpirationDate: %@, idToken: \"%@\", " + "lastAuthorizationResponse: %@, lastTokenResponse: %@, " + "lastRegistrationResponse: %@, authorizationError: %@>", + NSStringFromClass([self class]), + (void *)self, + (self.isAuthorized) ? @"YES" : @"NO", + [OIDTokenUtilities redact:_refreshToken], + _scope, + [OIDTokenUtilities redact:self.accessToken], + self.accessTokenExpirationDate, + [OIDTokenUtilities redact:self.idToken], + _lastAuthorizationResponse, + _lastTokenResponse, + _lastRegistrationResponse, + _authorizationError]; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + _lastAuthorizationResponse = [aDecoder decodeObjectOfClass:[OIDAuthorizationResponse class] + forKey:kLastAuthorizationResponseKey]; + _lastTokenResponse = [aDecoder decodeObjectOfClass:[OIDTokenResponse class] + forKey:kLastTokenResponseKey]; + self = [self initWithAuthorizationResponse:_lastAuthorizationResponse + tokenResponse:_lastTokenResponse]; + if (self) { + _authorizationError = + [aDecoder decodeObjectOfClass:[NSError class] forKey:kAuthorizationErrorKey]; + _scope = [aDecoder decodeObjectOfClass:[NSString class] forKey:kScopeKey]; + _refreshToken = [aDecoder decodeObjectOfClass:[NSString class] forKey:kRefreshTokenKey]; + _needsTokenRefresh = [aDecoder decodeBoolForKey:kNeedsTokenRefreshKey]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_lastAuthorizationResponse forKey:kLastAuthorizationResponseKey]; + [aCoder encodeObject:_lastTokenResponse forKey:kLastTokenResponseKey]; + if (_authorizationError) { + NSError *codingSafeAuthorizationError = [NSError errorWithDomain:_authorizationError.domain + code:_authorizationError.code + userInfo:nil]; + [aCoder encodeObject:codingSafeAuthorizationError forKey:kAuthorizationErrorKey]; + } + [aCoder encodeObject:_scope forKey:kScopeKey]; + [aCoder encodeObject:_refreshToken forKey:kRefreshTokenKey]; + [aCoder encodeBool:_needsTokenRefresh forKey:kNeedsTokenRefreshKey]; +} + +#pragma mark - Private convenience getters + +- (NSString *)accessToken { + if (_authorizationError) { + return nil; + } + return _lastTokenResponse ? _lastTokenResponse.accessToken + : _lastAuthorizationResponse.accessToken; +} + +- (NSString *)tokenType { + if (_authorizationError) { + return nil; + } + return _lastTokenResponse ? _lastTokenResponse.tokenType + : _lastAuthorizationResponse.tokenType; +} + +- (NSDate *)accessTokenExpirationDate { + if (_authorizationError) { + return nil; + } + return _lastTokenResponse ? _lastTokenResponse.accessTokenExpirationDate + : _lastAuthorizationResponse.accessTokenExpirationDate; +} + +- (NSString *)idToken { + if (_authorizationError) { + return nil; + } + return _lastTokenResponse ? _lastTokenResponse.idToken + : _lastAuthorizationResponse.idToken; +} + +#pragma mark - Getters + +- (BOOL)isAuthorized { + return !self.authorizationError && (self.accessToken || self.idToken || self.refreshToken); +} + +#pragma mark - Updating the state + +- (void)updateWithRegistrationResponse:(OIDRegistrationResponse *)registrationResponse { + _lastRegistrationResponse = registrationResponse; + _refreshToken = nil; + _scope = nil; + _lastAuthorizationResponse = nil; + _lastTokenResponse = nil; + _authorizationError = nil; + [self didChangeState]; +} + +- (void)updateWithAuthorizationResponse:(nullable OIDAuthorizationResponse *)authorizationResponse + error:(nullable NSError *)error { + // If the error is an OAuth authorization error, updates the state. Other errors are ignored. + if (error.domain == OIDOAuthAuthorizationErrorDomain) { + [self updateWithAuthorizationError:error]; + return; + } + if (!authorizationResponse) { + return; + } + + _lastAuthorizationResponse = authorizationResponse; + + // clears the last token response and refresh token as these now relate to an old authorization + // that is no longer relevant + _lastTokenResponse = nil; + _refreshToken = nil; + _authorizationError = nil; + + // if the response's scope is nil, it means that it equals that of the request + // see: https://tools.ietf.org/html/rfc6749#section-5.1 + _scope = (authorizationResponse.scope) ? authorizationResponse.scope + : authorizationResponse.request.scope; + + [self didChangeState]; +} + +- (void)updateWithTokenResponse:(nullable OIDTokenResponse *)tokenResponse + error:(nullable NSError *)error { + if (_authorizationError) { + // Calling updateWithTokenResponse while in an error state probably means the developer obtained + // a new token and did the exchange without also calling updateWithAuthorizationResponse. + // Attempts to handle gracefully, but warns the developer that this is unexpected. + NSLog(@"OIDAuthState:updateWithTokenResponse should not be called in an error state [%@] call" + "updateWithAuthorizationResponse with the result of the fresh authorization response" + "first", + _authorizationError); + + _authorizationError = nil; + } + + // If the error is an OAuth authorization error, updates the state. Other errors are ignored. + if (error.domain == OIDOAuthTokenErrorDomain) { + [self updateWithAuthorizationError:error]; + return; + } + if (!tokenResponse) { + return; + } + + _lastTokenResponse = tokenResponse; + + // updates the scope and refresh token if they are present on the TokenResponse. + // according to the spec, these may be changed by the server, including when refreshing the + // access token. See: https://tools.ietf.org/html/rfc6749#section-5.1 and + // https://tools.ietf.org/html/rfc6749#section-6 + if (tokenResponse.scope) { + _scope = tokenResponse.scope; + } + if (tokenResponse.refreshToken) { + _refreshToken = tokenResponse.refreshToken; + } + + [self didChangeState]; +} + +- (void)updateWithAuthorizationError:(NSError *)oauthError { + _authorizationError = oauthError; + + [self didChangeState]; + + [_errorDelegate authState:self didEncounterAuthorizationError:oauthError]; +} + +#pragma mark - OAuth Requests + +- (OIDTokenRequest *)tokenRefreshRequest { + return [self tokenRefreshRequestWithAdditionalParameters:nil]; +} + +- (OIDTokenRequest *)tokenRefreshRequestWithAdditionalParameters: + (NSDictionary *)additionalParameters { + + // TODO: Add unit test to confirm exception is thrown when expected + + if (!_refreshToken) { + [OIDErrorUtilities raiseException:kRefreshTokenRequestException]; + } + return [[OIDTokenRequest alloc] + initWithConfiguration:_lastAuthorizationResponse.request.configuration + grantType:OIDGrantTypeRefreshToken + authorizationCode:nil + redirectURL:nil + clientID:_lastAuthorizationResponse.request.clientID + clientSecret:_lastAuthorizationResponse.request.clientSecret + scope:nil + refreshToken:_refreshToken + codeVerifier:nil + additionalParameters:additionalParameters]; +} + +#pragma mark - Stateful Actions + +- (void)didChangeState { + [_stateChangeDelegate didChangeState:self]; +} + +- (void)setNeedsTokenRefresh { + _needsTokenRefresh = YES; +} + +- (void)performActionWithFreshTokens:(OIDAuthStateAction)action { + [self performActionWithFreshTokens:action additionalRefreshParameters:nil]; +} + +- (void)performActionWithFreshTokens:(OIDAuthStateAction)action + additionalRefreshParameters: + (nullable NSDictionary *)additionalParameters { + [self performActionWithFreshTokens:action + additionalRefreshParameters:additionalParameters + dispatchQueue:dispatch_get_main_queue()]; +} + +- (void)performActionWithFreshTokens:(OIDAuthStateAction)action + additionalRefreshParameters: + (nullable NSDictionary *)additionalParameters + dispatchQueue:(dispatch_queue_t)dispatchQueue { + + if ([self isTokenFresh]) { + // access token is valid within tolerance levels, perform action + dispatch_async(dispatchQueue, ^{ + action(self.accessToken, self.idToken, nil); + }); + return; + } + + if (!_refreshToken) { + // no refresh token available and token has expired + NSError *tokenRefreshError = [ + OIDErrorUtilities errorWithCode:OIDErrorCodeTokenRefreshError + underlyingError:nil + description:@"Unable to refresh expired token without a refresh token."]; + dispatch_async(dispatchQueue, ^{ + action(nil, nil, tokenRefreshError); + }); + return; + } + + // access token is expired, first refresh the token, then perform action + NSAssert(_pendingActionsSyncObject, @"_pendingActionsSyncObject cannot be nil", @""); + OIDAuthStatePendingAction* pendingAction = + [[OIDAuthStatePendingAction alloc] initWithAction:action andDispatchQueue:dispatchQueue]; + @synchronized(_pendingActionsSyncObject) { + // if a token is already in the process of being refreshed, adds to pending actions + if (_pendingActions) { + [_pendingActions addObject:pendingAction]; + return; + } + + // creates a list of pending actions, starting with this one + _pendingActions = [NSMutableArray arrayWithObject:pendingAction]; + } + + // refresh the tokens + OIDTokenRequest *tokenRefreshRequest = + [self tokenRefreshRequestWithAdditionalParameters:additionalParameters]; + [OIDAuthorizationService performTokenRequest:tokenRefreshRequest + originalAuthorizationResponse:_lastAuthorizationResponse + callback:^(OIDTokenResponse *_Nullable response, + NSError *_Nullable error) { + // update OIDAuthState based on response + if (response) { + self->_needsTokenRefresh = NO; + [self updateWithTokenResponse:response error:nil]; + } else { + if (error.domain == OIDOAuthTokenErrorDomain) { + self->_needsTokenRefresh = NO; + [self updateWithAuthorizationError:error]; + } else { + if ([self->_errorDelegate respondsToSelector: + @selector(authState:didEncounterTransientError:)]) { + [self->_errorDelegate authState:self didEncounterTransientError:error]; + } + } + } + + // nil the pending queue and process everything that was queued up + NSArray *actionsToProcess; + @synchronized(self->_pendingActionsSyncObject) { + actionsToProcess = self->_pendingActions; + self->_pendingActions = nil; + } + for (OIDAuthStatePendingAction* actionToProcess in actionsToProcess) { + dispatch_async(actionToProcess.dispatchQueue, ^{ + actionToProcess.action(self.accessToken, self.idToken, error); + }); + } + }]; +} + +#pragma mark - + +/*! @fn isTokenFresh + @brief Determines whether a token refresh request must be made to refresh the tokens. + */ +- (BOOL)isTokenFresh { + if (_needsTokenRefresh) { + // forced refresh + return NO; + } + + if (!self.accessTokenExpirationDate) { + // if there is no expiration time but we have an access token, it is assumed to never expire + return !!self.accessToken; + } + + // has the token expired? + BOOL tokenFresh = [self.accessTokenExpirationDate timeIntervalSinceNow] > kExpiryTimeTolerance; + return tokenFresh; +} + +@end + + diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDAuthStateChangeDelegate.h b/Pods/AppAuth/Source/AppAuthCore/OIDAuthStateChangeDelegate.h new file mode 100644 index 0000000..2570df1 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDAuthStateChangeDelegate.h @@ -0,0 +1,39 @@ +/*! @file OIDAuthStateChangeDelegate.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@class OIDAuthState; + +NS_ASSUME_NONNULL_BEGIN + +/*! @protocol OIDAuthStateChangeDelegate + @brief Delegate of the OIDAuthState used to monitor various changes in state. + */ +@protocol OIDAuthStateChangeDelegate + +/*! @brief Called when the authorization state changes and any backing storage needs to be updated. + @param state The @c OIDAuthState that changed. + @discussion If you are storing the authorization state, you should update the storage when the + state changes. + */ +- (void)didChangeState:(OIDAuthState *)state; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDAuthStateErrorDelegate.h b/Pods/AppAuth/Source/AppAuthCore/OIDAuthStateErrorDelegate.h new file mode 100644 index 0000000..91a9b1c --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDAuthStateErrorDelegate.h @@ -0,0 +1,62 @@ +/*! @file OIDAuthStateErrorDelegate.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@class OIDAuthState; + +NS_ASSUME_NONNULL_BEGIN + +/*! @protocol OIDAuthStateErrorDelegate + @brief Delegate of the OIDAuthState used to monitor errors. + */ +@protocol OIDAuthStateErrorDelegate + +/*! @brief Called when an authentication occurs, which indicates the auth session is invalid. + @param state The @c OIDAuthState on which the error occurred. + @param error The authorization error. + @discussion This is a hard error (not a transient network issue) that indicates a problem with + the authorization. You should stop using the @c OIDAuthState when such an error is + encountered. If the \NSError_code is @c ::OIDErrorCodeOAuthInvalidGrant then + the session may be recoverable with user interaction (i.e. re-authentication). In all cases + you should consider the user unauthorized, and remove locally cached resources that require + that authorization. @c OIDAuthState will call this method automatically if it encounters + an OAuth error (that is, an HTTP 400 response with a valid OAuth error response) during + authorization or token refresh (such as performed automatically when using + @c OIDAuthState.performActionWithFreshTokens:). You can signal authorization errors with + @c OIDAuthState.updateWithAuthorizationError:. + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ +- (void)authState:(OIDAuthState *)state didEncounterAuthorizationError:(NSError *)error; + +@optional + +/*! @brief Called when a network or other transient error occurs. + @param state The @c OIDAuthState on which the error occurred. + @param error The transient error. + @discussion This is a soft error, typically network related. The @c OIDAuthState is likely + still valid, and should not be discarded. Retry the request using an incremental backoff + strategy. This is only called when using the @c OIDAuthState convenience methods such as + @c OIDAuthState.performActionWithFreshTokens:. If you are refreshing the tokens yourself + outside of @c OIDAuthState class, it will never be called. + */ +- (void)authState:(OIDAuthState *)state didEncounterTransientError:(NSError *)error; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationRequest.h b/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationRequest.h new file mode 100644 index 0000000..594f01d --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationRequest.h @@ -0,0 +1,250 @@ +/*! @file OIDAuthorizationRequest.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +// These files only declare string constants useful for constructing a @c OIDAuthorizationRequest, +// so they are imported here for convenience. +#import "OIDExternalUserAgentRequest.h" +#import "OIDResponseTypes.h" +#import "OIDScopes.h" + +@class OIDServiceConfiguration; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief The @c code_challenge_method value for the S256 code challenge. + @see https://tools.ietf.org/html/rfc7636#section-4.3 + */ +extern NSString *const OIDOAuthorizationRequestCodeChallengeMethodS256; + + +/*! @brief Represents an authorization request. + @see https://tools.ietf.org/html/rfc6749#section-4 + @see https://tools.ietf.org/html/rfc6749#section-4.1.1 + */ +@interface OIDAuthorizationRequest : + NSObject + +/*! @brief The service's configuration. + @remarks This configuration specifies how to connect to a particular OAuth provider. + Configurations may be created manually, or via an OpenID Connect Discovery Document. + */ +@property(nonatomic, readonly) OIDServiceConfiguration *configuration; + +/*! @brief The expected response type. + @remarks response_type + @discussion Generally 'code' if pure OAuth, otherwise a space-delimited list of of response + types including 'code', 'token', and 'id_token' for OpenID Connect. + @see https://tools.ietf.org/html/rfc6749#section-3.1.1 + @see http://openid.net/specs/openid-connect-core-1_0.html#rfc.section.3 + */ +@property(nonatomic, readonly) NSString *responseType; + +/*! @brief The client identifier. + @remarks client_id + @see https://tools.ietf.org/html/rfc6749#section-2.2 + */ +@property(nonatomic, readonly) NSString *clientID; + +/*! @brief The client secret. + @remarks client_secret + @discussion The client secret is used to prove that identity of the client when exchaning an + authorization code for an access token. + The client secret is not passed in the authorizationRequestURL. It is only used when + exchanging the authorization code for an access token. + @see https://tools.ietf.org/html/rfc6749#section-2.3.1 + */ +@property(nonatomic, readonly, nullable) NSString *clientSecret; + +/*! @brief The value of the scope parameter is expressed as a list of space-delimited, + case-sensitive strings. + @remarks scope + @see https://tools.ietf.org/html/rfc6749#section-3.3 + */ +@property(nonatomic, readonly, nullable) NSString *scope; + +/*! @brief The client's redirect URI. + @remarks redirect_uri + @see https://tools.ietf.org/html/rfc6749#section-3.1.2 + */ +@property(nonatomic, readonly, nullable) NSURL *redirectURL; + +/*! @brief An opaque value used by the client to maintain state between the request and callback. + @remarks state + @discussion If this value is not explicitly set, this library will automatically add state and + perform appropriate validation of the state in the authorization response. It is recommended + that the default implementation of this parameter be used wherever possible. Typically used + to prevent CSRF attacks, as recommended in RFC6819 Section 5.3.5. + @see https://tools.ietf.org/html/rfc6749#section-4.1.1 + @see https://tools.ietf.org/html/rfc6819#section-5.3.5 + */ +@property(nonatomic, readonly, nullable) NSString *state; + +/*! @brief String value used to associate a Client session with an ID Token, and to mitigate replay + attacks. The value is passed through unmodified from the Authentication Request to the ID + Token. Sufficient entropy MUST be present in the nonce values used to prevent attackers from + guessing values. + @remarks nonce + @discussion If this value is not explicitly set, this library will automatically add nonce and + perform appropriate validation of the nonce in the ID Token. + @see https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest + */ +@property(nonatomic, readonly, nullable) NSString *nonce; + +/*! @brief The PKCE code verifier. + @remarks code_verifier + @discussion The code verifier itself is not included in the authorization request that is sent + on the wire, but needs to be in the token exchange request. + @c OIDAuthorizationResponse.tokenExchangeRequest will create a @c OIDTokenRequest that + includes this parameter automatically. + @see https://tools.ietf.org/html/rfc7636#section-4.1 + */ +@property(nonatomic, readonly, nullable) NSString *codeVerifier; + +/*! @brief The PKCE code challenge, derived from #codeVerifier. + @remarks code_challenge + @see https://tools.ietf.org/html/rfc7636#section-4.2 + */ +@property(nonatomic, readonly, nullable) NSString *codeChallenge; + +/*! @brief The method used to compute the @c #codeChallenge + @remarks code_challenge_method + @see https://tools.ietf.org/html/rfc7636#section-4.3 + */ +@property(nonatomic, readonly, nullable) NSString *codeChallengeMethod; + +/*! @brief The client's additional authorization parameters. + @see https://tools.ietf.org/html/rfc6749#section-3.1 + */ +@property(nonatomic, readonly, nullable) NSDictionary *additionalParameters; + +/*! @internal + @brief Unavailable. Please use + @c initWithConfiguration:clientId:scopes:redirectURL:responseType:additionalParameters:. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief Creates an authorization request with opinionated defaults (a secure @c state, and + PKCE with S256 as the @c code_challenge_method). + @param configuration The service's configuration. + @param clientID The client identifier. + @param scopes An array of scopes to combine into a single scope string per the OAuth2 spec. + @param redirectURL The client's redirect URI. + @param responseType The expected response type. + @param additionalParameters The client's additional authorization parameters. + @remarks This convenience initializer generates a state parameter and PKCE challenges + automatically. + */ +- (instancetype) + initWithConfiguration:(OIDServiceConfiguration *)configuration + clientId:(NSString *)clientID + scopes:(nullable NSArray *)scopes + redirectURL:(NSURL *)redirectURL + responseType:(NSString *)responseType + additionalParameters:(nullable NSDictionary *)additionalParameters; + +/*! @brief Creates an authorization request with opinionated defaults (a secure @c state, @c nonce, + and PKCE with S256 as the @c code_challenge_method). + @param configuration The service's configuration. + @param clientID The client identifier. + @param clientSecret The client secret. + @param scopes An array of scopes to combine into a single scope string per the OAuth2 spec. + @param redirectURL The client's redirect URI. + @param responseType The expected response type. + @param additionalParameters The client's additional authorization parameters. + @remarks This convenience initializer generates a state parameter and PKCE challenges + automatically. + */ +- (instancetype) + initWithConfiguration:(OIDServiceConfiguration *)configuration + clientId:(NSString *)clientID + clientSecret:(nullable NSString *)clientSecret + scopes:(nullable NSArray *)scopes + redirectURL:(NSURL *)redirectURL + responseType:(NSString *)responseType + additionalParameters:(nullable NSDictionary *)additionalParameters; + +/*! @brief Designated initializer. + @param configuration The service's configuration. + @param clientID The client identifier. + @param scope A scope string per the OAuth2 spec (a space-delimited set of scopes). + @param redirectURL The client's redirect URI. + @param responseType The expected response type. + @param state An opaque value used by the client to maintain state between the request and + callback. + @param nonce String value used to associate a Client session with an ID Token. Can be set to nil + if not using OpenID Connect, although pure OAuth servers should ignore params they don't + understand anyway. + @param codeVerifier The PKCE code verifier. See @c OIDAuthorizationRequest.generateCodeVerifier. + @param codeChallenge The PKCE code challenge, calculated from the code verifier such as with + @c OIDAuthorizationRequest.codeChallengeS256ForVerifier:. + @param codeChallengeMethod The PKCE code challenge method. + ::OIDOAuthorizationRequestCodeChallengeMethodS256 when + @c OIDAuthorizationRequest.codeChallengeS256ForVerifier: is used to create the code + challenge. + @param additionalParameters The client's additional authorization parameters. + */ +- (instancetype) + initWithConfiguration:(OIDServiceConfiguration *)configuration + clientId:(NSString *)clientID + clientSecret:(nullable NSString *)clientSecret + scope:(nullable NSString *)scope + redirectURL:(nullable NSURL *)redirectURL + responseType:(NSString *)responseType + state:(nullable NSString *)state + nonce:(nullable NSString *)nonce + codeVerifier:(nullable NSString *)codeVerifier + codeChallenge:(nullable NSString *)codeChallenge + codeChallengeMethod:(nullable NSString *)codeChallengeMethod + additionalParameters:(nullable NSDictionary *)additionalParameters + NS_DESIGNATED_INITIALIZER; + +/*! @brief Constructs the request URI by adding the request parameters to the query component of the + authorization endpoint URI using the "application/x-www-form-urlencoded" format. + @return A URL representing the authorization request. + @see https://tools.ietf.org/html/rfc6749#section-4.1.1 + */ +- (NSURL *)authorizationRequestURL; + +/*! @brief Generates an OAuth state param using a random source. + @return The generated state. + @see https://tools.ietf.org/html/rfc6819#section-5.3.5 + */ ++ (nullable NSString *)generateState; + +/*! @brief Constructs a PKCE-compliant code verifier. + @return The generated code verifier. + @see https://tools.ietf.org/html/rfc7636#section-4.1 + */ ++ (nullable NSString *)generateCodeVerifier; + +/*! @brief Creates a PKCE S256 codeChallenge from the codeVerifier. + @param codeVerifier The code verifier from which the code challenge will be derived. + @return The generated code challenge. + @details Generate a secure code verifier to pass into this method with + @c OIDAuthorizationRequest.generateCodeVerifier. The matching @c #codeChallengeMethod for + @c #codeChallenge%s created by this method is + ::OIDOAuthorizationRequestCodeChallengeMethodS256. + @see https://tools.ietf.org/html/rfc7636#section-4.1 + */ ++ (nullable NSString *)codeChallengeS256ForVerifier:(nullable NSString *)codeVerifier; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationRequest.m b/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationRequest.m new file mode 100644 index 0000000..ccfacda --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationRequest.m @@ -0,0 +1,351 @@ +/*! @file OIDAuthorizationRequest.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDAuthorizationRequest.h" + +#import "OIDDefines.h" +#import "OIDScopeUtilities.h" +#import "OIDServiceConfiguration.h" +#import "OIDTokenUtilities.h" +#import "OIDURLQueryComponent.h" + +/*! @brief The key for the @c configuration property for @c NSSecureCoding + */ +static NSString *const kConfigurationKey = @"configuration"; + +/*! @brief Key used to encode the @c responseType property for @c NSSecureCoding, and on the URL + request. + */ +static NSString *const kResponseTypeKey = @"response_type"; + +/*! @brief Key used to encode the @c clientID property for @c NSSecureCoding, and on the URL + request. + */ +static NSString *const kClientIDKey = @"client_id"; + +/*! @brief Key used to encode the @c clientSecret property for @c NSSecureCoding. + */ +static NSString *const kClientSecretKey = @"client_secret"; + +/*! @brief Key used to encode the @c scope property for @c NSSecureCoding, and on the URL request. + */ +static NSString *const kScopeKey = @"scope"; + +/*! @brief Key used to encode the @c redirectURL property for @c NSSecureCoding, and on the URL + request. + */ +static NSString *const kRedirectURLKey = @"redirect_uri"; + +/*! @brief Key used to encode the @c state property for @c NSSecureCoding, and on the URL request. + */ +static NSString *const kStateKey = @"state"; + +/*! @brief Key used to encode the @c nonce property for @c NSSecureCoding, and on the URL request. + */ +static NSString *const kNonceKey = @"nonce"; + +/*! @brief Key used to encode the @c codeVerifier property for @c NSSecureCoding. + */ +static NSString *const kCodeVerifierKey = @"code_verifier"; + +/*! @brief Key used to send the @c codeChallenge on the URL request. + */ +static NSString *const kCodeChallengeKey = @"code_challenge"; + +/*! @brief Key used to send the @c codeChallengeMethod on the URL request. + */ +static NSString *const kCodeChallengeMethodKey = @"code_challenge_method"; + +/*! @brief Key used to encode the @c additionalParameters property for + @c NSSecureCoding + */ +static NSString *const kAdditionalParametersKey = @"additionalParameters"; + +/*! @brief Number of random bytes generated for the @ state. + */ +static NSUInteger const kStateSizeBytes = 32; + +/*! @brief Number of random bytes generated for the @ codeVerifier. + */ +static NSUInteger const kCodeVerifierBytes = 32; + +/*! @brief Assertion text for unsupported response types. + */ +static NSString *const OIDOAuthUnsupportedResponseTypeMessage = + @"The response_type \"%@\" isn't supported. AppAuth only supports the \"code\" or \"code id_token\" response_type."; + +/*! @brief Code challenge request method. + */ +NSString *const OIDOAuthorizationRequestCodeChallengeMethodS256 = @"S256"; + +@implementation OIDAuthorizationRequest + +- (instancetype)init + OID_UNAVAILABLE_USE_INITIALIZER( + @selector(initWithConfiguration: + clientId: + scopes: + redirectURL: + responseType: + additionalParameters:) + ) + +/*! @brief Check if the response type is one AppAuth supports + @remarks AppAuth only supports the `code` and `code id_token` response types. + @see https://github.com/openid/AppAuth-iOS/issues/98 + @see https://github.com/openid/AppAuth-iOS/issues/292 + */ ++ (BOOL)isSupportedResponseType:(NSString *)responseType +{ + NSString *codeIdToken = [@[OIDResponseTypeCode, OIDResponseTypeIDToken] + componentsJoinedByString:@" "]; + NSString *idTokenCode = [@[OIDResponseTypeIDToken, OIDResponseTypeCode] + componentsJoinedByString:@" "]; + + return [responseType isEqualToString:OIDResponseTypeCode] + || [responseType isEqualToString:codeIdToken] + || [responseType isEqualToString:idTokenCode]; +} + +- (instancetype)initWithConfiguration:(OIDServiceConfiguration *)configuration + clientId:(NSString *)clientID + clientSecret:(nullable NSString *)clientSecret + scope:(nullable NSString *)scope + redirectURL:(NSURL *)redirectURL + responseType:(NSString *)responseType + state:(nullable NSString *)state + nonce:(nullable NSString *)nonce + codeVerifier:(nullable NSString *)codeVerifier + codeChallenge:(nullable NSString *)codeChallenge + codeChallengeMethod:(nullable NSString *)codeChallengeMethod + additionalParameters:(nullable NSDictionary *)additionalParameters +{ + self = [super init]; + if (self) { + _configuration = [configuration copy]; + _clientID = [clientID copy]; + _clientSecret = [clientSecret copy]; + _scope = [scope copy]; + _redirectURL = [redirectURL copy]; + _responseType = [responseType copy]; + if (![[self class] isSupportedResponseType:_responseType]) { + NSAssert(NO, OIDOAuthUnsupportedResponseTypeMessage, _responseType); + return nil; + } + _state = [state copy]; + _nonce = [nonce copy]; + _codeVerifier = [codeVerifier copy]; + _codeChallenge = [codeChallenge copy]; + _codeChallengeMethod = [codeChallengeMethod copy]; + + _additionalParameters = + [[NSDictionary alloc] initWithDictionary:additionalParameters copyItems:YES]; + } + return self; +} + +- (instancetype) + initWithConfiguration:(OIDServiceConfiguration *)configuration + clientId:(NSString *)clientID + clientSecret:(NSString *)clientSecret + scopes:(nullable NSArray *)scopes + redirectURL:(NSURL *)redirectURL + responseType:(NSString *)responseType + additionalParameters:(nullable NSDictionary *)additionalParameters { + + // generates PKCE code verifier and challenge + NSString *codeVerifier = [[self class] generateCodeVerifier]; + NSString *codeChallenge = [[self class] codeChallengeS256ForVerifier:codeVerifier]; + + return [self initWithConfiguration:configuration + clientId:clientID + clientSecret:clientSecret + scope:[OIDScopeUtilities scopesWithArray:scopes] + redirectURL:redirectURL + responseType:responseType + state:[[self class] generateState] + nonce:[[self class] generateState] + codeVerifier:codeVerifier + codeChallenge:codeChallenge + codeChallengeMethod:OIDOAuthorizationRequestCodeChallengeMethodS256 + additionalParameters:additionalParameters]; +} + +- (instancetype) + initWithConfiguration:(OIDServiceConfiguration *)configuration + clientId:(NSString *)clientID + scopes:(nullable NSArray *)scopes + redirectURL:(NSURL *)redirectURL + responseType:(NSString *)responseType + additionalParameters:(nullable NSDictionary *)additionalParameters { + return [self initWithConfiguration:configuration + clientId:clientID + clientSecret:nil + scopes:scopes + redirectURL:redirectURL + responseType:responseType + additionalParameters:additionalParameters]; +} + +#pragma mark - NSCopying + +- (instancetype)copyWithZone:(nullable NSZone *)zone { + // The documentation for NSCopying specifically advises us to return a reference to the original + // instance in the case where instances are immutable (as ours is): + // "Implement NSCopying by retaining the original instead of creating a new copy when the class + // and its contents are immutable." + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + OIDServiceConfiguration *configuration = + [aDecoder decodeObjectOfClass:[OIDServiceConfiguration class] + forKey:kConfigurationKey]; + NSString *responseType = [aDecoder decodeObjectOfClass:[NSString class] forKey:kResponseTypeKey]; + NSString *clientID = [aDecoder decodeObjectOfClass:[NSString class] forKey:kClientIDKey]; + NSString *clientSecret = [aDecoder decodeObjectOfClass:[NSString class] forKey:kClientSecretKey]; + NSString *scope = [aDecoder decodeObjectOfClass:[NSString class] forKey:kScopeKey]; + NSURL *redirectURL = [aDecoder decodeObjectOfClass:[NSURL class] forKey:kRedirectURLKey]; + NSString *state = [aDecoder decodeObjectOfClass:[NSString class] forKey:kStateKey]; + NSString *nonce = [aDecoder decodeObjectOfClass:[NSString class] forKey:kNonceKey]; + NSString *codeVerifier = [aDecoder decodeObjectOfClass:[NSString class] forKey:kCodeVerifierKey]; + NSString *codeChallenge = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kCodeChallengeKey]; + NSString *codeChallengeMethod = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kCodeChallengeMethodKey]; + NSSet *additionalParameterCodingClasses = [NSSet setWithArray:@[ + [NSDictionary class], + [NSString class] + ]]; + NSDictionary *additionalParameters = + [aDecoder decodeObjectOfClasses:additionalParameterCodingClasses + forKey:kAdditionalParametersKey]; + + self = [self initWithConfiguration:configuration + clientId:clientID + clientSecret:clientSecret + scope:scope + redirectURL:redirectURL + responseType:responseType + state:state + nonce:nonce + codeVerifier:codeVerifier + codeChallenge:codeChallenge + codeChallengeMethod:codeChallengeMethod + additionalParameters:additionalParameters]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_configuration forKey:kConfigurationKey]; + [aCoder encodeObject:_responseType forKey:kResponseTypeKey]; + [aCoder encodeObject:_clientID forKey:kClientIDKey]; + [aCoder encodeObject:_clientSecret forKey:kClientSecretKey]; + [aCoder encodeObject:_scope forKey:kScopeKey]; + [aCoder encodeObject:_redirectURL forKey:kRedirectURLKey]; + [aCoder encodeObject:_state forKey:kStateKey]; + [aCoder encodeObject:_nonce forKey:kNonceKey]; + [aCoder encodeObject:_codeVerifier forKey:kCodeVerifierKey]; + [aCoder encodeObject:_codeChallenge forKey:kCodeChallengeKey]; + [aCoder encodeObject:_codeChallengeMethod forKey:kCodeChallengeMethodKey]; + [aCoder encodeObject:_additionalParameters forKey:kAdditionalParametersKey]; +} + +#pragma mark - NSObject overrides + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, request: %@>", + NSStringFromClass([self class]), + (void *)self, + self.authorizationRequestURL]; +} + +#pragma mark - State and PKCE verifier/challenge generation Methods + ++ (nullable NSString *)generateCodeVerifier { + return [OIDTokenUtilities randomURLSafeStringWithSize:kCodeVerifierBytes]; +} + ++ (nullable NSString *)generateState { + return [OIDTokenUtilities randomURLSafeStringWithSize:kStateSizeBytes]; +} + ++ (nullable NSString *)codeChallengeS256ForVerifier:(NSString *)codeVerifier { + if (!codeVerifier) { + return nil; + } + // generates the code_challenge per spec https://tools.ietf.org/html/rfc7636#section-4.2 + // code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier))) + // NB. the ASCII conversion on the code_verifier entropy was done at time of generation. + NSData *sha256Verifier = [OIDTokenUtilities sha256:codeVerifier]; + return [OIDTokenUtilities encodeBase64urlNoPadding:sha256Verifier]; +} + +#pragma mark - + +- (NSURL *)authorizationRequestURL { + OIDURLQueryComponent *query = [[OIDURLQueryComponent alloc] init]; + + // Required parameters. + [query addParameter:kResponseTypeKey value:_responseType]; + [query addParameter:kClientIDKey value:_clientID]; + + // Add any additional parameters the client has specified. + [query addParameters:_additionalParameters]; + + // Add optional parameters, as applicable. + if (_redirectURL) { + [query addParameter:kRedirectURLKey value:_redirectURL.absoluteString]; + } + if (_scope) { + [query addParameter:kScopeKey value:_scope]; + } + if (_state) { + [query addParameter:kStateKey value:_state]; + } + if (_nonce) { + [query addParameter:kNonceKey value:_nonce]; + } + if (_codeChallenge) { + [query addParameter:kCodeChallengeKey value:_codeChallenge]; + } + if (_codeChallengeMethod) { + [query addParameter:kCodeChallengeMethodKey value:_codeChallengeMethod]; + } + + // Construct the URL: + return [query URLByReplacingQueryInURL:_configuration.authorizationEndpoint]; +} + +#pragma mark - OIDExternalUserAgentRequest + +- (NSURL *)externalUserAgentRequestURL { + return [self authorizationRequestURL]; +} + +- (NSString *)redirectScheme { + return [[self redirectURL] scheme]; +} + +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationResponse.h b/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationResponse.h new file mode 100644 index 0000000..e7552fe --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationResponse.h @@ -0,0 +1,128 @@ +/*! @file OIDAuthorizationResponse.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@class OIDAuthorizationRequest; +@class OIDTokenRequest; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Represents the response to an authorization request. + @see https://tools.ietf.org/html/rfc6749#section-4.1.2 + @see https://tools.ietf.org/html/rfc6749#section-5.1 + @see http://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthResponse + */ +@interface OIDAuthorizationResponse : NSObject + +/*! @brief The request which was serviced. + */ +@property(nonatomic, readonly) OIDAuthorizationRequest *request; + +/*! @brief The authorization code generated by the authorization server. + @discussion Set when the response_type requested includes 'code'. + @remarks code + */ +@property(nonatomic, readonly, nullable) NSString *authorizationCode; + +/*! @brief REQUIRED if the "state" parameter was present in the client authorization request. The + exact value received from the client. + @remarks state + */ +@property(nonatomic, readonly, nullable) NSString *state; + +/*! @brief The access token generated by the authorization server. + @discussion Set when the response_type requested includes 'token'. + @remarks access_token + @see http://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthResponse + */ +@property(nonatomic, readonly, nullable) NSString *accessToken; + +/*! @brief The approximate expiration date & time of the access token. + @discussion Set when the response_type requested includes 'token'. + @remarks expires_in + @seealso OIDAuthorizationResponse.accessToken + @see http://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthResponse + */ +@property(nonatomic, readonly, nullable) NSDate *accessTokenExpirationDate; + +/*! @brief Typically "Bearer" when present. Otherwise, another token_type value that the Client has + negotiated with the Authorization Server. + @discussion Set when the response_type requested includes 'token'. + @remarks token_type + @see http://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthResponse + */ +@property(nonatomic, readonly, nullable) NSString *tokenType; + +/*! @brief ID Token value associated with the authenticated session. + @discussion Set when the response_type requested includes 'id_token'. + @remarks id_token + @see http://openid.net/specs/openid-connect-core-1_0.html#IDToken + @see http://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthResponse + */ +@property(nonatomic, readonly, nullable) NSString *idToken; + +/*! @brief The scope of the access token. OPTIONAL, if identical to the scopes requested, otherwise, + REQUIRED. + @remarks scope + @see https://tools.ietf.org/html/rfc6749#section-5.1 + */ +@property(nonatomic, readonly, nullable) NSString *scope; + +/*! @brief Additional parameters returned from the authorization server. + */ +@property(nonatomic, readonly, nullable) + NSDictionary *> *additionalParameters; + +/*! @internal + @brief Unavailable. Please use initWithRequest:parameters:. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief Designated initializer. + @param request The serviced request. + @param parameters The decoded parameters returned from the Authorization Server. + @remarks Known parameters are extracted from the @c parameters parameter and the normative + properties are populated. Non-normative parameters are placed in the + @c #additionalParameters dictionary. + */ +- (instancetype)initWithRequest:(OIDAuthorizationRequest *)request + parameters:(NSDictionary *> *)parameters + NS_DESIGNATED_INITIALIZER; + +/*! @brief Creates a token request suitable for exchanging an authorization code for an access + token. + @return A @c OIDTokenRequest suitable for exchanging an authorization code for an access + token. + @see https://tools.ietf.org/html/rfc6749#section-4.1.3 + */ +- (nullable OIDTokenRequest *)tokenExchangeRequest; + +/*! @brief Creates a token request suitable for exchanging an authorization code for an access + token. + @param additionalParameters Additional parameters for the token request. + @return A @c OIDTokenRequest suitable for exchanging an authorization code for an access + token. + @see https://tools.ietf.org/html/rfc6749#section-4.1.3 + */ +- (nullable OIDTokenRequest *)tokenExchangeRequestWithAdditionalParameters: + (nullable NSDictionary *)additionalParameters; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationResponse.m b/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationResponse.m new file mode 100644 index 0000000..a8f92c7 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationResponse.m @@ -0,0 +1,210 @@ +/*! @file OIDAuthorizationResponse.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDAuthorizationResponse.h" + +#import "OIDAuthorizationRequest.h" +#import "OIDDefines.h" +#import "OIDError.h" +#import "OIDFieldMapping.h" +#import "OIDTokenRequest.h" +#import "OIDTokenUtilities.h" + +/*! @brief The key for the @c authorizationCode property in the incoming parameters and for + @c NSSecureCoding. + */ +static NSString *const kAuthorizationCodeKey = @"code"; + +/*! @brief The key for the @c state property in the incoming parameters and for @c NSSecureCoding. + */ +static NSString *const kStateKey = @"state"; + +/*! @brief The key for the @c accessToken property in the incoming parameters and for + @c NSSecureCoding. + */ +static NSString *const kAccessTokenKey = @"access_token"; + +/*! @brief The key for the @c accessTokenExpirationDate property in the incoming parameters and for + @c NSSecureCoding. + */ +static NSString *const kExpiresInKey = @"expires_in"; + +/*! @brief The key for the @c tokenType property in the incoming parameters and for + @c NSSecureCoding. + */ +static NSString *const kTokenTypeKey = @"token_type"; + +/*! @brief The key for the @c idToken property in the incoming parameters and for @c NSSecureCoding. + */ +static NSString *const kIDTokenKey = @"id_token"; + +/*! @brief The key for the @c scope property in the incoming parameters and for @c NSSecureCoding. + */ +static NSString *const kScopeKey = @"scope"; + +/*! @brief Key used to encode the @c additionalParameters property for @c NSSecureCoding + */ +static NSString *const kAdditionalParametersKey = @"additionalParameters"; + +/*! @brief Key used to encode the @c request property for @c NSSecureCoding + */ +static NSString *const kRequestKey = @"request"; + +/*! @brief The exception thrown when a developer tries to create a token exchange request from an + authorization request with no authorization code. + */ +static NSString *const kTokenExchangeRequestException = + @"Attempted to create a token exchange request from an authorization response with no " + "authorization code."; + +@implementation OIDAuthorizationResponse + +/*! @brief Returns a mapping of incoming parameters to instance variables. + @return A mapping of incoming parameters to instance variables. + */ ++ (NSDictionary *)fieldMap { + static NSMutableDictionary *fieldMap; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + fieldMap = [NSMutableDictionary dictionary]; + fieldMap[kStateKey] = + [[OIDFieldMapping alloc] initWithName:@"_state" type:[NSString class]]; + fieldMap[kAuthorizationCodeKey] = + [[OIDFieldMapping alloc] initWithName:@"_authorizationCode" type:[NSString class]]; + fieldMap[kAccessTokenKey] = + [[OIDFieldMapping alloc] initWithName:@"_accessToken" type:[NSString class]]; + fieldMap[kExpiresInKey] = + [[OIDFieldMapping alloc] initWithName:@"_accessTokenExpirationDate" + type:[NSDate class] + conversion:^id _Nullable(NSObject *_Nullable value) { + if (![value isKindOfClass:[NSNumber class]]) { + return value; + } + NSNumber *valueAsNumber = (NSNumber *)value; + return [NSDate dateWithTimeIntervalSinceNow:[valueAsNumber longLongValue]]; + }]; + fieldMap[kTokenTypeKey] = + [[OIDFieldMapping alloc] initWithName:@"_tokenType" type:[NSString class]]; + fieldMap[kIDTokenKey] = + [[OIDFieldMapping alloc] initWithName:@"_idToken" type:[NSString class]]; + fieldMap[kScopeKey] = + [[OIDFieldMapping alloc] initWithName:@"_scope" type:[NSString class]]; + }); + return fieldMap; +} + +#pragma mark - Initializers + +- (instancetype)init + OID_UNAVAILABLE_USE_INITIALIZER(@selector(initWithRequest:parameters:)) + +- (instancetype)initWithRequest:(OIDAuthorizationRequest *)request + parameters:(NSDictionary *> *)parameters { + self = [super init]; + if (self) { + _request = [request copy]; + NSDictionary *> *additionalParameters = + [OIDFieldMapping remainingParametersWithMap:[[self class] fieldMap] + parameters:parameters + instance:self]; + _additionalParameters = additionalParameters; + } + return self; +} + +#pragma mark - NSCopying + +- (instancetype)copyWithZone:(nullable NSZone *)zone { + // The documentation for NSCopying specifically advises us to return a reference to the original + // instance in the case where instances are immutable (as ours is): + // "Implement NSCopying by retaining the original instead of creating a new copy when the class + // and its contents are immutable." + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + OIDAuthorizationRequest *request = + [aDecoder decodeObjectOfClass:[OIDAuthorizationRequest class] forKey:kRequestKey]; + self = [self initWithRequest:request parameters:@{ }]; + if (self) { + [OIDFieldMapping decodeWithCoder:aDecoder map:[[self class] fieldMap] instance:self]; + _additionalParameters = [aDecoder decodeObjectOfClasses:[OIDFieldMapping JSONTypes] + forKey:kAdditionalParametersKey]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_request forKey:kRequestKey]; + [OIDFieldMapping encodeWithCoder:aCoder map:[[self class] fieldMap] instance:self]; + [aCoder encodeObject:_additionalParameters forKey:kAdditionalParametersKey]; +} + +#pragma mark - NSObject overrides + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, authorizationCode: %@, state: \"%@\", accessToken: " + "\"%@\", accessTokenExpirationDate: %@, tokenType: %@, " + "idToken: \"%@\", scope: \"%@\", additionalParameters: %@, " + "request: %@>", + NSStringFromClass([self class]), + (void *)self, + _authorizationCode, + _state, + [OIDTokenUtilities redact:_accessToken], + _accessTokenExpirationDate, + _tokenType, + [OIDTokenUtilities redact:_idToken], + _scope, + _additionalParameters, + _request]; +} + +#pragma mark - + +- (OIDTokenRequest *)tokenExchangeRequest { + return [self tokenExchangeRequestWithAdditionalParameters:nil]; +} + +- (OIDTokenRequest *)tokenExchangeRequestWithAdditionalParameters: + (NSDictionary *)additionalParameters { + // TODO: add a unit test to confirm exception is thrown when expected and the request is created + // with the correct parameters. + if (!_authorizationCode) { + [NSException raise:kTokenExchangeRequestException + format:kTokenExchangeRequestException]; + } + return [[OIDTokenRequest alloc] initWithConfiguration:_request.configuration + grantType:OIDGrantTypeAuthorizationCode + authorizationCode:_authorizationCode + redirectURL:_request.redirectURL + clientID:_request.clientID + clientSecret:_request.clientSecret + scope:nil + refreshToken:nil + codeVerifier:_request.codeVerifier + additionalParameters:additionalParameters]; +} + +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationService.h b/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationService.h new file mode 100644 index 0000000..c8fee53 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationService.h @@ -0,0 +1,170 @@ +/*! @file OIDAuthorizationService.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@class OIDAuthorization; +@class OIDAuthorizationRequest; +@class OIDAuthorizationResponse; +@class OIDEndSessionRequest; +@class OIDEndSessionResponse; +@class OIDRegistrationRequest; +@class OIDRegistrationResponse; +@class OIDServiceConfiguration; +@class OIDTokenRequest; +@class OIDTokenResponse; +@protocol OIDExternalUserAgent; +@protocol OIDExternalUserAgentSession; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Represents the type of block used as a callback for creating a service configuration from + a remote OpenID Connect Discovery document. + @param configuration The service configuration, if available. + @param error The error if an error occurred. + */ +typedef void (^OIDDiscoveryCallback)(OIDServiceConfiguration *_Nullable configuration, + NSError *_Nullable error); + +/*! @brief Represents the type of block used as a callback for various methods of + @c OIDAuthorizationService. + @param authorizationResponse The authorization response, if available. + @param error The error if an error occurred. + */ +typedef void (^OIDAuthorizationCallback)(OIDAuthorizationResponse *_Nullable authorizationResponse, + NSError *_Nullable error); + +/*! @brief Block used as a callback for the end-session request of @c OIDAuthorizationService. + @param endSessionResponse The end-session response, if available. + @param error The error if an error occurred. + */ +typedef void (^OIDEndSessionCallback)(OIDEndSessionResponse *_Nullable endSessionResponse, + NSError *_Nullable error); + +/*! @brief Represents the type of block used as a callback for various methods of + @c OIDAuthorizationService. + @param tokenResponse The token response, if available. + @param error The error if an error occurred. + */ +typedef void (^OIDTokenCallback)(OIDTokenResponse *_Nullable tokenResponse, + NSError *_Nullable error); + +/*! @brief Represents the type of dictionary used to specify additional querystring parameters + when making authorization or token endpoint requests. + */ +typedef NSDictionary *_Nullable OIDTokenEndpointParameters; + +/*! @brief Represents the type of block used as a callback for various methods of + @c OIDAuthorizationService. + @param registrationResponse The registration response, if available. + @param error The error if an error occurred. +*/ +typedef void (^OIDRegistrationCompletion)(OIDRegistrationResponse *_Nullable registrationResponse, + NSError *_Nullable error); + +/*! @brief Performs various OAuth and OpenID Connect related calls via the user agent or + \NSURLSession. + */ +@interface OIDAuthorizationService : NSObject + +/*! @brief The service's configuration. + @remarks Each authorization service is initialized with a configuration. This configuration + specifies how to connect to a particular OAuth provider. Clients should use separate + authorization service instances for each provider they wish to integrate with. + Configurations may be created manually, or via an OpenID Connect Discovery Document. + */ +@property(nonatomic, readonly) OIDServiceConfiguration *configuration; + +/*! @internal + @brief Unavailable. This class should not be initialized. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief Convenience method for creating an authorization service configuration from an OpenID + Connect compliant issuer URL. + @param issuerURL The service provider's OpenID Connect issuer. + @param completion A block which will be invoked when the authorization service configuration has + been created, or when an error has occurred. + @see https://openid.net/specs/openid-connect-discovery-1_0.html + */ ++ (void)discoverServiceConfigurationForIssuer:(NSURL *)issuerURL + completion:(OIDDiscoveryCallback)completion; + + +/*! @brief Convenience method for creating an authorization service configuration from an OpenID + Connect compliant identity provider's discovery document. + @param discoveryURL The URL of the service provider's OpenID Connect discovery document. + @param completion A block which will be invoked when the authorization service configuration has + been created, or when an error has occurred. + @see https://openid.net/specs/openid-connect-discovery-1_0.html + */ ++ (void)discoverServiceConfigurationForDiscoveryURL:(NSURL *)discoveryURL + completion:(OIDDiscoveryCallback)completion; + +/*! @brief Perform an authorization flow using a generic flow shim. + @param request The authorization request. + @param externalUserAgent Generic external user-agent that can present an authorization + request. + @param callback The method called when the request has completed or failed. + @return A @c OIDExternalUserAgentSession instance which will terminate when it + receives a @c OIDExternalUserAgentSession.cancel message, or after processing a + @c OIDExternalUserAgentSession.resumeExternalUserAgentFlowWithURL: message. + */ ++ (id) presentAuthorizationRequest:(OIDAuthorizationRequest *)request + externalUserAgent:(id)externalUserAgent + callback:(OIDAuthorizationCallback)callback; + +/*! @brief Perform a logout request. + @param request The end-session logout request. + @param externalUserAgent Generic external user-agent that can present user-agent requests. + @param callback The method called when the request has completed or failed. + @return A @c OIDExternalUserAgentSession instance which will terminate when it + receives a @c OIDExternalUserAgentSession.cancel message, or after processing a + @c OIDExternalUserAgentSession.resumeExternalUserAgentFlowWithURL: message. + @see http://openid.net/specs/openid-connect-session-1_0.html#RPLogout + */ ++ (id) + presentEndSessionRequest:(OIDEndSessionRequest *)request + externalUserAgent:(id)externalUserAgent + callback:(OIDEndSessionCallback)callback; + +/*! @brief Performs a token request. + @param request The token request. + @param callback The method called when the request has completed or failed. + */ ++ (void)performTokenRequest:(OIDTokenRequest *)request callback:(OIDTokenCallback)callback; + +/*! @brief Performs a token request. + @param request The token request. + @param authorizationResponse The original authorization response related to this token request. + @param callback The method called when the request has completed or failed. + */ ++ (void)performTokenRequest:(OIDTokenRequest *)request + originalAuthorizationResponse:(OIDAuthorizationResponse *_Nullable)authorizationResponse + callback:(OIDTokenCallback)callback; + +/*! @brief Performs a registration request. + @param request The registration request. + @param completion The method called when the request has completed or failed. + */ ++ (void)performRegistrationRequest:(OIDRegistrationRequest *)request + completion:(OIDRegistrationCompletion)completion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationService.m b/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationService.m new file mode 100644 index 0000000..cc749a3 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDAuthorizationService.m @@ -0,0 +1,790 @@ +/*! @file OIDAuthorizationService.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDAuthorizationService.h" + +#import "OIDAuthorizationRequest.h" +#import "OIDAuthorizationResponse.h" +#import "OIDDefines.h" +#import "OIDEndSessionRequest.h" +#import "OIDEndSessionResponse.h" +#import "OIDErrorUtilities.h" +#import "OIDExternalUserAgent.h" +#import "OIDExternalUserAgentSession.h" +#import "OIDIDToken.h" +#import "OIDRegistrationRequest.h" +#import "OIDRegistrationResponse.h" +#import "OIDServiceConfiguration.h" +#import "OIDServiceDiscovery.h" +#import "OIDTokenRequest.h" +#import "OIDTokenResponse.h" +#import "OIDURLQueryComponent.h" +#import "OIDURLSessionProvider.h" + +/*! @brief Path appended to an OpenID Connect issuer for discovery + @see https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig + */ +static NSString *const kOpenIDConfigurationWellKnownPath = @".well-known/openid-configuration"; + +/*! @brief Max allowable iat (Issued At) time skew + @see https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation + */ +static int const kOIDAuthorizationSessionIATMaxSkew = 600; + +NS_ASSUME_NONNULL_BEGIN + +@interface OIDAuthorizationSession : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +- (instancetype)initWithRequest:(OIDAuthorizationRequest *)request + NS_DESIGNATED_INITIALIZER; + +@end + +@implementation OIDAuthorizationSession { + OIDAuthorizationRequest *_request; + id _externalUserAgent; + OIDAuthorizationCallback _pendingauthorizationFlowCallback; +} + +- (instancetype)initWithRequest:(OIDAuthorizationRequest *)request { + self = [super init]; + if (self) { + _request = [request copy]; + } + return self; +} + +- (void)presentAuthorizationWithExternalUserAgent:(id)externalUserAgent + callback:(OIDAuthorizationCallback)authorizationFlowCallback { + _externalUserAgent = externalUserAgent; + _pendingauthorizationFlowCallback = authorizationFlowCallback; + BOOL authorizationFlowStarted = + [_externalUserAgent presentExternalUserAgentRequest:_request session:self]; + if (!authorizationFlowStarted) { + NSError *safariError = [OIDErrorUtilities errorWithCode:OIDErrorCodeSafariOpenError + underlyingError:nil + description:@"Unable to open Safari."]; + [self didFinishWithResponse:nil error:safariError]; + } +} + +- (void)cancel { + [self cancelWithCompletion:nil]; +} + +- (void)cancelWithCompletion:(nullable void (^)(void))completion { + [_externalUserAgent dismissExternalUserAgentAnimated:YES completion:^{ + NSError *error = [OIDErrorUtilities errorWithCode:OIDErrorCodeUserCanceledAuthorizationFlow + underlyingError:nil + description:@"Authorization flow was cancelled."]; + [self didFinishWithResponse:nil error:error]; + if (completion) completion(); + }]; +} + +/*! @brief Does the redirection URL equal another URL down to the path component? + @param URL The first redirect URI to compare. + @param redirectionURL The second redirect URI to compare. + @return YES if the URLs match down to the path level (query params are ignored). + */ ++ (BOOL)URL:(NSURL *)URL matchesRedirectionURL:(NSURL *)redirectionURL { + NSURL *standardizedURL = [URL standardizedURL]; + NSURL *standardizedRedirectURL = [redirectionURL standardizedURL]; + + return [standardizedURL.scheme caseInsensitiveCompare:standardizedRedirectURL.scheme] == NSOrderedSame + && OIDIsEqualIncludingNil(standardizedURL.user, standardizedRedirectURL.user) + && OIDIsEqualIncludingNil(standardizedURL.password, standardizedRedirectURL.password) + && OIDIsEqualIncludingNil(standardizedURL.host, standardizedRedirectURL.host) + && OIDIsEqualIncludingNil(standardizedURL.port, standardizedRedirectURL.port) + && OIDIsEqualIncludingNil(standardizedURL.path, standardizedRedirectURL.path); +} + +- (BOOL)shouldHandleURL:(NSURL *)URL { + return [[self class] URL:URL matchesRedirectionURL:_request.redirectURL]; +} + +- (BOOL)resumeExternalUserAgentFlowWithURL:(NSURL *)URL { + // rejects URLs that don't match redirect (these may be completely unrelated to the authorization) + if (![self shouldHandleURL:URL]) { + return NO; + } + + AppAuthRequestTrace(@"Authorization Response: %@", URL); + + // checks for an invalid state + if (!_pendingauthorizationFlowCallback) { + [NSException raise:OIDOAuthExceptionInvalidAuthorizationFlow + format:@"%@", OIDOAuthExceptionInvalidAuthorizationFlow, nil]; + } + + OIDURLQueryComponent *query = [[OIDURLQueryComponent alloc] initWithURL:URL]; + + NSError *error; + OIDAuthorizationResponse *response = nil; + + // checks for an OAuth error response as per RFC6749 Section 4.1.2.1 + if (query.dictionaryValue[OIDOAuthErrorFieldError]) { + error = [OIDErrorUtilities OAuthErrorWithDomain:OIDOAuthAuthorizationErrorDomain + OAuthResponse:query.dictionaryValue + underlyingError:nil]; + } + + // no error, should be a valid OAuth 2.0 response + if (!error) { + response = [[OIDAuthorizationResponse alloc] initWithRequest:_request + parameters:query.dictionaryValue]; + + // verifies that the state in the response matches the state in the request, or both are nil + if (!OIDIsEqualIncludingNil(_request.state, response.state)) { + NSMutableDictionary *userInfo = [query.dictionaryValue mutableCopy]; + userInfo[NSLocalizedDescriptionKey] = + [NSString stringWithFormat:@"State mismatch, expecting %@ but got %@ in authorization " + "response %@", + _request.state, + response.state, + response]; + response = nil; + error = [NSError errorWithDomain:OIDOAuthAuthorizationErrorDomain + code:OIDErrorCodeOAuthAuthorizationClientError + userInfo:userInfo]; + } + } + + [_externalUserAgent dismissExternalUserAgentAnimated:YES completion:^{ + [self didFinishWithResponse:response error:error]; + }]; + + return YES; +} + +- (void)failExternalUserAgentFlowWithError:(NSError *)error { + [self didFinishWithResponse:nil error:error]; +} + +/*! @brief Invokes the pending callback and performs cleanup. + @param response The authorization response, if any to return to the callback. + @param error The error, if any, to return to the callback. + */ +- (void)didFinishWithResponse:(nullable OIDAuthorizationResponse *)response + error:(nullable NSError *)error { + OIDAuthorizationCallback callback = _pendingauthorizationFlowCallback; + _pendingauthorizationFlowCallback = nil; + _externalUserAgent = nil; + if (callback) { + callback(response, error); + } +} + +@end + +@interface OIDEndSessionImplementation : NSObject { + // private variables + OIDEndSessionRequest *_request; + id _externalUserAgent; + OIDEndSessionCallback _pendingEndSessionCallback; +} +- (instancetype)init NS_UNAVAILABLE; + +- (instancetype)initWithRequest:(OIDEndSessionRequest *)request + NS_DESIGNATED_INITIALIZER; +@end + + +@implementation OIDEndSessionImplementation + +- (instancetype)initWithRequest:(OIDEndSessionRequest *)request { + self = [super init]; + if (self) { + _request = [request copy]; + } + return self; +} + +- (void)presentAuthorizationWithExternalUserAgent:(id)externalUserAgent + callback:(OIDEndSessionCallback)authorizationFlowCallback { + _externalUserAgent = externalUserAgent; + _pendingEndSessionCallback = authorizationFlowCallback; + BOOL authorizationFlowStarted = + [_externalUserAgent presentExternalUserAgentRequest:_request session:self]; + if (!authorizationFlowStarted) { + NSError *safariError = [OIDErrorUtilities errorWithCode:OIDErrorCodeSafariOpenError + underlyingError:nil + description:@"Unable to open Safari."]; + [self didFinishWithResponse:nil error:safariError]; + } +} + +- (void)cancel { + [self cancelWithCompletion:nil]; +} + +- (void)cancelWithCompletion:(nullable void (^)(void))completion { + [_externalUserAgent dismissExternalUserAgentAnimated:YES completion:^{ + NSError *error = [OIDErrorUtilities + errorWithCode:OIDErrorCodeUserCanceledAuthorizationFlow + underlyingError:nil + description:nil]; + [self didFinishWithResponse:nil error:error]; + if (completion) completion(); + }]; +} + +- (BOOL)shouldHandleURL:(NSURL *)URL { + // The logic of when to handle the URL is the same as for authorization requests: should match + // down to the path component. + return [[OIDAuthorizationSession class] URL:URL + matchesRedirectionURL:_request.postLogoutRedirectURL]; +} + +- (BOOL)resumeExternalUserAgentFlowWithURL:(NSURL *)URL { + // rejects URLs that don't match redirect (these may be completely unrelated to the authorization) + if (![self shouldHandleURL:URL]) { + return NO; + } + // checks for an invalid state + if (!_pendingEndSessionCallback) { + [NSException raise:OIDOAuthExceptionInvalidAuthorizationFlow + format:@"%@", OIDOAuthExceptionInvalidAuthorizationFlow, nil]; + } + + + NSError *error; + OIDEndSessionResponse *response = nil; + + OIDURLQueryComponent *query = [[OIDURLQueryComponent alloc] initWithURL:URL]; + response = [[OIDEndSessionResponse alloc] initWithRequest:_request + parameters:query.dictionaryValue]; + + // verifies that the state in the response matches the state in the request, or both are nil + if (!OIDIsEqualIncludingNil(_request.state, response.state)) { + NSMutableDictionary *userInfo = [query.dictionaryValue mutableCopy]; + userInfo[NSLocalizedDescriptionKey] = + [NSString stringWithFormat:@"State mismatch, expecting %@ but got %@ in authorization " + "response %@", + _request.state, + response.state, + response]; + response = nil; + error = [NSError errorWithDomain:OIDOAuthAuthorizationErrorDomain + code:OIDErrorCodeOAuthAuthorizationClientError + userInfo:userInfo]; + } + + [_externalUserAgent dismissExternalUserAgentAnimated:YES completion:^{ + [self didFinishWithResponse:response error:error]; + }]; + + return YES; +} + +- (void)failExternalUserAgentFlowWithError:(NSError *)error { + [self didFinishWithResponse:nil error:error]; +} + +/*! @brief Invokes the pending callback and performs cleanup. + @param response The authorization response, if any to return to the callback. + @param error The error, if any, to return to the callback. + */ +- (void)didFinishWithResponse:(nullable OIDEndSessionResponse *)response + error:(nullable NSError *)error { + OIDEndSessionCallback callback = _pendingEndSessionCallback; + _pendingEndSessionCallback = nil; + _externalUserAgent = nil; + if (callback) { + callback(response, error); + } +} + +@end + +@implementation OIDAuthorizationService + ++ (void)discoverServiceConfigurationForIssuer:(NSURL *)issuerURL + completion:(OIDDiscoveryCallback)completion { + NSURL *fullDiscoveryURL = + [issuerURL URLByAppendingPathComponent:kOpenIDConfigurationWellKnownPath]; + + [[self class] discoverServiceConfigurationForDiscoveryURL:fullDiscoveryURL + completion:completion]; +} + ++ (void)discoverServiceConfigurationForDiscoveryURL:(NSURL *)discoveryURL + completion:(OIDDiscoveryCallback)completion { + + NSURLSession *session = [OIDURLSessionProvider session]; + NSURLSessionDataTask *task = + [session dataTaskWithURL:discoveryURL + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + // If we got any sort of error, just report it. + if (error || !data) { + NSString *errorDescription = + [NSString stringWithFormat:@"Connection error fetching discovery document '%@': %@.", + discoveryURL, + error.localizedDescription]; + error = [OIDErrorUtilities errorWithCode:OIDErrorCodeNetworkError + underlyingError:error + description:errorDescription]; + dispatch_async(dispatch_get_main_queue(), ^{ + completion(nil, error); + }); + return; + } + + NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse *)response; + + // Check for non-200 status codes. + // https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationResponse + if (urlResponse.statusCode != 200) { + NSError *URLResponseError = [OIDErrorUtilities HTTPErrorWithHTTPResponse:urlResponse + data:data]; + NSString *errorDescription = + [NSString stringWithFormat:@"Non-200 HTTP response (%d) fetching discovery document " + "'%@'.", + (int)urlResponse.statusCode, + discoveryURL]; + error = [OIDErrorUtilities errorWithCode:OIDErrorCodeNetworkError + underlyingError:URLResponseError + description:errorDescription]; + dispatch_async(dispatch_get_main_queue(), ^{ + completion(nil, error); + }); + return; + } + + // Construct an OIDServiceDiscovery with the received JSON. + OIDServiceDiscovery *discovery = + [[OIDServiceDiscovery alloc] initWithJSONData:data error:&error]; + if (error || !discovery) { + NSString *errorDescription = + [NSString stringWithFormat:@"JSON error parsing document at '%@': %@", + discoveryURL, + error.localizedDescription]; + error = [OIDErrorUtilities errorWithCode:OIDErrorCodeNetworkError + underlyingError:error + description:errorDescription]; + dispatch_async(dispatch_get_main_queue(), ^{ + completion(nil, error); + }); + return; + } + + // Create our service configuration with the discovery document and return it. + OIDServiceConfiguration *configuration = + [[OIDServiceConfiguration alloc] initWithDiscoveryDocument:discovery]; + dispatch_async(dispatch_get_main_queue(), ^{ + completion(configuration, nil); + }); + }]; + [task resume]; +} + +#pragma mark - Authorization Endpoint + ++ (id) presentAuthorizationRequest:(OIDAuthorizationRequest *)request + externalUserAgent:(id)externalUserAgent + callback:(OIDAuthorizationCallback)callback { + + AppAuthRequestTrace(@"Authorization Request: %@", request); + + OIDAuthorizationSession *flowSession = [[OIDAuthorizationSession alloc] initWithRequest:request]; + [flowSession presentAuthorizationWithExternalUserAgent:externalUserAgent callback:callback]; + return flowSession; +} + ++ (id) + presentEndSessionRequest:(OIDEndSessionRequest *)request + externalUserAgent:(id)externalUserAgent + callback:(OIDEndSessionCallback)callback { + OIDEndSessionImplementation *flowSession = + [[OIDEndSessionImplementation alloc] initWithRequest:request]; + [flowSession presentAuthorizationWithExternalUserAgent:externalUserAgent callback:callback]; + return flowSession; +} + +#pragma mark - Token Endpoint + ++ (void)performTokenRequest:(OIDTokenRequest *)request callback:(OIDTokenCallback)callback { + [[self class] performTokenRequest:request + originalAuthorizationResponse:nil + callback:callback]; +} + ++ (void)performTokenRequest:(OIDTokenRequest *)request + originalAuthorizationResponse:(OIDAuthorizationResponse *_Nullable)authorizationResponse + callback:(OIDTokenCallback)callback { + + NSURLRequest *URLRequest = [request URLRequest]; + + AppAuthRequestTrace(@"Token Request: %@\nHeaders:%@\nHTTPBody: %@", + URLRequest.URL, + URLRequest.allHTTPHeaderFields, + [[NSString alloc] initWithData:URLRequest.HTTPBody + encoding:NSUTF8StringEncoding]); + + NSURLSession *session = [OIDURLSessionProvider session]; + [[session dataTaskWithRequest:URLRequest + completionHandler:^(NSData *_Nullable data, + NSURLResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + // A network error or server error occurred. + NSString *errorDescription = + [NSString stringWithFormat:@"Connection error making token request to '%@': %@.", + URLRequest.URL, + error.localizedDescription]; + NSError *returnedError = + [OIDErrorUtilities errorWithCode:OIDErrorCodeNetworkError + underlyingError:error + description:errorDescription]; + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, returnedError); + }); + return; + } + + NSHTTPURLResponse *HTTPURLResponse = (NSHTTPURLResponse *)response; + NSInteger statusCode = HTTPURLResponse.statusCode; + AppAuthRequestTrace(@"Token Response: HTTP Status %d\nHTTPBody: %@", + (int)statusCode, + [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); + if (statusCode != 200) { + // A server error occurred. + NSError *serverError = + [OIDErrorUtilities HTTPErrorWithHTTPResponse:HTTPURLResponse data:data]; + + // HTTP 4xx may indicate an RFC6749 Section 5.2 error response, attempts to parse as such. + if (statusCode >= 400 && statusCode < 500) { + NSError *jsonDeserializationError; + NSDictionary *> *json = + [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonDeserializationError]; + + // If the HTTP 4xx response parses as JSON and has an 'error' key, it's an OAuth error. + // These errors are special as they indicate a problem with the authorization grant. + if (json[OIDOAuthErrorFieldError]) { + NSError *oauthError = + [OIDErrorUtilities OAuthErrorWithDomain:OIDOAuthTokenErrorDomain + OAuthResponse:json + underlyingError:serverError]; + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, oauthError); + }); + return; + } + } + + // Status code indicates this is an error, but not an RFC6749 Section 5.2 error. + NSString *errorDescription = + [NSString stringWithFormat:@"Non-200 HTTP response (%d) making token request to '%@'.", + (int)statusCode, + URLRequest.URL]; + NSError *returnedError = + [OIDErrorUtilities errorWithCode:OIDErrorCodeServerError + underlyingError:serverError + description:errorDescription]; + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, returnedError); + }); + return; + } + + NSError *jsonDeserializationError; + NSDictionary *> *json = + [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonDeserializationError]; + if (jsonDeserializationError) { + // A problem occurred deserializing the response/JSON. + NSString *errorDescription = + [NSString stringWithFormat:@"JSON error parsing token response: %@", + jsonDeserializationError.localizedDescription]; + NSError *returnedError = + [OIDErrorUtilities errorWithCode:OIDErrorCodeJSONDeserializationError + underlyingError:jsonDeserializationError + description:errorDescription]; + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, returnedError); + }); + return; + } + + OIDTokenResponse *tokenResponse = + [[OIDTokenResponse alloc] initWithRequest:request parameters:json]; + if (!tokenResponse) { + // A problem occurred constructing the token response from the JSON. + NSError *returnedError = + [OIDErrorUtilities errorWithCode:OIDErrorCodeTokenResponseConstructionError + underlyingError:jsonDeserializationError + description:@"Token response invalid."]; + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, returnedError); + }); + return; + } + + // If an ID Token is included in the response, validates the ID Token following the rules + // in OpenID Connect Core Section 3.1.3.7 for features that AppAuth directly supports + // (which excludes rules #1, #4, #5, #7, #8, #12, and #13). Regarding rule #6, ID Tokens + // received by this class are received via direct communication between the Client and the Token + // Endpoint, thus we are exercising the option to rely only on the TLS validation. AppAuth + // has a zero dependencies policy, and verifying the JWT signature would add a dependency. + // Users of the library are welcome to perform the JWT signature verification themselves should + // they wish. + if (tokenResponse.idToken) { + OIDIDToken *idToken = [[OIDIDToken alloc] initWithIDTokenString:tokenResponse.idToken]; + if (!idToken) { + NSError *invalidIDToken = + [OIDErrorUtilities errorWithCode:OIDErrorCodeIDTokenParsingError + underlyingError:nil + description:@"ID Token parsing failed"]; + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, invalidIDToken); + }); + return; + } + + // OpenID Connect Core Section 3.1.3.7. rule #1 + // Not supported: AppAuth does not support JWT encryption. + + // OpenID Connect Core Section 3.1.3.7. rule #2 + // Validates that the issuer in the ID Token matches that of the discovery document. + NSURL *issuer = tokenResponse.request.configuration.issuer; + if (issuer && ![idToken.issuer isEqual:issuer]) { + NSError *invalidIDToken = + [OIDErrorUtilities errorWithCode:OIDErrorCodeIDTokenFailedValidationError + underlyingError:nil + description:@"Issuer mismatch"]; + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, invalidIDToken); + }); + return; + } + + // OpenID Connect Core Section 3.1.3.7. rule #3 & Section 2 azp Claim + // Validates that the aud (audience) Claim contains the client ID, or that the azp + // (authorized party) Claim matches the client ID. + NSString *clientID = tokenResponse.request.clientID; + if (![idToken.audience containsObject:clientID] && + ![idToken.claims[@"azp"] isEqualToString:clientID]) { + NSError *invalidIDToken = + [OIDErrorUtilities errorWithCode:OIDErrorCodeIDTokenFailedValidationError + underlyingError:nil + description:@"Audience mismatch"]; + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, invalidIDToken); + }); + return; + } + + // OpenID Connect Core Section 3.1.3.7. rules #4 & #5 + // Not supported. + + // OpenID Connect Core Section 3.1.3.7. rule #6 + // As noted above, AppAuth only supports the code flow which results in direct communication + // of the ID Token from the Token Endpoint to the Client, and we are exercising the option to + // use TSL server validation instead of checking the token signature. Users may additionally + // check the token signature should they wish. + + // OpenID Connect Core Section 3.1.3.7. rules #7 & #8 + // Not applicable. See rule #6. + + // OpenID Connect Core Section 3.1.3.7. rule #9 + // Validates that the current time is before the expiry time. + NSTimeInterval expiresAtDifference = [idToken.expiresAt timeIntervalSinceNow]; + if (expiresAtDifference < 0) { + NSError *invalidIDToken = + [OIDErrorUtilities errorWithCode:OIDErrorCodeIDTokenFailedValidationError + underlyingError:nil + description:@"ID Token expired"]; + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, invalidIDToken); + }); + return; + } + + // OpenID Connect Core Section 3.1.3.7. rule #10 + // Validates that the issued at time is not more than +/- 10 minutes on the current time. + NSTimeInterval issuedAtDifference = [idToken.issuedAt timeIntervalSinceNow]; + if (fabs(issuedAtDifference) > kOIDAuthorizationSessionIATMaxSkew) { + NSString *message = + [NSString stringWithFormat:@"Issued at time is more than %d seconds before or after " + "the current time", + kOIDAuthorizationSessionIATMaxSkew]; + NSError *invalidIDToken = + [OIDErrorUtilities errorWithCode:OIDErrorCodeIDTokenFailedValidationError + underlyingError:nil + description:message]; + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, invalidIDToken); + }); + return; + } + + // Only relevant for the authorization_code response type + if ([tokenResponse.request.grantType isEqual:OIDGrantTypeAuthorizationCode]) { + // OpenID Connect Core Section 3.1.3.7. rule #11 + // Validates the nonce. + NSString *nonce = authorizationResponse.request.nonce; + if (nonce && ![idToken.nonce isEqual:nonce]) { + NSError *invalidIDToken = + [OIDErrorUtilities errorWithCode:OIDErrorCodeIDTokenFailedValidationError + underlyingError:nil + description:@"Nonce mismatch"]; + dispatch_async(dispatch_get_main_queue(), ^{ + callback(nil, invalidIDToken); + }); + return; + } + } + + // OpenID Connect Core Section 3.1.3.7. rules #12 + // ACR is not directly supported by AppAuth. + + // OpenID Connect Core Section 3.1.3.7. rules #12 + // max_age is not directly supported by AppAuth. + } + + // Success + dispatch_async(dispatch_get_main_queue(), ^{ + callback(tokenResponse, nil); + }); + }] resume]; +} + + +#pragma mark - Registration Endpoint + ++ (void)performRegistrationRequest:(OIDRegistrationRequest *)request + completion:(OIDRegistrationCompletion)completion { + NSURLRequest *URLRequest = [request URLRequest]; + if (!URLRequest) { + // A problem occurred deserializing the response/JSON. + NSError *returnedError = [OIDErrorUtilities errorWithCode:OIDErrorCodeJSONSerializationError + underlyingError:nil + description:@"The registration request could not " + "be serialized as JSON."]; + dispatch_async(dispatch_get_main_queue(), ^{ + completion(nil, returnedError); + }); + return; + } + + NSURLSession *session = [OIDURLSessionProvider session]; + [[session dataTaskWithRequest:URLRequest + completionHandler:^(NSData *_Nullable data, + NSURLResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + // A network error or server error occurred. + NSString *errorDescription = + [NSString stringWithFormat:@"Connection error making registration request to '%@': %@.", + URLRequest.URL, + error.localizedDescription]; + NSError *returnedError = [OIDErrorUtilities errorWithCode:OIDErrorCodeNetworkError + underlyingError:error + description:errorDescription]; + dispatch_async(dispatch_get_main_queue(), ^{ + completion(nil, returnedError); + }); + return; + } + + NSHTTPURLResponse *HTTPURLResponse = (NSHTTPURLResponse *) response; + + if (HTTPURLResponse.statusCode != 201 && HTTPURLResponse.statusCode != 200) { + // A server error occurred. + NSError *serverError = [OIDErrorUtilities HTTPErrorWithHTTPResponse:HTTPURLResponse + data:data]; + + // HTTP 400 may indicate an OpenID Connect Dynamic Client Registration 1.0 Section 3.3 error + // response, checks for that + if (HTTPURLResponse.statusCode == 400) { + NSError *jsonDeserializationError; + NSDictionary *> *json = + [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonDeserializationError]; + + // if the HTTP 400 response parses as JSON and has an 'error' key, it's an OAuth error + // these errors are special as they indicate a problem with the authorization grant + if (json[OIDOAuthErrorFieldError]) { + NSError *oauthError = + [OIDErrorUtilities OAuthErrorWithDomain:OIDOAuthRegistrationErrorDomain + OAuthResponse:json + underlyingError:serverError]; + dispatch_async(dispatch_get_main_queue(), ^{ + completion(nil, oauthError); + }); + return; + } + } + + // not an OAuth error, just a generic server error + NSString *errorDescription = + [NSString stringWithFormat:@"Non-200/201 HTTP response (%d) making registration request " + "to '%@'.", + (int)HTTPURLResponse.statusCode, + URLRequest.URL]; + NSError *returnedError = [OIDErrorUtilities errorWithCode:OIDErrorCodeServerError + underlyingError:serverError + description:errorDescription]; + dispatch_async(dispatch_get_main_queue(), ^{ + completion(nil, returnedError); + }); + return; + } + + NSError *jsonDeserializationError; + NSDictionary *> *json = + [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonDeserializationError]; + if (jsonDeserializationError) { + // A problem occurred deserializing the response/JSON. + NSString *errorDescription = + [NSString stringWithFormat:@"JSON error parsing registration response: %@", + jsonDeserializationError.localizedDescription]; + NSError *returnedError = [OIDErrorUtilities errorWithCode:OIDErrorCodeJSONDeserializationError + underlyingError:jsonDeserializationError + description:errorDescription]; + dispatch_async(dispatch_get_main_queue(), ^{ + completion(nil, returnedError); + }); + return; + } + + OIDRegistrationResponse *registrationResponse = + [[OIDRegistrationResponse alloc] initWithRequest:request + parameters:json]; + if (!registrationResponse) { + // A problem occurred constructing the registration response from the JSON. + NSError *returnedError = + [OIDErrorUtilities errorWithCode:OIDErrorCodeRegistrationResponseConstructionError + underlyingError:nil + description:@"Registration response invalid."]; + dispatch_async(dispatch_get_main_queue(), ^{ + completion(nil, returnedError); + }); + return; + } + + // Success + dispatch_async(dispatch_get_main_queue(), ^{ + completion(registrationResponse, nil); + }); + }] resume]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDClientMetadataParameters.h b/Pods/AppAuth/Source/AppAuthCore/OIDClientMetadataParameters.h new file mode 100644 index 0000000..39ea2d6 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDClientMetadataParameters.h @@ -0,0 +1,51 @@ +/*! @file OIDClientMetadataParameters.h + @brief AppAuth iOS SDK + @copyright + Copyright 2016 The AppAuth for iOS Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Parameter name for the token endpoint authentication method. + */ +extern NSString *const OIDTokenEndpointAuthenticationMethodParam; + +/*! @brief Parameter name for the application type. + */ +extern NSString *const OIDApplicationTypeParam; + +/*! @brief Parameter name for the redirect URI values. + */ +extern NSString *const OIDRedirectURIsParam; + +/*! @brief Parameter name for the response type values. + */ +extern NSString *const OIDResponseTypesParam; + +/*! @brief Parameter name for the grant type values. + */ +extern NSString *const OIDGrantTypesParam; + +/*! @brief Parameter name for the subject type. + */ +extern NSString *const OIDSubjectTypeParam; + +/*! @brief Application type that indicates this client is a native (not a web) application. + */ +extern NSString *const OIDApplicationTypeNative; + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDClientMetadataParameters.m b/Pods/AppAuth/Source/AppAuthCore/OIDClientMetadataParameters.m new file mode 100644 index 0000000..79ad467 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDClientMetadataParameters.m @@ -0,0 +1,33 @@ +/*! @file OIDClientMetadataParameters.h + @brief AppAuth iOS SDK + @copyright + Copyright 2016 The AppAuth for iOS Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDClientMetadataParameters.h" + +NSString *const OIDTokenEndpointAuthenticationMethodParam = @"token_endpoint_auth_method"; + +NSString *const OIDApplicationTypeParam = @"application_type"; + +NSString *const OIDRedirectURIsParam = @"redirect_uris"; + +NSString *const OIDResponseTypesParam = @"response_types"; + +NSString *const OIDGrantTypesParam = @"grant_types"; + +NSString *const OIDSubjectTypeParam = @"subject_type"; + +NSString *const OIDApplicationTypeNative = @"native"; diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDDefines.h b/Pods/AppAuth/Source/AppAuthCore/OIDDefines.h new file mode 100644 index 0000000..8ff4f19 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDDefines.h @@ -0,0 +1,51 @@ +/*! @file OIDDefines.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +/*! @def OIDIsEqualIncludingNil(x, y) + @brief Returns YES if x and y are equal by reference or value. + @discussion NOTE: parameters may be evaluated multiple times. Be careful if using this check + with expressions - especially if the expressions have side effects. + @param x An object. + @param y An object. + */ +#define OIDIsEqualIncludingNil(x, y) (((x) == (y)) || [(x) isEqual:(y)]) + +/*! @def OID_UNAVAILABLE_USE_INITIALIZER(designatedInitializer) + @brief Provides a template implementation for init-family methods which have been marked as + NS_UNAVILABLE. Stops the compiler from giving a warning when it's the super class' + designated initializer, and gives callers useful feedback telling them what the + new designated initializer is. + @remarks Takes a SEL as a parameter instead of a string so that we get compiler warnings if the + designated intializer's signature changes. + @param designatedInitializer A SEL referencing the designated initializer. + */ +#define OID_UNAVAILABLE_USE_INITIALIZER(designatedInitializer) { \ + NSString *reason = [NSString stringWithFormat:@"Called: %@\nDesignated Initializer:%@", \ + NSStringFromSelector(_cmd), \ + NSStringFromSelector(designatedInitializer)]; \ + @throw [NSException exceptionWithName:@"Attempt to call unavailable initializer." \ + reason:reason \ + userInfo:nil]; \ +} + +#ifdef _APPAUTHTRACE +# define AppAuthRequestTrace(fmt, ...) NSLog(fmt, ##__VA_ARGS__); +#else // _APPAUTHTRACE +# define AppAuthRequestTrace(...) +#endif // _APPAUTHTRACE + diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDEndSessionRequest.h b/Pods/AppAuth/Source/AppAuthCore/OIDEndSessionRequest.h new file mode 100644 index 0000000..4087e9f --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDEndSessionRequest.h @@ -0,0 +1,107 @@ +/*! @file OIDEndSessionRequest.h + @brief AppAuth iOS SDK + @copyright + Copyright 2017 The AppAuth Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +#import "OIDExternalUserAgentRequest.h" + +@class OIDServiceConfiguration; + +NS_ASSUME_NONNULL_BEGIN + +@interface OIDEndSessionRequest : NSObject + + +/*! @brief The service's configuration. + @remarks This configuration specifies how to connect to a particular OAuth provider. + Configurations may be created manually, or via an OpenID Connect Discovery Document. + */ +@property(nonatomic, readonly) OIDServiceConfiguration *configuration; + +/*! @brief The client's redirect URI. + @remarks post_logout_redirect_uri + @see http://openid.net/specs/openid-connect-session-1_0.html#RPLogout + */ +@property(nonatomic, readonly, nullable) NSURL *postLogoutRedirectURL; + +/*! @brief Previously issued ID Token passed to the end session endpoint as a hint about the End-User's current authenticated + session with the Client + @remarks id_token_hint + @see http://openid.net/specs/openid-connect-session-1_0.html#RPLogout + */ +@property(nonatomic, readonly, nullable) NSString *idTokenHint; + +/*! @brief An opaque value used by the client to maintain state between the request and callback. + @remarks state + @discussion If this value is not explicitly set, this library will automatically add state and + perform appropriate validation of the state in the authorization response. It is recommended + that the default implementation of this parameter be used wherever possible. Typically used + to prevent CSRF attacks, as recommended in RFC6819 Section 5.3.5. + @see http://openid.net/specs/openid-connect-session-1_0.html#RPLogout + */ +@property(nonatomic, readonly, nullable) NSString *state; + +/*! @brief The client's additional authorization parameters. + @see https://tools.ietf.org/html/rfc6749#section-3.1 + */ +@property(nonatomic, readonly, nullable) NSDictionary *additionalParameters; + +/*! @internal + @brief Unavailable. Please use @c initWithConfiguration:clientId:scopes:redirectURL:additionalParameters:. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief Creates an authorization request with opinionated defaults (a secure @c state). + @param configuration The service's configuration. + @param idTokenHint The previously issued ID Token + @param postLogoutRedirectURL The client's post-logout redirect URI. + callback. + @param additionalParameters The client's additional authorization parameters. +*/ +- (instancetype) + initWithConfiguration:(OIDServiceConfiguration *)configuration + idTokenHint:(NSString *)idTokenHint + postLogoutRedirectURL:(NSURL *)postLogoutRedirectURL + additionalParameters:(nullable NSDictionary *)additionalParameters; + +/*! @brief Designated initializer. + @param configuration The service's configuration. + @param idTokenHint The previously issued ID Token + @param postLogoutRedirectURL The client's post-logout redirect URI. + @param state An opaque value used by the client to maintain state between the request and + callback. + @param additionalParameters The client's additional authorization parameters. + */ +- (instancetype) + initWithConfiguration:(OIDServiceConfiguration *)configuration + idTokenHint:(NSString *)idTokenHint + postLogoutRedirectURL:(NSURL *)postLogoutRedirectURL + state:(NSString *)state + additionalParameters:(nullable NSDictionary *)additionalParameters + NS_DESIGNATED_INITIALIZER; + +/*! @brief Constructs the request URI by adding the request parameters to the query component of the + authorization endpoint URI using the "application/x-www-form-urlencoded" format. + @return A URL representing the authorization request. + @see http://openid.net/specs/openid-connect-session-1_0.html#RPLogout + */ +- (NSURL *)endSessionRequestURL; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDEndSessionRequest.m b/Pods/AppAuth/Source/AppAuthCore/OIDEndSessionRequest.m new file mode 100644 index 0000000..1e9eb0e --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDEndSessionRequest.m @@ -0,0 +1,190 @@ +/*! @file OIDEndSessionRequest.m + @brief AppAuth iOS SDK + @copyright + Copyright 2017 The AppAuth Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDEndSessionRequest.h" + +#import "OIDDefines.h" +#import "OIDTokenUtilities.h" +#import "OIDServiceConfiguration.h" +#import "OIDServiceDiscovery.h" +#import "OIDURLQueryComponent.h" + +/*! @brief The key for the @c configuration property for @c NSSecureCoding + */ +static NSString *const kConfigurationKey = @"configuration"; + +/*! @brief Key used to encode the @c state property for @c NSSecureCoding, and on the URL request. + */ +static NSString *const kStateKey = @"state"; + +/*! @brief Key used to encode the @c postLogoutRedirectURL property for @c NSSecureCoding, and on the URL request. + */ +static NSString *const kPostLogoutRedirectURLKey = @"post_logout_redirect_uri"; + +/*! @brief Key used to encode the @c idTokenHint property for @c NSSecureCoding, and on the URL request. + */ +static NSString *const kIdTokenHintKey = @"id_token_hint"; + +/*! @brief Key used to encode the @c additionalParameters property for @c NSSecureCoding + */ +static NSString *const kAdditionalParametersKey = @"additionalParameters"; + +/*! @brief Number of random bytes generated for the @state. + */ +static NSUInteger const kStateSizeBytes = 32; + +/*! @brief Assertion text for missing end_session_endpoint. + */ +static NSString *const OIDMissingEndSessionEndpointMessage = +@"The service configuration is missing an end_session_endpoint."; + +@implementation OIDEndSessionRequest + +- (instancetype)init + OID_UNAVAILABLE_USE_INITIALIZER( + @selector(initWithConfiguration: + idTokenHint: + postLogoutRedirectURL: + additionalParameters:) + ) + +- (instancetype)initWithConfiguration:(OIDServiceConfiguration *)configuration + idTokenHint:(NSString *)idTokenHint + postLogoutRedirectURL:(NSURL *)postLogoutRedirectURL + state:(NSString *)state + additionalParameters:(NSDictionary *)additionalParameters +{ + self = [super init]; + if (self) { + _configuration = [configuration copy]; + _idTokenHint = [idTokenHint copy]; + _postLogoutRedirectURL = [postLogoutRedirectURL copy]; + _state = [state copy]; + _additionalParameters = + [[NSDictionary alloc] initWithDictionary:additionalParameters copyItems:YES]; + } + return self; +} + +- (instancetype)initWithConfiguration:(OIDServiceConfiguration *)configuration + idTokenHint:(NSString *)idTokenHint + postLogoutRedirectURL:(NSURL *)postLogoutRedirectURL + additionalParameters:(NSDictionary *)additionalParameters +{ + return [self initWithConfiguration:configuration + idTokenHint:idTokenHint + postLogoutRedirectURL:postLogoutRedirectURL + state:[[self class] generateState] + additionalParameters:additionalParameters]; +} +#pragma mark - NSCopying + +- (instancetype)copyWithZone:(nullable NSZone *)zone { + // The documentation for NSCopying specifically advises us to return a reference to the original + // instance in the case where instances are immutable (as ours is): + // "Implement NSCopying by retaining the original instead of creating a new copy when the class + // and its contents are immutable." + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + OIDServiceConfiguration *configuration = [aDecoder decodeObjectOfClass:[OIDServiceConfiguration class] forKey:kConfigurationKey]; + + NSString *idTokenHint = [aDecoder decodeObjectOfClass:[NSString class] forKey:kIdTokenHintKey]; + NSURL *postLogoutRedirectURL = [aDecoder decodeObjectOfClass:[NSURL class] forKey:kPostLogoutRedirectURLKey]; + NSString *state = [aDecoder decodeObjectOfClass:[NSString class] forKey:kStateKey]; + NSSet *additionalParameterCodingClasses = [NSSet setWithArray:@[ + [NSDictionary class], + [NSString class] + ]]; + NSDictionary *additionalParameters = [aDecoder decodeObjectOfClasses:additionalParameterCodingClasses + forKey:kAdditionalParametersKey]; + + self = [self initWithConfiguration:configuration + idTokenHint:idTokenHint + postLogoutRedirectURL:postLogoutRedirectURL + state:state + additionalParameters:additionalParameters]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_configuration forKey:kConfigurationKey]; + [aCoder encodeObject:_idTokenHint forKey:kIdTokenHintKey]; + [aCoder encodeObject:_postLogoutRedirectURL forKey:kPostLogoutRedirectURLKey]; + [aCoder encodeObject:_state forKey:kStateKey]; + [aCoder encodeObject:_additionalParameters forKey:kAdditionalParametersKey]; +} + +#pragma mark - NSObject overrides + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, request: %@>", + NSStringFromClass([self class]), + (void *)self, + self.endSessionRequestURL]; +} + ++ (nullable NSString *)generateState { + return [OIDTokenUtilities randomURLSafeStringWithSize:kStateSizeBytes]; +} + +#pragma mark - OIDExternalUserAgentRequest + +- (NSURL*)externalUserAgentRequestURL { + return [self endSessionRequestURL]; +} + +- (NSString *)redirectScheme { + return [_postLogoutRedirectURL scheme]; +} + +#pragma mark - + +- (NSURL *)endSessionRequestURL { + OIDURLQueryComponent *query = [[OIDURLQueryComponent alloc] init]; + + // Add any additional parameters the client has specified. + [query addParameters:_additionalParameters]; + + // Add optional parameters, as applicable. + if (_idTokenHint) { + [query addParameter:kIdTokenHintKey value:_idTokenHint]; + } + + if (_postLogoutRedirectURL) { + [query addParameter:kPostLogoutRedirectURLKey value:_postLogoutRedirectURL.absoluteString]; + } + + if (_state) { + [query addParameter:kStateKey value:_state]; + } + + NSAssert(_configuration.endSessionEndpoint, OIDMissingEndSessionEndpointMessage); + + // Construct the URL + return [query URLByReplacingQueryInURL:_configuration.endSessionEndpoint]; +} + +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDEndSessionResponse.h b/Pods/AppAuth/Source/AppAuthCore/OIDEndSessionResponse.h new file mode 100644 index 0000000..ab69b93 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDEndSessionResponse.h @@ -0,0 +1,64 @@ +/*! @file OIDEndSessionResponse.h + @brief AppAuth iOS SDK + @copyright + Copyright 2017 The AppAuth Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@class OIDEndSessionRequest; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Represents the response to an End Session request. + @see http://openid.net/specs/openid-connect-session-1_0.html#RPLogout + */ + +@interface OIDEndSessionResponse : NSObject + +/*! @brief The request which was serviced. + */ +@property(nonatomic, readonly) OIDEndSessionRequest *request; + +/*! @brief REQUIRED if the "state" parameter was present in the client end-session request. The + exact value received from the client. + @remarks state + */ +@property(nonatomic, readonly, nullable) NSString *state; + +/*! @brief Additional parameters returned from the end session endpoint. + */ +@property(nonatomic, readonly, nullable) + NSDictionary *> *additionalParameters; + +/*! @internal + @brief Unavailable. Please use initWithParameters:. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief Designated initializer. + @param request The serviced request. + @param parameters The decoded parameters returned from the End Session Endpoint. + @remarks Known parameters are extracted from the @c parameters parameter and the normative + properties are populated. Non-normative parameters are placed in the + @c #additionalParameters dictionary. + */ +- (instancetype)initWithRequest:(OIDEndSessionRequest *)request + parameters:(NSDictionary *> *)parameters + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDEndSessionResponse.m b/Pods/AppAuth/Source/AppAuthCore/OIDEndSessionResponse.m new file mode 100644 index 0000000..bedf0cd --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDEndSessionResponse.m @@ -0,0 +1,118 @@ +/*! @file OIDEndSessionResponse.m + @brief AppAuth iOS SDK + @copyright + Copyright 2017 The AppAuth Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDEndSessionResponse.h" + +#import "OIDDefines.h" +#import "OIDEndSessionRequest.h" +#import "OIDFieldMapping.h" + +/*! @brief The key for the @c state property in the incoming parameters and for @c NSSecureCoding. + */ +static NSString *const kStateKey = @"state"; + +/*! @brief Key used to encode the @c request property for @c NSSecureCoding + */ +static NSString *const kRequestKey = @"request"; + +/*! @brief Key used to encode the @c additionalParameters property for + @c NSSecureCoding + */ +static NSString *const kAdditionalParametersKey = @"additionalParameters"; + +@implementation OIDEndSessionResponse + +#pragma mark - Initializers + +- (instancetype)init + OID_UNAVAILABLE_USE_INITIALIZER(@selector(initWithRequest:parameters:)) + +- (instancetype)initWithRequest:(OIDEndSessionRequest *)request + parameters:(NSDictionary *> *)parameters { + self = [super init]; + if (self) { + _request = [request copy]; + NSDictionary *> *additionalParameters = + [OIDFieldMapping remainingParametersWithMap:[[self class] fieldMap] + parameters:parameters + instance:self]; + _additionalParameters = additionalParameters; + } + return self; +} + +/*! @brief Returns a mapping of incoming parameters to instance variables. + @return A mapping of incoming parameters to instance variables. + */ ++ (NSDictionary *)fieldMap { + static NSMutableDictionary *fieldMap; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + fieldMap = [NSMutableDictionary dictionary]; + fieldMap[kStateKey] = + [[OIDFieldMapping alloc] initWithName:@"_state" type:[NSString class]]; + }); + return fieldMap; +} + +#pragma mark - NSCopying + +- (instancetype)copyWithZone:(nullable NSZone *)zone { + // The documentation for NSCopying specifically advises us to return a reference to the original + // instance in the case where instances are immutable (as ours is): + // "Implement NSCopying by retaining the original instead of creating a new copy when the class + // and its contents are immutable." + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + OIDEndSessionRequest *request = + [aDecoder decodeObjectOfClass:[OIDEndSessionRequest class] forKey:kRequestKey]; + self = [self initWithRequest:request parameters:@{ }]; + if (self) { + [OIDFieldMapping decodeWithCoder:aDecoder map:[[self class] fieldMap] instance:self]; + _additionalParameters = [aDecoder decodeObjectOfClasses:[OIDFieldMapping JSONTypes] + forKey:kAdditionalParametersKey]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_request forKey:kRequestKey]; + [OIDFieldMapping encodeWithCoder:aCoder map:[[self class] fieldMap] instance:self]; + [aCoder encodeObject:_additionalParameters forKey:kAdditionalParametersKey]; +} + +#pragma mark - NSObject overrides + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, state: \"%@\", " + "additionalParameters: %@, request: %@>", + NSStringFromClass([self class]), + (void *)self, + _state, + _additionalParameters, + _request]; +} +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDError.h b/Pods/AppAuth/Source/AppAuthCore/OIDError.h new file mode 100644 index 0000000..5131f0a --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDError.h @@ -0,0 +1,393 @@ +/*! @file OIDError.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief The error domain for all NSErrors returned from the AppAuth library. + */ +extern NSString *const OIDGeneralErrorDomain; + +/*! @brief The error domain for OAuth specific errors on the authorization endpoint. + @discussion This error domain is used when the server responds to an authorization request + with an explicit OAuth error, as defined by RFC6749 Section 4.1.2.1. If the authorization + response is invalid and not explicitly an error response, another error domain will be used. + The error response parameter dictionary is available in the + \NSError_userInfo dictionary using the @c ::OIDOAuthErrorResponseErrorKey key. + The \NSError_code will be one of the @c ::OIDErrorCodeOAuthAuthorization enum values. + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ +extern NSString *const OIDOAuthAuthorizationErrorDomain; + +/*! @brief The error domain for OAuth specific errors on the token endpoint. + @discussion This error domain is used when the server responds with HTTP 400 and an OAuth error, + as defined RFC6749 Section 5.2. If an HTTP 400 response does not parse as an OAuth error + (i.e. no 'error' field is present or the JSON is invalid), another error domain will be + used. The entire OAuth error response dictionary is available in the \NSError_userInfo + dictionary using the @c ::OIDOAuthErrorResponseErrorKey key. Unlike transient network + errors, errors in this domain invalidate the authentication state, and either indicate a + client error or require user interaction (i.e. reauthentication) to resolve. + The \NSError_code will be one of the @c ::OIDErrorCodeOAuthToken enum values. + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ +extern NSString *const OIDOAuthTokenErrorDomain; + +/*! @brief The error domain for dynamic client registration errors. + @discussion This error domain is used when the server responds with HTTP 400 and an OAuth error, + as defined in OpenID Connect Dynamic Client Registration 1.0 Section 3.3. If an HTTP 400 + response does not parse as an OAuth error (i.e. no 'error' field is present or the JSON is + invalid), another error domain will be used. The entire OAuth error response dictionary is + available in the \NSError_userInfo dictionary using the @c ::OIDOAuthErrorResponseErrorKey + key. Unlike transient network errors, errors in this domain invalidate the authentication + state, and indicates a client error. + The \NSError_code will be one of the @c ::OIDErrorCodeOAuthToken enum values. + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationError + */ +extern NSString *const OIDOAuthRegistrationErrorDomain; + +/*! @brief The error domain for authorization errors encountered out of band on the resource server. + */ +extern NSString *const OIDResourceServerAuthorizationErrorDomain; + +/*! @brief An error domain representing received HTTP errors. + */ +extern NSString *const OIDHTTPErrorDomain; + +/*! @brief An error key for the original OAuth error response (if any). + */ +extern NSString *const OIDOAuthErrorResponseErrorKey; + +/*! @brief The key of the 'error' response field in a RFC6749 Section 5.2 response. + @remark error + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ +extern NSString *const OIDOAuthErrorFieldError; + +/*! @brief The key of the 'error_description' response field in a RFC6749 Section 5.2 response. + @remark error_description + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ +extern NSString *const OIDOAuthErrorFieldErrorDescription; + +/*! @brief The key of the 'error_uri' response field in a RFC6749 Section 5.2 response. + @remark error_uri + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ +extern NSString *const OIDOAuthErrorFieldErrorURI; + +/*! @brief The various error codes returned from the AppAuth library. + */ +typedef NS_ENUM(NSInteger, OIDErrorCode) { + /*! @brief Indicates a problem parsing an OpenID Connect Service Discovery document. + */ + OIDErrorCodeInvalidDiscoveryDocument = -2, + + /*! @brief Indicates the user manually canceled the OAuth authorization code flow. + */ + OIDErrorCodeUserCanceledAuthorizationFlow = -3, + + /*! @brief Indicates an OAuth authorization flow was programmatically cancelled. + */ + OIDErrorCodeProgramCanceledAuthorizationFlow = -4, + + /*! @brief Indicates a network error or server error occurred. + */ + OIDErrorCodeNetworkError = -5, + + /*! @brief Indicates a server error occurred. + */ + OIDErrorCodeServerError = -6, + + /*! @brief Indicates a problem occurred deserializing the response/JSON. + */ + OIDErrorCodeJSONDeserializationError = -7, + + /*! @brief Indicates a problem occurred constructing the token response from the JSON. + */ + OIDErrorCodeTokenResponseConstructionError = -8, + + /*! @brief @c UIApplication.openURL: returned NO when attempting to open the authorization + request in mobile Safari. + */ + OIDErrorCodeSafariOpenError = -9, + + /*! @brief @c NSWorkspace.openURL returned NO when attempting to open the authorization + request in the default browser. + */ + OIDErrorCodeBrowserOpenError = -10, + + /*! @brief Indicates a problem when trying to refresh the tokens. + */ + OIDErrorCodeTokenRefreshError = -11, + + /*! @brief Indicates a problem occurred constructing the registration response from the JSON. + */ + OIDErrorCodeRegistrationResponseConstructionError = -12, + + /*! @brief Indicates a problem occurred deserializing the response/JSON. + */ + OIDErrorCodeJSONSerializationError = -13, + + /*! @brief The ID Token did not parse. + */ + OIDErrorCodeIDTokenParsingError = -14, + + /*! @brief The ID Token did not pass validation (e.g. issuer, audience checks). + */ + OIDErrorCodeIDTokenFailedValidationError = -15, +}; + +/*! @brief Enum of all possible OAuth error codes as defined by RFC6749 + @discussion Used by @c ::OIDErrorCodeOAuthAuthorization and @c ::OIDErrorCodeOAuthToken + which define endpoint-specific subsets of OAuth codes. Those enum types are down-castable + to this one. + @see https://tools.ietf.org/html/rfc6749#section-11.4 + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ +typedef NS_ENUM(NSInteger, OIDErrorCodeOAuth) { + + /*! @remarks invalid_request + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthInvalidRequest = -2, + + /*! @remarks unauthorized_client + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthUnauthorizedClient = -3, + + /*! @remarks access_denied + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ + OIDErrorCodeOAuthAccessDenied = -4, + + /*! @remarks unsupported_response_type + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ + OIDErrorCodeOAuthUnsupportedResponseType = -5, + + /*! @remarks invalid_scope + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthInvalidScope = -6, + + /*! @remarks server_error + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ + OIDErrorCodeOAuthServerError = -7, + + /*! @remarks temporarily_unavailable + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ + OIDErrorCodeOAuthTemporarilyUnavailable = -8, + + /*! @remarks invalid_client + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthInvalidClient = -9, + + /*! @remarks invalid_grant + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthInvalidGrant = -10, + + /*! @remarks unsupported_grant_type + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthUnsupportedGrantType = -11, + + /*! @remarks invalid_redirect_uri + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationError + */ + OIDErrorCodeOAuthInvalidRedirectURI = -12, + + /*! @remarks invalid_client_metadata + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationError + */ + OIDErrorCodeOAuthInvalidClientMetadata = -13, + + /*! @brief An authorization error occurring on the client rather than the server. For example, + due to a state mismatch or misconfiguration. Should be treated as an unrecoverable + authorization error. + */ + OIDErrorCodeOAuthClientError = -0xEFFF, + + /*! @brief An OAuth error not known to this library + @discussion Indicates an OAuth error as per RFC6749, but the error code was not in our + list. It could be a custom error code, or one from an OAuth extension. See the "error" key + of the \NSError_userInfo property. Such errors are assumed to invalidate the + authentication state + */ + OIDErrorCodeOAuthOther = -0xF000, +}; + +/*! @brief The error codes for the @c ::OIDOAuthAuthorizationErrorDomain error domain + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ +typedef NS_ENUM(NSInteger, OIDErrorCodeOAuthAuthorization) { + /*! @remarks invalid_request + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ + OIDErrorCodeOAuthAuthorizationInvalidRequest = OIDErrorCodeOAuthInvalidRequest, + + /*! @remarks unauthorized_client + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ + OIDErrorCodeOAuthAuthorizationUnauthorizedClient = OIDErrorCodeOAuthUnauthorizedClient, + + /*! @remarks access_denied + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ + OIDErrorCodeOAuthAuthorizationAccessDenied = + OIDErrorCodeOAuthAccessDenied, + + /*! @remarks unsupported_response_type + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ + OIDErrorCodeOAuthAuthorizationUnsupportedResponseType = + OIDErrorCodeOAuthUnsupportedResponseType, + + /*! @brief Indicates a network error or server error occurred. + @remarks invalid_scope + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ + OIDErrorCodeOAuthAuthorizationAuthorizationInvalidScope = OIDErrorCodeOAuthInvalidScope, + + /*! @brief Indicates a server error occurred. + @remarks server_error + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ + OIDErrorCodeOAuthAuthorizationServerError = OIDErrorCodeOAuthServerError, + + /*! @remarks temporarily_unavailable + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ + OIDErrorCodeOAuthAuthorizationTemporarilyUnavailable = OIDErrorCodeOAuthTemporarilyUnavailable, + + /*! @brief An authorization error occurring on the client rather than the server. For example, + due to a state mismatch or client misconfiguration. Should be treated as an unrecoverable + authorization error. + */ + OIDErrorCodeOAuthAuthorizationClientError = OIDErrorCodeOAuthClientError, + + /*! @brief An authorization OAuth error not known to this library + @discussion this indicates an OAuth error as per RFC6749, but the error code was not in our + list. It could be a custom error code, or one from an OAuth extension. See the "error" key + of the \NSError_userInfo property. We assume such errors are not transient. + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ + OIDErrorCodeOAuthAuthorizationOther = OIDErrorCodeOAuthOther, +}; + + +/*! @brief The error codes for the @c ::OIDOAuthTokenErrorDomain error domain + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ +typedef NS_ENUM(NSInteger, OIDErrorCodeOAuthToken) { + /*! @remarks invalid_request + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthTokenInvalidRequest = OIDErrorCodeOAuthInvalidRequest, + + /*! @remarks invalid_client + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthTokenInvalidClient = OIDErrorCodeOAuthInvalidClient, + + /*! @remarks invalid_grant + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthTokenInvalidGrant = OIDErrorCodeOAuthInvalidGrant, + + /*! @remarks unauthorized_client + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthTokenUnauthorizedClient = OIDErrorCodeOAuthUnauthorizedClient, + + /*! @remarks unsupported_grant_type + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthTokenUnsupportedGrantType = OIDErrorCodeOAuthUnsupportedGrantType, + + /*! @remarks invalid_scope + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthTokenInvalidScope = OIDErrorCodeOAuthInvalidScope, + + /*! @brief An unrecoverable token error occurring on the client rather than the server. + */ + OIDErrorCodeOAuthTokenClientError = OIDErrorCodeOAuthClientError, + + /*! @brief A token endpoint OAuth error not known to this library + @discussion this indicates an OAuth error as per RFC6749, but the error code was not in our + list. It could be a custom error code, or one from an OAuth extension. See the "error" key + of the \NSError_userInfo property. We assume such errors are not transient. + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthTokenOther = OIDErrorCodeOAuthOther, +}; + +/*! @brief The error codes for the @c ::OIDOAuthRegistrationErrorDomain error domain + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationError + */ +typedef NS_ENUM(NSInteger, OIDErrorCodeOAuthRegistration) { + /*! @remarks invalid_request + @see http://tools.ietf.org/html/rfc6750#section-3.1 + */ + OIDErrorCodeOAuthRegistrationInvalidRequest = OIDErrorCodeOAuthInvalidRequest, + + /*! @remarks invalid_redirect_uri + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationError + */ + OIDErrorCodeOAuthRegistrationInvalidRedirectURI = OIDErrorCodeOAuthInvalidRedirectURI, + + /*! @remarks invalid_client_metadata + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationError + */ + OIDErrorCodeOAuthRegistrationInvalidClientMetadata = OIDErrorCodeOAuthInvalidClientMetadata, + + /*! @brief An unrecoverable token error occurring on the client rather than the server. + */ + OIDErrorCodeOAuthRegistrationClientError = OIDErrorCodeOAuthClientError, + + /*! @brief A registration endpoint OAuth error not known to this library + @discussion this indicates an OAuth error, but the error code was not in our + list. It could be a custom error code, or one from an OAuth extension. See the "error" key + of the \NSError_userInfo property. We assume such errors are not transient. + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ + OIDErrorCodeOAuthRegistrationOther = OIDErrorCodeOAuthOther, +}; + + +/*! @brief The exception text for the exception which occurs when a + @c OIDExternalUserAgentSession receives a message after it has already completed. + */ +extern NSString *const OIDOAuthExceptionInvalidAuthorizationFlow; + +/*! @brief The text for the exception which occurs when a Token Request is constructed + with a null redirectURL for a grant_type that requires a nonnull Redirect + */ +extern NSString *const OIDOAuthExceptionInvalidTokenRequestNullRedirectURL; + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDError.m b/Pods/AppAuth/Source/AppAuthCore/OIDError.m new file mode 100644 index 0000000..87c8623 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDError.m @@ -0,0 +1,45 @@ +/*! @file OIDError.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDError.h" + +NSString *const OIDGeneralErrorDomain = @"org.openid.appauth.general"; + +NSString *const OIDOAuthTokenErrorDomain = @"org.openid.appauth.oauth_token"; + +NSString *const OIDOAuthAuthorizationErrorDomain = @"org.openid.appauth.oauth_authorization"; + +NSString *const OIDOAuthRegistrationErrorDomain = @"org.openid.appauth.oauth_registration"; + +NSString *const OIDResourceServerAuthorizationErrorDomain = @"org.openid.appauth.resourceserver"; + +NSString *const OIDHTTPErrorDomain = @"org.openid.appauth.remote-http"; + +NSString *const OIDOAuthExceptionInvalidAuthorizationFlow = @"An OAuth redirect was sent to a " + "OIDExternalUserAgentSession after it already completed."; + +NSString *const OIDOAuthExceptionInvalidTokenRequestNullRedirectURL = @"A OIDTokenRequest was " + "created with a grant_type that requires a redirectURL, but a null redirectURL was given"; + +NSString *const OIDOAuthErrorResponseErrorKey = @"OIDOAuthErrorResponseErrorKey"; + +NSString *const OIDOAuthErrorFieldError = @"error"; + +NSString *const OIDOAuthErrorFieldErrorDescription = @"error_description"; + +NSString *const OIDOAuthErrorFieldErrorURI = @"error_uri"; diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDErrorUtilities.h b/Pods/AppAuth/Source/AppAuthCore/OIDErrorUtilities.h new file mode 100644 index 0000000..3380f6f --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDErrorUtilities.h @@ -0,0 +1,107 @@ +/*! @file OIDErrorUtilities.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +#import "OIDError.h" + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Convenience methods for creating standardized \NSError instances. + */ +@interface OIDErrorUtilities : NSObject + +/*! @brief Creates a standard \NSError from an @c ::OIDErrorCode and custom user info. + Automatically populates the localized error description. + @param code The error code. + @param underlyingError The underlying error which occurred, if applicable. + @param description A custom description, if applicable. + @return An \NSError representing the error code. + */ ++ (NSError *)errorWithCode:(OIDErrorCode)code + underlyingError:(nullable NSError *)underlyingError + description:(nullable NSString *)description; + +/*! @brief Creates a standard \NSError from an @c ::OIDErrorCode and custom user info. + Automatically populates the localized error description. + @param OAuthErrorDomain The OAuth error domain. Must be @c ::OIDOAuthAuthorizationErrorDomain or + @c ::OIDOAuthTokenErrorDomain. + @param errorResponse The dictionary from an OAuth error response (as per RFC6749 Section 5.2). + @param underlyingError The underlying error which occurred, if applicable. + @return An \NSError representing the OAuth error. + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ ++ (NSError *)OAuthErrorWithDomain:(NSString *)OAuthErrorDomain + OAuthResponse:(NSDictionary *)errorResponse + underlyingError:(nullable NSError *)underlyingError; + +/*! @brief Creates a \NSError indicating that the resource server responded with an authorization + error. + @param code Your error code. + @param errorResponse The resource server error response, if any. + @param underlyingError The underlying error which occurred, if applicable. + @return An \NSError representing the authorization error from the resource server. + */ ++ (NSError *)resourceServerAuthorizationErrorWithCode:(NSInteger)code + errorResponse:(nullable NSDictionary *)errorResponse + underlyingError:(nullable NSError *)underlyingError; + + +/*! @brief Creates a standard \NSError from an \NSHTTPURLResponse. Automatically + populates the localized error description with the response data associated with the + \NSHTTPURLResponse, if available. + @param HTTPURLResponse The response which indicates an error occurred. + @param data The response data associated with the response which should be converted to an + @c NSString assuming a UTF-8 encoding, if available. + @return An \NSError representing the error. + */ ++ (NSError *)HTTPErrorWithHTTPResponse:(NSHTTPURLResponse *)HTTPURLResponse + data:(nullable NSData *)data; + +/*! @brief Raises an exception with the given name as both the name, and the message. + @param name The name of the exception. + */ ++ (void)raiseException:(NSString *)name; + +/*! @brief Raises an exception with the given name and message. + @param name The name of the exception. + @param message The message of the exception. + */ ++ (void)raiseException:(NSString *)name message:(NSString *)message; + +/*! @brief Converts an OAuth error code into an @c ::OIDErrorCodeOAuth error code. + @param errorCode The OAuth error code. + @discussion Returns @c ::OIDErrorCodeOAuthOther if the string is not in AppAuth's list. + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ ++ (OIDErrorCodeOAuth)OAuthErrorCodeFromString:(NSString *)errorCode; + +/*! @brief Returns true if the given error domain is an OAuth error domain. + @param errorDomain The error domain to test. + @discussion An OAuth error domain is used for errors returned per RFC6749 sections 4.1.2.1 and + 5.2. Other errors, such as network errors can also occur but they will not have an OAuth + error domain. + @see https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + @see https://tools.ietf.org/html/rfc6749#section-5.2 + */ ++ (BOOL)isOAuthErrorDomain:(NSString*)errorDomain; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDErrorUtilities.m b/Pods/AppAuth/Source/AppAuthCore/OIDErrorUtilities.m new file mode 100644 index 0000000..3b3c060 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDErrorUtilities.m @@ -0,0 +1,172 @@ +/*! @file OIDErrorUtilities.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDErrorUtilities.h" + +@implementation OIDErrorUtilities + ++ (NSError *)errorWithCode:(OIDErrorCode)code + underlyingError:(NSError *)underlyingError + description:(NSString *)description { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + if (underlyingError) { + userInfo[NSUnderlyingErrorKey] = underlyingError; + } + if (description) { + userInfo[NSLocalizedDescriptionKey] = description; + } + // TODO: Populate localized description based on code. + NSError *error = [NSError errorWithDomain:OIDGeneralErrorDomain + code:code + userInfo:userInfo]; + return error; +} + ++ (BOOL)isOAuthErrorDomain:(NSString *)errorDomain { + return errorDomain == OIDOAuthRegistrationErrorDomain + || errorDomain == OIDOAuthAuthorizationErrorDomain + || errorDomain == OIDOAuthTokenErrorDomain; +} + ++ (NSError *)resourceServerAuthorizationErrorWithCode:(NSInteger)code + errorResponse:(nullable NSDictionary *)errorResponse + underlyingError:(nullable NSError *)underlyingError { + // builds the userInfo dictionary with the full OAuth response and other information + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + if (errorResponse) { + userInfo[OIDOAuthErrorResponseErrorKey] = errorResponse; + } + if (underlyingError) { + userInfo[NSUnderlyingErrorKey] = underlyingError; + } + NSError *error = [NSError errorWithDomain:OIDResourceServerAuthorizationErrorDomain + code:code + userInfo:userInfo]; + return error; +} + ++ (NSError *)OAuthErrorWithDomain:(NSString *)oAuthErrorDomain + OAuthResponse:(NSDictionary *)errorResponse + underlyingError:(NSError *)underlyingError { + // not a valid OAuth error + if (![self isOAuthErrorDomain:oAuthErrorDomain] + || !errorResponse + || !errorResponse[OIDOAuthErrorFieldError] + || ![errorResponse[OIDOAuthErrorFieldError] isKindOfClass:[NSString class]]) { + return [[self class] errorWithCode:OIDErrorCodeNetworkError + underlyingError:underlyingError + description:underlyingError.localizedDescription]; + } + + // builds the userInfo dictionary with the full OAuth response and other information + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + userInfo[OIDOAuthErrorResponseErrorKey] = errorResponse; + if (underlyingError) { + userInfo[NSUnderlyingErrorKey] = underlyingError; + } + + NSString *oauthErrorCodeString = errorResponse[OIDOAuthErrorFieldError]; + NSString *oauthErrorMessage = nil; + if ([errorResponse[OIDOAuthErrorFieldErrorDescription] isKindOfClass:[NSString class]]) { + oauthErrorMessage = errorResponse[OIDOAuthErrorFieldErrorDescription]; + } else { + oauthErrorMessage = [errorResponse[OIDOAuthErrorFieldErrorDescription] description]; + } + NSString *oauthErrorURI = nil; + if ([errorResponse[OIDOAuthErrorFieldErrorURI] isKindOfClass:[NSString class]]) { + oauthErrorURI = errorResponse[OIDOAuthErrorFieldErrorURI]; + } else { + oauthErrorURI = [errorResponse[OIDOAuthErrorFieldErrorURI] description]; + } + + // builds the error description, using the information supplied by the server if possible + NSMutableString *description = [NSMutableString string]; + [description appendString:oauthErrorCodeString]; + if (oauthErrorMessage) { + [description appendString:@": "]; + [description appendString:oauthErrorMessage]; + } + if (oauthErrorURI) { + if ([description length] > 0) { + [description appendString:@" - "]; + } + [description appendString:oauthErrorURI]; + } + if ([description length] == 0) { + // backup description + [description appendFormat:@"OAuth error: %@ - https://tools.ietf.org/html/rfc6749#section-5.2", + oauthErrorCodeString]; + } + userInfo[NSLocalizedDescriptionKey] = description; + + // looks up the error code based on the "error" response param + OIDErrorCodeOAuth code = [[self class] OAuthErrorCodeFromString:oauthErrorCodeString]; + + NSError *error = [NSError errorWithDomain:oAuthErrorDomain + code:code + userInfo:userInfo]; + return error; +} + ++ (NSError *)HTTPErrorWithHTTPResponse:(NSHTTPURLResponse *)HTTPURLResponse + data:(nullable NSData *)data { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + if (data) { + NSString *serverResponse = + [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + if (serverResponse) { + userInfo[NSLocalizedDescriptionKey] = serverResponse; + } + } + NSError *serverError = + [NSError errorWithDomain:OIDHTTPErrorDomain + code:HTTPURLResponse.statusCode + userInfo:userInfo]; + return serverError; +} + ++ (OIDErrorCodeOAuth)OAuthErrorCodeFromString:(NSString *)errorCode { + NSDictionary *errorCodes = @{ + @"invalid_request": @(OIDErrorCodeOAuthInvalidRequest), + @"unauthorized_client": @(OIDErrorCodeOAuthUnauthorizedClient), + @"access_denied": @(OIDErrorCodeOAuthAccessDenied), + @"unsupported_response_type": @(OIDErrorCodeOAuthUnsupportedResponseType), + @"invalid_scope": @(OIDErrorCodeOAuthInvalidScope), + @"server_error": @(OIDErrorCodeOAuthServerError), + @"temporarily_unavailable": @(OIDErrorCodeOAuthTemporarilyUnavailable), + @"invalid_client": @(OIDErrorCodeOAuthInvalidClient), + @"invalid_grant": @(OIDErrorCodeOAuthInvalidGrant), + @"unsupported_grant_type": @(OIDErrorCodeOAuthUnsupportedGrantType), + }; + NSNumber *code = errorCodes[errorCode]; + if (code) { + return [code integerValue]; + } else { + return OIDErrorCodeOAuthOther; + } +} + ++ (void)raiseException:(NSString *)name { + [[self class] raiseException:name message:name]; +} + ++ (void)raiseException:(NSString *)name message:(NSString *)message { + [NSException raise:name format:@"%@", message]; +} + +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDExternalUserAgent.h b/Pods/AppAuth/Source/AppAuthCore/OIDExternalUserAgent.h new file mode 100644 index 0000000..c4eb0a9 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDExternalUserAgent.h @@ -0,0 +1,53 @@ +/*! @file OIDExternalUserAgent.h + @brief AppAuth iOS SDK + @copyright + Copyright 2016 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@protocol OIDExternalUserAgentSession; +@protocol OIDExternalUserAgentRequest; + +NS_ASSUME_NONNULL_BEGIN + +/*! @protocol OIDExternalUserAgent + @brief An external user-agent UI that presents displays the request to the user. Clients may + provide custom implementations of an external user-agent to customize the way the requests + are presented to the end user. + */ +@protocol OIDExternalUserAgent + +/*! @brief Presents the request in the external user-agent. + @param request The request to be presented in the external user-agent. + @param session The @c OIDExternalUserAgentSession instance that initiates presenting the UI. + Concrete implementations of a @c OIDExternalUserAgent may call + resumeExternalUserAgentFlowWithURL or failExternalUserAgentFlowWithError on session to either + resume or fail the request. + @return YES If the request UI was successfully presented to the user. + */ +- (BOOL)presentExternalUserAgentRequest:(id )request + session:(id)session; + +/*! @brief Dimisses the external user-agent and calls completion when the dismiss operation ends. + @param animated Whether or not the dismiss operation should be animated. + @remarks Has no effect if no UI is presented. + @param completion The block to be called when the dismiss operations ends + */ +- (void)dismissExternalUserAgentAnimated:(BOOL)animated completion:(void (^)(void))completion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDExternalUserAgentRequest.h b/Pods/AppAuth/Source/AppAuthCore/OIDExternalUserAgentRequest.h new file mode 100644 index 0000000..8ea40cb --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDExternalUserAgentRequest.h @@ -0,0 +1,37 @@ +/*! @file OIDExternalUserAgent.h + @brief AppAuth iOS SDK + @copyright + Copyright 2017 The AppAuth Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +/*! @protocol OIDExternalUserAgent + @brief An interface that any external user-agent request may implement to use the + @c OIDExternalUserAgent flow. + */ +@protocol OIDExternalUserAgentRequest + +/*! @brief Method to create and return the complete request URL instance. + @return A @c NSURL instance which contains the URL to be opened in an external UI (i.e. browser) + */ +- (NSURL*)externalUserAgentRequestURL; + +/*! @brief If this external user-agent request has a redirect URL, this should return its scheme. + Since some external requests have optional callbacks (such as the end session endpoint), the + return value of this method is nullable. + @return A @c NSString instance that contains the scheme of a callback url, or nil if there is + no callback url for this request. + */ +- (NSString*)redirectScheme; +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDExternalUserAgentSession.h b/Pods/AppAuth/Source/AppAuthCore/OIDExternalUserAgentSession.h new file mode 100644 index 0000000..3b886a6 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDExternalUserAgentSession.h @@ -0,0 +1,65 @@ +/*! @file OIDExternalUserAgentSession.h + @brief AppAuth iOS SDK + @copyright + Copyright 2017 The AppAuth Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Represents an in-flight external user-agent session. + */ +@protocol OIDExternalUserAgentSession + +/*! @brief Cancels the code flow session, invoking the request's callback with a cancelled error. + @remarks Has no effect if called more than once, or after a + @c OIDExternalUserAgentSession.resumeExternalUserAgentFlowWithURL: message was received. + Will cause an error with code: @c ::OIDErrorCodeProgramCanceledAuthorizationFlow to be + passed to the @c callback block passed to + @c OIDAuthorizationService.presentAuthorizationRequest:presentingViewController:callback: + */ +- (void)cancel; + +/*! @brief Cancels the code flow session, invoking the request's callback with a cancelled error. + @remarks Has no effect if called more than once, or after a + @c OIDExternalUserAgentSession.resumeExternalUserAgentFlowWithURL: message was received. + Will cause an error with code: @c ::OIDErrorCodeProgramCanceledAuthorizationFlow to be + passed to the @c callback block passed to + @c OIDAuthorizationService.presentAuthorizationRequest:presentingViewController:callback: + @param completion The block to be called when the cancel operation ends + */ +- (void)cancelWithCompletion:(nullable void (^)(void))completion; + +/*! @brief Clients should call this method with the result of the external user-agent code flow if + it becomes available. + @param URL The redirect URL invoked by the server. + @discussion When the URL represented a valid response, implementations should clean up any + left-over UI state from the request, for example by closing the + \SFSafariViewController or loopback HTTP listener if those were used. The completion block + of the pending request should then be invoked. + @remarks Has no effect if called more than once, or after a @c cancel message was received. + @return YES if the passed URL matches the expected redirect URL and was consumed, NO otherwise. + */ +- (BOOL)resumeExternalUserAgentFlowWithURL:(NSURL *)URL; + +/*! @brief @c OIDExternalUserAgent or clients should call this method when the + external user-agent flow failed with a non-OAuth error. + @param error The error that is the reason for the failure of this external flow. + @remarks Has no effect if called more than once, or after a @c cancel message was received. + */ +- (void)failExternalUserAgentFlowWithError:(NSError *)error; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDFieldMapping.h b/Pods/AppAuth/Source/AppAuthCore/OIDFieldMapping.h new file mode 100644 index 0000000..f0a56fe --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDFieldMapping.h @@ -0,0 +1,126 @@ +/*! @file OIDFieldMapping.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Represents a function which transforms incoming source values into instance variable + values. + */ +typedef _Nullable id(^OIDFieldMappingConversionFunction)(NSObject *_Nullable value); + +/*! @brief Describes the mapping of a key/value pair to an iVar with an optional conversion + function. + */ +@interface OIDFieldMapping : NSObject + +/*! @brief The name of the instance variable the field should be mapped to. + */ +@property(nonatomic, readonly) NSString *name; + +/*! @brief The type of the instance variable. + */ +@property(nonatomic, readonly) Class expectedType; + +/*! @brief An optional conversion function which specifies a transform from the incoming data to the + instance variable value. + */ +@property(nonatomic, readonly, nullable) OIDFieldMappingConversionFunction conversion; + +/*! @internal + @brief Unavailable. Please use initWithName:type:conversion:. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief The designated initializer. + @param name The name of the instance variable the field should be mapped to. + @param type The type of the instance variable. + @param conversion An optional conversion function which specifies a transform from the incoming + data to the instance variable value. Used during the process performed by + @c OIDFieldMapping.remainingParametersWithMap:parameters:instance: but not during + encoding/decoding, since the encoded and decoded values should already be of the type + specified by the @c type parameter. + */ +- (instancetype)initWithName:(NSString *)name + type:(Class)type + conversion:(nullable OIDFieldMappingConversionFunction)conversion + NS_DESIGNATED_INITIALIZER; + +/*! @brief A convenience initializer. + @param name The name of the instance variable the field should be mapped to. + @param type The type of the instance variable. + */ +- (instancetype)initWithName:(NSString *)name + type:(Class)type; + +/*! @brief Performs a mapping of key/value pairs in an incoming parameters dictionary to instance + variables, returning a dictionary of parameter key/values which didn't map to instance + variables. + @param map A mapping of incoming keys to instance variables. + @param parameters Incoming key value pairs to map to an instance's variables. + @param instance The instance whose variables should be set based on the mapping. + @return A dictionary of parameter key/values which didn't map to instance variables. + */ ++ (NSDictionary *> *)remainingParametersWithMap: + (NSDictionary *)map + parameters:(NSDictionary *> *)parameters + instance:(id)instance; + +/*! @brief This helper method for @c NSCoding implementations performs a serialization of fields + defined in a field mapping. + @param aCoder An @c NSCoder instance to serialize instance variable values to. + @param map A mapping of keys to instance variables. + @param instance The instance whose variables should be serialized based on the mapping. + */ ++ (void)encodeWithCoder:(NSCoder *)aCoder + map:(NSDictionary *)map + instance:(id)instance; + +/*! @brief This helper method for @c NSCoding implementations performs a deserialization of + fields defined in a field mapping. + @param aCoder An @c NSCoder instance from which to deserialize instance variable values from. + @param map A mapping of keys to instance variables. + @param instance The instance whose variables should be deserialized based on the mapping. + */ ++ (void)decodeWithCoder:(NSCoder *)aCoder + map:(NSDictionary *)map + instance:(id)instance; + +/*! @brief Returns an @c NSSet of classes suitable for deserializing JSON content in an + @c NSSecureCoding context. + */ ++ (NSSet *)JSONTypes; + +/*! @brief Returns a function for converting an @c NSString to an @c NSURL. + */ ++ (OIDFieldMappingConversionFunction)URLConversion; + +/*! @brief Returns a function for converting an @c NSNumber number of seconds from now to an + @c NSDate. + */ ++ (OIDFieldMappingConversionFunction)dateSinceNowConversion; + +/*! @brief Returns a function for converting an @c NSNumber representing a unix time stamp to an + @c NSDate. + */ ++ (OIDFieldMappingConversionFunction)dateEpochConversion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDFieldMapping.m b/Pods/AppAuth/Source/AppAuthCore/OIDFieldMapping.m new file mode 100644 index 0000000..f843656 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDFieldMapping.m @@ -0,0 +1,132 @@ +/*! @file OIDFieldMapping.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDFieldMapping.h" + +#import "OIDDefines.h" + +@implementation OIDFieldMapping + +- (nonnull instancetype)init + OID_UNAVAILABLE_USE_INITIALIZER(@selector(initWithName:type:conversion:)) + +- (instancetype)initWithName:(NSString *)name + type:(Class)type { + return [self initWithName:name type:type conversion:nil]; +} + +- (instancetype)initWithName:(NSString *)name + type:(Class)type + conversion:(nullable OIDFieldMappingConversionFunction)conversion { + self = [super init]; + if (self) { + _name = [name copy]; + _expectedType = type; + _conversion = conversion; + } + return self; +} + ++ (NSDictionary *> *)remainingParametersWithMap: + (NSDictionary *)map + parameters:(NSDictionary *> *)parameters + instance:(id)instance { + NSMutableDictionary *additionalParameters = [NSMutableDictionary dictionary]; + for (NSString *key in parameters) { + NSObject *value = [parameters[key] copy]; + OIDFieldMapping *mapping = map[key]; + // If the field doesn't appear in the mapping, we add it to the additional parameters + // dictionary. + if (!mapping) { + additionalParameters[key] = value; + continue; + } + // If the field mapping specifies a conversion function, apply the conversion to the value. + if (mapping.conversion) { + value = mapping.conversion(value); + } + // Check the type of the value and make sure it matches the type we expected. If it doesn't we + // add the value to the additional parameters dictionary but don't assign the instance variable. + if (![value isKindOfClass:mapping.expectedType]) { + additionalParameters[key] = value; + continue; + } + // Assign the instance variable. + [instance setValue:value forKey:mapping.name]; + } + return additionalParameters; +} + ++ (void)encodeWithCoder:(NSCoder *)aCoder + map:(NSDictionary *)map + instance:(id)instance { + for (NSString *key in map) { + id value = [instance valueForKey:map[key].name]; + [aCoder encodeObject:value forKey:key]; + } +} + ++ (void)decodeWithCoder:(NSCoder *)aCoder + map:(NSDictionary *)map + instance:(id)instance { + for (NSString *key in map) { + OIDFieldMapping *mapping = map[key]; + id value = [aCoder decodeObjectOfClass:mapping.expectedType forKey:key]; + [instance setValue:value forKey:mapping.name]; + } +} + ++ (NSSet *)JSONTypes { + return [NSSet setWithArray:@[ + [NSDictionary class], + [NSArray class], + [NSString class], + [NSNumber class] + ]]; +} + ++ (OIDFieldMappingConversionFunction)URLConversion { + return ^id _Nullable(NSObject *_Nullable value) { + if ([value isKindOfClass:[NSString class]]) { + return [NSURL URLWithString:(NSString *)value]; + } + return value; + }; +} + ++ (OIDFieldMappingConversionFunction)dateSinceNowConversion { + return ^id _Nullable(NSObject *_Nullable value) { + if (![value isKindOfClass:[NSNumber class]]) { + return value; + } + NSNumber *valueAsNumber = (NSNumber *)value; + return [NSDate dateWithTimeIntervalSinceNow:[valueAsNumber longLongValue]]; + }; +} + ++ (OIDFieldMappingConversionFunction)dateEpochConversion { + return ^id _Nullable(NSObject *_Nullable value) { + if (![value isKindOfClass:[NSNumber class]]) { + return value; + } + NSNumber *valueAsNumber = (NSNumber *) value; + return [NSDate dateWithTimeIntervalSince1970:[valueAsNumber longLongValue]]; + }; +} + +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDGrantTypes.h b/Pods/AppAuth/Source/AppAuthCore/OIDGrantTypes.h new file mode 100644 index 0000000..6e65004 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDGrantTypes.h @@ -0,0 +1,40 @@ +/*! @file OIDGrantTypes.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +/*! @brief For exchanging an authorization code for an access token. + @see https://tools.ietf.org/html/rfc6749#section-4.1.3 + */ +extern NSString *const OIDGrantTypeAuthorizationCode; + +/*! @brief For refreshing an access token with a refresh token. + @see https://tools.ietf.org/html/rfc6749#section-6 + */ +extern NSString *const OIDGrantTypeRefreshToken; + +/*! @brief For obtaining an access token with a username and password. + @see https://tools.ietf.org/html/rfc6749#section-4.3.2 + */ +extern NSString *const OIDGrantTypePassword; + +/*! @brief For obtaining an access token from the token endpoint using client credentials. + @see https://tools.ietf.org/html/rfc6749#section-3.2.1 + @see https://tools.ietf.org/html/rfc6749#section-4.4.2 + */ +extern NSString *const OIDGrantTypeClientCredentials; diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDGrantTypes.m b/Pods/AppAuth/Source/AppAuthCore/OIDGrantTypes.m new file mode 100644 index 0000000..2b19343 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDGrantTypes.m @@ -0,0 +1,27 @@ +/*! @file OIDGrantTypes.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDGrantTypes.h" + +NSString *const OIDGrantTypeAuthorizationCode = @"authorization_code"; + +NSString *const OIDGrantTypeRefreshToken = @"refresh_token"; + +NSString *const OIDGrantTypePassword = @"password"; + +NSString *const OIDGrantTypeClientCredentials = @"client_credentials"; diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDIDToken.h b/Pods/AppAuth/Source/AppAuthCore/OIDIDToken.h new file mode 100644 index 0000000..6fe84d7 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDIDToken.h @@ -0,0 +1,91 @@ +/*! @file OIDIDToken.h + @brief AppAuth iOS SDK + @copyright + Copyright 2017 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief A convenience class that parses an ID Token and extracts the claims _but does not_ + verify its signature. AppAuth only supports the OpenID Code flow, meaning ID Tokens + received by AppAuth are sent from the token endpoint on a TLS protected channel, + offering some assurances as to the origin of the token. You may wish to additionally + verify the ID Token signature using a JWT signature verification library of your + choosing. + @see http://openid.net/specs/openid-connect-core-1_0.html#IDToken + @see https://tools.ietf.org/html/rfc7519 + @see https://jwt.io/ + */ +@interface OIDIDToken : NSObject + +/*! @internal + @brief Unavailable. Please use @c initWithAuthorizationResponse:. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief Parses the given ID Token string. + @param idToken The ID Token spring. + */ +- (nullable instancetype)initWithIDTokenString:(NSString *)idToken; + +/*! @brief The header JWT values. + */ +@property(nonatomic, readonly) NSDictionary *header; + +/*! @brief All ID Token claims. + */ +@property(nonatomic, readonly) NSDictionary *claims; + +/*! @brief Issuer Identifier for the Issuer of the response. + @remarks iss + @see http://openid.net/specs/openid-connect-core-1_0.html#IDToken + */ +@property(nonatomic, readonly) NSURL *issuer; + +/*! @brief Subject Identifier. + @remarks sub + @see http://openid.net/specs/openid-connect-core-1_0.html#IDToken + */ +@property(nonatomic, readonly) NSString *subject; + +/*! @brief Audience(s) that this ID Token is intended for. + @remarks aud + @see http://openid.net/specs/openid-connect-core-1_0.html#IDToken + */ +@property(nonatomic, readonly) NSArray *audience; + +/*! @brief Expiration time on or after which the ID Token MUST NOT be accepted for processing. + @remarks exp + @see http://openid.net/specs/openid-connect-core-1_0.html#IDToken + */ +@property(nonatomic, readonly) NSDate *expiresAt; + +/*! @brief Time at which the JWT was issued. + @remarks iat + @see http://openid.net/specs/openid-connect-core-1_0.html#IDToken + */ +@property(nonatomic, readonly) NSDate *issuedAt; + +/*! @brief String value used to associate a Client session with an ID Token, and to mitigate replay + attacks. + @remarks nonce + @see http://openid.net/specs/openid-connect-core-1_0.html#IDToken + */ +@property(nonatomic, readonly, nullable) NSString *nonce; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDIDToken.m b/Pods/AppAuth/Source/AppAuthCore/OIDIDToken.m new file mode 100644 index 0000000..57a7324 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDIDToken.m @@ -0,0 +1,149 @@ +/*! @file OIDIDToken.m + @brief AppAuth iOS SDK + @copyright + Copyright 2017 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDIDToken.h" + +/*! Field keys associated with an ID Token. */ +static NSString *const kIssKey = @"iss"; +static NSString *const kSubKey = @"sub"; +static NSString *const kAudKey = @"aud"; +static NSString *const kExpKey = @"exp"; +static NSString *const kIatKey = @"iat"; +static NSString *const kNonceKey = @"nonce"; + +#import "OIDFieldMapping.h" + +@implementation OIDIDToken + +- (instancetype)initWithIDTokenString:(NSString *)idToken { + self = [super init]; + NSArray *sections = [idToken componentsSeparatedByString:@"."]; + + // The header and claims sections are required. + if (sections.count <= 1) { + return nil; + } + + _header = [[self class] parseJWTSection:sections[0]]; + _claims = [[self class] parseJWTSection:sections[1]]; + if (!_header || !_claims) { + return nil; + } + + [OIDFieldMapping remainingParametersWithMap:[[self class] fieldMap] + parameters:_claims + instance:self]; + + // Required fields. + if (!_issuer || !_audience || !_subject || !_expiresAt || !_issuedAt) { + return nil; + } + + return self; +} + +/*! @brief Returns a mapping of incoming parameters to instance variables. + @return A mapping of incoming parameters to instance variables. + */ ++ (NSDictionary *)fieldMap { + static NSMutableDictionary *fieldMap; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + fieldMap = [NSMutableDictionary dictionary]; + + fieldMap[kIssKey] = + [[OIDFieldMapping alloc] initWithName:@"_issuer" + type:[NSURL class] + conversion:[OIDFieldMapping URLConversion]]; + fieldMap[kSubKey] = + [[OIDFieldMapping alloc] initWithName:@"_subject" type:[NSString class]]; + fieldMap[kAudKey] = + [[OIDFieldMapping alloc] initWithName:@"_audience" + type:[NSArray class] + conversion:^id _Nullable(NSObject *_Nullable value) { + if ([value isKindOfClass:[NSArray class]]) { + return value; + } + if ([value isKindOfClass:[NSString class]]) { + return @[value]; + } + return nil; + }]; + fieldMap[kExpKey] = + [[OIDFieldMapping alloc] initWithName:@"_expiresAt" + type:[NSDate class] + conversion:^id _Nullable(NSObject *_Nullable value) { + if (![value isKindOfClass:[NSNumber class]]) { + return value; + } + NSNumber *valueAsNumber = (NSNumber *)value; + return [NSDate dateWithTimeIntervalSince1970:valueAsNumber.longLongValue]; + }]; + fieldMap[kIatKey] = + [[OIDFieldMapping alloc] initWithName:@"_issuedAt" + type:[NSDate class] + conversion:^id _Nullable(NSObject *_Nullable value) { + if (![value isKindOfClass:[NSNumber class]]) { + return value; + } + NSNumber *valueAsNumber = (NSNumber *)value; + return [NSDate dateWithTimeIntervalSince1970:valueAsNumber.longLongValue]; + }]; + fieldMap[kNonceKey] = + [[OIDFieldMapping alloc] initWithName:@"_nonce" type:[NSString class]]; + }); + return fieldMap; +} + ++ (NSDictionary *)parseJWTSection:(NSString *)sectionString { + NSData *decodedData = [[self class] base64urlNoPaddingDecode:sectionString]; + + // Parses JSON. + NSError *error; + id object = [NSJSONSerialization JSONObjectWithData:decodedData options:0 error:&error]; + if (error) { + NSLog(@"Error %@ parsing token payload %@", error, sectionString); + } + if ([object isKindOfClass:[NSDictionary class]]) { + return (NSDictionary *)object; + } + + return nil; +} + ++ (NSData *)base64urlNoPaddingDecode:(NSString *)base64urlNoPaddingString { + NSMutableString *body = [base64urlNoPaddingString mutableCopy]; + + // Converts base64url to base64. + NSRange range = NSMakeRange(0, base64urlNoPaddingString.length); + [body replaceOccurrencesOfString:@"-" withString:@"+" options:NSLiteralSearch range:range]; + [body replaceOccurrencesOfString:@"_" withString:@"/" options:NSLiteralSearch range:range]; + + // Converts base64 no padding to base64 with padding + while (body.length % 4 != 0) { + [body appendString:@"="]; + } + + // Decodes base64 string. + NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:body options:0]; + return decodedData; +} + +@end + + diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDRegistrationRequest.h b/Pods/AppAuth/Source/AppAuthCore/OIDRegistrationRequest.h new file mode 100644 index 0000000..e509c60 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDRegistrationRequest.h @@ -0,0 +1,141 @@ +/*! @file OIDRegistrationRequest.h + @brief AppAuth iOS SDK + @copyright + Copyright 2016 The AppAuth for iOS Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@class OIDAuthorizationResponse; +@class OIDServiceConfiguration; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Represents a registration request. + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationRequest + */ +@interface OIDRegistrationRequest : NSObject + +/*! @brief The service's configuration. + @remarks This configuration specifies how to connect to a particular OAuth provider. + Configurations may be created manually, or via an OpenID Connect Discovery Document. + */ +@property(nonatomic, readonly) OIDServiceConfiguration *configuration; + +/*! @brief The initial access token to access the Client Registration Endpoint + (if required by the OpenID Provider). + @remarks OAuth 2.0 Access Token optionally issued by an Authorization Server granting + access to its Client Registration Endpoint. This token (if required) is + provisioned out of band. + @see Section 3 of OpenID Connect Dynamic Client Registration 1.0 + https://openid.net/specs/openid-connect-registration-1_0.html#ClientRegistration + */ +@property(nonatomic, readonly) NSString *initialAccessToken; + +/*! @brief The application type to register, will always be 'native'. + @remarks application_type + @see https://openid.net/specs/openid-connect-registration-1_0.html#ClientMetadata + */ +@property(nonatomic, readonly) NSString *applicationType; + +/*! @brief The client's redirect URI's. + @remarks redirect_uris + @see https://tools.ietf.org/html/rfc6749#section-3.1.2 + */ +@property(nonatomic, readonly) NSArray *redirectURIs; + +/*! @brief The response types to register for usage by this client. + @remarks response_types + @see http://openid.net/specs/openid-connect-core-1_0.html#Authentication + */ +@property(nonatomic, readonly, nullable) NSArray *responseTypes; + +/*! @brief The grant types to register for usage by this client. + @remarks grant_types + @see https://openid.net/specs/openid-connect-registration-1_0.html#ClientMetadata + */ +@property(nonatomic, readonly, nullable) NSArray *grantTypes; + +/*! @brief The subject type to to request. + @remarks subject_type + @see http://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes + */ +@property(nonatomic, readonly, nullable) NSString *subjectType; + +/*! @brief The client authentication method to use at the token endpoint. + @remarks token_endpoint_auth_method + @see http://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication + */ +@property(nonatomic, readonly, nullable) NSString *tokenEndpointAuthenticationMethod; + +/*! @brief The client's additional token request parameters. + */ +@property(nonatomic, readonly, nullable) NSDictionary *additionalParameters; + +/*! @internal + @brief Unavailable. Please use initWithConfiguration + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief Create a Client Registration Request to an OpenID Provider that supports open Dynamic + Registration. + @param configuration The service's configuration. + @param redirectURIs The redirect URIs to register for the client. + @param responseTypes The response types to register for the client. + @param grantTypes The grant types to register for the client. + @param subjectType The subject type to register for the client. + @param tokenEndpointAuthMethod The token endpoint authentication method to register for the + client. + @param additionalParameters The client's additional registration request parameters. + */ +- (instancetype)initWithConfiguration:(OIDServiceConfiguration *)configuration + redirectURIs:(NSArray *)redirectURIs + responseTypes:(nullable NSArray *)responseTypes + grantTypes:(nullable NSArray *)grantTypes + subjectType:(nullable NSString *)subjectType + tokenEndpointAuthMethod:(nullable NSString *)tokenEndpointAuthMethod + additionalParameters:(nullable NSDictionary *)additionalParameters; + +/*! @brief Designated initializer. + @param configuration The service's configuration. + @param redirectURIs The redirect URIs to register for the client. + @param responseTypes The response types to register for the client. + @param grantTypes The grant types to register for the client. + @param subjectType The subject type to register for the client. + @param tokenEndpointAuthMethod The token endpoint authentication method to register for the + client. + @param initialAccessToken The initial access token to access the Client Registration Endpoint + (if required by the OpenID Provider). + @param additionalParameters The client's additional registration request parameters. + @see https://openid.net/specs/openid-connect-registration-1_0.html#ClientRegistration + */ +- (instancetype)initWithConfiguration:(OIDServiceConfiguration *)configuration + redirectURIs:(NSArray *)redirectURIs + responseTypes:(nullable NSArray *)responseTypes + grantTypes:(nullable NSArray *)grantTypes + subjectType:(nullable NSString *)subjectType + tokenEndpointAuthMethod:(nullable NSString *)tokenEndpointAuthMethod + initialAccessToken:(nullable NSString *)initialAccessToken + additionalParameters:(nullable NSDictionary *)additionalParameters + NS_DESIGNATED_INITIALIZER; + +/*! @brief Constructs an @c NSURLRequest representing the registration request. + @return An @c NSURLRequest representing the registration request. + */ +- (NSURLRequest *)URLRequest; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDRegistrationRequest.m b/Pods/AppAuth/Source/AppAuthCore/OIDRegistrationRequest.m new file mode 100644 index 0000000..9efd18f --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDRegistrationRequest.m @@ -0,0 +1,248 @@ +/*! @file OIDRegistrationRequest.m + @brief AppAuth iOS SDK + @copyright + Copyright 2016 The AppAuth for iOS Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDRegistrationRequest.h" + +#import "OIDClientMetadataParameters.h" +#import "OIDDefines.h" +#import "OIDServiceConfiguration.h" + +/*! @brief The key for the @c configuration property for @c NSSecureCoding + */ +static NSString *const kConfigurationKey = @"configuration"; + +/*! @brief The key for the @c initialAccessToken property for @c NSSecureCoding + */ +static NSString *const kInitialAccessToken = @"initial_access_token"; + +/*! @brief Key used to encode the @c redirectURIs property for @c NSSecureCoding + */ +static NSString *const kRedirectURIsKey = @"redirect_uris"; + +/*! @brief The key for the @c responseTypes property for @c NSSecureCoding. + */ +static NSString *const kResponseTypesKey = @"response_types"; + +/*! @brief Key used to encode the @c grantType property for @c NSSecureCoding + */ +static NSString *const kGrantTypesKey = @"grant_types"; + +/*! @brief Key used to encode the @c subjectType property for @c NSSecureCoding + */ +static NSString *const kSubjectTypeKey = @"subject_type"; + +/*! @brief Key used to encode the @c additionalParameters property for + @c NSSecureCoding + */ +static NSString *const kAdditionalParametersKey = @"additionalParameters"; + +@implementation OIDRegistrationRequest + +#pragma mark - Initializers + +- (instancetype)init + OID_UNAVAILABLE_USE_INITIALIZER( + @selector(initWithConfiguration: + redirectURIs: + responseTypes: + grantTypes: + subjectType: + tokenEndpointAuthMethod: + additionalParameters:) + ) + +- (instancetype)initWithConfiguration:(OIDServiceConfiguration *)configuration + redirectURIs:(NSArray *)redirectURIs + responseTypes:(nullable NSArray *)responseTypes + grantTypes:(nullable NSArray *)grantTypes + subjectType:(nullable NSString *)subjectType + tokenEndpointAuthMethod:(nullable NSString *)tokenEndpointAuthenticationMethod + additionalParameters:(nullable NSDictionary *)additionalParameters { + return [self initWithConfiguration:configuration + redirectURIs:redirectURIs + responseTypes:responseTypes + grantTypes:grantTypes + subjectType:subjectType + tokenEndpointAuthMethod:tokenEndpointAuthenticationMethod + initialAccessToken:nil + additionalParameters:additionalParameters]; +} + +- (instancetype)initWithConfiguration:(OIDServiceConfiguration *)configuration + redirectURIs:(NSArray *)redirectURIs + responseTypes:(nullable NSArray *)responseTypes + grantTypes:(nullable NSArray *)grantTypes + subjectType:(nullable NSString *)subjectType + tokenEndpointAuthMethod:(nullable NSString *)tokenEndpointAuthenticationMethod + initialAccessToken:(nullable NSString *)initialAccessToken + additionalParameters:(nullable NSDictionary *)additionalParameters { + self = [super init]; + if (self) { + _configuration = [configuration copy]; + _initialAccessToken = [initialAccessToken copy]; + _redirectURIs = [redirectURIs copy]; + _responseTypes = [responseTypes copy]; + _grantTypes = [grantTypes copy]; + _subjectType = [subjectType copy]; + _tokenEndpointAuthenticationMethod = [tokenEndpointAuthenticationMethod copy]; + _additionalParameters = + [[NSDictionary alloc] initWithDictionary:additionalParameters copyItems:YES]; + + _applicationType = OIDApplicationTypeNative; + } + return self; +} + +#pragma mark - NSCopying + +- (instancetype)copyWithZone:(nullable NSZone *)zone { + // The documentation for NSCopying specifically advises us to return a reference to the original + // instance in the case where instances are immutable (as ours is): + // "Implement NSCopying by retaining the original instead of creating a new copy when the class + // and its contents are immutable." + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + OIDServiceConfiguration *configuration = + [aDecoder decodeObjectOfClass:[OIDServiceConfiguration class] + forKey:kConfigurationKey]; + NSString *initialAccessToken = [aDecoder decodeObjectOfClass:[NSString class] + forKey:kInitialAccessToken]; + NSArray *redirectURIs = [aDecoder decodeObjectOfClass:[NSArray class] + forKey:kRedirectURIsKey]; + NSArray *responseTypes = [aDecoder decodeObjectOfClass:[NSArray class] + forKey:kResponseTypesKey]; + NSArray *grantTypes = [aDecoder decodeObjectOfClass:[NSArray class] + forKey:kGrantTypesKey]; + NSString *subjectType = [aDecoder decodeObjectOfClass:[NSString class] + forKey:kSubjectTypeKey]; + NSString *tokenEndpointAuthenticationMethod = + [aDecoder decodeObjectOfClass:[NSString class] + forKey:OIDTokenEndpointAuthenticationMethodParam]; + NSSet *additionalParameterCodingClasses = [NSSet setWithArray:@[ [NSDictionary class], + [NSString class] ]]; + NSDictionary *additionalParameters = + [aDecoder decodeObjectOfClasses:additionalParameterCodingClasses + forKey:kAdditionalParametersKey]; + self = [self initWithConfiguration:configuration + redirectURIs:redirectURIs + responseTypes:responseTypes + grantTypes:grantTypes + subjectType:subjectType + tokenEndpointAuthMethod:tokenEndpointAuthenticationMethod + initialAccessToken:initialAccessToken + additionalParameters:additionalParameters]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_configuration forKey:kConfigurationKey]; + [aCoder encodeObject:_initialAccessToken forKey:kInitialAccessToken]; + [aCoder encodeObject:_redirectURIs forKey:kRedirectURIsKey]; + [aCoder encodeObject:_responseTypes forKey:kResponseTypesKey]; + [aCoder encodeObject:_grantTypes forKey:kGrantTypesKey]; + [aCoder encodeObject:_subjectType forKey:kSubjectTypeKey]; + [aCoder encodeObject:_tokenEndpointAuthenticationMethod + forKey:OIDTokenEndpointAuthenticationMethodParam]; + [aCoder encodeObject:_additionalParameters forKey:kAdditionalParametersKey]; +} + +#pragma mark - NSObject overrides + +- (NSString *)description { + NSURLRequest *request = [self URLRequest]; + NSString *requestBody = [[NSString alloc] initWithData:request.HTTPBody + encoding:NSUTF8StringEncoding]; + return [NSString stringWithFormat:@"<%@: %p, request: >", + NSStringFromClass([self class]), + (void *)self, + request.URL, + requestBody]; +} + +- (NSURLRequest *)URLRequest { + static NSString *const kHTTPPost = @"POST"; + static NSString *const kBearer = @"Bearer"; + static NSString *const kHTTPContentTypeHeaderKey = @"Content-Type"; + static NSString *const kHTTPContentTypeHeaderValue = @"application/json"; + static NSString *const kHTTPAuthorizationHeaderKey = @"Authorization"; + + NSData *postBody = [self JSONString]; + if (!postBody) { + return nil; + } + + NSURL *registrationRequestURL = _configuration.registrationEndpoint; + NSMutableURLRequest *URLRequest = + [[NSURLRequest requestWithURL:registrationRequestURL] mutableCopy]; + URLRequest.HTTPMethod = kHTTPPost; + [URLRequest setValue:kHTTPContentTypeHeaderValue forHTTPHeaderField:kHTTPContentTypeHeaderKey]; + if (_initialAccessToken) { + NSString *value = [NSString stringWithFormat:@"%@ %@", kBearer, _initialAccessToken]; + [URLRequest setValue:value forHTTPHeaderField:kHTTPAuthorizationHeaderKey]; + } + URLRequest.HTTPBody = postBody; + return URLRequest; +} + +- (NSData *)JSONString { + // Dictionary with several kay/value pairs and the above array of arrays + NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; + NSMutableArray *redirectURIStrings = + [NSMutableArray arrayWithCapacity:[_redirectURIs count]]; + for (id obj in _redirectURIs) { + [redirectURIStrings addObject:[obj absoluteString]]; + } + dict[OIDRedirectURIsParam] = redirectURIStrings; + dict[OIDApplicationTypeParam] = _applicationType; + + if (_additionalParameters) { + // Add any additional parameters first to allow them + // to be overwritten by instance values + [dict addEntriesFromDictionary:_additionalParameters]; + } + if (_responseTypes) { + dict[OIDResponseTypesParam] = _responseTypes; + } + if (_grantTypes) { + dict[OIDGrantTypesParam] = _grantTypes; + } + if (_subjectType) { + dict[OIDSubjectTypeParam] = _subjectType; + } + if (_tokenEndpointAuthenticationMethod) { + dict[OIDTokenEndpointAuthenticationMethodParam] = _tokenEndpointAuthenticationMethod; + } + + NSError *error; + NSData *json = [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:&error]; + if (json == nil || error != nil) { + return nil; + } + + return json; +} + +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDRegistrationResponse.h b/Pods/AppAuth/Source/AppAuthCore/OIDRegistrationResponse.h new file mode 100644 index 0000000..df62390 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDRegistrationResponse.h @@ -0,0 +1,126 @@ +/*! @file OIDRegistrationResponse.h + @brief AppAuth iOS SDK + @copyright + Copyright 2016 The AppAuth for iOS Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + + +#import + +@class OIDRegistrationRequest; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Parameter name for the client id. + */ +extern NSString *const OIDClientIDParam; + +/*! @brief Parameter name for the client id issuance timestamp. + */ +extern NSString *const OIDClientIDIssuedAtParam; + +/*! @brief Parameter name for the client secret. + */ +extern NSString *const OIDClientSecretParam; + +/*! @brief Parameter name for the client secret expiration time. + */ +extern NSString *const OIDClientSecretExpirestAtParam; + +/*! @brief Parameter name for the registration access token. + */ +extern NSString *const OIDRegistrationAccessTokenParam; + +/*! @brief Parameter name for the client configuration URI. + */ +extern NSString *const OIDRegistrationClientURIParam; + +/*! @brief Represents a registration response. + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationResponse + */ +@interface OIDRegistrationResponse : NSObject + +/*! @brief The request which was serviced. + */ +@property(nonatomic, readonly) OIDRegistrationRequest *request; + +/*! @brief The registered client identifier. + @remarks client_id + @see https://tools.ietf.org/html/rfc6749#section-4 + @see https://tools.ietf.org/html/rfc6749#section-4.1.1 + */ +@property(nonatomic, readonly) NSString *clientID; + +/*! @brief Timestamp of when the client identifier was issued, if provided. + @remarks client_id_issued_at + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationResponse + */ +@property(nonatomic, readonly, nullable) NSDate *clientIDIssuedAt; + +/*! @brief TThe client secret, which is part of the client credentials, if provided. + @remarks client_secret + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationResponse + */ +@property(nonatomic, readonly, nullable) NSString *clientSecret; + +/*! @brief Timestamp of when the client credentials expires, if provided. + @remarks client_secret_expires_at + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationResponse + */ +@property(nonatomic, readonly, nullable) NSDate *clientSecretExpiresAt; + +/*! @brief Client registration access token that can be used for subsequent operations upon the + client registration. + @remarks registration_access_token + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationResponse + */ +@property(nonatomic, readonly, nullable) NSString *registrationAccessToken; + +/*! @brief Location of the client configuration endpoint, if provided. + @remarks registration_client_uri + @see https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationResponse + */ +@property(nonatomic, readonly, nullable) NSURL *registrationClientURI; + +/*! @brief Client authentication method to use at the token endpoint, if provided. + @remarks token_endpoint_auth_method + @see http://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication + */ +@property(nonatomic, readonly, nullable) NSString *tokenEndpointAuthenticationMethod; + +/*! @brief Additional parameters returned from the token server. + */ +@property(nonatomic, readonly, nullable) NSDictionary *> + *additionalParameters; + +/*! @internal + @brief Unavailable. Please use initWithRequest + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief Designated initializer. + @param request The serviced request. + @param parameters The decoded parameters returned from the Authorization Server. + @remarks Known parameters are extracted from the @c parameters parameter and the normative + properties are populated. Non-normative parameters are placed in the + @c #additionalParameters dictionary. + */ +- (instancetype)initWithRequest:(OIDRegistrationRequest *)request + parameters:(NSDictionary *> *)parameters + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDRegistrationResponse.m b/Pods/AppAuth/Source/AppAuthCore/OIDRegistrationResponse.m new file mode 100644 index 0000000..ec0411b --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDRegistrationResponse.m @@ -0,0 +1,164 @@ +/*! @file OIDRegistrationResponse.m + @brief AppAuth iOS SDK + @copyright + Copyright 2016 The AppAuth for iOS Authors. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDRegistrationResponse.h" + +#import "OIDClientMetadataParameters.h" +#import "OIDDefines.h" +#import "OIDFieldMapping.h" +#import "OIDRegistrationRequest.h" +#import "OIDTokenUtilities.h" + +NSString *const OIDClientIDParam = @"client_id"; +NSString *const OIDClientIDIssuedAtParam = @"client_id_issued_at"; +NSString *const OIDClientSecretParam = @"client_secret"; +NSString *const OIDClientSecretExpirestAtParam = @"client_secret_expires_at"; +NSString *const OIDRegistrationAccessTokenParam = @"registration_access_token"; +NSString *const OIDRegistrationClientURIParam = @"registration_client_uri"; + +/*! @brief Key used to encode the @c request property for @c NSSecureCoding + */ +static NSString *const kRequestKey = @"request"; + +/*! @brief Key used to encode the @c additionalParameters property for @c NSSecureCoding + */ +static NSString *const kAdditionalParametersKey = @"additionalParameters"; + +@implementation OIDRegistrationResponse + +/*! @brief Returns a mapping of incoming parameters to instance variables. + @return A mapping of incoming parameters to instance variables. + */ ++ (NSDictionary *)fieldMap { + static NSMutableDictionary *fieldMap; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + fieldMap = [NSMutableDictionary dictionary]; + fieldMap[OIDClientIDParam] = [[OIDFieldMapping alloc] initWithName:@"_clientID" + type:[NSString class]]; + fieldMap[OIDClientIDIssuedAtParam] = + [[OIDFieldMapping alloc] initWithName:@"_clientIDIssuedAt" + type:[NSDate class] + conversion:[OIDFieldMapping dateEpochConversion]]; + fieldMap[OIDClientSecretParam] = + [[OIDFieldMapping alloc] initWithName:@"_clientSecret" + type:[NSString class]]; + fieldMap[OIDClientSecretExpirestAtParam] = + [[OIDFieldMapping alloc] initWithName:@"_clientSecretExpiresAt" + type:[NSDate class] + conversion:[OIDFieldMapping dateEpochConversion]]; + fieldMap[OIDRegistrationAccessTokenParam] = + [[OIDFieldMapping alloc] initWithName:@"_registrationAccessToken" + type:[NSString class]]; + fieldMap[OIDRegistrationClientURIParam] = + [[OIDFieldMapping alloc] initWithName:@"_registrationClientURI" + type:[NSURL class] + conversion:[OIDFieldMapping URLConversion]]; + fieldMap[OIDTokenEndpointAuthenticationMethodParam] = + [[OIDFieldMapping alloc] initWithName:@"_tokenEndpointAuthenticationMethod" + type:[NSString class]]; + }); + return fieldMap; +} + + +#pragma mark - Initializers + +- (nonnull instancetype)init + OID_UNAVAILABLE_USE_INITIALIZER(@selector(initWithRequest:parameters:)) + +- (instancetype)initWithRequest:(OIDRegistrationRequest *)request + parameters:(NSDictionary *> *)parameters { + self = [super init]; + if (self) { + _request = [request copy]; + NSDictionary *> *additionalParameters = + [OIDFieldMapping remainingParametersWithMap:[[self class] fieldMap] + parameters:parameters + instance:self]; + _additionalParameters = additionalParameters; + + if ((_clientSecret && !_clientSecretExpiresAt) + || (!!_registrationClientURI != !!_registrationAccessToken)) { + // If client_secret is issued, client_secret_expires_at is REQUIRED, + // and the response MUST contain "[...] both a Client Configuration Endpoint + // and a Registration Access Token or neither of them" + return nil; + } + } + return self; +} + +#pragma mark - NSCopying + +- (instancetype)copyWithZone:(nullable NSZone *)zone { + // The documentation for NSCopying specifically advises us to return a reference to the original + // instance in the case where instances are immutable (as ours is): + // "Implement NSCopying by retaining the original instead of creating a new copy when the class + // and its contents are immutable." + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + OIDRegistrationRequest *request = [aDecoder decodeObjectOfClass:[OIDRegistrationRequest class] + forKey:kRequestKey]; + self = [self initWithRequest:request + parameters:@{}]; + if (self) { + [OIDFieldMapping decodeWithCoder:aDecoder + map:[[self class] fieldMap] + instance:self]; + _additionalParameters = [aDecoder decodeObjectOfClasses:[OIDFieldMapping JSONTypes] + forKey:kAdditionalParametersKey]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [OIDFieldMapping encodeWithCoder:aCoder map:[[self class] fieldMap] instance:self]; + [aCoder encodeObject:_request forKey:kRequestKey]; + [aCoder encodeObject:_additionalParameters forKey:kAdditionalParametersKey]; +} + +#pragma mark - NSObject overrides + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, clientID: \"%@\", clientIDIssuedAt: %@, " + "clientSecret: %@, clientSecretExpiresAt: \"%@\", " + "registrationAccessToken: \"%@\", " + "registrationClientURI: \"%@\", " + "additionalParameters: %@, request: %@>", + NSStringFromClass([self class]), + (void *)self, + _clientID, + _clientIDIssuedAt, + [OIDTokenUtilities redact:_clientSecret], + _clientSecretExpiresAt, + [OIDTokenUtilities redact:_registrationAccessToken], + _registrationClientURI, + _additionalParameters, + _request]; +} + +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDResponseTypes.h b/Pods/AppAuth/Source/AppAuthCore/OIDResponseTypes.h new file mode 100644 index 0000000..405ef93 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDResponseTypes.h @@ -0,0 +1,31 @@ +/*! @file OIDResponseTypes.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +/*! @brief A constant for the standard OAuth2 Response Type of 'code'. + */ +extern NSString *const OIDResponseTypeCode; + +/*! @brief A constant for the standard OAuth2 Response Type of 'token'. + */ +extern NSString *const OIDResponseTypeToken; + +/*! @brief A constant for the standard OAuth2 Response Type of 'id_token'. + */ +extern NSString *const OIDResponseTypeIDToken; diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDResponseTypes.m b/Pods/AppAuth/Source/AppAuthCore/OIDResponseTypes.m new file mode 100644 index 0000000..78eaf18 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDResponseTypes.m @@ -0,0 +1,25 @@ +/*! @file OIDResponseTypes.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDResponseTypes.h" + +NSString *const OIDResponseTypeCode = @"code"; + +NSString *const OIDResponseTypeToken = @"token"; + +NSString *const OIDResponseTypeIDToken = @"id_token"; diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDScopeUtilities.h b/Pods/AppAuth/Source/AppAuthCore/OIDScopeUtilities.h new file mode 100644 index 0000000..c0a5190 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDScopeUtilities.h @@ -0,0 +1,48 @@ +/*! @file OIDScopeUtilities.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Provides convenience methods for dealing with scope strings. + */ +@interface OIDScopeUtilities : NSObject + +/*! @internal + @brief Unavailable. This class should not be initialized. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief Converts an array of scope strings to a single scope string per the OAuth 2 spec. + @param scopes An array of scope strings. + @return A space-delimited string of scopes. + @see https://tools.ietf.org/html/rfc6749#section-3.3 + */ ++ (NSString *)scopesWithArray:(NSArray *)scopes; + +/*! @brief Converts an OAuth 2 spec-compliant scope string to an array of scopes. + @param scopes An OAuth 2 spec-compliant scope string. + @return An array of scope strings. + @see https://tools.ietf.org/html/rfc6749#section-3.3 + */ ++ (NSArray *)scopesArrayWithString:(NSString *)scopes; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDScopeUtilities.m b/Pods/AppAuth/Source/AppAuthCore/OIDScopeUtilities.m new file mode 100644 index 0000000..a0bcb8c --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDScopeUtilities.m @@ -0,0 +1,58 @@ +/*! @file OIDScopeUtilities.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDScopeUtilities.h" + +@implementation OIDScopeUtilities + +/*! @brief A character set with the characters NOT allowed in a scope name. + @see https://tools.ietf.org/html/rfc6749#section-3.3 + */ ++ (NSCharacterSet *)disallowedScopeCharacters { + static NSCharacterSet *disallowedCharacters; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSMutableCharacterSet *allowedCharacters; + allowedCharacters = + [NSMutableCharacterSet characterSetWithRange:NSMakeRange(0x23, 0x5B - 0x23 + 1)]; + [allowedCharacters addCharactersInRange:NSMakeRange(0x5D, 0x7E - 0x5D + 1)]; + [allowedCharacters addCharactersInString:@"\x21"]; + disallowedCharacters = [allowedCharacters invertedSet]; + }); + return disallowedCharacters; +} + ++ (NSString *)scopesWithArray:(NSArray *)scopes { +#if !defined(NS_BLOCK_ASSERTIONS) + NSCharacterSet *disallowedCharacters = [self disallowedScopeCharacters]; + for (NSString *scope in scopes) { + NSAssert(scope.length, @"Found illegal empty scope string."); + NSAssert([scope rangeOfCharacterFromSet:disallowedCharacters].location == NSNotFound, + @"Found illegal character in scope string."); + } +#endif // !defined(NS_BLOCK_ASSERTIONS) + + NSString *scopeString = [scopes componentsJoinedByString:@" "]; + return scopeString; +} + ++ (NSArray *)scopesArrayWithString:(NSString *)scopes { + return [scopes componentsSeparatedByString:@" "]; +} + +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDScopes.h b/Pods/AppAuth/Source/AppAuthCore/OIDScopes.h new file mode 100644 index 0000000..da8bb18 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDScopes.h @@ -0,0 +1,46 @@ +/*! @file OIDScopes.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +/*! @brief Scope that indicates this request is an OpenID Connect request. + @see http://openid.net/specs/openid-connect-core-1_0.html#AuthRequestValidation + */ +extern NSString *const OIDScopeOpenID; + +/*! @brief This scope value requests access to the End-User's default profile Claims, which are: + name, family_name, given_name, middle_name, nickname, preferred_username, profile, picture, + website, gender, birthdate, zoneinfo, locale, and updated_at. + @see http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims + */ +extern NSString *const OIDScopeProfile; + +/*! @brief This scope value requests access to the email and email_verified Claims. + @see http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims + */ +extern NSString *const OIDScopeEmail; + +/*! @brief This scope value requests access to the address Claim. + @see http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims + */ +extern NSString *const OIDScopeAddress; + +/*! @brief This scope value requests access to the phone_number and phone_number_verified Claims. + @see http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims + */ +extern NSString *const OIDScopePhone; diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDScopes.m b/Pods/AppAuth/Source/AppAuthCore/OIDScopes.m new file mode 100644 index 0000000..62dd707 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDScopes.m @@ -0,0 +1,29 @@ +/*! @file OIDScopes.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDScopes.h" + +NSString *const OIDScopeOpenID = @"openid"; + +NSString *const OIDScopeProfile = @"profile"; + +NSString *const OIDScopeEmail = @"email"; + +NSString *const OIDScopeAddress = @"address"; + +NSString *const OIDScopePhone = @"phone"; diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDServiceConfiguration.h b/Pods/AppAuth/Source/AppAuthCore/OIDServiceConfiguration.h new file mode 100644 index 0000000..a072a47 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDServiceConfiguration.h @@ -0,0 +1,118 @@ +/*! @file OIDServiceConfiguration.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@class OIDServiceConfiguration; +@class OIDServiceDiscovery; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief The type of block called when a @c OIDServiceConfiguration has been created + by loading a @c OIDServiceDiscovery from an @c NSURL. + */ +typedef void (^OIDServiceConfigurationCreated) + (OIDServiceConfiguration *_Nullable serviceConfiguration, + NSError *_Nullable error); + +/*! @brief Represents the information needed to construct a @c OIDAuthorizationService. + */ +@interface OIDServiceConfiguration : NSObject + +/*! @brief The authorization endpoint URI. + */ +@property(nonatomic, readonly) NSURL *authorizationEndpoint; + +/*! @brief The token exchange and refresh endpoint URI. + */ +@property(nonatomic, readonly) NSURL *tokenEndpoint; + +/*! @brief The OpenID Connect issuer. + */ +@property(nonatomic, readonly, nullable) NSURL *issuer; + +/*! @brief The dynamic client registration endpoint URI. + */ +@property(nonatomic, readonly, nullable) NSURL *registrationEndpoint; + +/*! @brief The end session logout endpoint URI. + */ +@property(nonatomic, readonly, nullable) NSURL *endSessionEndpoint; + +/*! @brief The discovery document. + */ +@property(nonatomic, readonly, nullable) OIDServiceDiscovery *discoveryDocument; + +/*! @internal + @brief Unavailable. Please use @c initWithAuthorizationEndpoint:tokenEndpoint: or + @c initWithDiscoveryDocument:. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @param authorizationEndpoint The authorization endpoint URI. + @param tokenEndpoint The token exchange and refresh endpoint URI. + */ +- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint + tokenEndpoint:(NSURL *)tokenEndpoint; + +/*! @param authorizationEndpoint The authorization endpoint URI. + @param tokenEndpoint The token exchange and refresh endpoint URI. + @param registrationEndpoint The dynamic client registration endpoint URI. + */ +- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint + tokenEndpoint:(NSURL *)tokenEndpoint + registrationEndpoint:(nullable NSURL *)registrationEndpoint; + +/*! @param authorizationEndpoint The authorization endpoint URI. + @param tokenEndpoint The token exchange and refresh endpoint URI. + @param issuer The OpenID Connect issuer. + */ +- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint + tokenEndpoint:(NSURL *)tokenEndpoint + issuer:(nullable NSURL *)issuer; + +/*! @param authorizationEndpoint The authorization endpoint URI. + @param tokenEndpoint The token exchange and refresh endpoint URI. + @param issuer The OpenID Connect issuer. + @param registrationEndpoint The dynamic client registration endpoint URI. + */ +- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint + tokenEndpoint:(NSURL *)tokenEndpoint + issuer:(nullable NSURL *)issuer + registrationEndpoint:(nullable NSURL *)registrationEndpoint; + +/*! @param authorizationEndpoint The authorization endpoint URI. + @param tokenEndpoint The token exchange and refresh endpoint URI. + @param issuer The OpenID Connect issuer. + @param registrationEndpoint The dynamic client registration endpoint URI. + @param endSessionEndpoint The end session endpoint (logout) URI. + */ +- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint + tokenEndpoint:(NSURL *)tokenEndpoint + issuer:(nullable NSURL *)issuer + registrationEndpoint:(nullable NSURL *)registrationEndpoint + endSessionEndpoint:(nullable NSURL *)endSessionEndpoint; + +/*! @param discoveryDocument The discovery document from which to extract the required OAuth + configuration. + */ +- (instancetype)initWithDiscoveryDocument:(OIDServiceDiscovery *)discoveryDocument; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDServiceConfiguration.m b/Pods/AppAuth/Source/AppAuthCore/OIDServiceConfiguration.m new file mode 100644 index 0000000..0e5c119 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDServiceConfiguration.m @@ -0,0 +1,232 @@ +/*! @file OIDServiceConfiguration.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDServiceConfiguration.h" + +#import "OIDDefines.h" +#import "OIDErrorUtilities.h" +#import "OIDServiceDiscovery.h" + +/*! @brief The key for the @c authorizationEndpoint property. + */ +static NSString *const kAuthorizationEndpointKey = @"authorizationEndpoint"; + +/*! @brief The key for the @c tokenEndpoint property. + */ +static NSString *const kTokenEndpointKey = @"tokenEndpoint"; + +/*! @brief The key for the @c issuer property. + */ +static NSString *const kIssuerKey = @"issuer"; + +/*! @brief The key for the @c registrationEndpoint property. + */ +static NSString *const kRegistrationEndpointKey = @"registrationEndpoint"; + +/*! @brief The key for the @c endSessionEndpoint property. + */ +static NSString *const kEndSessionEndpointKey = @"endSessionEndpoint"; + +/*! @brief The key for the @c discoveryDocument property. + */ +static NSString *const kDiscoveryDocumentKey = @"discoveryDocument"; + +NS_ASSUME_NONNULL_BEGIN + +@interface OIDServiceConfiguration () + +- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint + tokenEndpoint:(NSURL *)tokenEndpoint + issuer:(nullable NSURL *)issuer + registrationEndpoint:(nullable NSURL *)registrationEndpoint + endSessionEndpoint:(nullable NSURL *)endSessionEndpoint + discoveryDocument:(nullable OIDServiceDiscovery *)discoveryDocument + NS_DESIGNATED_INITIALIZER; + +@end + +@implementation OIDServiceConfiguration + +- (instancetype)init + OID_UNAVAILABLE_USE_INITIALIZER(@selector( + initWithAuthorizationEndpoint: + tokenEndpoint:) + ) + +- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint + tokenEndpoint:(NSURL *)tokenEndpoint + issuer:(nullable NSURL *)issuer + registrationEndpoint:(nullable NSURL *)registrationEndpoint + endSessionEndpoint:(nullable NSURL *)endSessionEndpoint + discoveryDocument:(nullable OIDServiceDiscovery *)discoveryDocument { + + self = [super init]; + if (self) { + _authorizationEndpoint = [authorizationEndpoint copy]; + _tokenEndpoint = [tokenEndpoint copy]; + _issuer = [issuer copy]; + _registrationEndpoint = [registrationEndpoint copy]; + _endSessionEndpoint = [endSessionEndpoint copy]; + _discoveryDocument = [discoveryDocument copy]; + } + return self; +} + +- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint + tokenEndpoint:(NSURL *)tokenEndpoint { + return [self initWithAuthorizationEndpoint:authorizationEndpoint + tokenEndpoint:tokenEndpoint + issuer:nil + registrationEndpoint:nil + endSessionEndpoint:nil + discoveryDocument:nil]; +} + +- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint + tokenEndpoint:(NSURL *)tokenEndpoint + registrationEndpoint:(nullable NSURL *)registrationEndpoint { + return [self initWithAuthorizationEndpoint:authorizationEndpoint + tokenEndpoint:tokenEndpoint + issuer:nil + registrationEndpoint:registrationEndpoint + endSessionEndpoint:nil + discoveryDocument:nil]; +} + +- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint + tokenEndpoint:(NSURL *)tokenEndpoint + issuer:(nullable NSURL *)issuer { + return [self initWithAuthorizationEndpoint:authorizationEndpoint + tokenEndpoint:tokenEndpoint + issuer:issuer + registrationEndpoint:nil + endSessionEndpoint:nil + discoveryDocument:nil]; +} + +- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint + tokenEndpoint:(NSURL *)tokenEndpoint + issuer:(nullable NSURL *)issuer + registrationEndpoint:(nullable NSURL *)registrationEndpoint { + return [self initWithAuthorizationEndpoint:authorizationEndpoint + tokenEndpoint:tokenEndpoint + issuer:issuer + registrationEndpoint:registrationEndpoint + endSessionEndpoint:nil + discoveryDocument:nil]; +} + +- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint + tokenEndpoint:(NSURL *)tokenEndpoint + issuer:(nullable NSURL *)issuer + registrationEndpoint:(nullable NSURL *)registrationEndpoint + endSessionEndpoint:(nullable NSURL *)endSessionEndpoint { + return [self initWithAuthorizationEndpoint:authorizationEndpoint + tokenEndpoint:tokenEndpoint + issuer:issuer + registrationEndpoint:registrationEndpoint + endSessionEndpoint:endSessionEndpoint + discoveryDocument:nil]; +} + +- (instancetype)initWithDiscoveryDocument:(OIDServiceDiscovery *) discoveryDocument { + return [self initWithAuthorizationEndpoint:discoveryDocument.authorizationEndpoint + tokenEndpoint:discoveryDocument.tokenEndpoint + issuer:discoveryDocument.issuer + registrationEndpoint:discoveryDocument.registrationEndpoint + endSessionEndpoint:discoveryDocument.endSessionEndpoint + discoveryDocument:discoveryDocument]; +} + +#pragma mark - NSCopying + +- (instancetype)copyWithZone:(nullable NSZone *)zone { + // The documentation for NSCopying specifically advises us to return a reference to the original + // instance in the case where instances are immutable (as ours is): + // "Implement NSCopying by retaining the original instead of creating a new copy when the class + // and its contents are immutable." + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSURL *authorizationEndpoint = [aDecoder decodeObjectOfClass:[NSURL class] + forKey:kAuthorizationEndpointKey]; + NSURL *tokenEndpoint = [aDecoder decodeObjectOfClass:[NSURL class] + forKey:kTokenEndpointKey]; + NSURL *issuer = [aDecoder decodeObjectOfClass:[NSURL class] + forKey:kIssuerKey]; + NSURL *registrationEndpoint = [aDecoder decodeObjectOfClass:[NSURL class] + forKey:kRegistrationEndpointKey]; + NSURL *endSessionEndpoint = [aDecoder decodeObjectOfClass:[NSURL class] + forKey:kEndSessionEndpointKey]; + // We don't accept nil authorizationEndpoints or tokenEndpoints. + if (!authorizationEndpoint || !tokenEndpoint) { + return nil; + } + + NSSet *allowedClasses = [NSSet setWithArray:@[[OIDServiceDiscovery class], + // The following classes are required in + // order to support secure decoding of the + // old OIDServiceDiscovery encoding. + [NSDictionary class], + [NSArray class], + [NSString class], + [NSNumber class], + [NSNull class]]]; + OIDServiceDiscovery *discoveryDocument = [aDecoder decodeObjectOfClasses:allowedClasses + forKey:kDiscoveryDocumentKey]; + + return [self initWithAuthorizationEndpoint:authorizationEndpoint + tokenEndpoint:tokenEndpoint + issuer:issuer + registrationEndpoint:registrationEndpoint + endSessionEndpoint:endSessionEndpoint + discoveryDocument:discoveryDocument]; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_authorizationEndpoint forKey:kAuthorizationEndpointKey]; + [aCoder encodeObject:_tokenEndpoint forKey:kTokenEndpointKey]; + [aCoder encodeObject:_issuer forKey:kIssuerKey]; + [aCoder encodeObject:_registrationEndpoint forKey:kRegistrationEndpointKey]; + [aCoder encodeObject:_discoveryDocument forKey:kDiscoveryDocumentKey]; + [aCoder encodeObject:_endSessionEndpoint forKey:kEndSessionEndpointKey]; +} + +#pragma mark - description + +- (NSString *)description { + return [NSString stringWithFormat: + @"OIDServiceConfiguration authorizationEndpoint: %@, tokenEndpoint: %@, " + "registrationEndpoint: %@, endSessionEndpoint: %@, discoveryDocument: [%@]", + _authorizationEndpoint, + _tokenEndpoint, + _registrationEndpoint, + _endSessionEndpoint, + _discoveryDocument]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDServiceDiscovery.h b/Pods/AppAuth/Source/AppAuthCore/OIDServiceDiscovery.h new file mode 100644 index 0000000..1a4929c --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDServiceDiscovery.h @@ -0,0 +1,364 @@ +/*! @file OIDServiceDiscovery.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Represents an OpenID Connect 1.0 Discovery Document + @see https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata + */ +@interface OIDServiceDiscovery : NSObject + +/*! @brief The decoded OpenID Connect 1.0 Discovery Document as a dictionary. + */ +@property(nonatomic, readonly) NSDictionary *discoveryDictionary; + +/*! @brief REQUIRED. URL using the @c https scheme with no query or fragment component that the OP + asserts as its Issuer Identifier. If Issuer discovery is supported, this value MUST be + identical to the issuer value returned by WebFinger. This also MUST be identical to the + @c iss Claim value in ID Tokens issued from this Issuer. + @remarks issuer + @seealso https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery + */ +@property(nonatomic, readonly) NSURL *issuer; + +/*! @brief REQUIRED. URL of the OP's OAuth 2.0 Authorization Endpoint. + @remarks authorization_endpoint + @seealso http://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint + */ +@property(nonatomic, readonly) NSURL *authorizationEndpoint; + +/*! @brief OPTIONAL. URL of the OP's OAuth 2.0 Device Authorization Endpoint. + @remarks device_authorization_endpoint + @seealso https://tools.ietf.org/html/rfc8628#section-4 + */ +@property(nonatomic, readonly, nullable) NSURL *deviceAuthorizationEndpoint; + +/*! @brief URL of the OP's OAuth 2.0 Token Endpoint. This is REQUIRED unless only the Implicit Flow + is used. + @remarks token_endpoint + @seealso http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint + */ +@property(nonatomic, readonly) NSURL *tokenEndpoint; + +/*! @brief RECOMMENDED. URL of the OP's UserInfo Endpoint. This URL MUST use the https scheme and + MAY contain port, path, and query parameter components. + @remarks userinfo_endpoint + @seealso http://openid.net/specs/openid-connect-core-1_0.html#UserInfo + */ +@property(nonatomic, readonly, nullable) NSURL *userinfoEndpoint; + +/*! @brief REQUIRED. URL of the OP's JSON Web Key Set document. This contains the signing key(s) the + RP uses to validate signatures from the OP. The JWK Set MAY also contain the Server's + encryption key(s), which are used by RPs to encrypt requests to the Server. When both + signing and encryption keys are made available, a use (Key Use) parameter value is REQUIRED + for all keys in the referenced JWK Set to indicate each key's intended usage. Although some + algorithms allow the same key to be used for both signatures and encryption, doing so is NOT + RECOMMENDED, as it is less secure. The JWK x5c parameter MAY be used to provide X.509 + representations of keys provided. When used, the bare key values MUST still be present and + MUST match those in the certificate. + @remarks jwks_uri + @seealso http://tools.ietf.org/html/rfc7517 + */ +@property(nonatomic, readonly) NSURL *jwksURL; + +/*! @brief RECOMMENDED. URL of the OP's Dynamic Client Registration Endpoint. + @remarks registration_endpoint + @seealso http://openid.net/specs/openid-connect-registration-1_0.html + */ +@property(nonatomic, readonly, nullable) NSURL *registrationEndpoint; + +/* @brief OPTIONAL. URL of the OP's RP-Initiated Logout endpoint. + @remarks end_session_endpoint + @seealso http://openid.net/specs/openid-connect-session-1_0.html#OPMetadata + */ +@property(nonatomic, readonly, nullable) NSURL *endSessionEndpoint; + +/*! @brief RECOMMENDED. JSON array containing a list of the OAuth 2.0 [RFC6749] scope values that + this server supports. The server MUST support the openid scope value. Servers MAY choose not + to advertise some supported scope values even when this parameter is used, although those + defined in [OpenID.Core] SHOULD be listed, if supported. + @remarks scopes_supported + @seealso http://tools.ietf.org/html/rfc6749#section-3.3 + */ +@property(nonatomic, readonly, nullable) NSArray *scopesSupported; + +/*! @brief REQUIRED. JSON array containing a list of the OAuth 2.0 @c response_type values that this + OP supports. Dynamic OpenID Providers MUST support the @c code, @c id_token, and the token + @c id_token Response Type values. + @remarks response_types_supported + */ +@property(nonatomic, readonly) NSArray *responseTypesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the OAuth 2.0 @c response_mode values that this + OP supports, as specified in OAuth 2.0 Multiple Response Type Encoding Practices. If + omitted, the default for Dynamic OpenID Providers is @c ["query", "fragment"]. + @remarks response_modes_supported + @seealso http://openid.net/specs/oauth-v2-multiple-response-types-1_0.html + */ +@property(nonatomic, readonly, nullable) NSArray *responseModesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the OAuth 2.0 Grant Type values that this OP + supports. Dynamic OpenID Providers MUST support the @c authorization_code and @c implicit + Grant Type values and MAY support other Grant Types. If omitted, the default value is + @c ["authorization_code", "implicit"]. + @remarks grant_types_supported + */ +@property(nonatomic, readonly, nullable) NSArray *grantTypesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the Authentication Context Class References + that this OP supports. + @remarks acr_values_supported + */ +@property(nonatomic, readonly, nullable) NSArray *acrValuesSupported; + +/*! @brief REQUIRED. JSON array containing a list of the Subject Identifier types that this OP + supports. Valid types include @c pairwise and @c public. + @remarks subject_types_supported + */ +@property(nonatomic, readonly) NSArray *subjectTypesSupported; + +/*! @brief REQUIRED. JSON array containing a list of the JWS signing algorithms (@c alg values) + supported by the OP for the ID Token to encode the Claims in a JWT. The algorithm @c RS256 + MUST be included. The value @c none MAY be supported, but MUST NOT be used unless the + Response Type used returns no ID Token from the Authorization Endpoint (such as when using + the Authorization Code Flow). + @remarks id_token_signing_alg_values_supported + @seealso https://tools.ietf.org/html/rfc7519 + */ +@property(nonatomic, readonly) NSArray *IDTokenSigningAlgorithmValuesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the JWE encryption algorithms (@c alg values) + supported by the OP for the ID Token to encode the Claims in a JWT. + @remarks id_token_encryption_alg_values_supported + @seealso https://tools.ietf.org/html/rfc7519 + */ +@property(nonatomic, readonly, nullable) + NSArray *IDTokenEncryptionAlgorithmValuesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the JWE encryption algorithms (@c enc values) + supported by the OP for the ID Token to encode the Claims in a JWT. + @remarks id_token_encryption_enc_values_supported + @seealso https://tools.ietf.org/html/rfc7519 + */ +@property(nonatomic, readonly, nullable) + NSArray *IDTokenEncryptionEncodingValuesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the JWS signing algorithms (@c alg values) + supported by the UserInfo Endpoint to encode the Claims in a JWT. The value none MAY be + included. + @remarks userinfo_signing_alg_values_supported + @seealso https://tools.ietf.org/html/rfc7515 + @seealso https://tools.ietf.org/html/rfc7518 + @seealso https://tools.ietf.org/html/rfc7519 + */ +@property(nonatomic, readonly, nullable) + NSArray *userinfoSigningAlgorithmValuesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the JWE encryption algorithms (alg values) + supported by the UserInfo Endpoint to encode the Claims in a JWT. + @remarks userinfo_encryption_alg_values_supported + @seealso https://tools.ietf.org/html/rfc7516 + @seealso https://tools.ietf.org/html/rfc7518 + @seealso https://tools.ietf.org/html/rfc7519 + */ +@property(nonatomic, readonly, nullable) + NSArray *userinfoEncryptionAlgorithmValuesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the JWE encryption algorithms (@c enc values) + supported by the UserInfo Endpoint to encode the Claims in a JWT. + @remarks userinfo_encryption_enc_values_supported + @seealso https://tools.ietf.org/html/rfc7519 + */ +@property(nonatomic, readonly, nullable) + NSArray *userinfoEncryptionEncodingValuesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the JWS signing algorithms (@c alg values) + supported by the OP for Request Objects, which are described in Section 6.1 of OpenID + Connect Core 1.0. These algorithms are used both when the Request Object is passed by value + (using the request parameter) and when it is passed by reference (using the @c request_uri + parameter). Servers SHOULD support @c none and @c RS256. + @remarks request_object_signing_alg_values_supported + @seealso http://openid.net/specs/openid-connect-core-1_0.html + */ +@property(nonatomic, readonly, nullable) + NSArray *requestObjectSigningAlgorithmValuesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the JWE encryption algorithms (@c alg values) + supported by the OP for Request Objects. These algorithms are used both when the Request + Object is passed by value and when it is passed by reference. + @remarks request_object_encryption_alg_values_supported + */ +@property(nonatomic, readonly, nullable) + NSArray *requestObjectEncryptionAlgorithmValuesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the JWE encryption algorithms (@c enc values) + supported by the OP for Request Objects. These algorithms are used both when the Request + Object is passed by value and when it is passed by reference. + @remarks request_object_encryption_enc_values_supported + */ +@property(nonatomic, readonly, nullable) + NSArray *requestObjectEncryptionEncodingValuesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of Client Authentication methods supported by this + Token Endpoint. The options are @c client_secret_post, @c client_secret_basic, + @c client_secret_jwt, and @c private_key_jwt, as described in Section 9 of OpenID Connect + Core 1.0. Other authentication methods MAY be defined by extensions. If omitted, the default + is @c client_secret_basic -- the HTTP Basic Authentication Scheme specified in Section 2.3.1 + of OAuth 2.0. + @remarks token_endpoint_auth_methods_supported + @seealso http://openid.net/specs/openid-connect-core-1_0.html + @seealso http://tools.ietf.org/html/rfc6749#section-2.3.1 + */ +@property(nonatomic, readonly, nullable) NSArray *tokenEndpointAuthMethodsSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the JWS signing algorithms (@c alg values) + supported by the Token Endpoint for the signature on the JWT used to authenticate the Client + at the Token Endpoint for the @c private_key_jwt and @c client_secret_jwt authentication + methods. Servers SHOULD support @c RS256. The value @c none MUST NOT be used. + @remarks token_endpoint_auth_signing_alg_values_supported + @seealso https://tools.ietf.org/html/rfc7519 + */ +@property(nonatomic, readonly, nullable) + NSArray *tokenEndpointAuthSigningAlgorithmValuesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the @c display parameter values that the OpenID + Provider supports. These values are described in Section 3.1.2.1 of OpenID Connect Core 1.0. + @remarks display_values_supported + @seealso http://openid.net/specs/openid-connect-core-1_0.html + */ +@property(nonatomic, readonly, nullable) NSArray *displayValuesSupported; + +/*! @brief OPTIONAL. JSON array containing a list of the Claim Types that the OpenID Provider + supports. These Claim Types are described in Section 5.6 of OpenID Connect Core 1.0. Values + defined by this specification are @c normal, @c aggregated, and @c distributed. If omitted, + the implementation supports only @c normal Claims. + @remarks claim_types_supported + @seealso http://openid.net/specs/openid-connect-core-1_0.html + */ +@property(nonatomic, readonly, nullable) NSArray *claimTypesSupported; + +/*! @brief RECOMMENDED. JSON array containing a list of the Claim Names of the Claims that the + OpenID Provider MAY be able to supply values for. Note that for privacy or other reasons, + this might not be an exhaustive list. + @remarks claims_supported + */ +@property(nonatomic, readonly, nullable) NSArray *claimsSupported; + +/*! @brief OPTIONAL. URL of a page containing human-readable information that developers might want + or need to know when using the OpenID Provider. In particular, if the OpenID Provider does + not support Dynamic Client Registration, then information on how to register Clients needs + to be provided in this documentation. + @remarks service_documentation + */ +@property(nonatomic, readonly, nullable) NSURL *serviceDocumentation; + +/*! @brief OPTIONAL. Languages and scripts supported for values in Claims being returned, + represented as a JSON array of BCP47 language tag values. Not all languages and scripts are + necessarily supported for all Claim values. + @remarks claims_locales_supported + @seealso http://tools.ietf.org/html/rfc5646 + */ +@property(nonatomic, readonly, nullable) NSArray *claimsLocalesSupported; + +/*! @brief OPTIONAL. Languages and scripts supported for the user interface, represented as a JSON + array of BCP47 language tag values. + @remarks ui_locales_supported + @seealso http://tools.ietf.org/html/rfc5646 + */ +@property(nonatomic, readonly, nullable) NSArray *UILocalesSupported; + +/*! @brief OPTIONAL. Boolean value specifying whether the OP supports use of the claims parameter, + with @c true indicating support. If omitted, the default value is @c false. + @remarks claims_parameter_supported + */ +@property(nonatomic, readonly) BOOL claimsParameterSupported; + +/*! @brief OPTIONAL. Boolean value specifying whether the OP supports use of the request parameter, + with @c true indicating support. If omitted, the default value is @c false. + @remarks request_parameter_supported + */ +@property(nonatomic, readonly) BOOL requestParameterSupported; + +/*! @brief OPTIONAL. Boolean value specifying whether the OP supports use of the @c request_uri + parameter, with true indicating support. If omitted, the default value is @c true. + @remarks request_uri_parameter_supported + */ +@property(nonatomic, readonly) BOOL requestURIParameterSupported; + +/*! @brief OPTIONAL. Boolean value specifying whether the OP requires any @c request_uri values used + to be pre-registered using the @c request_uris registration parameter. Pre-registration is + REQUIRED when the value is @c true. If omitted, the default value is @c false. + @remarks require_request_uri_registration + */ +@property(nonatomic, readonly) BOOL requireRequestURIRegistration; + +/*! @brief OPTIONAL. URL that the OpenID Provider provides to the person registering the Client to + read about the OP's requirements on how the Relying Party can use the data provided by the + OP. The registration process SHOULD display this URL to the person registering the Client if + it is given. + @remarks op_policy_uri + */ +@property(nonatomic, readonly, nullable) NSURL *OPPolicyURI; + +/*! @brief OPTIONAL. URL that the OpenID Provider provides to the person registering the Client to + read about OpenID Provider's terms of service. The registration process SHOULD display this + URL to the person registering the Client if it is given. + @remarks op_tos_uri + */ +@property(nonatomic, readonly, nullable) NSURL *OPTosURI; + +/*! @internal + @brief Unavailable. Please use @c initWithDictionary:error:, @c initWithJSON:error, or the + @c discoverServiceConfigurationForDiscoveryURL:callback: from @c OIDAuthorizationService. + */ +- (nonnull instancetype)init NS_UNAVAILABLE; + +/*! @brief Decodes a OpenID Connect Discovery 1.0 JSON document. + @param serviceDiscoveryJSON An OpenID Connect Service Discovery document. + @param error If a required field is missing from the dictionary, an error with domain + @c ::OIDGeneralErrorDomain and code @c ::OIDErrorCodeInvalidDiscoveryDocument will be + returned. + */ +- (nullable instancetype)initWithJSON:(NSString *)serviceDiscoveryJSON + error:(NSError **_Nullable)error; + +/*! @brief Decodes a OpenID Connect Discovery 1.0 JSON document. + @param serviceDiscoveryJSONData An OpenID Connect Service Discovery document. + @param error If a required field is missing from the dictionary, an error with domain + @c ::OIDGeneralErrorDomain and code @c ::OIDErrorCodeInvalidDiscoveryDocument will be + returned. + */ +- (nullable instancetype)initWithJSONData:(NSData *)serviceDiscoveryJSONData + error:(NSError **_Nullable)error; + +/*! @brief Designated initializer. The dictionary keys should match the keys defined in the OpenID + Connect Discovery 1.0 standard for OpenID Provider Metadata. + @param serviceDiscoveryDictionary A dictionary representing an OpenID Connect Service Discovery + document. + @param error If a required field is missing from the dictionary, an error with domain + @c ::OIDGeneralErrorDomain and code @c ::OIDErrorCodeInvalidDiscoveryDocument will be + returned. + */ +- (nullable instancetype)initWithDictionary:(NSDictionary *)serviceDiscoveryDictionary + error:(NSError **_Nullable)error NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDServiceDiscovery.m b/Pods/AppAuth/Source/AppAuthCore/OIDServiceDiscovery.m new file mode 100644 index 0000000..4d96f9d --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDServiceDiscovery.m @@ -0,0 +1,393 @@ +/*! @file OIDServiceDiscovery.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDServiceDiscovery.h" + +#import "OIDDefines.h" +#import "OIDErrorUtilities.h" + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief The key for the @c discoveryDictionary property. + */ +static NSString *const kDiscoveryDictionaryKey = @"discoveryDictionary"; + +/*! Field keys associated with an OpenID Connect Discovery Document. */ +static NSString *const kIssuerKey = @"issuer"; +static NSString *const kAuthorizationEndpointKey = @"authorization_endpoint"; +static NSString *const kDeviceAuthorizationEndpointKey = @"device_authorization_endpoint"; +static NSString *const kTokenEndpointKey = @"token_endpoint"; +static NSString *const kUserinfoEndpointKey = @"userinfo_endpoint"; +static NSString *const kJWKSURLKey = @"jwks_uri"; +static NSString *const kRegistrationEndpointKey = @"registration_endpoint"; +static NSString *const kEndSessionEndpointKey = @"end_session_endpoint"; +static NSString *const kScopesSupportedKey = @"scopes_supported"; +static NSString *const kResponseTypesSupportedKey = @"response_types_supported"; +static NSString *const kResponseModesSupportedKey = @"response_modes_supported"; +static NSString *const kGrantTypesSupportedKey = @"grant_types_supported"; +static NSString *const kACRValuesSupportedKey = @"acr_values_supported"; +static NSString *const kSubjectTypesSupportedKey = @"subject_types_supported"; +static NSString *const kIDTokenSigningAlgorithmValuesSupportedKey = + @"id_token_signing_alg_values_supported"; +static NSString *const kIDTokenEncryptionAlgorithmValuesSupportedKey = + @"id_token_encryption_alg_values_supported"; +static NSString *const kIDTokenEncryptionEncodingValuesSupportedKey = + @"id_token_encryption_enc_values_supported"; +static NSString *const kUserinfoSigningAlgorithmValuesSupportedKey = + @"userinfo_signing_alg_values_supported"; +static NSString *const kUserinfoEncryptionAlgorithmValuesSupportedKey = + @"userinfo_encryption_alg_values_supported"; +static NSString *const kUserinfoEncryptionEncodingValuesSupportedKey = + @"userinfo_encryption_enc_values_supported"; +static NSString *const kRequestObjectSigningAlgorithmValuesSupportedKey = + @"request_object_signing_alg_values_supported"; +static NSString *const kRequestObjectEncryptionAlgorithmValuesSupportedKey = + @"request_object_encryption_alg_values_supported"; +static NSString *const kRequestObjectEncryptionEncodingValuesSupported = + @"request_object_encryption_enc_values_supported"; +static NSString *const kTokenEndpointAuthMethodsSupportedKey = + @"token_endpoint_auth_methods_supported"; +static NSString *const kTokenEndpointAuthSigningAlgorithmValuesSupportedKey = + @"token_endpoint_auth_signing_alg_values_supported"; +static NSString *const kDisplayValuesSupportedKey = @"display_values_supported"; +static NSString *const kClaimTypesSupportedKey = @"claim_types_supported"; +static NSString *const kClaimsSupportedKey = @"claims_supported"; +static NSString *const kServiceDocumentationKey = @"service_documentation"; +static NSString *const kClaimsLocalesSupportedKey = @"claims_locales_supported"; +static NSString *const kUILocalesSupportedKey = @"ui_locales_supported"; +static NSString *const kClaimsParameterSupportedKey = @"claims_parameter_supported"; +static NSString *const kRequestParameterSupportedKey = @"request_parameter_supported"; +static NSString *const kRequestURIParameterSupportedKey = @"request_uri_parameter_supported"; +static NSString *const kRequireRequestURIRegistrationKey = @"require_request_uri_registration"; +static NSString *const kOPPolicyURIKey = @"op_policy_uri"; +static NSString *const kOPTosURIKey = @"op_tos_uri"; + +@implementation OIDServiceDiscovery { + NSDictionary *_discoveryDictionary; +} + +- (nonnull instancetype)init OID_UNAVAILABLE_USE_INITIALIZER(@selector(initWithDictionary:error:)) + +- (nullable instancetype)initWithJSON:(NSString *)serviceDiscoveryJSON error:(NSError **)error { + NSData *jsonData = [serviceDiscoveryJSON dataUsingEncoding:NSUTF8StringEncoding]; + return [self initWithJSONData:jsonData error:error]; +} + +- (nullable instancetype)initWithJSONData:(NSData *)serviceDiscoveryJSONData + error:(NSError **_Nullable)error { + NSError *jsonError; + NSDictionary *json = + [NSJSONSerialization JSONObjectWithData:serviceDiscoveryJSONData options:0 error:&jsonError]; + if (!json || jsonError) { + *error = [OIDErrorUtilities errorWithCode:OIDErrorCodeJSONDeserializationError + underlyingError:jsonError + description:jsonError.localizedDescription]; + return nil; + } + if (![json isKindOfClass:[NSDictionary class]]) { + *error = [OIDErrorUtilities errorWithCode:OIDErrorCodeInvalidDiscoveryDocument + underlyingError:nil + description:@"Discovery document isn't a dictionary"]; + return nil; + } + + return [self initWithDictionary:json error:error]; +} + +- (nullable instancetype)initWithDictionary:(NSDictionary *)serviceDiscoveryDictionary + error:(NSError **_Nullable)error { + if (![[self class] dictionaryHasRequiredFields:serviceDiscoveryDictionary error:error]) { + return nil; + } + self = [super init]; + if (self) { + _discoveryDictionary = [serviceDiscoveryDictionary copy]; + } + return self; +} + +#pragma mark - + +/*! @brief Checks to see if the specified dictionary contains the required fields. + @discussion This test is not meant to provide semantic analysis of the document (eg. fields + where the value @c none is not an allowed option would not cause this method to fail if + their value was @c none.) We are just testing to make sure we can meet the nullability + contract we promised in the header. + */ ++ (BOOL)dictionaryHasRequiredFields:(NSDictionary *)dictionary + error:(NSError **_Nullable)error { + static NSString *const kMissingFieldErrorText = @"Missing field: %@"; + static NSString *const kInvalidURLFieldErrorText = @"Invalid URL: %@"; + + NSArray *requiredFields = @[ + kIssuerKey, + kAuthorizationEndpointKey, + kTokenEndpointKey, + kJWKSURLKey, + kResponseTypesSupportedKey, + kSubjectTypesSupportedKey, + kIDTokenSigningAlgorithmValuesSupportedKey + ]; + + for (NSString *field in requiredFields) { + if (!dictionary[field]) { + if (error) { + NSString *errorText = [NSString stringWithFormat:kMissingFieldErrorText, field]; + *error = [OIDErrorUtilities errorWithCode:OIDErrorCodeInvalidDiscoveryDocument + underlyingError:nil + description:errorText]; + } + return NO; + } + } + + // Check required URL fields are valid URLs. + NSArray *requiredURLFields = @[ + kIssuerKey, + kTokenEndpointKey, + kJWKSURLKey + ]; + + for (NSString *field in requiredURLFields) { + if (![NSURL URLWithString:dictionary[field]]) { + if (error) { + NSString *errorText = [NSString stringWithFormat:kInvalidURLFieldErrorText, field]; + *error = [OIDErrorUtilities errorWithCode:OIDErrorCodeInvalidDiscoveryDocument + underlyingError:nil + description:errorText]; + } + return NO; + } + } + + return YES; +} + +#pragma mark - NSCopying + +- (instancetype)copyWithZone:(nullable NSZone *)zone { + // The documentation for NSCopying specifically advises us to return a reference to the original + // instance in the case where instances are immutable (as ours is): + // "Implement NSCopying by retaining the original instead of creating a new copy when the class + // and its contents are immutable." + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + NSError *error; + NSDictionary *dictionary; + if ([aDecoder containsValueForKey:kDiscoveryDictionaryKey]) { + // We're decoding a collection type (NSDictionary) from NSJSONSerialization's + // +JSONObjectWithData, so we need to include all classes that could potentially be contained + // within. + NSSet *allowedClasses = [NSSet setWithArray:@[[NSDictionary class], + [NSArray class], + [NSString class], + [NSNumber class], + [NSNull class]]]; + dictionary = [aDecoder decodeObjectOfClasses:allowedClasses + forKey:kDiscoveryDictionaryKey]; + } else { + // Decode using the old encoding which delegated to NSDictionary's encodeWithCoder: + // implementation: + // + // - (void)encodeWithCoder:(NSCoder *)aCoder { + // [_discoveryDictionary encodeWithCoder:aCoder]; + // } + dictionary = [[NSDictionary alloc] initWithCoder:aDecoder]; + } + self = [self initWithDictionary:dictionary error:&error]; + if (error) { + return nil; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_discoveryDictionary forKey:kDiscoveryDictionaryKey]; + // Provide forward compatibilty by continuing to add the old encoding. + [_discoveryDictionary encodeWithCoder:aCoder]; +} + +#pragma mark - Properties + +- (NSDictionary *)discoveryDictionary { + return _discoveryDictionary; +} + +- (NSURL *)issuer { + return [NSURL URLWithString:_discoveryDictionary[kIssuerKey]]; +} + +- (NSURL *)authorizationEndpoint { + return [NSURL URLWithString:_discoveryDictionary[kAuthorizationEndpointKey]]; +} + +- (nullable NSURL *)deviceAuthorizationEndpoint { + return [NSURL URLWithString:_discoveryDictionary[kDeviceAuthorizationEndpointKey]]; +} + +- (NSURL *)tokenEndpoint { + return [NSURL URLWithString:_discoveryDictionary[kTokenEndpointKey]]; +} + +- (nullable NSURL *)userinfoEndpoint { + return [NSURL URLWithString:_discoveryDictionary[kUserinfoEndpointKey]]; +} + +- (NSURL *)jwksURL { + return [NSURL URLWithString:_discoveryDictionary[kJWKSURLKey]]; +} + +- (nullable NSURL *)registrationEndpoint { + return [NSURL URLWithString:_discoveryDictionary[kRegistrationEndpointKey]]; +} + +- (nullable NSURL *)endSessionEndpoint { + return [NSURL URLWithString:_discoveryDictionary[kEndSessionEndpointKey]]; +} + +- (nullable NSArray *)scopesSupported { + return _discoveryDictionary[kScopesSupportedKey]; +} + +- (NSArray *)responseTypesSupported { + return _discoveryDictionary[kResponseTypesSupportedKey]; +} + +- (nullable NSArray *)responseModesSupported { + return _discoveryDictionary[kResponseModesSupportedKey]; +} + +- (nullable NSArray *)grantTypesSupported { + return _discoveryDictionary[kGrantTypesSupportedKey]; +} + +- (nullable NSArray *)acrValuesSupported { + return _discoveryDictionary[kACRValuesSupportedKey]; +} + +- (NSArray *)subjectTypesSupported { + return _discoveryDictionary[kSubjectTypesSupportedKey]; +} + +- (NSArray *) IDTokenSigningAlgorithmValuesSupported { + return _discoveryDictionary[kIDTokenSigningAlgorithmValuesSupportedKey]; +} + +- (nullable NSArray *)IDTokenEncryptionAlgorithmValuesSupported { + return _discoveryDictionary[kIDTokenEncryptionAlgorithmValuesSupportedKey]; +} + +- (nullable NSArray *)IDTokenEncryptionEncodingValuesSupported { + return _discoveryDictionary[kIDTokenEncryptionEncodingValuesSupportedKey]; +} + +- (nullable NSArray *)userinfoSigningAlgorithmValuesSupported { + return _discoveryDictionary[kUserinfoSigningAlgorithmValuesSupportedKey]; +} + +- (nullable NSArray *)userinfoEncryptionAlgorithmValuesSupported { + return _discoveryDictionary[kUserinfoEncryptionAlgorithmValuesSupportedKey]; +} + +- (nullable NSArray *)userinfoEncryptionEncodingValuesSupported { + return _discoveryDictionary[kUserinfoEncryptionEncodingValuesSupportedKey]; +} + +- (nullable NSArray *)requestObjectSigningAlgorithmValuesSupported { + return _discoveryDictionary[kRequestObjectSigningAlgorithmValuesSupportedKey]; +} + +- (nullable NSArray *) requestObjectEncryptionAlgorithmValuesSupported { + return _discoveryDictionary[kRequestObjectEncryptionAlgorithmValuesSupportedKey]; +} + +- (nullable NSArray *) requestObjectEncryptionEncodingValuesSupported { + return _discoveryDictionary[kRequestObjectEncryptionEncodingValuesSupported]; +} + +- (nullable NSArray *)tokenEndpointAuthMethodsSupported { + return _discoveryDictionary[kTokenEndpointAuthMethodsSupportedKey]; +} + +- (nullable NSArray *)tokenEndpointAuthSigningAlgorithmValuesSupported { + return _discoveryDictionary[kTokenEndpointAuthSigningAlgorithmValuesSupportedKey]; +} + +- (nullable NSArray *)displayValuesSupported { + return _discoveryDictionary[kDisplayValuesSupportedKey]; +} + +- (nullable NSArray *)claimTypesSupported { + return _discoveryDictionary[kClaimTypesSupportedKey]; +} + +- (nullable NSArray *)claimsSupported { + return _discoveryDictionary[kClaimsSupportedKey]; +} + +- (nullable NSURL *)serviceDocumentation { + return [NSURL URLWithString:_discoveryDictionary[kServiceDocumentationKey]]; +} + +- (nullable NSArray *)claimsLocalesSupported { + return _discoveryDictionary[kClaimsLocalesSupportedKey]; +} + +- (nullable NSArray *)UILocalesSupported { + return _discoveryDictionary[kUILocalesSupportedKey]; +} + +- (BOOL)claimsParameterSupported { + return [_discoveryDictionary[kClaimsParameterSupportedKey] boolValue]; +} + +- (BOOL)requestParameterSupported { + return [_discoveryDictionary[kRequestParameterSupportedKey] boolValue]; +} + +- (BOOL)requestURIParameterSupported { + // Default is true/YES. + if (!_discoveryDictionary[kRequestURIParameterSupportedKey]) { + return YES; + } + return [_discoveryDictionary[kRequestURIParameterSupportedKey] boolValue]; +} + +- (BOOL)requireRequestURIRegistration { + return [_discoveryDictionary[kRequireRequestURIRegistrationKey] boolValue]; +} + +- (nullable NSURL *)OPPolicyURI { + return [NSURL URLWithString:_discoveryDictionary[kOPPolicyURIKey]]; +} + +- (nullable NSURL *)OPTosURI { + return [NSURL URLWithString:_discoveryDictionary[kOPTosURIKey]]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDTokenRequest.h b/Pods/AppAuth/Source/AppAuthCore/OIDTokenRequest.h new file mode 100644 index 0000000..399294e --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDTokenRequest.h @@ -0,0 +1,167 @@ +/*! @file OIDTokenRequest.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +// This file only declares string constants useful for constructing a @c OIDTokenRequest, so it is +// imported here for convenience. +#import "OIDGrantTypes.h" + +@class OIDAuthorizationResponse; +@class OIDServiceConfiguration; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Represents a token request. + @see https://tools.ietf.org/html/rfc6749#section-3.2 + @see https://tools.ietf.org/html/rfc6749#section-4.1.3 + */ +@interface OIDTokenRequest : NSObject + +/*! @brief The service's configuration. + @remarks This configuration specifies how to connect to a particular OAuth provider. + Configurations may be created manually, or via an OpenID Connect Discovery Document. + */ +@property(nonatomic, readonly) OIDServiceConfiguration *configuration; + +/*! @brief The type of token being sent to the token endpoint, i.e. "authorization_code" for the + authorization code exchange, or "refresh_token" for an access token refresh request. + @remarks grant_type + @see https://tools.ietf.org/html/rfc6749#section-4.1.3 + @see https://www.google.com/url?sa=D&q=https%3A%2F%2Ftools.ietf.org%2Fhtml%2Frfc6749%23section-6 + */ +@property(nonatomic, readonly) NSString *grantType; + +/*! @brief The authorization code received from the authorization server. + @remarks code + @see https://tools.ietf.org/html/rfc6749#section-4.1.3 + */ +@property(nonatomic, readonly, nullable) NSString *authorizationCode; + +/*! @brief The client's redirect URI. + @remarks redirect_uri + @see https://tools.ietf.org/html/rfc6749#section-4.1.3 + */ +@property(nonatomic, readonly, nullable) NSURL *redirectURL; + +/*! @brief The client identifier. + @remarks client_id + @see https://tools.ietf.org/html/rfc6749#section-4.1.3 + */ +@property(nonatomic, readonly) NSString *clientID; + +/*! @brief The client secret. + @remarks client_secret + @see https://tools.ietf.org/html/rfc6749#section-2.3.1 + */ +@property(nonatomic, readonly, nullable) NSString *clientSecret; + +/*! @brief The value of the scope parameter is expressed as a list of space-delimited, + case-sensitive strings. + @remarks scope + @see https://tools.ietf.org/html/rfc6749#section-3.3 + */ +@property(nonatomic, readonly, nullable) NSString *scope; + +/*! @brief The refresh token, which can be used to obtain new access tokens using the same + authorization grant. + @remarks refresh_token + @see https://tools.ietf.org/html/rfc6749#section-5.1 + */ +@property(nonatomic, readonly, nullable) NSString *refreshToken; + +/*! @brief The PKCE code verifier used to redeem the authorization code. + @remarks code_verifier + @see https://tools.ietf.org/html/rfc7636#section-4.3 + */ +@property(nonatomic, readonly, nullable) NSString *codeVerifier; + +/*! @brief The client's additional token request parameters. + */ +@property(nonatomic, readonly, nullable) NSDictionary *additionalParameters; + +/*! @internal + @brief Unavailable. Please use + initWithConfiguration:grantType:code:redirectURL:clientID:additionalParameters:. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @param configuration The service's configuration. + @param grantType the type of token being sent to the token endpoint, i.e. "authorization_code" + for the authorization code exchange, or "refresh_token" for an access token refresh request. + @see OIDGrantTypes.h + @param code The authorization code received from the authorization server. + @param redirectURL The client's redirect URI. + @param clientID The client identifier. + @param clientSecret The client secret. + @param scopes An array of scopes to combine into a single scope string per the OAuth2 spec. + @param refreshToken The refresh token. + @param codeVerifier The PKCE code verifier. + @param additionalParameters The client's additional token request parameters. + */ +- (instancetype)initWithConfiguration:(OIDServiceConfiguration *)configuration + grantType:(NSString *)grantType + authorizationCode:(nullable NSString *)code + redirectURL:(nullable NSURL *)redirectURL + clientID:(NSString *)clientID + clientSecret:(nullable NSString *)clientSecret + scopes:(nullable NSArray *)scopes + refreshToken:(nullable NSString *)refreshToken + codeVerifier:(nullable NSString *)codeVerifier + additionalParameters:(nullable NSDictionary *)additionalParameters; + +/*! @brief Designated initializer. + @param configuration The service's configuration. + @param grantType the type of token being sent to the token endpoint, i.e. "authorization_code" + for the authorization code exchange, or "refresh_token" for an access token refresh request. + @see OIDGrantTypes.h + @param code The authorization code received from the authorization server. + @param redirectURL The client's redirect URI. + @param clientID The client identifier. + @param clientSecret The client secret. + @param scope The value of the scope parameter is expressed as a list of space-delimited, + case-sensitive strings. + @param refreshToken The refresh token. + @param codeVerifier The PKCE code verifier. + @param additionalParameters The client's additional token request parameters. + */ +- (instancetype)initWithConfiguration:(OIDServiceConfiguration *)configuration + grantType:(NSString *)grantType + authorizationCode:(nullable NSString *)code + redirectURL:(nullable NSURL *)redirectURL + clientID:(NSString *)clientID + clientSecret:(nullable NSString *)clientSecret + scope:(nullable NSString *)scope + refreshToken:(nullable NSString *)refreshToken + codeVerifier:(nullable NSString *)codeVerifier + additionalParameters:(nullable NSDictionary *)additionalParameters + NS_DESIGNATED_INITIALIZER; + +/*! @brief Designated initializer for NSSecureCoding. + @param aDecoder Unarchiver object to decode + */ +- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER; + +/*! @brief Constructs an @c NSURLRequest representing the token request. + @return An @c NSURLRequest representing the token request. + */ +- (NSURLRequest *)URLRequest; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDTokenRequest.m b/Pods/AppAuth/Source/AppAuthCore/OIDTokenRequest.m new file mode 100644 index 0000000..5ed8a17 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDTokenRequest.m @@ -0,0 +1,312 @@ +/*! @file OIDTokenRequest.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDTokenRequest.h" + +#import "OIDDefines.h" +#import "OIDError.h" +#import "OIDScopeUtilities.h" +#import "OIDServiceConfiguration.h" +#import "OIDURLQueryComponent.h" +#import "OIDTokenUtilities.h" + +/*! @brief The key for the @c configuration property for @c NSSecureCoding + */ +static NSString *const kConfigurationKey = @"configuration"; + +/*! @brief Key used to encode the @c grantType property for @c NSSecureCoding + */ +static NSString *const kGrantTypeKey = @"grant_type"; + +/*! @brief The key for the @c authorizationCode property for @c NSSecureCoding. + */ +static NSString *const kAuthorizationCodeKey = @"code"; + +/*! @brief Key used to encode the @c clientID property for @c NSSecureCoding + */ +static NSString *const kClientIDKey = @"client_id"; + +/*! @brief Key used to encode the @c clientSecret property for @c NSSecureCoding + */ +static NSString *const kClientSecretKey = @"client_secret"; + +/*! @brief Key used to encode the @c redirectURL property for @c NSSecureCoding + */ +static NSString *const kRedirectURLKey = @"redirect_uri"; + +/*! @brief Key used to encode the @c scopes property for @c NSSecureCoding + */ +static NSString *const kScopeKey = @"scope"; + +/*! @brief Key used to encode the @c refreshToken property for @c NSSecureCoding + */ +static NSString *const kRefreshTokenKey = @"refresh_token"; + +/*! @brief Key used to encode the @c codeVerifier property for @c NSSecureCoding and to build the + request URL. + */ +static NSString *const kCodeVerifierKey = @"code_verifier"; + +/*! @brief Key used to encode the @c additionalParameters property for + @c NSSecureCoding + */ +static NSString *const kAdditionalParametersKey = @"additionalParameters"; + +@implementation OIDTokenRequest + +- (instancetype)init + OID_UNAVAILABLE_USE_INITIALIZER( + @selector(initWithConfiguration: + grantType: + authorizationCode: + redirectURL: + clientID: + clientSecret: + scope: + refreshToken: + codeVerifier: + additionalParameters:) + ) + +- (instancetype)initWithConfiguration:(OIDServiceConfiguration *)configuration + grantType:(NSString *)grantType + authorizationCode:(nullable NSString *)code + redirectURL:(nullable NSURL *)redirectURL + clientID:(NSString *)clientID + clientSecret:(nullable NSString *)clientSecret + scopes:(nullable NSArray *)scopes + refreshToken:(nullable NSString *)refreshToken + codeVerifier:(nullable NSString *)codeVerifier + additionalParameters:(nullable NSDictionary *)additionalParameters { + return [self initWithConfiguration:configuration + grantType:grantType + authorizationCode:code + redirectURL:redirectURL + clientID:clientID + clientSecret:clientSecret + scope:[OIDScopeUtilities scopesWithArray:scopes] + refreshToken:refreshToken + codeVerifier:(NSString *)codeVerifier + additionalParameters:additionalParameters]; +} + +- (instancetype)initWithConfiguration:(OIDServiceConfiguration *)configuration + grantType:(NSString *)grantType + authorizationCode:(nullable NSString *)code + redirectURL:(nullable NSURL *)redirectURL + clientID:(NSString *)clientID + clientSecret:(nullable NSString *)clientSecret + scope:(nullable NSString *)scope + refreshToken:(nullable NSString *)refreshToken + codeVerifier:(nullable NSString *)codeVerifier + additionalParameters:(nullable NSDictionary *)additionalParameters { + self = [super init]; + if (self) { + _configuration = [configuration copy]; + _grantType = [grantType copy]; + _authorizationCode = [code copy]; + _redirectURL = [redirectURL copy]; + _clientID = [clientID copy]; + _clientSecret = [clientSecret copy]; + _scope = [scope copy]; + _refreshToken = [refreshToken copy]; + _codeVerifier = [codeVerifier copy]; + _additionalParameters = + [[NSDictionary alloc] initWithDictionary:additionalParameters copyItems:YES]; + + // Additional validation for the authorization_code grant type + if ([_grantType isEqual:OIDGrantTypeAuthorizationCode]) { + // redirect URI must not be nil + if (!_redirectURL) { + [NSException raise:OIDOAuthExceptionInvalidTokenRequestNullRedirectURL + format:@"%@", OIDOAuthExceptionInvalidTokenRequestNullRedirectURL, nil]; + + } + } + } + return self; +} + +#pragma mark - NSCopying + +- (instancetype)copyWithZone:(nullable NSZone *)zone { + // The documentation for NSCopying specifically advises us to return a reference to the original + // instance in the case where instances are immutable (as ours is): + // "Implement NSCopying by retaining the original instead of creating a new copy when the class + // and its contents are immutable." + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + OIDServiceConfiguration *configuration = + [aDecoder decodeObjectOfClass:[OIDServiceConfiguration class] + forKey:kConfigurationKey]; + NSString *grantType = [aDecoder decodeObjectOfClass:[NSString class] forKey:kGrantTypeKey]; + NSString *code = [aDecoder decodeObjectOfClass:[NSString class] forKey:kAuthorizationCodeKey]; + NSString *clientID = [aDecoder decodeObjectOfClass:[NSString class] forKey:kClientIDKey]; + NSString *clientSecret = [aDecoder decodeObjectOfClass:[NSString class] forKey:kClientSecretKey]; + NSString *scope = [aDecoder decodeObjectOfClass:[NSString class] forKey:kScopeKey]; + NSString *refreshToken = [aDecoder decodeObjectOfClass:[NSString class] forKey:kRefreshTokenKey]; + NSString *codeVerifier = [aDecoder decodeObjectOfClass:[NSString class] forKey:kCodeVerifierKey]; + NSURL *redirectURL = [aDecoder decodeObjectOfClass:[NSURL class] forKey:kRedirectURLKey]; + NSSet *additionalParameterCodingClasses = [NSSet setWithArray:@[ + [NSDictionary class], + [NSString class] + ]]; + NSDictionary *additionalParameters = + [aDecoder decodeObjectOfClasses:additionalParameterCodingClasses + forKey:kAdditionalParametersKey]; + + self = [super init]; + if (self) { + _configuration = [configuration copy]; + _grantType = [grantType copy]; + _authorizationCode = [code copy]; + _redirectURL = [redirectURL copy]; + _clientID = [clientID copy]; + _clientSecret = [clientSecret copy]; + _scope = [scope copy]; + _refreshToken = [refreshToken copy]; + _codeVerifier = [codeVerifier copy]; + _additionalParameters = + [[NSDictionary alloc] initWithDictionary:additionalParameters copyItems:YES]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_configuration forKey:kConfigurationKey]; + [aCoder encodeObject:_grantType forKey:kGrantTypeKey]; + [aCoder encodeObject:_authorizationCode forKey:kAuthorizationCodeKey]; + [aCoder encodeObject:_clientID forKey:kClientIDKey]; + [aCoder encodeObject:_clientSecret forKey:kClientSecretKey]; + [aCoder encodeObject:_redirectURL forKey:kRedirectURLKey]; + [aCoder encodeObject:_scope forKey:kScopeKey]; + [aCoder encodeObject:_refreshToken forKey:kRefreshTokenKey]; + [aCoder encodeObject:_codeVerifier forKey:kCodeVerifierKey]; + [aCoder encodeObject:_additionalParameters forKey:kAdditionalParametersKey]; +} + +#pragma mark - NSObject overrides + +- (NSString *)description { + NSURLRequest *request = self.URLRequest; + NSString *requestBody = + [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding]; + return [NSString stringWithFormat:@"<%@: %p, request: >", + NSStringFromClass([self class]), + (void *)self, + request.URL, + requestBody]; +} + +#pragma mark - + +/*! @brief Constructs the request URI. + @return A URL representing the token request. + @see https://tools.ietf.org/html/rfc6749#section-4.1.3 + */ +- (NSURL *)tokenRequestURL { + return _configuration.tokenEndpoint; +} + +/*! @brief Constructs the request body data by combining the request parameters using the + "application/x-www-form-urlencoded" format. + @return The data to pass to the token request URL. + @see https://tools.ietf.org/html/rfc6749#section-4.1.3 + */ +- (OIDURLQueryComponent *)tokenRequestBody { + OIDURLQueryComponent *query = [[OIDURLQueryComponent alloc] init]; + + // Add parameters, as applicable. + if (_grantType) { + [query addParameter:kGrantTypeKey value:_grantType]; + } + if (_scope) { + [query addParameter:kScopeKey value:_scope]; + } + if (_redirectURL) { + [query addParameter:kRedirectURLKey value:_redirectURL.absoluteString]; + } + if (_refreshToken) { + [query addParameter:kRefreshTokenKey value:_refreshToken]; + } + if (_authorizationCode) { + [query addParameter:kAuthorizationCodeKey value:_authorizationCode]; + } + if (_codeVerifier) { + [query addParameter:kCodeVerifierKey value:_codeVerifier]; + } + + // Add any additional parameters the client has specified. + [query addParameters:_additionalParameters]; + + return query; +} + +- (NSURLRequest *)URLRequest { + static NSString *const kHTTPPost = @"POST"; + static NSString *const kHTTPContentTypeHeaderKey = @"Content-Type"; + static NSString *const kHTTPContentTypeHeaderValue = + @"application/x-www-form-urlencoded; charset=UTF-8"; + + NSURL *tokenRequestURL = [self tokenRequestURL]; + NSMutableURLRequest *URLRequest = [[NSURLRequest requestWithURL:tokenRequestURL] mutableCopy]; + URLRequest.HTTPMethod = kHTTPPost; + [URLRequest setValue:kHTTPContentTypeHeaderValue forHTTPHeaderField:kHTTPContentTypeHeaderKey]; + + OIDURLQueryComponent *bodyParameters = [self tokenRequestBody]; + NSMutableDictionary *httpHeaders = [[NSMutableDictionary alloc] init]; + + if (_clientSecret) { + // The client id and secret are encoded using the "application/x-www-form-urlencoded" + // encoding algorithm per RFC 6749 Section 2.3.1. + // https://tools.ietf.org/html/rfc6749#section-2.3.1 + NSString *encodedClientID = [OIDTokenUtilities formUrlEncode:_clientID]; + NSString *encodedClientSecret = [OIDTokenUtilities formUrlEncode:_clientSecret]; + + NSString *credentials = + [NSString stringWithFormat:@"%@:%@", encodedClientID, encodedClientSecret]; + NSData *plainData = [credentials dataUsingEncoding:NSUTF8StringEncoding]; + NSString *basicAuth = [plainData base64EncodedStringWithOptions:kNilOptions]; + + NSString *authValue = [NSString stringWithFormat:@"Basic %@", basicAuth]; + [httpHeaders setObject:authValue forKey:@"Authorization"]; + } else { + [bodyParameters addParameter:kClientIDKey value:_clientID]; + } + + // Constructs request with the body string and headers. + NSString *bodyString = [bodyParameters URLEncodedParameters]; + NSData *body = [bodyString dataUsingEncoding:NSUTF8StringEncoding]; + URLRequest.HTTPBody = body; + + for (id header in httpHeaders) { + [URLRequest setValue:httpHeaders[header] forHTTPHeaderField:header]; + } + + return URLRequest; +} + +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDTokenResponse.h b/Pods/AppAuth/Source/AppAuthCore/OIDTokenResponse.h new file mode 100644 index 0000000..b446e94 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDTokenResponse.h @@ -0,0 +1,110 @@ +/*! @file OIDTokenResponse.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@class OIDTokenRequest; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Represents the response to an token request. + @see https://tools.ietf.org/html/rfc6749#section-3.2 + @see https://tools.ietf.org/html/rfc6749#section-4.1.3 + */ +@interface OIDTokenResponse : NSObject + +/*! @brief The request which was serviced. + */ +@property(nonatomic, readonly) OIDTokenRequest *request; + +/*! @brief The access token generated by the authorization server. + @remarks access_token + @see https://tools.ietf.org/html/rfc6749#section-4.1.4 + @see https://tools.ietf.org/html/rfc6749#section-5.1 + */ +@property(nonatomic, readonly, nullable) NSString *accessToken; + +/*! @brief The approximate expiration date & time of the access token. + @remarks expires_in + @seealso OIDTokenResponse.accessToken + @see https://tools.ietf.org/html/rfc6749#section-4.1.4 + @see https://tools.ietf.org/html/rfc6749#section-5.1 + */ +@property(nonatomic, readonly, nullable) NSDate *accessTokenExpirationDate; + +/*! @brief Typically "Bearer" when present. Otherwise, another token_type value that the Client has + negotiated with the Authorization Server. + @remarks token_type + @see https://tools.ietf.org/html/rfc6749#section-4.1.4 + @see https://tools.ietf.org/html/rfc6749#section-5.1 + */ +@property(nonatomic, readonly, nullable) NSString *tokenType; + +/*! @brief ID Token value associated with the authenticated session. Always present for the + authorization code grant exchange when OpenID Connect is used, optional for responses to + access token refresh requests. Note that AppAuth does NOT verify the JWT signature. Users + of AppAuth are encouraged to verifying the JWT signature using the validation library of + their choosing. + @remarks id_token + @see http://openid.net/specs/openid-connect-core-1_0.html#TokenResponse + @see http://openid.net/specs/openid-connect-core-1_0.html#RefreshTokenResponse + @see http://openid.net/specs/openid-connect-core-1_0.html#IDToken + @see https://jwt.io + @discussion @c OIDIDToken can be used to parse the ID Token and extract the claims. As noted, + this class does not verify the JWT signature. +*/ +@property(nonatomic, readonly, nullable) NSString *idToken; + +/*! @brief The refresh token, which can be used to obtain new access tokens using the same + authorization grant + @remarks refresh_token + @see https://tools.ietf.org/html/rfc6749#section-5.1 + */ +@property(nonatomic, readonly, nullable) NSString *refreshToken; + +/*! @brief The scope of the access token. OPTIONAL, if identical to the scopes requested, otherwise, + REQUIRED. + @remarks scope + @see https://tools.ietf.org/html/rfc6749#section-5.1 + */ +@property(nonatomic, readonly, nullable) NSString *scope; + +/*! @brief Additional parameters returned from the token server. + */ +@property(nonatomic, readonly, nullable) + NSDictionary *> *additionalParameters; + +/*! @internal + @brief Unavailable. Please use initWithParameters:. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief Designated initializer. + @param request The serviced request. + @param parameters The decoded parameters returned from the Authorization Server. + @remarks Known parameters are extracted from the @c parameters parameter and the normative + properties are populated. Non-normative parameters are placed in the + @c #additionalParameters dictionary. + */ +- (instancetype)initWithRequest:(OIDTokenRequest *)request + parameters:(NSDictionary *> *)parameters + NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDTokenResponse.m b/Pods/AppAuth/Source/AppAuthCore/OIDTokenResponse.m new file mode 100644 index 0000000..6995fb9 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDTokenResponse.m @@ -0,0 +1,163 @@ +/*! @file OIDTokenResponse.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDTokenResponse.h" + +#import "OIDDefines.h" +#import "OIDFieldMapping.h" +#import "OIDTokenRequest.h" +#import "OIDTokenUtilities.h" + +/*! @brief Key used to encode the @c request property for @c NSSecureCoding + */ +static NSString *const kRequestKey = @"request"; + +/*! @brief The key for the @c accessToken property in the incoming parameters and for + @c NSSecureCoding. + */ +static NSString *const kAccessTokenKey = @"access_token"; + +/*! @brief The key for the @c accessTokenExpirationDate property in the incoming parameters and for + @c NSSecureCoding. + */ +static NSString *const kExpiresInKey = @"expires_in"; + +/*! @brief The key for the @c tokenType property in the incoming parameters and for + @c NSSecureCoding. + */ +static NSString *const kTokenTypeKey = @"token_type"; + +/*! @brief The key for the @c idToken property in the incoming parameters and for @c NSSecureCoding. + */ +static NSString *const kIDTokenKey = @"id_token"; + +/*! @brief The key for the @c refreshToken property in the incoming parameters and for + @c NSSecureCoding. + */ +static NSString *const kRefreshTokenKey = @"refresh_token"; + +/*! @brief The key for the @c scope property in the incoming parameters and for @c NSSecureCoding. + */ +static NSString *const kScopeKey = @"scope"; + +/*! @brief Key used to encode the @c additionalParameters property for @c NSSecureCoding + */ +static NSString *const kAdditionalParametersKey = @"additionalParameters"; + +@implementation OIDTokenResponse + +/*! @brief Returns a mapping of incoming parameters to instance variables. + @return A mapping of incoming parameters to instance variables. + */ ++ (NSDictionary *)fieldMap { + static NSMutableDictionary *fieldMap; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + fieldMap = [NSMutableDictionary dictionary]; + fieldMap[kAccessTokenKey] = + [[OIDFieldMapping alloc] initWithName:@"_accessToken" type:[NSString class]]; + fieldMap[kExpiresInKey] = + [[OIDFieldMapping alloc] initWithName:@"_accessTokenExpirationDate" + type:[NSDate class] + conversion:[OIDFieldMapping dateSinceNowConversion]]; + fieldMap[kTokenTypeKey] = + [[OIDFieldMapping alloc] initWithName:@"_tokenType" type:[NSString class]]; + fieldMap[kIDTokenKey] = + [[OIDFieldMapping alloc] initWithName:@"_idToken" type:[NSString class]]; + fieldMap[kRefreshTokenKey] = + [[OIDFieldMapping alloc] initWithName:@"_refreshToken" type:[NSString class]]; + fieldMap[kScopeKey] = + [[OIDFieldMapping alloc] initWithName:@"_scope" type:[NSString class]]; + }); + return fieldMap; +} + +#pragma mark - Initializers + +- (instancetype)init + OID_UNAVAILABLE_USE_INITIALIZER(@selector(initWithRequest:parameters:)) + +- (instancetype)initWithRequest:(OIDTokenRequest *)request + parameters:(NSDictionary *> *)parameters { + self = [super init]; + if (self) { + _request = [request copy]; + NSDictionary *> *additionalParameters = + [OIDFieldMapping remainingParametersWithMap:[[self class] fieldMap] + parameters:parameters + instance:self]; + _additionalParameters = additionalParameters; + } + return self; +} + +#pragma mark - NSCopying + +- (instancetype)copyWithZone:(nullable NSZone *)zone { + // The documentation for NSCopying specifically advises us to return a reference to the original + // instance in the case where instances are immutable (as ours is): + // "Implement NSCopying by retaining the original instead of creating a new copy when the class + // and its contents are immutable." + return self; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + OIDTokenRequest *request = + [aDecoder decodeObjectOfClass:[OIDTokenRequest class] forKey:kRequestKey]; + self = [self initWithRequest:request parameters:@{ }]; + if (self) { + [OIDFieldMapping decodeWithCoder:aDecoder map:[[self class] fieldMap] instance:self]; + _additionalParameters = [aDecoder decodeObjectOfClasses:[OIDFieldMapping JSONTypes] + forKey:kAdditionalParametersKey]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [OIDFieldMapping encodeWithCoder:aCoder map:[[self class] fieldMap] instance:self]; + [aCoder encodeObject:_request forKey:kRequestKey]; + [aCoder encodeObject:_additionalParameters forKey:kAdditionalParametersKey]; +} + +#pragma mark - NSObject overrides + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, accessToken: \"%@\", accessTokenExpirationDate: %@, " + "tokenType: %@, idToken: \"%@\", refreshToken: \"%@\", " + "scope: \"%@\", additionalParameters: %@, request: %@>", + NSStringFromClass([self class]), + (void *)self, + [OIDTokenUtilities redact:_accessToken], + _accessTokenExpirationDate, + _tokenType, + [OIDTokenUtilities redact:_idToken], + [OIDTokenUtilities redact:_refreshToken], + _scope, + _additionalParameters, + _request]; +} + +#pragma mark - + +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDTokenUtilities.h b/Pods/AppAuth/Source/AppAuthCore/OIDTokenUtilities.h new file mode 100644 index 0000000..fda8985 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDTokenUtilities.h @@ -0,0 +1,67 @@ +/*! @file OIDTokenUtilities.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Provides data encoding/decoding methods, random string generators, etc. + */ +@interface OIDTokenUtilities : NSObject + +/*! @internal + @brief Unavailable. This class should not be initialized. + */ +- (instancetype)init NS_UNAVAILABLE; + +/*! @brief Base64url-nopadding encodes the given data. + @param data The input data. + @return The base64url encoded data as a NSString. + @discussion Base64url-nopadding is used in several identity specs such as PKCE and + OpenID Connect. + */ ++ (NSString *)encodeBase64urlNoPadding:(NSData *)data; + +/*! @brief Generates a URL-safe string of random data. + @param size The number of random bytes to encode. NB. the length of the output string will be + greater than the number of random bytes, due to the URL-safe encoding. + @return Random data encoded with base64url. + */ ++ (nullable NSString *)randomURLSafeStringWithSize:(NSUInteger)size; + +/*! @brief SHA256 hashes the input string. + @param inputString The input string. + @return The SHA256 data. + */ ++ (NSData *)sha256:(NSString *)inputString; + +/*! @brief Truncated intput string after first 6 characters followed by ellipses + @param inputString The input string. + @return Truncated string. + */ ++ (nullable NSString *)redact:(nullable NSString *)inputString; + +/*! @brief Form url encode the input string by applying application/x-www-form-urlencoded algorithm + @param inputString The input string. + @return The encoded string. + */ ++ (NSString*)formUrlEncode:(NSString*)inputString; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDTokenUtilities.m b/Pods/AppAuth/Source/AppAuthCore/OIDTokenUtilities.m new file mode 100644 index 0000000..3280c85 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDTokenUtilities.m @@ -0,0 +1,89 @@ +/*! @file OIDTokenUtilities.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDTokenUtilities.h" + +#import + +/*! @brief String representing the set of characters that are allowed as is for the + application/x-www-form-urlencoded encoding algorithm. + */ +static NSString *const kFormUrlEncodedAllowedCharacters = + @" *-._0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + +@implementation OIDTokenUtilities + ++ (NSString *)encodeBase64urlNoPadding:(NSData *)data { + NSString *base64string = [data base64EncodedStringWithOptions:0]; + // converts base64 to base64url + base64string = [base64string stringByReplacingOccurrencesOfString:@"+" withString:@"-"]; + base64string = [base64string stringByReplacingOccurrencesOfString:@"/" withString:@"_"]; + // strips padding + base64string = [base64string stringByReplacingOccurrencesOfString:@"=" withString:@""]; + return base64string; +} + ++ (nullable NSString *)randomURLSafeStringWithSize:(NSUInteger)size { + NSMutableData *randomData = [NSMutableData dataWithLength:size]; + int result = SecRandomCopyBytes(kSecRandomDefault, randomData.length, randomData.mutableBytes); + if (result != 0) { + return nil; + } + return [[self class] encodeBase64urlNoPadding:randomData]; +} + ++ (NSData *)sha256:(NSString *)inputString { + NSData *verifierData = [inputString dataUsingEncoding:NSUTF8StringEncoding]; + NSMutableData *sha256Verifier = [NSMutableData dataWithLength:CC_SHA256_DIGEST_LENGTH]; + CC_SHA256(verifierData.bytes, (CC_LONG)verifierData.length, sha256Verifier.mutableBytes); + return sha256Verifier; +} + ++ (NSString *)redact:(NSString *)inputString { + if (inputString == nil) { + return nil; + } + switch(inputString.length){ + case 0: + return @""; + case 1 ... 8: + return @"[redacted]"; + case 9: + default: + return [[inputString substringToIndex:6] stringByAppendingString:@"...[redacted]"]; + } +} + ++ (NSString*)formUrlEncode:(NSString*)inputString { + // https://www.w3.org/TR/html5/sec-forms.html#application-x-www-form-urlencoded-encoding-algorithm + // Following the spec from the above link, application/x-www-form-urlencoded percent encode all + // the characters except *-._A-Za-z0-9 + // Space character is replaced by + in the resulting bytes sequence + if (inputString.length == 0) { + return inputString; + } + NSCharacterSet *allowedCharacters = + [NSCharacterSet characterSetWithCharactersInString:kFormUrlEncodedAllowedCharacters]; + // Percent encode all characters not present in the provided set. + NSString *encodedString = + [inputString stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters]; + // Replace occurences of space by '+' character + return [encodedString stringByReplacingOccurrencesOfString:@" " withString:@"+"]; +} + +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDURLQueryComponent.h b/Pods/AppAuth/Source/AppAuthCore/OIDURLQueryComponent.h new file mode 100644 index 0000000..054b11e --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDURLQueryComponent.h @@ -0,0 +1,93 @@ +/*! @file OIDURLQueryComponent.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@class OIDAuthorizationRequest; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief If set to YES, will force the iOS 7-only code for @c OIDURLQueryComponent to be used, + even on non-iOS 7 devices and simulators. Useful for testing the iOS 7 code paths on the + simulator. Defaults to NO. + */ +extern BOOL gOIDURLQueryComponentForceIOS7Handling; + +/*! @brief A utility class for creating and parsing URL query components encoded with the + application/x-www-form-urlencoded format. + @description Supports application/x-www-form-urlencoded encoding and decoding, specifically + '+' is replaced with space before percent decoding. For encoding, simply percent encodes + space, as this is valid application/x-www-form-urlencoded. + @see https://tools.ietf.org/html/rfc6749#section-4.1.2 + @see https://tools.ietf.org/html/rfc6749#section-4.1.3 + @see https://tools.ietf.org/html/rfc6749#appendix-B + @see https://url.spec.whatwg.org/#urlencoded-parsing + */ +@interface OIDURLQueryComponent : NSObject + +/*! @brief The parameter names in the query. + */ +@property(nonatomic, readonly) NSArray *parameters; + +/*! @brief The parameters represented as a dictionary. + @remarks All values are @c NSString except for parameters which contain multiple values, in + which case the value is an @c NSArray *. + */ +@property(nonatomic, readonly) NSDictionary *> *dictionaryValue; + +/*! @brief Creates an @c OIDURLQueryComponent by parsing the query string in a URL. + @param URL The URL from which to extract a query component. + */ +- (nullable instancetype)initWithURL:(NSURL *)URL; + +/*! @brief The value (or values) for a named parameter in the query. + @param parameter The parameter name. Case sensitive. + @return The value (or values) for a named parameter in the query. + */ +- (NSArray *)valuesForParameter:(NSString *)parameter; + +/*! @brief Adds a parameter value to the query. + @param parameter The name of the parameter. Case sensitive. + @param value The value to add. + */ +- (void)addParameter:(NSString *)parameter value:(NSString *)value; + +/*! @brief Adds multiple parameters with associated values to the query. + @param parameters The parameter name value pairs to add to the query. + */ +- (void)addParameters:(NSDictionary *)parameters; + +/*! @param URL The URL to add the query component to. + @return The original URL with the query component replaced by the parameters from this query. + */ +- (NSURL *)URLByReplacingQueryInURL:(NSURL *)URL; + +/*! @brief Builds an x-www-form-urlencoded string representing the parameters. + @return The x-www-form-urlencoded string representing the parameters. + */ +- (NSString *)URLEncodedParameters; + +/*! @brief A NSMutableCharacterSet containing allowed characters in URL parameter values (that is + the "value" part of "?key=value"). This has less allowed characters than + @c URLQueryAllowedCharacterSet, as the query component includes both the key & value. + */ ++ (NSMutableCharacterSet *)URLParamValueAllowedCharacters; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDURLQueryComponent.m b/Pods/AppAuth/Source/AppAuthCore/OIDURLQueryComponent.m new file mode 100644 index 0000000..07050c9 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDURLQueryComponent.m @@ -0,0 +1,219 @@ +/*! @file OIDURLQueryComponent.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDURLQueryComponent.h" + +BOOL gOIDURLQueryComponentForceIOS7Handling = NO; + +/*! @brief String representing the set of characters that are valid for the URL query + (per @ NSCharacterSet.URLQueryAllowedCharacterSet), but are disallowed in URL query + parameters and values. + */ +static NSString *const kQueryStringParamAdditionalDisallowedCharacters = @"=&+"; + +@implementation OIDURLQueryComponent { + /*! @brief A dictionary of parameter names and values representing the contents of the query. + */ + NSMutableDictionary *> *_parameters; +} + +- (nullable instancetype)init { + self = [super init]; + if (self) { + _parameters = [NSMutableDictionary dictionary]; + } + return self; +} + +- (nullable instancetype)initWithURL:(NSURL *)URL { + self = [self init]; + if (self) { + if (@available(iOS 8.0, macOS 10.10, *)) { + // If NSURLQueryItem is available, use it for deconstructing the new URL. (iOS 8+) + if (!gOIDURLQueryComponentForceIOS7Handling) { + NSURLComponents *components = + [NSURLComponents componentsWithURL:URL resolvingAgainstBaseURL:NO]; + // As OAuth uses application/x-www-form-urlencoded encoding, interprets '+' as a space + // in addition to regular percent decoding. https://url.spec.whatwg.org/#urlencoded-parsing + components.percentEncodedQuery = + [components.percentEncodedQuery stringByReplacingOccurrencesOfString:@"+" + withString:@"%20"]; + // NB. @c queryItems are already percent decoded + NSArray *queryItems = components.queryItems; + for (NSURLQueryItem *queryItem in queryItems) { + [self addParameter:queryItem.name value:queryItem.value]; + } + return self; + } + } + + // Fallback for iOS 7 + NSString *query = URL.query; + // As OAuth uses application/x-www-form-urlencoded encoding, interprets '+' as a space + // in addition to regular percent decoding. https://url.spec.whatwg.org/#urlencoded-parsing + query = [query stringByReplacingOccurrencesOfString:@"+" withString:@"%20"]; + + NSArray *queryParts = [query componentsSeparatedByString:@"&"]; + for (NSString *queryPart in queryParts) { + NSRange equalsRange = [queryPart rangeOfString:@"="]; + if (equalsRange.location == NSNotFound) { + continue; + } + NSString *name = [queryPart substringToIndex:equalsRange.location]; + name = name.stringByRemovingPercentEncoding; + NSString *value = [queryPart substringFromIndex:equalsRange.location + equalsRange.length]; + value = value.stringByRemovingPercentEncoding; + [self addParameter:name value:value]; + } + return self; + } + return self; +} + +- (NSArray *)parameters { + return _parameters.allKeys; +} + +- (NSDictionary *> *)dictionaryValue { + // This method will flatten arrays in our @c _parameters' values if only one value exists. + NSMutableDictionary *> *values = [NSMutableDictionary dictionary]; + for (NSString *parameter in _parameters.allKeys) { + NSArray *value = _parameters[parameter]; + if (value.count == 1) { + values[parameter] = [value.firstObject copy]; + } else { + values[parameter] = [value copy]; + } + } + return values; +} + +- (NSArray *)valuesForParameter:(NSString *)parameter { + return _parameters[parameter]; +} + +- (void)addParameter:(NSString *)parameter value:(NSString *)value { + NSMutableArray *parameterValues = _parameters[parameter]; + if (!parameterValues) { + parameterValues = [NSMutableArray array]; + _parameters[parameter] = parameterValues; + } + [parameterValues addObject:value]; +} + +- (void)addParameters:(NSDictionary *)parameters { + for (NSString *parameterName in parameters.allKeys) { + [self addParameter:parameterName value:parameters[parameterName]]; + } +} + +/*! @brief Builds a query items array that can be set to @c NSURLComponents.queryItems + @discussion The parameter names and values are NOT URL encoded. + @return An array of unencoded @c NSURLQueryItem objects. + */ +- (NSMutableArray *)queryItems NS_AVAILABLE(10.10, 8.0) { + NSMutableArray *queryParameters = [NSMutableArray array]; + for (NSString *parameterName in _parameters.allKeys) { + NSArray *values = _parameters[parameterName]; + for (NSString *value in values) { + NSURLQueryItem *item = [NSURLQueryItem queryItemWithName:parameterName value:value]; + [queryParameters addObject:item]; + } + } + return queryParameters; +} + ++ (NSMutableCharacterSet *)URLParamValueAllowedCharacters { + // Starts with the standard URL-allowed character set. + NSMutableCharacterSet *allowedParamCharacters = + [[NSCharacterSet URLQueryAllowedCharacterSet] mutableCopy]; + // Removes additional characters we don't want to see in the query component. + [allowedParamCharacters removeCharactersInString:kQueryStringParamAdditionalDisallowedCharacters]; + return allowedParamCharacters; +} + +/*! @brief Builds a query string that can be set to @c NSURLComponents.percentEncodedQuery + @discussion This string is percent encoded, and shouldn't be used with + @c NSURLComponents.query. + @return An percentage encoded query string. + */ +- (NSString *)percentEncodedQueryString { + NSMutableArray *parameterizedValues = [NSMutableArray array]; + + // Starts with the standard URL-allowed character set. + NSMutableCharacterSet *allowedParamCharacters = [[self class] URLParamValueAllowedCharacters]; + + for (NSString *parameterName in _parameters.allKeys) { + NSString *encodedParameterName = + [parameterName stringByAddingPercentEncodingWithAllowedCharacters:allowedParamCharacters]; + + NSArray *values = _parameters[parameterName]; + for (NSString *value in values) { + NSString *encodedValue = + [value stringByAddingPercentEncodingWithAllowedCharacters:allowedParamCharacters]; + NSString *parameterizedValue = + [NSString stringWithFormat:@"%@=%@", encodedParameterName, encodedValue]; + [parameterizedValues addObject:parameterizedValue]; + } + } + + NSString *queryString = [parameterizedValues componentsJoinedByString:@"&"]; + return queryString; +} + +- (NSString *)URLEncodedParameters { + // If NSURLQueryItem is available, uses it for constructing the encoded parameters. (iOS 8+) + if (@available(iOS 8.0, macOS 10.10, *)) { + if (!gOIDURLQueryComponentForceIOS7Handling) { + NSURLComponents *components = [[NSURLComponents alloc] init]; + components.queryItems = [self queryItems]; + NSString *encodedQuery = components.percentEncodedQuery; + // NSURLComponents.percentEncodedQuery creates a validly escaped URL query component, but + // doesn't encode the '+' leading to potential ambiguity with application/x-www-form-urlencoded + // encoding. Percent encodes '+' to avoid this ambiguity. + encodedQuery = [encodedQuery stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"]; + return encodedQuery; + } + } + + // else, falls back to building query string manually (iOS 7) + return [self percentEncodedQueryString]; +} + +- (NSURL *)URLByReplacingQueryInURL:(NSURL *)URL { + NSURLComponents *components = + [NSURLComponents componentsWithURL:URL resolvingAgainstBaseURL:NO]; + + // Replaces encodedQuery component + NSString *queryString = [self URLEncodedParameters]; + components.percentEncodedQuery = queryString; + + NSURL *URLWithParameters = components.URL; + return URLWithParameters; +} + +#pragma mark - NSObject overrides + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, parameters: %@>", + NSStringFromClass([self class]), + (void *)self, + _parameters]; +} + +@end diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDURLSessionProvider.h b/Pods/AppAuth/Source/AppAuthCore/OIDURLSessionProvider.h new file mode 100644 index 0000000..28e9116 --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDURLSessionProvider.h @@ -0,0 +1,40 @@ +/*! @file OIDURLSessionProvider.h + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief A NSURLSession provider that allows clients to provide custom implementation + for NSURLSession + */ +@interface OIDURLSessionProvider : NSObject + +/*! @brief Obtains the current @c NSURLSession; using the +[NSURLSession sharedSession] if + no custom implementation is provided. + @return NSURLSession object to be used for making network requests. + */ ++ (NSURLSession *)session; + +/*! @brief Allows library consumers to change the @c NSURLSession instance used to make + network requests. + @param session The @c NSURLSession instance that should be used for making network requests. + */ ++ (void)setSession:(NSURLSession *)session; +@end +NS_ASSUME_NONNULL_END diff --git a/Pods/AppAuth/Source/AppAuthCore/OIDURLSessionProvider.m b/Pods/AppAuth/Source/AppAuthCore/OIDURLSessionProvider.m new file mode 100644 index 0000000..fca17fe --- /dev/null +++ b/Pods/AppAuth/Source/AppAuthCore/OIDURLSessionProvider.m @@ -0,0 +1,39 @@ +/*! @file OIDURLSessionProvider.m + @brief AppAuth iOS SDK + @copyright + Copyright 2015 Google Inc. All Rights Reserved. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OIDURLSessionProvider.h" + +NS_ASSUME_NONNULL_BEGIN + +static NSURLSession *__nullable gURLSession; + +@implementation OIDURLSessionProvider + ++ (NSURLSession *)session { + if (!gURLSession) { + gURLSession = [NSURLSession sharedSession]; + } + return gURLSession; +} + ++ (void)setSession:(NSURLSession *)session { + NSAssert(session, @"Parameter: |session| must be non-nil."); + gURLSession = session; +} +@end +NS_ASSUME_NONNULL_END diff --git a/Pods/GTMAppAuth/GTMAppAuth/Sources/GTMAppAuthFetcherAuthorization+Keychain.m b/Pods/GTMAppAuth/GTMAppAuth/Sources/GTMAppAuthFetcherAuthorization+Keychain.m new file mode 100644 index 0000000..358f724 --- /dev/null +++ b/Pods/GTMAppAuth/GTMAppAuth/Sources/GTMAppAuthFetcherAuthorization+Keychain.m @@ -0,0 +1,99 @@ +/*! @file GTMAppAuthFetcherAuthorization+Keychain.m + @brief GTMAppAuth SDK + @copyright + Copyright 2016 Google Inc. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h" + +#import "GTMAppAuth/Sources/Public/GTMAppAuth/GTMKeychain.h" + +@implementation GTMAppAuthFetcherAuthorization (Keychain) + ++ (GTMAppAuthFetcherAuthorization *)authorizationFromKeychainForName:(NSString *)keychainItemName { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpartial-availability" + return [GTMAppAuthFetcherAuthorization authorizationFromKeychainForName:keychainItemName + useDataProtectionKeychain:NO]; +#pragma clang diagnostic pop +} + ++ (GTMAppAuthFetcherAuthorization *)authorizationFromKeychainForName:(NSString *)keychainItemName + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain { + NSData *passwordData = [GTMKeychain passwordDataFromKeychainForName:keychainItemName + useDataProtectionKeychain:useDataProtectionKeychain]; + if (!passwordData) { + return nil; + } + GTMAppAuthFetcherAuthorization *authorization; + if (@available(iOS 11.0, macOS 10.13, tvOS 11.0, watchOS 4.0, *)) { + authorization = (GTMAppAuthFetcherAuthorization *) + [NSKeyedUnarchiver unarchivedObjectOfClass:[GTMAppAuthFetcherAuthorization class] + fromData:passwordData + error:nil]; + } else { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + authorization = (GTMAppAuthFetcherAuthorization *) + [NSKeyedUnarchiver unarchiveObjectWithData:passwordData]; +#pragma clang diagnostic pop + } + return authorization; +} + ++ (BOOL)removeAuthorizationFromKeychainForName:(NSString *)keychainItemName { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpartial-availability" + return [GTMAppAuthFetcherAuthorization removeAuthorizationFromKeychainForName:keychainItemName + useDataProtectionKeychain:NO]; +#pragma clang diagnostic pop +} + ++ (BOOL)removeAuthorizationFromKeychainForName:(NSString *)keychainItemName + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain { + return [GTMKeychain removePasswordFromKeychainForName:keychainItemName + useDataProtectionKeychain:useDataProtectionKeychain]; +} + ++ (BOOL)saveAuthorization:(GTMAppAuthFetcherAuthorization *)auth + toKeychainForName:(NSString *)keychainItemName { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpartial-availability" + return [GTMAppAuthFetcherAuthorization saveAuthorization:auth + toKeychainForName:keychainItemName + useDataProtectionKeychain:NO]; +#pragma clang diagnostic pop +} + ++ (BOOL)saveAuthorization:(GTMAppAuthFetcherAuthorization *)auth + toKeychainForName:(NSString *)keychainItemName + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain { + NSData *authorizationData; + if (@available(iOS 11.0, macOS 10.13, tvOS 11.0, watchOS 4.0, *)) { + authorizationData = [NSKeyedArchiver archivedDataWithRootObject:auth + requiringSecureCoding:YES + error:nil]; + } else { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + authorizationData = [NSKeyedArchiver archivedDataWithRootObject:auth]; +#pragma clang diagnostic pop + } + return [GTMKeychain savePasswordDataToKeychainForName:keychainItemName + passwordData:authorizationData + useDataProtectionKeychain:useDataProtectionKeychain]; +} + +@end diff --git a/Pods/GTMAppAuth/GTMAppAuth/Sources/GTMAppAuthFetcherAuthorization.m b/Pods/GTMAppAuth/GTMAppAuth/Sources/GTMAppAuthFetcherAuthorization.m new file mode 100644 index 0000000..2b85ffa --- /dev/null +++ b/Pods/GTMAppAuth/GTMAppAuth/Sources/GTMAppAuthFetcherAuthorization.m @@ -0,0 +1,497 @@ +/*! @file GTMAppAuthFetcherAuthorization.m + @brief GTMAppAuth SDK + @copyright + Copyright 2016 Google Inc. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization.h" + +#if SWIFT_PACKAGE || GTMAPPAUTH_USE_MODULAR_IMPORT +@import AppAuthCore; +#elif GTMAPPAUTH_USER_IMPORTS +#import "AppAuthCore.h" +#else +#import +#endif + +#define GTMOAuth2AssertValidSelector GTMSessionFetcherAssertValidSelector + +/*! @brief Provides a template implementation for init-family methods which have been marked as + NS_UNAVILABLE. Stops the compiler from giving a warning when it's the super class' + designated initializer, and gives callers useful feedback telling them what the + new designated initializer is. + @remarks Takes a SEL as a parameter instead of a string so that we get compiler warnings if the + designated initializer's signature changes. + @param designatedInitializer A SEL referencing the designated initializer. + */ +#define GTM_UNAVAILABLE_USE_INITIALIZER(designatedInitializer) { \ + NSString *reason = [NSString stringWithFormat:@"Called: %@\nDesignated Initializer:%@", \ + NSStringFromSelector(_cmd), \ + NSStringFromSelector(designatedInitializer)]; \ + @throw [NSException exceptionWithName:@"Attempt to call unavailable initializer." \ + reason:reason \ + userInfo:nil]; \ +} + +/*! @brief Key used to encode the @c authState property for @c NSSecureCoding. + */ +static NSString *const kAuthStateKey = @"authState"; + +/*! @brief Key used to encode the @c serviceProvider property for @c NSSecureCoding. + */ +static NSString *const kServiceProviderKey = @"serviceProvider"; + +/*! @brief Key used to encode the @c userID property for @c NSSecureCoding. + */ +static NSString *const kUserIDKey = @"userID"; + +/*! @brief Key used to encode the @c userEmail property for @c NSSecureCoding. + */ +static NSString *const kUserEmailKey = @"userEmail"; + +/*! @brief Key used to encode the @c userEmailIsVerified property for @c NSSecureCoding. + */ +static NSString *const kUserEmailIsVerifiedKey = @"userEmailIsVerified"; + +NSString *const GTMAppAuthFetcherAuthorizationErrorDomain = + @"kGTMAppAuthFetcherAuthorizationErrorDomain"; +NSString *const GTMAppAuthFetcherAuthorizationErrorRequestKey = @"request"; + +/*! @brief Internal wrapper class for requests needing authorization and their callbacks. + @discusssion Used to abstract away the detail of whether a callback or block is used. + */ +@interface GTMAppAuthFetcherAuthorizationArgs : NSObject + +/*! @brief The request to authorize. + * @discussion Not copied, as we are mutating the request. + */ +@property (nonatomic, strong) NSMutableURLRequest *request; + +/*! @brief The delegate on which @c selector is called on completion. + */ +@property (nonatomic, weak) id delegate; + +/*! @brief The selector called on the @c delegate object on completion. + */ +@property (nonatomic) SEL selector; + +/*! @brief The completion block when the block option was used. + */ +@property (nonatomic, strong) GTMAppAuthFetcherAuthorizationCompletion completionHandler; + +/*! @brief The error that happened during token refresh (if any). + */ +@property (nonatomic, strong) NSError *error; + ++ (GTMAppAuthFetcherAuthorizationArgs *)argsWithRequest:(NSMutableURLRequest *)req + delegate:(id)delegate + selector:(SEL)selector + completionHandler:(GTMAppAuthFetcherAuthorizationCompletion)completionHandler; + +@end + +@implementation GTMAppAuthFetcherAuthorizationArgs + +@synthesize request = _request; +@synthesize delegate = _delegate; +@synthesize selector = _selector; +@synthesize completionHandler = _completionHandler; +@synthesize error = _error; + ++ (GTMAppAuthFetcherAuthorizationArgs *)argsWithRequest:(NSMutableURLRequest *)req + delegate:(id)delegate + selector:(SEL)selector + completionHandler:(GTMAppAuthFetcherAuthorizationCompletion)completionHandler { + GTMAppAuthFetcherAuthorizationArgs *obj; + obj = [[GTMAppAuthFetcherAuthorizationArgs alloc] init]; + obj.request = req; + obj.delegate = delegate; + obj.selector = selector; + obj.completionHandler = completionHandler; + return obj; +} + +@end + +@implementation GTMAppAuthFetcherAuthorization { + /*! @brief Array of requests pending authorization headers. + */ + NSMutableArray *_authorizationQueue; +} + +@synthesize authState = _authState; +@synthesize serviceProvider = _serviceProvider; +@synthesize userID = _userID; +@synthesize userEmailIsVerified = _userEmailIsVerified; + +// GTMFetcherAuthorizationProtocol doesn't specify atomic/nonatomic for these properties. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wimplicit-atomic-properties" +@synthesize userEmail = _userEmail; +@synthesize shouldAuthorizeAllRequests = _shouldAuthorizeAllRequests; +@synthesize fetcherService = _fetcherService; +#pragma clang diagnostic pop + +#pragma mark - Initializers + +// Ignore warning about not calling the designated initializer. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wobjc-designated-initializers" +- (instancetype)init + GTM_UNAVAILABLE_USE_INITIALIZER(@selector(initWithAuthState:)); +#pragma clang diagnostic pop + +- (instancetype)initWithAuthState:(OIDAuthState *)authState { + return [self initWithAuthState:authState + serviceProvider:nil + userID:nil + userEmail:nil + userEmailIsVerified:nil]; +} + +- (instancetype)initWithAuthState:(OIDAuthState *)authState + serviceProvider:(nullable NSString *)serviceProvider + userID:(nullable NSString *)userID + userEmail:(nullable NSString *)userEmail + userEmailIsVerified:(nullable NSString *)userEmailIsVerified { + self = [super init]; + if (self) { + _authState = authState; + _authorizationQueue = [[NSMutableArray alloc] init]; + + _serviceProvider = [serviceProvider copy]; + _userID = [userID copy]; + _userEmail = [userEmail copy]; + _userEmailIsVerified = [userEmailIsVerified copy]; + + // Decodes the ID Token locally to extract the email address. + NSString *idToken = _authState.lastTokenResponse.idToken + ? : _authState.lastAuthorizationResponse.idToken; + if (idToken) { + NSDictionary *claimsDictionary = [[OIDIDToken alloc] initWithIDTokenString:idToken].claims; + if (claimsDictionary) { + _userEmail = (NSString *)[claimsDictionary[@"email"] copy]; + _userEmailIsVerified = [(NSNumber *)claimsDictionary[@"email_verified"] stringValue]; + _userID = [claimsDictionary[@"sub"] copy]; + } + } + } + return self; +} + +# pragma mark - Convenience + +#if !GTM_APPAUTH_SKIP_GOOGLE_SUPPORT ++ (OIDServiceConfiguration *)configurationForGoogle { + NSURL *authorizationEndpoint = + [NSURL URLWithString:@"https://accounts.google.com/o/oauth2/v2/auth"]; + NSURL *tokenEndpoint = + [NSURL URLWithString:@"https://www.googleapis.com/oauth2/v4/token"]; + + OIDServiceConfiguration *configuration = + [[OIDServiceConfiguration alloc] initWithAuthorizationEndpoint:authorizationEndpoint + tokenEndpoint:tokenEndpoint]; + return configuration; +} +#endif // !GTM_APPAUTH_SKIP_GOOGLE_SUPPORT + +#pragma mark - Authorizing Requests + +/*! @brief Internal routine common to delegate and block invocations to queue requests while + fresh tokens are obtained. + */ +- (void)authorizeRequestArgs:(GTMAppAuthFetcherAuthorizationArgs *)args { + // Adds requests to queue. + @synchronized(_authorizationQueue) { + [_authorizationQueue addObject:args]; + } + + NSDictionary *additionalRefreshParameters = _tokenRefreshDelegate ? + [_tokenRefreshDelegate additionalRefreshParameters:self] : nil; + + // Obtains fresh tokens from AppAuth. + [_authState performActionWithFreshTokens:^(NSString *_Nullable accessToken, + NSString *_Nullable idToken, + NSError *_Nullable error) { + // Processes queue. + @synchronized(self->_authorizationQueue) { + for (GTMAppAuthFetcherAuthorizationArgs *fetcherArgs in self->_authorizationQueue) { + [self authorizeRequestImmediateArgs:fetcherArgs accessToken:accessToken error:error]; + } + [self->_authorizationQueue removeAllObjects]; + } + } + additionalRefreshParameters:additionalRefreshParameters]; +} + +/*! @brief Adds authorization headers to the given request, using the supplied access token, or + handles the error. + @param args The request argument group to authorize. + @param accessToken A currently valid access token. + @param error If accessToken is nil, the error which caused the token to be unavailable. + @return YES if the request was authorized with a valid access token. + */ +- (BOOL)authorizeRequestImmediateArgs:(GTMAppAuthFetcherAuthorizationArgs *)args + accessToken:(NSString *)accessToken + error:(NSError *)error { + // This authorization entry point never attempts to refresh the access token, + // but does call the completion routine + + NSMutableURLRequest *request = args.request; + + NSURL *requestURL = [request URL]; + NSString *scheme = [requestURL scheme]; + BOOL isAuthorizableRequest = + !requestURL + || (scheme && [scheme caseInsensitiveCompare:@"https"] == NSOrderedSame) + || [requestURL isFileURL] + || self.shouldAuthorizeAllRequests; + if (!isAuthorizableRequest) { + // Request is not https, a local file, or nil, so may be insecure + // + // The NSError will be created below +#if DEBUG + NSLog(@"Cannot authorize request with scheme %@ (%@)", scheme, request); +#endif + } + + // Get the access token. + if (isAuthorizableRequest && accessToken && accessToken.length > 0) { + if (request) { + // Adds the authorization header to the request. + NSString *value = [NSString stringWithFormat:@"%@ %@", @"Bearer", accessToken]; + [request setValue:value forHTTPHeaderField:@"Authorization"]; + } + + // We've authorized the request, even if the previous refresh + // failed with an error + args.error = nil; + } else { + NSMutableDictionary *userInfo = [error.userInfo mutableCopy]; + if (!userInfo) { + userInfo = [[NSMutableDictionary alloc] init]; + } + if (request) { + userInfo[GTMAppAuthFetcherAuthorizationErrorRequestKey] = request; + } + + if (!isAuthorizableRequest || !error) { + args.error = [NSError errorWithDomain:GTMAppAuthFetcherAuthorizationErrorDomain + code:GTMAppAuthFetcherAuthorizationErrorUnauthorizableRequest + userInfo:userInfo]; + } else { + // Passes through error domain & code from AppAuth, with additional userInfo args. + args.error = [NSError errorWithDomain:error.domain + code:error.code + userInfo:userInfo]; + } + } + + // Invoke any callbacks on the proper thread + if (args.delegate || args.completionHandler) { + // If the fetcher service provides a callback queue, we'll use that + // (or if it's nil, we'll use the main thread) for callbacks. + dispatch_queue_t callbackQueue = self.fetcherService.callbackQueue; + if (!callbackQueue) { + callbackQueue = dispatch_get_main_queue(); + } + dispatch_async(callbackQueue, ^{ + [self invokeCallbackArgs:args]; + }); + } + + BOOL didAuth = (args.error == nil); + return didAuth; +} + +/*! @brief Invokes the callback for the given authorization argument group. + @param args The request argument group to invoke following authorization or error. + */ +- (void)invokeCallbackArgs:(GTMAppAuthFetcherAuthorizationArgs *)args { + NSError *error = args.error; + id delegate = args.delegate; + SEL sel = args.selector; + + // If the selector callback method exists, invokes the selector. + if (delegate && sel) { + NSMutableURLRequest *request = args.request; + + NSMethodSignature *sig = [delegate methodSignatureForSelector:sel]; + NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:sig]; + [invocation setSelector:sel]; + [invocation setTarget:delegate]; + GTMAppAuthFetcherAuthorization *authorization = self; + [invocation setArgument:&authorization atIndex:2]; + [invocation setArgument:&request atIndex:3]; + [invocation setArgument:&error atIndex:4]; + [invocation invoke]; + } + + // If a callback block exists, executes the block. + id handler = args.completionHandler; + if (handler) { + void (^authCompletionBlock)(NSError *) = handler; + authCompletionBlock(error); + } +} + +#pragma mark - GTMFetcherAuthorizationProtocol + +/*! @brief Authorizing with a callback selector. + @discussion Selector has the signature: + - (void)authentication:(GTMAppAuthFetcherAuthorization *)auth + request:(NSMutableURLRequest *)request + finishedWithError:(NSError *)error; + */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" +- (void)authorizeRequest:(NSMutableURLRequest *)request + delegate:(id)delegate + didFinishSelector:(SEL)sel { +#pragma clang diagnostic pop + GTMOAuth2AssertValidSelector(delegate, sel, + @encode(GTMAppAuthFetcherAuthorization *), + @encode(NSMutableURLRequest *), + @encode(NSError *), 0); + + GTMAppAuthFetcherAuthorizationArgs *args; + args = [GTMAppAuthFetcherAuthorizationArgs argsWithRequest:request + delegate:delegate + selector:sel + completionHandler:nil]; + [self authorizeRequestArgs:args]; +} + +/*! @brief Removes all pending requests from the authorization queue. + */ +- (void)stopAuthorization { + @synchronized(_authorizationQueue) { + [_authorizationQueue removeAllObjects]; + } +} + +/*! @brief Attempts to remove a specific pending requests from the authorization queue. + @discussion Has no effect if the authorization already occurred. + */ +- (void)stopAuthorizationForRequest:(NSURLRequest *)request { + @synchronized(_authorizationQueue) { + NSUInteger argIndex = 0; + BOOL found = NO; + for (GTMAppAuthFetcherAuthorizationArgs *args in _authorizationQueue) { + // Checks pointer equality with given request, don't want to match equivalent requests. + if ([args request] == request) { + found = YES; + break; + } + argIndex++; + } + + if (found) { + [_authorizationQueue removeObjectAtIndex:argIndex]; + + // If the queue is now empty, go ahead and stop the fetcher. + if (_authorizationQueue.count == 0) { + [self stopAuthorization]; + } + } + } +} + +/*! @brief Returns YES if the given requests is in the pending authorization queue. + */ +- (BOOL)isAuthorizingRequest:(NSURLRequest *)request { + BOOL wasFound = NO; + @synchronized(_authorizationQueue) { + for (GTMAppAuthFetcherAuthorizationArgs *args in _authorizationQueue) { + // Checks pointer equality with given request, don't want to match equivalent requests. + if ([args request] == request) { + wasFound = YES; + break; + } + } + } + return wasFound; +} + +/*! @brief Returns YES if given request has an Authorization header. + */ +- (BOOL)isAuthorizedRequest:(NSURLRequest *)request { + NSString *authStr = [request valueForHTTPHeaderField:@"Authorization"]; + return (authStr.length > 0); +} + +/*! @brief Returns YES if the authorization state is currently valid. + @discussion Note that the state can become invalid immediately due to an error on token refresh. + */ +- (BOOL)canAuthorize { + return [_authState isAuthorized]; +} + +/*! @brief Authorizing with a completion block. + */ +- (void)authorizeRequest:(NSMutableURLRequest *)request + completionHandler:(GTMAppAuthFetcherAuthorizationCompletion)handler { + GTMAppAuthFetcherAuthorizationArgs *args = + [GTMAppAuthFetcherAuthorizationArgs argsWithRequest:request + delegate:nil + selector:NULL + completionHandler:handler]; + [self authorizeRequestArgs:args]; +} + +/*! @brief Forces a token refresh the next time a request is queued for authorization. + */ +- (BOOL)primeForRefresh { + if (_authState.refreshToken == nil) { + // Cannot refresh without a refresh token + return NO; + } + [_authState setNeedsTokenRefresh]; + return YES; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { + OIDAuthState *authState = + [aDecoder decodeObjectOfClass:[OIDAuthState class] forKey:kAuthStateKey]; + NSString *serviceProvider = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kServiceProviderKey]; + NSString *userID = [aDecoder decodeObjectOfClass:[NSString class] forKey:kUserIDKey]; + NSString *userEmail = [aDecoder decodeObjectOfClass:[NSString class] forKey:kUserEmailKey]; + NSString *userEmailIsVerified = + [aDecoder decodeObjectOfClass:[NSString class] forKey:kUserEmailIsVerifiedKey]; + + self = [self initWithAuthState:authState + serviceProvider:serviceProvider + userID:userID + userEmail:userEmail + userEmailIsVerified:userEmailIsVerified]; + return self; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:_authState forKey:kAuthStateKey]; + [aCoder encodeObject:_serviceProvider forKey:kServiceProviderKey]; + [aCoder encodeObject:_userID forKey:kUserIDKey]; + [aCoder encodeObject:_userEmail forKey:kUserEmailKey]; + [aCoder encodeObject:_userEmailIsVerified forKey:kUserEmailIsVerifiedKey]; +} + +@end diff --git a/Pods/GTMAppAuth/GTMAppAuth/Sources/GTMKeychain.m b/Pods/GTMAppAuth/GTMAppAuth/Sources/GTMKeychain.m new file mode 100644 index 0000000..1660ce8 --- /dev/null +++ b/Pods/GTMAppAuth/GTMAppAuth/Sources/GTMKeychain.m @@ -0,0 +1,326 @@ +/*! @file GTMKeychain_iOS.m + @brief GTMAppAuth SDK + @copyright + Copyright 2016 Google Inc. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "GTMAppAuth/Sources/Public/GTMAppAuth/GTMKeychain.h" + +#import + +/*! @brief Keychain helper class. + */ +@interface GTMAppAuthGTMOAuth2Keychain : NSObject + +// When set to YES, all Keychain queries will have +// kSecUseDataProtectionKeychain set to true on macOS 10.15+. Defaults to NO. +@property(nonatomic) BOOL useDataProtectionKeychain; + ++ (GTMAppAuthGTMOAuth2Keychain *)defaultKeychain; + +// OK to pass nil for the error parameter. +- (NSString *)passwordForService:(NSString *)service + account:(NSString *)account + error:(NSError **)error; + +- (NSData *)passwordDataForService:(NSString *)service + account:(NSString *)account + error:(NSError **)error; + +// OK to pass nil for the error parameter. +- (BOOL)removePasswordForService:(NSString *)service + account:(NSString *)account + error:(NSError **)error; + +// OK to pass nil for the error parameter. +// +// accessibility should be one of the constants for kSecAttrAccessible +// such as kSecAttrAccessibleWhenUnlocked +- (BOOL)setPassword:(NSString *)password + forService:(NSString *)service + accessibility:(CFTypeRef)accessibility + account:(NSString *)account + error:(NSError **)error; + +- (BOOL)setPasswordData:(NSData *)passwordData + forService:(NSString *)service + accessibility:(CFTypeRef)accessibility + account:(NSString *)account + error:(NSError **)error; + +// For unit tests: allow setting a mock object ++ (void)setDefaultKeychain:(GTMAppAuthGTMOAuth2Keychain *)keychain; + +@end + +static NSString *const kGTMAppAuthFetcherAuthorizationGTMOAuth2AccountName = @"OAuth"; + +@implementation GTMKeychain + ++ (BOOL)removePasswordFromKeychainForName:(NSString *)keychainItemName { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpartial-availability" + return [GTMKeychain removePasswordFromKeychainForName:keychainItemName + useDataProtectionKeychain:NO]; +#pragma clang diagnostic pop +} + ++ (BOOL)removePasswordFromKeychainForName:(NSString *)keychainItemName + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain { + GTMAppAuthGTMOAuth2Keychain *keychain = [GTMAppAuthGTMOAuth2Keychain defaultKeychain]; + keychain.useDataProtectionKeychain = useDataProtectionKeychain; + return [keychain removePasswordForService:keychainItemName + account:kGTMAppAuthFetcherAuthorizationGTMOAuth2AccountName + error:nil]; +} + ++ (NSString *)passwordFromKeychainForName:(NSString *)keychainItemName { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpartial-availability" + return [GTMKeychain passwordFromKeychainForName:keychainItemName useDataProtectionKeychain:NO]; +#pragma clang diagnostic pop +} + ++ (NSString *)passwordFromKeychainForName:(NSString *)keychainItemName + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain { + GTMAppAuthGTMOAuth2Keychain *keychain = [GTMAppAuthGTMOAuth2Keychain defaultKeychain]; + keychain.useDataProtectionKeychain = useDataProtectionKeychain; + NSError *error; + NSString *password = + [keychain passwordForService:keychainItemName + account:kGTMAppAuthFetcherAuthorizationGTMOAuth2AccountName + error:&error]; + return password; +} + ++ (BOOL)savePasswordToKeychainForName:(NSString *)keychainItemName + password:(NSString *)password { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpartial-availability" + return [GTMKeychain savePasswordToKeychainForName:keychainItemName + password:password + useDataProtectionKeychain:NO]; +#pragma clang diagnostic pop +} + ++ (BOOL)savePasswordToKeychainForName:(NSString *)keychainItemName + password:(NSString *)password + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain { + CFTypeRef accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly; + GTMAppAuthGTMOAuth2Keychain *keychain = [GTMAppAuthGTMOAuth2Keychain defaultKeychain]; + keychain.useDataProtectionKeychain = useDataProtectionKeychain; + return [keychain setPassword:password + forService:keychainItemName + accessibility:accessibility + account:kGTMAppAuthFetcherAuthorizationGTMOAuth2AccountName + error:NULL]; +} + ++ (BOOL)savePasswordDataToKeychainForName:(NSString *)keychainItemName + passwordData:(NSData *)password { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpartial-availability" + return [GTMKeychain savePasswordDataToKeychainForName:keychainItemName + passwordData:password + useDataProtectionKeychain:NO]; +#pragma clang diagnostic pop +} + ++ (BOOL)savePasswordDataToKeychainForName:(NSString *)keychainItemName + passwordData:(NSData *)password + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain { + CFTypeRef accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly; + GTMAppAuthGTMOAuth2Keychain *keychain = [GTMAppAuthGTMOAuth2Keychain defaultKeychain]; + keychain.useDataProtectionKeychain = useDataProtectionKeychain; + return [keychain setPasswordData:password + forService:keychainItemName + accessibility:accessibility + account:kGTMAppAuthFetcherAuthorizationGTMOAuth2AccountName + error:NULL]; +} + ++ (NSData *)passwordDataFromKeychainForName:(NSString *)keychainItemName { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpartial-availability" + return [GTMKeychain passwordDataFromKeychainForName:keychainItemName + useDataProtectionKeychain:NO]; +#pragma clang diagnostic pop +} + ++ (NSData *)passwordDataFromKeychainForName:(NSString *)keychainItemName + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain { + GTMAppAuthGTMOAuth2Keychain *keychain = [GTMAppAuthGTMOAuth2Keychain defaultKeychain]; + keychain.useDataProtectionKeychain = useDataProtectionKeychain; + NSError *error; + NSData *password = + [keychain passwordDataForService:keychainItemName + account:kGTMAppAuthFetcherAuthorizationGTMOAuth2AccountName + error:&error]; + return password; +} + +@end + + +typedef NS_ENUM(NSInteger, GTMAppAuthFetcherAuthorizationGTMAppAuthGTMOAuth2KeychainError) { + GTMAppAuthGTMOAuth2KeychainErrorBadArguments = -1301, + GTMAppAuthGTMOAuth2KeychainErrorNoPassword = -1302 +}; + +NSString *const kGTMAppAuthFetcherAuthorizationGTMOAuth2KeychainErrorDomain = + @"com.google.GTMOAuthKeychain"; + +static GTMAppAuthGTMOAuth2Keychain* gGTMAppAuthFetcherAuthorizationGTMOAuth2DefaultKeychain = nil; + +@implementation GTMAppAuthGTMOAuth2Keychain + +- (instancetype)init { + self = [super init]; + if (self) { + _useDataProtectionKeychain = NO; + } + return self; +} + ++ (GTMAppAuthGTMOAuth2Keychain *)defaultKeychain { + static dispatch_once_t onceToken; + dispatch_once (&onceToken, ^{ + gGTMAppAuthFetcherAuthorizationGTMOAuth2DefaultKeychain = [[self alloc] init]; + }); + return gGTMAppAuthFetcherAuthorizationGTMOAuth2DefaultKeychain; +} + +// For unit tests: allow setting a mock object ++ (void)setDefaultKeychain:(GTMAppAuthGTMOAuth2Keychain *)keychain { + if (gGTMAppAuthFetcherAuthorizationGTMOAuth2DefaultKeychain != keychain) { + gGTMAppAuthFetcherAuthorizationGTMOAuth2DefaultKeychain = keychain; + } +} + +- (NSMutableDictionary *)keychainQueryForService:(NSString *)service account:(NSString *)account { + NSMutableDictionary *query = + [NSMutableDictionary dictionaryWithObjectsAndKeys:(id)kSecClassGenericPassword, (id)kSecClass, + account, (id)kSecAttrAccount, + service, (id)kSecAttrService, + nil]; + // kSecUseDataProtectionKeychain is a no-op on platforms other than macOS 10.15+. For clarity, we + // set it here only when supported by the Apple SDK and when relevant at runtime. +#if TARGET_OS_OSX && __MAC_OS_X_VERSION_MAX_ALLOWED >= 101500 + if (@available(macOS 10.15, *)) { + if (self.useDataProtectionKeychain) { + [query setObject:(id)kCFBooleanTrue forKey:(id)kSecUseDataProtectionKeychain]; + } + } +#endif + return query; +} + +- (NSString *)passwordForService:(NSString *)service + account:(NSString *)account + error:(NSError **)error { + NSData *passwordData = [self passwordDataForService:service account:account error:error]; + if (!passwordData) { + return nil; + } + NSString *result = [[NSString alloc] initWithData:passwordData + encoding:NSUTF8StringEncoding]; + return result; +} + +- (NSData *)passwordDataForService:(NSString *)service + account:(NSString *)account + error:(NSError **)error { + OSStatus status = GTMAppAuthGTMOAuth2KeychainErrorBadArguments; + NSData *result = nil; + if (service.length > 0 && account.length > 0) { + CFDataRef passwordData = NULL; + NSMutableDictionary *keychainQuery = [self keychainQueryForService:service account:account]; + [keychainQuery setObject:(id)kCFBooleanTrue forKey:(id)kSecReturnData]; + [keychainQuery setObject:(id)kSecMatchLimitOne forKey:(id)kSecMatchLimit]; + + status = SecItemCopyMatching((CFDictionaryRef)keychainQuery, + (CFTypeRef *)&passwordData); + if (status == noErr && 0 < [(__bridge NSData *)passwordData length]) { + result = [(__bridge NSData *)passwordData copy]; + } + if (passwordData != NULL) { + CFRelease(passwordData); + } + } + if (status != noErr && error != NULL) { + *error = [NSError errorWithDomain:kGTMAppAuthFetcherAuthorizationGTMOAuth2KeychainErrorDomain + code:status + userInfo:nil]; + } + return result; +} + +- (BOOL)removePasswordForService:(NSString *)service + account:(NSString *)account + error:(NSError **)error { + OSStatus status = GTMAppAuthGTMOAuth2KeychainErrorBadArguments; + if (0 < [service length] && 0 < [account length]) { + NSMutableDictionary *keychainQuery = [self keychainQueryForService:service account:account]; + status = SecItemDelete((CFDictionaryRef)keychainQuery); + } + if (status != noErr && error != NULL) { + *error = [NSError errorWithDomain:kGTMAppAuthFetcherAuthorizationGTMOAuth2KeychainErrorDomain + code:status + userInfo:nil]; + } + return status == noErr; +} + +- (BOOL)setPassword:(NSString *)password + forService:(NSString *)service + accessibility:(CFTypeRef)accessibility + account:(NSString *)account + error:(NSError **)error { + NSData *passwordData = [password dataUsingEncoding:NSUTF8StringEncoding]; + return [self setPasswordData:passwordData + forService:service + accessibility:accessibility + account:account + error:error]; +} + +- (BOOL)setPasswordData:(NSData *)passwordData + forService:(NSString *)service + accessibility:(CFTypeRef)accessibility + account:(NSString *)account + error:(NSError **)error { + OSStatus status = GTMAppAuthGTMOAuth2KeychainErrorBadArguments; + if (0 < [service length] && 0 < [account length]) { + [self removePasswordForService:service account:account error:nil]; + if (0 < [passwordData length]) { + NSMutableDictionary *keychainQuery = [self keychainQueryForService:service account:account]; + [keychainQuery setObject:passwordData forKey:(id)kSecValueData]; + + if (accessibility != NULL) { + [keychainQuery setObject:(__bridge id)accessibility + forKey:(id)kSecAttrAccessible]; + } + status = SecItemAdd((CFDictionaryRef)keychainQuery, NULL); + } + } + if (status != noErr && error != NULL) { + *error = [NSError errorWithDomain:kGTMAppAuthFetcherAuthorizationGTMOAuth2KeychainErrorDomain + code:status + userInfo:nil]; + } + return status == noErr; +} + +@end diff --git a/Pods/GTMAppAuth/GTMAppAuth/Sources/GTMOAuth2KeychainCompatibility.m b/Pods/GTMAppAuth/GTMAppAuth/Sources/GTMOAuth2KeychainCompatibility.m new file mode 100644 index 0000000..c98d07f --- /dev/null +++ b/Pods/GTMAppAuth/GTMAppAuth/Sources/GTMOAuth2KeychainCompatibility.m @@ -0,0 +1,331 @@ +/*! @file GTMOAuth2Compatibility.m + @brief GTMAppAuth SDK + @copyright + Copyright 2016 Google Inc. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "GTMAppAuth/Sources/Public/GTMAppAuth/GTMOAuth2KeychainCompatibility.h" + +#import "GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization.h" +#import "GTMAppAuth/Sources/Public/GTMAppAuth/GTMKeychain.h" + +#if SWIFT_PACKAGE || GTMAPPAUTH_USE_MODULAR_IMPORT +@import AppAuthCore; +@import GTMSessionFetcherCore; +#elif GTMAPPAUTH_USER_IMPORTS +#import "AppAuthCore.h" +#import "GTMSessionFetcher.h" +#else +#import +#import +#endif + +// standard OAuth keys +static NSString *const kOAuth2AccessTokenKey = @"access_token"; +static NSString *const kOAuth2RefreshTokenKey = @"refresh_token"; +static NSString *const kOAuth2ScopeKey = @"scope"; +static NSString *const kOAuth2ErrorKey = @"error"; +static NSString *const kOAuth2TokenTypeKey = @"token_type"; +static NSString *const kOAuth2ExpiresInKey = @"expires_in"; +static NSString *const kOAuth2CodeKey = @"code"; +static NSString *const kOAuth2AssertionKey = @"assertion"; +static NSString *const kOAuth2RefreshScopeKey = @"refreshScope"; + +// additional persistent keys +static NSString *const kServiceProviderKey = @"serviceProvider"; +static NSString *const kUserIDKey = @"userID"; +static NSString *const kUserEmailKey = @"email"; +static NSString *const kUserEmailIsVerifiedKey = @"isVerified"; + +// URI indicating an installed app is signing in. This is described at +// +// https://developers.google.com/identity/protocols/OAuth2InstalledApp#formingtheurl +// +static NSString *const kOOBString = @"urn:ietf:wg:oauth:2.0:oob"; + +@implementation GTMOAuth2KeychainCompatibility + +// This returns a "response string" that can be passed later to +// setKeysForResponseString: to reuse an old access token in a new auth object ++ (NSString *)persistenceResponseStringForAuthorization: + (GTMAppAuthFetcherAuthorization *)authorization { + NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; + + NSString *refreshToken = authorization.authState.refreshToken; + NSString *accessToken = authorization.authState.lastTokenResponse.accessToken; + + // Any nil values will not set a dictionary entry + [dict setValue:refreshToken forKey:kOAuth2RefreshTokenKey]; + [dict setValue:accessToken forKey:kOAuth2AccessTokenKey]; + [dict setValue:authorization.serviceProvider forKey:kServiceProviderKey]; + [dict setValue:authorization.userID forKey:kUserIDKey]; + [dict setValue:authorization.userEmail forKey:kUserEmailKey]; + [dict setValue:authorization.userEmailIsVerified forKey:kUserEmailIsVerifiedKey]; + [dict setValue:authorization.authState.scope forKey:kOAuth2ScopeKey]; + + NSString *result = [self encodedQueryParametersForDictionary:dict]; + return result; +} + ++ (GTMAppAuthFetcherAuthorization *)authorizeFromKeychainForName:(NSString *)keychainItemName + tokenURL:(NSURL *)tokenURL + redirectURI:(NSString *)redirectURI + clientID:(NSString *)clientID + clientSecret:(nullable NSString *)clientSecret { + // Loads password string from keychain. + NSString *password = [GTMKeychain passwordFromKeychainForName:keychainItemName]; + + if (!password) { + return nil; + } + + GTMAppAuthFetcherAuthorization *authorization = + [self authorizeFromPersistenceString:password + tokenURL:tokenURL + redirectURI:redirectURI + clientID:clientID + clientSecret:clientSecret]; + return authorization; +} + ++ (GTMAppAuthFetcherAuthorization *)authorizeFromPersistenceString:(NSString *)persistenceString + tokenURL:(NSURL *)tokenURL + redirectURI:(NSString *)redirectURIString + clientID:(NSString *)clientID + clientSecret:(NSString *)clientSecret { + // Parses persistence data into NSDictionary. + NSDictionary *dict = [self dictionaryWithResponseString:persistenceString]; + + NSURL *redirectURI = (NSURL *)[NSURL URLWithString:redirectURIString]; + + // OIDAuthState is based on the request/response history. + // Creates history based on the data from the keychain, and client details passed in. + OIDServiceConfiguration *authConfig = + [[OIDServiceConfiguration alloc] initWithAuthorizationEndpoint:tokenURL tokenEndpoint:tokenURL]; + OIDAuthorizationRequest *authRequest = + [[OIDAuthorizationRequest alloc] initWithConfiguration:authConfig + clientId:clientID + clientSecret:clientSecret + scope:dict[kOAuth2ScopeKey] + redirectURL:redirectURI + responseType:OIDResponseTypeCode + state:nil + nonce:nil + codeVerifier:nil + codeChallenge:nil + codeChallengeMethod:nil + additionalParameters:nil]; + OIDAuthorizationResponse *authResponse = + [[OIDAuthorizationResponse alloc] initWithRequest:authRequest parameters:dict]; + // Exclude scope and refresh token parameters from additionalParameters. + NSMutableDictionary *additionalParameters = [dict mutableCopy]; + [additionalParameters removeObjectForKey:kOAuth2ScopeKey]; + [additionalParameters removeObjectForKey:kOAuth2RefreshTokenKey]; + OIDTokenRequest *tokenRequest = + [[OIDTokenRequest alloc] initWithConfiguration:authConfig + grantType:@"token" + authorizationCode:nil + redirectURL:redirectURI + clientID:clientID + clientSecret:clientSecret + scope:dict[kOAuth2ScopeKey] + refreshToken:dict[kOAuth2RefreshTokenKey] + codeVerifier:nil + additionalParameters:additionalParameters]; + OIDTokenResponse *tokenResponse = + [[OIDTokenResponse alloc] initWithRequest:tokenRequest parameters:dict]; + OIDAuthState *authState = [[OIDAuthState alloc] initWithAuthorizationResponse:authResponse + tokenResponse:tokenResponse]; + // We're not serializing the token expiry date, so the first refresh needs to be forced. + [authState setNeedsTokenRefresh]; + + GTMAppAuthFetcherAuthorization *authorizer = + [[GTMAppAuthFetcherAuthorization alloc] initWithAuthState:authState + serviceProvider:dict[kServiceProviderKey] + userID:dict[kUserIDKey] + userEmail:dict[kUserEmailKey] + userEmailIsVerified:dict[kUserEmailIsVerifiedKey]]; + return authorizer; +} + +#if !GTM_OAUTH2_SKIP_GOOGLE_SUPPORT + ++ (GTMAppAuthFetcherAuthorization *)authForGoogleFromKeychainForName:(NSString *)keychainItemName + clientID:(NSString *)clientID + clientSecret:(NSString *)clientSecret { + Class signInClass = self; + NSURL *tokenURL = [signInClass googleTokenURL]; + NSString *redirectURI = [signInClass nativeClientRedirectURI]; + + GTMAppAuthFetcherAuthorization *auth; + auth = [self authorizeFromKeychainForName:keychainItemName + tokenURL:tokenURL + redirectURI:redirectURI + clientID:clientID + clientSecret:clientSecret]; + return auth; +} + +#endif // !GTM_OAUTH2_SKIP_GOOGLE_SUPPORT + +/*! @brief Removes stored tokens, such as when the user signs out. + @return YES the tokens were removed successfully (or didn't exist). + */ ++ (BOOL)removeAuthFromKeychainForName:(NSString *)keychainItemName { + return [GTMKeychain removePasswordFromKeychainForName:keychainItemName]; +} + +/*! @brief Saves the authorization state to the keychain, in a GTMOAuth2 compatible manner. + @return YES when the state was saved successfully. + */ ++ (BOOL)saveAuthToKeychainForName:(NSString *)keychainItemName + authentication:(GTMAppAuthFetcherAuthorization *)auth { + [self removeAuthFromKeychainForName:keychainItemName]; + NSString *password = [self persistenceResponseStringForAuthorization:auth]; + + return [GTMKeychain savePasswordToKeychainForName:keychainItemName password:password]; +} + +#pragma mark Utility Routines + ++ (NSString *)encodedQueryParametersForDictionary:(NSDictionary *)dict { + // Make a string like "cat=fluffy&dog=spot" + NSMutableString *result = [NSMutableString string]; + NSArray *sortedKeys = + [[dict allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; + NSString *joiner = @""; + for (NSString *key in sortedKeys) { + NSString *value = [dict objectForKey:key]; + NSString *encodedValue = [self encodedOAuthValueForString:value]; + NSString *encodedKey = [self encodedOAuthValueForString:key]; + [result appendFormat:@"%@%@=%@", joiner, encodedKey, encodedValue]; + joiner = @"&"; + } + return result; +} + ++ (NSString *)encodedOAuthValueForString:(NSString *)originalString { + // For parameters, we'll explicitly leave spaces unescaped now, and replace + // them with +'s + NSString *const kForceEscape = @"!*'();:@&=+$,/?%#[]"; + +#if (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9) \ + || (TARGET_OS_IPHONE && defined(__IPHONE_7_0) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_7_0) + // Builds targeting iOS 7/OS X 10.9 and higher only. + NSMutableCharacterSet *cs = [[NSCharacterSet URLQueryAllowedCharacterSet] mutableCopy]; + [cs removeCharactersInString:kForceEscape]; + + return [originalString stringByAddingPercentEncodingWithAllowedCharacters:cs]; +#else + // Builds targeting iOS 6/OS X 10.8. + CFStringRef escapedStr = NULL; + if (originalString) { + escapedStr = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, + (CFStringRef)originalString, + NULL, + (CFStringRef)kForceEscape, + kCFStringEncodingUTF8); + } + + return (__bridge NSString *)escapedStr; +#endif +} + ++ (NSDictionary *)dictionaryWithResponseString:(NSString *)responseStr { + // Build a dictionary from a response string of the form + // "cat=fluffy&dog=spot". Missing or empty values are considered + // empty strings; keys and values are percent-decoded. + if (responseStr == nil) return nil; + + NSArray *items = [responseStr componentsSeparatedByString:@"&"]; + + NSMutableDictionary *responseDict = [NSMutableDictionary dictionaryWithCapacity:items.count]; + + for (NSString *item in items) { + NSString *key; + NSString *value = @""; + + NSRange equalsRange = [item rangeOfString:@"="]; + if (equalsRange.location != NSNotFound) { + // The parameter has at least one '=' + key = [item substringToIndex:equalsRange.location]; + + // There are characters after the '=' + if (equalsRange.location + 1 < item.length) { + value = [item substringFromIndex:(equalsRange.location + 1)]; + } + } else { + // The parameter has no '=' + key = item; + } + + NSString *plainKey = [self unencodedOAuthParameterForString:key]; + NSString *plainValue = [self unencodedOAuthParameterForString:value]; + + [responseDict setObject:plainValue forKey:plainKey]; + } + + return responseDict; +} + ++ (NSString *)unencodedOAuthParameterForString:(NSString *)str { +#if (!TARGET_OS_IPHONE \ + && defined(MAC_OS_X_VERSION_10_9) \ + && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9) \ + || (TARGET_OS_IPHONE \ + && defined(__IPHONE_7_0) \ + && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_7_0) + // On iOS 7, -stringByRemovingPercentEncoding incorrectly returns nil for an empty string. + if (str != nil && [str length] == 0) return @""; + + NSString *plainStr = [str stringByRemovingPercentEncoding]; + return plainStr; +#else + NSString *plainStr = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + return plainStr; +#endif +} + +#if !GTM_OAUTH2_SKIP_GOOGLE_SUPPORT + +// Endpoint URLs are available at https://accounts.google.com/.well-known/openid-configuration + ++ (NSURL *)googleAuthorizationURL { + NSString *str = @"https://accounts.google.com/o/oauth2/v2/auth"; + return (NSURL *)[NSURL URLWithString:str]; +} + ++ (NSURL *)googleTokenURL { + NSString *str = @"https://www.googleapis.com/oauth2/v4/token"; + return (NSURL *)[NSURL URLWithString:str]; +} + ++ (NSURL *)googleRevocationURL { + NSString *urlStr = @"https://accounts.google.com/o/oauth2/revoke"; + return (NSURL *)[NSURL URLWithString:urlStr]; +} + ++ (NSURL *)googleUserInfoURL { + NSString *urlStr = @"https://www.googleapis.com/oauth2/v3/userinfo"; + return (NSURL *)[NSURL URLWithString:urlStr]; +} + ++ (NSString *)nativeClientRedirectURI { + return kOOBString; +} + +#endif // !GTM_OAUTH2_SKIP_GOOGLE_SUPPORT + +@end diff --git a/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuth.h b/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuth.h new file mode 100644 index 0000000..c0e921c --- /dev/null +++ b/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuth.h @@ -0,0 +1,22 @@ +/*! @file GTMAppAuth.h + @brief GTMAppAuth SDK + @copyright + Copyright 2016 Google Inc. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "GTMAppAuthFetcherAuthorization.h" +#import "GTMAppAuthFetcherAuthorization+Keychain.h" +#import "GTMKeychain.h" +#import "GTMOAuth2KeychainCompatibility.h" diff --git a/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h b/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h new file mode 100644 index 0000000..9504a25 --- /dev/null +++ b/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h @@ -0,0 +1,89 @@ +/*! @file GTMAppAuthFetcherAuthorization+Keychain.h + @brief GTMAppAuth SDK + @copyright + Copyright 2016 Google Inc. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "GTMAppAuthFetcherAuthorization.h" + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Category to support serialization and deserialization of + @c GTMAppAuthFetcherAuthorization in the format used by GTMAppAuth. + */ +@interface GTMAppAuthFetcherAuthorization (Keychain) + +/*! @brief Attempts to create a @c GTMAppAuthFetcherAuthorization from data stored in the keychain + in GTMAppAuth format. + @param keychainItemName The keychain name. + @return A @c GTMAppAuthFetcherAuthorization object, or nil. + */ ++ (nullable GTMAppAuthFetcherAuthorization *) + authorizationFromKeychainForName:(NSString *)keychainItemName; + +/*! @brief Attempts to create a @c GTMAppAuthFetcherAuthorization from data stored in the keychain + in GTMAppAuth format. Note that if you choose to start using the data protection keychain on + macOS, any items previously created will not be accessible without migration. + @param keychainItemName The keychain name. + @param useDataProtectionKeychain A Boolean value that indicates whether to use the data + protection keychain on macOS 10.15+. + @return A @c GTMAppAuthFetcherAuthorization object, or nil. + */ ++ (nullable GTMAppAuthFetcherAuthorization *) + authorizationFromKeychainForName:(NSString *)keychainItemName + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain API_AVAILABLE(macosx(10.15)); + +/*! @brief Removes a stored authorization state. + @param keychainItemName The keychain name. + @return YES if the tokens were removed successfully (or didn't exist). + */ ++ (BOOL)removeAuthorizationFromKeychainForName:(NSString *)keychainItemName; + +/*! @brief Removes a stored authorization state. Note that if you choose to start using the data + protection keychain on macOS, any items previously created will not be accessible without + migration. + @param keychainItemName The keychain name. + @param useDataProtectionKeychain A Boolean value that indicates whether to use the data + protection keychain on macOS 10.15+. + @return YES if the tokens were removed successfully (or didn't exist). + */ ++ (BOOL)removeAuthorizationFromKeychainForName:(NSString *)keychainItemName + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain + API_AVAILABLE(macosx(10.15)); + +/*! @brief Saves the authorization state to the keychain, in GTMAppAuth format. + @param auth The authorization to save. + @param keychainItemName The keychain name. + @return YES when the state was saved successfully. + */ ++ (BOOL)saveAuthorization:(GTMAppAuthFetcherAuthorization *)auth + toKeychainForName:(NSString *)keychainItemName; + +/*! @brief Saves the authorization state to the keychain, in GTMAppAuth format. Note that if you + choose to start using the data protection keychain on macOS, any items previously created + will not be accessible without migration. + @param auth The authorization to save. + @param keychainItemName The keychain name. + @param useDataProtectionKeychain A Boolean value that indicates whether to use the data + protection keychain on macOS 10.15+. + @return YES when the state was saved successfully. + */ ++ (BOOL)saveAuthorization:(GTMAppAuthFetcherAuthorization *)auth + toKeychainForName:(NSString *)keychainItemName + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain API_AVAILABLE(macosx(10.15)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization.h b/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization.h new file mode 100644 index 0000000..fe74110 --- /dev/null +++ b/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization.h @@ -0,0 +1,160 @@ +/*! @file GTMAppAuthFetcherAuthorization.h + @brief GTMAppAuth SDK + @copyright + Copyright 2016 Google Inc. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#if !defined(__has_include) + #error "__has_include not available." +#elif __has_include() + #import +#elif __has_include("../GTMSessionFetcher.h") + #import "../GTMSessionFetcher.h" +#else +# error "Failed to find GTMSessionFetcher" +#endif + +@class OIDAuthState; +@class OIDServiceConfiguration; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief The userInfo key for the @c NSURLRequest. + */ +extern NSString *const GTMAppAuthFetcherAuthorizationErrorRequestKey; + +/*! @brief The error domain for errors specific to the session fetcher authorization. + */ +extern NSString *const GTMAppAuthFetcherAuthorizationErrorDomain; + +/*! @brief Enum of all possible error codes in the @c ::GTMAppAuthFetcherAuthorizationErrorDomain + domain. + @discussion Note that these are GTMAppAuth-specific errors. When AppAuth errors are encountered, + those are returned instead. + */ +typedef NS_ENUM(NSInteger, GTMAppAuthFetcherAuthorizationError) { + GTMAppAuthFetcherAuthorizationErrorUnauthorizableRequest = -1004 +}; + +typedef void (^GTMAppAuthFetcherAuthorizationCompletion)(NSError *_Nullable error); + +@class GTMAppAuthFetcherAuthorization; + +/*! @protocol GTMAppAuthFetcherAuthorizationTokenRefreshDelegate + @brief Delegate of the GTMAppAuthFetcherAuthorization used to supply additional parameters on + token refresh. + */ +@protocol GTMAppAuthFetcherAuthorizationTokenRefreshDelegate + +/*! @brief Called before a token refresh request is performed. + @param authorization The @c GTMFetcherAuthorization performing the token refresh. + @return A dictionary of parameters to be added to the token refresh request. + */ +- (nullable NSDictionary *)additionalRefreshParameters: + (GTMAppAuthFetcherAuthorization *)authorization; + +@end + +/*! @brief An implementation of the @c GTMFetcherAuthorizationProtocol protocol for the AppAuth + library. + @discussion Enables you to use AppAuth with the GTM Session Fetcher library. + */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +@interface GTMAppAuthFetcherAuthorization : NSObject +#pragma clang diagnostic pop + +/*! @brief The AppAuth authentication state. + */ +@property(nonatomic, readonly) OIDAuthState *authState; + +/*! @brief Service identifier, for example "Google"; not used for authentication. + @discussion The provider name is just for allowing stored authorization to be associated + with the authorizing service. + */ +@property(nullable, nonatomic, readonly) NSString *serviceProvider; + +/*! @brief User ID from the ID Token. + * @discussion Note: Never send this value to your backend as an authentication token, rather send + * an ID Token and validate it. + */ +@property(nullable, nonatomic, readonly) NSString *userID; + +/*! @brief Email verified status; not used for authentication. + @discussion The verified string can be checked with -boolValue. If the result is false, then + the email address is listed with the account on the server, but the address has not been + confirmed as belonging to the owner of the account. + */ +@property(nullable, nonatomic, readonly) NSString *userEmailIsVerified; + +@property(nullable, nonatomic, weak) id + tokenRefreshDelegate; + +/*! @brief Creates a new @c GTMAppAuthFetcherAuthorization using the given @c OIDAuthState from + AppAuth. + @param authState The authorization state. + */ +- (instancetype)initWithAuthState:(OIDAuthState *)authState; + +/*! @brief Creates a new @c GTMAppAuthFetcherAuthorization using the given @c OIDAuthState from + AppAuth. + @param authState The authorization state. + @param serviceProvider An optional string to describe the service. + @param userID An optional string of the user ID. + @param userEmail An optional string of the user's email address. + @param userEmailIsVerified An optional string representation of a boolean to indicate that the + email address has been verified. Pass @"true" for @c YES, or @"false" for @c NO. + @discussion Designated initializer. + */ +- (instancetype)initWithAuthState:(OIDAuthState *)authState + serviceProvider:(nullable NSString *)serviceProvider + userID:(nullable NSString *)userID + userEmail:(nullable NSString *)userEmail + userEmailIsVerified:(nullable NSString *)userEmailIsVerified + NS_DESIGNATED_INITIALIZER; + +#if !GTM_APPAUTH_SKIP_GOOGLE_SUPPORT +/*! @brief Convenience method to return an @c OIDServiceConfiguration for Google. + @return A @c OIDServiceConfiguration object setup with Google OAuth endpoints. + */ ++ (OIDServiceConfiguration *)configurationForGoogle; +#endif // !GTM_APPAUTH_SKIP_GOOGLE_SUPPORT + +/*! @brief Adds an authorization header to the given request, using the authorization state. + Refreshes the access token if needed. + @param request The request to authorize. + @param handler The block that is called after authorizing the request is attempted. If @c error + is non-nil, the authorization failed. Errors in the domain @c ::OIDOAuthTokenErrorDomain + indicate that the authorization itself is invalid, and will need to be re-obtained from the + user. Errors in the @c GTMAppAuthFetcherAuthorizationErrorDomain indicate another + unrecoverable errors. Errors in other domains may indicate a transitive error condition such + as a network error, and typically you do not need to reauthenticate the user on such errors. + @discussion The completion handler is scheduled on the main thread, unless the @c callbackQueue + property is set on the @c fetcherService in which case the handler is scheduled on that + queue. + */ +- (void)authorizeRequest:(nullable NSMutableURLRequest *)request + completionHandler:(GTMAppAuthFetcherAuthorizationCompletion)handler; + +/*! @brief Returns YES if the authorization state is currently valid. + @discussion Note that this doesn't guarantee that a request will get a valid authorization, as + the authorization state could become invalid on on the next token refresh. + */ +- (BOOL)canAuthorize; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMKeychain.h b/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMKeychain.h new file mode 100644 index 0000000..c4e2af4 --- /dev/null +++ b/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMKeychain.h @@ -0,0 +1,126 @@ +/*! @file GTMKeychain.h + @brief GTMAppAuth SDK + @copyright + Copyright 2016 Google Inc. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Utility for saving and loading data to the keychain. + */ +@interface GTMKeychain : NSObject + +/*! @brief Saves the password string to the keychain with the given identifier. + @param keychainItemName Keychain name of the item. + @param password Password string to save. + @return YES if the password string was saved successfully. + */ ++ (BOOL)savePasswordToKeychainForName:(NSString *)keychainItemName + password:(NSString *)password; + +/*! @brief Saves the password string to the keychain with the given identifier. Note that if you + choose to start using the data protection keychain on macOS, any items previously created + will not be accessible without migration. + @param keychainItemName Keychain name of the item. + @param password Password string to save. + @param useDataProtectionKeychain A Boolean value that indicates whether to use the data + protection keychain on macOS 10.15+. + @return YES if the password string was saved successfully. + */ ++ (BOOL)savePasswordToKeychainForName:(NSString *)keychainItemName + password:(NSString *)password + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain API_AVAILABLE(macosx(10.15)); + +/*! @brief Loads the password string from the keychain with the given identifier. + @param keychainItemName Keychain name of the item. + @return The password string at the given identifier, or nil. + */ ++ (nullable NSString *)passwordFromKeychainForName:(NSString *)keychainItemName; + +/*! @brief Loads the password string from the keychain with the given identifier. Note that if you + choose to start using the data protection keychain on macOS, any items previously created + will not be accessible without migration. + @param keychainItemName Keychain name of the item. + @param useDataProtectionKeychain A Boolean value that indicates whether to use the data + protection keychain on macOS 10.15+. + @return The password string at the given identifier, or nil. + */ ++ (nullable NSString *)passwordFromKeychainForName:(NSString *)keychainItemName + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain + API_AVAILABLE(macosx(10.15)); + +/*! @brief Saves the password data to the keychain with the given identifier. + @param keychainItemName Keychain name of the item. + @param passwordData Password data to save. + @return YES if the password data was saved successfully. + */ ++ (BOOL)savePasswordDataToKeychainForName:(NSString *)keychainItemName + passwordData:(NSData *)passwordData; + +/*! @brief Saves the password data to the keychain with the given identifier. Note that if you + choose to start using the data protection keychain on macOS, any items previously created + will not be accessible without migration. + @param keychainItemName Keychain name of the item. + @param passwordData Password data to save. + @param useDataProtectionKeychain A Boolean value that indicates whether to use the data + protection keychain on macOS 10.15+. + @return YES if the password data was saved successfully. + */ ++ (BOOL)savePasswordDataToKeychainForName:(NSString *)keychainItemName + passwordData:(NSData *)passwordData + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain + API_AVAILABLE(macosx(10.15)); + +/*! @brief Loads the password data from the keychain with the given identifier. + @param keychainItemName Keychain name of the item. + @return The password data at the given identifier, or nil. + */ ++ (nullable NSData *)passwordDataFromKeychainForName:(NSString *)keychainItemName; + +/*! @brief Loads the password data from the keychain with the given identifier. Note that if you + choose to start using the data protection keychain on macOS, any items previously created + will not be accessible without migration. + @param keychainItemName Keychain name of the item. + @param useDataProtectionKeychain A Boolean value that indicates whether to use the data + protection keychain on macOS 10.15+. + @return The password data at the given identifier, or nil. + */ ++ (nullable NSData *)passwordDataFromKeychainForName:(NSString *)keychainItemName + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain + API_AVAILABLE(macosx(10.15)); + +/*! @brief Removes stored password string, such as when the user signs out. + @param keychainItemName Keychain name of the item. + @return YES if the password string was removed successfully (or didn't exist). + */ ++ (BOOL)removePasswordFromKeychainForName:(NSString *)keychainItemName; + +/*! @brief Removes stored password string, such as when the user signs out. Note that if you + choose to start using the data protection keychain on macOS, any items previously created + will not be accessible without migration. + @param keychainItemName Keychain name of the item. + @param useDataProtectionKeychain A Boolean value that indicates whether to use the data + protection keychain on macOS 10.15+. + @return YES if the password string was removed successfully (or didn't exist). + */ ++ (BOOL)removePasswordFromKeychainForName:(NSString *)keychainItemName + useDataProtectionKeychain:(BOOL)useDataProtectionKeychain + API_AVAILABLE(macosx(10.15)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMOAuth2KeychainCompatibility.h b/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMOAuth2KeychainCompatibility.h new file mode 100644 index 0000000..986f0d2 --- /dev/null +++ b/Pods/GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMOAuth2KeychainCompatibility.h @@ -0,0 +1,133 @@ +/*! @file GTMOAuth2Compatibility.h + @brief GTMAppAuth SDK + @copyright + Copyright 2016 Google Inc. + @copydetails + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@class GTMAppAuthFetcherAuthorization; + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief Class to support serialization and deserialization of @c GTMAppAuthFetcherAuthorization + in the format used by GTMOAuth2. + @discussion The methods of this class are capable of serializing and deserializing auth + objects in a way compatible with the serialization in @c GTMOAuth2ViewControllerTouch and + @c GTMOAuth2WindowController in GTMOAuth2. + */ +@interface GTMOAuth2KeychainCompatibility : NSObject + +/*! @brief Encodes the given @c GTMAppAuthFetcherAuthorization in a GTMOAuth2 compatible persistence + string using URL param key/value encoding. + @param authorization The @c GTMAppAuthFetcherAuthorization to serialize in GTMOAuth2 format. + @return The GTMOAuth2 persistence representation of this object. + */ ++ (NSString *)persistenceResponseStringForAuthorization: + (GTMAppAuthFetcherAuthorization *)authorization; + +/*! @brief Attempts to create a @c GTMAppAuthFetcherAuthorization from data stored in the keychain + in GTMOAuth2 format, at the supplied keychain identifier. + @param keychainItemName The keychain name. + @param tokenURL The OAuth token endpoint URL. + @param redirectURI The OAuth redirect URI used when obtaining the original authorization. + @param clientID The OAuth client id. + @param clientSecret The OAuth client secret. + @return A @c GTMAppAuthFetcherAuthorization object, or nil. + */ ++ (nullable GTMAppAuthFetcherAuthorization *) + authorizeFromKeychainForName:(NSString *)keychainItemName + tokenURL:(NSURL *)tokenURL + redirectURI:(NSString *)redirectURI + clientID:(NSString *)clientID + clientSecret:(nullable NSString *)clientSecret; + +/*! @brief Attempts to create a @c GTMAppAuthFetcherAuthorization from a @c NSString + representation of the GTMOAuth2 keychain data. + @param persistenceString String representation of the GTMOAuth2 keychain data. + @param tokenURL The OAuth token endpoint URL. + @param redirectURI The OAuth redirect URI used when obtaining the original authorization. + @param clientID The OAuth client id. + @param clientSecret The OAuth client secret. + @return A @c GTMAppAuthFetcherAuthorization object, or nil. + */ ++ (nullable GTMAppAuthFetcherAuthorization *) + authorizeFromPersistenceString:(NSString *)persistenceString + tokenURL:(NSURL *)tokenURL + redirectURI:(NSString *)redirectURI + clientID:(NSString *)clientID + clientSecret:(nullable NSString *)clientSecret; + +/*! @brief Removes stored tokens, such as when the user signs out. + @param keychainItemName The keychain name. + @return YES the tokens were removed successfully (or didn't exist). + */ ++ (BOOL)removeAuthFromKeychainForName:(NSString *)keychainItemName; + +/*! @brief Saves the authorization state to the keychain, in a GTMOAuth2 compatible manner. + @param keychainItemName The keychain name. + @return YES when the state was saved successfully. + */ ++ (BOOL)saveAuthToKeychainForName:(NSString *)keychainItemName + authentication:(GTMAppAuthFetcherAuthorization *)auth + __attribute__((deprecated( + "Use GTMAppAuthFetcherAuthorization::saveAuthorization:toKeychainForName:"))); + +#if !GTM_OAUTH2_SKIP_GOOGLE_SUPPORT + +/*! @brief Attempts to create a @c GTMAppAuthFetcherAuthorization from data stored in the keychain + in GTMOAuth2 format, at the supplied keychain identifier. Uses Google OAuth provider + information. + @param keychainItemName The keychain name. + @param clientID The OAuth client id. + @param clientSecret The OAuth client secret. + @return A @c GTMAppAuthFetcherAuthorization object, or nil. + */ ++ (nullable GTMAppAuthFetcherAuthorization *) + authForGoogleFromKeychainForName:(NSString *)keychainItemName + clientID:(NSString *)clientID + clientSecret:(nullable NSString *)clientSecret; + +/*! @brief Returns Google's OAuth 2.0 authorization endpoint. + @return Returns Google's OAuth 2.0 authorization endpoint. + */ ++ (NSURL *)googleAuthorizationURL; + +/*! @brief Returns Google's OAuth 2.0 token endpoint. + @return Returns Google's OAuth 2.0 token endpoint. + */ ++ (NSURL *)googleTokenURL; + +/*! @brief Returns Google's OAuth 2.0 revocation endpoint. + @return Returns Google's OAuth 2.0 revocation endpoint. + */ ++ (NSURL *)googleRevocationURL; + +/*! @brief Returns Google's OAuth 2.0 userinfo endpoint. + @return Returns Google's OAuth 2.0 userinfo endpoint. + */ ++ (NSURL *)googleUserInfoURL; + +/*! @brief Returns Google's native OOB redirect URI. + @discussion This is a legacy redirect URI that was used with WebViews. + @return Returns Google's native OOB redirect URI. + */ ++ (NSString *)nativeClientRedirectURI; + +#endif // !GTM_OAUTH2_SKIP_GOOGLE_SUPPORT + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/GTMAppAuth/LICENSE b/Pods/GTMAppAuth/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/Pods/GTMAppAuth/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Pods/GTMAppAuth/README.md b/Pods/GTMAppAuth/README.md new file mode 100644 index 0000000..da1f609 --- /dev/null +++ b/Pods/GTMAppAuth/README.md @@ -0,0 +1,418 @@ +[![Version](https://img.shields.io/cocoapods/v/GTMAppAuth.svg?style=flat)](https://cocoapods.org/pods/GTMAppAuth) +[![Platform](https://img.shields.io/cocoapods/p/GTMAppAuth.svg?style=flat)](https://cocoapods.org/pods/GTMAppAuth) +[![License](https://img.shields.io/cocoapods/l/GTMAppAuth.svg?style=flat)](https://cocoapods.org/pods/GTMAppAuth) +[![tests](https://github.com/google/GTMAppAuth/actions/workflows/tests.yml/badge.svg?event=push)](https://github.com/google/GTMAppAuth/actions/workflows/tests.yml) + +# GTMAppAuth for Apple Platforms + +GTMAppAuth enables you to use [AppAuth](https://github.com/openid/AppAuth-iOS) +with the +[Google Toolbox for Mac - Session Fetcher](https://github.com/google/gtm-session-fetcher) +and +[Google APIs Client Library for Objective-C For REST](https://github.com/google/google-api-objectivec-client-for-rest) +libraries on iOS, macOS, tvOS, and watchOS by providing an implementation of +[`GTMFetcherAuthorizationProtocol`](https://github.com/google/gtm-session-fetcher/blob/2a3b5264108e80d62003b770ff02eb7364ff1365/Source/GTMSessionFetcher.h#L660) +for authorizing requests with AppAuth. + +GTMAppAuth is an alternative authorizer to [GTMOAuth2](https://github.com/google/gtm-oauth2) +. The key differentiator is the use of the user's default browser for the +authorization, which is more secure, more usable (the user's session can be +reused) and follows modern OAuth [best practices for native apps](https://datatracker.ietf.org/doc/html/rfc8252). +Compatibility methods for GTMOAuth2 are offered allowing you to migrate +from GTMOAuth2 to GTMAppAuth preserving previously serialized authorizations +(so users shouldn't need to re-authenticate). + +## Setup + +If you use [CocoaPods](https://guides.cocoapods.org/using/getting-started.html), +simply add: + + pod 'GTMAppAuth' + +To your `Podfile` and run `pod install`. + +## Usage + +### Configuration + +To configure GTMAppAuth with the OAuth endpoints for Google, you can use the +convenience method: + +```objc +OIDServiceConfiguration *configuration = + [GTMAppAuthFetcherAuthorization configurationForGoogle]; +``` + +Alternatively, you can configure GTMAppAuth by specifying the endpoints +directly: + +```objc +NSURL *authorizationEndpoint = + [NSURL URLWithString:@"https://accounts.google.com/o/oauth2/v2/auth"]; +NSURL *tokenEndpoint = + [NSURL URLWithString:@"https://www.googleapis.com/oauth2/v4/token"]; + +OIDServiceConfiguration *configuration = + [[OIDServiceConfiguration alloc] + initWithAuthorizationEndpoint:authorizationEndpoint + tokenEndpoint:tokenEndpoint]; + +// perform the auth request... +``` + +Or through discovery: + +```objc +NSURL *issuer = [NSURL URLWithString:@"https://accounts.google.com"]; + +[OIDAuthorizationService discoverServiceConfigurationForIssuer:issuer + completion:^(OIDServiceConfiguration *_Nullable configuration, + NSError *_Nullable error) { + if (!configuration) { + NSLog(@"Error retrieving discovery document: %@", + [error localizedDescription]); + return; + } + + // perform the auth request... +}]; +``` + +### Authorizing + +First, you need to have a way for your UIApplicationDelegate to continue the +authorization flow session from the incoming redirect URI. Typically you could +store the in-progress OIDAuthorizationFlowSession instance in a property: + +```objc +// property of the app's UIApplicationDelegate +@property(nonatomic, nullable) + id currentAuthorizationFlow; +``` + +And in a location accessible by all controllers that need authorization, a +property to store the authorization state: + +```objc +// property of the containing class +@property(nonatomic, nullable) GTMAppAuthFetcherAuthorization *authorization; +``` + +Then, initiate the authorization request. By using the +`authStateByPresentingAuthorizationRequest` method, the OAuth token +exchange will be performed automatically, and everything will be protected with +PKCE (if the server supports it). + +```objc +// builds authentication request +OIDAuthorizationRequest *request = + [[OIDAuthorizationRequest alloc] initWithConfiguration:configuration + clientId:kClientID + clientSecret:kClientSecret + scopes:@[OIDScopeOpenID, OIDScopeProfile] + redirectURL:redirectURI + responseType:OIDResponseTypeCode + additionalParameters:nil]; +// performs authentication request +self.appDelegate.currentAuthorizationFlow = + [OIDAuthState authStateByPresentingAuthorizationRequest:request + callback:^(OIDAuthState *_Nullable authState, + NSError *_Nullable error) { + if (authState) { + // Creates the GTMAppAuthFetcherAuthorization from the OIDAuthState. + GTMAppAuthFetcherAuthorization *authorization = + [[GTMAppAuthFetcherAuthorization alloc] initWithAuthState:authState]; + + self.authorization = authorization; + NSLog(@"Got authorization tokens. Access token: %@", + authState.lastTokenResponse.accessToken); + } else { + NSLog(@"Authorization error: %@", [error localizedDescription]); + self.authorization = nil; + } +}]; +``` + +### Handling the Redirect + +The authorization response URL is returned to the app via the platform-specific +application delegate method, so you need to pipe this through to the current +authorization session (created in the previous session). + +#### macOS Custom URI Scheme Redirect Example + +```objc +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { + // Other app initialization code ... + + // Register for GetURL events. + NSAppleEventManager *appleEventManager = + [NSAppleEventManager sharedAppleEventManager]; + [appleEventManager setEventHandler:self + andSelector:@selector(handleGetURLEvent:withReplyEvent:) + forEventClass:kInternetEventClass + andEventID:kAEGetURL]; +} + +- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event + withReplyEvent:(NSAppleEventDescriptor *)replyEvent { + NSString *URLString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue]; + NSURL *URL = [NSURL URLWithString:URLString]; + [_currentAuthorizationFlow resumeExternalUserAgentFlowWithURL:URL]; +} +``` + +#### iOS Custom URI Scheme Redirect Example + +```objc +- (BOOL)application:(UIApplication *)app + openURL:(NSURL *)url + options:(NSDictionary *)options { + // Sends the URL to the current authorization flow (if any) which will + // process it if it relates to an authorization response. + if ([_currentAuthorizationFlow resumeExternalUserAgentFlowWithURL:url]) { + _currentAuthorizationFlow = nil; + return YES; + } + + // Your additional URL handling (if any) goes here. + + return NO; +} +``` + +### Making API Calls + +The goal of GTMAppAuth is to enable you to authorize HTTP requests with fresh +tokens following the Session Fetcher pattern, which you can do like so: + +```objc +// Creates a GTMSessionFetcherService with the authorization. +// Normally you would save this service object and re-use it for all REST API calls. +GTMSessionFetcherService *fetcherService = [[GTMSessionFetcherService alloc] init]; +fetcherService.authorizer = self.authorization; + +// Creates a fetcher for the API call. +NSURL *userinfoEndpoint = [NSURL URLWithString:@"https://www.googleapis.com/oauth2/v3/userinfo"]; +GTMSessionFetcher *fetcher = [fetcherService fetcherWithURL:userinfoEndpoint]; +[fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { + // Checks for an error. + if (error) { + // OIDOAuthTokenErrorDomain indicates an issue with the authorization. + if ([error.domain isEqual:OIDOAuthTokenErrorDomain]) { + self.authorization = nil; + NSLog(@"Authorization error during token refresh, clearing state. %@", + error); + // Other errors are assumed transient. + } else { + NSLog(@"Transient error during token refresh. %@", error); + } + return; + } + + // Parses the JSON response. + NSError *jsonError = nil; + id jsonDictionaryOrArray = + [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError]; + + // JSON error. + if (jsonError) { + NSLog(@"JSON decoding error %@", jsonError); + return; + } + + // Success response! + NSLog(@"Success: %@", jsonDictionaryOrArray); +}]; +``` + +### Saving to the Keychain + +You can easily save `GTMAppAuthFetcherAuthorization` instances to the Keychain using +the included `GTMAppAuthFetcherAuthorization+Keychain` category. + +```objc +// Save to Keychain +[GTMAppAuthFetcherAuthorization saveAuthorization:_authorization + toKeychainForName:kGTMAppAuthExampleAuthorizerKey]; + +// Restore from Keychain +GTMAppAuthFetcherAuthorization* authorization = + [GTMAppAuthFetcherAuthorization authorizationFromKeychainForName:kGTMAppAuthExampleAuthorizerKey]; + +// Remove from Keychain +[GTMAppAuthFetcherAuthorization + removeAuthorizationFromKeychainForName:kGTMAppAuthExampleAuthorizerKey]; +``` + +#### Keychain Storage + +`GTMAppAuthFetcherAuthorization` instances are stored using Keychain items of the +[`kSecClassGenericPassword`](https://developer.apple.com/documentation/security/ksecclassgenericpassword?language=objc) +class with a [`kSecAttrAccount`](https://developer.apple.com/documentation/security/ksecattraccount?language=objc) +value of "OAuth" and a developer supplied value for [`kSecAttrService`](https://developer.apple.com/documentation/security/ksecattrservice?language=objc). +For this use of generic password items, the combination of account and service +values acts as the +[primary key](https://developer.apple.com/documentation/security/1542001-security_framework_result_codes/errsecduplicateitem?language=objc) +of the Keychain items. The +[`kSecAttrAccessible`](https://developer.apple.com/documentation/security/ksecattraccessible?language=objc) +key is set to +[`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`](https://developer.apple.com/documentation/security/ksecattraccessibleafterfirstunlockthisdeviceonly?language=objc) +in order to allow background access after initial device unlock following a +restart. A [keyed archive](https://developer.apple.com/documentation/foundation/nskeyedarchiver?language=objc) +representation of the relevant `GTMAppAuthFetcherAuthorization` instance is supplied as the value for +[`kSecValueData`](https://developer.apple.com/documentation/security/ksecvaluedata?language=objc) +and this is encrypted and stored by +[Keychain Services](https://developer.apple.com/documentation/security/keychain_services?language=objc). + +For macOS, two Keychain storage options are available: the traditional file-based Keychain storage +which uses access control lists and the more modern [data protection keychain storage](https://developer.apple.com/documentation/security/ksecusedataprotectionkeychain?language=objc) +which uses Keychain access control groups. By default, GTMAppAuth uses the file-based Keychain storage on macOS. You may opt into using data protection keychain storage by using the parameter +`useDataProtectionKeychain:YES` in your method calls. Note that Keychain items stored via one +storage type will not be available via the other and macOS apps that choose to use the data +protection Keychain will need to be signed in order for Keychain operations to succeed. + +#### GTMOAuth2 Compatibility + +To assist the migration from GTMOAuth2 to GTMAppAuth, GTMOAuth2-compatible +Keychain methods are provided in `GTMOAuth2KeychainCompatibility`. + +```objc +// Restore from Keychain +GTMAppAuthFetcherAuthorization *auth = + [GTMOAuth2KeychainCompatibility authForGoogleFromKeychainForName:kKeychainItemName + clientID:clientID + clientSecret:clientSecret]; + +// Remove from Keychain +[GTMOAuth2KeychainCompatibility removeAuthFromKeychainForName:kKeychainItemName]; +``` + +You can also save to GTMOAuth2 format, though this is discouraged (you +should save in GTMAppAuth format as described above). + +```objc +// Save to Keychain +[GTMOAuth2KeychainCompatibility saveAuthToKeychainForName:kKeychainItemName + authentication:authorization]; +``` + +## Included Samples + +Try out one of the included sample apps under [Examples](Examples). In the +apps folder run `pod install`, then open the resulting `xcworkspace` file. + +Be sure to follow the instructions in +[Example-iOS/README.md](Examples/Example-iOS/README.md) or +[Example-macOS/README.md](Examples/Example-macOS/README.md) to configure +your own OAuth client ID for use with the example. + +## Differences with GTMOAuth2 + +### Authorization Method + +GTMAppAuth uses the browser to present the authorization request, while +GTMOAuth2 uses an embedded web-view. Migrating to GTMAppAuth will require you +to change how you authorize the user. Follow the instructions above to get the +authorization. You can then create a `GTMAppAuthFetcherAuthorization` object +with the `initWithAuthState:authState` initializer. + +Once you have the `GTMAppAuthFetcherAuthorization` you can continue to make REST +calls as before. + +### Error Handling + +GTMAppAuth's error handling is also different. There are no notifications, +instead you need to inspect NSError in the callback. If the error domain is +`OIDOAuthTokenErrorDomain`, it indicates an authorization error, you should +clear your authorization state and consider prompting the user to authorize +again. Other errors are generally considered transient, meaning that you should +retry the request after a delay. + +### Serialization + +The serialization format is different between GTMOAuth2 and GTMAppAuth, though +we have methods to help you migrate from one to the other without losing any +data. + +## Migrating from GTMOAuth2 + +### OAuth Client Registration + +Typically, GTMOAuth2 clients are registered with Google as type "Other". This is +correct for macOS, but on iOS clients should be registered with the type "iOS". + +If you're migrating an iOS client, in the *same project as your existing client*, +[register a new iOS client](https://console.developers.google.com/apis/credentials?project=_) +to be used with GTMAppAuth. + +### Changing your Authorization Flows + +Both GTMOAuth2 and GTMAppAuth support the `GTMFetcherAuthorizationProtocol` +allowing you to use the authorization with the session fetcher. Where you +previously had a property like `GTMOAuth2Authentication *authorization` change the +type to reference the protocol instead, i.e.: +`id authorization`. This allows you to switch +the authorization implementation under the hood to GTMAppAuth. + +Then, follow the instructions above to replace authorization request +(where you ask the user to grant access) with the GTMAppAuth approach. If you +created a new OAuth client, use that for these requests. + +### Serialization & Migrating Existing Grants + +GTMAppAuth has a new data format and APIs for serialization. Unlike +GTMOAuth2, GTMAppAuth serializes the configuration and history of the +authorization, including the client id, and a record of the authorization +request that resulted in the authorization grant. + +The client ID used for GTMAppAuth is [different](#oauth-client-registration) to +the one used for GTMOAuth2. In order to keep track of the different client ids +used for new and old grants, it's recommended to migrate to the new +serialization format, which will store that for you. +[GTMOAuth2-compatible serialization](#gtmoauth2-compatible-serialization) is +also offered, but not fully supported. + +Change how you serialize your `authorization` object using the new methods +using the following example. + +```objc +// Serialize to Keychain +[GTMAppAuthFetcherAuthorization saveAuthorization:(GTMAppAuthFetcherAuthorization *)authorization + toKeychainForName:kNewKeychainName]; +``` + +Be sure to use a *new* name for the keychain. Don't reuse your old one! + +For deserializing, we can preserve all existing grants (so users who authorized +your app in GTMOAuth2 don't have to authorize it again). Remember that when +deserializing the *old* data you need to use your *old* keychain name, and +the old client id and client secret (if those changed), and that when +serializing to the *new* format, use the *new* keychain name. +Once again, pay particular care to use the old details when deserializing the +GTMOAuth2 keychain, and the new details for all other GTMAppAuth calls. + +Keychain migration example: + +```objc +// Attempt to deserialize from Keychain in GTMAppAuth format. +id authorization = + [GTMAppAuthFetcherAuthorization authorizationFromKeychainForName:kNewKeychainName]; + +// If no data found in the new format, try to deserialize data from GTMOAuth2 +if (!authorization) { + // Tries to load the data serialized by GTMOAuth2 using old keychain name. + // If you created a new client id, be sure to use the *previous* client id and secret here. + authorization = + [GTMOAuth2KeychainCompatibility authForGoogleFromKeychainForName:kPreviousKeychainName + clientID:kPreviousClientID + clientSecret:kPreviousClientSecret]; + if (authorization) { + // Remove previously stored GTMOAuth2-formatted data. + [GTMOAuth2KeychainCompatibility removeAuthFromKeychainForName:kPreviousKeychainName]; + // Serialize to Keychain in GTMAppAuth format. + [GTMAppAuthFetcherAuthorization saveAuthorization:(GTMAppAuthFetcherAuthorization *)authorization + toKeychainForName:kNewKeychainName]; + } +} +``` diff --git a/Pods/GTMSessionFetcher/README.md b/Pods/GTMSessionFetcher/README.md index 478efde..ae8ff04 100644 --- a/Pods/GTMSessionFetcher/README.md +++ b/Pods/GTMSessionFetcher/README.md @@ -3,7 +3,7 @@ **Project site**
**Discussion group** -[![Build Status](https://travis-ci.org/google/gtm-session-fetcher.svg?branch=master)](https://travis-ci.org/google/gtm-session-fetcher) +[![Build Status](https://github.com/google/gtm-session-fetcher/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/google/gtm-session-fetcher/actions/workflows/main.yml) `GTMSessionFetcher` makes it easy for Cocoa applications to perform http operations. The fetcher is implemented as a wrapper on `NSURLSession`, so its diff --git a/Pods/GTMSessionFetcher/Source/GTMGatherInputStream.h b/Pods/GTMSessionFetcher/Source/GTMGatherInputStream.h index ec3c012..52ee501 100644 --- a/Pods/GTMSessionFetcher/Source/GTMGatherInputStream.h +++ b/Pods/GTMSessionFetcher/Source/GTMGatherInputStream.h @@ -24,16 +24,17 @@ #import +// These will be removed in the near future, folks should move off of them. #ifndef GTM_NONNULL - #if defined(__has_attribute) - #if __has_attribute(nonnull) - #define GTM_NONNULL(x) __attribute__((nonnull x)) - #else - #define GTM_NONNULL(x) - #endif - #else - #define GTM_NONNULL(x) - #endif +#if defined(__has_attribute) +#if __has_attribute(nonnull) +#define GTM_NONNULL(x) __attribute__((nonnull x)) +#else +#define GTM_NONNULL(x) +#endif +#else +#define GTM_NONNULL(x) +#endif #endif // Avoid multiple declaration of this class. @@ -45,7 +46,7 @@ @interface GTMGatherInputStream : NSInputStream -+ (NSInputStream *)streamWithArray:(NSArray *)dataArray GTM_NONNULL((1)); ++ (nonnull instancetype)streamWithArray:(nonnull NSArray *)dataArray; @end diff --git a/Pods/GTMSessionFetcher/Source/GTMGatherInputStream.m b/Pods/GTMSessionFetcher/Source/GTMGatherInputStream.m index 0f65310..7213e2c 100644 --- a/Pods/GTMSessionFetcher/Source/GTMGatherInputStream.m +++ b/Pods/GTMSessionFetcher/Source/GTMGatherInputStream.m @@ -20,18 +20,18 @@ #import "GTMGatherInputStream.h" @implementation GTMGatherInputStream { - NSArray *_dataArray; // NSDatas that should be "gathered" and streamed. + NSArray *_dataArray; // NSDatas that should be "gathered" and streamed. NSUInteger _arrayIndex; // Index in the array of the current NSData. - long long _dataOffset; // Offset in the current NSData we are processing. + long long _dataOffset; // Offset in the current NSData we are processing. NSStreamStatus _streamStatus; id __weak _delegate; // Stream delegate, defaults to self. } -+ (NSInputStream *)streamWithArray:(NSArray *)dataArray { - return [(GTMGatherInputStream *)[self alloc] initWithArray:dataArray]; ++ (instancetype)streamWithArray:(NSArray *)dataArray { + return [[self alloc] initWithDataArray:dataArray]; } -- (instancetype)initWithArray:(NSArray *)dataArray { +- (instancetype)initWithDataArray:(NSArray *)dataArray { self = [super init]; if (self) { _dataArray = dataArray; @@ -108,7 +108,7 @@ NSUInteger dataBytesLeft = dataLen - (NSUInteger)_dataOffset; NSUInteger bytesToCopy = MIN(bytesRemaining, dataBytesLeft); - NSRange range = NSMakeRange((NSUInteger) _dataOffset, bytesToCopy); + NSRange range = NSMakeRange((NSUInteger)_dataOffset, bytesToCopy); [data getBytes:(buffer + bytesRead) range:range]; @@ -168,7 +168,7 @@ _arrayIndex = 0; _dataOffset = absoluteOffset; for (NSData *data in _dataArray) { - long long dataLen = (long long) data.length; + long long dataLen = (long long)data.length; if (dataLen > _dataOffset) { break; } diff --git a/Pods/GTMSessionFetcher/Source/GTMMIMEDocument.h b/Pods/GTMSessionFetcher/Source/GTMMIMEDocument.h index 451e132..b53d02c 100644 --- a/Pods/GTMSessionFetcher/Source/GTMMIMEDocument.h +++ b/Pods/GTMSessionFetcher/Source/GTMMIMEDocument.h @@ -22,34 +22,33 @@ #import +// These will be removed in the near future, folks should move off of them. #ifndef GTM_NONNULL - #if defined(__has_attribute) - #if __has_attribute(nonnull) - #define GTM_NONNULL(x) __attribute__((nonnull x)) - #else - #define GTM_NONNULL(x) - #endif - #else - #define GTM_NONNULL(x) - #endif +#if defined(__has_attribute) +#if __has_attribute(nonnull) +#define GTM_NONNULL(x) __attribute__((nonnull x)) +#else +#define GTM_NONNULL(x) +#endif +#else +#define GTM_NONNULL(x) +#endif #endif - #ifndef GTM_DECLARE_GENERICS - #if __has_feature(objc_generics) - #define GTM_DECLARE_GENERICS 1 - #else - #define GTM_DECLARE_GENERICS 0 - #endif +#if __has_feature(objc_generics) +#define GTM_DECLARE_GENERICS 1 +#else +#define GTM_DECLARE_GENERICS 0 +#endif #endif - #ifndef GTM_NSArrayOf - #if GTM_DECLARE_GENERICS - #define GTM_NSArrayOf(value) NSArray - #define GTM_NSDictionaryOf(key, value) NSDictionary - #else - #define GTM_NSArrayOf(value) NSArray - #define GTM_NSDictionaryOf(key, value) NSDictionary - #endif // GTM_DECLARE_GENERICS +#if GTM_DECLARE_GENERICS +#define GTM_NSArrayOf(value) NSArray +#define GTM_NSDictionaryOf(key, value) NSDictionary +#else +#define GTM_NSArrayOf(value) NSArray +#define GTM_NSDictionaryOf(key, value) NSDictionary +#endif // GTM_DECLARE_GENERICS #endif // GTM_NSArrayOf @@ -58,12 +57,13 @@ // +[GTMMIMEDocument MIMEPartsWithBoundary:data:] returns an array of these. @interface GTMMIMEDocumentPart : NSObject -@property(nonatomic, readonly) GTM_NSDictionaryOf(NSString *, NSString *) *headers; -@property(nonatomic, readonly) NSData *headerData; -@property(nonatomic, readonly) NSData *body; +@property(nonatomic, readonly, nullable) NSDictionary *headers; +@property(nonatomic, readonly, nonnull) NSData *headerData; +@property(nonatomic, readonly, nonnull) NSData *body; @property(nonatomic, readonly) NSUInteger length; -+ (instancetype)partWithHeaders:(NSDictionary *)headers body:(NSData *)body; ++ (nonnull instancetype)partWithHeaders:(nullable NSDictionary *)headers + body:(nonnull NSData *)body; @end @@ -73,24 +73,24 @@ // // When creating a MIME document from parts, this is typically calculated // automatically after all parts have been added. -@property(nonatomic, copy) NSString *boundary; +@property(nonatomic, copy, null_resettable) NSString *boundary; #pragma mark - Methods for Creating a MIME Document -+ (instancetype)MIMEDocument; ++ (nonnull instancetype)MIMEDocument; // Adds a new part to this mime document with the given headers and body. // The headers keys and values should be NSStrings. // Adding a part may cause the boundary string to change. -- (void)addPartWithHeaders:(GTM_NSDictionaryOf(NSString *, NSString *) *)headers - body:(NSData *)body GTM_NONNULL((1,2)); +- (void)addPartWithHeaders:(nonnull NSDictionary *)headers + body:(nonnull NSData *)body; // An inputstream that can be used to efficiently read the contents of the MIME document. // // Any parameter may be null if the result is not wanted. -- (void)generateInputStream:(NSInputStream **)outStream - length:(unsigned long long *)outLength - boundary:(NSString **)outBoundary; +- (void)generateInputStream:(NSInputStream *_Nullable *_Nullable)outStream + length:(unsigned long long *_Nullable)outLength + boundary:(NSString *_Nullable *_Nullable)outBoundary; // A dispatch_data_t with the contents of the MIME document. // @@ -98,12 +98,12 @@ // may be cast directly to NSData *. // // Any parameter may be null if the result is not wanted. -- (void)generateDispatchData:(dispatch_data_t *)outDispatchData - length:(unsigned long long *)outLength - boundary:(NSString **)outBoundary; +- (void)generateDispatchData:(dispatch_data_t _Nullable *_Nullable)outDispatchData + length:(unsigned long long *_Nullable)outLength + boundary:(NSString *_Nullable *_Nullable)outBoundary; // Utility method for making a header section, including trailing newlines. -+ (NSData *)dataWithHeaders:(GTM_NSDictionaryOf(NSString *, NSString *) *)headers; ++ (nonnull NSData *)dataWithHeaders:(nullable NSDictionary *)headers; #pragma mark - Methods for Parsing a MIME Document @@ -111,8 +111,14 @@ // // Returns an array of GTMMIMEDocumentParts. Returns nil if no part can // be found. -+ (GTM_NSArrayOf(GTMMIMEDocumentPart *) *)MIMEPartsWithBoundary:(NSString *)boundary - data:(NSData *)fullDocumentData; +// +// NOTE: if MIME parts in the data are malformed, the resulting array may +// still contain GTMMIMEDocumentParts in the position where the malformed +// parts appeared; these parts will have an empty NSData body and nil +// headers. ++ (nullable NSArray *)MIMEPartsWithBoundary:(nonnull NSString *)boundary + data:(nonnull NSData *) + fullDocumentData; // Utility method for efficiently searching possibly discontiguous NSData // for occurrences of target byte. This method does not "flatten" an NSData @@ -120,29 +126,29 @@ // // The byte offsets of non-overlapping occurrences of the target are returned as // NSNumbers in the array. -+ (void)searchData:(NSData *)data - targetBytes:(const void *)targetBytes ++ (void)searchData:(nonnull NSData *)data + targetBytes:(const void *_Nonnull)targetBytes targetLength:(NSUInteger)targetLength - foundOffsets:(GTM_NSArrayOf(NSNumber *) **)outFoundOffsets; + foundOffsets:(NSArray *_Nullable *_Nonnull)outFoundOffsets; // Utility method to parse header bytes into an NSDictionary. -+ (GTM_NSDictionaryOf(NSString *, NSString *) *)headersWithData:(NSData *)data; ++ (nullable NSDictionary *)headersWithData:(nonnull NSData *)data; // ------ UNIT TESTING ONLY BELOW ------ // Internal methods, exposed for unit testing only. - (void)seedRandomWith:(u_int32_t)seed; -+ (NSUInteger)findBytesWithNeedle:(const unsigned char *)needle ++ (NSUInteger)findBytesWithNeedle:(const unsigned char *_Nonnull)needle needleLength:(NSUInteger)needleLength - haystack:(const unsigned char *)haystack + haystack:(const unsigned char *_Nonnull)haystack haystackLength:(NSUInteger)haystackLength - foundOffset:(NSUInteger *)foundOffset; + foundOffset:(NSUInteger *_Nonnull)foundOffset; -+ (void)searchData:(NSData *)data - targetBytes:(const void *)targetBytes - targetLength:(NSUInteger)targetLength - foundOffsets:(GTM_NSArrayOf(NSNumber *) **)outFoundOffsets - foundBlockNumbers:(GTM_NSArrayOf(NSNumber *) **)outFoundBlockNumbers; ++ (void)searchData:(nonnull NSData *)data + targetBytes:(const void *_Nonnull)targetBytes + targetLength:(NSUInteger)targetLength + foundOffsets:(NSArray *_Nullable *_Nonnull)outFoundOffsets + foundBlockNumbers:(NSArray *_Nullable *_Nonnull)outFoundBlockNumbers; @end diff --git a/Pods/GTMSessionFetcher/Source/GTMMIMEDocument.m b/Pods/GTMSessionFetcher/Source/GTMMIMEDocument.m index f4460c5..10db605 100644 --- a/Pods/GTMSessionFetcher/Source/GTMMIMEDocument.m +++ b/Pods/GTMSessionFetcher/Source/GTMMIMEDocument.m @@ -25,7 +25,7 @@ @interface GTMGatherInputStream : NSInputStream -+ (NSInputStream *)streamWithArray:(NSArray *)dataArray GTM_NONNULL((1)); ++ (nonnull instancetype)streamWithArray:(nonnull NSArray *)dataArray; @end #endif // GTM_GATHERINPUTSTREAM_DECLARED @@ -55,9 +55,7 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger NSData *_bodyData; } -@synthesize headers = _headers, - headerData = _headerData, - body = _bodyData; +@synthesize headers = _headers, headerData = _headerData, body = _bodyData; @dynamic length; @@ -83,7 +81,7 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger // null values. NSData *headerData = self.headerData; return (FindBytes(bytes, length, headerData.bytes, headerData.length, NULL) == length || - FindBytes(bytes, length, _bodyData.bytes, _bodyData.length, NULL) == length); + FindBytes(bytes, length, _bodyData.bytes, _bodyData.length, NULL) == length); } - (NSData *)headerData { @@ -102,16 +100,16 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger } - (NSString *)description { - return [NSString stringWithFormat:@"%@ %p (headers %lu keys, body %lu bytes)", - [self class], self, (unsigned long)_headers.count, - (unsigned long)_bodyData.length]; + return [NSString stringWithFormat:@"%@ %p (headers %lu keys, body %lu bytes)", [self class], self, + (unsigned long)_headers.count, (unsigned long)_bodyData.length]; } -- (BOOL)isEqual:(GTMMIMEDocumentPart *)other { +- (BOOL)isEqual:(id)other { if (self == other) return YES; if (![other isKindOfClass:[GTMMIMEDocumentPart class]]) return NO; - return ((_bodyData == other->_bodyData || [_bodyData isEqual:other->_bodyData]) - && (_headers == other->_headers || [_headers isEqual:other->_headers])); + GTMMIMEDocumentPart *otherPart = (GTMMIMEDocumentPart *)other; + return ((_bodyData == otherPart->_bodyData || [_bodyData isEqual:otherPart->_bodyData]) && + (_headers == otherPart->_headers || [_headers isEqual:otherPart->_headers])); } - (NSUInteger)hash { @@ -121,10 +119,10 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger @end @implementation GTMMIMEDocument { - NSMutableArray *_parts; // Ordered array of GTMMIMEDocumentParts. - unsigned long long _length; // Length in bytes of the document. + NSMutableArray *_parts; // Ordered array of GTMMIMEDocumentParts. + unsigned long long _length; // Length in bytes of the document. NSString *_boundary; - u_int32_t _randomSeed; // For testing. + u_int32_t _randomSeed; // For testing. } + (instancetype)MIMEDocument { @@ -140,8 +138,8 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger } - (NSString *)description { - return [NSString stringWithFormat:@"%@ %p (%lu parts)", - [self class], self, (unsigned long)_parts.count]; + return [NSString + stringWithFormat:@"%@ %p (%lu parts)", [self class], self, (unsigned long)_parts.count]; } #pragma mark - Joining Parts @@ -188,7 +186,6 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger const int maxTries = 10; // Arbitrarily chosen maximum attempts. for (int tries = 0; tries < maxTries; ++tries) { - NSData *data = [_boundary dataUsingEncoding:NSUTF8StringEncoding]; const void *dataBytes = data.bytes; NSUInteger dataLen = data.length; @@ -198,7 +195,7 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger if (didCollide) break; } - if (!didCollide) break; // We're fine, no more attempts needed. + if (!didCollide) break; // We're fine, no more attempts needed. // Try again with a random number appended. _boundary = [NSString stringWithFormat:@"%@_%08x", kBaseBoundary, [self random]]; @@ -219,7 +216,6 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger - (void)generateDataArray:(NSMutableArray *)dataArray length:(unsigned long long *)outLength boundary:(NSString **)outBoundary { - // The input stream is of the form: // --boundary // [part_1_headers] @@ -252,7 +248,7 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger [dataArray addObject:endBoundaryData]; length += endBoundaryData.length; - if (outLength) *outLength = length; + if (outLength) *outLength = length; if (outBoundary) *outBoundary = boundary; } @@ -260,9 +256,7 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger length:(unsigned long long *)outLength boundary:(NSString **)outBoundary { NSMutableArray *dataArray = outStream ? [NSMutableArray array] : nil; - [self generateDataArray:dataArray - length:outLength - boundary:outBoundary]; + [self generateDataArray:dataArray length:outLength boundary:outBoundary]; if (outStream) { Class streamClass = NSClassFromString(@"GTMGatherInputStream"); @@ -276,9 +270,7 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger length:(unsigned long long *)outLength boundary:(NSString **)outBoundary { NSMutableArray *dataArray = outDispatchData ? [NSMutableArray array] : nil; - [self generateDataArray:dataArray - length:outLength - boundary:outBoundary]; + [self generateDataArray:dataArray length:outLength boundary:outBoundary]; if (outDispatchData) { // Create an empty data accumulator. @@ -290,9 +282,9 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger __block NSData *immutablePartData = [partData copy]; dispatch_data_t newDataPart = dispatch_data_create(immutablePartData.bytes, immutablePartData.length, bgQueue, ^{ - // We want the data retained until this block executes. - immutablePartData = nil; - }); + // We want the data retained until this block executes. + immutablePartData = nil; + }); if (dataAccumulator == nil) { // First part. @@ -308,7 +300,7 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger + (NSData *)dataWithHeaders:(NSDictionary *)headers { // Generate the header data by coalescing the dictionary as lines of "key: value\r\n". - NSMutableString* headerString = [NSMutableString string]; + NSMutableString *headerString = [NSMutableString string]; // Sort the header keys so we have a deterministic order for unit testing. SEL sortSel = @selector(caseInsensitiveCompare:); @@ -340,8 +332,7 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger #pragma mark - Separating Parts -+ (NSArray *)MIMEPartsWithBoundary:(NSString *)boundary - data:(NSData *)fullDocumentData { ++ (NSArray *)MIMEPartsWithBoundary:(NSString *)boundary data:(NSData *)fullDocumentData { // In MIME documents, the boundary is preceded by CRLF and two dashes, and followed // at the end by two dashes. NSData *boundaryData = [boundary dataUsingEncoding:NSUTF8StringEncoding]; @@ -367,9 +358,9 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger } else { // A no-op self invocation on fullDocumentData will keep it retained until the block is invoked. dispatch_queue_t bgQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - dataWrapper = dispatch_data_create(fullDocumentData.bytes, - fullDocumentData.length, - bgQueue, ^{ [fullDocumentData self]; }); + dataWrapper = dispatch_data_create(fullDocumentData.bytes, fullDocumentData.length, bgQueue, ^{ + [fullDocumentData self]; + }); } NSMutableArray *parts; NSInteger previousBoundaryOffset = -1; @@ -394,15 +385,13 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger if (previousPartDataLength < 2) { // The preceding part was too short to be useful. #if DEBUG - NSLog(@"MIME part %ld has %ld bytes", (long)partCounter - 1, - (long)previousPartDataLength); + NSLog(@"MIME part %ld has %ld bytes", (long)partCounter - 1, (long)previousPartDataLength); #endif } else { if (!parts) parts = [NSMutableArray array]; - dispatch_data_t partData = - dispatch_data_create_subrange(dataWrapper, - (size_t)previousPartDataStartOffset, (size_t)previousPartDataLength); + dispatch_data_t partData = dispatch_data_create_subrange( + dataWrapper, (size_t)previousPartDataStartOffset, (size_t)previousPartDataLength); // Scan the part data for the separator between headers and body. After the CRLF, // either the headers start immediately, or there's another CRLF and there are no headers. // @@ -412,12 +401,18 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger // and map that two-byte subrange. const void *partDataBuffer; size_t partDataBufferSize; + // The clang included with Xcode 13.3 betas added a -Wunused-but-set-variable warning, + // which doesn't (yet) skip variables annotated with objc_precie_lifetime. Since that + // warning is not available in all Xcodes, turn off the -Wunused warning group entirely. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunused" dispatch_data_t mappedPartData NS_VALID_UNTIL_END_OF_SCOPE = dispatch_data_create_map(partData, &partDataBuffer, &partDataBufferSize); +#pragma clang diagnostic pop dispatch_data_t bodyData; NSDictionary *headers; - BOOL hasAnotherCRLF = (((char *)partDataBuffer)[0] == '\r' - && ((char *)partDataBuffer)[1] == '\n'); + BOOL hasAnotherCRLF = + (((char *)partDataBuffer)[0] == '\r' && ((char *)partDataBuffer)[1] == '\n'); mappedPartData = nil; if (hasAnotherCRLF) { @@ -442,14 +437,18 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger dispatch_data_create_subrange(partData, 0, (size_t)headerSeparatorOffset); headers = [self headersWithData:(NSData *)headerData]; - bodyData = dispatch_data_create_subrange(partData, (size_t)headerSeparatorOffset + 4, + bodyData = dispatch_data_create_subrange( + partData, (size_t)headerSeparatorOffset + 4, (size_t)(previousPartDataLength - (headerSeparatorOffset + 4))); numberOfPartsWithHeaders++; } // crlfOffsets.count == 0 - } // hasAnotherCRLF - GTMMIMEDocumentPart *part = [GTMMIMEDocumentPart partWithHeaders:headers - body:(NSData *)bodyData]; + } // hasAnotherCRLF + + // bodyData being nil reflects malformed data; if so provide an empty + // NSData object rather than pass nil to a nonnull parameter. + GTMMIMEDocumentPart *part = + [GTMMIMEDocumentPart partWithHeaders:headers body:(NSData *)bodyData ?: [NSData data]]; [parts addObject:part]; } // previousPartDataLength < 2 previousBoundaryOffset = currentBoundaryOffset.integerValue; @@ -461,10 +460,7 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger NSUInteger length = fullDocumentData.length; if (length > 20) { // Reasonably long. NSMutableArray *foundCRLFs; - [self searchData:fullDocumentData - targetBytes:"\r\n" - targetLength:2 - foundOffsets:&foundCRLFs]; + [self searchData:fullDocumentData targetBytes:"\r\n" targetLength:2 foundOffsets:&foundCRLFs]; if (foundCRLFs.count == 0) { // Parts were logged above (due to lacking header separators.) NSLog(@"Warning: MIME document lacks any headers (may have wrong line endings)"); @@ -484,21 +480,20 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger + (void)searchData:(NSData *)data targetBytes:(const void *)targetBytes targetLength:(NSUInteger)targetLength - foundOffsets:(GTM_NSArrayOf(NSNumber *) **)outFoundOffsets { + foundOffsets:(NSArray **)outFoundOffsets { NSMutableArray *foundOffsets = [NSMutableArray array]; SearchDataForBytes(data, targetBytes, targetLength, foundOffsets, NULL); *outFoundOffsets = foundOffsets; } - // This version of searchData: also returns the block numbers (0-based) where the // target was found, used for testing that the supplied dispatch_data buffer // has not been flattened. + (void)searchData:(NSData *)data - targetBytes:(const void *)targetBytes - targetLength:(NSUInteger)targetLength - foundOffsets:(GTM_NSArrayOf(NSNumber *) **)outFoundOffsets - foundBlockNumbers:(GTM_NSArrayOf(NSNumber *) **)outFoundBlockNumbers { + targetBytes:(const void *)targetBytes + targetLength:(NSUInteger)targetLength + foundOffsets:(NSArray **)outFoundOffsets + foundBlockNumbers:(NSArray **)outFoundBlockNumbers { NSMutableArray *foundOffsets = [NSMutableArray array]; NSMutableArray *foundBlockNumbers = [NSMutableArray array]; @@ -513,9 +508,7 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger __block NSInteger priorPartialMatchStartingBlockNumber = -1; __block NSInteger blockNumber = -1; - [data enumerateByteRangesUsingBlock:^(const void *bytes, - NSRange byteRange, - BOOL *stop) { + [data enumerateByteRangesUsingBlock:^(const void *bytes, NSRange byteRange, BOOL *stop) { // Search for the first character in the current range. const void *ptr = bytes; NSInteger remainingInCurrentRange = (NSInteger)byteRange.length; @@ -524,9 +517,9 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger if (priorPartialMatchAmount > 0) { NSUInteger amountRemainingToBeMatched = targetLength - priorPartialMatchAmount; NSUInteger remainingFoundOffset; - NSUInteger amountMatched = FindBytes(targetBytes + priorPartialMatchAmount, - amountRemainingToBeMatched, - ptr, (NSUInteger)remainingInCurrentRange, &remainingFoundOffset); + NSUInteger amountMatched = + FindBytes(targetBytes + priorPartialMatchAmount, amountRemainingToBeMatched, ptr, + (NSUInteger)remainingInCurrentRange, &remainingFoundOffset); if (amountMatched == 0 || remainingFoundOffset > 0) { // No match of the rest of the prior partial match in this range. } else if (amountMatched < amountRemainingToBeMatched) { @@ -589,9 +582,9 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger NSCharacterSet *newlineCharacters = [NSCharacterSet newlineCharacterSet]; NSString *key; NSString *value; - while ([scanner scanUpToString:@":" intoString:&key] - && [scanner scanString:@":" intoString:NULL] - && [scanner scanUpToCharactersFromSet:newlineCharacters intoString:&value]) { + while ([scanner scanUpToString:@":" intoString:&key] && + [scanner scanString:@":" intoString:NULL] && + [scanner scanUpToCharactersFromSet:newlineCharacters intoString:&value]) { [headers setObject:value forKey:key]; // Discard the trailing newline. [scanner scanCharactersFromSet:newlineCharacters intoString:NULL]; @@ -605,8 +598,8 @@ static void SearchDataForBytes(NSData *data, const void *targetBytes, NSUInteger // // If the result is less than needleLen, then the beginning of the needle // was found at the end of the haystack. -static NSUInteger FindBytes(const unsigned char* needle, NSUInteger needleLen, - const unsigned char* haystack, NSUInteger haystackLen, +static NSUInteger FindBytes(const unsigned char *needle, NSUInteger needleLen, + const unsigned char *haystack, NSUInteger haystackLen, NSUInteger *foundOffset) { const unsigned char *ptr = haystack; NSInteger remain = (NSInteger)haystackLen; diff --git a/Pods/GTMSessionFetcher/Source/GTMReadMonitorInputStream.h b/Pods/GTMSessionFetcher/Source/GTMReadMonitorInputStream.h index 4e30642..2ea1fb4 100644 --- a/Pods/GTMSessionFetcher/Source/GTMReadMonitorInputStream.h +++ b/Pods/GTMSessionFetcher/Source/GTMReadMonitorInputStream.h @@ -15,24 +15,26 @@ #import +// These will be removed in the near future, folks should move off of them. #ifndef GTM_NONNULL - #if defined(__has_attribute) - #if __has_attribute(nonnull) - #define GTM_NONNULL(x) __attribute__((nonnull x)) - #else - #define GTM_NONNULL(x) - #endif - #else - #define GTM_NONNULL(x) - #endif +#if defined(__has_attribute) +#if __has_attribute(nonnull) +#define GTM_NONNULL(x) __attribute__((nonnull x)) +#else +#define GTM_NONNULL(x) +#endif +#else +#define GTM_NONNULL(x) +#endif #endif +NS_ASSUME_NONNULL_BEGIN @interface GTMReadMonitorInputStream : NSInputStream -+ (instancetype)inputStreamWithStream:(NSInputStream *)input GTM_NONNULL((1)); ++ (nonnull instancetype)inputStreamWithStream:(nonnull NSInputStream *)input; -- (instancetype)initWithStream:(NSInputStream *)input GTM_NONNULL((1)); +- (nonnull instancetype)initWithStream:(nonnull NSInputStream *)input; // The read monitor selector is called when bytes have been read. It should have this signature: // @@ -41,9 +43,11 @@ // length:(int64_t)length; @property(atomic, weak) id readDelegate; -@property(atomic, assign) SEL readSelector; +@property(atomic) SEL readSelector; // Modes for invoking callbacks, when necessary. -@property(atomic, strong) NSArray *runLoopModes; +@property(atomic, copy, nullable) NSArray *runLoopModes; @end + +NS_ASSUME_NONNULL_END diff --git a/Pods/GTMSessionFetcher/Source/GTMReadMonitorInputStream.m b/Pods/GTMSessionFetcher/Source/GTMReadMonitorInputStream.m index 6f95dd5..0f79315 100644 --- a/Pods/GTMSessionFetcher/Source/GTMReadMonitorInputStream.m +++ b/Pods/GTMSessionFetcher/Source/GTMReadMonitorInputStream.m @@ -20,13 +20,12 @@ #import "GTMReadMonitorInputStream.h" @implementation GTMReadMonitorInputStream { - NSInputStream *_inputStream; // Encapsulated stream that does the work. + NSInputStream *_inputStream; // Encapsulated stream that does the work. - NSThread *_thread; // Thread in which this object was created. - NSArray *_runLoopModes; // Modes for calling callbacks, when necessary. + NSThread *_thread; // Thread in which this object was created. + NSArray *_runLoopModes; // Modes for calling callbacks, when necessary. } - @synthesize readDelegate = _readDelegate; @synthesize readSelector = _readSelector; @synthesize runLoopModes = _runLoopModes; @@ -38,7 +37,7 @@ return [NSInputStream methodSignatureForSelector:selector]; } -+ (void)forwardInvocation:(NSInvocation*)invocation { ++ (void)forwardInvocation:(NSInvocation *)invocation { [invocation invokeWithTarget:[NSInputStream class]]; } @@ -46,11 +45,11 @@ return [_inputStream respondsToSelector:selector]; } -- (NSMethodSignature*)methodSignatureForSelector:(SEL)selector { +- (NSMethodSignature *)methodSignatureForSelector:(SEL)selector { return [_inputStream methodSignatureForSelector:selector]; } -- (void)forwardInvocation:(NSInvocation*)invocation { +- (void)forwardInvocation:(NSInvocation *)invocation { [invocation invokeWithTarget:_inputStream]; } @@ -60,7 +59,7 @@ return [[self alloc] initWithStream:input]; } -- (instancetype)initWithStream:(NSInputStream *)input { +- (instancetype)initWithStream:(NSInputStream *)input { self = [super init]; if (self) { _inputStream = input; @@ -103,10 +102,7 @@ waitUntilDone:NO modes:_runLoopModes]; } else { - [self performSelector:sel - onThread:_thread - withObject:data - waitUntilDone:NO]; + [self performSelector:sel onThread:_thread withObject:data waitUntilDone:NO]; } #pragma clang diagnostic pop } @@ -155,11 +151,11 @@ [_inputStream close]; } -- (id)delegate { +- (id)delegate { return [_inputStream delegate]; } -- (void)setDelegate:(id)delegate { +- (void)setDelegate:(id)delegate { [_inputStream setDelegate:delegate]; } diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.h b/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.h index ede21a5..f2c7868 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.h +++ b/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.h @@ -136,6 +136,8 @@ // Alternative HTTP methods, like PUT, and custom headers can be specified by // creating the fetcher with an appropriate NSMutableURLRequest. // +// Custom headers can also be provided per-request via an instance of `GTMFetcherDecoratorProtocol` +// passed to `-[GTMSessionFetcherService addDecorator:]`. // // Caching: // @@ -179,9 +181,8 @@ // Note: cookies set while following redirects will be sent to the server, as // the redirects are followed by the fetcher. // -// To completely disable cookies, similar to setting cookieStorageMethod to -// kGTMHTTPFetcherCookieStorageMethodNone, adjust the session configuration -// appropriately in the fetcher or fetcher service: +// To completely disable cookies, adjust the session configuration appropriately +// in the fetcher or fetcher service: // fetcher.configurationBlock = ^(GTMSessionFetcher *configFetcher, // NSURLSessionConfiguration *config) { // config.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicyNever; @@ -258,7 +259,6 @@ // response(suggestedWillRetry); // }; - #import #if TARGET_OS_IPHONE @@ -271,93 +271,101 @@ // By default it is stripped from non DEBUG builds. Developers can override // this in their project settings. #ifndef STRIP_GTM_FETCH_LOGGING - #if !DEBUG - #define STRIP_GTM_FETCH_LOGGING 1 - #else - #define STRIP_GTM_FETCH_LOGGING 0 - #endif +#if !DEBUG +#define STRIP_GTM_FETCH_LOGGING 1 +#else +#define STRIP_GTM_FETCH_LOGGING 0 +#endif #endif // Logs in debug builds. #ifndef GTMSESSION_LOG_DEBUG - #if DEBUG - #define GTMSESSION_LOG_DEBUG(...) NSLog(__VA_ARGS__) - #else - #define GTMSESSION_LOG_DEBUG(...) do { } while (0) - #endif +#if DEBUG +#define GTMSESSION_LOG_DEBUG(...) NSLog(__VA_ARGS__) +#else +#define GTMSESSION_LOG_DEBUG(...) \ + do { \ + } while (0) +#endif #endif // Asserts in debug builds (or logs in debug builds if GTMSESSION_ASSERT_AS_LOG // or NS_BLOCK_ASSERTIONS are defined.) #ifndef GTMSESSION_ASSERT_DEBUG - #if DEBUG && !defined(NS_BLOCK_ASSERTIONS) && !GTMSESSION_ASSERT_AS_LOG - #undef GTMSESSION_ASSERT_AS_LOG - #define GTMSESSION_ASSERT_AS_LOG 1 - #endif +#if DEBUG && !defined(NS_BLOCK_ASSERTIONS) && !GTMSESSION_ASSERT_AS_LOG +#undef GTMSESSION_ASSERT_AS_LOG +#define GTMSESSION_ASSERT_AS_LOG 1 +#endif - #if DEBUG && !GTMSESSION_ASSERT_AS_LOG - #define GTMSESSION_ASSERT_DEBUG(...) NSAssert(__VA_ARGS__) - #elif DEBUG - #define GTMSESSION_ASSERT_DEBUG(pred, ...) if (!(pred)) { NSLog(__VA_ARGS__); } - #else - #define GTMSESSION_ASSERT_DEBUG(pred, ...) do { } while (0) - #endif +#if DEBUG && !GTMSESSION_ASSERT_AS_LOG +#define GTMSESSION_ASSERT_DEBUG(...) NSAssert(__VA_ARGS__) +#elif DEBUG +#define GTMSESSION_ASSERT_DEBUG(pred, ...) \ + if (!(pred)) { \ + NSLog(__VA_ARGS__); \ + } +#else +#define GTMSESSION_ASSERT_DEBUG(pred, ...) \ + do { \ + } while (0) +#endif #endif // Asserts in debug builds, logs in release builds (or logs in debug builds if // GTMSESSION_ASSERT_AS_LOG is defined.) #ifndef GTMSESSION_ASSERT_DEBUG_OR_LOG - #if DEBUG && !GTMSESSION_ASSERT_AS_LOG - #define GTMSESSION_ASSERT_DEBUG_OR_LOG(...) NSAssert(__VA_ARGS__) - #else - #define GTMSESSION_ASSERT_DEBUG_OR_LOG(pred, ...) if (!(pred)) { NSLog(__VA_ARGS__); } - #endif -#endif - -// Macro useful for examining messages from NSURLSession during debugging. -#if 0 -#define GTM_LOG_SESSION_DELEGATE(...) GTMSESSION_LOG_DEBUG(__VA_ARGS__) +#if DEBUG && !GTMSESSION_ASSERT_AS_LOG +#define GTMSESSION_ASSERT_DEBUG_OR_LOG(...) NSAssert(__VA_ARGS__) #else -#define GTM_LOG_SESSION_DELEGATE(...) +#define GTMSESSION_ASSERT_DEBUG_OR_LOG(pred, ...) \ + if (!(pred)) { \ + NSLog(__VA_ARGS__); \ + } +#endif #endif +// Macro useful for more verbose logging from NSURLSession during debugging. +#if 0 +#define GTMSESSION_LOG_DEBUG_VERBOSE(...) GTMSESSION_LOG_DEBUG(__VA_ARGS__) +#else +#define GTMSESSION_LOG_DEBUG_VERBOSE(...) +#endif + +// These will be removed in the near future, folks should move off of them. #ifndef GTM_NULLABLE - #if __has_feature(nullability) // Available starting in Xcode 6.3 - #define GTM_NULLABLE_TYPE __nullable - #define GTM_NONNULL_TYPE __nonnull - #define GTM_NULLABLE nullable - #define GTM_NONNULL_DECL nonnull // GTM_NONNULL is used by GTMDefines.h - #define GTM_NULL_RESETTABLE null_resettable - - #define GTM_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN - #define GTM_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END - #else - #define GTM_NULLABLE_TYPE - #define GTM_NONNULL_TYPE - #define GTM_NULLABLE - #define GTM_NONNULL_DECL - #define GTM_NULL_RESETTABLE - #define GTM_ASSUME_NONNULL_BEGIN - #define GTM_ASSUME_NONNULL_END - #endif // __has_feature(nullability) +#if __has_feature(nullability) // Available starting in Xcode 6.3 +#define GTM_NULLABLE_TYPE __nullable +#define GTM_NONNULL_TYPE __nonnull +#define GTM_NULLABLE nullable +#define GTM_NONNULL_DECL nonnull // GTM_NONNULL is used by GTMDefines.h +#define GTM_NULL_RESETTABLE null_resettable +#define GTM_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN +#define GTM_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END +#else +#define GTM_NULLABLE_TYPE +#define GTM_NONNULL_TYPE +#define GTM_NULLABLE +#define GTM_NONNULL_DECL +#define GTM_NULL_RESETTABLE +#define GTM_ASSUME_NONNULL_BEGIN +#define GTM_ASSUME_NONNULL_END +#endif // __has_feature(nullability) #endif // GTM_NULLABLE - #ifndef GTM_DECLARE_GENERICS - #if __has_feature(objc_generics) - #define GTM_DECLARE_GENERICS 1 - #else - #define GTM_DECLARE_GENERICS 0 - #endif +#if __has_feature(objc_generics) +#define GTM_DECLARE_GENERICS 1 +#else +#define GTM_DECLARE_GENERICS 0 +#endif #endif - #ifndef GTM_NSArrayOf - #if GTM_DECLARE_GENERICS - #define GTM_NSArrayOf(value) NSArray - #define GTM_NSDictionaryOf(key, value) NSDictionary - #else - #define GTM_NSArrayOf(value) NSArray - #define GTM_NSDictionaryOf(key, value) NSDictionary - #endif // __has_feature(objc_generics) +#if GTM_DECLARE_GENERICS +#define GTM_NSArrayOf(value) NSArray +#define GTM_NSDictionaryOf(key, value) NSDictionary +#else +#define GTM_NSArrayOf(value) NSArray +#define GTM_NSDictionaryOf(key, value) NSDictionary +#endif // __has_feature(objc_generics) #endif // GTM_NSArrayOf // For iOS, the fetcher can declare itself a background task to allow fetches @@ -369,50 +377,28 @@ // To disallow use of background tasks during fetches, the target should define // GTM_BACKGROUND_TASK_FETCHING to 0, or alternatively may set the // skipBackgroundTask property to YES. -#if TARGET_OS_IPHONE && !TARGET_OS_WATCH && !defined(GTM_BACKGROUND_TASK_FETCHING) - #define GTM_BACKGROUND_TASK_FETCHING 1 +#if !defined(GTM_BACKGROUND_TASK_FETCHING) && \ + (TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_MACCATALYST) +#define GTM_BACKGROUND_TASK_FETCHING 1 #endif #ifdef __cplusplus extern "C" { #endif -#if (TARGET_OS_TV \ - || TARGET_OS_WATCH \ - || (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_11) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_11) \ - || (TARGET_OS_IPHONE && defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0)) - #ifndef GTM_USE_SESSION_FETCHER - #define GTM_USE_SESSION_FETCHER 1 - #endif -#endif - #if !defined(GTMBridgeFetcher) - // These bridge macros should be identical in GTMHTTPFetcher.h and GTMSessionFetcher.h - #if GTM_USE_SESSION_FETCHER - // Macros to new fetcher class. - #define GTMBridgeFetcher GTMSessionFetcher - #define GTMBridgeFetcherService GTMSessionFetcherService - #define GTMBridgeFetcherServiceProtocol GTMSessionFetcherServiceProtocol - #define GTMBridgeAssertValidSelector GTMSessionFetcherAssertValidSelector - #define GTMBridgeCookieStorage GTMSessionCookieStorage - #define GTMBridgeCleanedUserAgentString GTMFetcherCleanedUserAgentString - #define GTMBridgeSystemVersionString GTMFetcherSystemVersionString - #define GTMBridgeApplicationIdentifier GTMFetcherApplicationIdentifier - #define kGTMBridgeFetcherStatusDomain kGTMSessionFetcherStatusDomain - #define kGTMBridgeFetcherStatusBadRequest GTMSessionFetcherStatusBadRequest - #else - // Macros to old fetcher class. - #define GTMBridgeFetcher GTMHTTPFetcher - #define GTMBridgeFetcherService GTMHTTPFetcherService - #define GTMBridgeFetcherServiceProtocol GTMHTTPFetcherServiceProtocol - #define GTMBridgeAssertValidSelector GTMAssertSelectorNilOrImplementedWithArgs - #define GTMBridgeCookieStorage GTMCookieStorage - #define GTMBridgeCleanedUserAgentString GTMCleanedUserAgentString - #define GTMBridgeSystemVersionString GTMSystemVersionString - #define GTMBridgeApplicationIdentifier GTMApplicationIdentifier - #define kGTMBridgeFetcherStatusDomain kGTMHTTPFetcherStatusDomain - #define kGTMBridgeFetcherStatusBadRequest kGTMHTTPFetcherStatusBadRequest - #endif // GTM_USE_SESSION_FETCHER +// The bridge macros are deprecated, and should be replaced; GTMHTTPFetcher is no longer +// supported and all code should switch to use GTMSessionFetcher types directly. +#define GTMBridgeFetcher GTMSessionFetcher +#define GTMBridgeFetcherService GTMSessionFetcherService +#define GTMBridgeFetcherServiceProtocol GTMSessionFetcherServiceProtocol +#define GTMBridgeAssertValidSelector GTMSessionFetcherAssertValidSelector +#define GTMBridgeCookieStorage GTMSessionCookieStorage +#define GTMBridgeCleanedUserAgentString GTMFetcherCleanedUserAgentString +#define GTMBridgeSystemVersionString GTMFetcherSystemVersionString +#define GTMBridgeApplicationIdentifier GTMFetcherApplicationIdentifier +#define kGTMBridgeFetcherStatusDomain kGTMSessionFetcherStatusDomain +#define kGTMBridgeFetcherStatusBadRequest GTMSessionFetcherStatusBadRequest #endif // When creating background sessions to perform out-of-process uploads and @@ -433,15 +419,15 @@ extern "C" { // Apps targeting new SDKs can force the old behavior by defining // GTMSESSION_RECONNECT_BACKGROUND_SESSIONS_ON_LAUNCH = 0. #ifndef GTMSESSION_RECONNECT_BACKGROUND_SESSIONS_ON_LAUNCH - // Default to the on-launch behavior for iOS 13+. - #if TARGET_OS_IOS && defined(__IPHONE_13_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0 - #define GTMSESSION_RECONNECT_BACKGROUND_SESSIONS_ON_LAUNCH 1 - #else - #define GTMSESSION_RECONNECT_BACKGROUND_SESSIONS_ON_LAUNCH 0 - #endif +// Default to the on-launch behavior for iOS 13+. +#if TARGET_OS_IOS && defined(__IPHONE_13_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0 +#define GTMSESSION_RECONNECT_BACKGROUND_SESSIONS_ON_LAUNCH 1 +#else +#define GTMSESSION_RECONNECT_BACKGROUND_SESSIONS_ON_LAUNCH 0 +#endif #endif -GTM_ASSUME_NONNULL_BEGIN +NS_ASSUME_NONNULL_BEGIN // Notifications // @@ -523,24 +509,26 @@ extern "C" { typedef void (^GTMSessionFetcherConfigurationBlock)(GTMSessionFetcher *fetcher, NSURLSessionConfiguration *configuration); typedef void (^GTMSessionFetcherSystemCompletionHandler)(void); -typedef void (^GTMSessionFetcherCompletionHandler)(NSData * GTM_NULLABLE_TYPE data, - NSError * GTM_NULLABLE_TYPE error); +typedef void (^GTMSessionFetcherCompletionHandler)(NSData *_Nullable data, + NSError *_Nullable error); typedef void (^GTMSessionFetcherBodyStreamProviderResponse)(NSInputStream *bodyStream); -typedef void (^GTMSessionFetcherBodyStreamProvider)(GTMSessionFetcherBodyStreamProviderResponse response); -typedef void (^GTMSessionFetcherDidReceiveResponseDispositionBlock)(NSURLSessionResponseDisposition disposition); -typedef void (^GTMSessionFetcherDidReceiveResponseBlock)(NSURLResponse *response, - GTMSessionFetcherDidReceiveResponseDispositionBlock dispositionBlock); -typedef void (^GTMSessionFetcherChallengeDispositionBlock)(NSURLSessionAuthChallengeDisposition disposition, - NSURLCredential * GTM_NULLABLE_TYPE credential); -typedef void (^GTMSessionFetcherChallengeBlock)(GTMSessionFetcher *fetcher, - NSURLAuthenticationChallenge *challenge, - GTMSessionFetcherChallengeDispositionBlock dispositionBlock); -typedef void (^GTMSessionFetcherWillRedirectResponse)(NSURLRequest * GTM_NULLABLE_TYPE redirectedRequest); +typedef void (^GTMSessionFetcherBodyStreamProvider)( + GTMSessionFetcherBodyStreamProviderResponse response); +typedef void (^GTMSessionFetcherDidReceiveResponseDispositionBlock)( + NSURLSessionResponseDisposition disposition); +typedef void (^GTMSessionFetcherDidReceiveResponseBlock)( + NSURLResponse *response, GTMSessionFetcherDidReceiveResponseDispositionBlock dispositionBlock); +typedef void (^GTMSessionFetcherChallengeDispositionBlock)( + NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *_Nullable credential); +typedef void (^GTMSessionFetcherChallengeBlock)( + GTMSessionFetcher *fetcher, NSURLAuthenticationChallenge *challenge, + GTMSessionFetcherChallengeDispositionBlock dispositionBlock); +typedef void (^GTMSessionFetcherWillRedirectResponse)(NSURLRequest *_Nullable redirectedRequest); typedef void (^GTMSessionFetcherWillRedirectBlock)(NSHTTPURLResponse *redirectResponse, NSURLRequest *redirectRequest, GTMSessionFetcherWillRedirectResponse response); -typedef void (^GTMSessionFetcherAccumulateDataBlock)(NSData * GTM_NULLABLE_TYPE buffer); -typedef void (^GTMSessionFetcherSimulateByteTransferBlock)(NSData * GTM_NULLABLE_TYPE buffer, +typedef void (^GTMSessionFetcherAccumulateDataBlock)(NSData *_Nullable buffer); +typedef void (^GTMSessionFetcherSimulateByteTransferBlock)(NSData *_Nullable buffer, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite); @@ -549,27 +537,26 @@ typedef void (^GTMSessionFetcherReceivedProgressBlock)(int64_t bytesWritten, typedef void (^GTMSessionFetcherDownloadProgressBlock)(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite); -typedef void (^GTMSessionFetcherSendProgressBlock)(int64_t bytesSent, - int64_t totalBytesSent, +typedef void (^GTMSessionFetcherSendProgressBlock)(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend); -typedef void (^GTMSessionFetcherWillCacheURLResponseResponse)(NSCachedURLResponse * GTM_NULLABLE_TYPE cachedResponse); -typedef void (^GTMSessionFetcherWillCacheURLResponseBlock)(NSCachedURLResponse *proposedResponse, - GTMSessionFetcherWillCacheURLResponseResponse responseBlock); +typedef void (^GTMSessionFetcherWillCacheURLResponseResponse)( + NSCachedURLResponse *_Nullable cachedResponse); +typedef void (^GTMSessionFetcherWillCacheURLResponseBlock)( + NSCachedURLResponse *proposedResponse, + GTMSessionFetcherWillCacheURLResponseResponse responseBlock); typedef void (^GTMSessionFetcherRetryResponse)(BOOL shouldRetry); -typedef void (^GTMSessionFetcherRetryBlock)(BOOL suggestedWillRetry, - NSError * GTM_NULLABLE_TYPE error, +typedef void (^GTMSessionFetcherRetryBlock)(BOOL suggestedWillRetry, NSError *_Nullable error, GTMSessionFetcherRetryResponse response); -API_AVAILABLE(ios(10.0), macosx(10.12), tvos(10.0), watchos(3.0)) +API_AVAILABLE(ios(10.0), macosx(10.12), tvos(10.0), watchos(6.0)) typedef void (^GTMSessionFetcherMetricsCollectionBlock)(NSURLSessionTaskMetrics *metrics); -typedef void (^GTMSessionFetcherTestResponse)(NSHTTPURLResponse * GTM_NULLABLE_TYPE response, - NSData * GTM_NULLABLE_TYPE data, - NSError * GTM_NULLABLE_TYPE error); +typedef void (^GTMSessionFetcherTestResponse)(NSHTTPURLResponse *_Nullable response, + NSData *_Nullable data, NSError *_Nullable error); typedef void (^GTMSessionFetcherTestBlock)(GTMSessionFetcher *fetcherToTest, GTMSessionFetcherTestResponse testResponse); -void GTMSessionFetcherAssertValidSelector(id GTM_NULLABLE_TYPE obj, SEL GTM_NULLABLE_TYPE sel, ...); +void GTMSessionFetcherAssertValidSelector(id _Nullable obj, SEL _Nullable sel, ...); // Utility functions for applications self-identifying to servers via a // user-agent header @@ -581,7 +568,7 @@ void GTMSessionFetcherAssertValidSelector(id GTM_NULLABLE_TYPE obj, SEL GTM_NULL // Applications may use this as a starting point for their own user agent strings, perhaps // with additional sections appended. Use GTMFetcherCleanedUserAgentString() below to // clean up any string being added to the user agent. -NSString *GTMFetcherStandardUserAgentString(NSBundle * GTM_NULLABLE_TYPE bundle); +NSString *GTMFetcherStandardUserAgentString(NSBundle *_Nullable bundle); // Make a generic name and version for the current application, like // com.example.MyApp/1.2.3 relying on the bundle identifier and the @@ -590,9 +577,12 @@ NSString *GTMFetcherStandardUserAgentString(NSBundle * GTM_NULLABLE_TYPE bundle) // The bundle ID may be overridden as the base identifier string by // adding to the bundle's Info.plist a "GTMUserAgentID" key. // +// The application version may be overridden by adding to the bundle's +// Info.plist a "GTMUserAgentVersion" key. +// // If no bundle ID or override is available, the process name preceded // by "proc_" is used. -NSString *GTMFetcherApplicationIdentifier(NSBundle * GTM_NULLABLE_TYPE bundle); +NSString *GTMFetcherApplicationIdentifier(NSBundle *_Nullable bundle); // Make an identifier like "MacOSX/10.7.1" or "iPod_Touch/4.1 hw/iPod1_1" NSString *GTMFetcherSystemVersionString(void); @@ -615,16 +605,60 @@ NSString *GTMFetcherCleanedUserAgentString(NSString *str); // queue before calling this function. // // Failure is indicated by a returned data value of nil. -NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NSError **outError); +NSData *_Nullable GTMDataFromInputStream(NSInputStream *inputStream, NSError **outError); #ifdef __cplusplus } // extern "C" #endif +// Completion handler passed to -[GTMFetcherDecoratorProtocol fetcherWillStart:completionHandler:]. +typedef void (^GTMFetcherDecoratorFetcherWillStartCompletionHandler)(NSURLRequest *_Nullable, + NSError *_Nullable); -#if !GTM_USE_SESSION_FETCHER -@protocol GTMHTTPFetcherServiceProtocol; -#endif +// Allows intercepting a request and optionally modifying it before the request (or a retry) +// is sent. See `-[GTMSessionFetcherService addDecorator:]` and `-[GTMSessionFetcherService +// removeDecorator:]`. +// +// Decorator methods must be thread-safe, as they might be invoked on any queue. +@protocol GTMFetcherDecoratorProtocol + +// Invoked just before a fetcher's request starts. +// +// After the decorator's work is complete, the decorator must invoke `handler(request, error)` +// either synchronously or asynchronously (on any queue). +// +// If no changes are to be made, pass `nil` for both `request` and `error`. +// +// Otherwise, if `error` is non-nil, then the fetcher is stopped with the given error, and any +// further decorators' `-fetcherWillStart:completionHandler:` methods are not invoked. +// +// Otherwise, the decorator may use `[fetcher.request mutableCopy]`, make changes to the mutable +// copy of the request, and pass the result to the handler via the `request` parameter. +// +// To distinguish the initial fetch from retries, the decorator can look at `fetcher.retryCount`. +// +// This method must not block the caller (e.g., performing synchronous I/O). Perform any blocking +// work or I/O on a different queue, then invoke `handler` with the results after the blocking work +// completes. +- (void)fetcherWillStart:(GTMSessionFetcher *)fetcher + completionHandler:(GTMFetcherDecoratorFetcherWillStartCompletionHandler)handler; + +// Invoked just after a fetcher's request finishes (either on success or on failure). +// +// After the decorator's work is complete, the decorator must invoke `handler()` either +// synchronously or asynchronously (on any queue). +// +// To access the result of the fetch, the decorator can look at `fetcher.response`. +// +// This method must not block the caller (e.g., performing synchronous I/O). Perform any blocking +// work or I/O on a different queue, then invoke `handler` with the results after the blocking work +// completes. +- (void)fetcherDidFinish:(GTMSessionFetcher *)fetcher + withData:(nullable NSData *)data + error:(nullable NSError *)error + completionHandler:(void (^)(void))handler; + +@end // This protocol allows abstract references to the fetcher service, primarily for // fetchers (which may be compiled without the fetcher service class present.) @@ -645,13 +679,17 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS - (BOOL)isDelayingFetcher:(GTMSessionFetcher *)fetcher; @property(atomic, assign) BOOL reuseSession; -- (GTM_NULLABLE NSURLSession *)session; -- (GTM_NULLABLE NSURLSession *)sessionForFetcherCreation; -- (GTM_NULLABLE id)sessionDelegate; -- (GTM_NULLABLE NSDate *)stoppedAllFetchersDate; +- (nullable NSURLSession *)session; +- (nullable NSURLSession *)sessionForFetcherCreation; +- (nullable id)sessionDelegate; +- (nullable NSDate *)stoppedAllFetchersDate; -// Methods for compatibility with the old GTMHTTPFetcher. -@property(atomic, readonly, strong, GTM_NULLABLE) NSOperationQueue *delegateQueue; +@property(atomic, readonly, strong, nullable) NSOperationQueue *delegateQueue; + +@optional +// This property is optional, for now, to enable releasing the feature without breaking existing +// code that fakes the service but doesn't implement this. +@property(atomic, readonly, strong, nullable) NSArray> *decorators; @end // @protocol GTMSessionFetcherServiceProtocol @@ -661,7 +699,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS @required // This protocol allows us to call the authorizer without requiring its sources // in this project. -- (void)authorizeRequest:(GTM_NULLABLE NSMutableURLRequest *)request +- (void)authorizeRequest:(nullable NSMutableURLRequest *)request delegate:(id)delegate didFinishSelector:(SEL)sel; @@ -673,7 +711,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS - (BOOL)isAuthorizedRequest:(NSURLRequest *)request; -@property(atomic, strong, readonly, GTM_NULLABLE) NSString *userEmail; +@property(atomic, strong, readonly, nullable) NSString *userEmail; @optional @@ -685,14 +723,10 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // transmission of the bearer token unencrypted. @property(atomic, assign) BOOL shouldAuthorizeAllRequests; -- (void)authorizeRequest:(GTM_NULLABLE NSMutableURLRequest *)request - completionHandler:(void (^)(NSError * GTM_NULLABLE_TYPE error))handler; +- (void)authorizeRequest:(nullable NSMutableURLRequest *)request + completionHandler:(void (^)(NSError *_Nullable error))handler; -#if GTM_USE_SESSION_FETCHER -@property(atomic, weak, GTM_NULLABLE) id fetcherService; -#else -@property(atomic, weak, GTM_NULLABLE) id fetcherService; -#endif +@property(atomic, weak, nullable) id fetcherService; - (BOOL)primeForRefresh; @@ -704,7 +738,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // Set the target using +[GTMSessionFetcher setSubstituteUIApplication:] @protocol GTMUIApplicationProtocol - (UIBackgroundTaskIdentifier)beginBackgroundTaskWithName:(nullable NSString *)taskName - expirationHandler:(void(^ __nullable)(void))handler; + expirationHandler:(void (^__nullable)(void))handler; - (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier; @end #endif @@ -722,7 +756,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // the connection is successfully created, the connection should retain the // fetcher for the life of the connection as well. So the caller doesn't have // to retain the fetcher explicitly unless they want to be able to cancel it. -+ (instancetype)fetcherWithRequest:(GTM_NULLABLE NSURLRequest *)request; ++ (instancetype)fetcherWithRequest:(nullable NSURLRequest *)request; // Convenience methods that make a request, like +fetcherWithRequest + (instancetype)fetcherWithURL:(NSURL *)requestURL; @@ -730,11 +764,11 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // Methods for creating fetchers to continue previous fetches. + (instancetype)fetcherWithDownloadResumeData:(NSData *)resumeData; -+ (GTM_NULLABLE instancetype)fetcherWithSessionIdentifier:(NSString *)sessionIdentifier; ++ (nullable instancetype)fetcherWithSessionIdentifier:(NSString *)sessionIdentifier; // Returns an array of currently active fetchers for background sessions, // both restarted and newly created ones. -+ (GTM_NSArrayOf(GTMSessionFetcher *) *)fetchersForBackgroundSessions; ++ (NSArray *)fetchersForBackgroundSessions; // Designated initializer. // @@ -743,19 +777,19 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // // The configuration should typically be nil. Applications needing to customize // the configuration may do so by setting the configurationBlock property. -- (instancetype)initWithRequest:(GTM_NULLABLE NSURLRequest *)request - configuration:(GTM_NULLABLE NSURLSessionConfiguration *)configuration; +- (instancetype)initWithRequest:(nullable NSURLRequest *)request + configuration:(nullable NSURLSessionConfiguration *)configuration; // The fetcher's request. This may not be set after beginFetch has been invoked. The request // may change due to redirects. -@property(atomic, strong, GTM_NULLABLE) NSURLRequest *request; +@property(atomic, strong, nullable) NSURLRequest *request; // Set a header field value on the request. Header field value changes will not // affect a fetch after the fetch has begun. -- (void)setRequestValue:(GTM_NULLABLE NSString *)value forHTTPHeaderField:(NSString *)field; +- (void)setRequestValue:(nullable NSString *)value forHTTPHeaderField:(NSString *)field; // Data used for resuming a download task. -@property(atomic, readonly, GTM_NULLABLE) NSData *downloadResumeData; +@property(atomic, readonly, nullable) NSData *downloadResumeData; // The configuration; this must be set before the fetch begins. If no configuration is // set or inherited from the fetcher service, then the fetcher uses an ephemeral config. @@ -764,7 +798,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // the configuration should do so by setting the configurationBlock property. // That allows the fetcher to pick an appropriate base configuration, with the // application setting only the configuration properties it needs to customize. -@property(atomic, strong, GTM_NULLABLE) NSURLSessionConfiguration *configuration; +@property(atomic, strong, nullable) NSURLSessionConfiguration *configuration; // A block the client may use to customize the configuration used to create the session. // @@ -776,17 +810,17 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // DO NOT change any fetcher properties in the configuration block. Fetcher properties // may be set in the fetcher service prior to fetcher creation, or on the fetcher prior // to invoking beginFetch. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherConfigurationBlock configurationBlock; +@property(atomic, copy, nullable) GTMSessionFetcherConfigurationBlock configurationBlock; // A session is created as needed by the fetcher. A fetcher service object // may maintain sessions for multiple fetches to the same host. -@property(atomic, strong, GTM_NULLABLE) NSURLSession *session; +@property(atomic, strong, nullable) NSURLSession *session; // The task in flight. -@property(atomic, readonly, GTM_NULLABLE) NSURLSessionTask *sessionTask; +@property(atomic, readonly, nullable) NSURLSessionTask *sessionTask; // The background session identifier. -@property(atomic, readonly, GTM_NULLABLE) NSString *sessionIdentifier; +@property(atomic, readonly, nullable) NSString *sessionIdentifier; // Indicates a fetcher created to finish a background session task. @property(atomic, readonly) BOOL wasCreatedFromBackgroundSession; @@ -800,10 +834,10 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // Additional user-supplied data to encode into the session identifier. Since session identifier // length limits are unspecified, this should be kept small. Key names beginning with an underscore // are reserved for use by the fetcher. -@property(atomic, strong, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, NSString *) *sessionUserInfo; +@property(atomic, strong, nullable) NSDictionary *sessionUserInfo; // The human-readable description to be assigned to the task. -@property(atomic, copy, GTM_NULLABLE) NSString *taskDescription; +@property(atomic, copy, nullable) NSString *taskDescription; // The priority assigned to the task, if any. Use NSURLSessionTaskPriorityLow, // NSURLSessionTaskPriorityDefault, or NSURLSessionTaskPriorityHigh. @@ -812,7 +846,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // The fetcher encodes information used to resume a session in the session identifier. // This method, intended for internal use returns the encoded information. The sessionUserInfo // dictionary is stored as identifier metadata. -- (GTM_NULLABLE GTM_NSDictionaryOf(NSString *, NSString *) *)sessionIdentifierMetadata; +- (nullable NSDictionary *)sessionIdentifierMetadata; #if TARGET_OS_IPHONE && !TARGET_OS_WATCH // The app should pass to this method the completion handler passed in the app delegate method @@ -870,7 +904,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // // For builds with the iOS 9/OS X 10.11 and later SDKs, this property is required only when // the app specifies NSAppTransportSecurity/NSAllowsArbitraryLoads in the main bundle's Info.plist. -@property(atomic, copy, GTM_NULLABLE) GTM_NSArrayOf(NSString *) *allowedInsecureSchemes; +@property(atomic, copy, nullable) NSArray *allowedInsecureSchemes; // By default, the fetcher prohibits localhost requests unless this property is set, // or the GTM_ALLOW_INSECURE_REQUESTS build flag is set. @@ -893,40 +927,40 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // Because as of Jan 2014 standalone instances of NSHTTPCookieStorage do not actually // store any cookies (Radar 15735276) we use our own subclass, GTMSessionCookieStorage, // to hold cookies in memory. -@property(atomic, strong, GTM_NULLABLE) NSHTTPCookieStorage *cookieStorage; +@property(atomic, strong, nullable) NSHTTPCookieStorage *cookieStorage; // Setting the credential is optional; it is used if the connection receives // an authentication challenge. -@property(atomic, strong, GTM_NULLABLE) NSURLCredential *credential; +@property(atomic, strong, nullable) NSURLCredential *credential; // Setting the proxy credential is optional; it is used if the connection // receives an authentication challenge from a proxy. -@property(atomic, strong, GTM_NULLABLE) NSURLCredential *proxyCredential; +@property(atomic, strong, nullable) NSURLCredential *proxyCredential; // If body data, body file URL, or body stream provider is not set, then a GET request // method is assumed. -@property(atomic, strong, GTM_NULLABLE) NSData *bodyData; +@property(atomic, strong, nullable) NSData *bodyData; // File to use as the request body. This forces use of an upload task. -@property(atomic, strong, GTM_NULLABLE) NSURL *bodyFileURL; +@property(atomic, strong, nullable) NSURL *bodyFileURL; // Length of body to send, expected or actual. @property(atomic, readonly) int64_t bodyLength; // The body stream provider may be called repeatedly to provide a body. // Setting a body stream provider forces use of an upload task. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherBodyStreamProvider bodyStreamProvider; +@property(atomic, copy, nullable) GTMSessionFetcherBodyStreamProvider bodyStreamProvider; // Object to add authorization to the request, if needed. // // This may not be changed once beginFetch has been invoked. -@property(atomic, strong, GTM_NULLABLE) id authorizer; +@property(atomic, strong, nullable) id authorizer; // The service object that created and monitors this fetcher, if any. @property(atomic, strong) id service; // The host, if any, used to classify this fetcher in the fetcher service. -@property(atomic, copy, GTM_NULLABLE) NSString *serviceHost; +@property(atomic, copy, nullable) NSString *serviceHost; // The priority, if any, used for starting fetchers in the fetcher service. // @@ -941,7 +975,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // the session task response. // // This is called on the callback queue. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherDidReceiveResponseBlock didReceiveResponseBlock; +@property(atomic, copy, nullable) GTMSessionFetcherDidReceiveResponseBlock didReceiveResponseBlock; // The delegate's optional challenge block may be used to inspect or alter // the session task challenge. @@ -954,18 +988,18 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // challenge.previousFailureCount to identify repeated invocations. // // This is called on the callback queue. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherChallengeBlock challengeBlock; +@property(atomic, copy, nullable) GTMSessionFetcherChallengeBlock challengeBlock; // The delegate's optional willRedirect block may be used to inspect or alter // the redirection. // // This is called on the callback queue. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherWillRedirectBlock willRedirectBlock; +@property(atomic, copy, nullable) GTMSessionFetcherWillRedirectBlock willRedirectBlock; // The optional send progress block reports body bytes uploaded. // // This is called on the callback queue. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherSendProgressBlock sendProgressBlock; +@property(atomic, copy, nullable) GTMSessionFetcherSendProgressBlock sendProgressBlock; // The optional accumulate block may be set by clients wishing to accumulate data // themselves rather than let the fetcher append each buffer to an NSData. @@ -974,25 +1008,26 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // should empty its accumulation buffer. // // This is called on the callback queue. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherAccumulateDataBlock accumulateDataBlock; +@property(atomic, copy, nullable) GTMSessionFetcherAccumulateDataBlock accumulateDataBlock; // The optional received progress block may be used to monitor data // received from a data task. // // This is called on the callback queue. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherReceivedProgressBlock receivedProgressBlock; +@property(atomic, copy, nullable) GTMSessionFetcherReceivedProgressBlock receivedProgressBlock; // The delegate's optional downloadProgress block may be used to monitor download // progress in writing to disk. // // This is called on the callback queue. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherDownloadProgressBlock downloadProgressBlock; +@property(atomic, copy, nullable) GTMSessionFetcherDownloadProgressBlock downloadProgressBlock; // The delegate's optional willCacheURLResponse block may be used to alter the cached // NSURLResponse. The user may prevent caching by passing nil to the block's response. // // This is called on the callback queue. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherWillCacheURLResponseBlock willCacheURLResponseBlock; +@property(atomic, copy, nullable) + GTMSessionFetcherWillCacheURLResponseBlock willCacheURLResponseBlock; // Enable retrying; see comments at the top of this file. Setting // retryEnabled=YES resets the min and max retry intervals. @@ -1003,14 +1038,14 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // If present, this block should call the response block with YES to cause a retry or NO to end the // fetch. // See comments at the top of this file. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherRetryBlock retryBlock; +@property(atomic, copy, nullable) GTMSessionFetcherRetryBlock retryBlock; // The optional block for collecting the metrics of the present session. // // This is called on the callback queue. -@property(atomic, copy, GTM_NULLABLE) +@property(atomic, copy, nullable) GTMSessionFetcherMetricsCollectionBlock metricsCollectionBlock API_AVAILABLE( - ios(10.0), macosx(10.12), tvos(10.0), watchos(3.0)); + ios(10.0), macosx(10.12), tvos(10.0), watchos(6.0)); // Retry intervals must be strictly less than maxRetryInterval, else // they will be limited to maxRetryInterval and no further retries will @@ -1061,10 +1096,9 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // If the application has specified a destinationFileURL or an accumulateDataBlock // for the fetcher, the data parameter passed to the callback will be nil. -- (void)beginFetchWithDelegate:(GTM_NULLABLE id)delegate - didFinishSelector:(GTM_NULLABLE SEL)finishedSEL; +- (void)beginFetchWithDelegate:(nullable id)delegate didFinishSelector:(nullable SEL)finishedSEL; -- (void)beginFetchWithCompletionHandler:(GTM_NULLABLE GTMSessionFetcherCompletionHandler)handler; +- (void)beginFetchWithCompletionHandler:(nullable GTMSessionFetcherCompletionHandler)handler; // Returns YES if this fetcher is in the process of fetching a URL. @property(atomic, readonly, getter=isFetching) BOOL fetching; @@ -1074,57 +1108,61 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS - (void)stopFetching; // A block to be called when the fetch completes. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherCompletionHandler completionHandler; +@property(atomic, copy, nullable) GTMSessionFetcherCompletionHandler completionHandler; // A block to be called if download resume data becomes available. -@property(atomic, strong, GTM_NULLABLE) void (^resumeDataBlock)(NSData *); +@property(atomic, strong, nullable) void (^resumeDataBlock)(NSData *); // Return the status code from the server response. @property(atomic, readonly) NSInteger statusCode; // Return the http headers from the response. -@property(atomic, strong, readonly, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, NSString *) *responseHeaders; +@property(atomic, strong, readonly, nullable) NSDictionary *responseHeaders; // The response, once it's been received. -@property(atomic, strong, readonly, GTM_NULLABLE) NSURLResponse *response; +@property(atomic, strong, readonly, nullable) NSURLResponse *response; // Bytes downloaded so far. @property(atomic, readonly) int64_t downloadedLength; // Buffer of currently-downloaded data, if available. -@property(atomic, readonly, strong, GTM_NULLABLE) NSData *downloadedData; +@property(atomic, readonly, strong, nullable) NSData *downloadedData; // Local path to which the downloaded file will be moved. // // If a file already exists at the path, it will be overwritten. // Will create the enclosing folders if they are not present. -@property(atomic, strong, GTM_NULLABLE) NSURL *destinationFileURL; +@property(atomic, strong, nullable) NSURL *destinationFileURL; // The time this fetcher originally began fetching. This is useful as a time // barrier for ignoring irrelevant fetch notifications or callbacks. -@property(atomic, strong, readonly, GTM_NULLABLE) NSDate *initialBeginFetchDate; +@property(atomic, strong, readonly, nullable) NSDate *initialBeginFetchDate; // userData is retained solely for the convenience of the client. -@property(atomic, strong, GTM_NULLABLE) id userData; +@property(atomic, strong, nullable) id userData; // Stored property values are retained solely for the convenience of the client. -@property(atomic, copy, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, id) *properties; +@property(atomic, copy, nullable) NSDictionary *properties; -- (void)setProperty:(GTM_NULLABLE id)obj forKey:(NSString *)key; // Pass nil for obj to remove the property. -- (GTM_NULLABLE id)propertyForKey:(NSString *)key; +- (void)setProperty:(nullable id)obj + forKey:(NSString *)key; // Pass nil for obj to remove the property. +- (nullable id)propertyForKey:(NSString *)key; -- (void)addPropertiesFromDictionary:(GTM_NSDictionaryOf(NSString *, id) *)dict; +- (void)addPropertiesFromDictionary:(NSDictionary *)dict; // Comments are useful for logging, so are strongly recommended for each fetcher. -@property(atomic, copy, GTM_NULLABLE) NSString *comment; +@property(atomic, copy, nullable) NSString *comment; - (void)setCommentWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1, 2); // Log of request and response, if logging is enabled -@property(atomic, copy, GTM_NULLABLE) NSString *log; +@property(atomic, copy, nullable) NSString *log; -// Callbacks are run on this queue. If none is supplied, the main queue is used. -@property(atomic, strong, GTM_NULL_RESETTABLE) dispatch_queue_t callbackQueue; +// Callbacks are run on this queue. If none is supplied, the main queue is used. +// +// CAUTION: This block MUST be a serial queue. Setting a concurrent queue can result in callbacks +// being dispatched concurrently, leading events to appear out-of-order. +@property(atomic, strong, null_resettable) dispatch_queue_t callbackQueue; // The queue used internally by the session to invoke its delegate methods in the fetcher. // @@ -1136,8 +1174,10 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // This value is ignored after the session has been created, so this // property should be set in the fetcher service rather in the fetcher as it applies // to a shared session. -@property(atomic, strong, GTM_NULL_RESETTABLE) NSOperationQueue *sessionDelegateQueue; +@property(atomic, strong, null_resettable) NSOperationQueue *sessionDelegateQueue; +// DEPRECATED: Callers should use XCTestExpectation instead. +// // Spin the run loop or sleep the thread, discarding events, until the fetch has completed. // // This is only for use in testing or in tools without a user interface. @@ -1146,7 +1186,8 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // sufficient reason for rejection from the app store. // // Returns NO if timed out. -- (BOOL)waitForCompletionWithTimeout:(NSTimeInterval)timeoutInSeconds; +- (BOOL)waitForCompletionWithTimeout:(NSTimeInterval)timeoutInSeconds + __deprecated_msg("Use XCTestExpectation instead"); // Test block is optional for testing. // @@ -1162,9 +1203,9 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // should proceed. // // Applications can exclude test block support by setting GTM_DISABLE_FETCHER_TEST_BLOCK. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherTestBlock testBlock; +@property(atomic, copy, nullable) GTMSessionFetcherTestBlock testBlock; -+ (void)setGlobalTestBlock:(GTM_NULLABLE GTMSessionFetcherTestBlock)block; ++ (void)setGlobalTestBlock:(nullable GTMSessionFetcherTestBlock)block; // When using the testBlock, |testBlockAccumulateDataChunkCount| is the desired number of chunks to // divide the response data into if the client has streaming enabled. The data will be divided up to @@ -1204,25 +1245,26 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // fetcher.deferResponseBodyLogging = NO; // }]; -@property(atomic, copy, GTM_NULLABLE) NSString *logRequestBody; +@property(atomic, copy, nullable) NSString *logRequestBody; @property(atomic, assign) BOOL deferResponseBodyLogging; -@property(atomic, copy, GTM_NULLABLE) NSString *logResponseBody; +@property(atomic, copy, nullable) NSString *logResponseBody; // Internal logging support. @property(atomic, readonly) NSData *loggedStreamData; @property(atomic, assign) BOOL hasLoggedError; -@property(atomic, strong, GTM_NULLABLE) NSURL *redirectedFromURL; +@property(atomic, strong, nullable) NSURL *redirectedFromURL; - (void)appendLoggedStreamData:(NSData *)dataToAdd; - (void)clearLoggedStreamData; -#endif // STRIP_GTM_FETCH_LOGGING +#endif // STRIP_GTM_FETCH_LOGGING @end @interface GTMSessionFetcher (BackwardsCompatibilityOnly) -// Clients using GTMSessionFetcher should set the cookie storage explicitly themselves. -// This method is just for compatibility with the old GTMHTTPFetcher class. -- (void)setCookieStorageMethod:(NSInteger)method; +// Clients using GTMSessionFetcher should set the cookie storage explicitly themselves; +// this method is deprecated and will be removed soon. +- (void)setCookieStorageMethod:(NSInteger)method + __deprecated_msg("Create an NSHTTPCookieStorage and set .cookieStorage directly."); @end // Until we can just instantiate NSHTTPCookieStorage for local use, we'll @@ -1235,7 +1277,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // Add the array off cookies to the storage, replacing duplicates. // Also removes expired cookies from the storage. -- (void)setCookies:(GTM_NULLABLE GTM_NSArrayOf(NSHTTPCookie *) *)cookies; +- (void)setCookies:(nullable NSArray *)cookies; - (void)removeAllCookies; @@ -1277,41 +1319,40 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // Only build the synchronization monitor code if NS_BLOCK_ASSERTIONS is not // defined or asserts are being logged instead. #if DEBUG && (!defined(NS_BLOCK_ASSERTIONS) || GTMSESSION_ASSERT_AS_LOG) - #define __GTMSessionMonitorSynchronizedVariableInner(varname, counter) \ - varname ## counter - #define __GTMSessionMonitorSynchronizedVariable(varname, counter) \ - __GTMSessionMonitorSynchronizedVariableInner(varname, counter) +#define __GTMSessionMonitorSynchronizedVariableInner(varname, counter) varname##counter +#define __GTMSessionMonitorSynchronizedVariable(varname, counter) \ + __GTMSessionMonitorSynchronizedVariableInner(varname, counter) - #define GTMSessionMonitorSynchronized(obj) \ - NS_VALID_UNTIL_END_OF_SCOPE id \ - __GTMSessionMonitorSynchronizedVariable(__monitor, __COUNTER__) = \ - [[GTMSessionSyncMonitorInternal alloc] initWithSynchronizationObject:obj \ - allowRecursive:NO \ - functionName:__func__] +#define GTMSessionMonitorSynchronized(obj) \ + NS_VALID_UNTIL_END_OF_SCOPE id __GTMSessionMonitorSynchronizedVariable(__monitor, __COUNTER__) = \ + [[GTMSessionSyncMonitorInternal alloc] initWithSynchronizationObject:obj \ + allowRecursive:NO \ + functionName:__func__] - #define GTMSessionMonitorRecursiveSynchronized(obj) \ - NS_VALID_UNTIL_END_OF_SCOPE id \ - __GTMSessionMonitorSynchronizedVariable(__monitor, __COUNTER__) = \ - [[GTMSessionSyncMonitorInternal alloc] initWithSynchronizationObject:obj \ - allowRecursive:YES \ - functionName:__func__] +#define GTMSessionMonitorRecursiveSynchronized(obj) \ + NS_VALID_UNTIL_END_OF_SCOPE id __GTMSessionMonitorSynchronizedVariable(__monitor, __COUNTER__) = \ + [[GTMSessionSyncMonitorInternal alloc] initWithSynchronizationObject:obj \ + allowRecursive:YES \ + functionName:__func__] - #define GTMSessionCheckSynchronized(obj) { \ - GTMSESSION_ASSERT_DEBUG( \ - [GTMSessionSyncMonitorInternal functionsHoldingSynchronizationOnObject:obj], \ - @"GTMSessionCheckSynchronized(" #obj ") failed: not sync'd" \ - @" on " #obj " in %s. Call stack:\n%@", \ - __func__, [NSThread callStackSymbols]); \ - } +#define GTMSessionCheckSynchronized(obj) \ + { \ + GTMSESSION_ASSERT_DEBUG( \ + [GTMSessionSyncMonitorInternal functionsHoldingSynchronizationOnObject:obj], \ + @"GTMSessionCheckSynchronized(" #obj ") failed: not sync'd" \ + @" on " #obj " in %s. Call stack:\n%@", \ + __func__, [NSThread callStackSymbols]); \ + } - #define GTMSessionCheckNotSynchronized(obj) { \ - GTMSESSION_ASSERT_DEBUG( \ - ![GTMSessionSyncMonitorInternal functionsHoldingSynchronizationOnObject:obj], \ - @"GTMSessionCheckNotSynchronized(" #obj ") failed: was sync'd" \ - @" on " #obj " in %s by %@. Call stack:\n%@", __func__, \ - [GTMSessionSyncMonitorInternal functionsHoldingSynchronizationOnObject:obj], \ - [NSThread callStackSymbols]); \ - } +#define GTMSessionCheckNotSynchronized(obj) \ + { \ + GTMSESSION_ASSERT_DEBUG( \ + ![GTMSessionSyncMonitorInternal functionsHoldingSynchronizationOnObject:obj], \ + @"GTMSessionCheckNotSynchronized(" #obj ") failed: was sync'd" \ + @" on " #obj " in %s by %@. Call stack:\n%@", \ + __func__, [GTMSessionSyncMonitorInternal functionsHoldingSynchronizationOnObject:obj], \ + [NSThread callStackSymbols]); \ + } // GTMSessionSyncMonitorInternal is a private class that keeps track of the // beginning and end of synchronized scopes. @@ -1323,16 +1364,23 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS allowRecursive:(BOOL)allowRecursive functionName:(const char *)functionName; // Return the names of the functions that hold sync on the object, or nil if none. -+ (NSArray * GTM_NULLABLE_TYPE)functionsHoldingSynchronizationOnObject:(id)object; ++ (nullable NSArray *)functionsHoldingSynchronizationOnObject:(id)object; @end #else - #define GTMSessionMonitorSynchronized(obj) do { } while (0) - #define GTMSessionMonitorRecursiveSynchronized(obj) do { } while (0) - #define GTMSessionCheckSynchronized(obj) do { } while (0) - #define GTMSessionCheckNotSynchronized(obj) do { } while (0) +#define GTMSessionMonitorSynchronized(obj) \ + do { \ + } while (0) +#define GTMSessionMonitorRecursiveSynchronized(obj) \ + do { \ + } while (0) +#define GTMSessionCheckSynchronized(obj) \ + do { \ + } while (0) +#define GTMSessionCheckNotSynchronized(obj) \ + do { \ + } while (0) #endif // !DEBUG #endif // __OBJC__ - -GTM_ASSUME_NONNULL_END +NS_ASSUME_NONNULL_END diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.m b/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.m index 9384ef7..9a8a34b 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.m +++ b/Pods/GTMSessionFetcher/Source/GTMSessionFetcher.m @@ -27,32 +27,38 @@ #import #ifndef STRIP_GTM_FETCH_LOGGING - #error GTMSessionFetcher headers should have defaulted this if it wasn't already defined. +#error GTMSessionFetcher headers should have defaulted this if it wasn't already defined. #endif -GTM_ASSUME_NONNULL_BEGIN +NS_ASSUME_NONNULL_BEGIN -NSString *const kGTMSessionFetcherStartedNotification = @"kGTMSessionFetcherStartedNotification"; -NSString *const kGTMSessionFetcherStoppedNotification = @"kGTMSessionFetcherStoppedNotification"; -NSString *const kGTMSessionFetcherRetryDelayStartedNotification = @"kGTMSessionFetcherRetryDelayStartedNotification"; -NSString *const kGTMSessionFetcherRetryDelayStoppedNotification = @"kGTMSessionFetcherRetryDelayStoppedNotification"; +NSString *const kGTMSessionFetcherStartedNotification = @"kGTMSessionFetcherStartedNotification"; +NSString *const kGTMSessionFetcherStoppedNotification = @"kGTMSessionFetcherStoppedNotification"; +NSString *const kGTMSessionFetcherRetryDelayStartedNotification = + @"kGTMSessionFetcherRetryDelayStartedNotification"; +NSString *const kGTMSessionFetcherRetryDelayStoppedNotification = + @"kGTMSessionFetcherRetryDelayStoppedNotification"; -NSString *const kGTMSessionFetcherCompletionInvokedNotification = @"kGTMSessionFetcherCompletionInvokedNotification"; +NSString *const kGTMSessionFetcherCompletionInvokedNotification = + @"kGTMSessionFetcherCompletionInvokedNotification"; NSString *const kGTMSessionFetcherCompletionDataKey = @"data"; NSString *const kGTMSessionFetcherCompletionErrorKey = @"error"; -NSString *const kGTMSessionFetcherErrorDomain = @"com.google.GTMSessionFetcher"; -NSString *const kGTMSessionFetcherStatusDomain = @"com.google.HTTPStatus"; -NSString *const kGTMSessionFetcherStatusDataKey = @"data"; // data returned with a kGTMSessionFetcherStatusDomain error +NSString *const kGTMSessionFetcherErrorDomain = @"com.google.GTMSessionFetcher"; +NSString *const kGTMSessionFetcherStatusDomain = @"com.google.HTTPStatus"; +NSString *const kGTMSessionFetcherStatusDataKey = + @"data"; // data returned with a kGTMSessionFetcherStatusDomain error NSString *const kGTMSessionFetcherStatusDataContentTypeKey = @"data_content_type"; -NSString *const kGTMSessionFetcherNumberOfRetriesDoneKey = @"kGTMSessionFetcherNumberOfRetriesDoneKey"; -NSString *const kGTMSessionFetcherElapsedIntervalWithRetriesKey = @"kGTMSessionFetcherElapsedIntervalWithRetriesKey"; +NSString *const kGTMSessionFetcherNumberOfRetriesDoneKey = + @"kGTMSessionFetcherNumberOfRetriesDoneKey"; +NSString *const kGTMSessionFetcherElapsedIntervalWithRetriesKey = + @"kGTMSessionFetcherElapsedIntervalWithRetriesKey"; static NSString *const kGTMSessionIdentifierPrefix = @"com.google.GTMSessionFetcher"; static NSString *const kGTMSessionIdentifierDestinationFileURLMetadataKey = @"_destURL"; -static NSString *const kGTMSessionIdentifierBodyFileURLMetadataKey = @"_bodyURL"; -static NSString *const kGTMSessionIdentifierClientReconnectMetadataKey = @"_clientWillReconnect"; +static NSString *const kGTMSessionIdentifierBodyFileURLMetadataKey = @"_bodyURL"; +static NSString *const kGTMSessionIdentifierClientReconnectMetadataKey = @"_clientWillReconnect"; // The default max retry interview is 10 minutes for uploads (POST/PUT/PATCH), // 1 minute for downloads. @@ -65,14 +71,14 @@ static const int64_t kMaximumDownloadErrorDataLength = 20000; #ifdef GTMSESSION_PERSISTED_DESTINATION_KEY // Projects using unique class names should also define a unique persisted destination key. -static NSString * const kGTMSessionFetcherPersistedDestinationKey = +static NSString *const kGTMSessionFetcherPersistedDestinationKey = GTMSESSION_PERSISTED_DESTINATION_KEY; #else -static NSString * const kGTMSessionFetcherPersistedDestinationKey = +static NSString *const kGTMSessionFetcherPersistedDestinationKey = @"com.google.GTMSessionFetcher.downloads"; #endif -GTM_ASSUME_NONNULL_END +NS_ASSUME_NONNULL_END // // GTMSessionFetcher @@ -85,24 +91,23 @@ GTM_ASSUME_NONNULL_END #endif #ifndef GTM_TARGET_SUPPORTS_APP_TRANSPORT_SECURITY - #if (TARGET_OS_TV \ - || TARGET_OS_WATCH \ - || (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_11) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_11) \ - || (TARGET_OS_IPHONE && defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0)) - #define GTM_TARGET_SUPPORTS_APP_TRANSPORT_SECURITY 1 - #endif +#define GTM_TARGET_SUPPORTS_APP_TRANSPORT_SECURITY 1 #endif -#if ((defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST) || \ +#if ((defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST) || \ (TARGET_OS_OSX && defined(__MAC_10_15) && __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_15) || \ - (TARGET_OS_IOS && defined(__IPHONE_13_0) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_13_0) || \ - (TARGET_OS_WATCH && defined(__WATCHOS_6_0) && __WATCHOS_VERSION_MIN_REQUIRED >= __WATCHOS_6_0) || \ + (TARGET_OS_IOS && defined(__IPHONE_13_0) && \ + __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_13_0) || \ + (TARGET_OS_WATCH && defined(__WATCHOS_6_0) && \ + __WATCH_OS_VERSION_MIN_REQUIRED >= __WATCHOS_6_0) || \ (TARGET_OS_TV && defined(__TVOS_13_0) && __TVOS_VERSION_MIN_REQUIRED >= __TVOS_13_0)) #define GTM_SDK_REQUIRES_TLSMINIMUMSUPPORTEDPROTOCOLVERSION 1 #define GTM_SDK_SUPPORTS_TLSMINIMUMSUPPORTEDPROTOCOLVERSION 1 #elif ((TARGET_OS_OSX && defined(__MAC_10_15) && __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_15) || \ - (TARGET_OS_IOS && defined(__IPHONE_13_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0) || \ - (TARGET_OS_WATCH && defined(__WATCHOS_6_0) && __WATCHOS_VERSION_MAX_ALLOWED >= __WATCHOS_6_0) || \ + (TARGET_OS_IOS && defined(__IPHONE_13_0) && \ + __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0) || \ + (TARGET_OS_WATCH && defined(__WATCHOS_6_0) && \ + __WATCH_OS_VERSION_MAX_ALLOWED >= __WATCHOS_6_0) || \ (TARGET_OS_TV && defined(__TVOS_13_0) && __TVOS_VERSION_MAX_ALLOWED >= __TVOS_13_0)) #define GTM_SDK_REQUIRES_TLSMINIMUMSUPPORTEDPROTOCOLVERSION 0 #define GTM_SDK_SUPPORTS_TLSMINIMUMSUPPORTEDPROTOCOLVERSION 1 @@ -111,20 +116,29 @@ GTM_ASSUME_NONNULL_END #define GTM_SDK_SUPPORTS_TLSMINIMUMSUPPORTEDPROTOCOLVERSION 0 #endif -#if ((defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST) || \ +#if ((defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST) || \ (TARGET_OS_OSX && defined(__MAC_10_15) && __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_15) || \ - (TARGET_OS_IOS && defined(__IPHONE_13_0) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_13_0) || \ - (TARGET_OS_WATCH && defined(__WATCHOS_6_0) && __WATCHOS_VERSION_MIN_REQUIRED >= __WATCHOS_6_0) || \ + (TARGET_OS_IOS && defined(__IPHONE_13_0) && \ + __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_13_0) || \ + (TARGET_OS_WATCH && defined(__WATCHOS_6_0) && \ + __WATCH_OS_VERSION_MIN_REQUIRED >= __WATCHOS_6_0) || \ (TARGET_OS_TV && defined(__TVOS_13_0) && __TVOS_VERSION_MIN_REQUIRED >= __TVOS_13_0)) #define GTM_SDK_REQUIRES_SECTRUSTEVALUATEWITHERROR 1 #else #define GTM_SDK_REQUIRES_SECTRUSTEVALUATEWITHERROR 0 #endif +#if __has_attribute(swift_async) +// Once Clang 13/Xcode 13 can be assumed, can switch to NS_SWIFT_DISABLE_ASYNC. +#define GTM_SWIFT_DISABLE_ASYNC __attribute__((swift_async(none))) +#else +#define GTM_SWIFT_DISABLE_ASYNC +#endif + @interface GTMSessionFetcher () -@property(atomic, strong, readwrite, GTM_NULLABLE) NSData *downloadedData; -@property(atomic, strong, readwrite, GTM_NULLABLE) NSData *downloadResumeData; +@property(atomic, strong, readwrite, nullable) NSData *downloadedData; +@property(atomic, strong, readwrite, nullable) NSData *downloadResumeData; #if GTM_BACKGROUND_TASK_FETCHING // Should always be accessed within an @synchronized(self). @@ -138,29 +152,28 @@ GTM_ASSUME_NONNULL_END #if !GTMSESSION_BUILD_COMBINED_SOURCES @interface GTMSessionFetcher (GTMSessionFetcherLoggingInternal) - (void)logFetchWithError:(NSError *)error; -- (void)logNowWithError:(GTM_NULLABLE NSError *)error; +- (void)logNowWithError:(nullable NSError *)error; - (NSInputStream *)loggedInputStreamForInputStream:(NSInputStream *)inputStream; - (GTMSessionFetcherBodyStreamProvider)loggedStreamProviderForStreamProvider: (GTMSessionFetcherBodyStreamProvider)streamProvider; @end #endif // !GTMSESSION_BUILD_COMBINED_SOURCES -GTM_ASSUME_NONNULL_BEGIN +NS_ASSUME_NONNULL_BEGIN static NSTimeInterval InitialMinRetryInterval(void) { - return 1.0 + ((double)(arc4random_uniform(0x0FFFF)) / (double) 0x0FFFF); + return 1.0 + ((double)(arc4random_uniform(0x0FFFF)) / (double)0x0FFFF); } -static BOOL IsLocalhost(NSString * GTM_NULLABLE_TYPE host) { +static BOOL IsLocalhost(NSString *_Nullable host) { // We check if there's host, and then make the comparisons. if (host == nil) return NO; - return ([host caseInsensitiveCompare:@"localhost"] == NSOrderedSame - || [host isEqual:@"::1"] - || [host isEqual:@"127.0.0.1"]); + return ([host caseInsensitiveCompare:@"localhost"] == NSOrderedSame || [host isEqual:@"::1"] || + [host isEqual:@"127.0.0.1"]); } -static NSDictionary *GTM_NULLABLE_TYPE GTMErrorUserInfoForData( - NSData *GTM_NULLABLE_TYPE data, NSDictionary *GTM_NULLABLE_TYPE responseHeaders) { +static NSDictionary *_Nullable GTMErrorUserInfoForData(NSData *_Nullable data, + NSDictionary *_Nullable responseHeaders) { NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; if (data.length > 0) { @@ -175,12 +188,12 @@ static NSDictionary *GTM_NULLABLE_TYPE GTMErrorUserInfoForData( return userInfo.count > 0 ? userInfo : nil; } -static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; +static GTMSessionFetcherTestBlock _Nullable gGlobalTestBlock; @implementation GTMSessionFetcher { - NSMutableURLRequest *_request; // after beginFetch, changed only in delegate callbacks - BOOL _useUploadTask; // immutable after beginFetch - NSURL *_bodyFileURL; // immutable after beginFetch + NSMutableURLRequest *_request; // after beginFetch, changed only in delegate callbacks + BOOL _useUploadTask; // immutable after beginFetch + NSURL *_bodyFileURL; // immutable after beginFetch GTMSessionFetcherBodyStreamProvider _bodyStreamProvider; // immutable after beginFetch NSURLSession *_session; BOOL _shouldInvalidateSession; // immutable after beginFetch @@ -197,17 +210,18 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; NSString *_sessionIdentifierUUID; BOOL _userRequestedBackgroundSession; BOOL _usingBackgroundSession; - NSMutableData * GTM_NULLABLE_TYPE _downloadedData; + NSMutableData *_Nullable _downloadedData; NSError *_downloadFinishedError; - NSData *_downloadResumeData; // immutable after construction - NSData * GTM_NULLABLE_TYPE _downloadTaskErrorData; // Data for when download task fails + NSData *_downloadResumeData; // immutable after construction + NSData *_Nullable _downloadTaskErrorData; // Data for when download task fails NSURL *_destinationFileURL; int64_t _downloadedLength; - NSURLCredential *_credential; // username & password - NSURLCredential *_proxyCredential; // credential supplied to proxy servers - BOOL _isStopNotificationNeeded; // set when start notification has been sent - BOOL _isUsingTestBlock; // set when a test block was provided (remains set when the block is released) - id _userData; // retained, if set by caller + NSURLCredential *_credential; // username & password + NSURLCredential *_proxyCredential; // credential supplied to proxy servers + BOOL _isStopNotificationNeeded; // set when start notification has been sent + BOOL _isUsingTestBlock; // set when a test block was provided (remains set when the block is + // released) + id _userData; // retained, if set by caller NSMutableDictionary *_properties; // more data retained for caller dispatch_queue_t _callbackQueue; dispatch_group_t _callbackGroup; // read-only after creation @@ -216,24 +230,26 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; id _authorizer; // immutable after beginFetch // The service object that created and monitors this fetcher, if any. - id _service; // immutable; set by the fetcher service upon creation + id + _service; // immutable; set by the fetcher service upon creation NSString *_serviceHost; - NSInteger _servicePriority; // immutable after beginFetch - BOOL _hasStoppedFetching; // counterpart to _initialBeginFetchDate + NSInteger _servicePriority; // immutable after beginFetch + BOOL _hasStoppedFetching; // counterpart to _initialBeginFetchDate BOOL _userStoppedFetching; - BOOL _isRetryEnabled; // user wants auto-retry + BOOL _isRetryEnabled; // user wants auto-retry NSTimer *_retryTimer; NSUInteger _retryCount; - NSTimeInterval _maxRetryInterval; // default 60 (download) or 600 (upload) seconds - NSTimeInterval _minRetryInterval; // random between 1 and 2 seconds - NSTimeInterval _retryFactor; // default interval multiplier is 2 + NSTimeInterval _maxRetryInterval; // default 60 (download) or 600 (upload) seconds + NSTimeInterval _minRetryInterval; // random between 1 and 2 seconds + NSTimeInterval _retryFactor; // default interval multiplier is 2 NSTimeInterval _lastRetryInterval; - NSDate *_initialBeginFetchDate; // date that beginFetch was first invoked; immutable after initial beginFetch - NSDate *_initialRequestDate; // date of first request to the target server (ignoring auth) - BOOL _hasAttemptedAuthRefresh; // accessed only in shouldRetryNowForStatus: + NSDate *_initialBeginFetchDate; // date that beginFetch was first invoked; immutable after + // initial beginFetch + NSDate *_initialRequestDate; // date of first request to the target server (ignoring auth) + BOOL _hasAttemptedAuthRefresh; // accessed only in shouldRetryNowForStatus: - NSString *_comment; // comment for log + NSString *_comment; // comment for log NSString *_log; #if !STRIP_GTM_FETCH_LOGGING NSMutableData *_loggedStreamData; @@ -274,7 +290,7 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; } #endif // !GTMSESSION_UNIT_TESTING -+ (instancetype)fetcherWithRequest:(GTM_NULLABLE NSURLRequest *)request { ++ (instancetype)fetcherWithRequest:(nullable NSURLRequest *)request { return [[self alloc] initWithRequest:request configuration:nil]; } @@ -293,7 +309,7 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; return fetcher; } -+ (GTM_NULLABLE instancetype)fetcherWithSessionIdentifier:(NSString *)sessionIdentifier { ++ (nullable instancetype)fetcherWithSessionIdentifier:(NSString *)sessionIdentifier { GTMSESSION_ASSERT_DEBUG(sessionIdentifier != nil, @"Invalid session identifier"); NSMapTable *sessionIdentifierToFetcherMap = [self sessionIdentifierToFetcherMap]; GTMSessionFetcher *fetcher = [sessionIdentifierToFetcherMap objectForKey:sessionIdentifier]; @@ -302,8 +318,9 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; [fetcher setSessionIdentifier:sessionIdentifier]; [sessionIdentifierToFetcherMap setObject:fetcher forKey:sessionIdentifier]; fetcher->_wasCreatedFromBackgroundSession = YES; - [fetcher setCommentWithFormat:@"Resuming %@", - fetcher && fetcher->_sessionIdentifierUUID ? fetcher->_sessionIdentifierUUID : @"?"]; + [fetcher setCommentWithFormat:@"Resuming %@", fetcher && fetcher->_sessionIdentifierUUID + ? fetcher->_sessionIdentifierUUID + : @"?"]; } return fetcher; } @@ -341,23 +358,22 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; return YES; #endif // GTM_TARGET_SUPPORTS_APP_TRANSPORT_SECURITY } -#else // GTM_ALLOW_INSECURE_REQUESTS +#else // GTM_ALLOW_INSECURE_REQUESTS + (BOOL)appAllowsInsecureRequests { return YES; } #endif // !GTM_ALLOW_INSECURE_REQUESTS - - (instancetype)init { return [self initWithRequest:nil configuration:nil]; } -- (instancetype)initWithRequest:(NSURLRequest *)request { +- (instancetype)initWithRequest:(NSURLRequest *)request { return [self initWithRequest:request configuration:nil]; } -- (instancetype)initWithRequest:(GTM_NULLABLE NSURLRequest *)request - configuration:(GTM_NULLABLE NSURLSessionConfiguration *)configuration { +- (instancetype)initWithRequest:(nullable NSURLRequest *)request + configuration:(nullable NSURLSessionConfiguration *)configuration { self = [super init]; if (self) { #if GTM_BACKGROUND_TASK_FETCHING @@ -414,8 +430,8 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; } - (void)dealloc { - GTMSESSION_ASSERT_DEBUG(!_isStopNotificationNeeded, - @"unbalanced fetcher notification for %@", _request.URL); + GTMSESSION_ASSERT_DEBUG(!_isStopNotificationNeeded, @"unbalanced fetcher notification for %@", + _request.URL); [self forgetSessionIdentifierForFetcherWithoutSyncCheck]; // Note: if a session task or a retry timer was pending, then this instance @@ -428,72 +444,73 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; // Begin fetching the URL (or begin a retry fetch). The delegate is retained // for the duration of the fetch connection. -- (void)beginFetchWithCompletionHandler:(GTM_NULLABLE GTMSessionFetcherCompletionHandler)handler { +- (void)beginFetchWithCompletionHandler:(nullable GTMSessionFetcherCompletionHandler)handler { GTMSessionCheckNotSynchronized(self); - _completionHandler = [handler copy]; // The user may have called setDelegate: earlier if they want to use other // delegate-style callbacks during the fetch; otherwise, the delegate is nil, // which is fine. - [self beginFetchMayDelay:YES mayAuthorize:YES]; + [self beginFetchMayDelay:YES mayAuthorize:YES mayDecorate:YES]; } // Begin fetching the URL for a retry fetch. The delegate and completion handler // are already provided, and do not need to be copied. - (void)beginFetchForRetry { GTMSessionCheckNotSynchronized(self); - - [self beginFetchMayDelay:YES mayAuthorize:YES]; + [self beginFetchMayDelay:YES mayAuthorize:YES mayDecorate:YES]; } -- (GTMSessionFetcherCompletionHandler)completionHandlerWithTarget:(GTM_NULLABLE_TYPE id)target - didFinishSelector:(GTM_NULLABLE_TYPE SEL)finishedSelector { +- (GTMSessionFetcherCompletionHandler)completionHandlerWithTarget:(nullable id)target + didFinishSelector:(nullable SEL)finishedSelector { GTMSessionFetcherAssertValidSelector(target, finishedSelector, @encode(GTMSessionFetcher *), @encode(NSData *), @encode(NSError *), 0); GTMSessionFetcherCompletionHandler completionHandler = ^(NSData *data, NSError *error) { - if (target && finishedSelector) { - id selfArg = self; // Placate ARC. - NSMethodSignature *sig = [target methodSignatureForSelector:finishedSelector]; - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:sig]; - [invocation setSelector:(SEL)finishedSelector]; - [invocation setTarget:target]; - [invocation setArgument:&selfArg atIndex:2]; - [invocation setArgument:&data atIndex:3]; - [invocation setArgument:&error atIndex:4]; - [invocation invoke]; - } + if (target && finishedSelector) { + id selfArg = self; // Placate ARC. + NSMethodSignature *sig = [target methodSignatureForSelector:finishedSelector]; + NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:sig]; + [invocation setSelector:(SEL)finishedSelector]; + [invocation setTarget:target]; + [invocation setArgument:&selfArg atIndex:2]; + [invocation setArgument:&data atIndex:3]; + [invocation setArgument:&error atIndex:4]; + [invocation invoke]; + } }; return completionHandler; } -- (void)beginFetchWithDelegate:(GTM_NULLABLE_TYPE id)target - didFinishSelector:(GTM_NULLABLE_TYPE SEL)finishedSelector { +- (void)beginFetchWithDelegate:(nullable id)target + didFinishSelector:(nullable SEL)finishedSelector { GTMSessionCheckNotSynchronized(self); - GTMSessionFetcherCompletionHandler handler = [self completionHandlerWithTarget:target - didFinishSelector:finishedSelector]; + GTMSessionFetcherCompletionHandler handler = [self completionHandlerWithTarget:target + didFinishSelector:finishedSelector]; [self beginFetchWithCompletionHandler:handler]; } - (void)beginFetchMayDelay:(BOOL)mayDelay - mayAuthorize:(BOOL)mayAuthorize { + mayAuthorize:(BOOL)mayAuthorize + mayDecorate:(BOOL)mayDecorate { // This is the internal entry point for re-starting fetches. GTMSessionCheckNotSynchronized(self); - NSMutableURLRequest *fetchRequest = _request; // The request property is now externally immutable. + NSMutableURLRequest *fetchRequest = + _request; // The request property is now externally immutable. NSURL *fetchRequestURL = fetchRequest.URL; NSString *priorSessionIdentifier = self.sessionIdentifier; + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URL:%@ beginFetchMayDelay:%d mayAuthorize:%d mayDecorate:%d", + [self class], self, _request.URL, mayDelay, mayAuthorize, + mayDecorate); + // A utility block for creating error objects when we fail to start the fetch. - NSError *(^beginFailureError)(NSInteger) = ^(NSInteger code){ + NSError * (^beginFailureError)(NSInteger) = ^(NSInteger code) { NSString *urlString = fetchRequestURL.absoluteString; - NSDictionary *userInfo = @{ - NSURLErrorFailingURLStringErrorKey : (urlString ? urlString : @"(missing URL)") - }; - return [NSError errorWithDomain:kGTMSessionFetcherErrorDomain - code:code - userInfo:userInfo]; + NSDictionary *userInfo = + @{NSURLErrorFailingURLStringErrorKey : (urlString ? urlString : @"(missing URL)")}; + return [NSError errorWithDomain:kGTMSessionFetcherErrorDomain code:code userInfo:userInfo]; }; // Catch delegate queue maxConcurrentOperationCount values other than 1, particularly @@ -501,8 +518,7 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; // of simultaneous or out-of-order delegate callbacks. GTMSESSION_ASSERT_DEBUG(_delegateQueue.maxConcurrentOperationCount == 1, @"delegate queue %@ should support one concurrent operation, not %ld", - _delegateQueue.name, - (long)_delegateQueue.maxConcurrentOperationCount); + _delegateQueue.name, (long)_delegateQueue.maxConcurrentOperationCount); if (!_initialBeginFetchDate) { // This ivar is set only here on the initial beginFetch so need not be synchronized. @@ -536,8 +552,8 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; if (![bodyFileURL checkResourceIsReachableAndReturnError:&fileCheckError]) { // This assert fires when the file being uploaded no longer exists once // the fetcher is ready to start the upload. - GTMSESSION_ASSERT_DEBUG_OR_LOG(0, @"Body file is unreachable: %@\n %@", - bodyFileURL.path, fileCheckError); + GTMSESSION_ASSERT_DEBUG_OR_LOG(0, @"Body file is unreachable: %@\n %@", bodyFileURL.path, + fileCheckError); [self failToBeginFetchWithError:fileCheckError]; return; } @@ -549,8 +565,7 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; // NSURLSession does not support data URLs in background sessions. #if DEBUG if (priorSessionIdentifier || self.sessionIdentifier) { - GTMSESSION_LOG_DEBUG(@"Converting background to foreground session for %@", - fetchRequest); + GTMSESSION_LOG_DEBUG(@"Converting background to foreground session for %@", fetchRequest); } #endif // If priorSessionIdentifier is allowed to stay non-nil, a background session can @@ -563,9 +578,8 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; #if GTM_ALLOW_INSECURE_REQUESTS BOOL shouldCheckSecurity = NO; #else - BOOL shouldCheckSecurity = (fetchRequestURL != nil - && !isDataRequest - && [[self class] appAllowsInsecureRequests]); + BOOL shouldCheckSecurity = + (fetchRequestURL != nil && !isDataRequest && [[self class] appAllowsInsecureRequests]); #endif if (shouldCheckSecurity) { @@ -593,30 +607,36 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; if (!allowRequest) { // Check for localhost requests. Security checks only occur for non-https requests, so // this check won't happen for an https request to localhost. - BOOL isLocalhostRequest = (host.length == 0 && [fetchRequestURL isFileURL]) || IsLocalhost(host); + BOOL isLocalhostRequest = + (host.length == 0 && [fetchRequestURL isFileURL]) || IsLocalhost(host); if (isLocalhostRequest) { if (self.allowLocalhostRequest) { allowRequest = YES; } else { - GTMSESSION_ASSERT_DEBUG(NO, @"Fetch request for localhost but fetcher" - @" allowLocalhostRequest is not set: %@", fetchRequestURL); + GTMSESSION_ASSERT_DEBUG(NO, + @"Fetch request for localhost but fetcher" + @" allowLocalhostRequest is not set: %@", + fetchRequestURL); } } else { - GTMSESSION_ASSERT_DEBUG(NO, @"Insecure fetch request has a scheme (%@)" - @" not found in fetcher allowedInsecureSchemes (%@): %@", - requestScheme, _allowedInsecureSchemes ?: @" @[] ", fetchRequestURL); + GTMSESSION_ASSERT_DEBUG(NO, + @"Insecure fetch request has a scheme (%@)" + @" not found in fetcher allowedInsecureSchemes (%@): %@", + requestScheme, _allowedInsecureSchemes ?: @" @[] ", + fetchRequestURL); } } if (!allowRequest) { #if !DEBUG - NSLog(@"Insecure fetch disallowed for %@", fetchRequestURL.description ?: @"nil request URL"); + NSLog(@"Insecure fetch disallowed for %@", + fetchRequestURL.description ?: @"nil request URL"); #endif [self failToBeginFetchWithError:beginFailureError(GTMSessionFetcherErrorInsecureRequest)]; return; } } // !isSecure - } // (requestURL != nil) && !isDataRequest + } // (requestURL != nil) && !isDataRequest if (self.cookieStorage == nil) { self.cookieStorage = [[self class] staticCookieStorage]; @@ -644,19 +664,8 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; NSMapTable *sessionIdentifierToFetcherMap = [[self class] sessionIdentifierToFetcherMap]; [sessionIdentifierToFetcherMap setObject:self forKey:self.sessionIdentifier]; - if (@available(iOS 8.0, tvOS 9.0, watchOS 2.0, macOS 10.10, *)) { - _configuration = - [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:sessionIdentifier]; - } else { -#if ((!TARGET_OS_IPHONE && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10) \ - || (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0)) - // If building with support for iOS 7 or < macOS 10.10, allow using the older - // -backgroundSessionConfiguration: method, otherwise leave it out to avoid deprecated - // API warnings/errors. - _configuration = - [NSURLSessionConfiguration backgroundSessionConfiguration:sessionIdentifier]; -#endif - } + _configuration = [NSURLSessionConfiguration + backgroundSessionConfigurationWithIdentifier:sessionIdentifier]; self.usingBackgroundSession = YES; self.canShareSession = NO; } else { @@ -762,8 +771,7 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; if (effectiveHTTPMethod == nil) { effectiveHTTPMethod = fetchRequest.HTTPMethod; } - BOOL isEffectiveHTTPGet = (effectiveHTTPMethod == nil - || [effectiveHTTPMethod isEqual:@"GET"]); + BOOL isEffectiveHTTPGet = (effectiveHTTPMethod == nil || [effectiveHTTPMethod isEqual:@"GET"]); BOOL needsUploadTask = (self.useUploadTask || self.bodyFileURL || self.bodyStreamProvider); if (_bodyData || self.bodyStreamProvider || fetchRequest.HTTPBodyStream) { @@ -807,6 +815,23 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; } } + if (mayDecorate && [_service respondsToSelector:@selector(decorators)]) { + NSArray> *decorators = _service.decorators; + if (decorators.count) { + // If this session is held by the fetcher service, clear the session now so that we don't + // assume it's still valid after decoration completes. + // + // The service will still hold on to the session, so as long as decoration doesn't take more + // than 30 seconds since the last request, the service's session will be re-used when the + // fetch actually starts. + if (self.canShareSession) { + self.session = nil; + } + [self applyDecoratorsAtRequestWillStart:decorators startingAtIndex:0]; + return; + } + } + // set the default upload or download retry interval, if necessary if ([self isRetryEnabled] && self.maxRetryInterval <= 0) { if (isEffectiveHTTPGet || [effectiveHTTPMethod isEqual:@"HEAD"]) { @@ -821,8 +846,8 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; BOOL needsDataAccumulator = NO; if (_downloadResumeData) { newSessionTask = [_session downloadTaskWithResumeData:_downloadResumeData]; - GTMSESSION_ASSERT_DEBUG_OR_LOG(newSessionTask, - @"Failed downloadTaskWithResumeData for %@, resume data %lu bytes", + GTMSESSION_ASSERT_DEBUG_OR_LOG( + newSessionTask, @"Failed downloadTaskWithResumeData for %@, resume data %lu bytes", _session, (unsigned long)_downloadResumeData.length); } else if (_destinationFileURL && !isDataRequest) { newSessionTask = [_session downloadTaskWithRequest:fetchRequest]; @@ -830,24 +855,23 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; _session, fetchRequest); } else if (needsUploadTask) { if (bodyFileURL) { - newSessionTask = [_session uploadTaskWithRequest:fetchRequest - fromFile:bodyFileURL]; + newSessionTask = [_session uploadTaskWithRequest:fetchRequest fromFile:bodyFileURL]; GTMSESSION_ASSERT_DEBUG_OR_LOG(newSessionTask, - @"Failed uploadTaskWithRequest for %@, %@, file %@", - _session, fetchRequest, bodyFileURL.path); + @"Failed uploadTaskWithRequest for %@, %@, file %@", _session, + fetchRequest, bodyFileURL.path); } else if (self.bodyStreamProvider) { newSessionTask = [_session uploadTaskWithStreamedRequest:fetchRequest]; GTMSESSION_ASSERT_DEBUG_OR_LOG(newSessionTask, - @"Failed uploadTaskWithStreamedRequest for %@, %@", - _session, fetchRequest); + @"Failed uploadTaskWithStreamedRequest for %@, %@", _session, + fetchRequest); } else { - GTMSESSION_ASSERT_DEBUG_OR_LOG(_bodyData != nil, - @"Upload task needs body data, %@", fetchRequest); + GTMSESSION_ASSERT_DEBUG_OR_LOG(_bodyData != nil, @"Upload task needs body data, %@", + fetchRequest); newSessionTask = [_session uploadTaskWithRequest:fetchRequest - fromData:(NSData * GTM_NONNULL_TYPE)_bodyData]; - GTMSESSION_ASSERT_DEBUG_OR_LOG(newSessionTask, - @"Failed uploadTaskWithRequest for %@, %@, body data %lu bytes", - _session, fetchRequest, (unsigned long)_bodyData.length); + fromData:(NSData *_Nonnull)_bodyData]; + GTMSESSION_ASSERT_DEBUG_OR_LOG( + newSessionTask, @"Failed uploadTaskWithRequest for %@, %@, body data %lu bytes", _session, + fetchRequest, (unsigned long)_bodyData.length); } needsDataAccumulator = YES; } else { @@ -872,9 +896,7 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; newSessionTask.taskDescription = _taskDescription; } if (_taskPriority >= 0) { - if (@available(iOS 8.0, macOS 10.10, *)) { - newSessionTask.priority = _taskPriority; - } + newSessionTask.priority = _taskPriority; } #if GTM_DISABLE_FETCHER_TEST_BLOCK @@ -900,8 +922,8 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; // Tell UIApplication that we want to continue even when the app is in the // background. #if DEBUG - NSString *bgTaskName = [NSString stringWithFormat:@"%@-%@", - [self class], fetchRequest.URL.host]; + NSString *bgTaskName = + [NSString stringWithFormat:@"%@-%@", [self class], fetchRequest.URL.host]; #else NSString *bgTaskName = @"GTMSessionFetcher"; #endif @@ -911,22 +933,23 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; // background). __block UIBackgroundTaskIdentifier guardedTaskID = UIBackgroundTaskInvalid; UIBackgroundTaskIdentifier returnedTaskID = - [app beginBackgroundTaskWithName:bgTaskName expirationHandler:^{ - // Background task expiration callback - this block is always invoked by - // UIApplication on the main thread. - UIBackgroundTaskIdentifier localTaskID; - @synchronized(self) { - localTaskID = guardedTaskID; - } - if (localTaskID != UIBackgroundTaskInvalid) { - @synchronized(self) { - if (localTaskID == self.backgroundTaskIdentifier) { - self.backgroundTaskIdentifier = UIBackgroundTaskInvalid; - } - } - [app endBackgroundTask:localTaskID]; - } - }]; + [app beginBackgroundTaskWithName:bgTaskName + expirationHandler:^{ + // Background task expiration callback - this block is always invoked by + // UIApplication on the main thread. + UIBackgroundTaskIdentifier localTaskID; + @synchronized(self) { + localTaskID = guardedTaskID; + } + if (localTaskID != UIBackgroundTaskInvalid) { + @synchronized(self) { + if (localTaskID == self.backgroundTaskIdentifier) { + self.backgroundTaskIdentifier = UIBackgroundTaskInvalid; + } + } + [app endBackgroundTask:localTaskID]; + } + }]; @synchronized(self) { guardedTaskID = returnedTaskID; self.backgroundTaskIdentifier = returnedTaskID; @@ -968,7 +991,7 @@ static GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE gGlobalTestBlock; } } -NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NSError **outError) { +NSData *_Nullable GTMDataFromInputStream(NSInputStream *inputStream, NSError **outError) { NSMutableData *data = [NSMutableData data]; [inputStream open]; @@ -1001,61 +1024,66 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // // Callbacks will all occur on the callback queue. _testBlock(self, ^(NSURLResponse *response, NSData *responseData, NSError *error) { - // Callback from test block. - if (response == nil && responseData == nil && error == nil) { - // Assume the fetcher should execute rather than be tested. - self->_testBlock = nil; - self->_isUsingTestBlock = NO; - [self->_sessionTask resume]; - return; + // Callback from test block. + if (response == nil && responseData == nil && error == nil) { + // Assume the fetcher should execute rather than be tested. + self->_testBlock = nil; + self->_isUsingTestBlock = NO; + [self->_sessionTask resume]; + return; + } + + GTMSessionFetcherBodyStreamProvider bodyStreamProvider = self.bodyStreamProvider; + if (bodyStreamProvider) { + bodyStreamProvider(^(NSInputStream *bodyStream) { + // Read from the input stream into an NSData buffer. We'll drain the stream + // explicitly on a background queue. + [self + invokeOnCallbackQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0) + afterUserStopped:NO + block:^{ + NSError *streamError; + NSData *streamedData = + GTMDataFromInputStream(bodyStream, &streamError); + + dispatch_async(dispatch_get_main_queue(), ^{ + // Continue callbacks on the main thread, since serial behavior + // is more reliable for tests. + [self + simulateDataCallbacksForTestBlockWithBodyData:streamedData + response:response + responseData:responseData + error: + (error + ?: streamError)]; + }); + }]; + }); + } else { + // No input stream; use the supplied data or file URL. + NSURL *bodyFileURL = self.bodyFileURL; + if (bodyFileURL) { + NSError *readError; + self->_bodyData = [NSData dataWithContentsOfURL:bodyFileURL + options:NSDataReadingMappedIfSafe + error:&readError]; + error = readError; } - GTMSessionFetcherBodyStreamProvider bodyStreamProvider = self.bodyStreamProvider; - if (bodyStreamProvider) { - bodyStreamProvider(^(NSInputStream *bodyStream){ - // Read from the input stream into an NSData buffer. We'll drain the stream - // explicitly on a background queue. - [self invokeOnCallbackQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0) - afterUserStopped:NO - block:^{ - NSError *streamError; - NSData *streamedData = GTMDataFromInputStream(bodyStream, &streamError); + // No stream provider. - dispatch_async(dispatch_get_main_queue(), ^{ - // Continue callbacks on the main thread, since serial behavior - // is more reliable for tests. - [self simulateDataCallbacksForTestBlockWithBodyData:streamedData - response:response - responseData:responseData - error:(error ?: streamError)]; - }); - }]; - }); - } else { - // No input stream; use the supplied data or file URL. - NSURL *bodyFileURL = self.bodyFileURL; - if (bodyFileURL) { - NSError *readError; - self->_bodyData = [NSData dataWithContentsOfURL:bodyFileURL - options:NSDataReadingMappedIfSafe - error:&readError]; - error = readError; - } - - // No stream provider. - - // In real fetches, nothing happens until the run loop spins, so apps have leeway to - // set callbacks after they call beginFetch. We'll mirror that fetcher behavior by - // delaying callbacks here at least to the next spin of the run loop. That keeps - // immediate, synchronous setting of callback blocks after beginFetch working in tests. - dispatch_async(dispatch_get_main_queue(), ^{ - [self simulateDataCallbacksForTestBlockWithBodyData:self->_bodyData - response:response - responseData:responseData - error:error]; - }); - } - }); + // In real fetches, nothing happens until the run loop spins, so apps have leeway to + // set callbacks after they call beginFetch. We'll mirror that fetcher behavior by + // delaying callbacks here at least to the next spin of the run loop. That keeps + // immediate, synchronous setting of callback blocks after beginFetch working in tests. + dispatch_async(dispatch_get_main_queue(), ^{ + [self simulateDataCallbacksForTestBlockWithBodyData:self->_bodyData + response:response + responseData:responseData + error:error]; + }); + } + }); } - (void)simulateByteTransferReportWithDataLength:(int64_t)totalDataLength @@ -1069,12 +1097,12 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS sendReportSize = MIN(sendReportSize, bytesRemaining); totalSent += sendReportSize; [self invokeOnCallbackQueueUnlessStopped:^{ - block(sendReportSize, totalSent, totalDataLength); + block(sendReportSize, totalSent, totalDataLength); }]; } } -- (void)simulateDataCallbacksForTestBlockWithBodyData:(NSData * GTM_NULLABLE_TYPE)bodyData +- (void)simulateDataCallbacksForTestBlockWithBodyData:(nullable NSData *)bodyData response:(NSURLResponse *)response responseData:(NSData *)suppliedData error:(NSError *)suppliedError { @@ -1101,13 +1129,14 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // Simulate receipt of redirection. if (willRedirectBlock) { - [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:YES - block:^{ - willRedirectBlock((NSHTTPURLResponse *)response, self->_request, - ^(NSURLRequest *redirectRequest) { - // For simulation, we'll assume the app will just continue. - }); - }]; + __auto_type block = ^{ + willRedirectBlock((NSHTTPURLResponse *)response, self->_request, + ^(NSURLRequest *redirectRequest){ + // For simulation, we'll assume + // the app will just continue. + }); + }; + [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:YES block:block]; } // If the fetcher has a challenge block, simulate a challenge. @@ -1116,8 +1145,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // fetches get challenged rather than always executing the supplied // challenge block. if (challengeBlock) { - [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:YES - block:^{ + __auto_type block = ^{ NSURL *requestURL = self->_request.URL; NSString *host = requestURL.host; NSURLProtectionSpace *pspace = @@ -1135,53 +1163,60 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS failureResponse:nil error:nil sender:unusedSender]; - challengeBlock(self, challenge, ^(NSURLSessionAuthChallengeDisposition disposition, - NSURLCredential * GTM_NULLABLE_TYPE credential){ - // We could change the responseData and responseError based on the disposition, - // but it's easier for apps to just supply the expected data and error - // directly to the test block. So this simulation ignores the disposition. - }); - }]; + challengeBlock(self, challenge, + ^(NSURLSessionAuthChallengeDisposition disposition, + NSURLCredential *_Nullable credential){ + // We could change the + // responseData and responseError + // based on the disposition, + // but it's easier for apps to + // just supply the expected data + // and error + // directly to the test block. So + // this simulation ignores the + // disposition. + }); + }; + [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:YES block:block]; } // Simulate receipt of an initial response. if (response && didReceiveResponseBlock) { - [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:YES - block:^{ - didReceiveResponseBlock(response, ^(NSURLSessionResponseDisposition desiredDisposition) { - // For simulation, we'll assume the disposition is to continue. - }); - }]; + __auto_type block = ^{ + didReceiveResponseBlock(response, ^(NSURLSessionResponseDisposition desiredDisposition){ + // For simulation, we'll assume + // the disposition is to continue. + }); + }; + [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:YES block:block]; } // Simulate reporting send progress. if (sendProgressBlock) { - [self simulateByteTransferReportWithDataLength:(int64_t)bodyData.length - block:^(int64_t bytesSent, - int64_t totalBytesSent, - int64_t totalBytesExpectedToSend) { - // This is invoked on the callback queue unless stopped. - sendProgressBlock(bytesSent, totalBytesSent, totalBytesExpectedToSend); - }]; + __auto_type block = + ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { + // This is invoked on the callback queue unless + // stopped. + sendProgressBlock(bytesSent, totalBytesSent, totalBytesExpectedToSend); + }; + [self simulateByteTransferReportWithDataLength:(int64_t)bodyData.length block:block]; } if (destinationFileURL) { // Simulate download to file progress. if (downloadProgressBlock) { - [self simulateByteTransferReportWithDataLength:(int64_t)responseData.length - block:^(int64_t bytesDownloaded, - int64_t totalBytesDownloaded, - int64_t totalBytesExpectedToDownload) { - // This is invoked on the callback queue unless stopped. - downloadProgressBlock(bytesDownloaded, totalBytesDownloaded, - totalBytesExpectedToDownload); - }]; + __auto_type block = ^(int64_t bytesDownloaded, int64_t totalBytesDownloaded, + int64_t totalBytesExpectedToDownload) { + // This is invoked on the callback queue unless + // stopped. + downloadProgressBlock(bytesDownloaded, totalBytesDownloaded, + totalBytesExpectedToDownload); + }; + [self simulateByteTransferReportWithDataLength:(int64_t)responseData.length block:block]; } NSError *writeError; - [responseData writeToURL:destinationFileURL - options:NSDataWritingAtomic - error:&writeError]; + [responseData writeToURL:destinationFileURL options:NSDataWritingAtomic error:&writeError]; if (writeError) { // Tell the test code that writing failed. responseError = writeError; @@ -1189,11 +1224,8 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS } else { // Simulate download to NSData progress. if ((accumulateDataBlock || receivedProgressBlock) && responseData) { - [self simulateByteTransferWithData:responseData - block:^(NSData *data, - int64_t bytesReceived, - int64_t totalBytesReceived, - int64_t totalBytesExpectedToReceive) { + __auto_type block = ^(NSData *data, int64_t bytesReceived, int64_t totalBytesReceived, + int64_t totalBytesExpectedToReceive) { // This is invoked on the callback queue unless stopped. if (accumulateDataBlock) { accumulateDataBlock(data); @@ -1202,7 +1234,8 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS if (receivedProgressBlock) { receivedProgressBlock(bytesReceived, totalBytesReceived); } - }]; + }; + [self simulateByteTransferWithData:responseData block:block]; } if (!accumulateDataBlock) { @@ -1213,14 +1246,15 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // Simulate letting the client inspect and alter the cached response. NSData *cachedData = responseData ?: [[NSData alloc] init]; // Always have non-nil data. NSCachedURLResponse *cachedResponse = - [[NSCachedURLResponse alloc] initWithResponse:response - data:cachedData]; - [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:YES - block:^{ - willCacheURLResponseBlock(cachedResponse, ^(NSCachedURLResponse *responseToCache){ - // The app may provide an alternative response, or nil to defeat caching. - }); - }]; + [[NSCachedURLResponse alloc] initWithResponse:response data:cachedData]; + __auto_type block = ^{ + willCacheURLResponseBlock(cachedResponse, ^(NSCachedURLResponse *responseToCache){ + // The app may provide an + // alternative response, or + // nil to defeat caching. + }); + }; + [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:YES block:block]; } } _response = response; @@ -1238,8 +1272,8 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS error:responseError forceAssumeRetry:NO response:^(BOOL shouldRetry) { - [self finishWithError:responseError shouldRetry:shouldRetry]; - }]; + [self finishWithError:responseError shouldRetry:shouldRetry]; + }]; } }]; } @@ -1250,7 +1284,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // "chunkCount" chunks and then passes each chunk along with a progress update to transferBlock. // This function can be used with accumulateDataBlock or receivedProgressBlock. - NSUInteger chunkCount = MAX(self.testBlockAccumulateDataChunkCount, (NSUInteger) 1); + NSUInteger chunkCount = MAX(self.testBlockAccumulateDataChunkCount, (NSUInteger)1); NSUInteger totalDataLength = responseData.length; NSUInteger sendDataSize = totalDataLength / chunkCount + 1; NSUInteger totalSent = 0; @@ -1260,10 +1294,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS NSData *chunkData = [responseData subdataWithRange:NSMakeRange(totalSent, sendDataSize)]; totalSent += sendDataSize; [self invokeOnCallbackQueueUnlessStopped:^{ - transferBlock(chunkData, - (int64_t)sendDataSize, - (int64_t)totalSent, - (int64_t)totalDataLength); + transferBlock(chunkData, (int64_t)sendDataSize, (int64_t)totalSent, (int64_t)totalDataLength); }]; } } @@ -1286,7 +1317,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS } // @synchronized(self) } -- (NSURLSessionTask * GTM_NULLABLE_TYPE)sessionTask { +- (nullable NSURLSessionTask *)sessionTask { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -1318,14 +1349,12 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS if ([oldBackgroundSessions containsObject:_sessionIdentifier]) { return; } - NSMutableArray *newBackgroundSessions = - [NSMutableArray arrayWithArray:oldBackgroundSessions]; + NSMutableArray *newBackgroundSessions = [NSMutableArray arrayWithArray:oldBackgroundSessions]; [newBackgroundSessions addObject:sessionIdentifier]; GTM_LOG_BACKGROUND_SESSION(@"Add to background sessions: %@", newBackgroundSessions); NSUserDefaults *userDefaults = [[self class] fetcherUserDefaults]; - [userDefaults setObject:newBackgroundSessions - forKey:kGTMSessionFetcherPersistedDestinationKey]; + [userDefaults setObject:newBackgroundSessions forKey:kGTMSessionFetcherPersistedDestinationKey]; [userDefaults synchronize]; } @@ -1337,8 +1366,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS if (!oldBackgroundSessions) { return; } - NSMutableArray *newBackgroundSessions = - [NSMutableArray arrayWithArray:oldBackgroundSessions]; + NSMutableArray *newBackgroundSessions = [NSMutableArray arrayWithArray:oldBackgroundSessions]; NSUInteger sessionIndex = [newBackgroundSessions indexOfObject:sessionIdentifier]; if (sessionIndex == NSNotFound) { return; @@ -1350,13 +1378,12 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS if (newBackgroundSessions.count == 0) { [userDefaults removeObjectForKey:kGTMSessionFetcherPersistedDestinationKey]; } else { - [userDefaults setObject:newBackgroundSessions - forKey:kGTMSessionFetcherPersistedDestinationKey]; + [userDefaults setObject:newBackgroundSessions forKey:kGTMSessionFetcherPersistedDestinationKey]; } [userDefaults synchronize]; } -+ (GTM_NULLABLE NSArray *)activePersistedBackgroundSessions { ++ (nullable NSArray *)activePersistedBackgroundSessions { NSUserDefaults *userDefaults = [[self class] fetcherUserDefaults]; NSArray *oldBackgroundSessions = [userDefaults arrayForKey:kGTMSessionFetcherPersistedDestinationKey]; @@ -1387,14 +1414,14 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS GTMSessionFetcher *fetcher = [sessionIdentifierToFetcherMap objectForKey:sessionIdentifier]; if (!fetcher) { fetcher = [self fetcherWithSessionIdentifier:sessionIdentifier]; - GTMSESSION_ASSERT_DEBUG(fetcher != nil, - @"Unexpected invalid session identifier: %@", sessionIdentifier); + GTMSESSION_ASSERT_DEBUG(fetcher != nil, @"Unexpected invalid session identifier: %@", + sessionIdentifier); if (!fetcher.clientWillReconnectBackgroundSession) { [fetcher beginFetchWithCompletionHandler:nil]; } } - GTM_LOG_BACKGROUND_SESSION(@"%@ restoring session %@ by creating fetcher %@ %p", - [self class], sessionIdentifier, fetcher, fetcher); + GTM_LOG_BACKGROUND_SESSION(@"%@ restoring session %@ by creating fetcher %@ %p", [self class], + sessionIdentifier, fetcher, fetcher); if (fetcher != nil) { [fetchers addObject:fetcher]; } @@ -1405,18 +1432,19 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS #if TARGET_OS_IPHONE && !TARGET_OS_WATCH + (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier - completionHandler:(GTMSessionFetcherSystemCompletionHandler)completionHandler { + completionHandler:(GTMSessionFetcherSystemCompletionHandler)completionHandler + GTM_SWIFT_DISABLE_ASYNC { GTMSessionFetcher *fetcher = [self fetcherWithSessionIdentifier:identifier]; if (fetcher != nil) { fetcher.systemCompletionHandler = completionHandler; } else { - GTM_LOG_BACKGROUND_SESSION(@"%@ did not create background session identifier: %@", - [self class], identifier); + GTM_LOG_BACKGROUND_SESSION(@"%@ did not create background session identifier: %@", [self class], + identifier); } } #endif -- (NSString * GTM_NULLABLE_TYPE)sessionIdentifier { +- (nullable NSString *)sessionIdentifier { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -1437,7 +1465,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS } // @synchronized(self) } -- (void)setSessionIdentifierInternal:(GTM_NULLABLE NSString *)sessionIdentifier { +- (void)setSessionIdentifierInternal:(nullable NSString *)sessionIdentifier { // This internal method only does a synchronized set of the session identifier. // It does not have side effects on the background session, shared session, or // session identifier metadata. @@ -1448,7 +1476,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS } // @synchronized(self) } -- (NSDictionary * GTM_NULLABLE_TYPE)sessionUserInfo { +- (nullable NSDictionary *)sessionUserInfo { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -1457,7 +1485,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // re-using the userInfo dictionary later and accidentally including the internal keys. NSMutableDictionary *metadata = [[self sessionIdentifierMetadataUnsynchronized] mutableCopy]; NSSet *keysToRemove = [metadata keysOfEntriesPassingTest:^BOOL(id key, id obj, BOOL *stop) { - return [key hasPrefix:@"_"]; + return [key hasPrefix:@"_"]; }]; [metadata removeObjectsForKeys:[keysToRemove allObjects]]; if (metadata.count > 0) { @@ -1468,7 +1496,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS } // @synchronized(self) } -- (void)setSessionUserInfo:(NSDictionary * GTM_NULLABLE_TYPE)dictionary { +- (void)setSessionUserInfo:(nullable NSDictionary *)dictionary { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -1477,7 +1505,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS } // @synchronized(self) } -- (GTM_NULLABLE NSDictionary *)sessionIdentifierDefaultMetadata { +- (nullable NSDictionary *)sessionIdentifierDefaultMetadata { GTMSessionCheckSynchronized(self); NSMutableDictionary *defaultUserInfo = [[NSMutableDictionary alloc] init]; @@ -1516,7 +1544,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS } } -- (NSDictionary * GTM_NULLABLE_TYPE)sessionIdentifierMetadata { +- (nullable NSDictionary *)sessionIdentifierMetadata { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -1524,7 +1552,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS } } -- (NSDictionary * GTM_NULLABLE_TYPE)sessionIdentifierMetadataUnsynchronized { +- (nullable NSDictionary *)sessionIdentifierMetadataUnsynchronized { GTMSessionCheckSynchronized(self); // Session Identifier format: "com.google.__ @@ -1543,18 +1571,17 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS _sessionIdentifierUUID = uuid; NSData *metadataData = [metadataString dataUsingEncoding:NSUTF8StringEncoding]; NSError *error; - NSDictionary *metadataDict = - [NSJSONSerialization JSONObjectWithData:metadataData - options:0 - error:&error]; - GTM_LOG_BACKGROUND_SESSION(@"User Info from session identifier: %@ %@", - metadataDict, error ? error : @""); + NSDictionary *metadataDict = [NSJSONSerialization JSONObjectWithData:metadataData + options:0 + error:&error]; + GTM_LOG_BACKGROUND_SESSION(@"User Info from session identifier: %@ %@", metadataDict, + error ? error : @""); return metadataDict; } return nil; } -- (NSString *)createSessionIdentifierWithMetadata:(NSDictionary * GTM_NULLABLE_TYPE)metadataToInclude { +- (NSString *)createSessionIdentifierWithMetadata:(nullable NSDictionary *)metadataToInclude { NSString *result; @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -1563,10 +1590,10 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS GTMSESSION_ASSERT_DEBUG(!_sessionIdentifier, @"Session identifier already created"); _sessionIdentifierUUID = [[NSUUID UUID] UUIDString]; _sessionIdentifier = - [NSString stringWithFormat:@"%@_%@", kGTMSessionIdentifierPrefix, _sessionIdentifierUUID]; + [NSString stringWithFormat:@"%@_%@", kGTMSessionIdentifierPrefix, _sessionIdentifierUUID]; // Start with user-supplied keys so they cannot accidentally override the fetcher's keys. NSMutableDictionary *metadataDict = - [NSMutableDictionary dictionaryWithDictionary:(NSDictionary * GTM_NONNULL_TYPE)_sessionUserInfo]; + [NSMutableDictionary dictionaryWithDictionary:(NSDictionary *_Nonnull)_sessionUserInfo]; if (metadataToInclude) { [metadataDict addEntriesFromDictionary:(NSDictionary *)metadataToInclude]; @@ -1584,8 +1611,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS if (metadataData.length > 0) { NSString *metadataString = [[NSString alloc] initWithData:metadataData encoding:NSUTF8StringEncoding]; - _sessionIdentifier = - [_sessionIdentifier stringByAppendingFormat:@"_%@", metadataString]; + _sessionIdentifier = [_sessionIdentifier stringByAppendingFormat:@"_%@", metadataString]; } } _didCreateSessionIdentifier = YES; @@ -1608,8 +1634,9 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS } [self invokeFetchCallbacksOnCallbackQueueWithData:nil - error:error]; - [self releaseCallbacks]; + error:error + mayDecorate:YES + shouldReleaseCallbacks:YES]; [_service fetcherDidStop:self]; @@ -1645,7 +1672,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS } } -#endif // GTM_BACKGROUND_TASK_FETCHING +#endif // GTM_BACKGROUND_TASK_FETCHING - (void)authorizeRequest { GTMSessionCheckNotSynchronized(self); @@ -1655,22 +1682,19 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS if ([authorizer respondsToSelector:asyncAuthSel]) { SEL callbackSel = @selector(authorizer:request:finishedWithError:); NSMutableURLRequest *mutableRequest = [self.request mutableCopy]; - [authorizer authorizeRequest:mutableRequest - delegate:self - didFinishSelector:callbackSel]; + [authorizer authorizeRequest:mutableRequest delegate:self didFinishSelector:callbackSel]; } else { GTMSESSION_ASSERT_DEBUG(authorizer == nil, @"invalid authorizer for fetch"); // No authorizing possible, and authorizing happens only after any delay; // just begin fetching - [self beginFetchMayDelay:NO - mayAuthorize:NO]; + [self beginFetchMayDelay:NO mayAuthorize:NO mayDecorate:YES]; } } - (void)authorizer:(id)auth - request:(NSMutableURLRequest *)authorizedRequest - finishedWithError:(NSError *)error { + request:(NSMutableURLRequest *)authorizedRequest + finishedWithError:(NSError *)error { GTMSessionCheckNotSynchronized(self); if (error != nil) { @@ -1680,11 +1704,90 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS @synchronized(self) { _request = authorizedRequest; } - [self beginFetchMayDelay:NO - mayAuthorize:NO]; + [self beginFetchMayDelay:NO mayAuthorize:NO mayDecorate:YES]; } } +- (void)applyDecoratorsAtRequestWillStart:(NSArray> *)decorators + startingAtIndex:(NSUInteger)index { + GTMSessionCheckNotSynchronized(self); + if (index >= decorators.count) { + GTMSESSION_LOG_DEBUG(@"GTMSessionFetcher decorate requestWillStart %zu decorators complete", + decorators.count); + [self beginFetchMayDelay:NO mayAuthorize:NO mayDecorate:NO]; + return; + } + + __weak __typeof__(self) weakSelf = self; + id decorator = decorators[index]; + GTMSESSION_LOG_DEBUG(@"GTMSessionFetcher decorate requestWillStart %zu decorators, index %zu, " + @"retry count %zu, decorator %@", + decorators.count, index, self.retryCount, decorator); + [decorator fetcherWillStart:self + completionHandler:^(NSURLRequest *_Nullable newRequest, NSError *_Nullable error) { + GTMSESSION_LOG_DEBUG(@"GTMSessionFetcher decorator requestWillStart index %zu " + @"complete, newRequest %@, error %@", + index, newRequest, error); + __strong __typeof__(self) strongSelf = weakSelf; + if (!strongSelf) { + GTMSESSION_LOG_DEBUG(@"GTMSessionFetcher destroyed before requestWillStart " + @"decorators completed, ignoring."); + return; + } + if (error) { + [self failToBeginFetchWithError:(NSError *_Nonnull)error]; + return; + } + if (newRequest) { + // Copying `NSURLRequest` should be cheap, but in case profiling shows this + // operation is prohibitively expensive, this API might need to be changed to allow + // clients to manipulate `self.request` directly. + [strongSelf updateMutableRequest:[newRequest mutableCopy]]; + } + [strongSelf applyDecoratorsAtRequestWillStart:decorators startingAtIndex:index + 1]; + }]; +} + +- (void)applyDecoratorsAtRequestDidFinish:(NSArray> *)decorators + withData:(nullable NSData *)data + error:(nullable NSError *)error + startingAtIndex:(NSUInteger)index + shouldReleaseCallbacks:(BOOL)shouldReleaseCallbacks { + GTMSessionCheckNotSynchronized(self); + if (index >= decorators.count) { + GTMSESSION_LOG_DEBUG(@"GTMSessionFetcher decorate requestDidFinish %zu decorators complete", + decorators.count); + [self invokeFetchCallbacksOnCallbackQueueWithData:data + error:error + mayDecorate:NO + shouldReleaseCallbacks:shouldReleaseCallbacks]; + return; + } + + __weak __typeof__(self) weakSelf = self; + id decorator = decorators[index]; + GTMSESSION_LOG_DEBUG(@"GTMSessionFetcher decorate requestDidFinish %zu decorators, index %zu, " + @"retry count %zu, decorator %@", + decorators.count, index, self.retryCount, decorator); + [decorator fetcherDidFinish:self + withData:data + error:error + completionHandler:^{ + GTMSESSION_LOG_DEBUG( + @"GTMSessionFetcher decorator requestDidFinish index %zu complete", index); + __strong __typeof__(self) strongSelf = weakSelf; + if (!strongSelf) { + GTMSESSION_LOG_DEBUG(@"GTMSessionFetcher destroyed before requestDidFinish " + @"decorators completed, ignoring."); + return; + } + [strongSelf applyDecoratorsAtRequestDidFinish:decorators + withData:data + error:error + startingAtIndex:index + 1 + shouldReleaseCallbacks:shouldReleaseCallbacks]; + }]; +} - (BOOL)canFetchWithBackgroundSession { // Subclasses may override. @@ -1710,7 +1813,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS return hasBegun && !_hasStoppedFetching; } -- (NSURLResponse * GTM_NULLABLE_TYPE)response { +- (nullable NSURLResponse *)response { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -1719,7 +1822,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS } // @synchronized(self) } -- (NSURLResponse * GTM_NULLABLE_TYPE)responseUnsynchronized { +- (nullable NSURLResponse *)responseUnsynchronized { GTMSessionCheckSynchronized(self); NSURLResponse *response = _sessionTask.response; @@ -1752,7 +1855,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS return statusCode; } -- (NSDictionary * GTM_NULLABLE_TYPE)responseHeaders { +- (nullable NSDictionary *)responseHeaders { GTMSessionCheckNotSynchronized(self); NSURLResponse *response = self.response; @@ -1763,7 +1866,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS return nil; } -- (NSDictionary * GTM_NULLABLE_TYPE)responseHeadersUnsynchronized { +- (nullable NSDictionary *)responseHeadersUnsynchronized { GTMSessionCheckSynchronized(self); NSURLResponse *response = [self responseUnsynchronized]; @@ -1775,11 +1878,17 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS } - (void)releaseCallbacks { + // The clang included with Xcode 13.3 betas added a -Wunused-but-set-variable warning, + // which doesn't (yet) skip variables annotated with objc_precie_lifetime. Since that + // warning is not available in all Xcodes, turn off the -Wunused warning group entirely. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunused" // Avoid releasing blocks in the sync section since objects dealloc'd by // the blocks being released may call back into the fetcher or fetcher // service. dispatch_queue_t NS_VALID_UNTIL_END_OF_SCOPE holdCallbackQueue; GTMSessionFetcherCompletionHandler NS_VALID_UNTIL_END_OF_SCOPE holdCompletionHandler; +#pragma clang diagnostic pop @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -1807,7 +1916,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS self.retryBlock = nil; self.testBlock = nil; self.resumeDataBlock = nil; - if (@available(iOS 10.0, macOS 10.12, tvOS 10.0, watchOS 3.0, *)) { + if (@available(iOS 10.0, *)) { self.metricsCollectionBlock = nil; } } @@ -1857,6 +1966,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS [holdSelf destroyRetryTimer]; + BOOL sendStopNotification = YES; @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -1881,8 +1991,8 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS if ([oldTask state] != NSURLSessionTaskStateCompleted) { // For download tasks, when the fetch is stopped, we may provide resume data that can // be used to create a new session. - BOOL mayResume = (_resumeDataBlock - && [oldTask respondsToSelector:@selector(cancelByProducingResumeData:)]); + BOOL mayResume = (_resumeDataBlock && + [oldTask respondsToSelector:@selector(cancelByProducingResumeData:)]); if (!mayResume) { [oldTask cancel]; // A side effect of stopping the task is that URLSession:task:didCompleteWithError: @@ -1895,12 +2005,12 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS dispatch_queue_t callbackQueue = _callbackQueue; dispatch_group_enter(_callbackGroup); [(NSURLSessionDownloadTask *)oldTask cancelByProducingResumeData:^(NSData *resumeData) { - [self invokeOnCallbackQueue:callbackQueue - afterUserStopped:YES - block:^{ - resumeBlock(resumeData); - dispatch_group_leave(self->_callbackGroup); - }]; + [self invokeOnCallbackQueue:callbackQueue + afterUserStopped:YES + block:^{ + resumeBlock(resumeData); + dispatch_group_leave(self->_callbackGroup); + }]; }]; } hasCanceledTask = YES; @@ -1923,14 +2033,19 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS if (!hasCanceledTask) { [oldSession finishTasksAndInvalidate]; } else { + sendStopNotification = NO; _sessionNeedingInvalidation = oldSession; } } } } // @synchronized(self) - // send the stopped notification - [self sendStopNotificationIfNeeded]; + // If the NSURLSession needs to be invalidated, but needs to wait until the delegate method + // URLSession:task:didCompleteWithError: is called, delay sending the fetch stopped notification + // until then; otherwise send it now. + if (sendStopNotification) { + [self sendStopNotificationIfNeeded]; + } [_authorizer stopAuthorizationForRequest:request]; @@ -2004,9 +2119,9 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS NSDate *giveUpDate = [NSDate dateWithTimeIntervalSinceNow:timeoutInSeconds]; - BOOL shouldSpinRunLoop = ([NSThread isMainThread] && - (!self.callbackQueue - || self.callbackQueue == dispatch_get_main_queue())); + BOOL shouldSpinRunLoop = + ([NSThread isMainThread] && + (!self.callbackQueue || self.callbackQueue == dispatch_get_main_queue())); BOOL expired = NO; // Loop until the callbacks have been called and released, and until @@ -2014,19 +2129,20 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS // in flight, or until the timeout has expired. int64_t delta = (int64_t)(100 * NSEC_PER_MSEC); // 100 ms while (1) { - BOOL isTaskInProgress = (holdSelf->_sessionTask - && [_sessionTask state] != NSURLSessionTaskStateCompleted); + BOOL isTaskInProgress = + (holdSelf->_sessionTask && [_sessionTask state] != NSURLSessionTaskStateCompleted); BOOL needsToCallCompletion = (_completionHandler != nil); - BOOL isCallbackInProgress = (_callbackGroup - && dispatch_group_wait(_callbackGroup, dispatch_time(DISPATCH_TIME_NOW, delta))); + BOOL isCallbackInProgress = + (_callbackGroup && + dispatch_group_wait(_callbackGroup, dispatch_time(DISPATCH_TIME_NOW, delta))); if (!isTaskInProgress && !needsToCallCompletion && !isCallbackInProgress) break; expired = ([giveUpDate timeIntervalSinceNow] < 0); if (expired) { GTMSESSION_LOG_DEBUG(@"GTMSessionFetcher waitForCompletionWithTimeout:%0.1f expired -- " - @"%@%@%@", timeoutInSeconds, - isTaskInProgress ? @"taskInProgress " : @"", + @"%@%@%@", + timeoutInSeconds, isTaskInProgress ? @"taskInProgress " : @"", needsToCallCompletion ? @"needsToCallCompletion " : @"", isCallbackInProgress ? @"isCallbackInProgress" : @""); break; @@ -2045,7 +2161,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS return !expired; } -+ (void)setGlobalTestBlock:(GTMSessionFetcherTestBlock GTM_NULLABLE_TYPE)block { ++ (void)setGlobalTestBlock:(nullable GTMSessionFetcherTestBlock)block { #if GTM_DISABLE_FETCHER_TEST_BLOCK GTMSESSION_ASSERT_DEBUG(block == nil, @"test blocks disabled"); #endif @@ -2054,7 +2170,7 @@ NSData * GTM_NULLABLE_TYPE GTMDataFromInputStream(NSInputStream *inputStream, NS #if GTM_BACKGROUND_TASK_FETCHING -static GTM_NULLABLE_TYPE id gSubstituteUIApp; +static _Nullable id gSubstituteUIApp; + (void)setSubstituteUIApplication:(nullable id)app { gSubstituteUIApp = app; @@ -2088,7 +2204,7 @@ static GTM_NULLABLE_TYPE id gSubstituteUIApp; } return app; } -#endif // GTM_BACKGROUND_TASK_FETCHING +#endif // GTM_BACKGROUND_TASK_FETCHING #pragma mark NSURLSession Delegate Methods @@ -2098,13 +2214,14 @@ static GTM_NULLABLE_TYPE id gSubstituteUIApp; // redirect. - (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task -willPerformHTTPRedirection:(NSHTTPURLResponse *)redirectResponse - newRequest:(NSURLRequest *)redirectRequest - completionHandler:(void (^)(NSURLRequest * GTM_NULLABLE_TYPE))handler { + task:(NSURLSessionTask *)task + willPerformHTTPRedirection:(NSHTTPURLResponse *)redirectResponse + newRequest:(NSURLRequest *)redirectRequest + completionHandler:(void (^)(NSURLRequest *_Nullable))handler { [self setSessionTask:task]; - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ task:%@ willPerformHTTPRedirection:%@ newRequest:%@", - [self class], self, session, task, redirectResponse, redirectRequest); + GTMSESSION_LOG_DEBUG_VERBOSE( + @"%@ %p URLSession:%@ task:%@ willPerformHTTPRedirection:%@ newRequest:%@", [self class], + self, session, task, redirectResponse, redirectRequest); if ([self userStoppedFetching]) { handler(nil); @@ -2128,7 +2245,7 @@ willPerformHTTPRedirection:(NSHTTPURLResponse *)redirectResponse redirectRequest = newRequest; - // Log the response we just received + // Log the response we just received [self setResponse:redirectResponse]; [self logNowWithError:nil]; @@ -2136,16 +2253,15 @@ willPerformHTTPRedirection:(NSHTTPURLResponse *)redirectResponse if (willRedirectBlock) { @synchronized(self) { GTMSessionMonitorSynchronized(self); - [self invokeOnCallbackQueueAfterUserStopped:YES - block:^{ - willRedirectBlock(redirectResponse, redirectRequest, ^(NSURLRequest *clientRequest) { + __auto_type block = ^{ + willRedirectBlock(redirectResponse, redirectRequest, ^(NSURLRequest *clientRequest) { + // Update the request for future logging. + [self updateMutableRequest:[clientRequest mutableCopy]]; - // Update the request for future logging. - [self updateMutableRequest:[clientRequest mutableCopy]]; - - handler(clientRequest); - }); - }]; + handler(clientRequest); + }); + }; + [self invokeOnCallbackQueueAfterUserStopped:YES block:block]; } // @synchronized(self) return; } @@ -2158,37 +2274,36 @@ willPerformHTTPRedirection:(NSHTTPURLResponse *)redirectResponse } - (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)dataTask -didReceiveResponse:(NSURLResponse *)response - completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))handler { + dataTask:(NSURLSessionDataTask *)dataTask + didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))handler { [self setSessionTask:dataTask]; - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ dataTask:%@ didReceiveResponse:%@", - [self class], self, session, dataTask, response); - void (^accumulateAndFinish)(NSURLSessionResponseDisposition) = - ^(NSURLSessionResponseDisposition dispositionValue) { - // This method is called when the server has determined that it - // has enough information to create the NSURLResponse - // it can be called multiple times, for example in the case of a - // redirect, so each time we reset the data. - @synchronized(self) { - GTMSessionMonitorSynchronized(self); + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ dataTask:%@ didReceiveResponse:%@", + [self class], self, session, dataTask, response); + __auto_type accumulateAndFinish = ^(NSURLSessionResponseDisposition dispositionValue) { + // This method is called when the server has determined that it + // has enough information to create the NSURLResponse + // it can be called multiple times, for example in the case of a + // redirect, so each time we reset the data. + @synchronized(self) { + GTMSessionMonitorSynchronized(self); - BOOL hadPreviousData = self->_downloadedLength > 0; + BOOL hadPreviousData = self->_downloadedLength > 0; - [self->_downloadedData setLength:0]; - self->_downloadedLength = 0; + [self->_downloadedData setLength:0]; + self->_downloadedLength = 0; - if (hadPreviousData && (dispositionValue != NSURLSessionResponseCancel)) { - // Tell the accumulate block to discard prior data. - GTMSessionFetcherAccumulateDataBlock accumulateBlock = self->_accumulateDataBlock; - if (accumulateBlock) { - [self invokeOnCallbackQueueUnlessStopped:^{ - accumulateBlock(nil); - }]; - } + if (hadPreviousData && (dispositionValue != NSURLSessionResponseCancel)) { + // Tell the accumulate block to discard prior data. + GTMSessionFetcherAccumulateDataBlock accumulateBlock = self->_accumulateDataBlock; + if (accumulateBlock) { + [self invokeOnCallbackQueueUnlessStopped:^{ + accumulateBlock(nil); + }]; } - } // @synchronized(self) - handler(dispositionValue); + } + } // @synchronized(self) + handler(dispositionValue); }; GTMSessionFetcherDidReceiveResponseBlock receivedResponseBlock; @@ -2199,12 +2314,12 @@ didReceiveResponse:(NSURLResponse *)response if (receivedResponseBlock) { // We will ultimately need to call back to NSURLSession's handler with the disposition value // for this delegate method even if the user has stopped the fetcher. - [self invokeOnCallbackQueueAfterUserStopped:YES - block:^{ + __auto_type block = ^{ receivedResponseBlock(response, ^(NSURLSessionResponseDisposition desiredDisposition) { accumulateAndFinish(desiredDisposition); }); - }]; + }; + [self invokeOnCallbackQueueAfterUserStopped:YES block:block]; } } // @synchronized(self) @@ -2214,22 +2329,21 @@ didReceiveResponse:(NSURLResponse *)response } - (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)dataTask -didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask { - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ dataTask:%@ didBecomeDownloadTask:%@", - [self class], self, session, dataTask, downloadTask); + dataTask:(NSURLSessionDataTask *)dataTask + didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask { + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ dataTask:%@ didBecomeDownloadTask:%@", + [self class], self, session, dataTask, downloadTask); [self setSessionTask:downloadTask]; } - - (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task -didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge - completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, - NSURLCredential * GTM_NULLABLE_TYPE credential))handler { + task:(NSURLSessionTask *)task + didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, + NSURLCredential *_Nullable credential))handler { [self setSessionTask:task]; - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ task:%@ didReceiveChallenge:%@", - [self class], self, session, task, challenge); + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ task:%@ didReceiveChallenge:%@", [self class], + self, session, task, challenge); GTMSessionFetcherChallengeBlock challengeBlock = self.challengeBlock; if (challengeBlock) { @@ -2242,19 +2356,18 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge [self invokeOnCallbackQueueAfterUserStopped:YES block:^{ - challengeBlock(self, challenge, handler); - }]; + challengeBlock(self, challenge, handler); + }]; } } else { // No challenge block was provided by the client. - [self respondToChallenge:challenge - completionHandler:handler]; + [self respondToChallenge:challenge completionHandler:handler]; } } - (void)respondToChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, - NSURLCredential * GTM_NULLABLE_TYPE credential))handler { + NSURLCredential *_Nullable credential))handler { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -2273,12 +2386,13 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge handler(NSURLSessionAuthChallengePerformDefaultHandling, nil); } else { // Server trust information is available. - void (^callback)(SecTrustRef, BOOL) = ^(SecTrustRef trustRef, BOOL allow){ + __auto_type callback = ^(SecTrustRef trustRef, BOOL allow) { if (allow) { NSURLCredential *trustCredential = [NSURLCredential credentialForTrust:trustRef]; handler(NSURLSessionAuthChallengeUseCredential, trustCredential); } else { - GTMSESSION_LOG_DEBUG(@"Cancelling authentication challenge for %@", self->_request.URL); + GTMSESSION_LOG_DEBUG(@"Cancelling authentication challenge for %@", + self->_request.URL); handler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil); } }; @@ -2326,8 +2440,8 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge // Method disallows any scheme changes between the original request URL and redirect request URL // aside from "http" to "https". If a change in scheme is detected the redirect URL inherits the // scheme from the original request URL. -+ (GTM_NULLABLE NSURL *)redirectURLWithOriginalRequestURL:(GTM_NULLABLE NSURL *)originalRequestURL - redirectRequestURL:(GTM_NULLABLE NSURL *)redirectRequestURL { ++ (nullable NSURL *)redirectURLWithOriginalRequestURL:(nullable NSURL *)originalRequestURL + redirectRequestURL:(nullable NSURL *)redirectRequestURL { // In the case of an NSURLSession redirect, neither URL should ever be nil; as a sanity check // if either is nil return the other URL. if (!redirectRequestURL) return originalRequestURL; @@ -2348,7 +2462,7 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge (redirectScheme.length != originalScheme.length || [redirectScheme caseInsensitiveCompare:originalScheme] != NSOrderedSame)) { NSURLComponents *components = - [NSURLComponents componentsWithURL:(NSURL * _Nonnull)redirectRequestURL + [NSURLComponents componentsWithURL:(NSURL *_Nonnull)redirectRequestURL resolvingAgainstBaseURL:NO]; components.scheme = originalScheme; return components.URL; @@ -2384,7 +2498,7 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge // single thread at a time, so we'll stick with using SecTrustEvaluate on a background // thread. dispatch_queue_t evaluateBackgroundQueue = - dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(evaluateBackgroundQueue, ^{ // It looks like the implementation of SecTrustEvaluate() on Mac grabs a global lock, // so it may be redundant for us to also lock, but it's easy to synchronize here @@ -2392,7 +2506,7 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge BOOL shouldAllow; #if GTM_SDK_REQUIRES_SECTRUSTEVALUATEWITHERROR CFErrorRef errorRef = NULL; - @synchronized ([GTMSessionFetcher class]) { + @synchronized([GTMSessionFetcher class]) { GTMSessionMonitorSynchronized([GTMSessionFetcher class]); // SecTrustEvaluateWithError handles both the "proceed" and "unspecified" cases, @@ -2401,8 +2515,8 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge } if (errorRef) { - GTMSESSION_LOG_DEBUG(@"Error %d evaluating trust for %@", - (int)CFErrorGetCode(errorRef), request); + GTMSESSION_LOG_DEBUG(@"Error %d evaluating trust for %@", (int)CFErrorGetCode(errorRef), + request); CFRelease(errorRef); } #else @@ -2438,24 +2552,19 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge } - (void)invokeOnCallbackQueueUnlessStopped:(void (^)(void))block { - [self invokeOnCallbackQueueAfterUserStopped:NO - block:block]; + [self invokeOnCallbackQueueAfterUserStopped:NO block:block]; } -- (void)invokeOnCallbackQueueAfterUserStopped:(BOOL)afterStopped - block:(void (^)(void))block { +- (void)invokeOnCallbackQueueAfterUserStopped:(BOOL)afterStopped block:(void (^)(void))block { GTMSessionCheckSynchronized(self); - [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:afterStopped - block:block]; + [self invokeOnCallbackUnsynchronizedQueueAfterUserStopped:afterStopped block:block]; } - (void)invokeOnCallbackUnsynchronizedQueueAfterUserStopped:(BOOL)afterStopped block:(void (^)(void))block { // testBlock simulation code may not be synchronizing when this is invoked. - [self invokeOnCallbackQueue:_callbackQueue - afterUserStopped:afterStopped - block:block]; + [self invokeOnCallbackQueue:_callbackQueue afterUserStopped:afterStopped block:block]; } - (void)invokeOnCallbackQueue:(dispatch_queue_t)callbackQueue @@ -2463,36 +2572,54 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge block:(void (^)(void))block { if (callbackQueue) { dispatch_group_async(_callbackGroup, callbackQueue, ^{ - if (!afterStopped) { - NSDate *serviceStoppedAllDate = [self->_service stoppedAllFetchersDate]; + if (!afterStopped) { + NSDate *serviceStoppedAllDate = [self->_service stoppedAllFetchersDate]; - @synchronized(self) { - GTMSessionMonitorSynchronized(self); + @synchronized(self) { + GTMSessionMonitorSynchronized(self); - // Avoid a race between stopFetching and the callback. - if (self->_userStoppedFetching) { - return; - } + // Avoid a race between stopFetching and the callback. + if (self->_userStoppedFetching) { + return; + } - // Also avoid calling back if the service has stopped all fetchers - // since this one was created. The fetcher may have stopped before - // stopAllFetchers was invoked, so _userStoppedFetching wasn't set, - // but the app still won't expect the callback to fire after - // the service's stopAllFetchers was invoked. - if (serviceStoppedAllDate - && [self->_initialBeginFetchDate compare:serviceStoppedAllDate] != NSOrderedDescending) { - // stopAllFetchers was called after this fetcher began. - return; - } - } // @synchronized(self) - } - block(); + // Also avoid calling back if the service has stopped all fetchers + // since this one was created. The fetcher may have stopped before + // stopAllFetchers was invoked, so _userStoppedFetching wasn't set, + // but the app still won't expect the callback to fire after + // the service's stopAllFetchers was invoked. + if (serviceStoppedAllDate && + [self->_initialBeginFetchDate compare:serviceStoppedAllDate] != NSOrderedDescending) { + // stopAllFetchers was called after this fetcher began. + return; + } + } // @synchronized(self) + } + block(); }); } } -- (void)invokeFetchCallbacksOnCallbackQueueWithData:(GTM_NULLABLE NSData *)data - error:(GTM_NULLABLE NSError *)error { +- (void)invokeFetchCallbacksOnCallbackQueueWithData:(nullable NSData *)data + error:(nullable NSError *)error + mayDecorate:(BOOL)mayDecorate + shouldReleaseCallbacks:(BOOL)shouldReleaseCallbacks { + if (mayDecorate && [_service respondsToSelector:@selector(decorators)]) { + NSArray> *decorators = _service.decorators; + if (decorators.count) { + [self applyDecoratorsAtRequestDidFinish:decorators + withData:data + error:error + startingAtIndex:0 + shouldReleaseCallbacks:shouldReleaseCallbacks]; + return; + } + } + + GTMSESSION_LOG_DEBUG_VERBOSE( + @"GTMSessionFetcher invoking fetch callbacks, data length %lu, error %@", + (unsigned long)data.length, error); + // Callbacks will be released in the method stopFetchReleasingCallbacks: GTMSessionFetcherCompletionHandler handler; @synchronized(self) { @@ -2522,10 +2649,14 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge }]; } } // @synchronized(self) + + if (shouldReleaseCallbacks) { + [self releaseCallbacks]; + } } - (void)postNotificationOnMainThreadWithName:(NSString *)noteName - userInfo:(GTM_NULLABLE NSDictionary *)userInfo + userInfo:(nullable NSDictionary *)userInfo requireAsync:(BOOL)requireAsync { dispatch_block_t postBlock = ^{ [[NSNotificationCenter defaultCenter] postNotificationName:noteName @@ -2547,11 +2678,11 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge } - (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)uploadTask - needNewBodyStream:(void (^)(NSInputStream * GTM_NULLABLE_TYPE bodyStream))completionHandler { + task:(NSURLSessionTask *)uploadTask + needNewBodyStream:(void (^)(NSInputStream *_Nullable bodyStream))completionHandler { [self setSessionTask:uploadTask]; - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ task:%@ needNewBodyStream:", - [self class], self, session, uploadTask); + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ task:%@ needNewBodyStream:", [self class], + self, session, uploadTask); @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -2564,7 +2695,7 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge #endif if (provider) { [self invokeOnCallbackQueueUnlessStopped:^{ - provider(completionHandler); + provider(completionHandler); }]; } else { GTMSESSION_ASSERT_DEBUG(NO, @"NSURLSession expects a stream provider"); @@ -2575,15 +2706,15 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge } - (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task - didSendBodyData:(int64_t)bytesSent - totalBytesSent:(int64_t)totalBytesSent -totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { + task:(NSURLSessionTask *)task + didSendBodyData:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent + totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { [self setSessionTask:task]; - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ task:%@ didSendBodyData:%lld" - @" totalBytesSent:%lld totalBytesExpectedToSend:%lld", - [self class], self, session, task, bytesSent, totalBytesSent, - totalBytesExpectedToSend); + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ task:%@ didSendBodyData:%lld" + @" totalBytesSent:%lld totalBytesExpectedToSend:%lld", + [self class], self, session, task, bytesSent, totalBytesSent, + totalBytesExpectedToSend); @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -2610,9 +2741,9 @@ totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { didReceiveData:(NSData *)data { [self setSessionTask:dataTask]; NSUInteger bufferLength = data.length; - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ dataTask:%@ didReceiveData:%p (%llu bytes)", - [self class], self, session, dataTask, data, - (unsigned long long)bufferLength); + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ dataTask:%@ didReceiveData:%p (%llu bytes)", + [self class], self, session, dataTask, data, + (unsigned long long)bufferLength); if (bufferLength == 0) { // Observed on completing an out-of-process upload. return; @@ -2625,7 +2756,7 @@ totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { // Let the client accumulate the data. _downloadedLength += bufferLength; [self invokeOnCallbackQueueUnlessStopped:^{ - accumulateBlock(data); + accumulateBlock(data); }]; } else if (!_userStoppedFetching) { // Append to the mutable data buffer unless the fetch has been cancelled. @@ -2646,15 +2777,15 @@ totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { // it if the transfer finishes. if (_receivedProgressBlock) { [self invokeOnCallbackQueueUnlessStopped:^{ - GTMSessionFetcherReceivedProgressBlock progressBlock; - @synchronized(self) { - GTMSessionMonitorSynchronized(self); + GTMSessionFetcherReceivedProgressBlock progressBlock; + @synchronized(self) { + GTMSessionMonitorSynchronized(self); - progressBlock = self->_receivedProgressBlock; - } - if (progressBlock) { - progressBlock((int64_t)bufferLength, self->_downloadedLength); - } + progressBlock = self->_receivedProgressBlock; + } + if (progressBlock) { + progressBlock((int64_t)bufferLength, self->_downloadedLength); + } }]; } } @@ -2662,12 +2793,13 @@ totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { } - (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)dataTask - willCacheResponse:(NSCachedURLResponse *)proposedResponse - completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler { - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ dataTask:%@ willCacheResponse:%@ %@", - [self class], self, session, dataTask, - proposedResponse, proposedResponse.response); + dataTask:(NSURLSessionDataTask *)dataTask + willCacheResponse:(NSCachedURLResponse *)proposedResponse + completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler + GTM_SWIFT_DISABLE_ASYNC { + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ dataTask:%@ willCacheResponse:%@ %@", + [self class], self, session, dataTask, proposedResponse, + proposedResponse.response); GTMSessionFetcherWillCacheURLResponseBlock callback; @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -2677,8 +2809,8 @@ totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { if (callback) { [self invokeOnCallbackQueueAfterUserStopped:YES block:^{ - callback(proposedResponse, completionHandler); - }]; + callback(proposedResponse, completionHandler); + }]; } } // @synchronized(self) if (!callback) { @@ -2686,16 +2818,15 @@ totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { } } - - (void)URLSession:(NSURLSession *)session - downloadTask:(NSURLSessionDownloadTask *)downloadTask - didWriteData:(int64_t)bytesWritten - totalBytesWritten:(int64_t)totalBytesWritten -totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ downloadTask:%@ didWriteData:%lld" - @" bytesWritten:%lld totalBytesExpectedToWrite:%lld", - [self class], self, session, downloadTask, bytesWritten, - totalBytesWritten, totalBytesExpectedToWrite); + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didWriteData:(int64_t)bytesWritten + totalBytesWritten:(int64_t)totalBytesWritten + totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ downloadTask:%@ didWriteData:%lld" + @" bytesWritten:%lld totalBytesExpectedToWrite:%lld", + [self class], self, session, downloadTask, bytesWritten, + totalBytesWritten, totalBytesExpectedToWrite); [self setSessionTask:downloadTask]; @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -2718,27 +2849,25 @@ totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { } - (void)URLSession:(NSURLSession *)session - downloadTask:(NSURLSessionDownloadTask *)downloadTask - didResumeAtOffset:(int64_t)fileOffset -expectedTotalBytes:(int64_t)expectedTotalBytes { - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ downloadTask:%@ didResumeAtOffset:%lld" - @" expectedTotalBytes:%lld", - [self class], self, session, downloadTask, fileOffset, - expectedTotalBytes); + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didResumeAtOffset:(int64_t)fileOffset + expectedTotalBytes:(int64_t)expectedTotalBytes { + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ downloadTask:%@ didResumeAtOffset:%lld" + @" expectedTotalBytes:%lld", + [self class], self, session, downloadTask, fileOffset, + expectedTotalBytes); [self setSessionTask:downloadTask]; } - (void)URLSession:(NSURLSession *)session - downloadTask:(NSURLSessionDownloadTask *)downloadTask -didFinishDownloadingToURL:(NSURL *)downloadLocationURL { + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didFinishDownloadingToURL:(NSURL *)downloadLocationURL { // Download may have relaunched app, so update _sessionTask. [self setSessionTask:downloadTask]; - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ downloadTask:%@ didFinishDownloadingToURL:%@", - [self class], self, session, downloadTask, downloadLocationURL); + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ downloadTask:%@ didFinishDownloadingToURL:%@", + [self class], self, session, downloadTask, downloadLocationURL); NSNumber *fileSizeNum; - [downloadLocationURL getResourceValue:&fileSizeNum - forKey:NSURLFileSizeKey - error:NULL]; + [downloadLocationURL getResourceValue:&fileSizeNum forKey:NSURLFileSizeKey error:NULL]; @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -2749,8 +2878,8 @@ didFinishDownloadingToURL:(NSURL *)downloadLocationURL { // Overwrite any previous file at the destination URL. NSFileManager *fileMgr = [NSFileManager defaultManager]; NSError *removeError; - if (![fileMgr removeItemAtURL:destinationURL error:&removeError] - && removeError.code != NSFileNoSuchFileError) { + if (![fileMgr removeItemAtURL:destinationURL error:&removeError] && + removeError.code != NSFileNoSuchFileError) { GTMSESSION_LOG_DEBUG(@"Could not remove previous file at %@ due to %@", downloadLocationURL.path, removeError); } @@ -2761,8 +2890,8 @@ didFinishDownloadingToURL:(NSURL *)downloadLocationURL { // status error. For convenience of the fetcher client, we'll skip saving the // downloaded body to the destination URL so that clients do not need to know // to delete the file following fetch errors. - GTMSESSION_LOG_DEBUG(@"Abandoning download due to status %ld, file %@", - (long)statusCode, downloadLocationURL.path); + GTMSESSION_LOG_DEBUG(@"Abandoning download due to status %ld, file %@", (long)statusCode, + downloadLocationURL.path); // On error code, add the contents of the temporary file to _downloadTaskErrorData // This way fetcher clients have access to error details possibly passed by the server. @@ -2770,16 +2899,17 @@ didFinishDownloadingToURL:(NSURL *)downloadLocationURL { _downloadTaskErrorData = [NSData dataWithContentsOfURL:downloadLocationURL]; } else if (_downloadedLength > kMaximumDownloadErrorDataLength) { GTMSESSION_LOG_DEBUG(@"Download error data for file %@ not passed to userInfo due to size " - @"%lld", downloadLocationURL.path, _downloadedLength); + @"%lld", + downloadLocationURL.path, _downloadedLength); } } else { NSError *moveError; NSURL *destinationFolderURL = [destinationURL URLByDeletingLastPathComponent]; BOOL didMoveDownload = NO; if ([fileMgr createDirectoryAtURL:destinationFolderURL - withIntermediateDirectories:YES - attributes:nil - error:&moveError]) { + withIntermediateDirectories:YES + attributes:nil + error:&moveError]) { didMoveDownload = [fileMgr moveItemAtURL:downloadLocationURL toURL:destinationURL error:&moveError]; @@ -2787,9 +2917,8 @@ didFinishDownloadingToURL:(NSURL *)downloadLocationURL { if (!didMoveDownload) { _downloadFinishedError = moveError; } - GTM_LOG_BACKGROUND_SESSION(@"%@ %p Moved download from \"%@\" to \"%@\" %@", - [self class], self, - downloadLocationURL.path, destinationURL.path, + GTM_LOG_BACKGROUND_SESSION(@"%@ %p Moved download from \"%@\" to \"%@\" %@", [self class], + self, downloadLocationURL.path, destinationURL.path, error ? error : @""); } } // @synchronized(self) @@ -2799,11 +2928,11 @@ didFinishDownloadingToURL:(NSURL *)downloadLocationURL { * nil, which implies that no error occurred and this task is complete. */ - (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task -didCompleteWithError:(NSError *)error { + task:(NSURLSessionTask *)task + didCompleteWithError:(NSError *)error { [self setSessionTask:task]; - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ task:%@ didCompleteWithError:%@", - [self class], self, session, task, error); + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ task:%@ didCompleteWithError:%@", [self class], + self, session, task, error); NSInteger status = self.statusCode; BOOL forceAssumeRetry = NO; @@ -2864,14 +2993,14 @@ didCompleteWithError:(NSError *)error { error:error forceAssumeRetry:forceAssumeRetry response:^(BOOL shouldRetry) { - [self finishWithError:error shouldRetry:shouldRetry]; - }]; + [self finishWithError:error shouldRetry:shouldRetry]; + }]; } - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics - API_AVAILABLE(ios(10.0), macosx(10.12), tvos(10.0), watchos(3.0)) { + API_AVAILABLE(ios(10.0), macosx(10.12), tvos(10.0), watchos(6.0)) { @synchronized(self) { GTMSessionMonitorSynchronized(self); GTMSessionFetcherMetricsCollectionBlock metricsCollectionBlock = _metricsCollectionBlock; @@ -2885,7 +3014,7 @@ didCompleteWithError:(NSError *)error { #if TARGET_OS_IPHONE - (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session { - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSessionDidFinishEventsForBackgroundURLSession:%@", + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSessionDidFinishEventsForBackgroundURLSession:%@", [self class], self, session); [self removePersistedBackgroundSessionFromDefaults]; @@ -2913,18 +3042,18 @@ didCompleteWithError:(NSError *)error { } #endif -- (void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(GTM_NULLABLE NSError *)error { +- (void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(nullable NSError *)error { // This may happen repeatedly for retries. On authentication callbacks, the retry // may begin before the prior session sends the didBecomeInvalid delegate message. - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ didBecomeInvalidWithError:%@", - [self class], self, session, error); + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ didBecomeInvalidWithError:%@", [self class], + self, session, error); if (session == (NSURLSession *)self.session) { - GTM_LOG_SESSION_DELEGATE(@" Unexpected retained invalid session: %@", session); + GTMSESSION_LOG_DEBUG_VERBOSE(@" Unexpected retained invalid session: %@", session); self.session = nil; } } -- (void)finishWithError:(GTM_NULLABLE NSError *)error shouldRetry:(BOOL)shouldRetry { +- (void)finishWithError:(nullable NSError *)error shouldRetry:(BOOL)shouldRetry { [self removePersistedBackgroundSessionFromDefaults]; BOOL shouldStopFetching = YES; @@ -2958,14 +3087,13 @@ didCompleteWithError:(NSError *)error { if ((_downloadedData.length > 0) && (destinationURL != nil)) { // Overwrite any previous file at the destination URL. NSFileManager *fileMgr = [NSFileManager defaultManager]; - [fileMgr removeItemAtURL:destinationURL - error:NULL]; + [fileMgr removeItemAtURL:destinationURL error:NULL]; NSURL *destinationFolderURL = [destinationURL URLByDeletingLastPathComponent]; BOOL didMoveDownload = NO; if ([fileMgr createDirectoryAtURL:destinationFolderURL - withIntermediateDirectories:YES - attributes:nil - error:&error]) { + withIntermediateDirectories:YES + attributes:nil + error:&error]) { didMoveDownload = [_downloadedData writeToURL:destinationURL options:NSDataWritingAtomic error:&error]; @@ -3001,9 +3129,10 @@ didCompleteWithError:(NSError *)error { if (resumeBlock) { NSData *resumeData = [error.userInfo objectForKey:NSURLSessionDownloadTaskResumeData]; if (resumeData) { - [self invokeOnCallbackQueueAfterUserStopped:YES block:^{ - resumeBlock(resumeData); - }]; + [self invokeOnCallbackQueueAfterUserStopped:YES + block:^{ + resumeBlock(resumeData); + }]; } } } @@ -3043,11 +3172,13 @@ didCompleteWithError:(NSError *)error { [self sendStopNotificationIfNeeded]; if (shouldStopFetching) { - [self invokeFetchCallbacksOnCallbackQueueWithData:downloadedData - error:error]; // The upload subclass doesn't want to release callbacks until upload chunks have completed. BOOL shouldRelease = [self shouldReleaseCallbacksUponCompletion]; - [self stopFetchReleasingCallbacks:shouldRelease]; + [self invokeFetchCallbacksOnCallbackQueueWithData:downloadedData + error:error + mayDecorate:YES + shouldReleaseCallbacks:shouldRelease]; + [self stopFetchReleasingCallbacks:NO]; } #if !STRIP_GTM_FETCH_LOGGING @@ -3064,7 +3195,7 @@ didCompleteWithError:(NSError *)error { return YES; } -- (void)logNowWithError:(GTM_NULLABLE NSError *)error { +- (void)logNowWithError:(nullable NSError *)error { GTMSessionCheckNotSynchronized(self); // If the logging category is available, then log the current request, @@ -3083,14 +3214,13 @@ didCompleteWithError:(NSError *)error { }; struct RetryRecord retries[] = { - { kGTMSessionFetcherStatusDomain, 408 }, // request timeout - { kGTMSessionFetcherStatusDomain, 502 }, // failure gatewaying to another server - { kGTMSessionFetcherStatusDomain, 503 }, // service unavailable - { kGTMSessionFetcherStatusDomain, 504 }, // request timeout - { NSURLErrorDomain, NSURLErrorTimedOut }, - { NSURLErrorDomain, NSURLErrorNetworkConnectionLost }, - { nil, 0 } - }; + {kGTMSessionFetcherStatusDomain, 408}, // request timeout + {kGTMSessionFetcherStatusDomain, 502}, // failure gatewaying to another server + {kGTMSessionFetcherStatusDomain, 503}, // service unavailable + {kGTMSessionFetcherStatusDomain, 504}, // request timeout + {NSURLErrorDomain, NSURLErrorTimedOut}, + {NSURLErrorDomain, NSURLErrorNetworkConnectionLost}, + {nil, 0}}; // NSError's isEqual always returns false for equal but distinct instances // of NSError, so we have to compare the domain and code values explicitly @@ -3120,9 +3250,8 @@ didCompleteWithError:(NSError *)error { // only in this method, and this method is invoked on the serial delegate queue. // // We want to avoid calling the authorizer from inside a sync block. - BOOL isFirstAuthError = (_authorizer != nil - && !_hasAttemptedAuthRefresh - && status == GTMSessionFetcherStatusUnauthorized); // 401 + BOOL isFirstAuthError = (_authorizer != nil && !_hasAttemptedAuthRefresh && + status == GTMSessionFetcherStatusUnauthorized); // 401 BOOL hasPrimed = NO; if (isFirstAuthError) { @@ -3143,7 +3272,6 @@ didCompleteWithError:(NSError *)error { BOOL shouldDoRetry = [self isRetryEnabledUnsynchronized]; if (shouldDoRetry && ![self hasRetryAfterInterval]) { - // Determine if we're doing exponential backoff retries shouldDoRetry = [self nextRetryIntervalUnsynchronized] < _maxRetryInterval; @@ -3172,16 +3300,14 @@ didCompleteWithError:(NSError *)error { if (error == nil) { error = statusError; } - willRetry = shouldRetryForAuthRefresh || - forceAssumeRetry || - [self isRetryError:error] || + willRetry = shouldRetryForAuthRefresh || forceAssumeRetry || [self isRetryError:error] || ((error != statusError) && [self isRetryError:statusError]); // If the user has installed a retry callback, consult that. GTMSessionFetcherRetryBlock retryBlock = _retryBlock; if (retryBlock) { [self invokeOnCallbackQueueUnlessStopped:^{ - retryBlock(willRetry, error, response); + retryBlock(willRetry, error, response); }]; return; } @@ -3213,8 +3339,8 @@ didCompleteWithError:(NSError *)error { rfc1123DateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; rfc1123DateFormatter.dateFormat = @"EEE',' dd MMM yyyy HH':'mm':'ss z"; NSDate *retryAfterDate = [rfc1123DateFormatter dateFromString:retryAfterValue]; - NSTimeInterval retryAfterInterval = (retryAfterDate != nil) ? - retryAfterDate.timeIntervalSinceNow : retryAfterValue.intValue; + NSTimeInterval retryAfterInterval = + (retryAfterDate != nil) ? retryAfterDate.timeIntervalSinceNow : retryAfterValue.intValue; retryAfterInterval = MAX(0, retryAfterInterval); return retryAfterInterval; } @@ -3224,13 +3350,13 @@ didCompleteWithError:(NSError *)error { // Defer creating and starting the timer until we're on the main thread to ensure it has // a run loop. dispatch_group_async(_callbackGroup, dispatch_get_main_queue(), ^{ - [self beginRetryTimer]; + [self beginRetryTimer]; }); return; } [self destroyRetryTimer]; - + #if GTM_BACKGROUND_TASK_FETCHING // Don't keep a background task active while awaiting retry, which can lead to the // app exceeding the allotted time for keeping the background task open, causing the @@ -3255,8 +3381,7 @@ didCompleteWithError:(NSError *)error { userInfo:nil repeats:NO]; _retryTimer.tolerance = newIntervalTolerance; - [[NSRunLoop mainRunLoop] addTimer:_retryTimer - forMode:NSDefaultRunLoopMode]; + [[NSRunLoop mainRunLoop] addTimer:_retryTimer forMode:NSDefaultRunLoopMode]; } // @synchronized(self) [self postNotificationOnMainThreadWithName:kGTMSessionFetcherRetryDelayStartedNotification @@ -3358,7 +3483,6 @@ didCompleteWithError:(NSError *)error { } - (void)setRetryEnabled:(BOOL)flag { - @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3419,7 +3543,6 @@ didCompleteWithError:(NSError *)error { _minRetryInterval = InitialMinRetryInterval(); } } // @synchronized(self) - } #pragma mark iOS System Completion Handlers @@ -3427,16 +3550,18 @@ didCompleteWithError:(NSError *)error { #if TARGET_OS_IPHONE static NSMutableDictionary *gSystemCompletionHandlers = nil; -- (GTM_NULLABLE GTMSessionFetcherSystemCompletionHandler)systemCompletionHandler { +- (nullable GTMSessionFetcherSystemCompletionHandler)systemCompletionHandler { return [[self class] systemCompletionHandlerForSessionIdentifier:_sessionIdentifier]; } -- (void)setSystemCompletionHandler:(GTM_NULLABLE GTMSessionFetcherSystemCompletionHandler)systemCompletionHandler { +- (void)setSystemCompletionHandler: + (nullable GTMSessionFetcherSystemCompletionHandler)systemCompletionHandler { [[self class] setSystemCompletionHandler:systemCompletionHandler forSessionIdentifier:_sessionIdentifier]; } -+ (void)setSystemCompletionHandler:(GTM_NULLABLE GTMSessionFetcherSystemCompletionHandler)systemCompletionHandler ++ (void)setSystemCompletionHandler: + (nullable GTMSessionFetcherSystemCompletionHandler)systemCompletionHandler forSessionIdentifier:(NSString *)sessionIdentifier { if (!sessionIdentifier) { NSLog(@"%s with nil identifier", __PRETTY_FUNCTION__); @@ -3448,12 +3573,12 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; gSystemCompletionHandlers = [[NSMutableDictionary alloc] init]; } // Use setValue: to remove the object if completionHandler is nil. - [gSystemCompletionHandlers setValue:systemCompletionHandler - forKey:sessionIdentifier]; + [gSystemCompletionHandlers setValue:systemCompletionHandler forKey:sessionIdentifier]; } } -+ (GTM_NULLABLE GTMSessionFetcherSystemCompletionHandler)systemCompletionHandlerForSessionIdentifier:(NSString *)sessionIdentifier { ++ (nullable GTMSessionFetcherSystemCompletionHandler)systemCompletionHandlerForSessionIdentifier: + (NSString *)sessionIdentifier { if (!sessionIdentifier) { return nil; } @@ -3465,6 +3590,8 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; #pragma mark Getters and Setters +// clang-format off +// Don't re-format the @synthesize blocks: @synthesize downloadResumeData = _downloadResumeData, configuration = _configuration, configurationBlock = _configurationBlock, @@ -3517,8 +3644,9 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; @synthesize backgroundTaskIdentifier = _backgroundTaskIdentifier, skipBackgroundTask = _skipBackgroundTask; #endif +// clang-format on -- (GTM_NULLABLE NSURLRequest *)request { +- (nullable NSURLRequest *)request { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3526,7 +3654,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setRequest:(GTM_NULLABLE NSURLRequest *)request { +- (void)setRequest:(nullable NSURLRequest *)request { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3538,13 +3666,13 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (GTM_NULLABLE NSMutableURLRequest *)mutableRequestForTesting { +- (nullable NSMutableURLRequest *)mutableRequestForTesting { // Allow tests only to modify the request, useful during retries. return _request; } // Internal method for updating the request property such as on redirects. -- (void)updateMutableRequest:(GTM_NULLABLE NSMutableURLRequest *)request { +- (void)updateMutableRequest:(nullable NSMutableURLRequest *)request { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3554,7 +3682,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; // Set a header field value on the request. Header field value changes will not // affect a fetch after the fetch has begun. -- (void)setRequestValue:(GTM_NULLABLE NSString *)value forHTTPHeaderField:(NSString *)field { +- (void)setRequestValue:(nullable NSString *)value forHTTPHeaderField:(NSString *)field { if (![self isFetching]) { [self updateRequestValue:value forHTTPHeaderField:field]; } else { @@ -3563,7 +3691,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // Internal method for updating request headers. -- (void)updateRequestValue:(GTM_NULLABLE NSString *)value forHTTPHeaderField:(NSString *)field { +- (void)updateRequestValue:(nullable NSString *)value forHTTPHeaderField:(NSString *)field { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3571,7 +3699,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setResponse:(GTM_NULLABLE NSURLResponse *)response { +- (void)setResponse:(nullable NSURLResponse *)response { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3620,7 +3748,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (GTM_NULLABLE NSURL *)bodyFileURL { +- (nullable NSURL *)bodyFileURL { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3628,7 +3756,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setBodyFileURL:(GTM_NULLABLE NSURL *)fileURL { +- (void)setBodyFileURL:(nullable NSURL *)fileURL { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3643,7 +3771,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (GTM_NULLABLE GTMSessionFetcherBodyStreamProvider)bodyStreamProvider { +- (nullable GTMSessionFetcherBodyStreamProvider)bodyStreamProvider { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3651,7 +3779,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setBodyStreamProvider:(GTM_NULLABLE GTMSessionFetcherBodyStreamProvider)block { +- (void)setBodyStreamProvider:(nullable GTMSessionFetcherBodyStreamProvider)block { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3662,7 +3790,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (GTM_NULLABLE id)authorizer { +- (nullable id)authorizer { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3670,13 +3798,14 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setAuthorizer:(GTM_NULLABLE id)authorizer { +- (void)setAuthorizer:(nullable id)authorizer { @synchronized(self) { GTMSessionMonitorSynchronized(self); if (authorizer != _authorizer) { if ([self isFetchingUnsynchronized]) { - GTMSESSION_ASSERT_DEBUG(0, @"authorizer should not change after beginFetch has been invoked"); + GTMSESSION_ASSERT_DEBUG(0, + @"authorizer should not change after beginFetch has been invoked"); } else { _authorizer = authorizer; } @@ -3684,7 +3813,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (GTM_NULLABLE NSData *)downloadedData { +- (nullable NSData *)downloadedData { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3692,7 +3821,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setDownloadedData:(GTM_NULLABLE NSData *)data { +- (void)setDownloadedData:(nullable NSData *)data { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3716,7 +3845,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (dispatch_queue_t GTM_NONNULL_TYPE)callbackQueue { +- (nonnull dispatch_queue_t)callbackQueue { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3724,7 +3853,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setCallbackQueue:(dispatch_queue_t GTM_NULLABLE_TYPE)queue { +- (void)setCallbackQueue:(nullable dispatch_queue_t)queue { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3732,7 +3861,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (GTM_NULLABLE NSURLSession *)session { +- (nullable NSURLSession *)session { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3753,16 +3882,16 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; GTMSessionMonitorSynchronized(self); if (value != _servicePriority) { - GTMSESSION_ASSERT_DEBUG(![self isFetchingUnsynchronized], - @"servicePriority should not change after beginFetch has been invoked"); + GTMSESSION_ASSERT_DEBUG( + ![self isFetchingUnsynchronized], + @"servicePriority should not change after beginFetch has been invoked"); _servicePriority = value; } } // @synchronized(self) } - -- (void)setSession:(GTM_NULLABLE NSURLSession *)session { +- (void)setSession:(nullable NSURLSession *)session { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3801,7 +3930,8 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; GTMSessionMonitorSynchronized(self); if (flag != _userRequestedBackgroundSession) { - GTMSESSION_ASSERT_DEBUG(![self isFetchingUnsynchronized], + GTMSESSION_ASSERT_DEBUG( + ![self isFetchingUnsynchronized], @"useBackgroundSession should not change after beginFetch has been invoked"); _userRequestedBackgroundSession = flag; @@ -3825,7 +3955,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (GTM_NULLABLE NSURLSession *)sessionNeedingInvalidation { +- (nullable NSURLSession *)sessionNeedingInvalidation { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3833,7 +3963,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setSessionNeedingInvalidation:(GTM_NULLABLE NSURLSession *)session { +- (void)setSessionNeedingInvalidation:(nullable NSURLSession *)session { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3841,7 +3971,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (NSOperationQueue * GTM_NONNULL_TYPE)sessionDelegateQueue { +- (nonnull NSOperationQueue *)sessionDelegateQueue { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3849,7 +3979,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setSessionDelegateQueue:(NSOperationQueue * GTM_NULLABLE_TYPE)queue { +- (void)setSessionDelegateQueue:(nullable NSOperationQueue *)queue { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3871,7 +4001,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (GTM_NULLABLE id)userData { +- (nullable id)userData { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3879,7 +4009,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setUserData:(GTM_NULLABLE id)theObj { +- (void)setUserData:(nullable id)theObj { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3887,7 +4017,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (GTM_NULLABLE NSURL *)destinationFileURL { +- (nullable NSURL *)destinationFileURL { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3895,7 +4025,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setDestinationFileURL:(GTM_NULLABLE NSURL *)destinationFileURL { +- (void)setDestinationFileURL:(nullable NSURL *)destinationFileURL { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3915,9 +4045,10 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; // URL is expected to happen only across development runs through Xcode. NSString *oldFilename = [_destinationFileURL lastPathComponent]; NSString *newFilename = [destinationFileURL lastPathComponent]; - #pragma unused(oldFilename) - #pragma unused(newFilename) - GTMSESSION_ASSERT_DEBUG([oldFilename isEqualToString:newFilename], +#pragma unused(oldFilename) +#pragma unused(newFilename) + GTMSESSION_ASSERT_DEBUG( + [oldFilename isEqualToString:newFilename], @"Destination File URL cannot be changed after session identifier has been created"); #endif } @@ -3925,7 +4056,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setProperties:(GTM_NULLABLE NSDictionary *)dict { +- (void)setProperties:(nullable NSDictionary *)dict { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3933,7 +4064,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (GTM_NULLABLE NSDictionary *)properties { +- (nullable NSDictionary *)properties { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3941,7 +4072,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setProperty:(GTM_NULLABLE id)obj forKey:(NSString *)key { +- (void)setProperty:(nullable id)obj forKey:(NSString *)key { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3952,7 +4083,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (GTM_NULLABLE id)propertyForKey:(NSString *)key { +- (nullable id)propertyForKey:(NSString *)key { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -3979,8 +4110,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; va_list argList; va_start(argList, format); - result = [[NSString alloc] initWithFormat:format - arguments:argList]; + result = [[NSString alloc] initWithFormat:format arguments:argList]; va_end(argList); } [self setComment:result]; @@ -4033,7 +4163,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; + (BOOL)isLoggingEnabled { return NO; } -#endif // STRIP_GTM_FETCH_LOGGING +#endif // STRIP_GTM_FETCH_LOGGING @end @@ -4045,7 +4175,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; // Clients using the GTMSessionFetcher class should set the cookie storage explicitly // themselves. NSHTTPCookieStorage *storage = nil; - switch(method) { + switch (method) { case 0: // kGTMHTTPFetcherCookieStorageMethodStatic // nil storage will use [[self class] staticCookieStorage] when the fetch begins. break; @@ -4080,7 +4210,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; return self; } -- (GTM_NULLABLE NSArray *)cookies { +- (nullable NSArray *)cookies { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -4105,9 +4235,8 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; if (_policy == NSHTTPCookieAcceptPolicyNever) return; - BOOL isValidCookie = (newCookie.name.length > 0 - && newCookie.domain.length > 0 - && newCookie.path.length > 0); + BOOL isValidCookie = + (newCookie.name.length > 0 && newCookie.domain.length > 0 && newCookie.path.length > 0); GTMSESSION_ASSERT_DEBUG(isValidCookie, @"invalid cookie: %@", newCookie); if (isValidCookie) { @@ -4127,7 +4256,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; // replacing stored cookies as appropriate. // // Side effect: removes expired cookies from the storage array. -- (void)setCookies:(GTM_NULLABLE NSArray *)newCookies { +- (void)setCookies:(nullable NSArray *)newCookies { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -4139,7 +4268,9 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } // @synchronized(self) } -- (void)setCookies:(NSArray *)cookies forURL:(GTM_NULLABLE NSURL *)URL mainDocumentURL:(GTM_NULLABLE NSURL *)mainDocumentURL { +- (void)setCookies:(NSArray *)cookies + forURL:(nullable NSURL *)URL + mainDocumentURL:(nullable NSURL *)mainDocumentURL { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -4174,7 +4305,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; // Retrieve all cookies appropriate for the given URL, considering // domain, path, cookie name, expiration, security setting. // Side effect: removed expired cookies from the storage array. -- (GTM_NULLABLE NSArray *)cookiesForURL:(NSURL *)theURL { +- (nullable NSArray *)cookiesForURL:(NSURL *)theURL { NSMutableArray *foundCookies = nil; @synchronized(self) { @@ -4210,8 +4341,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; if (isLocalhostRetrieval) { // Prior to 10.5.6, the domain stored into NSHTTPCookies for localhost // is "localhost.local" - isDomainOK = (IsLocalhost(cookieDomain) - || [cookieDomain isEqual:@"localhost.local"]); + isDomainOK = (IsLocalhost(cookieDomain) || [cookieDomain isEqual:@"localhost.local"]); } else { // Ensure we're matching exact domain names. We prepended a dot to the // requesting domain, so we can also prepend one here if needed before @@ -4223,8 +4353,8 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } BOOL isPathOK = [cookiePath isEqual:@"/"] || [path hasPrefix:cookiePath]; - BOOL isSecureOK = (!cookieIsSecure - || [scheme caseInsensitiveCompare:@"https"] == NSOrderedSame); + BOOL isSecureOK = + (!cookieIsSecure || [scheme caseInsensitiveCompare:@"https"] == NSOrderedSame); if (isDomainOK && isPathOK && isSecureOK) { if (foundCookies == nil) { @@ -4244,7 +4374,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; } - (void)getCookiesForTask:(NSURLSessionTask *)task - completionHandler:(void (^)(GTM_NSArrayOf(NSHTTPCookie *) *))completionHandler { + completionHandler:(void (^)(NSArray *))completionHandler { if (completionHandler) { NSURLRequest *currentRequest = task.currentRequest; NSURL *currentRequestURL = currentRequest.URL; @@ -4260,7 +4390,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; // be valid (non-nil name, domains, paths). // // Note: this should only be called from inside a @synchronized(self) block -- (GTM_NULLABLE NSHTTPCookie *)cookieMatchingCookie:(NSHTTPCookie *)cookie { +- (nullable NSHTTPCookie *)cookieMatchingCookie:(NSHTTPCookie *)cookie { GTMSessionCheckSynchronized(self); NSString *name = cookie.name; @@ -4271,9 +4401,8 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; @"Invalid stored cookie (name:%@ domain:%@ path:%@)", name, domain, path); for (NSHTTPCookie *storedCookie in _cookies) { - if ([storedCookie.name isEqual:name] - && [storedCookie.domain isEqual:domain] - && [storedCookie.path isEqual:path]) { + if ([storedCookie.name isEqual:name] && [storedCookie.domain isEqual:domain] && + [storedCookie.path isEqual:path]) { return storedCookie; } } @@ -4335,7 +4464,7 @@ static NSMutableDictionary *gSystemCompletionHandlers = nil; @end -void GTMSessionFetcherAssertValidSelector(id GTM_NULLABLE_TYPE obj, SEL GTM_NULLABLE_TYPE sel, ...) { +void GTMSessionFetcherAssertValidSelector(id _Nullable obj, SEL _Nullable sel, ...) { // Verify that the object's selector is implemented with the proper // number and type of arguments #if DEBUG @@ -4346,24 +4475,22 @@ void GTMSessionFetcherAssertValidSelector(id GTM_NULLABLE_TYPE obj, SEL GTM_NULL // Check that the selector is implemented if (![obj respondsToSelector:sel]) { NSLog(@"\"%@\" selector \"%@\" is unimplemented or misnamed", - NSStringFromClass([(id)obj class]), - NSStringFromSelector((SEL)sel)); + NSStringFromClass([(id)obj class]), NSStringFromSelector((SEL)sel)); NSCAssert(0, @"callback selector unimplemented or misnamed"); } else { const char *expectedArgType; - unsigned int argCount = 2; // skip self and _cmd + unsigned int argCount = 2; // skip self and _cmd NSMethodSignature *sig = [obj methodSignatureForSelector:sel]; // Check that each expected argument is present and of the correct type - while ((expectedArgType = va_arg(argList, const char*)) != 0) { - + while ((expectedArgType = va_arg(argList, const char *)) != 0) { if ([sig numberOfArguments] > argCount) { const char *foundArgType = [sig getArgumentTypeAtIndex:argCount]; if (0 != strncmp(foundArgType, expectedArgType, strlen(expectedArgType))) { NSLog(@"\"%@\" selector \"%@\" argument %d should be type %s", - NSStringFromClass([(id)obj class]), - NSStringFromSelector((SEL)sel), (argCount - 2), expectedArgType); + NSStringFromClass([(id)obj class]), NSStringFromSelector((SEL)sel), + (argCount - 2), expectedArgType); NSCAssert(0, @"callback selector argument type mistake"); } } @@ -4373,8 +4500,7 @@ void GTMSessionFetcherAssertValidSelector(id GTM_NULLABLE_TYPE obj, SEL GTM_NULL // Check that the proper number of arguments are present in the selector if (argCount != [sig numberOfArguments]) { NSLog(@"\"%@\" selector \"%@\" should have %d arguments", - NSStringFromClass([(id)obj class]), - NSStringFromSelector((SEL)sel), (argCount - 2)); + NSStringFromClass([(id)obj class]), NSStringFromSelector((SEL)sel), (argCount - 2)); NSCAssert(0, @"callback selector arguments incorrect"); } } @@ -4411,7 +4537,7 @@ NSString *GTMFetcherCleanedUserAgentString(NSString *str) { NSMutableCharacterSet *mutableChars = [[NSCharacterSet whitespaceAndNewlineCharacterSet] mutableCopy]; [mutableChars addCharactersInString:kSeparators]; - charsToDelete = [mutableChars copy]; // hang on to an immutable copy + charsToDelete = [mutableChars copy]; // hang on to an immutable copy } while (1) { @@ -4429,17 +4555,6 @@ NSString *GTMFetcherSystemVersionString(void) { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - // The Xcode 8 SDKs finally cleaned up this mess by providing TARGET_OS_OSX - // and TARGET_OS_IOS, but to build with older SDKs, those don't exist and - // instead one has to rely on TARGET_OS_MAC (which is true for iOS, watchOS, - // and tvOS) and TARGET_OS_IPHONE (which is true for iOS, watchOS, tvOS). So - // one has to order these carefully so you pick off the specific things - // first. - // If the code can ever assume Xcode 8 or higher (even when building for - // older OSes), then - // TARGET_OS_MAC -> TARGET_OS_OSX - // TARGET_OS_IPHONE -> TARGET_OS_IOS - // TARGET_IPHONE_SIMULATOR -> TARGET_OS_SIMULATOR #if TARGET_OS_WATCH // watchOS - WKInterfaceDevice @@ -4464,10 +4579,10 @@ NSString *GTMFetcherSystemVersionString(void) { } #endif - sSavedSystemString = [[NSString alloc] initWithFormat:@"%@/%@ hw/%@", - model, systemVersion, hardwareModel]; + sSavedSystemString = + [[NSString alloc] initWithFormat:@"%@/%@ hw/%@", model, systemVersion, hardwareModel]; // Example: Apple_Watch/3.0 hw/Watch1_2 -#elif TARGET_OS_TV || TARGET_OS_IPHONE +#elif TARGET_OS_TV || TARGET_OS_IOS // iOS and tvOS have UIDevice, use that. UIDevice *currentDevice = [UIDevice currentDevice]; @@ -4476,7 +4591,7 @@ NSString *GTMFetcherSystemVersionString(void) { NSString *systemVersion = [currentDevice systemVersion]; -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_SIMULATOR +#if TARGET_OS_SIMULATOR NSString *hardwareModel = @"sim"; #else NSString *hardwareModel; @@ -4494,43 +4609,13 @@ NSString *GTMFetcherSystemVersionString(void) { model, systemVersion, hardwareModel]; // Example: iPod_Touch/2.2 hw/iPod1_1 // Example: Apple_TV/9.2 hw/AppleTV5,3 -#elif TARGET_OS_MAC +#elif TARGET_OS_OSX // Mac build NSProcessInfo *procInfo = [NSProcessInfo processInfo]; -#if !defined(MAC_OS_X_VERSION_10_10) - BOOL hasOperatingSystemVersion = NO; -#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10 - BOOL hasOperatingSystemVersion = - [procInfo respondsToSelector:@selector(operatingSystemVersion)]; -#else - BOOL hasOperatingSystemVersion = YES; -#endif NSString *versString; - if (hasOperatingSystemVersion) { -#if defined(MAC_OS_X_VERSION_10_10) - // A reference to NSOperatingSystemVersion requires the 10.10 SDK. -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunguarded-availability" -// Disable unguarded availability warning as we can't use the @availability macro until we require -// all clients to build with Xcode 9 or above. - NSOperatingSystemVersion version = procInfo.operatingSystemVersion; -#pragma clang diagnostic pop - versString = [NSString stringWithFormat:@"%ld.%ld.%ld", - (long)version.majorVersion, (long)version.minorVersion, - (long)version.patchVersion]; -#else -#pragma unused(procInfo) -#endif - } else { - // With Gestalt inexplicably deprecated in 10.8, we're reduced to reading - // the system plist file. - NSString *const kPath = @"/System/Library/CoreServices/SystemVersion.plist"; - NSDictionary *plist = [NSDictionary dictionaryWithContentsOfFile:kPath]; - versString = [plist objectForKey:@"ProductVersion"]; - if (versString.length == 0) { - versString = @"10.?.?"; - } - } + NSOperatingSystemVersion version = procInfo.operatingSystemVersion; + versString = [NSString stringWithFormat:@"%ld.%ld.%ld", (long)version.majorVersion, + (long)version.minorVersion, (long)version.patchVersion]; sSavedSystemString = [[NSString alloc] initWithFormat:@"MacOSX/%@", versString]; #elif defined(_SYS_UTSNAME_H) @@ -4547,14 +4632,13 @@ NSString *GTMFetcherSystemVersionString(void) { return sSavedSystemString; } -NSString *GTMFetcherStandardUserAgentString(NSBundle * GTM_NULLABLE_TYPE bundle) { - NSString *result = [NSString stringWithFormat:@"%@ %@", - GTMFetcherApplicationIdentifier(bundle), - GTMFetcherSystemVersionString()]; +NSString *GTMFetcherStandardUserAgentString(NSBundle *_Nullable bundle) { + NSString *result = [NSString stringWithFormat:@"%@ %@", GTMFetcherApplicationIdentifier(bundle), + GTMFetcherSystemVersionString()]; return result; } -NSString *GTMFetcherApplicationIdentifier(NSBundle * GTM_NULLABLE_TYPE bundle) { +NSString *GTMFetcherApplicationIdentifier(NSBundle *_Nullable bundle) { @synchronized([GTMSessionFetcher class]) { static NSMutableDictionary *sAppIDMap = nil; @@ -4587,9 +4671,12 @@ NSString *GTMFetcherApplicationIdentifier(NSBundle * GTM_NULLABLE_TYPE bundle) { identifier = GTMFetcherCleanedUserAgentString(identifier); // If there's a version number, append that - NSString *version = [bundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; + NSString *version = [bundle objectForInfoDictionaryKey:@"GTMUserAgentVersion"]; if (version.length == 0) { - version = [bundle objectForInfoDictionaryKey:@"CFBundleVersion"]; + version = [bundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; + if (version.length == 0) { + version = [bundle objectForInfoDictionaryKey:@"CFBundleVersion"]; + } } // Clean up whitespace and special characters @@ -4646,7 +4733,7 @@ NSString *GTMFetcherApplicationIdentifier(NSBundle * GTM_NULLABLE_TYPE bundle) { functionNamesCounter = [NSCountedSet set]; counters[_objectKey] = functionNamesCounter; } - [functionNamesCounter addObject:(id _Nonnull)@(functionName)]; + [functionNamesCounter addObject:(id _Nonnull) @(functionName)]; } return self; } @@ -4669,7 +4756,7 @@ NSString *GTMFetcherApplicationIdentifier(NSBundle * GTM_NULLABLE_TYPE bundle) { } } -+ (NSArray * GTM_NULLABLE_TYPE)functionsHoldingSynchronizationOnObject:(id)object { ++ (nullable NSArray *)functionsHoldingSynchronizationOnObject:(id)object { Class threadKey = [GTMSessionSyncMonitorInternal class]; NSValue *localObjectKey = [NSValue valueWithNonretainedObject:object]; @@ -4680,4 +4767,4 @@ NSString *GTMFetcherApplicationIdentifier(NSBundle * GTM_NULLABLE_TYPE bundle) { } @end #endif // DEBUG && (!defined(NS_BLOCK_ASSERTIONS) || GTMSESSION_ASSERT_AS_LOG) -GTM_ASSUME_NONNULL_END +NS_ASSUME_NONNULL_END diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.h b/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.h index 5ccea78..b3c1b43 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.h +++ b/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.h @@ -82,10 +82,9 @@ + (void)setLoggingDateStamp:(NSString *)dateStamp; + (NSString *)loggingDateStamp; -// client apps can specify the directory for the log for this specific run, -// typically to match the directory used by another fetcher class, like: +// client apps can specify the directory for the log for this specific run: // -// [GTMSessionFetcher setLogDirectoryForCurrentRun:[GTMHTTPFetcher logDirectoryForCurrentRun]]; +// [GTMSessionFetcher setLogDirectoryForCurrentRun:logDirectoryPath]; // // Setting this overrides the logging directory, process name, and date stamp when writing // the log file. diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.m b/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.m index cdf5c17..c728820 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.m +++ b/Pods/GTMSessionFetcher/Source/GTMSessionFetcherLogging.m @@ -23,7 +23,7 @@ #import "GTMSessionFetcherLogging.h" #ifndef STRIP_GTM_FETCH_LOGGING - #error GTMSessionFetcher headers should have defaulted this if it wasn't already defined. +#error GTMSessionFetcher headers should have defaulted this if it wasn't already defined. #endif #if !STRIP_GTM_FETCH_LOGGING @@ -45,15 +45,15 @@ + (instancetype)inputStreamWithStream:(NSInputStream *)input; -@property (assign) id readDelegate; -@property (assign) SEL readSelector; +@property(assign) id readDelegate; +@property(assign) SEL readSelector; @end #else @class GTMReadMonitorInputStream; #endif // !GTMSESSION_BUILD_COMBINED_SOURCES -@interface GTMSessionFetcher (GTMHTTPFetcherLoggingUtilities) +@interface GTMSessionFetcher (GTMSessionFetcherLoggingUtilities) + (NSString *)headersStringForDictionary:(NSDictionary *)dict; + (NSString *)snipSubstringOfString:(NSString *)originalStr @@ -157,7 +157,8 @@ static NSString *gLoggingProcessName = nil; if (![fileMgr createDirectoryAtPath:logDirectory withIntermediateDirectories:YES attributes:nil - error:NULL]) return nil; + error:NULL]) + return nil; } gLogDirectoryForCurrentRun = logDirectory; @@ -243,18 +244,15 @@ static NSString *gLoggingProcessName = nil; if ([itemURL isEqual:logDirectoryForCurrentRun]) continue; NSDate *modDate; - if ([itemURL getResourceValue:&modDate - forKey:NSURLContentModificationDateKey - error:&error]) { + if ([itemURL getResourceValue:&modDate forKey:NSURLContentModificationDateKey error:&error]) { if ([modDate compare:cutoffDate] == NSOrderedAscending) { if (![fileMgr removeItemAtURL:itemURL error:&error]) { - NSLog(@"deleteLogDirectoriesOlderThanDate failed to delete %@: %@", - itemURL.path, error); + NSLog(@"deleteLogDirectoriesOlderThanDate failed to delete %@: %@", itemURL.path, error); } } } else { - NSLog(@"deleteLogDirectoriesOlderThanDate failed to get mod date of %@: %@", - itemURL.path, error); + NSLog(@"deleteLogDirectoriesOlderThanDate failed to get mod date of %@: %@", itemURL.path, + error); } } } @@ -269,9 +267,10 @@ static NSString *gLoggingProcessName = nil; // if the content type is JSON and we have the parsing class available, use that if ([contentType hasPrefix:@"application/json"] && inputData.length > 5) { // convert from JSON string to NSObjects and back to a formatted string - NSMutableDictionary *obj = [NSJSONSerialization JSONObjectWithData:inputData - options:NSJSONReadingMutableContainers - error:NULL]; + NSMutableDictionary *obj = + [NSJSONSerialization JSONObjectWithData:inputData + options:NSJSONReadingMutableContainers + error:NULL]; if (obj) { if (outJSON) *outJSON = obj; if ([obj isKindOfClass:[NSMutableDictionary class]]) { @@ -287,8 +286,7 @@ static NSString *gLoggingProcessName = nil; options:NSJSONWritingPrettyPrinted error:NULL]; if (data) { - NSString *jsonStr = [[NSString alloc] initWithData:data - encoding:NSUTF8StringEncoding]; + NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; return jsonStr; } } @@ -305,10 +303,7 @@ static NSString *gLoggingProcessName = nil; gIsXMLLintAvailable = [[NSFileManager defaultManager] fileExistsAtPath:kXMLLintPath]; gHasCheckedAvailability = YES; } - if (gIsXMLLintAvailable - && inputData.length > 5 - && strncmp(inputData.bytes, " 5 && strncmp(inputData.bytes, "> is supplied // in place of the binary data. -- (NSString *)stringFromStreamData:(NSData *)data - contentType:(NSString *)contentType { - +- (NSString *)stringFromStreamData:(NSData *)data contentType:(NSString *)contentType { if (!data) return nil; // optimistically, see if the whole data block is UTF-8 - NSString *streamDataStr = [self formattedStringFromData:data - contentType:contentType - JSON:NULL]; + NSString *streamDataStr = [self formattedStringFromData:data contentType:contentType JSON:NULL]; if (streamDataStr) return streamDataStr; // Munge a buffer by replacing non-ASCII bytes with underscores, and turn that munged buffer an @@ -378,17 +368,13 @@ static NSString *gLoggingProcessName = nil; } } - NSString *mungedStr = [[NSString alloc] initWithData:mutableData - encoding:NSUTF8StringEncoding]; + NSString *mungedStr = [[NSString alloc] initWithData:mutableData encoding:NSUTF8StringEncoding]; if (mungedStr) { - // scan for the boundary string NSString *boundary = nil; NSScanner *scanner = [NSScanner scannerWithString:mungedStr]; - if ([scanner scanUpToString:@"\r\n" intoString:&boundary] - && [boundary hasPrefix:@"--"]) { - + if ([scanner scanUpToString:@"\r\n" intoString:&boundary] && [boundary hasPrefix:@"--"]) { // we found a boundary string; use it to divide the string into parts NSArray *mungedParts = [mungedStr componentsSeparatedByString:boundary]; @@ -412,8 +398,8 @@ static NSString *gLoggingProcessName = nil; header = @""; } // make a part string with the header and <> - NSString *binStr = [NSString stringWithFormat:@"\r%@\r<<%lu bytes>>\r", - header, (long)(partSize - header.length)]; + NSString *binStr = [NSString + stringWithFormat:@"\r%@\r<<%lu bytes>>\r", header, (long)(partSize - header.length)]; [origParts addObject:binStr]; } offset += partSize + boundary.length; @@ -465,10 +451,8 @@ static NSString *gLoggingProcessName = nil; int64_t responseDataLength = self.downloadedLength; if (responseDataLength > 0) { NSData *downloadedData = self.downloadedData; - if (downloadedData == nil - && responseDataLength > 0 - && responseDataLength < 20000 - && self.destinationFileURL) { + if (downloadedData == nil && responseDataLength > 0 && responseDataLength < 20000 && + self.destinationFileURL) { // There's a download file that's not too big, so get the data to display from the downloaded // file. NSURL *destinationURL = self.destinationFileURL; @@ -482,8 +466,8 @@ static NSString *gLoggingProcessName = nil; NSData *dataToWrite = nil; if (responseDataStr) { // we were able to make a UTF-8 string from the response data - if ([responseMIMEType isEqual:@"application/atom+xml"] - || [responseMIMEType hasSuffix:@"/xml"]) { + if ([responseMIMEType isEqual:@"application/atom+xml"] || + [responseMIMEType hasSuffix:@"/xml"]) { responseDataExtn = @"xml"; dataToWrite = [responseDataStr dataUsingEncoding:NSUTF8StringEncoding]; } @@ -505,34 +489,38 @@ static NSString *gLoggingProcessName = nil; // if we have an extension, save the raw data in a file with that extension if (responseDataExtn && dataToWrite) { // generate a response file base name like - NSString *responseBaseName = [NSString stringWithFormat:@"fetch_%d_response", responseCounter]; + NSString *responseBaseName = + [NSString stringWithFormat:@"fetch_%d_response", responseCounter]; responseDataFileName = [responseBaseName stringByAppendingPathExtension:responseDataExtn]; - NSString *responseDataFilePath = [logDirectory stringByAppendingPathComponent:responseDataFileName]; + NSString *responseDataFilePath = + [logDirectory stringByAppendingPathComponent:responseDataFileName]; NSError *downloadedError = nil; if (gIsLoggingToFile && ![dataToWrite writeToFile:responseDataFilePath options:0 error:&downloadedError]) { - NSLog(@"%@ logging write error:%@ (%@)", [self class], downloadedError, responseDataFileName); + NSLog(@"%@ logging write error:%@ (%@)", [self class], downloadedError, + responseDataFileName); } } } // we'll have one main html file per run of the app NSString *htmlName = [[self class] htmlFileName]; - NSString *htmlPath =[logDirectory stringByAppendingPathComponent:htmlName]; + NSString *htmlPath = [logDirectory stringByAppendingPathComponent:htmlName]; // if the html file exists (from logging previous fetches) we don't need // to re-write the header or the scripts NSFileManager *fileMgr = [NSFileManager defaultManager]; BOOL didFileExist = [fileMgr fileExistsAtPath:htmlPath]; - NSMutableString* outputHTML = [NSMutableString string]; + NSMutableString *outputHTML = [NSMutableString string]; // we need a header to say we'll have UTF-8 text if (!didFileExist) { - [outputHTML appendFormat:@"%@ HTTP fetch log %@", - processName, [[self class] loggingDateStamp]]; + [outputHTML + appendFormat:@"%@ HTTP fetch log %@", + processName, [[self class] loggingDateStamp]]; } // now write the visible html elements NSString *copyableFileName = [NSString stringWithFormat:@"fetch_%d.txt", responseCounter]; @@ -545,7 +533,8 @@ static NSString *gLoggingProcessName = nil; if (comment.length > 0) { [outputHTML appendFormat:@"%@      ", comment]; } - [outputHTML appendFormat:@"request/response log
", copyableFileName]; + [outputHTML + appendFormat:@"request/response log
", copyableFileName]; NSTimeInterval elapsed = -self.initialBeginFetchDate.timeIntervalSinceNow; [outputHTML appendFormat:@"elapsed: %5.3fsec
", elapsed]; @@ -559,7 +548,7 @@ static NSString *gLoggingProcessName = nil; self.redirectedFromURL = [requestURL copy]; if (redirectedFromURLString) { [outputHTML appendFormat:@"redirected from %@
", - redirectedFromURLString]; + redirectedFromURLString]; } [outputHTML appendFormat:@"request: %@ %@
\n", requestMethod, requestURL]; @@ -590,10 +579,11 @@ static NSString *gLoggingProcessName = nil; } matchHdr = [requestHeaders objectForKey:@"If-None-Match"]; if (matchHdr) { - headerDetails = [headerDetails stringByAppendingString:@"   if-none-match"]; + headerDetails = + [headerDetails stringByAppendingString:@"   if-none-match"]; } - [outputHTML appendFormat:@"   headers: %d %@
", - (int)numberOfRequestHeaders, headerDetails]; + [outputHTML appendFormat:@"   headers: %d %@
", (int)numberOfRequestHeaders, + headerDetails]; } else { [outputHTML appendFormat:@"   headers: none
"]; } @@ -633,14 +623,13 @@ static NSString *gLoggingProcessName = nil; if (bodyDataLength > 0) { [outputHTML appendFormat:@"   data: %llu bytes, %@
\n", - bodyDataLength, postType ? postType : @"(no type)"]; + bodyDataLength, postType ? postType : @"(no type)"]; NSString *logRequestBody = self.logRequestBody; if (logRequestBody) { bodyDataStr = [logRequestBody copy]; self.logRequestBody = nil; } else { - bodyDataStr = [self stringFromStreamData:bodyData - contentType:postType]; + bodyDataStr = [self stringFromStreamData:bodyData contentType:postType]; if (bodyDataStr) { // remove OAuth 2 client secret and refresh token bodyDataStr = [[self class] snipSubstringOfString:bodyDataStr @@ -674,17 +663,17 @@ static NSString *gLoggingProcessName = nil; NSString *jsonMessage = [jsonError valueForKey:@"message"]; if (jsonCode || jsonMessage) { // 2691 = ⚑ - NSString *const jsonErrFmt = - @"   JSON error: %@ %@  ⚑"; - statusString = [statusString stringByAppendingFormat:jsonErrFmt, - jsonCode ? jsonCode : @"", - jsonMessage ? jsonMessage : @""]; + NSString *const jsonErrFmt = @"   JSON error: %@ %@  ⚑"; + statusString = + [statusString stringByAppendingFormat:jsonErrFmt, jsonCode ? jsonCode : @"", + jsonMessage ? jsonMessage : @""]; } } } } else { // purple for anything other than 200 or 201 - NSString *flag = status >= 400 ? @" ⚑" : @""; // 2691 = ⚑ + NSString *flag = status >= 400 ? @" ⚑" : @""; // 2691 = ⚑ NSString *explanation = [NSHTTPURLResponse localizedStringForStatusCode:status]; NSString *const statusFormat = @"%ld %@ %@"; statusString = [NSString stringWithFormat:statusFormat, (long)status, explanation, flag]; @@ -699,8 +688,8 @@ static NSString *gLoggingProcessName = nil; @"response URL: %@
\n"; responseURLStr = [NSString stringWithFormat:responseURLFormat, [responseURL absoluteString]]; } - [outputHTML appendFormat:@"response:  status %@
\n%@", - statusString, responseURLStr]; + [outputHTML appendFormat:@"response:  status %@
\n%@", statusString, + responseURLStr]; // Write the response headers NSUInteger numberOfResponseHeaders = responseHeaders.count; if (numberOfResponseHeaders > 0) { @@ -714,7 +703,7 @@ static NSString *gLoggingProcessName = nil; NSString *redirectsStr = isRedirect ? @"  redirects" : @""; [outputHTML appendFormat:@"   headers: %d %@ %@
\n", - (int)numberOfResponseHeaders, cookiesStr, redirectsStr]; + (int)numberOfResponseHeaders, cookiesStr, redirectsStr]; } else { [outputHTML appendString:@"   headers: none
\n"]; } @@ -728,21 +717,22 @@ static NSString *gLoggingProcessName = nil; if (isResponseImage) { // Make a small inline image that links to the full image file [outputHTML appendFormat:@"   data: %lld bytes, %@
", - responseDataLength, responseMIMEType]; - NSString *const fmt = - @"image\n"; + responseDataLength, responseMIMEType]; + NSString *const fmt = @"image\n"; [outputHTML appendFormat:fmt, responseDataFileName, responseDataFileName]; } else { // The response data was XML; link to the xml file - NSString *const fmt = - @"   data: %lld bytes, %@   %@\n"; - [outputHTML appendFormat:fmt, responseDataLength, responseMIMEType, - responseDataFileName, [responseDataFileName pathExtension]]; + NSString *const fmt = @"   data: %lld bytes, " + @"%@   %@\n"; + [outputHTML appendFormat:fmt, responseDataLength, responseMIMEType, responseDataFileName, + [responseDataFileName pathExtension]]; } } else { // The response data was not an image; just show the length and MIME type [outputHTML appendFormat:@"   data: %lld bytes, %@\n", - responseDataLength, responseMIMEType ? responseMIMEType : @"(no response type)"]; + responseDataLength, + responseMIMEType ? responseMIMEType : @"(no response type)"]; } // Make a single string of the request and response, suitable for copying // to the clipboard and pasting into a bug report @@ -757,7 +747,7 @@ static NSString *gLoggingProcessName = nil; [copyable appendFormat:@"Request: %@ %@\n", requestMethod, requestURL]; if (requestHeaders.count > 0) { [copyable appendFormat:@"Request headers:\n%@\n", - [[self class] headersStringForDictionary:requestHeaders]]; + [[self class] headersStringForDictionary:requestHeaders]]; } if (bodyDataLength > 0) { [copyable appendFormat:@"Request body: (%llu bytes)\n", bodyDataLength]; @@ -767,9 +757,9 @@ static NSString *gLoggingProcessName = nil; [copyable appendString:@"\n"]; } if (response) { - [copyable appendFormat:@"Response: status %d\n", (int) status]; + [copyable appendFormat:@"Response: status %d\n", (int)status]; [copyable appendFormat:@"Response headers:\n%@\n", - [[self class] headersStringForDictionary:responseHeaders]]; + [[self class] headersStringForDictionary:responseHeaders]]; [copyable appendFormat:@"Response body: (%lld bytes)\n", responseDataLength]; if (responseDataLength > 0) { NSString *logResponseBody = self.logResponseBody; @@ -783,8 +773,8 @@ static NSString *gLoggingProcessName = nil; } else { // Even though it's redundant, we'll put in text to indicate that all the bytes are binary. if (self.destinationFileURL) { - [copyable appendFormat:@"<<%lld bytes>> to file %@\n", - responseDataLength, self.destinationFileURL.path]; + [copyable appendFormat:@"<<%lld bytes>> to file %@\n", responseDataLength, + self.destinationFileURL.path]; } else { [copyable appendFormat:@"<<%lld bytes>>\n", responseDataLength]; } @@ -819,11 +809,10 @@ static NSString *gLoggingProcessName = nil; [outputHTML appendString:@"

"]; // Append the HTML to the main output file - const char* htmlBytes = outputHTML.UTF8String; - NSOutputStream *stream = [NSOutputStream outputStreamToFileAtPath:htmlPath - append:YES]; + const char *htmlBytes = outputHTML.UTF8String; + NSOutputStream *stream = [NSOutputStream outputStreamToFileAtPath:htmlPath append:YES]; [stream open]; - [stream write:(const uint8_t *) htmlBytes maxLength:strlen(htmlBytes)]; + [stream write:(const uint8_t *)htmlBytes maxLength:strlen(htmlBytes)]; [stream close]; // Make a symlink to the latest html @@ -832,9 +821,7 @@ static NSString *gLoggingProcessName = nil; NSString *symlinkPath = [parentDir stringByAppendingPathComponent:symlinkName]; [fileMgr removeItemAtPath:symlinkPath error:NULL]; - [fileMgr createSymbolicLinkAtPath:symlinkPath - withDestinationPath:htmlPath - error:NULL]; + [fileMgr createSymbolicLinkAtPath:symlinkPath withDestinationPath:htmlPath error:NULL]; #if TARGET_OS_IPHONE static BOOL gReportedLoggingPath = NO; if (!gReportedLoggingPath) { @@ -882,11 +869,11 @@ static NSString *gLoggingProcessName = nil; } GTMSessionFetcherBodyStreamProvider loggedStreamProvider = ^(GTMSessionFetcherBodyStreamProviderResponse response) { - streamProvider(^(NSInputStream *bodyStream) { + streamProvider(^(NSInputStream *bodyStream) { bodyStream = [self loggedInputStreamForInputStream:bodyStream]; response(bodyStream); - }); - }; + }); + }; return loggedStreamProvider; } @@ -898,9 +885,7 @@ static NSString *gLoggingProcessName = nil; readIntoBuffer:(void *)buffer length:(int64_t)length { // append the captured data - NSData *data = [NSData dataWithBytesNoCopy:buffer - length:(NSUInteger)length - freeWhenDone:NO]; + NSData *data = [NSData dataWithBytesNoCopy:buffer length:(NSUInteger)length freeWhenDone:NO]; [self appendLoggedStreamData:data]; } @@ -923,9 +908,7 @@ static NSString *gLoggingProcessName = nil; NSUInteger originalLength = originalStr.length; NSUInteger startOfTarget = NSMaxRange(startRange); NSRange targetAndRest = NSMakeRange(startOfTarget, originalLength - startOfTarget); - NSRange endRange = [originalStr rangeOfString:endStr - options:0 - range:targetAndRest]; + NSRange endRange = [originalStr rangeOfString:endStr options:0 range:targetAndRest]; NSRange replaceRange; if (endRange.location == NSNotFound) { // Found no end marker so replace to end of string @@ -937,7 +920,7 @@ static NSString *gLoggingProcessName = nil; NSString *result = [originalStr stringByReplacingCharactersInRange:replaceRange withString:@"_snip_"]; return result; -#endif // SKIP_GTM_FETCH_LOGGING_SNIPPING +#endif // SKIP_GTM_FETCH_LOGGING_SNIPPING } + (NSString *)headersStringForDictionary:(NSDictionary *)dict { @@ -979,4 +962,4 @@ static NSString *gLoggingProcessName = nil; @end -#endif // !STRIP_GTM_FETCH_LOGGING +#endif // !STRIP_GTM_FETCH_LOGGING diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.h b/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.h index 312abaa..68f3ac5 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.h +++ b/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.h @@ -22,7 +22,7 @@ #import "GTMSessionFetcher.h" -GTM_ASSUME_NONNULL_BEGIN +NS_ASSUME_NONNULL_BEGIN // Notifications. @@ -34,12 +34,14 @@ GTM_ASSUME_NONNULL_BEGIN extern NSString *const kGTMSessionFetcherServiceSessionBecameInvalidNotification; extern NSString *const kGTMSessionFetcherServiceSessionKey; -@interface GTMSessionFetcherService : NSObject +@interface GTMSessionFetcherService : NSObject // Queues of delayed and running fetchers. Each dictionary contains arrays // of GTMSessionFetcher *fetchers, keyed by NSString *host -@property(atomic, strong, readonly, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, NSArray *) *delayedFetchersByHost; -@property(atomic, strong, readonly, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, NSArray *) *runningFetchersByHost; +@property(atomic, strong, readonly, nullable) + NSDictionary *delayedFetchersByHost; +@property(atomic, strong, readonly, nullable) + NSDictionary *runningFetchersByHost; // A max value of 0 means no fetchers should be delayed. // The default limit is 10 simultaneous fetchers targeting each host. @@ -48,24 +50,24 @@ extern NSString *const kGTMSessionFetcherServiceSessionKey; @property(atomic, assign) NSUInteger maxRunningFetchersPerHost; // Properties to be applied to each fetcher; see GTMSessionFetcher.h for descriptions -@property(atomic, strong, GTM_NULLABLE) NSURLSessionConfiguration *configuration; -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherConfigurationBlock configurationBlock; -@property(atomic, strong, GTM_NULLABLE) NSHTTPCookieStorage *cookieStorage; -@property(atomic, strong, GTM_NULL_RESETTABLE) dispatch_queue_t callbackQueue; -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherChallengeBlock challengeBlock; -@property(atomic, strong, GTM_NULLABLE) NSURLCredential *credential; +@property(atomic, strong, nullable) NSURLSessionConfiguration *configuration; +@property(atomic, copy, nullable) GTMSessionFetcherConfigurationBlock configurationBlock; +@property(atomic, strong, nullable) NSHTTPCookieStorage *cookieStorage; +@property(atomic, strong, null_resettable) dispatch_queue_t callbackQueue; +@property(atomic, copy, nullable) GTMSessionFetcherChallengeBlock challengeBlock; +@property(atomic, strong, nullable) NSURLCredential *credential; @property(atomic, strong) NSURLCredential *proxyCredential; -@property(atomic, copy, GTM_NULLABLE) GTM_NSArrayOf(NSString *) *allowedInsecureSchemes; +@property(atomic, copy, nullable) NSArray *allowedInsecureSchemes; @property(atomic, assign) BOOL allowLocalhostRequest; @property(atomic, assign) BOOL allowInvalidServerCertificates; @property(atomic, assign, getter=isRetryEnabled) BOOL retryEnabled; -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherRetryBlock retryBlock; +@property(atomic, copy, nullable) GTMSessionFetcherRetryBlock retryBlock; @property(atomic, assign) NSTimeInterval maxRetryInterval; @property(atomic, assign) NSTimeInterval minRetryInterval; -@property(atomic, copy, GTM_NULLABLE) GTM_NSDictionaryOf(NSString *, id) *properties; -@property(atomic, copy, GTM_NULLABLE) +@property(atomic, copy, nullable) NSDictionary *properties; +@property(atomic, copy, nullable) GTMSessionFetcherMetricsCollectionBlock metricsCollectionBlock API_AVAILABLE( - ios(10.0), macosx(10.12), tvos(10.0), watchos(3.0)); + ios(10.0), macosx(10.12), tvos(10.0), watchos(6.0)); #if GTM_BACKGROUND_TASK_FETCHING @property(atomic, assign) BOOL skipBackgroundTask; @@ -76,17 +78,17 @@ extern NSString *const kGTMSessionFetcherServiceSessionKey; // This default will be added starting with builds with the SDKs for OS X 10.11 and iOS 9. // // To use the configuration's default user agent, set this property to nil. -@property(atomic, copy, GTM_NULLABLE) NSString *userAgent; +@property(atomic, copy, nullable) NSString *userAgent; // The authorizer to attach to the created fetchers. If a specific fetcher should // not authorize its requests, the fetcher's authorizer property may be set to nil // before the fetch begins. -@property(atomic, strong, GTM_NULLABLE) id authorizer; +@property(atomic, strong, nullable) id authorizer; // Delegate queue used by the session when calling back to the fetcher. The default // is the main queue. Changing this does not affect the queue used to call back to the // application; that is specified by the callbackQueue property above. -@property(atomic, strong, GTM_NULL_RESETTABLE) NSOperationQueue *sessionDelegateQueue; +@property(atomic, strong, null_resettable) NSOperationQueue *sessionDelegateQueue; // When enabled, indicates the same session should be used by subsequent fetchers. // @@ -120,12 +122,11 @@ extern NSString *const kGTMSessionFetcherServiceSessionKey; // -fetcherWithRequest:fetcherClass: may be overridden to customize creation of // fetchers. This is the ONLY method in the GTMSessionFetcher library intended to // be overridden. -- (id)fetcherWithRequest:(NSURLRequest *)request - fetcherClass:(Class)fetcherClass; +- (id)fetcherWithRequest:(NSURLRequest *)request fetcherClass:(Class)fetcherClass; - (BOOL)isDelayingFetcher:(GTMSessionFetcher *)fetcher; -- (NSUInteger)numberOfFetchers; // running + delayed fetchers +- (NSUInteger)numberOfFetchers; // running + delayed fetchers - (NSUInteger)numberOfRunningFetchers; - (NSUInteger)numberOfDelayedFetchers; @@ -133,24 +134,33 @@ extern NSString *const kGTMSessionFetcherServiceSessionKey; // by the service which have been started and have not yet stopped. // // Returns an array of fetcher objects, or nil if none. -- (GTM_NULLABLE GTM_NSArrayOf(GTMSessionFetcher *) *)issuedFetchers; +- (nullable NSArray *)issuedFetchers; // Search for running or delayed fetchers with the specified URL. // // Returns an array of fetcher objects found, or nil if none found. -- (GTM_NULLABLE GTM_NSArrayOf(GTMSessionFetcher *) *)issuedFetchersWithRequestURL:(NSURL *)requestURL; +- (nullable NSArray *)issuedFetchersWithRequestURL:(NSURL *)requestURL; - (void)stopAllFetchers; +// Holds a weak reference to `decorator`. When creating a fetcher via +// `-fetcherWithRequest:fetcherClass:`, each registered `decorator` can inspect and potentially +// change the fetcher's request before it starts. Decorators are invoked in the order in which +// they are passed to this method. +- (void)addDecorator:(id)decorator; + +// Removes a `decorator` previously passed to `-removeDecorator:`. +- (void)removeDecorator:(id)decorator; + // Methods for use by the fetcher class only. -- (GTM_NULLABLE NSURLSession *)session; -- (GTM_NULLABLE NSURLSession *)sessionForFetcherCreation; -- (GTM_NULLABLE id)sessionDelegate; -- (GTM_NULLABLE NSDate *)stoppedAllFetchersDate; +- (nullable NSURLSession *)session; +- (nullable NSURLSession *)sessionForFetcherCreation; +- (nullable id)sessionDelegate; +- (nullable NSDate *)stoppedAllFetchersDate; // The testBlock can inspect its fetcher parameter's request property to // determine which fetcher is being faked. -@property(atomic, copy, GTM_NULLABLE) GTMSessionFetcherTestBlock testBlock; +@property(atomic, copy, nullable) GTMSessionFetcherTestBlock testBlock; @end @@ -166,12 +176,14 @@ extern NSString *const kGTMSessionFetcherServiceSessionKey; // or fetcher; the test block can inspect the fetcher's request or other properties. // // See the description of the testBlock property below. -+ (instancetype)mockFetcherServiceWithFakedData:(GTM_NULLABLE NSData *)fakedDataOrNil - fakedError:(GTM_NULLABLE NSError *)fakedErrorOrNil; -+ (instancetype)mockFetcherServiceWithFakedData:(GTM_NULLABLE NSData *)fakedDataOrNil ++ (instancetype)mockFetcherServiceWithFakedData:(nullable NSData *)fakedDataOrNil + fakedError:(nullable NSError *)fakedErrorOrNil; ++ (instancetype)mockFetcherServiceWithFakedData:(nullable NSData *)fakedDataOrNil fakedResponse:(NSHTTPURLResponse *)fakedResponse - fakedError:(GTM_NULLABLE NSError *)fakedErrorOrNil; + fakedError:(nullable NSError *)fakedErrorOrNil; +// DEPRECATED: Callers should use XCTestExpectation instead. +// // Spin the run loop and discard events (or, if not on the main thread, just sleep the thread) // until all running and delayed fetchers have completed. // @@ -181,16 +193,18 @@ extern NSString *const kGTMSessionFetcherServiceSessionKey; // sufficient reason for rejection from the app store. // // Returns NO if timed out. -- (BOOL)waitForCompletionOfAllFetchersWithTimeout:(NSTimeInterval)timeoutInSeconds; +- (BOOL)waitForCompletionOfAllFetchersWithTimeout:(NSTimeInterval)timeoutInSeconds + __deprecated_msg("Use XCTestExpectation instead"); @end @interface GTMSessionFetcherService (BackwardsCompatibilityOnly) -// Clients using GTMSessionFetcher should set the cookie storage explicitly themselves. -// This method is just for compatibility with the old fetcher. -@property(atomic, assign) NSInteger cookieStorageMethod; +// Clients using GTMSessionFetcher should set the cookie storage explicitly themselves; +// this property is deprecated and will be removed soon. +@property(atomic, assign) NSInteger cookieStorageMethod __deprecated_msg( + "Create an NSHTTPCookieStorage and set .cookieStorage directly."); @end -GTM_ASSUME_NONNULL_END +NS_ASSUME_NONNULL_END diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.m b/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.m index f9942c0..ed9c3eb 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.m +++ b/Pods/GTMSessionFetcher/Source/GTMSessionFetcherService.m @@ -19,15 +19,15 @@ #import "GTMSessionFetcherService.h" -NSString *const kGTMSessionFetcherServiceSessionBecameInvalidNotification - = @"kGTMSessionFetcherServiceSessionBecameInvalidNotification"; -NSString *const kGTMSessionFetcherServiceSessionKey - = @"kGTMSessionFetcherServiceSessionKey"; +NSString *const kGTMSessionFetcherServiceSessionBecameInvalidNotification = + @"kGTMSessionFetcherServiceSessionBecameInvalidNotification"; +NSString *const kGTMSessionFetcherServiceSessionKey = @"kGTMSessionFetcherServiceSessionKey"; #if !GTMSESSION_BUILD_COMBINED_SOURCES @interface GTMSessionFetcher (ServiceMethods) - (BOOL)beginFetchMayDelay:(BOOL)mayDelay - mayAuthorize:(BOOL)mayAuthorize; + mayAuthorize:(BOOL)mayAuthorize + mayDecorate:(BOOL)mayDecorate; @end #endif // !GTMSESSION_BUILD_COMBINED_SOURCES @@ -36,6 +36,9 @@ NSString *const kGTMSessionFetcherServiceSessionKey @property(atomic, strong, readwrite) NSDictionary *delayedFetchersByHost; @property(atomic, strong, readwrite) NSDictionary *runningFetchersByHost; +// Ordered collection of id, held weakly. +@property(atomic, strong, readonly) NSPointerArray *decoratorsPointerArray; + @end // Since NSURLSession doesn't support a separate delegate per task (!), instances of this @@ -43,7 +46,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey // // This class maps a session's tasks to fetchers, and resends delegate messages to the task's // fetcher. -@interface GTMSessionFetcherSessionDelegateDispatcher : NSObject +@interface GTMSessionFetcherSessionDelegateDispatcher : NSObject // The session for the tasks in this dispatcher's task-to-fetcher map. @property(atomic) NSURLSession *session; @@ -54,12 +57,10 @@ NSString *const kGTMSessionFetcherServiceSessionKey // The current discard timer. @property(atomic, readonly) NSTimer *discardTimer; - - (instancetype)initWithParentService:(GTMSessionFetcherService *)parentService sessionDiscardInterval:(NSTimeInterval)discardInterval; -- (void)setFetcher:(GTMSessionFetcher *)fetcher - forTask:(NSURLSessionTask *)task; +- (void)setFetcher:(GTMSessionFetcher *)fetcher forTask:(NSURLSessionTask *)task; - (void)removeFetcher:(GTMSessionFetcher *)fetcher; // Before using a session, tells the delegate dispatcher to stop the discard timer. @@ -71,7 +72,6 @@ NSString *const kGTMSessionFetcherServiceSessionKey @end - @implementation GTMSessionFetcherService { NSMutableDictionary *_delayedFetchersByHost; NSMutableDictionary *_runningFetchersByHost; @@ -106,6 +106,8 @@ NSString *const kGTMSessionFetcherServiceSessionKey NSDate *_stoppedAllFetchersDate; } +// Clang-format likes to cram all @synthesize items onto the fewest lines, rather than one-per. +// clang-format off @synthesize maxRunningFetchersPerHost = _maxRunningFetchersPerHost, configuration = _configuration, configurationBlock = _configurationBlock, @@ -124,7 +126,9 @@ NSString *const kGTMSessionFetcherServiceSessionKey metricsCollectionBlock = _metricsCollectionBlock, properties = _properties, unusedSessionTimeout = _unusedSessionTimeout, + decoratorsPointerArray = _decoratorsPointerArray, testBlock = _testBlock; +// clang-format on #if GTM_BACKGROUND_TASK_FETCHING @synthesize skipBackgroundTask = _skipBackgroundTask; @@ -138,9 +142,9 @@ NSString *const kGTMSessionFetcherServiceSessionKey _maxRunningFetchersPerHost = 10; _cookieStorageMethod = -1; _unusedSessionTimeout = 60.0; - _delegateDispatcher = - [[GTMSessionFetcherSessionDelegateDispatcher alloc] initWithParentService:self - sessionDiscardInterval:_unusedSessionTimeout]; + _delegateDispatcher = [[GTMSessionFetcherSessionDelegateDispatcher alloc] + initWithParentService:self + sessionDiscardInterval:_unusedSessionTimeout]; _callbackQueue = dispatch_get_main_queue(); _delegateQueue = [[NSOperationQueue alloc] init]; @@ -152,10 +156,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey // Starting with the SDKs for OS X 10.11/iOS 9, the service has a default useragent. // Apps can remove this and get the default system "CFNetwork" useragent by setting the // fetcher service's userAgent property to nil. -#if (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_11) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_11) \ - || (TARGET_OS_IPHONE && defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0) _userAgent = GTMFetcherStandardUserAgentString(nil); -#endif } return self; } @@ -168,8 +169,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey #pragma mark Generate a new fetcher // Clients may override this method. Clients should not override any other library methods. -- (id)fetcherWithRequest:(NSURLRequest *)request - fetcherClass:(Class)fetcherClass { +- (id)fetcherWithRequest:(NSURLRequest *)request fetcherClass:(Class)fetcherClass { GTMSessionFetcher *fetcher = [[fetcherClass alloc] initWithRequest:request configuration:self.configuration]; fetcher.callbackQueue = self.callbackQueue; @@ -187,24 +187,25 @@ NSString *const kGTMSessionFetcherServiceSessionKey fetcher.retryBlock = self.retryBlock; fetcher.maxRetryInterval = self.maxRetryInterval; fetcher.minRetryInterval = self.minRetryInterval; - if (@available(iOS 10.0, macOS 10.12, tvOS 10.0, watchOS 3.0, *)) { + if (@available(iOS 10.0, *)) { fetcher.metricsCollectionBlock = self.metricsCollectionBlock; } fetcher.properties = self.properties; fetcher.service = self; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" if (self.cookieStorageMethod >= 0) { [fetcher setCookieStorageMethod:self.cookieStorageMethod]; } +#pragma clang diagnostic pop #if GTM_BACKGROUND_TASK_FETCHING fetcher.skipBackgroundTask = self.skipBackgroundTask; #endif NSString *userAgent = self.userAgent; - if (userAgent.length > 0 - && [request valueForHTTPHeaderField:@"User-Agent"] == nil) { - [fetcher setRequestValue:userAgent - forHTTPHeaderField:@"User-Agent"]; + if (userAgent.length > 0 && [request valueForHTTPHeaderField:@"User-Agent"] == nil) { + [fetcher setRequestValue:userAgent forHTTPHeaderField:@"User-Agent"]; } fetcher.testBlock = self.testBlock; @@ -212,8 +213,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey } - (GTMSessionFetcher *)fetcherWithRequest:(NSURLRequest *)request { - return [self fetcherWithRequest:request - fetcherClass:[GTMSessionFetcher class]]; + return [self fetcherWithRequest:request fetcherClass:[GTMSessionFetcher class]]; } - (GTMSessionFetcher *)fetcherWithURL:(NSURL *)requestURL { @@ -225,6 +225,39 @@ NSString *const kGTMSessionFetcherServiceSessionKey return [self fetcherWithURL:url]; } +- (void)addDecorator:(id)decorator { + @synchronized(self) { + if (!_decoratorsPointerArray) { + _decoratorsPointerArray = [NSPointerArray weakObjectsPointerArray]; + } + [_decoratorsPointerArray addPointer:(__bridge void *)decorator]; + } +} + +- (nullable NSArray> *)decorators { + @synchronized(self) { + return _decoratorsPointerArray.allObjects; + } +} + +- (void)removeDecorator:(id)decorator { + @synchronized(self) { + NSUInteger i = 0; + for (id decoratorCandidate in _decoratorsPointerArray) { + if (decoratorCandidate == decorator) { + break; + } + ++i; + } + GTMSESSION_ASSERT_DEBUG(i < _decoratorsPointerArray.count, + @"decorator %@ must be passed to -addDecorator: before removing", + decorator); + if (i < _decoratorsPointerArray.count) { + [_decoratorsPointerArray removePointerAtIndex:i]; + } + } +} + // Returns a session for the fetcher's host, or nil. - (NSURLSession *)session { @synchronized(self) { @@ -284,8 +317,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey #pragma mark Queue Management -- (void)addRunningFetcher:(GTMSessionFetcher *)fetcher - forHost:(NSString *)host { +- (void)addRunningFetcher:(GTMSessionFetcher *)fetcher forHost:(NSString *)host { // Add to the array of running fetchers for this host, creating the array if needed. NSMutableArray *runningForHost = [_runningFetchersByHost objectForKey:host]; if (runningForHost == nil) { @@ -296,8 +328,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey } } -- (void)addDelayedFetcher:(GTMSessionFetcher *)fetcher - forHost:(NSString *)host { +- (void)addDelayedFetcher:(GTMSessionFetcher *)fetcher forHost:(NSString *)host { // Add to the array of delayed fetchers for this host, creating the array if needed. NSMutableArray *delayedForHost = [_delayedFetchersByHost objectForKey:host]; if (delayedForHost == nil) { @@ -345,16 +376,14 @@ NSString *const kGTMSessionFetcherServiceSessionKey GTMSessionMonitorSynchronized(self); NSMutableArray *runningForHost = [_runningFetchersByHost objectForKey:host]; - if (runningForHost != nil - && [runningForHost indexOfObjectIdenticalTo:fetcher] != NSNotFound) { + if (runningForHost != nil && [runningForHost indexOfObjectIdenticalTo:fetcher] != NSNotFound) { GTMSESSION_ASSERT_DEBUG(NO, @"%@ was already running", fetcher); return YES; } - BOOL shouldRunNow = (fetcher.usingBackgroundSession - || _maxRunningFetchersPerHost == 0 - || _maxRunningFetchersPerHost > - [[self class] numberOfNonBackgroundSessionFetchers:runningForHost]); + BOOL shouldRunNow = (fetcher.usingBackgroundSession || _maxRunningFetchersPerHost == 0 || + _maxRunningFetchersPerHost > + [[self class] numberOfNonBackgroundSessionFetchers:runningForHost]); if (shouldRunNow) { [self addRunningFetcher:fetcher forHost:host]; shouldBeginResult = YES; @@ -373,13 +402,13 @@ NSString *const kGTMSessionFetcherServiceSessionKey } - (void)startFetcher:(GTMSessionFetcher *)fetcher { - [fetcher beginFetchMayDelay:NO - mayAuthorize:YES]; + [fetcher beginFetchMayDelay:NO mayAuthorize:YES mayDecorate:YES]; } // Internal utility. Returns a fetcher's delegate if it's a dispatcher, or nil if the fetcher // is its own delegate (possibly via proxy) and has no dispatcher. -- (GTMSessionFetcherSessionDelegateDispatcher *)delegateDispatcherForFetcher:(GTMSessionFetcher *)fetcher { +- (GTMSessionFetcherSessionDelegateDispatcher *)delegateDispatcherForFetcher: + (GTMSessionFetcher *)fetcher { GTMSessionCheckNotSynchronized(self); NSURLSession *fetcherSession = fetcher.session; @@ -388,11 +417,12 @@ NSString *const kGTMSessionFetcherServiceSessionKey // If the delegate is non-nil and claims to be a GTMSessionFetcher, there is no dispatcher; // assume the fetcher is the delegate or has been proxied (some third-party frameworks // are known to swizzle NSURLSession to proxy its delegate). - BOOL hasDispatcher = (fetcherDelegate != nil && - ![fetcherDelegate isKindOfClass:[GTMSessionFetcher class]]); + BOOL hasDispatcher = + (fetcherDelegate != nil && ![fetcherDelegate isKindOfClass:[GTMSessionFetcher class]]); if (hasDispatcher) { - GTMSESSION_ASSERT_DEBUG([fetcherDelegate isKindOfClass:[GTMSessionFetcherSessionDelegateDispatcher class]], - @"Fetcher delegate class: %@", [fetcherDelegate class]); + GTMSESSION_ASSERT_DEBUG( + [fetcherDelegate isKindOfClass:[GTMSessionFetcherSessionDelegateDispatcher class]], + @"Fetcher delegate class: %@", [fetcherDelegate class]); return (GTMSessionFetcherSessionDelegateDispatcher *)fetcherDelegate; } } @@ -425,8 +455,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey GTMSessionFetcherSessionDelegateDispatcher *delegateDispatcher = [self delegateDispatcherForFetcher:fetcher]; if (delegateDispatcher) { - GTMSESSION_ASSERT_DEBUG(fetcher.canShareSession, - @"Inappropriate shared session: %@", fetcher); + GTMSESSION_ASSERT_DEBUG(fetcher.canShareSession, @"Inappropriate shared session: %@", fetcher); // There should already be a session, from this or a previous fetcher. // @@ -435,16 +464,15 @@ NSString *const kGTMSessionFetcherServiceSessionKey NSURLSession *fetcherSession = fetcher.session; GTMSESSION_ASSERT_DEBUG(sharedSession != nil, @"Missing delegate session: %@", fetcher); GTMSESSION_ASSERT_DEBUG(fetcherSession == sharedSession, - @"Inconsistent session: %@ %@ (shared: %@)", - fetcher, fetcherSession, sharedSession); + @"Inconsistent session: %@ %@ (shared: %@)", fetcher, fetcherSession, + sharedSession); if (sharedSession != nil && fetcherSession == sharedSession) { NSURLSessionTask *task = fetcher.sessionTask; GTMSESSION_ASSERT_DEBUG(task != nil, @"Missing session task: %@", fetcher); if (task) { - [delegateDispatcher setFetcher:fetcher - forTask:task]; + [delegateDispatcher setFetcher:fetcher forTask:task]; } } } @@ -483,15 +511,14 @@ NSString *const kGTMSessionFetcherServiceSessionKey NSMutableArray *delayedForHost = [_delayedFetchersByHost objectForKey:host]; [delayedForHost removeObject:fetcher]; - while (delayedForHost.count > 0 - && [[self class] numberOfNonBackgroundSessionFetchers:runningForHost] - < _maxRunningFetchersPerHost) { + while (delayedForHost.count > 0 && + [[self class] numberOfNonBackgroundSessionFetchers:runningForHost] < + _maxRunningFetchersPerHost) { // Start another delayed fetcher running, scanning for the minimum // priority value, defaulting to FIFO for equal priorities GTMSessionFetcher *nextFetcher = nil; for (GTMSessionFetcher *delayedFetcher in delayedForHost) { - if (nextFetcher == nil - || delayedFetcher.servicePriority < nextFetcher.servicePriority) { + if (nextFetcher == nil || delayedFetcher.servicePriority < nextFetcher.servicePriority) { nextFetcher = delayedFetcher; } } @@ -566,11 +593,10 @@ NSString *const kGTMSessionFetcherServiceSessionKey GTMSessionMonitorSynchronized(self); NSMutableArray *allFetchers = [NSMutableArray array]; - void (^accumulateFetchers)(id, id, BOOL *) = ^(NSString *host, - NSArray *fetchersForHost, - BOOL *stop) { - [allFetchers addObjectsFromArray:fetchersForHost]; - }; + void (^accumulateFetchers)(id, id, BOOL *) = + ^(NSString *host, NSArray *fetchersForHost, BOOL *stop) { + [allFetchers addObjectsFromArray:fetchersForHost]; + }; [_runningFetchersByHost enumerateKeysAndObjectsUsingBlock:accumulateFetchers]; [_delayedFetchersByHost enumerateKeysAndObjectsUsingBlock:accumulateFetchers]; @@ -589,12 +615,11 @@ NSString *const kGTMSessionFetcherServiceSessionKey NSURL *targetURL = [requestURL absoluteURL]; NSArray *allFetchers = [self issuedFetchers]; - NSIndexSet *indexes = [allFetchers indexesOfObjectsPassingTest:^BOOL(GTMSessionFetcher *fetcher, - NSUInteger idx, - BOOL *stop) { - NSURL *fetcherURL = [fetcher.request.URL absoluteURL]; - return [fetcherURL isEqual:targetURL]; - }]; + NSIndexSet *indexes = [allFetchers + indexesOfObjectsPassingTest:^BOOL(GTMSessionFetcher *fetcher, NSUInteger idx, BOOL *stop) { + NSURL *fetcherURL = [fetcher.request.URL absoluteURL]; + return [fetcherURL isEqual:targetURL]; + }]; NSArray *result = nil; if (indexes.count > 0) { @@ -665,9 +690,9 @@ NSString *const kGTMSessionFetcherServiceSessionKey if (shouldReuse != wasReusing) { [self abandonDispatcher]; if (shouldReuse) { - _delegateDispatcher = - [[GTMSessionFetcherSessionDelegateDispatcher alloc] initWithParentService:self - sessionDiscardInterval:_unusedSessionTimeout]; + _delegateDispatcher = [[GTMSessionFetcherSessionDelegateDispatcher alloc] + initWithParentService:self + sessionDiscardInterval:_unusedSessionTimeout]; } else { _delegateDispatcher = nil; } @@ -693,9 +718,9 @@ NSString *const kGTMSessionFetcherServiceSessionKey // The old dispatchers may be retained as delegates of any ongoing sessions by those sessions. if (_delegateDispatcher) { [self abandonDispatcher]; - _delegateDispatcher = - [[GTMSessionFetcherSessionDelegateDispatcher alloc] initWithParentService:self - sessionDiscardInterval:_unusedSessionTimeout]; + _delegateDispatcher = [[GTMSessionFetcherSessionDelegateDispatcher alloc] + initWithParentService:self + sessionDiscardInterval:_unusedSessionTimeout]; } } @@ -800,11 +825,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey // Use the fetcher service for the authorization fetches if the auth // object supports fetcher services if ([obj respondsToSelector:@selector(setFetcherService:)]) { -#if GTM_USE_SESSION_FETCHER [obj setFetcherService:self]; -#else - [obj setFetcherService:(id)self]; -#endif } } @@ -828,7 +849,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey } } -- (dispatch_queue_t GTM_NONNULL_TYPE)callbackQueue { +- (nonnull dispatch_queue_t)callbackQueue { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -836,7 +857,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey } // @synchronized(self) } -- (void)setCallbackQueue:(dispatch_queue_t GTM_NULLABLE_TYPE)queue { +- (void)setCallbackQueue:(dispatch_queue_t)queue { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -844,7 +865,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey } // @synchronized(self) } -- (NSOperationQueue * GTM_NONNULL_TYPE)sessionDelegateQueue { +- (NSOperationQueue *)sessionDelegateQueue { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -852,7 +873,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey } // @synchronized(self) } -- (void)setSessionDelegateQueue:(NSOperationQueue * GTM_NULLABLE_TYPE)queue { +- (void)setSessionDelegateQueue:(NSOperationQueue *)queue { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -886,8 +907,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey NSURL *url = [NSURL URLWithString:@"http://example.invalid"]; NSHTTPURLResponse *fakedResponse = [[NSHTTPURLResponse alloc] initWithURL:url - statusCode:(fakedErrorOrNil ? 500 : 200) - HTTPVersion:@"HTTP/1.1" + statusCode:(fakedErrorOrNil ? 500 : 200)HTTPVersion:@"HTTP/1.1" headerFields:nil]; return [self mockFetcherServiceWithFakedData:fakedDataOrNil fakedResponse:fakedResponse @@ -904,10 +924,10 @@ NSString *const kGTMSessionFetcherServiceSessionKey #if !GTM_DISABLE_FETCHER_TEST_BLOCK GTMSessionFetcherService *service = [[self alloc] init]; service.allowedInsecureSchemes = @[ @"http" ]; - service.testBlock = ^(GTMSessionFetcher *fetcherToTest, - GTMSessionFetcherTestResponse testResponse) { - testResponse(fakedResponse, fakedDataOrNil, fakedErrorOrNil); - }; + service.testBlock = + ^(GTMSessionFetcher *fetcherToTest, GTMSessionFetcherTestResponse testResponse) { + testResponse(fakedResponse, fakedDataOrNil, fakedErrorOrNil); + }; return service; #else GTMSESSION_ASSERT_DEBUG(0, @"Test blocks disabled"); @@ -979,8 +999,7 @@ NSString *const kGTMSessionFetcherServiceSessionKey NSTimeInterval _discardInterval; } -@synthesize discardInterval = _discardInterval, - session = _session; +@synthesize discardInterval = _discardInterval, session = _session; - (instancetype)init { [self doesNotRecognizeSelector:_cmd]; @@ -998,10 +1017,9 @@ NSString *const kGTMSessionFetcherServiceSessionKey } - (NSString *)description { - return [NSString stringWithFormat:@"%@ %p %@ %@", - [self class], self, - _session ?: @"", - _taskToFetcherMap.count > 0 ? _taskToFetcherMap : @""]; + return + [NSString stringWithFormat:@"%@ %p %@ %@", [self class], self, _session ?: @"", + _taskToFetcherMap.count > 0 ? _taskToFetcherMap : @""]; } - (NSTimer *)discardTimer { @@ -1177,10 +1195,9 @@ NSString *const kGTMSessionFetcherServiceSessionKey // // TODO(seh): How do we route this to an appropriate fetcher? - - (void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(NSError *)error { - GTM_LOG_SESSION_DELEGATE(@"%@ %p URLSession:%@ didBecomeInvalidWithError:%@", - [self class], self, session, error); + GTMSESSION_LOG_DEBUG_VERBOSE(@"%@ %p URLSession:%@ didBecomeInvalidWithError:%@", [self class], + self, session, error); NSDictionary *localTaskToFetcherMap; @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -1192,31 +1209,29 @@ NSString *const kGTMSessionFetcherServiceSessionKey // Any "suspended" tasks may not have received callbacks from NSURLSession when the session // completes; we'll call them now. - [localTaskToFetcherMap enumerateKeysAndObjectsUsingBlock:^(NSURLSessionTask *task, - GTMSessionFetcher *fetcher, - BOOL *stop) { + [localTaskToFetcherMap enumerateKeysAndObjectsUsingBlock:^( + NSURLSessionTask *task, GTMSessionFetcher *fetcher, BOOL *stop) { if (fetcher.session == session) { - // Our delegate method URLSession:task:didCompleteWithError: will rely on - // _taskToFetcherMap so that should still contain this fetcher. - NSError *canceledError = [NSError errorWithDomain:NSURLErrorDomain - code:NSURLErrorCancelled - userInfo:nil]; - [self URLSession:session task:task didCompleteWithError:canceledError]; - } else { - GTMSESSION_ASSERT_DEBUG(0, @"Unexpected session in fetcher: %@ has %@ (expected %@)", - fetcher, fetcher.session, session); - } + // Our delegate method URLSession:task:didCompleteWithError: will rely on + // _taskToFetcherMap so that should still contain this fetcher. + NSError *canceledError = [NSError errorWithDomain:NSURLErrorDomain + code:NSURLErrorCancelled + userInfo:nil]; + [self URLSession:session task:task didCompleteWithError:canceledError]; + } else { + GTMSESSION_ASSERT_DEBUG(0, @"Unexpected session in fetcher: %@ has %@ (expected %@)", fetcher, + fetcher.session, session); + } }]; // Our tests rely on this notification to know the session discard timer fired. - NSDictionary *userInfo = @{ kGTMSessionFetcherServiceSessionKey : session }; + NSDictionary *userInfo = @{kGTMSessionFetcherServiceSessionKey : session}; NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc postNotificationName:kGTMSessionFetcherServiceSessionBecameInvalidNotification object:_parentService userInfo:userInfo]; } - #pragma mark - NSURLSessionTaskDelegate // NSURLSessionTaskDelegate protocol methods. @@ -1227,68 +1242,61 @@ NSString *const kGTMSessionFetcherServiceSessionKey // delegate is the fetcher or this dispatcher.) - (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task -willPerformHTTPRedirection:(NSHTTPURLResponse *)response - newRequest:(NSURLRequest *)request - completionHandler:(void (^)(NSURLRequest *))completionHandler { + task:(NSURLSessionTask *)task + willPerformHTTPRedirection:(NSHTTPURLResponse *)response + newRequest:(NSURLRequest *)request + completionHandler:(void (^)(NSURLRequest *))completionHandler { id fetcher = [self fetcherForTask:task]; [fetcher URLSession:session - task:task -willPerformHTTPRedirection:response - newRequest:request - completionHandler:completionHandler]; + task:task + willPerformHTTPRedirection:response + newRequest:request + completionHandler:completionHandler]; } - (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task -didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge - completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))handler { + task:(NSURLSessionTask *)task + didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))handler { id fetcher = [self fetcherForTask:task]; - [fetcher URLSession:session - task:task - didReceiveChallenge:challenge - completionHandler:handler]; + [fetcher URLSession:session task:task didReceiveChallenge:challenge completionHandler:handler]; } - (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task - needNewBodyStream:(void (^)(NSInputStream *bodyStream))handler { + task:(NSURLSessionTask *)task + needNewBodyStream:(void (^)(NSInputStream *bodyStream))handler { id fetcher = [self fetcherForTask:task]; - [fetcher URLSession:session - task:task - needNewBodyStream:handler]; + [fetcher URLSession:session task:task needNewBodyStream:handler]; } - (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task - didSendBodyData:(int64_t)bytesSent - totalBytesSent:(int64_t)totalBytesSent -totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { + task:(NSURLSessionTask *)task + didSendBodyData:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent + totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { id fetcher = [self fetcherForTask:task]; [fetcher URLSession:session - task:task - didSendBodyData:bytesSent - totalBytesSent:totalBytesSent -totalBytesExpectedToSend:totalBytesExpectedToSend]; + task:task + didSendBodyData:bytesSent + totalBytesSent:totalBytesSent + totalBytesExpectedToSend:totalBytesExpectedToSend]; } - (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task -didCompleteWithError:(NSError *)error { + task:(NSURLSessionTask *)task + didCompleteWithError:(NSError *)error { id fetcher = [self fetcherForTask:task]; // This is the usual way tasks are removed from the task map. [self removeTaskFromMap:task]; - [fetcher URLSession:session - task:task - didCompleteWithError:error]; + [fetcher URLSession:session task:task didCompleteWithError:error]; } - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics - API_AVAILABLE(ios(10.0), macosx(10.12), tvos(10.0), watchos(3.0)) { + API_AVAILABLE(ios(10.0), macosx(10.12), tvos(10.0), watchos(6.0)) { id fetcher = [self fetcherForTask:task]; [fetcher URLSession:session task:task didFinishCollectingMetrics:metrics]; } @@ -1296,19 +1304,19 @@ didCompleteWithError:(NSError *)error { // NSURLSessionDataDelegate protocol methods. - (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)dataTask -didReceiveResponse:(NSURLResponse *)response - completionHandler:(void (^)(NSURLSessionResponseDisposition))handler { + dataTask:(NSURLSessionDataTask *)dataTask + didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition))handler { id fetcher = [self fetcherForTask:dataTask]; [fetcher URLSession:session - dataTask:dataTask - didReceiveResponse:response - completionHandler:handler]; + dataTask:dataTask + didReceiveResponse:response + completionHandler:handler]; } - (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)dataTask -didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask { + dataTask:(NSURLSessionDataTask *)dataTask + didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask { id fetcher = [self fetcherForTask:dataTask]; GTMSESSION_ASSERT_DEBUG(fetcher != nil, @"Missing fetcher for %@", dataTask); [self removeTaskFromMap:dataTask]; @@ -1318,64 +1326,58 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask { [self setFetcher:(GTMSessionFetcher *)fetcher forTask:downloadTask]; } - [fetcher URLSession:session - dataTask:dataTask -didBecomeDownloadTask:downloadTask]; + [fetcher URLSession:session dataTask:dataTask didBecomeDownloadTask:downloadTask]; } - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { id fetcher = [self fetcherForTask:dataTask]; - [fetcher URLSession:session - dataTask:dataTask - didReceiveData:data]; + [fetcher URLSession:session dataTask:dataTask didReceiveData:data]; } - (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)dataTask - willCacheResponse:(NSCachedURLResponse *)proposedResponse - completionHandler:(void (^)(NSCachedURLResponse *))handler { + dataTask:(NSURLSessionDataTask *)dataTask + willCacheResponse:(NSCachedURLResponse *)proposedResponse + completionHandler:(void (^)(NSCachedURLResponse *))handler { id fetcher = [self fetcherForTask:dataTask]; [fetcher URLSession:session - dataTask:dataTask - willCacheResponse:proposedResponse - completionHandler:handler]; + dataTask:dataTask + willCacheResponse:proposedResponse + completionHandler:handler]; } // NSURLSessionDownloadDelegate protocol methods. - (void)URLSession:(NSURLSession *)session - downloadTask:(NSURLSessionDownloadTask *)downloadTask -didFinishDownloadingToURL:(NSURL *)location { + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didFinishDownloadingToURL:(NSURL *)location { id fetcher = [self fetcherForTask:downloadTask]; - [fetcher URLSession:session - downloadTask:downloadTask -didFinishDownloadingToURL:location]; + [fetcher URLSession:session downloadTask:downloadTask didFinishDownloadingToURL:location]; } - (void)URLSession:(NSURLSession *)session - downloadTask:(NSURLSessionDownloadTask *)downloadTask - didWriteData:(int64_t)bytesWritten - totalBytesWritten:(int64_t)totalWritten -totalBytesExpectedToWrite:(int64_t)totalExpected { + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didWriteData:(int64_t)bytesWritten + totalBytesWritten:(int64_t)totalWritten + totalBytesExpectedToWrite:(int64_t)totalExpected { id fetcher = [self fetcherForTask:downloadTask]; [fetcher URLSession:session - downloadTask:downloadTask - didWriteData:bytesWritten - totalBytesWritten:totalWritten -totalBytesExpectedToWrite:totalExpected]; + downloadTask:downloadTask + didWriteData:bytesWritten + totalBytesWritten:totalWritten + totalBytesExpectedToWrite:totalExpected]; } - (void)URLSession:(NSURLSession *)session - downloadTask:(NSURLSessionDownloadTask *)downloadTask - didResumeAtOffset:(int64_t)fileOffset -expectedTotalBytes:(int64_t)expectedTotalBytes { + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didResumeAtOffset:(int64_t)fileOffset + expectedTotalBytes:(int64_t)expectedTotalBytes { id fetcher = [self fetcherForTask:downloadTask]; [fetcher URLSession:session - downloadTask:downloadTask - didResumeAtOffset:fileOffset - expectedTotalBytes:expectedTotalBytes]; + downloadTask:downloadTask + didResumeAtOffset:fileOffset + expectedTotalBytes:expectedTotalBytes]; } @end diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.h b/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.h index 2f9023a..ddfddf2 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.h +++ b/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.h @@ -40,7 +40,7 @@ #import "GTMSessionFetcher.h" #import "GTMSessionFetcherService.h" -GTM_ASSUME_NONNULL_BEGIN +NS_ASSUME_NONNULL_BEGIN // The value to use for file size parameters when the file size is not yet known. extern int64_t const kGTMSessionUploadFetcherUnknownFileSize; @@ -68,24 +68,23 @@ extern NSString *const kGTMSessionFetcherUploadLocationObtainedNotification; // to its proper value. // // Pass nil as the data (and optionally an NSError) for a failure. -typedef void (^GTMSessionUploadFetcherDataProviderResponse)(NSData * GTM_NULLABLE_TYPE data, +typedef void (^GTMSessionUploadFetcherDataProviderResponse)(NSData *_Nullable data, int64_t fullUploadLength, - NSError * GTM_NULLABLE_TYPE error); + NSError *_Nullable error); // Do not call the response with an NSData object with less data than the requested length unless // you are passing the fullUploadLength to the fetcher for the first time and it is the last chunk // of data in the file being uploaded. -typedef void (^GTMSessionUploadFetcherDataProvider)(int64_t offset, int64_t length, - GTMSessionUploadFetcherDataProviderResponse response); +typedef void (^GTMSessionUploadFetcherDataProvider)( + int64_t offset, int64_t length, GTMSessionUploadFetcherDataProviderResponse response); // Block to be notified about the final status of the cancellation request started in stopFetching. // // |fetcher| will be the cancel request that was sent to the server, or nil if stopFetching is not // going to send a cancel request. If |fetcher| is provided, the other parameters correspond to the // completion handler of the cancellation request fetcher. -typedef void (^GTMSessionUploadFetcherCancellationHandler)( - GTMSessionFetcher * GTM_NULLABLE_TYPE fetcher, - NSData * GTM_NULLABLE_TYPE data, - NSError * GTM_NULLABLE_TYPE error); +typedef void (^GTMSessionUploadFetcherCancellationHandler)(GTMSessionFetcher *_Nullable fetcher, + NSData *_Nullable data, + NSError *_Nullable error); @interface GTMSessionUploadFetcher : GTMSessionFetcher @@ -100,37 +99,37 @@ typedef void (^GTMSessionUploadFetcherCancellationHandler)( + (instancetype)uploadFetcherWithRequest:(NSURLRequest *)request uploadMIMEType:(NSString *)uploadMIMEType chunkSize:(int64_t)chunkSize - fetcherService:(GTM_NULLABLE GTMSessionFetcherService *)fetcherServiceOrNil; + fetcherService:(nullable GTMSessionFetcherService *)fetcherServiceOrNil; // Allows cellular access. -+ (instancetype)uploadFetcherWithLocation:(NSURL * GTM_NULLABLE_TYPE)uploadLocationURL ++ (instancetype)uploadFetcherWithLocation:(nullable NSURL *)uploadLocationURL uploadMIMEType:(NSString *)uploadMIMEType chunkSize:(int64_t)chunkSize - fetcherService:(GTM_NULLABLE GTMSessionFetcherService *)fetcherServiceOrNil; + fetcherService:(nullable GTMSessionFetcherService *)fetcherServiceOrNil; -+ (instancetype)uploadFetcherWithLocation:(NSURL *GTM_NULLABLE_TYPE)uploadLocationURL ++ (instancetype)uploadFetcherWithLocation:(nullable NSURL *)uploadLocationURL uploadMIMEType:(NSString *)uploadMIMEType chunkSize:(int64_t)chunkSize allowsCellularAccess:(BOOL)allowsCellularAccess - fetcherService:(GTM_NULLABLE GTMSessionFetcherService *)fetcherServiceOrNil; + fetcherService:(nullable GTMSessionFetcherService *)fetcherServiceOrNil; // Allows dataProviders for files of unknown length. Pass kGTMSessionUploadFetcherUnknownFileSize as // |fullLength| if the length is unknown. - (void)setUploadDataLength:(int64_t)fullLength - provider:(GTM_NULLABLE GTMSessionUploadFetcherDataProvider)block; + provider:(nullable GTMSessionUploadFetcherDataProvider)block; + (NSArray *)uploadFetchersForBackgroundSessions; -+ (GTM_NULLABLE instancetype)uploadFetcherForSessionIdentifier:(NSString *)sessionIdentifier; ++ (nullable instancetype)uploadFetcherForSessionIdentifier:(NSString *)sessionIdentifier; - (void)pauseFetching; - (void)resumeFetching; - (BOOL)isPaused; -@property(atomic, strong, GTM_NULLABLE) NSURL *uploadLocationURL; -@property(atomic, strong, GTM_NULLABLE) NSData *uploadData; -@property(atomic, strong, GTM_NULLABLE) NSURL *uploadFileURL; -@property(atomic, strong, GTM_NULLABLE) NSFileHandle *uploadFileHandle; -@property(atomic, copy, readonly, GTM_NULLABLE) GTMSessionUploadFetcherDataProvider uploadDataProvider; +@property(atomic, strong, nullable) NSURL *uploadLocationURL; +@property(atomic, strong, nullable) NSData *uploadData; +@property(atomic, strong, nullable) NSURL *uploadFileURL; +@property(atomic, strong, nullable) NSFileHandle *uploadFileHandle; +@property(atomic, copy, readonly, nullable) GTMSessionUploadFetcherDataProvider uploadDataProvider; @property(atomic, copy) NSString *uploadMIMEType; @property(atomic, readonly, assign) int64_t chunkSize; @property(atomic, readonly, assign) int64_t currentOffset; @@ -138,14 +137,14 @@ typedef void (^GTMSessionUploadFetcherCancellationHandler)( @property(atomic, readonly, assign) BOOL allowsCellularAccess; // The fetcher for the current data chunk, if any -@property(atomic, strong, GTM_NULLABLE) GTMSessionFetcher *chunkFetcher; +@property(atomic, strong, nullable) GTMSessionFetcher *chunkFetcher; // The active fetcher is the current chunk fetcher, or the upload fetcher itself // if no chunk fetcher has yet been created. @property(atomic, readonly) GTMSessionFetcher *activeFetcher; // The last request made by an active fetcher. Useful for testing. -@property(atomic, readonly, GTM_NULLABLE) NSURLRequest *lastChunkRequest; +@property(atomic, readonly, nullable) NSURLRequest *lastChunkRequest; // The status code from the most recently-completed fetch. @property(atomic, assign) NSInteger statusCode; @@ -157,19 +156,18 @@ typedef void (^GTMSessionUploadFetcherCancellationHandler)( // Unlike other callbacks, since this is related specifically to the stopFetching flow it is not // cleared by stopFetching. It will instead clear itself after it is invoked or if the completion // has occured before stopFetching is called. -@property(atomic, copy, GTM_NULLABLE) GTMSessionUploadFetcherCancellationHandler - cancellationHandler; +@property(atomic, copy, nullable) GTMSessionUploadFetcherCancellationHandler cancellationHandler; // Exposed for testing only. -@property(atomic, readonly, GTM_NULLABLE) dispatch_queue_t delegateCallbackQueue; -@property(atomic, readonly, GTM_NULLABLE) GTMSessionFetcherCompletionHandler delegateCompletionHandler; +@property(atomic, readonly, nullable) dispatch_queue_t delegateCallbackQueue; +@property(atomic, readonly, nullable) GTMSessionFetcherCompletionHandler delegateCompletionHandler; @end @interface GTMSessionFetcher (GTMSessionUploadFetcherMethods) -@property(readonly, GTM_NULLABLE) GTMSessionUploadFetcher *parentUploadFetcher; +@property(readonly, nullable) GTMSessionUploadFetcher *parentUploadFetcher; @end -GTM_ASSUME_NONNULL_END +NS_ASSUME_NONNULL_END diff --git a/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.m b/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.m index 7759bb1..01896e8 100644 --- a/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.m +++ b/Pods/GTMSessionFetcher/Source/GTMSessionUploadFetcher.m @@ -19,25 +19,32 @@ #import "GTMSessionUploadFetcher.h" -static NSString *const kGTMSessionIdentifierIsUploadChunkFetcherMetadataKey = @"_upChunk"; -static NSString *const kGTMSessionIdentifierUploadFileURLMetadataKey = @"_upFileURL"; -static NSString *const kGTMSessionIdentifierUploadFileLengthMetadataKey = @"_upFileLen"; -static NSString *const kGTMSessionIdentifierUploadLocationURLMetadataKey = @"_upLocURL"; -static NSString *const kGTMSessionIdentifierUploadMIMETypeMetadataKey = @"_uploadMIME"; -static NSString *const kGTMSessionIdentifierUploadChunkSizeMetadataKey = @"_upChSize"; -static NSString *const kGTMSessionIdentifierUploadCurrentOffsetMetadataKey = @"_upOffset"; -static NSString *const kGTMSessionIdentifierUploadAllowsCellularAccess = @"_upAllowsCellularAccess"; +#if TARGET_OS_OSX && GTMSESSION_RECONNECT_BACKGROUND_SESSIONS_ON_LAUNCH +// To reconnect background sessions on Mac outside +load requires importing and linking +// AppKit to access the NSApplicationDidFinishLaunching symbol. +#import +#endif -static NSString *const kGTMSessionHeaderXGoogUploadChunkGranularity = @"X-Goog-Upload-Chunk-Granularity"; -static NSString *const kGTMSessionHeaderXGoogUploadCommand = @"X-Goog-Upload-Command"; -static NSString *const kGTMSessionHeaderXGoogUploadContentLength = @"X-Goog-Upload-Content-Length"; -static NSString *const kGTMSessionHeaderXGoogUploadContentType = @"X-Goog-Upload-Content-Type"; -static NSString *const kGTMSessionHeaderXGoogUploadOffset = @"X-Goog-Upload-Offset"; -static NSString *const kGTMSessionHeaderXGoogUploadProtocol = @"X-Goog-Upload-Protocol"; -static NSString *const kGTMSessionXGoogUploadProtocolResumable = @"resumable"; -static NSString *const kGTMSessionHeaderXGoogUploadSizeReceived = @"X-Goog-Upload-Size-Received"; -static NSString *const kGTMSessionHeaderXGoogUploadStatus = @"X-Goog-Upload-Status"; -static NSString *const kGTMSessionHeaderXGoogUploadURL = @"X-Goog-Upload-URL"; +static NSString *const kGTMSessionIdentifierIsUploadChunkFetcherMetadataKey = @"_upChunk"; +static NSString *const kGTMSessionIdentifierUploadFileURLMetadataKey = @"_upFileURL"; +static NSString *const kGTMSessionIdentifierUploadFileLengthMetadataKey = @"_upFileLen"; +static NSString *const kGTMSessionIdentifierUploadLocationURLMetadataKey = @"_upLocURL"; +static NSString *const kGTMSessionIdentifierUploadMIMETypeMetadataKey = @"_uploadMIME"; +static NSString *const kGTMSessionIdentifierUploadChunkSizeMetadataKey = @"_upChSize"; +static NSString *const kGTMSessionIdentifierUploadCurrentOffsetMetadataKey = @"_upOffset"; +static NSString *const kGTMSessionIdentifierUploadAllowsCellularAccess = @"_upAllowsCellularAccess"; + +static NSString *const kGTMSessionHeaderXGoogUploadChunkGranularity = + @"X-Goog-Upload-Chunk-Granularity"; +static NSString *const kGTMSessionHeaderXGoogUploadCommand = @"X-Goog-Upload-Command"; +static NSString *const kGTMSessionHeaderXGoogUploadContentLength = @"X-Goog-Upload-Content-Length"; +static NSString *const kGTMSessionHeaderXGoogUploadContentType = @"X-Goog-Upload-Content-Type"; +static NSString *const kGTMSessionHeaderXGoogUploadOffset = @"X-Goog-Upload-Offset"; +static NSString *const kGTMSessionHeaderXGoogUploadProtocol = @"X-Goog-Upload-Protocol"; +static NSString *const kGTMSessionXGoogUploadProtocolResumable = @"resumable"; +static NSString *const kGTMSessionHeaderXGoogUploadSizeReceived = @"X-Goog-Upload-Size-Received"; +static NSString *const kGTMSessionHeaderXGoogUploadStatus = @"X-Goog-Upload-Status"; +static NSString *const kGTMSessionHeaderXGoogUploadURL = @"X-Goog-Upload-URL"; // Property of chunk fetchers identifying the parent upload fetcher. Non-retained NSValue. static NSString *const kGTMSessionUploadFetcherChunkParentKey = @"_uploadFetcherChunkParent"; @@ -47,9 +54,11 @@ int64_t const kGTMSessionUploadFetcherUnknownFileSize = -1; int64_t const kGTMSessionUploadFetcherStandardChunkSize = (int64_t)LLONG_MAX; #if TARGET_OS_IPHONE -int64_t const kGTMSessionUploadFetcherMaximumDemandBufferSize = 10 * 1024 * 1024; // 10 MB for iOS, watchOS, tvOS +int64_t const kGTMSessionUploadFetcherMaximumDemandBufferSize = + 10 * 1024 * 1024; // 10 MB for iOS, watchOS, tvOS #else -int64_t const kGTMSessionUploadFetcherMaximumDemandBufferSize = 100 * 1024 * 1024; // 100 MB for macOS +int64_t const kGTMSessionUploadFetcherMaximumDemandBufferSize = + 100 * 1024 * 1024; // 100 MB for macOS #endif typedef NS_ENUM(NSUInteger, GTMSessionUploadFetcherStatus) { @@ -93,7 +102,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = @property(atomic, readwrite, assign) int64_t currentOffset; // Internal properties. -@property(strong, atomic, GTM_NULLABLE) GTMSessionFetcher *fetcherInFlight; // Synchronized on self. +@property(strong, atomic, nullable) GTMSessionFetcher *fetcherInFlight; // Synchronized on self. @property(assign, atomic, getter=isSubdataGenerating) BOOL subdataGenerating; @property(assign, atomic) BOOL shouldInitiateOffsetQuery; @@ -149,7 +158,30 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } + (void)load { +#if GTMSESSION_RECONNECT_BACKGROUND_SESSIONS_ON_LAUNCH && TARGET_OS_IPHONE + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self + selector:@selector(reconnectFetchersForBackgroundSessionsOnAppLaunch:) + name:UIApplicationDidFinishLaunchingNotification + object:nil]; +#elif GTMSESSION_RECONNECT_BACKGROUND_SESSIONS_ON_LAUNCH && TARGET_OS_OSX + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self + selector:@selector(reconnectFetchersForBackgroundSessionsOnAppLaunch:) + name:NSApplicationDidFinishLaunchingNotification + object:nil]; +#else [self uploadFetchersForBackgroundSessions]; +#endif +} + ++ (void)reconnectFetchersForBackgroundSessionsOnAppLaunch:(NSNotification *)notification { + // Give all other app-did-launch handlers a chance to complete before + // reconnecting the fetchers. Not doing this may lead to reconnecting + // before the app delegate has a chance to run. + dispatch_async(dispatch_get_main_queue(), ^{ + [self uploadFetchersForBackgroundSessions]; + }); } + (instancetype)uploadFetcherWithRequest:(NSURLRequest *)request @@ -165,10 +197,10 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = return fetcher; } -+ (instancetype)uploadFetcherWithLocation:(NSURL *GTM_NULLABLE_TYPE)uploadLocationURL ++ (instancetype)uploadFetcherWithLocation:(nullable NSURL *)uploadLocationURL uploadMIMEType:(NSString *)uploadMIMEType chunkSize:(int64_t)chunkSize - fetcherService:(GTM_NULLABLE GTMSessionFetcherService *)fetcherServiceOrNil { + fetcherService:(nullable GTMSessionFetcherService *)fetcherServiceOrNil { return [self uploadFetcherWithLocation:uploadLocationURL uploadMIMEType:uploadMIMEType chunkSize:chunkSize @@ -176,7 +208,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = fetcherService:fetcherServiceOrNil]; } -+ (instancetype)uploadFetcherWithLocation:(NSURL *GTM_NULLABLE_TYPE)uploadLocationURL ++ (instancetype)uploadFetcherWithLocation:(nullable NSURL *)uploadLocationURL uploadMIMEType:(NSString *)uploadMIMEType chunkSize:(int64_t)chunkSize allowsCellularAccess:(BOOL)allowsCellularAccess @@ -218,8 +250,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = NSURL *uploadLocationURL = uploadLocationURLString ? [NSURL URLWithString:uploadLocationURLString] : nil; - NSString *uploadMIMEType = - metadata[kGTMSessionIdentifierUploadMIMETypeMetadataKey]; + NSString *uploadMIMEType = metadata[kGTMSessionIdentifierUploadMIMETypeMetadataKey]; int64_t uploadChunkSize = [metadata[kGTMSessionIdentifierUploadChunkSizeMetadataKey] longLongValue]; if (uploadChunkSize <= 0) { @@ -234,8 +265,8 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } GTMSESSION_ASSERT_DEBUG(currentOffset <= uploadFileLength, - @"CurrentOffset (%lld) exceeds UploadFileSize (%lld)", - currentOffset, uploadFileLength); + @"CurrentOffset (%lld) exceeds UploadFileSize (%lld)", currentOffset, + uploadFileLength); if (currentOffset > uploadFileLength) return nil; GTMSessionUploadFetcher *uploadFetcher = [self uploadFetcherWithLocation:uploadLocationURL @@ -260,8 +291,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = // Internal utility method for instantiating fetchers GTMSessionUploadFetcher *fetcher; if ([fetcherService isKindOfClass:[GTMSessionFetcherService class]]) { - fetcher = [fetcherService fetcherWithRequest:request - fetcherClass:self]; + fetcher = [fetcherService fetcherWithRequest:request fetcherClass:self]; } else { fetcher = [self fetcherWithRequest:request]; } @@ -319,7 +349,8 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = if (sessionIdentifierMetadata == nil) { continue; } - if (![sessionIdentifierMetadata[kGTMSessionIdentifierIsUploadChunkFetcherMetadataKey] boolValue]) { + if (![sessionIdentifierMetadata[kGTMSessionIdentifierIsUploadChunkFetcherMetadataKey] + boolValue]) { continue; } GTMSessionUploadFetcher *uploadFetcher = @@ -337,8 +368,8 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = [fetcher completionHandlerWithTarget:uploadFetcher didFinishSelector:@selector(chunkFetcher:finishedWithData:error:)]; - GTMSESSION_LOG_DEBUG(@"%@ restoring upload fetcher %@ for chunk fetcher %@", - [self class], uploadFetcher, fetcher); + GTMSESSION_LOG_DEBUG(@"%@ restoring upload fetcher %@ for chunk fetcher %@", [self class], + uploadFetcher, fetcher); } return uploadFetchers; } @@ -445,7 +476,6 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } } - - (void)setUploadMIMEType:(NSString *)uploadMIMEType { GTMSESSION_ASSERT_DEBUG(0, @"TODO: disallow setUploadMIMEType by making declaration readonly"); // (and uploadMIMEType, chunksize, currentOffset) @@ -484,9 +514,9 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = int hasFileURL = (_uploadFileURL != nil) ? 1 : 0; int hasUploadDataProvider = (_uploadDataProvider != nil) ? 1 : 0; int numberOfSources = hasData + hasFileHandle + hasFileURL + hasUploadDataProvider; - #pragma unused(numberOfSources) - GTMSESSION_ASSERT_DEBUG(numberOfSources == 1, - @"Need just one upload source (%d)", numberOfSources); +#pragma unused(numberOfSources) + GTMSESSION_ASSERT_DEBUG(numberOfSources == 1, @"Need just one upload source (%d)", + numberOfSources); } // @synchronized(self) #endif @@ -500,8 +530,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = [mutableRequest setValue:kGTMSessionXGoogUploadProtocolResumable forHTTPHeaderField:kGTMSessionHeaderXGoogUploadProtocol]; - [mutableRequest setValue:@"start" - forHTTPHeaderField:kGTMSessionHeaderXGoogUploadCommand]; + [mutableRequest setValue:@"start" forHTTPHeaderField:kGTMSessionHeaderXGoogUploadCommand]; [mutableRequest setValue:_uploadMIMEType forHTTPHeaderField:kGTMSessionHeaderXGoogUploadContentType]; [mutableRequest setValue:@([self fullUploadLength]).stringValue @@ -517,8 +546,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = // we need to make a bug fix in the client that the server can recognize. NSString *const kUserAgentStub = @"(GTMSUF/1)"; NSString *userAgent = [mutableRequest valueForHTTPHeaderField:@"User-Agent"]; - if (userAgent == nil - || [userAgent rangeOfString:kUserAgentStub].location == NSNotFound) { + if (userAgent == nil || [userAgent rangeOfString:kUserAgentStub].location == NSNotFound) { if (userAgent.length == 0) { userAgent = GTMFetcherStandardUserAgentString(nil); } @@ -528,7 +556,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = [self setRequest:mutableRequest]; } -- (void)setLocationURL:(NSURL *GTM_NULLABLE_TYPE)location +- (void)setLocationURL:(nullable NSURL *)location uploadMIMEType:(NSString *)uploadMIMEType chunkSize:(int64_t)chunkSize allowsCellularAccess:(BOOL)allowsCellularAccess { @@ -580,8 +608,8 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = error:&valueError]) { _uploadFileLength = filesizeNum.longLongValue; } else { - GTMSESSION_ASSERT_DEBUG(NO, @"Cannot get file size: %@\n %@", - valueError, _uploadFileURL.path); + GTMSESSION_ASSERT_DEBUG(NO, @"Cannot get file size: %@\n %@", valueError, + _uploadFileURL.path); _uploadFileLength = 0; } } @@ -612,12 +640,12 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = int64_t dataLength = (int64_t)uploadData.length; // Ensure our range is valid. b/18007814 if (offset + length > dataLength) { - NSString *errorMessage = [NSString stringWithFormat: - @"Range invalid for upload data. offset: %lld\tlength: %lld\tdataLength: %lld", - offset, length, dataLength]; + NSString *errorMessage = [NSString + stringWithFormat: + @"Range invalid for upload data. offset: %lld\tlength: %lld\tdataLength: %lld", + offset, length, dataLength]; GTMSESSION_ASSERT_DEBUG(NO, @"%@", errorMessage); - response(nil, - kGTMSessionUploadFetcherUnknownFileSize, + response(nil, kGTMSessionUploadFetcherUnknownFileSize, [self uploadChunkUnavailableErrorWithDescription:errorMessage]); return; } @@ -625,12 +653,10 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = @try { resultData = [uploadData subdataWithRange:range]; - } - @catch (NSException *exception) { + } @catch (NSException *exception) { NSString *errorMessage = exception.description; GTMSESSION_ASSERT_DEBUG(NO, @"%@", errorMessage); - response(nil, - kGTMSessionUploadFetcherUnknownFileSize, + response(nil, kGTMSessionUploadFetcherUnknownFileSize, [self uploadChunkUnavailableErrorWithDescription:errorMessage]); return; } @@ -667,8 +693,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = @try { [fileHandle seekToFileOffset:(unsigned long long)offset]; resultData = [fileHandle readDataOfLength:(NSUInteger)length]; - } - @catch (NSException *exception) { + } @catch (NSException *exception) { GTMSESSION_ASSERT_DEBUG(NO, @"uploadFileHandle failed to read, %@", exception); error = [self uploadChunkUnavailableErrorWithDescription:exception.description]; } @@ -719,8 +744,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = hasFileSize ? fileSizeNum : @"unknown", error); #endif - NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingFromURL:fileURL - error:&error]; + NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingFromURL:fileURL error:&error]; if (fileHandle != nil) { [self generateChunkSubdataFromFileHandle:fileHandle offset:offset @@ -733,12 +757,12 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } else { // Successfully created an NSData by memory-mapping the file. if ((NSUInteger)(offset + length) > mappedData.length) { - NSString *errorMessage = [NSString stringWithFormat: - @"Range invalid for upload data. offset: %lld\tlength: %lld\tdataLength: %lld\texpected UploadLength: %lld", - offset, length, (long long)mappedData.length, fullUploadLength]; + NSString *errorMessage = [NSString + stringWithFormat:@"Range invalid for upload data. offset: %lld\tlength: " + @"%lld\tdataLength: %lld\texpected UploadLength: %lld", + offset, length, (long long)mappedData.length, fullUploadLength]; GTMSESSION_ASSERT_DEBUG(NO, @"%@", errorMessage); - response(nil, - kGTMSessionUploadFetcherUnknownFileSize, + response(nil, kGTMSessionUploadFetcherUnknownFileSize, [self uploadChunkUnavailableErrorWithDescription:errorMessage]); return; } @@ -756,7 +780,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = - (NSError *)uploadChunkUnavailableErrorWithDescription:(NSString *)description { // The description in the userInfo is intended as a clue to programmers, not // for client code to examine or rely on. - NSDictionary *userInfo = @{ @"description" : description }; + NSDictionary *userInfo = @{@"description" : description}; return [NSError errorWithDomain:kGTMSessionFetcherErrorDomain code:GTMSessionFetcherErrorUploadChunkUnavailable userInfo:userInfo]; @@ -796,7 +820,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } } -- (void)setDelegateCallbackQueue:(dispatch_queue_t GTM_NULLABLE_TYPE)queue { +- (void)setDelegateCallbackQueue:(nullable dispatch_queue_t)queue { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -804,7 +828,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } } -- (dispatch_queue_t GTM_NULLABLE_TYPE)delegateCallbackQueue { +- (nullable dispatch_queue_t)delegateCallbackQueue { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -820,7 +844,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } } -- (GTMSessionFetcher * GTM_NULLABLE_TYPE)chunkFetcher { +- (nullable GTMSessionFetcher *)chunkFetcher { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -828,7 +852,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } } -- (void)setChunkFetcher:(GTMSessionFetcher * GTM_NULLABLE_TYPE)fetcher { +- (void)setChunkFetcher:(nullable GTMSessionFetcher *)fetcher { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -836,7 +860,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } } -- (void)setFetcherInFlight:(GTMSessionFetcher * GTM_NULLABLE_TYPE)fetcher { +- (void)setFetcherInFlight:(nullable GTMSessionFetcher *)fetcher { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -844,7 +868,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } } -- (GTMSessionFetcher * GTM_NULLABLE_TYPE)fetcherInFlight { +- (nullable GTMSessionFetcher *)fetcherInFlight { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -852,8 +876,8 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } } -- (void)setCancellationHandler:(GTMSessionUploadFetcherCancellationHandler GTM_NULLABLE_TYPE) - cancellationHandler { +- (void)setCancellationHandler: + (nullable GTMSessionUploadFetcherCancellationHandler)cancellationHandler { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -861,7 +885,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } } -- (GTMSessionUploadFetcherCancellationHandler GTM_NULLABLE_TYPE)cancellationHandler { +- (nullable GTMSessionUploadFetcherCancellationHandler)cancellationHandler { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -919,9 +943,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = [self beginChunkFetches]; } else { if ([self retryTimer] == nil) { - [self invokeFinalCallbackWithData:nil - error:error - shouldInvalidateLocation:YES]; + [self invokeFinalCallbackWithData:nil error:error shouldInvalidateLocation:YES]; } } } else { @@ -930,20 +952,19 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = // is never used, so at this point we call the user's actual completion // block. if (!hasTestBlock) { - [self invokeFinalCallbackWithData:data - error:error - shouldInvalidateLocation:YES]; + [self invokeFinalCallbackWithData:data error:error shouldInvalidateLocation:YES]; } else { // There was a test block, so we won't do chunk fetches, but we simulate obtaining // the data to be uploaded from the upload data provider block or the file handle, // and then call back. [self generateChunkSubdataWithOffset:0 length:[self fullUploadLength] - response:^(NSData *generateData, int64_t fullUploadLength, NSError *generateError) { - [self invokeFinalCallbackWithData:data - error:error - shouldInvalidateLocation:YES]; - }]; + response:^(NSData *generateData, int64_t fullUploadLength, + NSError *generateError) { + [self invokeFinalCallbackWithData:data + error:error + shouldInvalidateLocation:YES]; + }]; } } }]; @@ -961,9 +982,8 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = // resumable request/response. if (self.downloadedData.length > 0) { NSData *downloadedData = self.downloadedData; - NSString *str = [[NSString alloc] initWithData:downloadedData - encoding:NSUTF8StringEncoding]; - #pragma unused(str) + NSString *str = [[NSString alloc] initWithData:downloadedData encoding:NSUTF8StringEncoding]; +#pragma unused(str) GTMSESSION_ASSERT_DEBUG(NO, @"unexpected response data (uploading to the wrong URL?)\n%@", str); } #endif @@ -976,7 +996,8 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = GTMSessionUploadFetcherStatus uploadStatus = [[self class] uploadStatusFromResponseHeaders:responseHeaders]; GTMSESSION_ASSERT_DEBUG(uploadStatus != kStatusUnknown, - @"beginChunkFetches has unexpected upload status for headers %@", responseHeaders); + @"beginChunkFetches has unexpected upload status for headers %@", + responseHeaders); BOOL isPrematureStop = (uploadStatus == kStatusFinal) || (uploadStatus == kStatusCancelled); @@ -985,26 +1006,24 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = if (isPrematureStop || !hasUploadLocation) { GTMSESSION_ASSERT_DEBUG(NO, @"Premature failure: upload-status:\"%@\" location:%@", - [responseHeaders objectForKey:kGTMSessionHeaderXGoogUploadStatus], uploadLocationURLStr); + [responseHeaders objectForKey:kGTMSessionHeaderXGoogUploadStatus], + uploadLocationURLStr); // We cannot continue since we do not know the location to use // as our upload destination. NSDictionary *userInfo = nil; NSData *downloadedData = self.downloadedData; if (downloadedData.length > 0) { - userInfo = @{ kGTMSessionFetcherStatusDataKey : downloadedData }; + userInfo = @{kGTMSessionFetcherStatusDataKey : downloadedData}; } NSError *failureError = [self prematureFailureErrorWithUserInfo:userInfo]; - [self invokeFinalCallbackWithData:nil - error:failureError - shouldInvalidateLocation:YES]; + [self invokeFinalCallbackWithData:nil error:failureError shouldInvalidateLocation:YES]; return; } self.uploadLocationURL = [NSURL URLWithString:uploadLocationURLStr]; NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc postNotificationName:kGTMSessionFetcherUploadLocationObtainedNotification - object:self]; + [nc postNotificationName:kGTMSessionFetcherUploadLocationObtainedNotification object:self]; // we've now sent all of the initial post body data, so we need to include // its size in future progress indicator callbacks @@ -1017,9 +1036,9 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } - (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task - didSendBodyData:(int64_t)bytesSent - totalBytesSent:(int64_t)totalBytesSent + task:(NSURLSessionTask *)task + didSendBodyData:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { // Overrides the superclass. [self invokeDelegateWithDidSendBytes:bytesSent @@ -1054,8 +1073,8 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = [self invokeOnCallbackQueue:queue afterUserStopped:NO block:^{ - handler(data, error); - }]; + handler(data, error); + }]; } } // @synchronized(self) @@ -1101,18 +1120,16 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = // use the properties in each chunk fetcher NSDictionary *props = [self properties]; - [self uploadNextChunkWithOffset:offset - fetcherProperties:props]; + [self uploadNextChunkWithOffset:offset fetcherProperties:props]; } - (void)sendQueryForUploadOffsetWithFetcherProperties:(NSDictionary *)props { - GTMSessionFetcher *queryFetcher = [self uploadFetcherWithProperties:props - isQueryFetch:YES]; + GTMSessionFetcher *queryFetcher = [self uploadFetcherWithProperties:props isQueryFetch:YES]; queryFetcher.bodyData = [NSData data]; NSString *originalComment = self.comment; - [queryFetcher setCommentWithFormat:@"%@ (query offset)", - originalComment ? originalComment : @"upload"]; + [queryFetcher + setCommentWithFormat:@"%@ (query offset)", originalComment ? originalComment : @"upload"]; [queryFetcher setRequestValue:@"query" forHTTPHeaderField:kGTMSessionHeaderXGoogUploadCommand]; @@ -1132,7 +1149,8 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = GTMSessionUploadFetcherStatus uploadStatus = [[self class] uploadStatusFromResponseHeaders:responseHeaders]; GTMSESSION_ASSERT_DEBUG(uploadStatus != kStatusUnknown || error != nil, - @"query fetcher completion has unexpected upload status for headers %@", responseHeaders); + @"query fetcher completion has unexpected upload status for headers %@", + responseHeaders); if (error == nil) { sizeReceivedHeader = [responseHeaders objectForKey:kGTMSessionHeaderXGoogUploadSizeReceived]; @@ -1141,7 +1159,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = (uploadStatus == kStatusActive && sizeReceivedHeader == nil)) { NSDictionary *userInfo = nil; if (data.length > 0) { - userInfo = @{ kGTMSessionFetcherStatusDataKey : data }; + userInfo = @{kGTMSessionFetcherStatusDataKey : data}; } error = [self prematureFailureErrorWithUserInfo:userInfo]; } @@ -1169,32 +1187,30 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = @synchronized(self) { _isCancelInFlight = YES; } - GTMSessionFetcher *cancelFetcher = [self uploadFetcherWithProperties:props - isQueryFetch:YES]; + GTMSessionFetcher *cancelFetcher = [self uploadFetcherWithProperties:props isQueryFetch:YES]; cancelFetcher.bodyData = [NSData data]; NSString *originalComment = self.comment; - [cancelFetcher setCommentWithFormat:@"%@ (cancel)", - originalComment ? originalComment : @"upload"]; + [cancelFetcher + setCommentWithFormat:@"%@ (cancel)", originalComment ? originalComment : @"upload"]; [cancelFetcher setRequestValue:@"cancel" forHTTPHeaderField:kGTMSessionHeaderXGoogUploadCommand]; self.fetcherInFlight = cancelFetcher; [cancelFetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { - self.fetcherInFlight = nil; - if (![self triggerCancellationHandlerForFetch:cancelFetcher data:data error:error]) { - if (error) { - GTMSESSION_LOG_DEBUG(@"cancelFetcher %@", error); - } - } - @synchronized(self) { - self->_isCancelInFlight = NO; + self.fetcherInFlight = nil; + if (![self triggerCancellationHandlerForFetch:cancelFetcher data:data error:error]) { + if (error) { + GTMSESSION_LOG_DEBUG(@"cancelFetcher %@", error); } + } + @synchronized(self) { + self->_isCancelInFlight = NO; + } }]; } -- (void)uploadNextChunkWithOffset:(int64_t)offset - fetcherProperties:(NSDictionary *)props { +- (void)uploadNextChunkWithOffset:(int64_t)offset fetcherProperties:(NSDictionary *)props { GTMSessionCheckNotSynchronized(self); // Example chunk headers: @@ -1206,93 +1222,96 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = // {bytes 0-1999999} // The chunk upload URL requires no authentication header. - GTMSessionFetcher *chunkFetcher = [self uploadFetcherWithProperties:props - isQueryFetch:NO]; + GTMSessionFetcher *chunkFetcher = [self uploadFetcherWithProperties:props isQueryFetch:NO]; [self attachSendProgressBlockToChunkFetcher:chunkFetcher]; - int64_t chunkSize = [self updateChunkFetcher:chunkFetcher - forChunkAtOffset:offset]; + int64_t chunkSize = [self updateChunkFetcher:chunkFetcher forChunkAtOffset:offset]; BOOL isUploadingFileURL = (self.uploadFileURL != nil); int64_t fullUploadLength = [self fullUploadLength]; // The chunk size may have changed, so determine again if we're uploading the full file. - BOOL isUploadingFullFile = (offset == 0 && - fullUploadLength != kGTMSessionUploadFetcherUnknownFileSize && - chunkSize >= fullUploadLength); + BOOL isUploadingFullFile = + (offset == 0 && fullUploadLength != kGTMSessionUploadFetcherUnknownFileSize && + chunkSize >= fullUploadLength); if (isUploadingFullFile && isUploadingFileURL) { // The data is the full upload file URL. chunkFetcher.bodyFileURL = self.uploadFileURL; - [self beginChunkFetcher:chunkFetcher - offset:offset]; + [self beginChunkFetcher:chunkFetcher offset:offset]; } else { // Make an NSData for the subset for this upload chunk. self.subdataGenerating = YES; [self generateChunkSubdataWithOffset:offset length:chunkSize - response:^(NSData *chunkData, int64_t uploadFileLength, NSError *chunkError) { - // The subdata methods may leave us on a background thread. - dispatch_async(dispatch_get_main_queue(), ^{ - self.subdataGenerating = NO; + response:^(NSData *chunkData, int64_t uploadFileLength, + NSError *chunkError) { + // The subdata methods may leave us on a background thread. + dispatch_async(dispatch_get_main_queue(), ^{ + self.subdataGenerating = NO; - // dont allow the updating of fileLength for uploads not using a data provider as they - // should know the file length before the upload starts. - if (self->_uploadDataProvider != nil && uploadFileLength > 0) { - [self setUploadFileLength:uploadFileLength]; - // Update the command and content-length headers if this is the last chunk to be sent. - if (offset + chunkSize >= uploadFileLength) { - int64_t updatedChunkSize = [self updateChunkFetcher:chunkFetcher - forChunkAtOffset:offset]; - if (updatedChunkSize == 0) { - // Calling beginChunkFetcher early when there is no more data to send allows us to - // properly handle nil chunkData below without having to account for the case where - // we are just finalizing the file. - chunkFetcher.bodyData = [[NSData alloc] init]; - [self beginChunkFetcher:chunkFetcher - offset:offset]; - return; - } - } - } + // dont allow the updating of fileLength for uploads not using a + // data provider as they should know the file length before the + // upload starts. + if (self->_uploadDataProvider != nil && uploadFileLength > 0) { + [self setUploadFileLength:uploadFileLength]; + // Update the command and content-length headers if this is + // the last chunk to be sent. + if (offset + chunkSize >= uploadFileLength) { + int64_t updatedChunkSize = + [self updateChunkFetcher:chunkFetcher + forChunkAtOffset:offset]; + if (updatedChunkSize == 0) { + // Calling beginChunkFetcher early when there is no more + // data to send allows us to properly handle nil chunkData + // below without having to account for the case where we + // are just finalizing the file. + chunkFetcher.bodyData = [[NSData alloc] init]; + [self beginChunkFetcher:chunkFetcher offset:offset]; + return; + } + } + } - if (chunkData == nil) { - NSError *responseError = chunkError; - if (!responseError) { - responseError = [self uploadChunkUnavailableErrorWithDescription:@"chunkData is nil"]; - } - [self invokeFinalCallbackWithData:nil - error:responseError - shouldInvalidateLocation:YES]; - return; - } + if (chunkData == nil) { + NSError *responseError = chunkError; + if (!responseError) { + responseError = + [self uploadChunkUnavailableErrorWithDescription: + @"chunkData is nil"]; + } + [self invokeFinalCallbackWithData:nil + error:responseError + shouldInvalidateLocation:YES]; + return; + } - BOOL didWriteFile = NO; - if (isUploadingFileURL) { - // Make a temporary file with the data subset. - NSString *tempName = - [NSString stringWithFormat:@"GTMUpload_temp_%@", [[NSUUID UUID] UUIDString]]; - NSString *tempPath = [NSTemporaryDirectory() stringByAppendingPathComponent:tempName]; - NSError *writeError; - didWriteFile = [chunkData writeToFile:tempPath - options:NSDataWritingAtomic - error:&writeError]; - if (didWriteFile) { - chunkFetcher.bodyFileURL = [NSURL fileURLWithPath:tempPath]; - } else { - GTMSESSION_LOG_DEBUG(@"writeToFile failed: %@\n%@", writeError, tempPath); - } - } - if (!didWriteFile) { - chunkFetcher.bodyData = [chunkData copy]; - } - [self beginChunkFetcher:chunkFetcher - offset:offset]; - }); - }]; + BOOL didWriteFile = NO; + if (isUploadingFileURL) { + // Make a temporary file with the data subset. + NSString *tempName = + [NSString stringWithFormat:@"GTMUpload_temp_%@", + [[NSUUID UUID] UUIDString]]; + NSString *tempPath = [NSTemporaryDirectory() + stringByAppendingPathComponent:tempName]; + NSError *writeError; + didWriteFile = [chunkData writeToFile:tempPath + options:NSDataWritingAtomic + error:&writeError]; + if (didWriteFile) { + chunkFetcher.bodyFileURL = [NSURL fileURLWithPath:tempPath]; + } else { + GTMSESSION_LOG_DEBUG(@"writeToFile failed: %@\n%@", + writeError, tempPath); + } + } + if (!didWriteFile) { + chunkFetcher.bodyData = [chunkData copy]; + } + [self beginChunkFetcher:chunkFetcher offset:offset]; + }); + }]; } } -- (void)beginChunkFetcher:(GTMSessionFetcher *)chunkFetcher - offset:(int64_t)offset { - +- (void)beginChunkFetcher:(GTMSessionFetcher *)chunkFetcher offset:(int64_t)offset { // Track the current offset for progress reporting self.currentOffset = offset; @@ -1310,18 +1329,18 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } - (void)attachSendProgressBlockToChunkFetcher:(GTMSessionFetcher *)chunkFetcher { - chunkFetcher.sendProgressBlock = ^(int64_t bytesSent, int64_t totalBytesSent, - int64_t totalBytesExpectedToSend) { - // The total bytes expected include the initial body and the full chunked - // data, independent of how big this fetcher's chunk is. - int64_t initialBodySent = [self bodyLength]; // TODO(grobbins) use [self initialBodySent] - int64_t totalSent = initialBodySent + self.currentOffset + totalBytesSent; - int64_t totalExpected = initialBodySent + [self fullUploadLength]; + chunkFetcher.sendProgressBlock = + ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { + // The total bytes expected include the initial body and the full chunked + // data, independent of how big this fetcher's chunk is. + int64_t initialBodySent = [self bodyLength]; // TODO(grobbins) use [self initialBodySent] + int64_t totalSent = initialBodySent + self.currentOffset + totalBytesSent; + int64_t totalExpected = initialBodySent + [self fullUploadLength]; - [self invokeDelegateWithDidSendBytes:bytesSent - totalBytesSent:totalSent - totalBytesExpectedToSend:totalExpected]; - }; + [self invokeDelegateWithDidSendBytes:bytesSent + totalBytesSent:totalSent + totalBytesExpectedToSend:totalExpected]; + }; } - (NSDictionary *)uploadSessionIdentifierMetadata { @@ -1404,28 +1423,28 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = if ([self isRetryEnabled]) { // We interpose our own retry method both so we can change the request to ask the server to // tell us where to resume the chunk. - chunkFetcher.retryBlock = ^(BOOL suggestedWillRetry, NSError *chunkError, - GTMSessionFetcherRetryResponse response) { - void (^finish)(BOOL) = ^(BOOL shouldRetry){ - // We'll retry by sending an offset query. - if (shouldRetry) { - self.shouldInitiateOffsetQuery = !isQueryFetch; + chunkFetcher.retryBlock = + ^(BOOL suggestedWillRetry, NSError *chunkError, GTMSessionFetcherRetryResponse response) { + void (^finish)(BOOL) = ^(BOOL shouldRetry) { + // We'll retry by sending an offset query. + if (shouldRetry) { + self.shouldInitiateOffsetQuery = !isQueryFetch; - // We don't know what our actual offset is anymore, but the server will tell us. - self.currentOffset = 0; - } - // We don't actually want to retry this specific fetcher. - response(NO); - }; + // We don't know what our actual offset is anymore, but the server will tell us. + self.currentOffset = 0; + } + // We don't actually want to retry this specific fetcher. + response(NO); + }; - GTMSessionFetcherRetryBlock retryBlock = self.retryBlock; - if (retryBlock) { - // Ask the client, then call the finish block above. - retryBlock(suggestedWillRetry, chunkError, finish); - } else { - finish(suggestedWillRetry); - } - }; + GTMSessionFetcherRetryBlock retryBlock = self.retryBlock; + if (retryBlock) { + // Ask the client, then call the finish block above. + retryBlock(suggestedWillRetry, chunkError, finish); + } else { + finish(suggestedWillRetry); + } + }; } return chunkFetcher; @@ -1440,9 +1459,8 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = NSDictionary *responseHeaders = [chunkFetcher responseHeaders]; GTMSessionUploadFetcherStatus uploadStatus = [[self class] uploadStatusFromResponseHeaders:responseHeaders]; - GTMSESSION_ASSERT_DEBUG(uploadStatus != kStatusUnknown - || error != nil - || self.wasCreatedFromBackgroundSession, + GTMSESSION_ASSERT_DEBUG( + uploadStatus != kStatusUnknown || error != nil || self.wasCreatedFromBackgroundSession, @"chunk fetcher completion has kStatusUnknown upload status for headers %@ fetcher %@", responseHeaders, self); BOOL isUploadStatusStopped = (uploadStatus == kStatusFinal || uploadStatus == kStatusCancelled); @@ -1454,7 +1472,8 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = BOOL isQueryFetch = [uploadCommand isEqual:@"query"]; // TODO - // Maybe here we can check to see if the request had x goog content length set. (the file length one). + // Maybe here we can check to see if the request had x goog content length set. (the file length + // one). NSString *previousContentLengthValue = [chunkFetcher.request valueForHTTPHeaderField:@"Content-Length"]; // The Content-Length header may not be present if the chunk fetcher was recreated from @@ -1470,13 +1489,9 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = // Status 4xx indicates a bad offset in the Google upload protocol. However, do not retry status // 404 per spec, nor if the upload size appears to have been zero (since the server will just // keep asking us to retry.) - if (self.shouldInitiateOffsetQuery || - (needsQuery && !isQueryFetch) || - ([error.domain isEqual:kGTMSessionFetcherStatusDomain] && - status >= 400 && status <= 499 && - status != 404 && - uploadStatus == kStatusActive && - previousContentLength > 0)) { + if (self.shouldInitiateOffsetQuery || (needsQuery && !isQueryFetch) || + ([error.domain isEqual:kGTMSessionFetcherStatusDomain] && status >= 400 && status <= 499 && + status != 404 && uploadStatus == kStatusActive && previousContentLength > 0)) { self.shouldInitiateOffsetQuery = NO; [self destroyChunkFetcher]; hasDestroyedOldChunkFetcher = YES; @@ -1484,9 +1499,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } else { // Some unexpected status has occurred; handle it as we would a regular // object fetcher failure. - [self invokeFinalCallbackWithData:data - error:error - shouldInvalidateLocation:NO]; + [self invokeFinalCallbackWithData:data error:error shouldInvalidateLocation:NO]; } } else { // The chunk has uploaded successfully. @@ -1496,25 +1509,23 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = // the "final" upload status. BOOL hasUploadAllData = (newOffset == [self fullUploadLength]); BOOL isFinalStatus = (uploadStatus == kStatusFinal); - #pragma unused(hasUploadAllData,isFinalStatus) +#pragma unused(hasUploadAllData, isFinalStatus) GTMSESSION_ASSERT_DEBUG(hasUploadAllData == isFinalStatus || !hasKnownChunkSize, @"uploadStatus:%@ newOffset:%lld (%lld + %lld) fullUploadLength:%lld" @" chunkFetcher:%@ requestHeaders:%@ responseHeaders:%@", [responseHeaders objectForKey:kGTMSessionHeaderXGoogUploadStatus], newOffset, self.currentOffset, previousContentLength, - [self fullUploadLength], - chunkFetcher, chunkFetcher.request.allHTTPHeaderFields, - responseHeaders); + [self fullUploadLength], chunkFetcher, + chunkFetcher.request.allHTTPHeaderFields, responseHeaders); #endif - if (isUploadStatusStopped || - (!_uploadData && _uploadFileLength == 0) || + if (isUploadStatusStopped || (!_uploadData && _uploadFileLength == 0) || (_currentOffset > _uploadFileLength && _uploadFileLength > 0)) { // This was the last chunk. if (error == nil && uploadStatus == kStatusCancelled) { // Report cancelled status as an error. NSDictionary *userInfo = nil; if (data.length > 0) { - userInfo = @{ kGTMSessionFetcherStatusDataKey : data }; + userInfo = @{kGTMSessionFetcherStatusDataKey : data}; } data = nil; error = [self prematureFailureErrorWithUserInfo:userInfo]; @@ -1527,9 +1538,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } // we're done - [self invokeFinalCallbackWithData:data - error:error - shouldInvalidateLocation:YES]; + [self invokeFinalCallbackWithData:data error:error shouldInvalidateLocation:YES]; } else { // Start the next chunk. self.currentOffset = newOffset; @@ -1543,8 +1552,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = [self destroyChunkFetcher]; hasDestroyedOldChunkFetcher = YES; - [self uploadNextChunkWithOffset:newOffset - fetcherProperties:props]; + [self uploadNextChunkWithOffset:newOffset fetcherProperties:props]; } } if (!hasDestroyedOldChunkFetcher) { @@ -1566,8 +1574,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = BOOL wasTemporaryUploadFile = ![chunkFileURL isEqual:_uploadFileURL]; if (wasTemporaryUploadFile) { NSError *error; - [[NSFileManager defaultManager] removeItemAtURL:chunkFileURL - error:&error]; + [[NSFileManager defaultManager] removeItemAtURL:chunkFileURL error:&error]; if (error) { GTMSESSION_LOG_DEBUG(@"removingItemAtURL failed: %@\n%@", error, chunkFileURL); } @@ -1577,7 +1584,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = // To avoid retain cycles, remove all properties except the parent identifier. _chunkFetcher.properties = - @{ kGTMSessionUploadFetcherChunkParentKey : [NSValue valueWithNonretainedObject:self] }; + @{kGTMSessionUploadFetcherChunkParentKey : [NSValue valueWithNonretainedObject:self]}; _chunkFetcher.retryBlock = nil; _chunkFetcher.sendProgressBlock = nil; @@ -1595,18 +1602,25 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = totalBytesExpectedToSend:(int64_t)totalBytesExpected { GTMSessionCheckNotSynchronized(self); + // The clang included with Xcode 13.3 betas added a -Wunused-but-set-variable warning, + // which doesn't (yet) skip variables annotated with objc_precie_lifetime. Since that + // warning is not available in all Xcodes, turn off the -Wunused warning group entirely. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunused" // Ensure the chunk fetcher survives the callback in case the user pauses the upload process. __block GTMSessionFetcher *holdFetcher = self.chunkFetcher; +#pragma clang diagnostic pop [self invokeOnCallbackQueue:self.delegateCallbackQueue afterUserStopped:NO block:^{ - GTMSessionFetcherSendProgressBlock sendProgressBlock = self.sendProgressBlock; - if (sendProgressBlock) { - sendProgressBlock(bytesSent, totalBytesSent, totalBytesExpected); - } - holdFetcher = nil; - }]; + GTMSessionFetcherSendProgressBlock sendProgressBlock = + self.sendProgressBlock; + if (sendProgressBlock) { + sendProgressBlock(bytesSent, totalBytesSent, totalBytesExpected); + } + holdFetcher = nil; + }]; } - (void)retrieveUploadChunkGranularityFromResponseHeaders:(NSDictionary *)responseHeaders { @@ -1671,16 +1685,17 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = [self invokeOnCallbackQueue:self.callbackQueue afterUserStopped:YES block:^{ - // Repeated calls to stopFetching may cause this path to be reached despite having sent a real - // cancel request, check here to ensure that the cancellation handler invocation which fires - // will definitely be for the real request sent previously. - @synchronized(self) { - if (self->_isCancelInFlight) { - return; - } - } - [self triggerCancellationHandlerForFetch:nil data:nil error:nil]; - }]; + // Repeated calls to stopFetching may cause this path to be reached + // despite having sent a real cancel request, check here to ensure that + // the cancellation handler invocation which fires will definitely be + // for the real request sent previously. + @synchronized(self) { + if (self->_isCancelInFlight) { + return; + } + } + [self triggerCancellationHandlerForFetch:nil data:nil error:nil]; + }]; } [super stopFetching]; @@ -1701,8 +1716,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = #pragma mark - -- (int64_t)updateChunkFetcher:(GTMSessionFetcher *)chunkFetcher - forChunkAtOffset:(int64_t)offset { +- (int64_t)updateChunkFetcher:(GTMSessionFetcher *)chunkFetcher forChunkAtOffset:(int64_t)offset { BOOL isUploadingFileURL = (self.uploadFileURL != nil); // Upload another chunk, meeting server-required granularity. @@ -1770,13 +1784,14 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = // Append the range of bytes in this chunk to the fetcher comment. NSString *baseComment = self.comment; - [chunkFetcher setCommentWithFormat:@"%@ (%lld-%lld)", - baseComment ? baseComment : @"upload", offset, MAX(0, offset + thisChunkSize - 1)]; + [chunkFetcher setCommentWithFormat:@"%@ (%lld-%lld)", baseComment ? baseComment : @"upload", + offset, MAX(0, offset + thisChunkSize - 1)]; return thisChunkSize; } // Public properties. +// clang-format off @synthesize currentOffset = _currentOffset, allowsCellularAccess = _allowsCellularAccess, delegateCompletionHandler = _delegateCompletionHandler, @@ -1785,6 +1800,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = subdataGenerating = _subdataGenerating, shouldInitiateOffsetQuery = _shouldInitiateOffsetQuery, uploadGranularity = _uploadGranularity; +// clang-format on // Internal properties. @dynamic fetcherInFlight; @@ -1873,7 +1889,6 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } } - - (void)setStatusCode:(NSInteger)val { @synchronized(self) { GTMSessionMonitorSynchronized(self); @@ -1945,6 +1960,8 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = return [super isFetching]; } +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" - (BOOL)waitForCompletionWithTimeout:(NSTimeInterval)timeoutInSeconds { NSDate *timeoutDate = [NSDate dateWithTimeIntervalSinceNow:timeoutInSeconds]; @@ -1970,6 +1987,7 @@ NSString *const kGTMSessionFetcherUploadLocationObtainedNotification = } return YES; } +#pragma clang diagnostic pop @end diff --git a/Pods/GoogleSignIn/CHANGELOG.md b/Pods/GoogleSignIn/CHANGELOG.md index d796ae4..4c92907 100755 --- a/Pods/GoogleSignIn/CHANGELOG.md +++ b/Pods/GoogleSignIn/CHANGELOG.md @@ -1,3 +1,25 @@ +# 2019-11-7 -- v5.0.2 +- Fixes the wrong error code being sent to `signIn:didSignInForUser:withError:` when the user + cancels iOS's consent dialog during the sign-in flow. + +# 2019-10-9 -- v5.0.1 +- Fixes an issue that the sign in flow cannot be correctly started on iOS 13. +- The zip distribution requires Xcode 11 or above. + +# 2019-8-14 -- v5.0.0 +- Changes to GIDSignIn + - `uiDelegate` has been replaced with `presentingViewController`. + - `hasAuthInKeychain` has been replaced with `hasPreviousSignIn`. + - `signInSilently` has been replaced with `restorePreviousSignIn`. + - Removed deprecated `kGIDSignInErrorCodeNoSignInHandlersInstalled` error code. +- Changes to GIDAuthentication + - Removed deprecated methods `getAccessTokenWithHandler:` and `refreshAccessTokenWithHandler:`. +- Changes to GIDGoogleUser + - Removed deprecated property `accessibleScopes`, use `grantedScopes` instead. +- Adds dependencies on AppAuth and GTMAppAuth. +- Removes the dependency on GoogleToolboxForMac. +- Drops support for iOS 7. + # 2018-11-26 -- v4.4.0 - Removes the dependency on GTM OAuth 2. diff --git a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn index 8c1ab38..12c0506 100755 Binary files a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn and b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn differ diff --git a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDAuthentication.h b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDAuthentication.h index 7ab00b8..3571c6e 100755 --- a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDAuthentication.h +++ b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDAuthentication.h @@ -13,60 +13,53 @@ @protocol GTMFetcherAuthorizationProtocol; @class GIDAuthentication; -// @relates GIDAuthentication -// -// The callback block that takes a GIDAuthentication, or an error if attempt to refresh was -// unsuccessful. +/// The callback block that takes a `GIDAuthentication`, or an error if attempt +/// to refresh was unsuccessful. typedef void (^GIDAuthenticationHandler)(GIDAuthentication *authentication, NSError *error); -// @relates GIDAuthentication -// -// The callback block that takes an access token, or an error if attempt to refresh was -// unsuccessful. +/// The callback block that takes an access token, or an error if attempt to refresh was +/// unsuccessful. typedef void (^GIDAccessTokenHandler)(NSString *accessToken, NSError *error); -// This class represents the OAuth 2.0 entities needed for sign-in. -@interface GIDAuthentication : NSObject +/// This class represents the OAuth 2.0 entities needed for sign-in. +@interface GIDAuthentication : NSObject -// The client ID associated with the authentication. +/// The client ID associated with the authentication. @property(nonatomic, readonly) NSString *clientID; -// The OAuth2 access token to access Google services. +/// The OAuth2 access token to access Google services. @property(nonatomic, readonly) NSString *accessToken; -// The estimated expiration date of the access token. +/// The estimated expiration date of the access token. @property(nonatomic, readonly) NSDate *accessTokenExpirationDate; -// The OAuth2 refresh token to exchange for new access tokens. +/// The OAuth2 refresh token to exchange for new access tokens. @property(nonatomic, readonly) NSString *refreshToken; -// An OpenID Connect ID token that identifies the user. Send this token to your server to -// authenticate the user there. For more information on this topic, see -// https://developers.google.com/identity/sign-in/ios/backend-auth +/// An OpenID Connect ID token that identifies the user. Send this token to your server to +/// authenticate the user there. For more information on this topic, see +/// https://developers.google.com/identity/sign-in/ios/backend-auth @property(nonatomic, readonly) NSString *idToken; -// The estimated expiration date of the ID token. +/// The estimated expiration date of the ID token. @property(nonatomic, readonly) NSDate *idTokenExpirationDate; -// Gets a new authorizer for GTLService, GTMSessionFetcher, or GTMHTTPFetcher. +/// Gets a new authorizer for `GTLService`, `GTMSessionFetcher`, or `GTMHTTPFetcher`. +/// +/// @return A new authorizer - (id)fetcherAuthorizer; -// Get a valid access token and a valid ID token, refreshing them first if they have expired or are -// about to expire. +/// Get a valid access token and a valid ID token, refreshing them first if they have expired or are +/// about to expire. +/// +/// @param handler A callback block that takes a `GIDAuthentication`, or an +/// error if attempt to refresh was unsuccessful. - (void)getTokensWithHandler:(GIDAuthenticationHandler)handler; -// Refreshes the access token and the ID token using the refresh token. +/// Refreshes the access token and the ID token using the refresh token. +/// +/// @param handler A callback block that takes a `GIDAuthentication`, or an +/// error if attempt to refresh was unsuccessful. - (void)refreshTokensWithHandler:(GIDAuthenticationHandler)handler; -// Gets the access token, which may be a new one from the refresh token if the original has already -// expired or is about to expire. Deprecated: use |getTokensWithHandler:| to get access tokens -// instead. -- (void)getAccessTokenWithHandler:(GIDAccessTokenHandler)handler - DEPRECATED_MSG_ATTRIBUTE("Use |getTokensWithHandler:| instead."); - -// Refreshes the access token with the refresh token. Deprecated: Use |refreshTokensWithHandler:| -// to refresh access tokens instead. -- (void)refreshAccessTokenWithHandler:(GIDAccessTokenHandler)handler - DEPRECATED_MSG_ATTRIBUTE("Use |refreshTokensWithHandler:| instead."); - @end diff --git a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDGoogleUser.h b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDGoogleUser.h index 7a051d2..17e6e5e 100755 --- a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDGoogleUser.h +++ b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDGoogleUser.h @@ -13,31 +13,27 @@ @class GIDAuthentication; @class GIDProfileData; -// This class represents a user account. -@interface GIDGoogleUser : NSObject +/// This class represents a user account. +@interface GIDGoogleUser : NSObject -// The Google user ID. +/// The Google user ID. @property(nonatomic, readonly) NSString *userID; -// Representation of the Basic profile data. It is only available if |shouldFetchBasicProfile| -// is set and either |signIn| or |signInSilently| has been completed successfully. +/// Representation of the Basic profile data. It is only available if +/// `GIDSignIn.shouldFetchBasicProfile` is set and either `-[GIDSignIn signIn]` or +/// `-[GIDSignIn restorePreviousSignIn]` has been completed successfully. @property(nonatomic, readonly) GIDProfileData *profile; -// The authentication object for the user. +/// The authentication object for the user. @property(nonatomic, readonly) GIDAuthentication *authentication; -// The API scopes requested by the app in an array of |NSString|s. Deprecated. -// Use |grantedScopes| instead. -@property(nonatomic, readonly) NSArray *accessibleScopes - __attribute__((deprecated("Use grantedScopes instead."))); - -// The API scopes granted to the app in an array of |NSString|s. +/// The API scopes granted to the app in an array of `NSString`. @property(nonatomic, readonly) NSArray *grantedScopes; -// For Google Apps hosted accounts, the domain of the user. +/// For Google Apps hosted accounts, the domain of the user. @property(nonatomic, readonly) NSString *hostedDomain; -// An OAuth2 authorization code for the home server. +/// An OAuth2 authorization code for the home server. @property(nonatomic, readonly) NSString *serverAuthCode; @end diff --git a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDProfileData.h b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDProfileData.h index 8ffc995..f07d475 100755 --- a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDProfileData.h +++ b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDProfileData.h @@ -10,25 +10,28 @@ #import -// This class represents the basic profile information of a GIDGoogleUser. -@interface GIDProfileData : NSObject +/// This class represents the basic profile information of a `GIDGoogleUser`. +@interface GIDProfileData : NSObject -// The Google user's email. +/// The Google user's email. @property(nonatomic, readonly) NSString *email; -// The Google user's full name. +/// The Google user's full name. @property(nonatomic, readonly) NSString *name; -// The Google user's given name. +/// The Google user's given name. @property(nonatomic, readonly) NSString *givenName; -// The Google user's family name. +/// The Google user's family name. @property(nonatomic, readonly) NSString *familyName; -// Whether or not the user has profile image. +/// Whether or not the user has profile image. @property(nonatomic, readonly) BOOL hasImage; -// Gets the user's profile image URL for the given dimension in pixels for each side of the square. +/// Gets the user's profile image URL for the given dimension in pixels for each side of the square. +/// +/// @param dimension The desired height (and width) of the profile image. +/// @return The URL of the user's profile image. - (NSURL *)imageURLWithDimension:(NSUInteger)dimension; @end diff --git a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignIn.h b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignIn.h index f62a3fb..1204615 100755 --- a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignIn.h +++ b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignIn.h @@ -14,174 +14,157 @@ @class GIDGoogleUser; @class GIDSignIn; -// The error domain for NSErrors returned by the Google Identity SDK. +/// The error domain for `NSError`s returned by the Google Identity SDK. extern NSString *const kGIDSignInErrorDomain; -// A list of potential error codes returned from the Google Identity SDK. +/// A list of potential error codes returned from the Google Identity SDK. typedef NS_ENUM(NSInteger, GIDSignInErrorCode) { - // Indicates an unknown error has occurred. + /// Indicates an unknown error has occurred. kGIDSignInErrorCodeUnknown = -1, - // Indicates a problem reading or writing to the application keychain. + /// Indicates a problem reading or writing to the application keychain. kGIDSignInErrorCodeKeychain = -2, - // Indicates no appropriate applications are installed on the user's device which can handle - // sign-in. This code will only ever be returned if using webview and switching to browser have - // both been disabled. - kGIDSignInErrorCodeNoSignInHandlersInstalled = -3, - // Indicates there are no auth tokens in the keychain. This error code will be returned by - // signInSilently if the user has never signed in before with the given scopes, or if they have - // since signed out. + /// Indicates there are no valid auth tokens in the keychain. This error code will be returned by + /// `restorePreviousSignIn` if the user has not signed in before or if they have since signed out. kGIDSignInErrorCodeHasNoAuthInKeychain = -4, - // Indicates the user canceled the sign in request. + /// Indicates the user canceled the sign in request. kGIDSignInErrorCodeCanceled = -5, - // Indicates an Enterprise Mobility Management related error has occurred. + /// Indicates an Enterprise Mobility Management related error has occurred. kGIDSignInErrorCodeEMM = -6, }; -// A protocol implemented by the delegate of |GIDSignIn| to receive a refresh token or an error. +/// A protocol implemented by the delegate of `GIDSignIn` to receive a refresh token or an error. @protocol GIDSignInDelegate -// The sign-in flow has finished and was successful if |error| is |nil|. +/// The sign-in flow has finished and was successful if `error` is `nil`. - (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error; @optional -// Finished disconnecting |user| from the app successfully if |error| is |nil|. +/// Finished disconnecting `user` from the app successfully if `error` is `nil`. - (void)signIn:(GIDSignIn *)signIn didDisconnectWithUser:(GIDGoogleUser *)user withError:(NSError *)error; @end -// A protocol which may be implemented by consumers of |GIDSignIn| to be notified of when -// GIDSignIn has finished dispatching the sign-in request. -// -// This protocol is useful for developers who implement their own "Sign In with Google" button. -// Because there may be a brief delay between when the call to |signIn| is made, and when the -// app switch occurs, it is best practice to have the UI react to the user's input by displaying -// a spinner or other UI element. The |signInWillDispatch| method should be used to -// stop or hide the spinner. -@protocol GIDSignInUIDelegate - -@optional - -// The sign-in flow has finished selecting how to proceed, and the UI should no longer display -// a spinner or other "please wait" element. -- (void)signInWillDispatch:(GIDSignIn *)signIn error:(NSError *)error; - -// If implemented, this method will be invoked when sign in needs to display a view controller. -// The view controller should be displayed modally (via UIViewController's |presentViewController| -// method, and not pushed unto a navigation controller's stack. -- (void)signIn:(GIDSignIn *)signIn presentViewController:(UIViewController *)viewController; - -// If implemented, this method will be invoked when sign in needs to dismiss a view controller. -// Typically, this should be implemented by calling |dismissViewController| on the passed -// view controller. -- (void)signIn:(GIDSignIn *)signIn dismissViewController:(UIViewController *)viewController; - -@end - -// This class signs the user in with Google. It also provides single sign-on via a capable Google -// app if one is installed. -// -// For reference, please see "Google Sign-In for iOS" at -// https://developers.google.com/identity/sign-in/ios -// Here is sample code to use |GIDSignIn|: -// 1. Get a reference to the |GIDSignIn| shared instance: -// GIDSignIn *signIn = [GIDSignIn sharedInstance]; -// 2. Set the OAuth 2.0 scopes you want to request: -// [signIn setScopes:[NSArray arrayWithObject:@"https://www.googleapis.com/auth/plus.login"]]; -// 3. Call [signIn setDelegate:self]; -// 4. Set up delegate method |signIn:didSignInForUser:withError:|. -// 5. Call |handleURL| on the shared instance from |application:openUrl:...| in your app delegate. -// 6. Call |signIn| on the shared instance; +/// This class signs the user in with Google. It also provides single sign-on via a capable Google +/// app if one is installed. +/// +/// For reference, please see "Google Sign-In for iOS" at +/// https://developers.google.com/identity/sign-in/ios +/// +/// Here is sample code to use `GIDSignIn`: +/// 1. Get a reference to the `GIDSignIn` shared instance: +/// ``` +/// GIDSignIn *signIn = [GIDSignIn sharedInstance]; +/// ``` +/// 2. Call `[signIn setDelegate:self]`; +/// 3. Set up delegate method `signIn:didSignInForUser:withError:`. +/// 4. Call `handleURL` on the shared instance from `application:openUrl:...` in your app delegate. +/// 5. Call `signIn` on the shared instance; @interface GIDSignIn : NSObject -// The authentication object for the current user, or |nil| if there is currently no logged in user. +/// The authentication object for the current user, or `nil` if there is currently no logged in +/// user. @property(nonatomic, readonly) GIDGoogleUser *currentUser; -// The object to be notified when authentication is finished. +/// The object to be notified when authentication is finished. @property(nonatomic, weak) id delegate; -// The object to be notified when sign in dispatch selection is finished. -@property(nonatomic, weak) id uiDelegate; +/// The view controller used to present `SFSafariViewContoller` on iOS 9 and 10. +@property(nonatomic, weak) UIViewController *presentingViewController; -// The client ID of the app from the Google APIs console. Must set for sign-in to work. +/// The client ID of the app from the Google APIs console. Must set for sign-in to work. @property(nonatomic, copy) NSString *clientID; -// The API scopes requested by the app in an array of |NSString|s. The default value is |@[]|. -// -// This property is optional. If you set it, set it before calling |signIn|. +/// The API scopes requested by the app in an array of `NSString`s. The default value is `@[]`. +/// +/// This property is optional. If you set it, set it before calling `signIn`. @property(nonatomic, copy) NSArray *scopes; -// Whether or not to fetch basic profile data after signing in. The data is saved in the -// |GIDGoogleUser.profileData| object. -// -// Setting the flag will add "email" and "profile" to scopes. -// Defaults to |YES|. +/// Whether or not to fetch basic profile data after signing in. The data is saved in the +/// `GIDGoogleUser.profileData` object. +/// +/// Setting the flag will add "email" and "profile" to scopes. +/// Defaults to `YES`. @property(nonatomic, assign) BOOL shouldFetchBasicProfile; -// The language for sign-in, in the form of ISO 639-1 language code optionally followed by a dash -// and ISO 3166-1 alpha-2 region code, such as |@"it"| or |@"pt-PT"|. Only set if different from -// system default. -// -// This property is optional. If you set it, set it before calling |signIn|. +/// The language for sign-in, in the form of ISO 639-1 language code optionally followed by a dash +/// and ISO 3166-1 alpha-2 region code, such as `@"it"` or `@"pt-PT"`. Only set if different from +/// system default. +/// +/// This property is optional. If you set it, set it before calling `signIn`. @property(nonatomic, copy) NSString *language; -// The login hint to the authorization server, for example the user's ID, or email address, -// to be prefilled if possible. -// -// This property is optional. If you set it, set it before calling |signIn|. +/// The login hint to the authorization server, for example the user's ID, or email address, +/// to be prefilled if possible. +/// +/// This property is optional. If you set it, set it before calling `signIn`. @property(nonatomic, copy) NSString *loginHint; -// The client ID of the home web server. This will be returned as the |audience| property of the -// OpenID Connect ID token. For more info on the ID token: -// https://developers.google.com/identity/sign-in/ios/backend-auth -// -// This property is optional. If you set it, set it before calling |signIn|. +/// The client ID of the home web server. This will be returned as the `audience` property of the +/// OpenID Connect ID token. For more info on the ID token: +/// https://developers.google.com/identity/sign-in/ios/backend-auth +/// +/// This property is optional. If you set it, set it before calling `signIn`. @property(nonatomic, copy) NSString *serverClientID; -// The OpenID2 realm of the home web server. This allows Google to include the user's OpenID -// Identifier in the OpenID Connect ID token. -// -// This property is optional. If you set it, set it before calling |signIn|. +/// The OpenID2 realm of the home web server. This allows Google to include the user's OpenID +/// Identifier in the OpenID Connect ID token. +/// +/// This property is optional. If you set it, set it before calling `signIn`. @property(nonatomic, copy) NSString *openIDRealm; -// The Google Apps domain to which users must belong to sign in. To verify, check |GIDGoogleUser|'s -// |hostedDomain| property. -// -// This property is optional. If you set it, set it before calling |signIn|. +/// The Google Apps domain to which users must belong to sign in. To verify, check +/// `GIDGoogleUser`'s `hostedDomain` property. +/// +/// This property is optional. If you set it, set it before calling `signIn`. @property(nonatomic, copy) NSString *hostedDomain; -// Returns a shared |GIDSignIn| instance. +/// Returns a shared `GIDSignIn` instance. + (GIDSignIn *)sharedInstance; -// This method should be called from your |UIApplicationDelegate|'s -// |application:openURL:sourceApplication:annotation|. Returns |YES| if |GIDSignIn| handled this -// URL. -- (BOOL)handleURL:(NSURL *)url - sourceApplication:(NSString *)sourceApplication - annotation:(id)annotation; +/// Unavailable. Use `sharedInstance` to instantiate `GIDSignIn`. ++ (instancetype)new NS_UNAVAILABLE; -// Checks whether the user has either currently signed in or has previous authentication saved in -// keychain. -- (BOOL)hasAuthInKeychain; +/// Unavailable. Use `sharedInstance` to instantiate `GIDSignIn`. +- (instancetype)init NS_UNAVAILABLE; -// Attempts to sign in a previously authenticated user without interaction. The delegate will be -// called at the end of this process indicating success or failure. -- (void)signInSilently; +/// This method should be called from your `UIApplicationDelegate`'s `application:openURL:options` +/// and `application:openURL:sourceApplication:annotation` method(s). +/// +/// @param url The URL that was passed to the app. +/// @return `YES` if `GIDSignIn` handled this URL. +- (BOOL)handleURL:(NSURL *)url; -// Starts the sign-in process. The delegate will be called at the end of this process. Note that -// this method should not be called when the app is starting up, (e.g in -// application:didFinishLaunchingWithOptions:). Instead use the |signInSilently| method. +/// Checks if there is a previously authenticated user saved in keychain. +/// +/// @return `YES` if there is a previously authenticated user saved in keychain. +- (BOOL)hasPreviousSignIn; + +/// Attempts to restore a previously authenticated user without interaction. + +/// The delegate will be +/// called at the end of this process indicating success or failure. The current values of +/// `GIDSignIn`'s configuration properties will not impact the restored user. +- (void)restorePreviousSignIn; + +/// Starts an interactive sign-in flow using `GIDSignIn`'s configuration properties. +/// +/// The delegate +/// will be called at the end of this process. Any saved sign-in state will be replaced by the +/// result of this flow. Note that this method should not be called when the app is starting up, +/// (e.g in `application:didFinishLaunchingWithOptions:`); instead use the `restorePreviousSignIn` +/// method to restore a previous sign-in. - (void)signIn; -// Marks current user as being in the signed out state. +/// Marks current user as being in the signed out state. - (void)signOut; -// Disconnects the current user from the app and revokes previous authentication. If the operation -// succeeds, the OAuth 2.0 token is also removed from keychain. +/// Disconnects the current user from the app and revokes previous authentication. If the operation +/// succeeds, the OAuth 2.0 token is also removed from keychain. - (void)disconnect; @end diff --git a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignInButton.h b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignInButton.h index 1e75fd6..795f569 100755 --- a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignInButton.h +++ b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Headers/GIDSignInButton.h @@ -10,42 +10,44 @@ #import -// The various layout styles supported by the GIDSignInButton. -// The minimum size of the button depends on the language used for text. -// The following dimensions (in points) fit for all languages: -// kGIDSignInButtonStyleStandard: 230 x 48 -// kGIDSignInButtonStyleWide: 312 x 48 -// kGIDSignInButtonStyleIconOnly: 48 x 48 (no text, fixed size) +/// The layout styles supported by the `GIDSignInButton`. +/// +/// The minimum size of the button depends on the language used for text. +/// The following dimensions (in points) fit for all languages: +/// - kGIDSignInButtonStyleStandard: 230 x 48 +/// - kGIDSignInButtonStyleWide: 312 x 48 +/// - kGIDSignInButtonStyleIconOnly: 48 x 48 (no text, fixed size) typedef NS_ENUM(NSInteger, GIDSignInButtonStyle) { kGIDSignInButtonStyleStandard = 0, kGIDSignInButtonStyleWide = 1, kGIDSignInButtonStyleIconOnly = 2 }; -// The various color schemes supported by the GIDSignInButton. +/// The color schemes supported by the `GIDSignInButton`. typedef NS_ENUM(NSInteger, GIDSignInButtonColorScheme) { kGIDSignInButtonColorSchemeDark = 0, kGIDSignInButtonColorSchemeLight = 1 }; -// This class provides the "Sign in with Google" button. You can instantiate this -// class programmatically or from a NIB file. You should set up the -// |GIDSignIn| shared instance with your client ID and any additional scopes, -// implement the delegate methods for |GIDSignIn|, and add this button to your -// view hierarchy. +/// This class provides the "Sign in with Google" button. +/// +/// You can instantiate this class programmatically or from a NIB file. You +/// should set up the `GIDSignIn` shared instance with your client ID and any +/// additional scopes, implement the delegate methods for `GIDSignIn`, and add +/// this button to your view hierarchy. @interface GIDSignInButton : UIControl -// The layout style for the sign-in button. -// Possible values: -// - kGIDSignInButtonStyleStandard: 230 x 48 (default) -// - kGIDSignInButtonStyleWide: 312 x 48 -// - kGIDSignInButtonStyleIconOnly: 48 x 48 (no text, fixed size) +/// The layout style for the sign-in button. +/// Possible values: +/// - kGIDSignInButtonStyleStandard: 230 x 48 (default) +/// - kGIDSignInButtonStyleWide: 312 x 48 +/// - kGIDSignInButtonStyleIconOnly: 48 x 48 (no text, fixed size) @property(nonatomic, assign) GIDSignInButtonStyle style; -// The color scheme for the sign-in button. -// Possible values: -// - kGIDSignInButtonColorSchemeDark -// - kGIDSignInButtonColorSchemeLight (default) +/// The color scheme for the sign-in button. +/// Possible values: +/// - kGIDSignInButtonColorSchemeDark +/// - kGIDSignInButtonColorSchemeLight (default) @property(nonatomic, assign) GIDSignInButtonColorScheme colorScheme; @end diff --git a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Modules/module.modulemap b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Modules/module.modulemap index 4e52825..421acdc 100755 --- a/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Modules/module.modulemap +++ b/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/Modules/module.modulemap @@ -1,12 +1,13 @@ framework module GoogleSignIn { umbrella header "GoogleSignIn.h" export * - module * { export *} + module * { export * } + link framework "AuthenticationServices" link framework "CoreGraphics" link framework "CoreText" link framework "Foundation" link framework "LocalAuthentication" link framework "SafariServices" link framework "Security" - link framework "SystemConfiguration" - link framework "UIKit"} + link framework "UIKit" +} diff --git a/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/en.lproj/GoogleSignIn.strings b/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/en.lproj/GoogleSignIn.strings index 6b55b9b..460ad64 100755 --- a/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/en.lproj/GoogleSignIn.strings +++ b/Pods/GoogleSignIn/Resources/GoogleSignIn.bundle/en.lproj/GoogleSignIn.strings @@ -4,18 +4,6 @@ /* Long form sign-in button text */ "Sign in with Google" = "Sign in with Google"; -/* The title of the promotional prompt to install the Google app. */ -"PromoTitle" = "Sign in with Google"; - -/* The body message of the promotional prompt to install the Google app. */ -"PromoMessage" = "Get the free Google app and sign in to apps with your Google Account. No need to remember passwords."; - -/* The cancel button on the promotional prompt to install the Google app. */ -"PromoActionCancel" = "Cancel"; - -/* The install button on the promotional prompt to install the Google app. */ -"PromoActionInstall" = "Get"; - /* The text for the button for user to acknowledge and dismiss a dialog. */ "OK" = "OK"; diff --git a/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugSelectorValidation.h b/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugSelectorValidation.h deleted file mode 100644 index 0c4c4da..0000000 --- a/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugSelectorValidation.h +++ /dev/null @@ -1,101 +0,0 @@ -// -// GTMDebugSelectorValidation.h -// -// This file should only be included within an implimation file. In any -// function that takes an object and selector to invoke, you should call: -// -// GTMAssertSelectorNilOrImplementedWithArguments(obj, sel, @encode(arg1type), ..., NULL) -// or -// GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(obj, sel, @encode(returnType), @encode(arg1type), ..., NULL) -// -// This will then validate that the selector is defined and using the right -// type(s), this can help catch errors much earlier then waiting for the -// selector to actually fire (and in the case of error selectors, might never -// really be tested until in the field). -// -// Copyright 2007-2008 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file except in compliance with the License. You may obtain a copy -// of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations under -// the License. -// - -#if DEBUG - -#import -#import -#import "GTMDefines.h" - -static void GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(id obj, SEL sel, const char *retType, ...) { - - // verify that the object's selector is implemented with the proper - // number and type of arguments - va_list argList; - va_start(argList, retType); - - if (obj && sel) { - // check that the selector is implemented - _GTMDevAssert([obj respondsToSelector:sel], - @"\"%@\" selector \"%@\" is unimplemented or misnamed", - NSStringFromClass([obj class]), - NSStringFromSelector(sel)); - - const char *expectedArgType; - NSUInteger argCount = 2; // skip self and _cmd - NSMethodSignature *sig = [obj methodSignatureForSelector:sel]; - - // check that each expected argument is present and of the correct type - while ((expectedArgType = va_arg(argList, const char*)) != 0) { - - if ([sig numberOfArguments] > argCount) { - const char *foundArgType = [sig getArgumentTypeAtIndex:argCount]; - - _GTMDevAssert(0 == strncmp(foundArgType, expectedArgType, strlen(expectedArgType)), - @"\"%@\" selector \"%@\" argument %u should be type %s", - NSStringFromClass([obj class]), - NSStringFromSelector(sel), - (uint32_t)(argCount - 2), - expectedArgType); - } - argCount++; - } - - // check that the proper number of arguments are present in the selector - _GTMDevAssert(argCount == [sig numberOfArguments], - @"\"%@\" selector \"%@\" should have %u arguments", - NSStringFromClass([obj class]), - NSStringFromSelector(sel), - (uint32_t)(argCount - 2)); - - // if asked, validate the return type - if (retType && (strcmp("gtm_skip_return_test", retType) != 0)) { - const char *foundRetType = [sig methodReturnType]; - _GTMDevAssert(0 == strncmp(foundRetType, retType, strlen(retType)), - @"\"%@\" selector \"%@\" return type should be type %s", - NSStringFromClass([obj class]), - NSStringFromSelector(sel), - retType); - } - } - - va_end(argList); -} - -#define GTMAssertSelectorNilOrImplementedWithArguments(obj, sel, ...) \ - GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments((obj), (sel), "gtm_skip_return_test", __VA_ARGS__) - -#else // DEBUG - -// make it go away if not debug -#define GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(obj, sel, retType, ...) do { } while (0) -#define GTMAssertSelectorNilOrImplementedWithArguments(obj, sel, ...) do { } while (0) - -#endif // DEBUG diff --git a/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugThreadValidation.h b/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugThreadValidation.h deleted file mode 100644 index 8d116d9..0000000 --- a/Pods/GoogleToolboxForMac/DebugUtils/GTMDebugThreadValidation.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// GTMDebugThreadValidation.h -// -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file except in compliance with the License. You may obtain a copy -// of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations under -// the License. -// - -#import "GTMDefines.h" -#import - -// GTMCheckCurrentQueue, GTMIsCurrentQueue -// -// GTMCheckCurrentQueue takes a target queue and uses _GTMDevAssert to -// report if that is not the currently executing queue. -// -// GTMIsCurrentQueue takes a target queue and returns true if the target queue -// is the currently executing dispatch queue. This can be passed to another -// assertion call in debug builds; it should never be used in release code. -// -// The dispatch queue must have a label. -#define GTMCheckCurrentQueue(targetQueue) \ - _GTMDevAssert(GTMIsCurrentQueue(targetQueue), \ - @"Current queue is %s (expected %s)", \ - _GTMQueueName(DISPATCH_CURRENT_QUEUE_LABEL), \ - _GTMQueueName(targetQueue)) - -#define GTMIsCurrentQueue(targetQueue) \ - (strcmp(_GTMQueueName(DISPATCH_CURRENT_QUEUE_LABEL), \ - _GTMQueueName(targetQueue)) == 0) - -#define _GTMQueueName(queue) \ - (strlen(dispatch_queue_get_label(queue)) > 0 ? \ - dispatch_queue_get_label(queue) : "unnamed") diff --git a/Pods/GoogleToolboxForMac/DebugUtils/GTMMethodCheck.h b/Pods/GoogleToolboxForMac/DebugUtils/GTMMethodCheck.h deleted file mode 100644 index 9fad81d..0000000 --- a/Pods/GoogleToolboxForMac/DebugUtils/GTMMethodCheck.h +++ /dev/null @@ -1,69 +0,0 @@ -// -// GTMMethodCheck.h -// -// Copyright 2006-2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file except in compliance with the License. You may obtain a copy -// of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations under -// the License. -// - -#import -#import -#import - -/// A macro for enforcing debug time checks to make sure all required methods are linked in -// -// When using categories, it can be very easy to forget to include the -// implementation of a category. -// Let's say you had a class foo that depended on method bar of class baz, and -// method bar was implemented as a member of a category. -// You could add the following code: -// -// GTM_METHOD_CHECK(baz, bar) -// -// and the code would check to make sure baz was implemented just before main -// was called. This works for both dynamic libraries, and executables. -// -// -// This is not compiled into release builds. - -#ifdef DEBUG - -// This is the "magic". -// A) we need a multi layer define here so that the preprocessor expands -// __LINE__ the way we want it. We need __LINE__ so that each of our -// GTM_METHOD_CHECKs generates a unique function name. -#define GTM_METHOD_CHECK(class, method) GTM_METHOD_CHECK_INNER(class, method, __LINE__) -#define GTM_METHOD_CHECK_INNER(class, method, line) \ - GTM_METHOD_CHECK_INNER_INNER(class, method, line) - -// B) define a function that is called at startup to check that |class| has an -// implementation for |method| (either a class method or an instance method). -#define GTM_METHOD_CHECK_INNER_INNER(class, method, line) \ -__attribute__ ((constructor, visibility("hidden"))) \ - static void xxGTMMethodCheckMethod ## class ## line () { \ - @autoreleasepool { \ - if (![class instancesRespondToSelector:@selector(method)] \ - && ![class respondsToSelector:@selector(method)]) { \ - fprintf(stderr, "%s:%d: error: We need method '%s' to be linked in for class '%s'\n", \ - __FILE__, line, #method, #class); \ - exit(EX_SOFTWARE); \ - } \ - } \ -} - -#else // DEBUG - -// Do nothing in release. -#define GTM_METHOD_CHECK(class, method) - -#endif // DEBUG diff --git a/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.h b/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.h deleted file mode 100644 index 285a82c..0000000 --- a/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// GTMNSDictionary+URLArguments.h -// -// Copyright 2006-2008 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file except in compliance with the License. You may obtain a copy -// of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations under -// the License. -// - -#import - -/// Utility for building a URL or POST argument string. -@interface NSDictionary (GTMNSDictionaryURLArgumentsAdditions) - -/// Returns a dictionary of the decoded key-value pairs in a http arguments -/// string of the form key1=value1&key2=value2&...&keyN=valueN. -/// Keys and values will be unescaped automatically. -/// Only the first value for a repeated key is returned. -/// -/// NOTE: Apps targeting iOS 8 or OS X 10.10 and later should use -/// NSURLComponents and NSURLQueryItem to create URLs with -/// query arguments instead of using these category methods. -+ (NSDictionary *)gtm_dictionaryWithHttpArgumentsString:(NSString *)argString NS_DEPRECATED(10_0, 10_10, 2_0, 8_0, "Use NSURLComponents and NSURLQueryItem."); - -/// Gets a string representation of the dictionary in the form -/// key1=value1&key2=value2&...&keyN=valueN, suitable for use as either -/// URL arguments (after a '?') or POST body. Keys and values will be escaped -/// automatically, so should be unescaped in the dictionary. -- (NSString *)gtm_httpArgumentsString NS_DEPRECATED(10_0, 10_10, 2_0, 8_0, "Use NSURLComponents and NSURLQueryItem."); - -@end diff --git a/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.m b/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.m deleted file mode 100644 index 0e80607..0000000 --- a/Pods/GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// GTMNSDictionary+URLArguments.m -// -// Copyright 2006-2008 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file except in compliance with the License. You may obtain a copy -// of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations under -// the License. -// - -#import "GTMNSDictionary+URLArguments.h" -#import "GTMNSString+URLArguments.h" -#import "GTMMethodCheck.h" -#import "GTMDefines.h" - - -#pragma clang diagnostic push -// Ignore all of the deprecation warnings for GTMNSString+URLArguments -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -@implementation NSDictionary (GTMNSDictionaryURLArgumentsAdditions) - -GTM_METHOD_CHECK(NSString, gtm_stringByEscapingForURLArgument); -GTM_METHOD_CHECK(NSString, gtm_stringByUnescapingFromURLArgument); - -+ (NSDictionary *)gtm_dictionaryWithHttpArgumentsString:(NSString *)argString { - NSMutableDictionary* ret = [NSMutableDictionary dictionary]; - NSArray* components = [argString componentsSeparatedByString:@"&"]; - NSString* component; - // Use reverse order so that the first occurrence of a key replaces - // those subsequent. - for (component in [components reverseObjectEnumerator]) { - if ([component length] == 0) - continue; - NSRange pos = [component rangeOfString:@"="]; - NSString *key; - NSString *val; - if (pos.location == NSNotFound) { - key = [component gtm_stringByUnescapingFromURLArgument]; - val = @""; - } else { - key = [[component substringToIndex:pos.location] - gtm_stringByUnescapingFromURLArgument]; - val = [[component substringFromIndex:pos.location + pos.length] - gtm_stringByUnescapingFromURLArgument]; - } - // gtm_stringByUnescapingFromURLArgument returns nil on invalid UTF8 - // and NSMutableDictionary raises an exception when passed nil values. - if (!key) key = @""; - if (!val) val = @""; - [ret setObject:val forKey:key]; - } - return ret; -} - -- (NSString *)gtm_httpArgumentsString { - NSMutableArray* arguments = [NSMutableArray arrayWithCapacity:[self count]]; - NSString* key; - for (key in self) { - [arguments addObject:[NSString stringWithFormat:@"%@=%@", - [key gtm_stringByEscapingForURLArgument], - [[[self objectForKey:key] description] gtm_stringByEscapingForURLArgument]]]; - } - - return [arguments componentsJoinedByString:@"&"]; -} - -@end - -#pragma clang diagnostic pop diff --git a/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.h b/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.h deleted file mode 100644 index 08fe231..0000000 --- a/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// GTMNSString+URLArguments.h -// -// Copyright 2006-2008 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file except in compliance with the License. You may obtain a copy -// of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations under -// the License. -// - -#import - -/// Utilities for encoding and decoding URL arguments. -@interface NSString (GTMNSStringURLArgumentsAdditions) - -/// Returns a string that is escaped properly to be a URL argument. -/// -/// This differs from stringByAddingPercentEscapesUsingEncoding: in that it -/// will escape all the reserved characters (per RFC 3986 -/// ) which -/// stringByAddingPercentEscapesUsingEncoding would leave. -/// -/// This will also escape '%', so this should not be used on a string that has -/// already been escaped unless double-escaping is the desired result. -/// -/// NOTE: Apps targeting iOS 8 or OS X 10.10 and later should use -/// NSURLComponents and NSURLQueryItem to create properly-escaped -/// URLs instead of using these category methods. -- (NSString*)gtm_stringByEscapingForURLArgument NS_DEPRECATED(10_0, 10_10, 2_0, 8_0, "Use NSURLComponents."); - -/// Returns the unescaped version of a URL argument -/// -/// This has the same behavior as stringByReplacingPercentEscapesUsingEncoding:, -/// except that it will also convert '+' to space. -- (NSString*)gtm_stringByUnescapingFromURLArgument NS_DEPRECATED(10_0, 10_10, 2_0, 8_0, "Use NSURLComponents."); - -@end diff --git a/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.m b/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.m deleted file mode 100644 index e785c5e..0000000 --- a/Pods/GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.m +++ /dev/null @@ -1,48 +0,0 @@ -// -// GTMNSString+URLArguments.m -// -// Copyright 2006-2008 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file except in compliance with the License. You may obtain a copy -// of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations under -// the License. -// - -#import "GTMNSString+URLArguments.h" - -@implementation NSString (GTMNSStringURLArgumentsAdditions) - -- (NSString *)gtm_stringByEscapingForURLArgument { - // Encode all the reserved characters, per RFC 3986 - // () - CFStringRef escaped = - CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, - (CFStringRef)self, - NULL, - (CFStringRef)@"!*'();:@&=+$,/?%#[]", - kCFStringEncodingUTF8); -#if defined(__has_feature) && __has_feature(objc_arc) - return CFBridgingRelease(escaped); -#else - return [(NSString *)escaped autorelease]; -#endif -} - -- (NSString *)gtm_stringByUnescapingFromURLArgument { - NSMutableString *resultString = [NSMutableString stringWithString:self]; - [resultString replaceOccurrencesOfString:@"+" - withString:@" " - options:NSLiteralSearch - range:NSMakeRange(0, [resultString length])]; - return [resultString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; -} - -@end diff --git a/Pods/GoogleToolboxForMac/GTMDefines.h b/Pods/GoogleToolboxForMac/GTMDefines.h deleted file mode 100644 index c968aa1..0000000 --- a/Pods/GoogleToolboxForMac/GTMDefines.h +++ /dev/null @@ -1,380 +0,0 @@ -// -// GTMDefines.h -// -// Copyright 2008 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file except in compliance with the License. You may obtain a copy -// of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations under -// the License. -// - -// ============================================================================ - -#include -#include - -#ifdef __OBJC__ -#include -#endif // __OBJC__ - -#if TARGET_OS_IPHONE -#include -#endif // TARGET_OS_IPHONE - -// ---------------------------------------------------------------------------- -// CPP symbols that can be overridden in a prefix to control how the toolbox -// is compiled. -// ---------------------------------------------------------------------------- - - -// By setting the GTM_CONTAINERS_VALIDATION_FAILED_LOG and -// GTM_CONTAINERS_VALIDATION_FAILED_ASSERT macros you can control what happens -// when a validation fails. If you implement your own validators, you may want -// to control their internals using the same macros for consistency. -#ifndef GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - #define GTM_CONTAINERS_VALIDATION_FAILED_ASSERT 0 -#endif - -// Ensure __has_feature and __has_extension are safe to use. -// See http://clang-analyzer.llvm.org/annotations.html -#ifndef __has_feature // Optional. - #define __has_feature(x) 0 // Compatibility with non-clang compilers. -#endif - -#ifndef __has_extension - #define __has_extension __has_feature // Compatibility with pre-3.0 compilers. -#endif - -// Give ourselves a consistent way to do inlines. Apple's macros even use -// a few different actual definitions, so we're based off of the foundation -// one. -#if !defined(GTM_INLINE) - #if (defined (__GNUC__) && (__GNUC__ == 4)) || defined (__clang__) - #define GTM_INLINE static __inline__ __attribute__((always_inline)) - #else - #define GTM_INLINE static __inline__ - #endif -#endif - -// Give ourselves a consistent way of doing externs that links up nicely -// when mixing objc and objc++ -#if !defined (GTM_EXTERN) - #if defined __cplusplus - #define GTM_EXTERN extern "C" - #define GTM_EXTERN_C_BEGIN extern "C" { - #define GTM_EXTERN_C_END } - #else - #define GTM_EXTERN extern - #define GTM_EXTERN_C_BEGIN - #define GTM_EXTERN_C_END - #endif -#endif - -// Give ourselves a consistent way of exporting things if we have visibility -// set to hidden. -#if !defined (GTM_EXPORT) - #define GTM_EXPORT __attribute__((visibility("default"))) -#endif - -// Give ourselves a consistent way of declaring something as unused. This -// doesn't use __unused because that is only supported in gcc 4.2 and greater. -#if !defined (GTM_UNUSED) -#define GTM_UNUSED(x) ((void)(x)) -#endif - -// _GTMDevLog & _GTMDevAssert -// -// _GTMDevLog & _GTMDevAssert are meant to be a very lightweight shell for -// developer level errors. This implementation simply macros to NSLog/NSAssert. -// It is not intended to be a general logging/reporting system. -// -// Please see http://code.google.com/p/google-toolbox-for-mac/wiki/DevLogNAssert -// for a little more background on the usage of these macros. -// -// _GTMDevLog log some error/problem in debug builds -// _GTMDevAssert assert if condition isn't met w/in a method/function -// in all builds. -// -// To replace this system, just provide different macro definitions in your -// prefix header. Remember, any implementation you provide *must* be thread -// safe since this could be called by anything in what ever situation it has -// been placed in. -// - -// Ignore the "Macro name is a reserved identifier" warning in this section -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wreserved-id-macro" - -// We only define the simple macros if nothing else has defined this. -#ifndef _GTMDevLog - -#ifdef DEBUG - #define _GTMDevLog(...) NSLog(__VA_ARGS__) -#else - #define _GTMDevLog(...) do { } while (0) -#endif - -#endif // _GTMDevLog - -#ifndef _GTMDevAssert -// we directly invoke the NSAssert handler so we can pass on the varargs -// (NSAssert doesn't have a macro we can use that takes varargs) -#if !defined(NS_BLOCK_ASSERTIONS) - #define _GTMDevAssert(condition, ...) \ - do { \ - if (__builtin_expect(!(condition), 0)) { \ - NSString *__assert_func_name__ = \ - [NSString stringWithUTF8String:__PRETTY_FUNCTION__]; \ - __assert_func_name__ = __assert_func_name__ ?: @""; \ - NSString *__assert_file_name__ = \ - [NSString stringWithUTF8String:__FILE__]; \ - __assert_file_name__ = __assert_file_name__ ?: @""; \ - [[NSAssertionHandler currentHandler] \ - handleFailureInFunction:__assert_func_name__ \ - file:__assert_file_name__ \ - lineNumber:__LINE__ \ - description:__VA_ARGS__]; \ - } \ - } while(0) -#else // !defined(NS_BLOCK_ASSERTIONS) - #define _GTMDevAssert(condition, ...) do { } while (0) -#endif // !defined(NS_BLOCK_ASSERTIONS) - -#endif // _GTMDevAssert - -// _GTMCompileAssert -// -// Note: Software for current compilers should just use _Static_assert directly -// instead of this macro. -// -// _GTMCompileAssert is an assert that is meant to fire at compile time if you -// want to check things at compile instead of runtime. For example if you -// want to check that a wchar is 4 bytes instead of 2 you would use -// _GTMCompileAssert(sizeof(wchar_t) == 4, wchar_t_is_4_bytes_on_OS_X) -// Note that the second "arg" is not in quotes, and must be a valid processor -// symbol in it's own right (no spaces, punctuation etc). - -// Wrapping this in an #ifndef allows external groups to define their own -// compile time assert scheme. -#ifndef _GTMCompileAssert - #if __has_feature(c_static_assert) || __has_extension(c_static_assert) - #define _GTMCompileAssert(test, msg) _Static_assert((test), #msg) - #else - // Pre-Xcode 7 support. - // - // We got this technique from here: - // http://unixjunkie.blogspot.com/2007/10/better-compile-time-asserts_29.html - #define _GTMCompileAssertSymbolInner(line, msg) _GTMCOMPILEASSERT ## line ## __ ## msg - #define _GTMCompileAssertSymbol(line, msg) _GTMCompileAssertSymbolInner(line, msg) - #define _GTMCompileAssert(test, msg) \ - typedef char _GTMCompileAssertSymbol(__LINE__, msg) [ ((test) ? 1 : -1) ] - #endif // __has_feature(c_static_assert) || __has_extension(c_static_assert) -#endif // _GTMCompileAssert - -#pragma clang diagnostic pop - -// ---------------------------------------------------------------------------- -// CPP symbols defined based on the project settings so the GTM code has -// simple things to test against w/o scattering the knowledge of project -// setting through all the code. -// ---------------------------------------------------------------------------- - -// Provide a single constant CPP symbol that all of GTM uses for ifdefing -// iPhone code. -#if TARGET_OS_IPHONE // iPhone SDK - // For iPhone specific stuff - #define GTM_IPHONE_SDK 1 - #if TARGET_IPHONE_SIMULATOR - #define GTM_IPHONE_DEVICE 0 - #define GTM_IPHONE_SIMULATOR 1 - #else - #define GTM_IPHONE_DEVICE 1 - #define GTM_IPHONE_SIMULATOR 0 - #endif // TARGET_IPHONE_SIMULATOR - // By default, GTM has provided it's own unittesting support, define this - // to use the support provided by Xcode, especially for the Xcode4 support - // for unittesting. - #ifndef GTM_USING_XCTEST - #define GTM_USING_XCTEST 0 - #endif - #define GTM_MACOS_SDK 0 -#else - // For MacOS specific stuff - #define GTM_MACOS_SDK 1 - #define GTM_IPHONE_SDK 0 - #define GTM_IPHONE_SIMULATOR 0 - #define GTM_IPHONE_DEVICE 0 - #ifndef GTM_USING_XCTEST - #define GTM_USING_XCTEST 0 - #endif -#endif - -// Some of our own availability macros -#if GTM_MACOS_SDK -#define GTM_AVAILABLE_ONLY_ON_IPHONE UNAVAILABLE_ATTRIBUTE -#define GTM_AVAILABLE_ONLY_ON_MACOS -#else -#define GTM_AVAILABLE_ONLY_ON_IPHONE -#define GTM_AVAILABLE_ONLY_ON_MACOS UNAVAILABLE_ATTRIBUTE -#endif - -// GC was dropped by Apple, define the old constant incase anyone still keys -// off of it. -#ifndef GTM_SUPPORT_GC - #define GTM_SUPPORT_GC 0 -#endif - -// Some support for advanced clang static analysis functionality -#ifndef NS_RETURNS_RETAINED - #if __has_feature(attribute_ns_returns_retained) - #define NS_RETURNS_RETAINED __attribute__((ns_returns_retained)) - #else - #define NS_RETURNS_RETAINED - #endif -#endif - -#ifndef NS_RETURNS_NOT_RETAINED - #if __has_feature(attribute_ns_returns_not_retained) - #define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained)) - #else - #define NS_RETURNS_NOT_RETAINED - #endif -#endif - -#ifndef CF_RETURNS_RETAINED - #if __has_feature(attribute_cf_returns_retained) - #define CF_RETURNS_RETAINED __attribute__((cf_returns_retained)) - #else - #define CF_RETURNS_RETAINED - #endif -#endif - -#ifndef CF_RETURNS_NOT_RETAINED - #if __has_feature(attribute_cf_returns_not_retained) - #define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained)) - #else - #define CF_RETURNS_NOT_RETAINED - #endif -#endif - -#ifndef NS_CONSUMED - #if __has_feature(attribute_ns_consumed) - #define NS_CONSUMED __attribute__((ns_consumed)) - #else - #define NS_CONSUMED - #endif -#endif - -#ifndef CF_CONSUMED - #if __has_feature(attribute_cf_consumed) - #define CF_CONSUMED __attribute__((cf_consumed)) - #else - #define CF_CONSUMED - #endif -#endif - -#ifndef NS_CONSUMES_SELF - #if __has_feature(attribute_ns_consumes_self) - #define NS_CONSUMES_SELF __attribute__((ns_consumes_self)) - #else - #define NS_CONSUMES_SELF - #endif -#endif - -#ifndef GTM_NONNULL - #if defined(__has_attribute) - #if __has_attribute(nonnull) - #define GTM_NONNULL(x) __attribute__((nonnull x)) - #else - #define GTM_NONNULL(x) - #endif - #else - #define GTM_NONNULL(x) - #endif -#endif - -// Invalidates the initializer from which it's called. -#ifndef GTMInvalidateInitializer - #if __has_feature(objc_arc) - #define GTMInvalidateInitializer() \ - do { \ - [self class]; /* Avoid warning of dead store to |self|. */ \ - _GTMDevAssert(NO, @"Invalid initializer."); \ - return nil; \ - } while (0) - #else - #define GTMInvalidateInitializer() \ - do { \ - [self release]; \ - _GTMDevAssert(NO, @"Invalid initializer."); \ - return nil; \ - } while (0) - #endif -#endif - -#ifndef GTMCFAutorelease - // GTMCFAutorelease returns an id. In contrast, Apple's CFAutorelease returns - // a CFTypeRef. - #if __has_feature(objc_arc) - #define GTMCFAutorelease(x) CFBridgingRelease(x) - #else - #define GTMCFAutorelease(x) ([(id)x autorelease]) - #endif -#endif - -#ifdef __OBJC__ - - -// Macro to allow you to create NSStrings out of other macros. -// #define FOO foo -// NSString *fooString = GTM_NSSTRINGIFY(FOO); -#if !defined (GTM_NSSTRINGIFY) - #define GTM_NSSTRINGIFY_INNER(x) @#x - #define GTM_NSSTRINGIFY(x) GTM_NSSTRINGIFY_INNER(x) -#endif - -// ============================================================================ - -// GTM_SEL_STRING is for specifying selector (usually property) names to KVC -// or KVO methods. -// In debug it will generate warnings for undeclared selectors if -// -Wunknown-selector is turned on. -// In release it will have no runtime overhead. -#ifndef GTM_SEL_STRING - #ifdef DEBUG - #define GTM_SEL_STRING(selName) NSStringFromSelector(@selector(selName)) - #else - #define GTM_SEL_STRING(selName) @#selName - #endif // DEBUG -#endif // GTM_SEL_STRING - -#ifndef GTM_WEAK -#if __has_feature(objc_arc_weak) - // With ARC enabled, __weak means a reference that isn't implicitly - // retained. __weak objects are accessed through runtime functions, so - // they are zeroed out, but this requires OS X 10.7+. - // At clang r251041+, ARC-style zeroing weak references even work in - // non-ARC mode. - #define GTM_WEAK __weak - #elif __has_feature(objc_arc) - // ARC, but targeting 10.6 or older, where zeroing weak references don't - // exist. - #define GTM_WEAK __unsafe_unretained - #else - // With manual reference counting, __weak used to be silently ignored. - // clang r251041 gives it the ARC semantics instead. This means they - // now require a deployment target of 10.7, while some clients of GTM - // still target 10.6. In these cases, expand to __unsafe_unretained instead - #define GTM_WEAK - #endif -#endif - -#endif // __OBJC__ diff --git a/Pods/GoogleToolboxForMac/README.md b/Pods/GoogleToolboxForMac/README.md deleted file mode 100644 index 710560a..0000000 --- a/Pods/GoogleToolboxForMac/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# GTM: Google Toolbox for Mac # - -**Project site**
-**Discussion group** - -# Google Toolbox for Mac # - -A collection of source from different Google projects that may be of use to -developers working other iOS or OS X projects. - -If you find a problem/bug or want a new feature to be included in the Google -Toolbox for Mac, please join the -[discussion group](http://groups.google.com/group/google-toolbox-for-mac) -or submit an -[issue](https://github.com/google/google-toolbox-for-mac/issues). diff --git a/Pods/Headers/Private/AppAuth/AppAuth.h b/Pods/Headers/Private/AppAuth/AppAuth.h new file mode 120000 index 0000000..17ca74d --- /dev/null +++ b/Pods/Headers/Private/AppAuth/AppAuth.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuth.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/AppAuthCore.h b/Pods/Headers/Private/AppAuth/AppAuthCore.h new file mode 120000 index 0000000..06c9efb --- /dev/null +++ b/Pods/Headers/Private/AppAuth/AppAuthCore.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDAuthState+IOS.h b/Pods/Headers/Private/AppAuth/OIDAuthState+IOS.h new file mode 120000 index 0000000..70d728e --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDAuthState+IOS.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuth/iOS/OIDAuthState+IOS.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDAuthState.h b/Pods/Headers/Private/AppAuth/OIDAuthState.h new file mode 120000 index 0000000..2e742b1 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDAuthState.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDAuthState.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDAuthStateChangeDelegate.h b/Pods/Headers/Private/AppAuth/OIDAuthStateChangeDelegate.h new file mode 120000 index 0000000..ef4779a --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDAuthStateChangeDelegate.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDAuthStateChangeDelegate.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDAuthStateErrorDelegate.h b/Pods/Headers/Private/AppAuth/OIDAuthStateErrorDelegate.h new file mode 120000 index 0000000..7020e2a --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDAuthStateErrorDelegate.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDAuthStateErrorDelegate.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDAuthorizationRequest.h b/Pods/Headers/Private/AppAuth/OIDAuthorizationRequest.h new file mode 120000 index 0000000..74d40e7 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDAuthorizationRequest.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDAuthorizationRequest.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDAuthorizationResponse.h b/Pods/Headers/Private/AppAuth/OIDAuthorizationResponse.h new file mode 120000 index 0000000..d8272d9 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDAuthorizationResponse.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDAuthorizationResponse.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDAuthorizationService+IOS.h b/Pods/Headers/Private/AppAuth/OIDAuthorizationService+IOS.h new file mode 120000 index 0000000..e5b3230 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDAuthorizationService+IOS.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuth/iOS/OIDAuthorizationService+IOS.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDAuthorizationService.h b/Pods/Headers/Private/AppAuth/OIDAuthorizationService.h new file mode 120000 index 0000000..789e2cf --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDAuthorizationService.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDAuthorizationService.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDClientMetadataParameters.h b/Pods/Headers/Private/AppAuth/OIDClientMetadataParameters.h new file mode 120000 index 0000000..ac75ac1 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDClientMetadataParameters.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDClientMetadataParameters.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDDefines.h b/Pods/Headers/Private/AppAuth/OIDDefines.h new file mode 120000 index 0000000..b8ef0fc --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDDefines.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDDefines.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDEndSessionRequest.h b/Pods/Headers/Private/AppAuth/OIDEndSessionRequest.h new file mode 120000 index 0000000..8bdf633 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDEndSessionRequest.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDEndSessionRequest.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDEndSessionResponse.h b/Pods/Headers/Private/AppAuth/OIDEndSessionResponse.h new file mode 120000 index 0000000..c5f3cb7 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDEndSessionResponse.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDEndSessionResponse.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDError.h b/Pods/Headers/Private/AppAuth/OIDError.h new file mode 120000 index 0000000..0e7e18b --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDError.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDError.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDErrorUtilities.h b/Pods/Headers/Private/AppAuth/OIDErrorUtilities.h new file mode 120000 index 0000000..0b48da8 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDErrorUtilities.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDErrorUtilities.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDExternalUserAgent.h b/Pods/Headers/Private/AppAuth/OIDExternalUserAgent.h new file mode 120000 index 0000000..9f07cbd --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDExternalUserAgent.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDExternalUserAgent.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDExternalUserAgentCatalyst.h b/Pods/Headers/Private/AppAuth/OIDExternalUserAgentCatalyst.h new file mode 120000 index 0000000..752e921 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDExternalUserAgentCatalyst.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentCatalyst.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDExternalUserAgentIOS.h b/Pods/Headers/Private/AppAuth/OIDExternalUserAgentIOS.h new file mode 120000 index 0000000..edfdd30 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDExternalUserAgentIOS.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOS.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDExternalUserAgentIOSCustomBrowser.h b/Pods/Headers/Private/AppAuth/OIDExternalUserAgentIOSCustomBrowser.h new file mode 120000 index 0000000..27341a7 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDExternalUserAgentIOSCustomBrowser.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOSCustomBrowser.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDExternalUserAgentRequest.h b/Pods/Headers/Private/AppAuth/OIDExternalUserAgentRequest.h new file mode 120000 index 0000000..4f99bf5 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDExternalUserAgentRequest.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDExternalUserAgentRequest.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDExternalUserAgentSession.h b/Pods/Headers/Private/AppAuth/OIDExternalUserAgentSession.h new file mode 120000 index 0000000..2bb1ef6 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDExternalUserAgentSession.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDExternalUserAgentSession.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDFieldMapping.h b/Pods/Headers/Private/AppAuth/OIDFieldMapping.h new file mode 120000 index 0000000..5a31564 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDFieldMapping.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDFieldMapping.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDGrantTypes.h b/Pods/Headers/Private/AppAuth/OIDGrantTypes.h new file mode 120000 index 0000000..97e94f6 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDGrantTypes.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDGrantTypes.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDIDToken.h b/Pods/Headers/Private/AppAuth/OIDIDToken.h new file mode 120000 index 0000000..354d10a --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDIDToken.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDIDToken.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDRegistrationRequest.h b/Pods/Headers/Private/AppAuth/OIDRegistrationRequest.h new file mode 120000 index 0000000..df1698b --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDRegistrationRequest.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDRegistrationRequest.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDRegistrationResponse.h b/Pods/Headers/Private/AppAuth/OIDRegistrationResponse.h new file mode 120000 index 0000000..dd31d46 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDRegistrationResponse.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDRegistrationResponse.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDResponseTypes.h b/Pods/Headers/Private/AppAuth/OIDResponseTypes.h new file mode 120000 index 0000000..44b7943 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDResponseTypes.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDResponseTypes.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDScopeUtilities.h b/Pods/Headers/Private/AppAuth/OIDScopeUtilities.h new file mode 120000 index 0000000..44a28e8 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDScopeUtilities.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDScopeUtilities.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDScopes.h b/Pods/Headers/Private/AppAuth/OIDScopes.h new file mode 120000 index 0000000..2b52100 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDScopes.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDScopes.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDServiceConfiguration.h b/Pods/Headers/Private/AppAuth/OIDServiceConfiguration.h new file mode 120000 index 0000000..c4d1c1f --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDServiceConfiguration.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDServiceConfiguration.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDServiceDiscovery.h b/Pods/Headers/Private/AppAuth/OIDServiceDiscovery.h new file mode 120000 index 0000000..9ff518f --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDServiceDiscovery.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDServiceDiscovery.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDTokenRequest.h b/Pods/Headers/Private/AppAuth/OIDTokenRequest.h new file mode 120000 index 0000000..1460516 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDTokenRequest.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDTokenRequest.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDTokenResponse.h b/Pods/Headers/Private/AppAuth/OIDTokenResponse.h new file mode 120000 index 0000000..b61b2fc --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDTokenResponse.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDTokenResponse.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDTokenUtilities.h b/Pods/Headers/Private/AppAuth/OIDTokenUtilities.h new file mode 120000 index 0000000..2513a40 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDTokenUtilities.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDTokenUtilities.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDURLQueryComponent.h b/Pods/Headers/Private/AppAuth/OIDURLQueryComponent.h new file mode 120000 index 0000000..1391359 --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDURLQueryComponent.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDURLQueryComponent.h \ No newline at end of file diff --git a/Pods/Headers/Private/AppAuth/OIDURLSessionProvider.h b/Pods/Headers/Private/AppAuth/OIDURLSessionProvider.h new file mode 120000 index 0000000..cad2dbf --- /dev/null +++ b/Pods/Headers/Private/AppAuth/OIDURLSessionProvider.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDURLSessionProvider.h \ No newline at end of file diff --git a/Pods/Headers/Private/GTMAppAuth/GTMAppAuth.h b/Pods/Headers/Private/GTMAppAuth/GTMAppAuth.h new file mode 120000 index 0000000..4c6754a --- /dev/null +++ b/Pods/Headers/Private/GTMAppAuth/GTMAppAuth.h @@ -0,0 +1 @@ +../../../GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuth.h \ No newline at end of file diff --git a/Pods/Headers/Private/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h b/Pods/Headers/Private/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h new file mode 120000 index 0000000..53cec1f --- /dev/null +++ b/Pods/Headers/Private/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h @@ -0,0 +1 @@ +../../../GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h \ No newline at end of file diff --git a/Pods/Headers/Private/GTMAppAuth/GTMAppAuthFetcherAuthorization.h b/Pods/Headers/Private/GTMAppAuth/GTMAppAuthFetcherAuthorization.h new file mode 120000 index 0000000..3ea271b --- /dev/null +++ b/Pods/Headers/Private/GTMAppAuth/GTMAppAuthFetcherAuthorization.h @@ -0,0 +1 @@ +../../../GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization.h \ No newline at end of file diff --git a/Pods/Headers/Private/GTMAppAuth/GTMKeychain.h b/Pods/Headers/Private/GTMAppAuth/GTMKeychain.h new file mode 120000 index 0000000..858bb73 --- /dev/null +++ b/Pods/Headers/Private/GTMAppAuth/GTMKeychain.h @@ -0,0 +1 @@ +../../../GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMKeychain.h \ No newline at end of file diff --git a/Pods/Headers/Private/GTMAppAuth/GTMOAuth2KeychainCompatibility.h b/Pods/Headers/Private/GTMAppAuth/GTMOAuth2KeychainCompatibility.h new file mode 120000 index 0000000..24c5367 --- /dev/null +++ b/Pods/Headers/Private/GTMAppAuth/GTMOAuth2KeychainCompatibility.h @@ -0,0 +1 @@ +../../../GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMOAuth2KeychainCompatibility.h \ No newline at end of file diff --git a/Pods/Headers/Private/GoogleToolboxForMac/GTMDebugSelectorValidation.h b/Pods/Headers/Private/GoogleToolboxForMac/GTMDebugSelectorValidation.h deleted file mode 120000 index 521da72..0000000 --- a/Pods/Headers/Private/GoogleToolboxForMac/GTMDebugSelectorValidation.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleToolboxForMac/DebugUtils/GTMDebugSelectorValidation.h \ No newline at end of file diff --git a/Pods/Headers/Private/GoogleToolboxForMac/GTMDebugThreadValidation.h b/Pods/Headers/Private/GoogleToolboxForMac/GTMDebugThreadValidation.h deleted file mode 120000 index de29ea1..0000000 --- a/Pods/Headers/Private/GoogleToolboxForMac/GTMDebugThreadValidation.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleToolboxForMac/DebugUtils/GTMDebugThreadValidation.h \ No newline at end of file diff --git a/Pods/Headers/Private/GoogleToolboxForMac/GTMDefines.h b/Pods/Headers/Private/GoogleToolboxForMac/GTMDefines.h deleted file mode 120000 index 5503110..0000000 --- a/Pods/Headers/Private/GoogleToolboxForMac/GTMDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleToolboxForMac/GTMDefines.h \ No newline at end of file diff --git a/Pods/Headers/Private/GoogleToolboxForMac/GTMMethodCheck.h b/Pods/Headers/Private/GoogleToolboxForMac/GTMMethodCheck.h deleted file mode 120000 index 56dfa7e..0000000 --- a/Pods/Headers/Private/GoogleToolboxForMac/GTMMethodCheck.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleToolboxForMac/DebugUtils/GTMMethodCheck.h \ No newline at end of file diff --git a/Pods/Headers/Private/GoogleToolboxForMac/GTMNSDictionary+URLArguments.h b/Pods/Headers/Private/GoogleToolboxForMac/GTMNSDictionary+URLArguments.h deleted file mode 120000 index b2ff829..0000000 --- a/Pods/Headers/Private/GoogleToolboxForMac/GTMNSDictionary+URLArguments.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.h \ No newline at end of file diff --git a/Pods/Headers/Private/GoogleToolboxForMac/GTMNSString+URLArguments.h b/Pods/Headers/Private/GoogleToolboxForMac/GTMNSString+URLArguments.h deleted file mode 120000 index 3b9b1a2..0000000 --- a/Pods/Headers/Private/GoogleToolboxForMac/GTMNSString+URLArguments.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/AppAuth-umbrella.h b/Pods/Headers/Public/AppAuth/AppAuth-umbrella.h new file mode 120000 index 0000000..8519fd8 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/AppAuth-umbrella.h @@ -0,0 +1 @@ +../../../Target Support Files/AppAuth/AppAuth-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/AppAuth.h b/Pods/Headers/Public/AppAuth/AppAuth.h new file mode 120000 index 0000000..17ca74d --- /dev/null +++ b/Pods/Headers/Public/AppAuth/AppAuth.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuth.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/AppAuth.modulemap b/Pods/Headers/Public/AppAuth/AppAuth.modulemap new file mode 120000 index 0000000..d196ba4 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/AppAuth.modulemap @@ -0,0 +1 @@ +../../../Target Support Files/AppAuth/AppAuth.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/AppAuthCore.h b/Pods/Headers/Public/AppAuth/AppAuthCore.h new file mode 120000 index 0000000..06c9efb --- /dev/null +++ b/Pods/Headers/Public/AppAuth/AppAuthCore.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDAuthState+IOS.h b/Pods/Headers/Public/AppAuth/OIDAuthState+IOS.h new file mode 120000 index 0000000..70d728e --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDAuthState+IOS.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuth/iOS/OIDAuthState+IOS.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDAuthState.h b/Pods/Headers/Public/AppAuth/OIDAuthState.h new file mode 120000 index 0000000..2e742b1 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDAuthState.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDAuthState.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDAuthStateChangeDelegate.h b/Pods/Headers/Public/AppAuth/OIDAuthStateChangeDelegate.h new file mode 120000 index 0000000..ef4779a --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDAuthStateChangeDelegate.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDAuthStateChangeDelegate.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDAuthStateErrorDelegate.h b/Pods/Headers/Public/AppAuth/OIDAuthStateErrorDelegate.h new file mode 120000 index 0000000..7020e2a --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDAuthStateErrorDelegate.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDAuthStateErrorDelegate.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDAuthorizationRequest.h b/Pods/Headers/Public/AppAuth/OIDAuthorizationRequest.h new file mode 120000 index 0000000..74d40e7 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDAuthorizationRequest.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDAuthorizationRequest.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDAuthorizationResponse.h b/Pods/Headers/Public/AppAuth/OIDAuthorizationResponse.h new file mode 120000 index 0000000..d8272d9 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDAuthorizationResponse.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDAuthorizationResponse.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDAuthorizationService+IOS.h b/Pods/Headers/Public/AppAuth/OIDAuthorizationService+IOS.h new file mode 120000 index 0000000..e5b3230 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDAuthorizationService+IOS.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuth/iOS/OIDAuthorizationService+IOS.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDAuthorizationService.h b/Pods/Headers/Public/AppAuth/OIDAuthorizationService.h new file mode 120000 index 0000000..789e2cf --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDAuthorizationService.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDAuthorizationService.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDClientMetadataParameters.h b/Pods/Headers/Public/AppAuth/OIDClientMetadataParameters.h new file mode 120000 index 0000000..ac75ac1 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDClientMetadataParameters.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDClientMetadataParameters.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDDefines.h b/Pods/Headers/Public/AppAuth/OIDDefines.h new file mode 120000 index 0000000..b8ef0fc --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDDefines.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDDefines.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDEndSessionRequest.h b/Pods/Headers/Public/AppAuth/OIDEndSessionRequest.h new file mode 120000 index 0000000..8bdf633 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDEndSessionRequest.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDEndSessionRequest.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDEndSessionResponse.h b/Pods/Headers/Public/AppAuth/OIDEndSessionResponse.h new file mode 120000 index 0000000..c5f3cb7 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDEndSessionResponse.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDEndSessionResponse.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDError.h b/Pods/Headers/Public/AppAuth/OIDError.h new file mode 120000 index 0000000..0e7e18b --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDError.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDError.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDErrorUtilities.h b/Pods/Headers/Public/AppAuth/OIDErrorUtilities.h new file mode 120000 index 0000000..0b48da8 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDErrorUtilities.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDErrorUtilities.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDExternalUserAgent.h b/Pods/Headers/Public/AppAuth/OIDExternalUserAgent.h new file mode 120000 index 0000000..9f07cbd --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDExternalUserAgent.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDExternalUserAgent.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDExternalUserAgentCatalyst.h b/Pods/Headers/Public/AppAuth/OIDExternalUserAgentCatalyst.h new file mode 120000 index 0000000..752e921 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDExternalUserAgentCatalyst.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentCatalyst.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDExternalUserAgentIOS.h b/Pods/Headers/Public/AppAuth/OIDExternalUserAgentIOS.h new file mode 120000 index 0000000..edfdd30 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDExternalUserAgentIOS.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOS.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDExternalUserAgentIOSCustomBrowser.h b/Pods/Headers/Public/AppAuth/OIDExternalUserAgentIOSCustomBrowser.h new file mode 120000 index 0000000..27341a7 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDExternalUserAgentIOSCustomBrowser.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOSCustomBrowser.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDExternalUserAgentRequest.h b/Pods/Headers/Public/AppAuth/OIDExternalUserAgentRequest.h new file mode 120000 index 0000000..4f99bf5 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDExternalUserAgentRequest.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDExternalUserAgentRequest.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDExternalUserAgentSession.h b/Pods/Headers/Public/AppAuth/OIDExternalUserAgentSession.h new file mode 120000 index 0000000..2bb1ef6 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDExternalUserAgentSession.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDExternalUserAgentSession.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDFieldMapping.h b/Pods/Headers/Public/AppAuth/OIDFieldMapping.h new file mode 120000 index 0000000..5a31564 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDFieldMapping.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDFieldMapping.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDGrantTypes.h b/Pods/Headers/Public/AppAuth/OIDGrantTypes.h new file mode 120000 index 0000000..97e94f6 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDGrantTypes.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDGrantTypes.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDIDToken.h b/Pods/Headers/Public/AppAuth/OIDIDToken.h new file mode 120000 index 0000000..354d10a --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDIDToken.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDIDToken.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDRegistrationRequest.h b/Pods/Headers/Public/AppAuth/OIDRegistrationRequest.h new file mode 120000 index 0000000..df1698b --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDRegistrationRequest.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDRegistrationRequest.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDRegistrationResponse.h b/Pods/Headers/Public/AppAuth/OIDRegistrationResponse.h new file mode 120000 index 0000000..dd31d46 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDRegistrationResponse.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDRegistrationResponse.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDResponseTypes.h b/Pods/Headers/Public/AppAuth/OIDResponseTypes.h new file mode 120000 index 0000000..44b7943 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDResponseTypes.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDResponseTypes.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDScopeUtilities.h b/Pods/Headers/Public/AppAuth/OIDScopeUtilities.h new file mode 120000 index 0000000..44a28e8 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDScopeUtilities.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDScopeUtilities.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDScopes.h b/Pods/Headers/Public/AppAuth/OIDScopes.h new file mode 120000 index 0000000..2b52100 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDScopes.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDScopes.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDServiceConfiguration.h b/Pods/Headers/Public/AppAuth/OIDServiceConfiguration.h new file mode 120000 index 0000000..c4d1c1f --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDServiceConfiguration.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDServiceConfiguration.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDServiceDiscovery.h b/Pods/Headers/Public/AppAuth/OIDServiceDiscovery.h new file mode 120000 index 0000000..9ff518f --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDServiceDiscovery.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDServiceDiscovery.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDTokenRequest.h b/Pods/Headers/Public/AppAuth/OIDTokenRequest.h new file mode 120000 index 0000000..1460516 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDTokenRequest.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDTokenRequest.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDTokenResponse.h b/Pods/Headers/Public/AppAuth/OIDTokenResponse.h new file mode 120000 index 0000000..b61b2fc --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDTokenResponse.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDTokenResponse.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDTokenUtilities.h b/Pods/Headers/Public/AppAuth/OIDTokenUtilities.h new file mode 120000 index 0000000..2513a40 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDTokenUtilities.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDTokenUtilities.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDURLQueryComponent.h b/Pods/Headers/Public/AppAuth/OIDURLQueryComponent.h new file mode 120000 index 0000000..1391359 --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDURLQueryComponent.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDURLQueryComponent.h \ No newline at end of file diff --git a/Pods/Headers/Public/AppAuth/OIDURLSessionProvider.h b/Pods/Headers/Public/AppAuth/OIDURLSessionProvider.h new file mode 120000 index 0000000..cad2dbf --- /dev/null +++ b/Pods/Headers/Public/AppAuth/OIDURLSessionProvider.h @@ -0,0 +1 @@ +../../../AppAuth/Source/AppAuthCore/OIDURLSessionProvider.h \ No newline at end of file diff --git a/Pods/Headers/Public/GTMAppAuth/GTMAppAuth-umbrella.h b/Pods/Headers/Public/GTMAppAuth/GTMAppAuth-umbrella.h new file mode 120000 index 0000000..5a207d5 --- /dev/null +++ b/Pods/Headers/Public/GTMAppAuth/GTMAppAuth-umbrella.h @@ -0,0 +1 @@ +../../../Target Support Files/GTMAppAuth/GTMAppAuth-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/GTMAppAuth/GTMAppAuth.h b/Pods/Headers/Public/GTMAppAuth/GTMAppAuth.h new file mode 120000 index 0000000..4c6754a --- /dev/null +++ b/Pods/Headers/Public/GTMAppAuth/GTMAppAuth.h @@ -0,0 +1 @@ +../../../GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuth.h \ No newline at end of file diff --git a/Pods/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap b/Pods/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap new file mode 120000 index 0000000..0dd32d2 --- /dev/null +++ b/Pods/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap @@ -0,0 +1 @@ +../../../Target Support Files/GTMAppAuth/GTMAppAuth.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h b/Pods/Headers/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h new file mode 120000 index 0000000..53cec1f --- /dev/null +++ b/Pods/Headers/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h @@ -0,0 +1 @@ +../../../GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h \ No newline at end of file diff --git a/Pods/Headers/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization.h b/Pods/Headers/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization.h new file mode 120000 index 0000000..3ea271b --- /dev/null +++ b/Pods/Headers/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization.h @@ -0,0 +1 @@ +../../../GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization.h \ No newline at end of file diff --git a/Pods/Headers/Public/GTMAppAuth/GTMKeychain.h b/Pods/Headers/Public/GTMAppAuth/GTMKeychain.h new file mode 120000 index 0000000..858bb73 --- /dev/null +++ b/Pods/Headers/Public/GTMAppAuth/GTMKeychain.h @@ -0,0 +1 @@ +../../../GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMKeychain.h \ No newline at end of file diff --git a/Pods/Headers/Public/GTMAppAuth/GTMOAuth2KeychainCompatibility.h b/Pods/Headers/Public/GTMAppAuth/GTMOAuth2KeychainCompatibility.h new file mode 120000 index 0000000..24c5367 --- /dev/null +++ b/Pods/Headers/Public/GTMAppAuth/GTMOAuth2KeychainCompatibility.h @@ -0,0 +1 @@ +../../../GTMAppAuth/GTMAppAuth/Sources/Public/GTMAppAuth/GTMOAuth2KeychainCompatibility.h \ No newline at end of file diff --git a/Pods/Headers/Public/GoogleToolboxForMac/GTMDebugSelectorValidation.h b/Pods/Headers/Public/GoogleToolboxForMac/GTMDebugSelectorValidation.h deleted file mode 120000 index 521da72..0000000 --- a/Pods/Headers/Public/GoogleToolboxForMac/GTMDebugSelectorValidation.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleToolboxForMac/DebugUtils/GTMDebugSelectorValidation.h \ No newline at end of file diff --git a/Pods/Headers/Public/GoogleToolboxForMac/GTMDebugThreadValidation.h b/Pods/Headers/Public/GoogleToolboxForMac/GTMDebugThreadValidation.h deleted file mode 120000 index de29ea1..0000000 --- a/Pods/Headers/Public/GoogleToolboxForMac/GTMDebugThreadValidation.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleToolboxForMac/DebugUtils/GTMDebugThreadValidation.h \ No newline at end of file diff --git a/Pods/Headers/Public/GoogleToolboxForMac/GTMDefines.h b/Pods/Headers/Public/GoogleToolboxForMac/GTMDefines.h deleted file mode 120000 index 5503110..0000000 --- a/Pods/Headers/Public/GoogleToolboxForMac/GTMDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleToolboxForMac/GTMDefines.h \ No newline at end of file diff --git a/Pods/Headers/Public/GoogleToolboxForMac/GTMMethodCheck.h b/Pods/Headers/Public/GoogleToolboxForMac/GTMMethodCheck.h deleted file mode 120000 index 56dfa7e..0000000 --- a/Pods/Headers/Public/GoogleToolboxForMac/GTMMethodCheck.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleToolboxForMac/DebugUtils/GTMMethodCheck.h \ No newline at end of file diff --git a/Pods/Headers/Public/GoogleToolboxForMac/GTMNSDictionary+URLArguments.h b/Pods/Headers/Public/GoogleToolboxForMac/GTMNSDictionary+URLArguments.h deleted file mode 120000 index b2ff829..0000000 --- a/Pods/Headers/Public/GoogleToolboxForMac/GTMNSDictionary+URLArguments.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleToolboxForMac/Foundation/GTMNSDictionary+URLArguments.h \ No newline at end of file diff --git a/Pods/Headers/Public/GoogleToolboxForMac/GTMNSString+URLArguments.h b/Pods/Headers/Public/GoogleToolboxForMac/GTMNSString+URLArguments.h deleted file mode 120000 index 3b9b1a2..0000000 --- a/Pods/Headers/Public/GoogleToolboxForMac/GTMNSString+URLArguments.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleToolboxForMac/Foundation/GTMNSString+URLArguments.h \ No newline at end of file diff --git a/Pods/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac-umbrella.h b/Pods/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac-umbrella.h deleted file mode 120000 index bfa2f5b..0000000 --- a/Pods/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap b/Pods/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap deleted file mode 120000 index 7c9b1d3..0000000 --- a/Pods/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap \ No newline at end of file diff --git a/Pods/Local Podspecs/Harmony.podspec.json b/Pods/Local Podspecs/Harmony.podspec.json index e2db144..1ab3c93 100644 --- a/Pods/Local Podspecs/Harmony.podspec.json +++ b/Pods/Local Podspecs/Harmony.podspec.json @@ -44,7 +44,7 @@ "~> 1.3.0" ], "GoogleSignIn": [ - "~> 4.4.0" + "~> 5.0" ] } } diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 9de5bcc..d58ac8a 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,5 +1,11 @@ PODS: - Alamofire (4.7.3) + - AppAuth (1.6.2): + - AppAuth/Core (= 1.6.2) + - AppAuth/ExternalUserAgent (= 1.6.2) + - AppAuth/Core (1.6.2) + - AppAuth/ExternalUserAgent (1.6.2): + - AppAuth/Core - Crashlytics (3.8.6): - Fabric (~> 1.6.3) - DeltaCore (0.1): @@ -16,30 +22,25 @@ PODS: - GoogleAPIClientForREST/Drive (1.3.11): - GoogleAPIClientForREST/Core - GTMSessionFetcher (>= 1.1.7) - - GoogleSignIn (4.4.0): - - "GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)" - - "GoogleToolboxForMac/NSString+URLArguments (~> 2.1)" + - GoogleSignIn (5.0.2): + - AppAuth (~> 1.2) + - GTMAppAuth (~> 1.0) - GTMSessionFetcher/Core (~> 1.1) - - GoogleToolboxForMac/DebugUtils (2.3.0): - - GoogleToolboxForMac/Defines (= 2.3.0) - - GoogleToolboxForMac/Defines (2.3.0) - - "GoogleToolboxForMac/NSDictionary+URLArguments (2.3.0)": - - GoogleToolboxForMac/DebugUtils (= 2.3.0) - - GoogleToolboxForMac/Defines (= 2.3.0) - - "GoogleToolboxForMac/NSString+URLArguments (= 2.3.0)" - - "GoogleToolboxForMac/NSString+URLArguments (2.3.0)" - - GTMSessionFetcher (1.5.0): - - GTMSessionFetcher/Full (= 1.5.0) - - GTMSessionFetcher/Core (1.5.0) - - GTMSessionFetcher/Full (1.5.0): - - GTMSessionFetcher/Core (= 1.5.0) + - GTMAppAuth (1.3.1): + - AppAuth/Core (~> 1.6) + - GTMSessionFetcher/Core (< 3.0, >= 1.5) + - GTMSessionFetcher (1.7.2): + - GTMSessionFetcher/Full (= 1.7.2) + - GTMSessionFetcher/Core (1.7.2) + - GTMSessionFetcher/Full (1.7.2): + - GTMSessionFetcher/Core (= 1.7.2) - Harmony (0.1): - Harmony/Harmony-Drive (= 0.1) - Harmony/Harmony-Dropbox (= 0.1) - Roxas - Harmony/Harmony-Drive (0.1): - GoogleAPIClientForREST/Drive (~> 1.3.0) - - GoogleSignIn (~> 4.4.0) + - GoogleSignIn (~> 5.0) - Roxas - Harmony/Harmony-Dropbox (0.1): - Roxas @@ -90,11 +91,12 @@ DEPENDENCIES: SPEC REPOS: trunk: - Alamofire + - AppAuth - Crashlytics - Fabric - GoogleAPIClientForREST - GoogleSignIn - - GoogleToolboxForMac + - GTMAppAuth - GTMSessionFetcher - SDWebImage - SMCalloutView @@ -126,6 +128,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Alamofire: c7287b6e5d7da964a70935e5db17046b7fde6568 + AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570 Crashlytics: e156f27e43abaa331f9b7afed091bda37e1052cc DeltaCore: 6a430005ea397fcd5b40b964effe41ac69cc9037 DSDeltaCore: d22a7cfbbe70f063b8c72dec9d1bcd2c59e14893 @@ -133,10 +136,10 @@ SPEC CHECKSUMS: GBADeltaCore: c2f7ce5e5616ed63d2b99c9ba9a7e020f2263248 GBCDeltaCore: 27f09a1c88a4ac832aa549fbe34aaf277251b6b8 GoogleAPIClientForREST: 0f19a8280dfe6471f76016645d26eb5dae305101 - GoogleSignIn: 7ff245e1a7b26d379099d3243a562f5747e23d39 - GoogleToolboxForMac: 1350d40e86a76f7863928d63bcb0b89c84c521c5 - GTMSessionFetcher: b3503b20a988c4e20cc189aa798fd18220133f52 - Harmony: cea514db17c41c22f78f54b17d2135935b5e9b96 + GoogleSignIn: 7137d297ddc022a7e0aa4619c86d72c909fa7213 + GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd + GTMSessionFetcher: 5595ec75acf5be50814f81e9189490412bad82ba + Harmony: 5fdc51d0a4f2ce7dcd4439becbbdda1fac4c9e3f MelonDSDeltaCore: 46193f4fd88e4e18e4a5c841b1ae02dc46d1daa6 N64DeltaCore: 4eeb468746722952bcd5467ecb9ebe7df070f53a NESDeltaCore: ffae3bba878fc505bac0914150a695ede7bc9550 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index f06575b..a1a1db7 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -9,7 +9,7 @@ /* Begin PBXAggregateTarget section */ ABB048B191245233986A7CD75FE412A5 /* Fabric */ = { isa = PBXAggregateTarget; - buildConfigurationList = 805B5427221266F71215E9B07475DEA2 /* Build configuration list for PBXAggregateTarget "Fabric" */; + buildConfigurationList = 9E6DB1521B0E70E19837DEBD076BBA65 /* Build configuration list for PBXAggregateTarget "Fabric" */; buildPhases = ( ); dependencies = ( @@ -22,18 +22,19 @@ buildPhases = ( ); dependencies = ( - 92B9F5E8D3E73AE67DA059BD1DD64971 /* PBXTargetDependency */, + 655992D7858FD1631A422614964D45EB /* PBXTargetDependency */, ); name = Crashlytics; }; CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */ = { isa = PBXAggregateTarget; - buildConfigurationList = A118FE5B7C9EE53DE03038A50E9AA1E6 /* Build configuration list for PBXAggregateTarget "GoogleSignIn" */; + buildConfigurationList = 7F982436D96A9F7AAE7AE29D12E88120 /* Build configuration list for PBXAggregateTarget "GoogleSignIn" */; buildPhases = ( ); dependencies = ( - 420897733B4221E4B229485056E9AB67 /* PBXTargetDependency */, - 9A23BF2FC5BB2F51E9A1F9641F86F039 /* PBXTargetDependency */, + 547EFA0ADCC0D6673B8CDDFC280D9AF8 /* PBXTargetDependency */, + 9E5CCE42DF46DD3F93D485B02E434F67 /* PBXTargetDependency */, + AF715CCE98D639D19C6A69D30D666B95 /* PBXTargetDependency */, ); name = GoogleSignIn; }; @@ -45,89 +46,101 @@ 004E5B9E30FDFA7B2BFE774115EC8E24 /* Vector2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 25C73FB51C8BC62E6168E00A2CC8D348 /* Vector2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 009CEE29FFED936694AE3E77EBC73D2F /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = 811FC2EA0A1D4C9E7DB2ED5BE38AF9C1 /* util.h */; settings = {ATTRIBUTES = (Project, ); }; }; 00BBCF1441B559DED3BAD4FCA6BDDAA4 /* Utf.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 017670791A14475CEA27446F506F974D /* Utf.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 00EB734EAB20589A5EA9DED4A965B6BF /* OIDEndSessionRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E46C56B92BDA7292006F96168CEEED5 /* OIDEndSessionRequest.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 00F2945755EE6C95678DF712C2284604 /* GBALink.h in Headers */ = {isa = PBXBuildFile; fileRef = 74649BDF8639556695E5571599771679 /* GBALink.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 01099FBC15BB56E1BD96D357894737EF /* RSTLaunchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F034FA259711BD2D0D0F5F9E367780E9 /* RSTLaunchViewController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 00F71D33E715A190A61A1FD67B322378 /* RSTError.h in Headers */ = {isa = PBXBuildFile; fileRef = CED38382667C264AA0CDCC9A96F9E713 /* RSTError.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0110DAD96B2833B50B427AE1FEFF89E7 /* RemoteFile+Dropbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 589073BC91C57152BEF9DF66EE60BDE1 /* RemoteFile+Dropbox.swift */; }; 011BC76602446E5BC63B7B61E5F1B61F /* zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D839771AD6266616548B689C98C152B /* zlib.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 011E0B9DF0242E6ED90A37B19AD3B16C /* OIDServiceDiscovery.m in Sources */ = {isa = PBXBuildFile; fileRef = AEE900D97CC8D857A6CBCA6C6122BFE2 /* OIDServiceDiscovery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 012659F0D8C5C99B6B48744FD85AE906 /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E8088F5565B53ACC65BE005156ACE8 /* pngget.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 01D52A7751AA9A6FA2CACE72167A6B73 /* GTLRUploadParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FB01D09B653BA294A2E5E980D435892 /* GTLRUploadParameters.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 01D52A7751AA9A6FA2CACE72167A6B73 /* GTLRUploadParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = C8BD415C13FB4C499F0890A3714FD956 /* GTLRUploadParameters.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 02150BCCCFB75CA7716A2D96A651203D /* ftlcdfil.h in Headers */ = {isa = PBXBuildFile; fileRef = E66B7B043452B92B922E437CDE08AB94 /* ftlcdfil.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0264C8CEA55AAE719B98A79717689E84 /* DropboxTransportClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4E7CE62FA7A699F92E7E3872EA98545 /* DropboxTransportClient.swift */; }; 0267E84CAE3CAAD1585F33FF04F206CE /* ftcalc.h in Headers */ = {isa = PBXBuildFile; fileRef = 7003747C317E358B598ECB582505C2B9 /* ftcalc.h */; settings = {ATTRIBUTES = (Project, ); }; }; 02C5ECC32B709AB9DF29ABB698AF3A98 /* Wifi.h in Headers */ = {isa = PBXBuildFile; fileRef = EA15AD45986BF90EF1E1B9AA516D4A70 /* Wifi.h */; settings = {ATTRIBUTES = (Project, ); }; }; 02DAFEBD11913D9980462E57DDB9E9CC /* Result+Drive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C3D3667F3DFE4781D8B3B2658DF79E /* Result+Drive.swift */; }; 02E7B7DA79046CD60FC59A05836BDD97 /* NstBoard.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F0B26FD30408F970024BEC8E089E4BA4 /* NstBoard.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 03062065C2110BE8FF84C9C0269F7C2E /* N64DeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CE0692DFDB826DC47131EF92FFE1618F /* N64DeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 030CF210599016EB9D45ABCA6E9F816C /* TransportConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 874D46F582C919DAECAE2F7A7A611809 /* TransportConfig.swift */; }; + 032B7AC4D31DD6F3839787A6FC93F8B4 /* OIDExternalUserAgentIOSCustomBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = EAB1D6A53015FCCF416370C8C413C827 /* OIDExternalUserAgentIOSCustomBrowser.h */; settings = {ATTRIBUTES = (Project, ); }; }; 035DE2C6259AD6A2633437A4700931D5 /* Performance.h in Headers */ = {isa = PBXBuildFile; fileRef = AA495E205457383DB9EAD1BF06190FDF /* Performance.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0373A79163CB89C454C70ACA39938381 /* NstBoardKonamiVrc3.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7A3FB29F31D9C72AEF1108F15ED0F102 /* NstBoardKonamiVrc3.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 0394281163A0B4BD82AA42D13FF3CE71 /* commandline.h in Headers */ = {isa = PBXBuildFile; fileRef = 639E4A72009647184186830A27020CFA /* commandline.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0394BE553E013C532C98B9B701647630 /* NstPins.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 42D809A7248EAA3C75D32A0875CD3E2B /* NstPins.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 039B793FB6FB648EB624A05BF273B5D2 /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61EE3CF1533FE896277A8399AB5697AE /* DispatchQueue+Alamofire.swift */; }; + 039B793FB6FB648EB624A05BF273B5D2 /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B76D0275A850219FC0DB8E28690133C /* DispatchQueue+Alamofire.swift */; }; 03A108DEE9C5C11C92E08383FFD53067 /* NstInpPokkunMoguraa.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 11A7287EE06F5FE2740FE9A1CAF92760 /* NstInpPokkunMoguraa.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 03B27781E35C098E1B9B99FF5E61C0C0 /* ringbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = FB79D49FEEADDF6A31447B8F3392099B /* ringbuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 03E75BB8FEEA2FCB96FB9A56E2697313 /* getopt.h in Headers */ = {isa = PBXBuildFile; fileRef = 493BDC001AB8FCF2899F9370590EF3C7 /* getopt.h */; settings = {ATTRIBUTES = (Project, ); }; }; 03F69E1B6A8FE4C726F20F3808FFC4FB /* pngdebug.h in Headers */ = {isa = PBXBuildFile; fileRef = B380DE90CB179CA5CD21009426F6A5F0 /* pngdebug.h */; settings = {ATTRIBUTES = (Project, ); }; }; 041920E196894524658E07E3C6D256C7 /* svttcmap.h in Headers */ = {isa = PBXBuildFile; fileRef = B33762C748AB5B7F0B32AE35396BD1B4 /* svttcmap.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 04355D0C6987871B51778FD9E8F696F9 /* OIDURLQueryComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 932A82F9F802EF94A7D26B14C4810B49 /* OIDURLQueryComponent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 04380BD67BEFB218B47975BFF94C4B77 /* Auth.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9F908C0B56B67657D5675D61E51B242 /* Auth.swift */; }; 0461286FA38D935C5F072AE369C4B744 /* TextureFilters_xbrz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B491F193F0E7C08E3D5835D0EC6C8663 /* TextureFilters_xbrz.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 04854F45BCD6A1598EF8FD9F49774F02 /* NstInpBandaiHyperShot.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6DCA8DE46094D93D094469CF3789EDFD /* NstInpBandaiHyperShot.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 04BB42EECBFAE435FE44D975FA4682E8 /* UIImage+Manipulation.h in Headers */ = {isa = PBXBuildFile; fileRef = 6038A3E16A86BD8715BB972CD9A02CFD /* UIImage+Manipulation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0524C9763C562C062ABE202AB08FA1CA /* F3DZEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = 3374EEE9DE762478FB108577A45A36D2 /* F3DZEX2.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0536F9FB5C3E02848D7C196D8E673908 /* NstBoardUnlN625092.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2BC96C69F0777BA6CF116E30A45DB1FB /* NstBoardUnlN625092.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 05B07BC4DED95311EA2B62CF28996774 /* NstBoardBmc150in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 309F30534E2673B0504A148002C4BE88 /* NstBoardBmc150in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 05DAAFFB5F6882E12B132CB368C7DC23 /* Roxas-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E216815BF6887E071400BA9F9EC1309 /* Roxas-dummy.m */; }; 05E731F2673FFFAF636E06B89693DAB8 /* opengl_ColorBufferReaderWithBufferStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = CE78A65434CC7B5A569BDA6008543CB2 /* opengl_ColorBufferReaderWithBufferStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; 05EAE0E6113FE50F26E9BB852971C47D /* Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB7BCA1A53C8996DE41676BCFE8A7EEE /* Account.swift */; }; 0607391166E576D57529A8213C27EE2B /* ioapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 863EBFD88D51BDD8A33265E1BFD3C862 /* ioapi.h */; settings = {ATTRIBUTES = (Project, ); }; }; 062BA2589E8B636944D022B1D2A74521 /* screenshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 83512F1D34AE91977D202DBA42BE83C9 /* screenshot.h */; settings = {ATTRIBUTES = (Project, ); }; }; 064D700E9E9DCFCBD9F83A6924A0B2FB /* GPU.h in Headers */ = {isa = PBXBuildFile; fileRef = 532EBD7F18EC49C1878B6CF0BA4F38E0 /* GPU.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 06AFD3537B6ACECFF730CD982AF618EE /* SDKConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AAA640AFD19E6EFC758E877BB143972 /* SDKConstants.swift */; }; 06E6996BA8F1EC57B8F0DEC22D7F3953 /* OGLFT.h in Headers */ = {isa = PBXBuildFile; fileRef = 276E878302AEACCC6E7DBDF027635C08 /* OGLFT.h */; settings = {ATTRIBUTES = (Project, ); }; }; 06F8DBEA4D853FFBE22D99A5A1B130AE /* resource.h in Headers */ = {isa = PBXBuildFile; fileRef = 065CAF08131A87E3F659ED22E2D036F9 /* resource.h */; settings = {ATTRIBUTES = (Project, ); }; }; 06FB8FD5F0A5AAE514A086E4C8DCA8A1 /* pngstruct.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C2D5F89F949859FF4665D03834D9EC0 /* pngstruct.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 072133B2BB282EF9FBC7F5F696A5119A /* Archive+Writing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A2C38334522FD96B8FC777F0039D64B /* Archive+Writing.swift */; }; 07891C07B914AEDAF4D1E10760517740 /* RSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E3E35D2003A87897EFBA643B7A078C3E /* RSP.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 07CD31E48E6448463B2C3AF5BABEE26B /* plugins_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = 63F7D87FC807DBF94D110542C7A61703 /* plugins_compat.h */; settings = {ATTRIBUTES = (Project, ); }; }; 07F03FF0571F1E0E743C2DBFC18101EE /* NstTrackerMovie.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DC12A357C05925889CD29FB0539FEC74 /* NstTrackerMovie.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 08040DD5584BD7B00345AEA456BAA49B /* NstBoardBmcVrc4.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 67C1AA390485CC2C6DC31AC269DDAA69 /* NstBoardBmcVrc4.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 081FC3F758562BD8D6FB5B3E26ADA35B /* UsersCommon.swift in Sources */ = {isa = PBXBuildFile; fileRef = E296E74D5BB17E065FADEFAB60BF91B5 /* UsersCommon.swift */; }; 086F748E1A9BAFE3B7F5C38FE204832F /* ZilmarGFX_1_3.h in Headers */ = {isa = PBXBuildFile; fileRef = 7992DF58A03B979D2C28021F9A285D86 /* ZilmarGFX_1_3.h */; settings = {ATTRIBUTES = (Project, ); }; }; 08834428359500BC8A4A2CA6015D9573 /* NstBoardKayH2288.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2B0EB17AE5F142CA95FB5976BE47D913 /* NstBoardKayH2288.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 08B1C74CBBF07D8AF36E7730F2030E66 /* RSTDynamicDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = DD5D281A9BAA507A58AFEC76D9B56359 /* RSTDynamicDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 08B2F30E18DEEE39F0A24CEABE0CA98D /* Dictionary+Sequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14A77E30EF61FC6FB2A8792E6A917634 /* Dictionary+Sequence.swift */; }; 09282D94AA7E64B78911E92253C74EC8 /* NstBoardWaixingSgzlz.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45B64928D43C2AF68B71222DD6DFEBEB /* NstBoardWaixingSgzlz.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 0931F2B0E79A9E67012DD9FB15CDB9E6 /* NstInpPad.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4C619FD58ECE5046BFBE7F16F5A14C4E /* NstInpPad.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 09364B536FFBBF0CEDF43DBF41682C20 /* NstBoardUnlXzy.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7A7771014FAB9D9EC0615DFB04A95468 /* NstBoardUnlXzy.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 0950AF87E71EF95AC941B3BFB0C6B82C /* ShaderProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B844D3BFB7319D52CFFE53C66015059 /* ShaderProgram.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0982AF38104A6A3C7F068BE1E4F35DA8 /* UITableViewCell+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = C2AD9DA73A337680DFC1476096E9C55C /* UITableViewCell+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 097C95DDFD1959CD31B883C9BC41EF55 /* GTMSessionFetcherLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 969A0E6B50AC94779E15554E68201C1B /* GTMSessionFetcherLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 09C02AFACAE37E8F657E1888A1CCCEE1 /* DeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C270BF8D0AF1673AA48E2495128A2CB /* DeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 09F179547379944AF0B51815CD31643F /* mupen64plus.ini in Resources */ = {isa = PBXBuildFile; fileRef = ECBD2A6867A0D5DE628227BE67476E66 /* mupen64plus.ini */; }; 09F4B7AEC89AEC7668ABE3FDEA548EBE /* mic.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A6C70477FE2611FD7AB31D418502F33 /* mic.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0A372F89714CA98A2C2F089F3433260B /* ARM.h in Headers */ = {isa = PBXBuildFile; fileRef = 762C44D2B54DC847400E23DF806F5656 /* ARM.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0A50D82BACBAC6E92353428EA3B96D2C /* F3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DBF044364539F3E0E010F5D683AC7DA1 /* F3D.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 0A74BA6079FECDF6C99DDD9E919B6B54 /* BlendMode.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E8106D0AB95914E77450371B82356061 /* BlendMode.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 0A7DAAD6BD5955DAE784319E14EE93BE /* snes9x.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF60355DDCB4C37B37B346B3A139591 /* snes9x.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0ACA78A57A5C796B87F2F6DEE3984087 /* NstBoardBmc22Games.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 59740CE3094844205DE805C6ADB909B4 /* NstBoardBmc22Games.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 0AF651B804B6B8A8A5A52CE91138BFC3 /* OIDExternalUserAgentRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CFBBFCD11DF5152F30C049558087FA5 /* OIDExternalUserAgentRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0B0CACBD00C5ED985C676C4A049A5E2B /* NstBoardJalecoJf19.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8EB727E9ED3C811AA0FA8F4472904B39 /* NstBoardJalecoJf19.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 0B13F7305B5200533BFB2EA387A105D2 /* NstBoardBandai24c0x.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B8BC89C0B8E5FFBFE6703D54BB9CEDF0 /* NstBoardBandai24c0x.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 0B5D652D796EB2D1FBE04DF45FD150EF /* savestates.h in Headers */ = {isa = PBXBuildFile; fileRef = B36B730F8AD540F525B5277EA31AC67F /* savestates.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0B701E1ABACCF9D000897DFC4FBC6208 /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = 7A0260AEF602B25A1C9C1070115AFE67 /* png.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 0B8862D741140666F35999BD1C67AFFE /* FileRequestsRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AB406A384F5DBA022E1670CF8121C8E /* FileRequestsRoutes.swift */; }; 0BAC436F9EAD436004873AD60883314E /* ftwinfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = CBDA9BCF2343410A45207B8BA198A99B /* ftwinfnt.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0BBFEDBCB3C2D8C0E56A8ADA49A3F4B3 /* opengl_UnbufferedDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E0E396C6ACEADA6313110BA019AE87CF /* opengl_UnbufferedDrawer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 0BC1299CE2551DBD46C074090FD82127 /* sa1.h in Headers */ = {isa = PBXBuildFile; fileRef = 09A92EDBC710B7A07202429FDE81AD8A /* sa1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C1F5689BA717A7CB5812828A4B9DABD /* RSTLoadOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 78C8AB7FD07C0ECCA27FBE751419AC29 /* RSTLoadOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C26EB4BE976B60CD857812E0125CF50 /* OAuth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C30CE1530C1D90F1109BC1C2AB60603 /* OAuth.swift */; }; 0C284F60C3B0BAA1DC839BF3E1AEC44A /* assemble_struct.h in Headers */ = {isa = PBXBuildFile; fileRef = FC9842FA1CA47EEB5F912C337B2EB0C7 /* assemble_struct.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0C6368DD734D946E1C4B5FF918AEB628 /* Transform.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0DB410AC329D13D7051BC6E0A7D5BBE5 /* Transform.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 0C6C893BDD616604E611F2E819A4212E /* SyncRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70AE7CC7AFFE33944F4D565A383D0A4B /* SyncRecordsOperation.swift */; }; 0C9923278CE84C8DFCD515E22D038E5B /* ARMInterpreter_LoadStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 86DFF83A4B95ADF0960D74BB55A4A86A /* ARMInterpreter_LoadStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C9E00526F3ACFE0C4B40D87E02300D6 /* OIDErrorUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = D5D6AF0C13DDE459DA4AC814450C8D0D /* OIDErrorUtilities.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 0CA9B4D28152D0F0E12460EE28D2A388 /* NstBoardTxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9F1767D3A97BDEE6B358290592EAFCE6 /* NstBoardTxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 0CBE10FF52FD70BF2DD9E7A53F154B3E /* mupen64plus_DisplayWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DCFF6C6EF28C1BFF22E47FEA4AAD1223 /* mupen64plus_DisplayWindow.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 0CC4618C9DE22A2C2927FD2D4DA440FE /* debug.h in Headers */ = {isa = PBXBuildFile; fileRef = B009A13CCE9979249146089BA1A34F0D /* debug.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0CD2F9DBC9A4A151FFDB3807E9DCE1BA /* png.h in Headers */ = {isa = PBXBuildFile; fileRef = 273EE68570378702DCBA449E2763210E /* png.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0CEE2E76D1EE10292DE8EDD7AAE08828 /* GTLRErrorObject.m in Sources */ = {isa = PBXBuildFile; fileRef = A8A39A015FAAB4B02C5DDC94DE475046 /* GTLRErrorObject.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 0CEE2E76D1EE10292DE8EDD7AAE08828 /* GTLRErrorObject.m in Sources */ = {isa = PBXBuildFile; fileRef = D52EA840A37C4DA8B470A68AEE6590FC /* GTLRErrorObject.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 0CF3CC9213BBF568A0BA16E98845E15F /* NstBoardBmcBallgames11in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D0A55488C42737DFC74709CAF4D17297 /* NstBoardBmcBallgames11in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 0CFCDE8B5ED872227B37CA05AD43202B /* m64p_common.h in Headers */ = {isa = PBXBuildFile; fileRef = A86BA7BFBDD1A9CA9B7830177E7F88D0 /* m64p_common.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0D08DCD2A14F74BD82546CA5C9BEFD1C /* ExternalGameControllerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9DBB5B63025C19E83C9451107DE56A1 /* ExternalGameControllerManager.swift */; }; - 0D0CE4B177877BB0F04AD37AAEDEF374 /* NSPredicate+Search.m in Sources */ = {isa = PBXBuildFile; fileRef = F34A12CDD8A9F7DF59CB6C9DF28C8C37 /* NSPredicate+Search.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 0D3DF0B2A22FFD61063C98ADD6597183 /* regcache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A9BA0AFD82C04952ABDC3E12154E9FB /* regcache.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0D90B7D439D527502418FB576423B6B3 /* sound.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CC605E6227DC63EE4FC8F25683864C9 /* sound.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0D9FAB2BC328C60B51F573F0C9FFC83E /* ftotval.h in Headers */ = {isa = PBXBuildFile; fileRef = BF214410911943AE7235221D8B5EC42B /* ftotval.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0DC9060C337C5E1DA0E82F3CBDD0865A /* NSFileManager+URLs.m in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA4C7AF2961430F113BBF0D749FD2 /* NSFileManager+URLs.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 0DD14CE242F50F71DF843A3F3F734F5E /* lirc.h in Headers */ = {isa = PBXBuildFile; fileRef = 45FFCE5AB4BF0EF0CAE474BF43EAD886 /* lirc.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0DF373354B996451B44042AC4D5BE740 /* Rect.inl in Headers */ = {isa = PBXBuildFile; fileRef = 019BB4B6CBE90602032D506492CB517D /* Rect.inl */; settings = {ATTRIBUTES = (Project, ); }; }; 0E322F870C1D5E00050C7CC84B0062A8 /* cheat.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A11A199BE6A36B892FEE14D85974367 /* cheat.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0E3820AB74C99EA4F6B2C0FB8A34EE38 /* OIDExternalUserAgentIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 45EEA56032C12443D7F5CDED8FC4CDF5 /* OIDExternalUserAgentIOS.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0E591CEB347EEBD2ADA576CB247A6155 /* NstBoardSachenSa72007.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E239ED1166B2CA4127C1ADA9EE66B7F7 /* NstBoardSachenSa72007.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 0E75E07BE12EED13E8F28811BDC85E78 /* apu.h in Headers */ = {isa = PBXBuildFile; fileRef = E6AB1BD2CE7196982B4DC417E4A40A3B /* apu.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0E95499671251949C11665322DC9B78C /* Context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 082652FD4FE0591F6CC4245244487C0B /* Context.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; @@ -141,27 +154,33 @@ 0F84ED0CDBA9E872F8226C7652D86A85 /* gb_cart.h in Headers */ = {isa = PBXBuildFile; fileRef = 855D77B9B3667427FEF22757E46E2233 /* gb_cart.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0F95CED87E425CF308AB70D81F9F172C /* NstBoardTaitoX1017.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 72208F818FE3668DCF0B104B6F5A8674 /* NstBoardTaitoX1017.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 0FBFF0E0C5F2D214AB533FD75B9FF3AB /* gambatte.h in Headers */ = {isa = PBXBuildFile; fileRef = 501D427EE5E1A8882E6159ABF154A5A9 /* gambatte.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0FC57501D577A2F0F85E764EE81AB7C9 /* Cheat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46419BA04293C44F08C03736D6B48308 /* Cheat.swift */; }; 0FF2440C7ED4062F9A4382E73E2C49A4 /* TxInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3E26ED85603F0970658C4AF3B559ED /* TxInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 102329F2278DCDB0D13BD2014A9CF193 /* interrupter.h in Headers */ = {isa = PBXBuildFile; fileRef = 29B3676796A388530ACB7A0D65044B70 /* interrupter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 105A1194C1A4E35F0367EA28BAA94058 /* F3DSETA.h in Headers */ = {isa = PBXBuildFile; fileRef = FAB8D36239E5F3909BEA9896FE306D35 /* F3DSETA.h */; settings = {ATTRIBUTES = (Project, ); }; }; 10738D3FFF1D643572A30D22F374276B /* VertexArray.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 117A5FCAB2DE05F212AD4037F599CEA0 /* VertexArray.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 1095E111263785AD9B10EB85A356B29A /* SaveStateProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D6B56947558FEC359A8FAD9606E9D30 /* SaveStateProtocol.swift */; }; 109BA68239944B5A5AB0FFC07B6F0A5B /* opengl_CachedFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15C08012AB0B9FDC21EC0E5A098D7969 /* opengl_CachedFunctions.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 10ABBF86E3849A969D49F2E59BEE2439 /* Turbo3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 751CF81F10F453FC303ED3CCAE06ACF2 /* Turbo3D.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 10B9876E0E3FAB74741EAFA0E5521910 /* NstBoardSachenTcu.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2F7C608BFA656FE4EFBA10D0422E8A6E /* NstBoardSachenTcu.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 10D1F262E957A05FB4419D5F50730DE2 /* GTLRDriveQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = E7294A191F7AC7765349928B17D20EAE /* GTLRDriveQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 10D1F262E957A05FB4419D5F50730DE2 /* GTLRDriveQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = E0174FCA92F9D1D559BD164B2F6FD1F5 /* GTLRDriveQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; 10EB3196102967E948A095BFE2262846 /* NDSCart.h in Headers */ = {isa = PBXBuildFile; fileRef = C3586CAA3B14430C3B92F4791040A126 /* NDSCart.h */; settings = {ATTRIBUTES = (Project, ); }; }; 11168E46A195FEE9C7770B0D71A83C22 /* GlResource.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 22D9323511F1615198D8034484F5E9BB /* GlResource.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 11434BFBA34893E408578721E0A9DE95 /* KeyboardGameController.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 897041E46CCC3094FF47D7C48A70AC58 /* KeyboardGameController.deltamapping */; }; + 118B805BE28A7A32090AC55F13466B0C /* SharingRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 190BDF601666D0980206E38BF1F0EE15 /* SharingRoutes.swift */; }; 118F0DF74AC3073EFE19EB1D5B4B3733 /* opengl_CachedFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = E836DDED41F116702DDB6431F2E606F4 /* opengl_CachedFunctions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1190D86D29B41792F1EC2ABFA0B7F874 /* NstIoLine.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 232D7A46495F7EDE0AA71065D2D2DAD4 /* NstIoLine.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 119652C7AE4B1553F76A5DF290DC68AF /* GTMReadMonitorInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 56C4158DD79B8800FDBEF6D1FD40BEBE /* GTMReadMonitorInputStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1198484F6C2747B5A32CE33C8619FCD2 /* OIDAuthorizationService.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C07CCA1A3B98D511A5ABE9C9D042B20 /* OIDAuthorizationService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 11A0997DB132A27DB220AEDEF6C2FC78 /* Contacts.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC5CA5B0238F3D020CCC2D1E3520C450 /* Contacts.swift */; }; + 11C6C2CBEF8225188AFAC6175D40C7E6 /* UIWindowScene+StageManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADD04AF6D650BB8C6DC2C8B3CE4D50CE /* UIWindowScene+StageManager.swift */; }; + 11D1380C0B87ADBD24DE03621CB8A62B /* OIDAuthorizationService.m in Sources */ = {isa = PBXBuildFile; fileRef = 57336537A50773006A909975955521AE /* OIDAuthorizationService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 11E6664606A96150471B8D6C9CE46F46 /* Savestate.h in Headers */ = {isa = PBXBuildFile; fileRef = EFBC50FFC6DBAB7B8B9ACFB47805BC1A /* Savestate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 11EBE099E882BEE8D6B17FCD20997249 /* NstBoardSachenSa0036.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 21F887B2571901F5C1B0E7E06528AF66 /* NstBoardSachenSa0036.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 12269D4284464C6DC5047C8ACEDC02C7 /* DropboxClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD38FECB05322CFA65D8B297F68349F8 /* DropboxClient.swift */; }; + 11EF832C8D6C3BF3DA5DF53A82C21C31 /* RSTBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = B74C7230EB4D0627847A02A9CE1544AE /* RSTBlockOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 11F4192141425ACF00360ED0CB85A902 /* OIDScopes.h in Headers */ = {isa = PBXBuildFile; fileRef = 53A049AD9805951D5775D017CF5E4E8E /* OIDScopes.h */; settings = {ATTRIBUTES = (Project, ); }; }; 123B285D572B11DD7B5E0E7048A9BEAB /* svxf86nm.h in Headers */ = {isa = PBXBuildFile; fileRef = D3E0CEEDFD4A7C498DB0BB86C7454069 /* svxf86nm.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 124C46C25F8B600EA3A1FD8FDC268AC7 /* EmulatorBridging.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB7E0D0416AD09FA405E0355EA089AD8 /* EmulatorBridging.swift */; }; 12618C50AC2276A22DE99D304AD87505 /* GPU3D_OpenGL_shaders.h in Headers */ = {isa = PBXBuildFile; fileRef = A0196C3B20F2D9E886462BCDA4B77E08 /* GPU3D_OpenGL_shaders.h */; settings = {ATTRIBUTES = (Project, ); }; }; 128D1B28380DF0B84C1F0B4F27717DFA /* xxh3.h in Headers */ = {isa = PBXBuildFile; fileRef = EBCB2D018FCD273A488F1FDD51D5AF46 /* xxh3.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 12CEB0176E2C7729DACA31EC21FF24AD /* GTMGatherInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AEEEEBC25EAA4D178CE03F03D008923 /* GTMGatherInputStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; 12D4DF2E6E9B8E181D6EC9383905AEE6 /* display.h in Headers */ = {isa = PBXBuildFile; fileRef = 43025ED25FA3BA9FEA4A363425FDBD71 /* display.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1320E5BFA1D8B4B505EA483ED8A39EA2 /* Err.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3A66FC57CF12C4C7F15051EABEBF706E /* Err.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 134213800B6B0D81AE77E913BA2AE91E /* ucodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 3100BB31B2E91306349BDD568411A483 /* ucodes.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -171,72 +190,69 @@ 13807B1A5F551821D3B497CA5E487D35 /* NstBoardBmc1200in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 492C2815F39A115DF5927FA25B5A4486 /* NstBoardBmc1200in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 13BFA5D2EE0427A36F80C6433D518B8E /* zconf.h in Headers */ = {isa = PBXBuildFile; fileRef = ED799C5F26128518BF54B30517200ACA /* zconf.h */; settings = {ATTRIBUTES = (Project, ); }; }; 13F2ED96C4494107F7485A66F516705E /* fttrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 86375C23888D1DF4D55B3B283ABEBEB5 /* fttrace.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 142240FA777B5DA21136DECF43EEA61E /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19DAEF74182F401F21DF4FA82B1FD4B2 /* FTS5.swift */; }; + 142240FA777B5DA21136DECF43EEA61E /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DA78CBF88A04BBCFF5516F488EE945E /* FTS5.swift */; }; 14449ED203ACA1A7968C64879C57F1AA /* NoiseTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7D1747F157ABC2D3804E6DA321A27043 /* NoiseTexture.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 1482F9CDEBF900A9D78FDE90BED27822 /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = 7D27A8D199AF789EB7101A558A907648 /* pngwtran.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 148BA584011F2DADA6E348405416C732 /* RSTHelperFile.h in Headers */ = {isa = PBXBuildFile; fileRef = A363333B17E12DED3509264B7806E627 /* RSTHelperFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; 149F37848F1C57450AF615E829E771D0 /* Wifi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1800D8C1D9FA3C88E747AAE8C0A3C7B4 /* Wifi.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 14DC681B17A1B58272391D1D13B16238 /* FileProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78F9D9A60A5D47161DEB5603E363B2C2 /* FileProperties.swift */; }; 14EDDD3706AA3FDE5853BD00321C8F51 /* NstBoardFb.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 383BE6B9C0159CE9420D06D227AB94C5 /* NstBoardFb.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 1529D8851EE0464DF6DF1CCD1550849F /* NstBoardWaixingFfv.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D1B0D2FC2C2810170AD695B08F5D980F /* NstBoardWaixingFfv.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 1532052E09D655166E639B128A9CA087 /* Types.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD299184405C4128DEA2447113D9BAF /* Types.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1539BEC91F71F469A0961D1839624A0B /* RSTOperationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 2394DCECC5F71EDBCEE1E73732453EAF /* RSTOperationQueue.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 154574D92A489BC8FE5741C339257C1C /* RenderTexture.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F0CB881EF470C5FD6485DB624B9A2E56 /* RenderTexture.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 1546A094849CAF915DBD9361B6BB6D90 /* opengl_ColorBufferReaderWithPixelBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = CB183AD11F0038C0F2527033206C8BC9 /* opengl_ColorBufferReaderWithPixelBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 155B558202F3B892B32B276BD9367A63 /* NstBoardBmcSuper22Games.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 661EC5D34F43356B676899643B0968B6 /* NstBoardBmcSuper22Games.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 155C6B4AC56F537E3939623BFDEB49B6 /* m64p_frontend.h in Headers */ = {isa = PBXBuildFile; fileRef = BD26C015E7A919A5AE1046A3815237A0 /* m64p_frontend.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1577E488FAEA3CAD96997901D621A8CA /* GTMMIMEDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 053CC9F79B24C95D4BA1804F4282EC93 /* GTMMIMEDocument.h */; settings = {ATTRIBUTES = (Project, ); }; }; 159706C1A7F15930D266EC1F337013BB /* libhardware.h in Headers */ = {isa = PBXBuildFile; fileRef = 3911A2FE847ADE263F3D2AE0E1962055 /* libhardware.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1599A2E084B5BED61197869F92044B69 /* DownloadRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09760C98C49F4D9DA5C8E1DB178498DF /* DownloadRecordsOperation.swift */; }; 15B9A8346C1E2C124D2D63E6A7B78615 /* Dialogs.h in Headers */ = {isa = PBXBuildFile; fileRef = 16E8AE20B9CFDB87D64063469B6C2C5C /* Dialogs.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 15EFB271421D7E8869161476BA69F152 /* RSTOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = D6BCF5C94F60010C0F7EEAC1DE89CC20 /* RSTOperationQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 15CB251D27485707916C0669A54576CE /* StoneBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2698B75759D27EF243CC7E533878B5 /* StoneBase.swift */; }; + 15E0058C90957F595875A3FAB81C5C8E /* GTMSessionUploadFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = BD14EE61773F621F7BE47DDD2372E279 /* GTMSessionUploadFetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1626E1C63D63F100AF0DA19BEF4B4869 /* TxImage.h in Headers */ = {isa = PBXBuildFile; fileRef = DF5C826C0D98174AFC775070DD3253D0 /* TxImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; 165D3E281834F44EE83C7DE5DC8E2DBA /* Ext_TxFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F472639A9FFD42C9F8AEA03512A2556 /* Ext_TxFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 165FD24F0DBE146003656953E5523695 /* NstZlib.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FF3E301DAF4760FB806BA003BBB073FF /* NstZlib.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 1672975D7F15FE31FF63BE23A778D1DE /* interrupt.h in Headers */ = {isa = PBXBuildFile; fileRef = CD6D9A12F60639B7290A8762618AA481 /* interrupt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 16BCC2EDD2D964A598F4577BCF1D3AB9 /* Data+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = E064EB97821DE1B8BFCC21E48F3D5BA0 /* Data+Serialization.swift */; }; 16EF9A8863500649406F6090525D897E /* NstBoardIremLrog017.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 481E2A9FE78254577B8894F8E6BFFC1C /* NstBoardIremLrog017.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 16FB2AB584D4D4C3E98A0EDDD2DD8E37 /* libretro_vulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C793705F8636862B9913E9351FBD3A /* libretro_vulkan.h */; settings = {ATTRIBUTES = (Project, ); }; }; 16FE592F0D87772CFB23563DCEDA03B3 /* DropboxService.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA7AE85FBD0C664A9A33E289943C3825 /* DropboxService.swift */; }; + 172E915C23AA2D59EAEDAD1DC8F10274 /* FilePropertiesRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 839690876534FC0D3EFEFB677A6155A9 /* FilePropertiesRoutes.swift */; }; 1749DC5B10BFBEDBF975A14182F9EFFD /* NstApiMovie.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 52B79B7D3595C4B07C01B51ACF536A49 /* NstApiMovie.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 1774E2834BD80E8F6B905FC0885AA03A /* ManagedRecord+Predicates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74CE98C1A722E74DF58E8FC293568C26 /* ManagedRecord+Predicates.swift */; }; + 1774E56BD05AD0B3B9AE715BC59C2749 /* OIDFieldMapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 465D766B2AFF0875B4B11F931485EA41 /* OIDFieldMapping.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 179F3C65690BE4046034D3F991740096 /* glsl_FXAA.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BD83DB7A332052EBC34798D4AB2A9CC /* glsl_FXAA.h */; settings = {ATTRIBUTES = (Project, ); }; }; 17A8E1ACA385F12892F58B1D1BADC1CF /* SDL_thread.h in Headers */ = {isa = PBXBuildFile; fileRef = C6557795EA6149DB85F43ED83D8054AA /* SDL_thread.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 17CE565E6072F092E438CF51DA6E5B5C /* RSTCellContentChange.h in Headers */ = {isa = PBXBuildFile; fileRef = C80AEBE8D596D5B9EA9999082C62DB68 /* RSTCellContentChange.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 17BE2A4F5BE69077DA5F358B3ABD809F /* OIDFieldMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 5304A1BBB26BB2A13B780F30AE9DE490 /* OIDFieldMapping.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 17C1448997A69DFC08D5ACEA83B1338F /* OIDAuthState.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EAE7328BBAFFB03192CE3D50F2E038 /* OIDAuthState.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 17D7B16473E9298E54C91F58CA448F59 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = 52809410CFB6030953B0EC02A43AD384 /* types.h */; settings = {ATTRIBUTES = (Project, ); }; }; 17DA6A10FEBD10E12C97D7EB94F34D6A /* osal_dynamiclib.h in Headers */ = {isa = PBXBuildFile; fileRef = F4C91AF33EEDB415FB575836D7AC8594 /* osal_dynamiclib.h */; settings = {ATTRIBUTES = (Project, ); }; }; 17F9C6E5CD3556B53ED9450AAD934A77 /* Font.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F79B969084D7427ED26DC4A0D24EA680 /* Font.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 181B63EDFFE57E13F3045DD0904F999A /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = C5D0C48AB270EA1136E55E203CF7D378 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1805F5A3687D6A687FA91FC3A56FE6A6 /* Input.swift in Sources */ = {isa = PBXBuildFile; fileRef = E989AAD5B5176E39AEACF997E83D5120 /* Input.swift */; }; + 181B63EDFFE57E13F3045DD0904F999A /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A80B7D648995C747A8D7ABC799CD2C8 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; 185A3E2756AC05E358D9E3D0BD7C8C08 /* DisplayLoadProgress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 498F938217E118A1DBF9DED133090463 /* DisplayLoadProgress.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 187FC21311853A04A39672B210B4D6FE /* SNESDeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A69E9B1FC701F3CDFFDAED41E72FC3C /* SNESDeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; 18C37C6657B784CEDB75985FF0399AF4 /* NstInpHoriTrack.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E9F0ECB7E0ABA01A6BD5543B8455A6FB /* NstInpHoriTrack.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 18E7FD830FB230F9AEBC7CD4BC97F66B /* AboutDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 5567EB12DEB303864D39F83A736AF4EF /* AboutDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 18E8C08EDA82CC13F07673EFD63EFCC6 /* PaperRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 344175CF76093086EA58BEBC8AD0E014 /* PaperRoutes.swift */; }; + 18F27129CB930A89AB7798158C2982DB /* OIDExternalUserAgentCatalyst.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C3F8DB60D4036F101818A25789D30E /* OIDExternalUserAgentCatalyst.h */; settings = {ATTRIBUTES = (Project, ); }; }; 190FDF77E6F1843F68C0478C3DF55309 /* ARMInterpreter_ALU.h in Headers */ = {isa = PBXBuildFile; fileRef = F1BA6A083756E08AB6B08120AC5A64BF /* ARMInterpreter_ALU.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1960B9C5E4BF07510AF80754FAC3875C /* TeamCommon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848A93F7DF5BC4A24E1F379E42DD1839 /* TeamCommon.swift */; }; 196807186C43E66838FC5B12F924ACC2 /* NstBoardBandai.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 50B675723A77E42B1FB1C0333565E307 /* NstBoardBandai.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 196BE8F30061DD632F3B865E407A43A7 /* NstBoardAgci.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1ACA4549EF8177725B56D2E737602463 /* NstBoardAgci.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 19738AA01A0AA555D5AEC5E48E85061B /* memgzio.h in Headers */ = {isa = PBXBuildFile; fileRef = 8197D05CA0B6927CD99B2150744F4CB6 /* memgzio.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1996BCD583767DD3527F1D91E6D2B848 /* opengl_Parameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15C5EEFE6C9A745A9B98A7CE816B4544 /* opengl_Parameters.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 19C0AD30F3B8CA3840D288F3FB3C45E7 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = ED28BE1D7327BA6ABFA7B757E13A6EBB /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 19C0AD30F3B8CA3840D288F3FB3C45E7 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = AAD2667BBE65AFB801C1E17E617CD367 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Project, ); }; }; 19CB694C08E1BE613EF3C8FEC36B895E /* stream.h in Headers */ = {isa = PBXBuildFile; fileRef = EC827F858A5C671004CB3FE3F0985371 /* stream.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 19E0BC3D9993B90096DAAF74BFB3A1DA /* GTLRDriveService.m in Sources */ = {isa = PBXBuildFile; fileRef = 17191C33E01881A9A1CB215D6932040B /* GTLRDriveService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 19E0BC3D9993B90096DAAF74BFB3A1DA /* GTLRDriveService.m in Sources */ = {isa = PBXBuildFile; fileRef = 26D87D2AD10A8E21F109C33C9251C5E9 /* GTLRDriveService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 19E2262D89EA6A0442CEA237AA76AA52 /* NSLayoutConstraint+Edges.h in Headers */ = {isa = PBXBuildFile; fileRef = AEF3A696869078C864E1963F2F7D12BD /* NSLayoutConstraint+Edges.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1A46531816BB6C08E0EDF5123B9E339F /* sRGB.h in Headers */ = {isa = PBXBuildFile; fileRef = D92F9E5A5EB369E6906F6574ADEE9001 /* sRGB.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1A4F27A7213FD959BB6C3A5AF8C3575F /* DSi_AES.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EF9E2339887B291A4CFE77E816D1073D /* DSi_AES.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1A55D634DBF021D1D3CE755052F3918E /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = B406D46EC012C6003DF8D4CCFB546BC7 /* Standard.deltamapping */; }; 1A72648119658E0F985D21F6E9149C40 /* bios.h in Headers */ = {isa = PBXBuildFile; fileRef = 394BC7C3740766492985ED4E69FA615D /* bios.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1A7977444D4FD828FFA6DAB32E1DC5E3 /* glsl_CombinerProgramUniformFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 865F6B98B40E1FF0BEA7DB4B71AC8881 /* glsl_CombinerProgramUniformFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1A829E859EB4CA2FADA0551417F0F36E /* Archive+Writing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E950C5201F678049BF12854FA5D327A /* Archive+Writing.swift */; }; 1AB1F53D602593AF99750D454DB92B9D /* RateTransposer.h in Headers */ = {isa = PBXBuildFile; fileRef = 65504AC7E46DADE41EA84C80B7836EBB /* RateTransposer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1B2F0D11530F125AD090CF0CD9C6A5C0 /* NstBoardMmc6.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A63C9E0A9B210F7E60ADCC2A38E0E98B /* NstBoardMmc6.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 1B33C2F603240B15FE562D12654B2E70 /* PACKED.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D877B8846666B99FE70DE7336946A59 /* PACKED.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1B5D7AADF3C2CCA05B017A3B923A60F8 /* SwiftyDropbox-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D145AF0D8138ED303A35F31CC28531D9 /* SwiftyDropbox-dummy.m */; }; - 1B663A12738E308F89877AF325B24033 /* NSUserDefaults+DynamicProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 15F97120052DC61976DE9E72A49B3917 /* NSUserDefaults+DynamicProperties.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1B71C4FC9E436BB959410AA87386F79A /* RSTNibView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E45092B38B1BCA27D9FBD1E928D6B4E /* RSTNibView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1BAD559C85BA953BD17A38F2F33D6895 /* CustomFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F67C72AC639FF2FE8B8682CBADFEA91 /* CustomFunctions.swift */; }; + 1BAD559C85BA953BD17A38F2F33D6895 /* CustomFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9A35F037627770B9E4D134A54ED7A1D /* CustomFunctions.swift */; }; 1BBC422F46C01129FD5C11F232C99561 /* NstCore.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B365079C8474FF61FE7DBA7FEA41610C /* NstCore.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1BBE7574E3F45B7F2B730EED785EB97C /* UICollectionViewCell+Nibs.m in Sources */ = {isa = PBXBuildFile; fileRef = C12184A008E6E70912A403A00B2444CD /* UICollectionViewCell+Nibs.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1BC13158C5A72D50C3879D3E928CDC63 /* DeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 35A1F31917622413C5030F211BD54C5A /* DeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1BC8FD9B47A7439B1E6222A14FEBDE2F /* DBChunkInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 43949B838135A4C9AF88A573B762A429 /* DBChunkInputStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C13947F1361A75354023B84BB41D4FD /* GTLRUploadParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = B9599505824F928A644466FC5D89F93C /* GTLRUploadParameters.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C313D195E2DD79B9AA7484558E86343 /* UIImage+PDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEF39C589F31A8F1B0747404D7D51759 /* UIImage+PDF.swift */; }; + 1C13947F1361A75354023B84BB41D4FD /* GTLRUploadParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = E8EB251114467D02FC567209AE2B575B /* GTLRUploadParameters.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1C3E5C10BC1F25C4A6C89F11E7E38243 /* memory.h in Headers */ = {isa = PBXBuildFile; fileRef = EAACD8B3176E4E306106E019BACCC04C /* memory.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1C7EF235549FDC5E73C654BFA44FD494 /* Audio.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8725EAE2102B04E4489565CFB1A011DB /* Audio.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 1CBD8077B3C25C5DABA1757892009A4E /* NstBoardSunsoft1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B58EFCC5EF56D718978F57E079A87EA4 /* NstBoardSunsoft1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -244,152 +260,159 @@ 1D6647ED38D946416F8D1E3C89717A54 /* gralloc.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E1A7F168275457728FC46DD69F2506C /* gralloc.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1DA64FF3CB2C830919352FF05288EE35 /* NstProperties.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 65EE3AAF17CA05DE17F33860600EACDC /* NstProperties.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 1DCA7133021E95523FA4474A860EF7FC /* NoiseTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 6984E1848F3D8BB2CFFD8E74430573AA /* NoiseTexture.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1DD5D0693ECAD69DABC12D2F135C5B5C /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = D1E2911B0409362E1D0AF530431EF0B4 /* GTMNSString+URLArguments.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1E0E73AA1B5CD410E435C7F360693871 /* GTLRDrive.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CB7FC1BCCB48A79D26DDA5099AB7393 /* GTLRDrive.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1E0E73AA1B5CD410E435C7F360693871 /* GTLRDrive.h in Headers */ = {isa = PBXBuildFile; fileRef = 8672E3B374E908EA10A8340D6066D7A1 /* GTLRDrive.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1E17FAB1D5E7A6DE7DFA7D4FF38213FE /* NstBoardCony.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3657D29FC929113DDDDFC5C7E19C7391 /* NstBoardCony.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 1E52FCCAC118847802DBC763AFCB4CA2 /* RSTCellContentChange.m in Sources */ = {isa = PBXBuildFile; fileRef = B618AE98791FBF53D9CCC55B3BD34734 /* RSTCellContentChange.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 1E9688007C1C84CD4D107BAE70546B6B /* ftgxval.h in Headers */ = {isa = PBXBuildFile; fileRef = A305BD1E403F2080A66FACB6EE133DF8 /* ftgxval.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1EB653D062EC90644CD6EFB76D60DB3E /* Input.swift in Sources */ = {isa = PBXBuildFile; fileRef = E989AAD5B5176E39AEACF997E83D5120 /* Input.swift */; }; 1ED2C354F8F87AD2DDAD7C702639A1DA /* DSi.h in Headers */ = {isa = PBXBuildFile; fileRef = E22D40F072FC60A30938FBAD93B403BE /* DSi.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1EEE6FBFA897D854C974D552FDA75CBC /* cheatSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = EE40A9BE79EFF9E3924C2691A2238819 /* cheatSystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1EF4935D4A9DCFB4D09FAABB4A86965B /* NstBoardIremG101.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 23ACB54BC353515116EF1E02A2A1D1E8 /* NstBoardIremG101.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 1F11F0B99B7C863EB7148CE4A7A3B158 /* NstFile.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7EB9E20E1710796508F8D28D3DBF0956 /* NstFile.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 1F417CD1429CC9B61DC398B806DB45AE /* OIDAuthStateChangeDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1170BF99B298B53699071262DB9FCFB3 /* OIDAuthStateChangeDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1F5562DA983775FD5AD8DC9F0102AE59 /* OGLRender_3_2.h in Headers */ = {isa = PBXBuildFile; fileRef = FD34A13CC25429000B2C00EA6D1109C1 /* OGLRender_3_2.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1F5B75BAA718CE49BD8DA76D0278431F /* NstBoardCaltron.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7DEB1DA3AB75F28F6A8894D793710FA4 /* NstBoardCaltron.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 1F749FFEEFFE402FE7AE58A0237C0B4B /* dummy_video.h in Headers */ = {isa = PBXBuildFile; fileRef = E34DBD5D2C3EF0D0B91A5E15B2AAF2F2 /* dummy_video.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1FD4F44BD28959757456FC7CE87A5D44 /* file_storage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C68DA7C782218AA185F906F90656A2F /* file_storage.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1FE60C0671C600052001DB725D120E78 /* NstBoardSachenS8259.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F97D6695C3982D8DC4829D7E999A38BD /* NstBoardSachenS8259.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 200E803A9DFF594F9E18C0F4D1CE1EAB /* NstBoardKonami.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E8B48771183C2D183E6BC362B2D1A788 /* NstBoardKonami.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 20EB6B39BBAE80A64D599AFBA7245D2F /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = DE00BA4DC34A73CEA579554268A87C7A /* Standard.deltamapping */; }; + 20F69FEEFF9BCADB35F235F1A0E19C8A /* SwiftyDropbox-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A31786EA1A7642B4AF7E809A73AAEB56 /* SwiftyDropbox-dummy.m */; }; 2104C11B25798F223BB49F961358D7F1 /* GPU_OpenGL_shaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 809ED1EC76A3205A49D0AABF6FDA8AF1 /* GPU_OpenGL_shaders.h */; settings = {ATTRIBUTES = (Project, ); }; }; 213D7BC467B480350D78A124B50BFEC6 /* check.h in Headers */ = {isa = PBXBuildFile; fileRef = B37A83095DB9485A2D6648B90229B165 /* check.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 218B3B5D968813527ADD6D386BCA73BC /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = FC5CD66C23C8B15B020AD1A0E066DE14 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 221D63B90B17DBA44EF084C8B9E108FE /* GTLRFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 0911CB832D9A4864180F2DCFB13BCC10 /* GTLRFramework.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 218B3B5D968813527ADD6D386BCA73BC /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2859993DBC54C542151DB3BE05AB67E4 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 221D63B90B17DBA44EF084C8B9E108FE /* GTLRFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 026303687AA738C6704F0AE2C4415571 /* GTLRFramework.h */; settings = {ATTRIBUTES = (Project, ); }; }; 22323488D93B1CB6A1EDB9EA150089A9 /* String.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABA52C76AE80C5B8512D587E0428F03F /* String.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 225058BADDDCE6036000A69F57DE8F1C /* GTMSessionFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = A3552D865207139EC4F4DC6E995D6BB0 /* GTMSessionFetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 225623F48E14C2F7E50C59201F91061E /* NstBoardJalecoJf13.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7F4CAA5FAB5325B477B9D4E36BA0CC95 /* NstBoardJalecoJf13.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 22759B6F93CAA0B753EA6F07195166CC /* NstMachine.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8406B153DF09A3DC829DAF90D1C24127 /* NstMachine.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 22CC286D02C6F722B90629DAC502200A /* mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = 4BB9ED2F8B3AF9970E225DCC57EFBC39 /* mp3.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 22E0D257D2EDFEF2804C277092FA932A /* ZSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 230CA3A76ADC8CA21BF4C3575F6B34A0 /* ZSort.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 231DDA0E273AF813E7CF426C4250B5DE /* SwiftyDropbox.h in Headers */ = {isa = PBXBuildFile; fileRef = 835D7336F5224A95CF8910C2719DD690 /* SwiftyDropbox.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2357199947057C36096C8C4D960D84A5 /* NstBoardSunsoft5b.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A0D13BDD07591784D6EFC4B322E34E46 /* NstBoardSunsoft5b.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 237CA8760D2383428CAE777E1851F522 /* RSTNibView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CBCD15F20F318500823C4E873BB6568 /* RSTNibView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 239AB388BA1D76C6C3642EFE6D7CC3BC /* F5Rogue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A32ACBDAAF06587E09AA2D7FBA1FE620 /* F5Rogue.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 23C86C9C4B27471DDDB716565A00F9CF /* preproc.h in Headers */ = {isa = PBXBuildFile; fileRef = B51C90EB839FE2D4424278D4BCD5721D /* preproc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 23F10693154392BAEFCEE38BB9233F8E /* ControllerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E391CF9551BB3A4B87436C08C3130381 /* ControllerView.swift */; }; + 23E191086C89AA402B1317068AA2E0E2 /* UIKit+ActivityIndicating.m in Sources */ = {isa = PBXBuildFile; fileRef = 909D8E207656B028E88C377D1425D826 /* UIKit+ActivityIndicating.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 23FE07AB90B13C4718A0496B1ED182BF /* NstChecksum.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 49289495C2ADE8EF7146A06E67B90823 /* NstChecksum.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 2421934E6C6A844A30F0A17CF403A293 /* OIDServiceConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 916A64DBFF66567EFA9AE1A60B43C5CB /* OIDServiceConfiguration.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2458C6994F65686A0BC723D9E87D244F /* OIDError.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CB6C7B27A989417744E3635C017E270 /* OIDError.h */; settings = {ATTRIBUTES = (Project, ); }; }; 24900F0CBF151334AE926A9DDC9E3216 /* savestate.h in Headers */ = {isa = PBXBuildFile; fileRef = 146429EC2344DCAD80826ED3B4177EE9 /* savestate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 24D14BD248C8F09EBE320A9CD94AD697 /* FileRequests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF1AA4BB7C7EA9D745AEBF944DC944BA /* FileRequests.swift */; }; 24D6DA518F84573851F2D5E3ECBCA306 /* Arm64Emitter.h in Headers */ = {isa = PBXBuildFile; fileRef = D274287734C3E8C2F9B0BE9AE03C2224 /* Arm64Emitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 24F6F46E0260E820BC8C2CF29F099FDD /* AppAuth-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA4CCB0BE904F77C8B8EC9084035AED /* AppAuth-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 250664C11C443BBF985F769BD801A936 /* Glsl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3197199434FFC5FBB31D71D5168BA2D6 /* Glsl.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 250C0DCAC379827BFCE598F6CBAD5DA4 /* NstApiCheats.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E2F73A989BF6FCAB3263CF3D770CC457 /* NstApiCheats.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 253079F3002D9FC0E9C208C38379368F /* ftheader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2158278AE32018CEB6355F65E9A01568 /* ftheader.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2538995712CF79651141C2BCB71CB02C /* NstBoardSunsoftFme7.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CB23A58DB03D44EA7C023930110C42D6 /* NstBoardSunsoftFme7.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 253F3CE3DF554BF36424995224319256 /* SwiftyDropbox-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D57E07B7CA9C82C9090FC455119B46B /* SwiftyDropbox-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 254084DB1C8E4E60BFF17827D03CF9A2 /* Mutex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 06887CF48CFCCD61F000F6D7ADADB817 /* Mutex.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 256AE2353E96C8458BC2950907DC74E4 /* GPU3D_Soft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90BF7F2CFCB96FA1AC37764CEFBD6512 /* GPU3D_Soft.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 25A56AE425DE026B7866820144EEB210 /* vba-over.ini in Resources */ = {isa = PBXBuildFile; fileRef = 516EB9A951C201FC2386D95A5740FD05 /* vba-over.ini */; }; 25CCED554BF5FC93835CE999C252C334 /* opengl_ColorBufferReaderWithPixelBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B4E404A1CC7DB6206E915912755904D4 /* opengl_ColorBufferReaderWithPixelBuffer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 2639C36BA3204616E2926498204226C1 /* ARMJIT_ALU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 739E915513C72D897FE1A9E3F5526FF5 /* ARMJIT_ALU.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 26A0F4E8969807660BFE8820994F0A3D /* RSTHelperFile.m in Sources */ = {isa = PBXBuildFile; fileRef = E19DE8A1E6B39848A1B39E4116DAF8FC /* RSTHelperFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2639EE414E15EB8C5DC5D18BF1B6F39A /* Sharing.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB98E43036B0C024577074DC0955BE17 /* Sharing.swift */; }; + 263A7779554A8298F7B4A42971E55D49 /* GTMSessionUploadFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E1AFE6F8229938A27A495C21C806A1A /* GTMSessionUploadFetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 26A857E8BAC3A7F077E73591EC9D7DCB /* Shader.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1F859C835F87766EF7FBFFB399501D01 /* Shader.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 26BCDCFF4498230107CE2D987AD20D17 /* NstBoardBtlPikachuY2k.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FF512142038D948D23EFC8EAD68460CC /* NstBoardBtlPikachuY2k.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 26EB14072BC75D86437A7097E0133585 /* opengl_ColorBufferReaderWithReadPixels.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 302DEE937E7742556D32A5920DC66196 /* opengl_ColorBufferReaderWithReadPixels.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 26EEFB58932CB943137B1049C3949E31 /* GBASockClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D36ED69722BF08733A5174531C78473 /* GBASockClient.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 26F93A4DF14BEF5CFF3230D6C3EE5B6C /* GTLRObject.m in Sources */ = {isa = PBXBuildFile; fileRef = D63DF8BC0893DD34539EDEF01E7690F8 /* GTLRObject.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 26F93A4DF14BEF5CFF3230D6C3EE5B6C /* GTLRObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C577D7CCC9935FF8720C6CB71251340 /* GTLRObject.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 2708FDA15B13FA1487A3C19952BB85F0 /* DepthBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = CD09633894B96DBC6EE69B8E30277EAF /* DepthBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2741D1049119F88CA18ECB5B6B3C4921 /* SDKConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = A03E19C0995989B6E3E1FFC99B95C5D2 /* SDKConstants.swift */; }; + 273779AD3DAABE14C460A6C775E9D236 /* GTMGatherInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 65CB42CA8D5984A85D114FE0E4DA0D4D /* GTMGatherInputStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2764E4B14B2E755B3B172C1710F05880 /* RSTSearchController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7102A8DBFC6D01F98DCE0C4D4CC37C59 /* RSTSearchController.h */; settings = {ATTRIBUTES = (Project, ); }; }; 27979523A5D4202E4246340090B3E994 /* SoundBuffer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2F66BAA873EADA8F2D6D6EB5AA4C399F /* SoundBuffer.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 27B5410BDE932C03A1B57AD92DAFB67A /* MelonDSDeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 119BB39F7E9FD0CA9AEF703928526233 /* MelonDSDeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 27BCFED8EFE33AF36315AF1A1489E192 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FBBCE862E374DE16A6F3E328AA1A1DA /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 27BCFED8EFE33AF36315AF1A1489E192 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EB5764D1BF3A8632E1D42CE4EAABFC /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 27D5FD6BC8716AE412DD8610AE12E215 /* Archive+MemoryFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 838CA0439D7C8B31AE1AD2623D31DDA6 /* Archive+MemoryFile.swift */; }; 27E301E6FA110770C8916E8D2FD6038C /* Revision.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E01645C42280C64842F2D789142FB4 /* Revision.h */; settings = {ATTRIBUTES = (Project, ); }; }; 27E52BF1D25E43896CB08B2686947962 /* NstTrackerRewinder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7DA5E910CF6DD3358FB25C44F92B03B /* NstTrackerRewinder.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 288D997726164CEE64FD6E3FDB977A2C /* GBCInputGetter.h in Headers */ = {isa = PBXBuildFile; fileRef = 393B1763D9F2667EE816F0FE4A4F61CB /* GBCInputGetter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 28AA3A68AE58340F6582972934096656 /* RSTCompositeDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 2691325FF990437B6E7EAB62E91963C2 /* RSTCompositeDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 28D0E9EF6676D5A0C7FE15B251A32E2A /* cpumacro.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F841F803178900D9957EE78E0A4D67B /* cpumacro.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 28DB7B5108D33288C405D0A5EB8DA76F /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 98D8B9C03706EA64A98272C9B5617C09 /* UIImageView+HighlightedWebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 28DB7B5108D33288C405D0A5EB8DA76F /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 86DCECF7E86603CF1CA6BF9DD97ADC21 /* UIImageView+HighlightedWebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 294AE72A039CAA90691F2C16A2379C1D /* F3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 3445C3B0F68199082CCA95F9F4C599B5 /* F3D.h */; settings = {ATTRIBUTES = (Project, ); }; }; 295816A953BE2C14CBA66CAF3AD2A932 /* NstBoardBmcCtc65.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F5DBEFEA68B991BD01BA0CF549877402 /* NstBoardBmcCtc65.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 29793995C82AEC81B14670CF1849FA25 /* FinishDownloadingRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB4B8785E16046201D6AA7809ADAA7C8 /* FinishDownloadingRecordsOperation.swift */; }; - 29E96A01AAC563278571FBEFB60D44C8 /* EmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046951C873E03E7C1CE25C16E73169A7 /* EmulatorCore.swift */; }; 2A31E6C4D3A8F30421E2323117DFF49F /* glsl_CombinerInputs.h in Headers */ = {isa = PBXBuildFile; fileRef = D07593E3481101DA254F891F7AB6D797 /* glsl_CombinerInputs.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2A6364D845C5E5EE2D8FA6F545B1B9E4 /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 849846DBBB863B9383830F30D108134F /* Standard.deltamapping */; }; 2A689CBA6112325FA3C953F85192E102 /* opengl_GLInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = D81CD67810D215E63E82293B4E836FA7 /* opengl_GLInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2AA581A41D5F6633066FDFD0535534B9 /* scoped_ptr.h in Headers */ = {isa = PBXBuildFile; fileRef = EA0CAFD06390C241399E3A54902AF9AB /* scoped_ptr.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2AD7EF4A1E16D6B7366720D8A08D3A2F /* svmm.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DBDFD713A38C39EC0131BC04B04AD80 /* svmm.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2AFEDE8F8EDFAD0DF7702F8AF5348192 /* Turbo3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B1731070434E5EFF380B47A5CF081A88 /* Turbo3D.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2B1EB573AF2DC8FD4480A5162C3C8743 /* Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3464E71D1132BB4ECDA6EE3AD5D9C854 /* Schema.swift */; }; + 2B1EB573AF2DC8FD4480A5162C3C8743 /* Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71B40389FEF3F25336856EBDF7DD4FB4 /* Schema.swift */; }; 2B28F0B164A99D5145FE4F05F94D1670 /* ObjectHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EEC75EC7031D203F22BC56362793D38 /* ObjectHandle.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 2B3387EF62820F2AD840DAC867361634 /* crypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DEA24EE1C12BA08F9715415DA0C0632 /* crypt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2B3FC147C9555040C219F585B1D8BD4A /* Archive+MemoryFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE47B9173973846BA966835EB7C3B4DF /* Archive+MemoryFile.swift */; }; 2B6C670FF4A9E1AAD2EEAF7F68FCBF69 /* GBCDeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F0441DA5BFC2C801D45C44B0469CD20A /* GBCDeltaCore-dummy.m */; }; 2BC2BB178AC7CBFFCF85C03F6CF60A1C /* txWidestringWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 91AD846287C70541C254FF3F53081FD3 /* txWidestringWrapper.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 2BC40854299A64B6B0E2E5E901986923 /* F5Indi_Naboo.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C9E2FAC3B0BCD4CAF1070323704128C /* F5Indi_Naboo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2BCB3B0E54399BE03A1BB5546CA1CB4E /* UIKit+ActivityIndicating.h in Headers */ = {isa = PBXBuildFile; fileRef = 82656B4A230970BB031B9D9C19699E88 /* UIKit+ActivityIndicating.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2BF0055ED89664D8B181734F560009EE /* SPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 713D0E7BCA5C03C90F079A4843B7A0BF /* SPU.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2C90CDD3694FD69CEBA8FA8526AAB2B4 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 6497DCF700203B483AC09F89101261EB /* UIView+WebCacheOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2C1CF1FA139226F00F14558601F9A911 /* PaperRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A59BF4564B0426D4BD0FC48C7AFF077 /* PaperRoutes.swift */; }; + 2C90CDD3694FD69CEBA8FA8526AAB2B4 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D99D4D1F0BBB15D16CA6DB89F3A3ACFE /* UIView+WebCacheOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 2CB0EF08B4230F646A80CB6163FDD577 /* ContextImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = B2B104CF83A71EDCD89DCB019759984F /* ContextImpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2CD9BFB14B3AAD12E6272727F3F16C8D /* CRC32.h in Headers */ = {isa = PBXBuildFile; fileRef = C802F35EF4ADB2EB9720F2A4042A62CF /* CRC32.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2CDD146EF35819C8E736C161877EB3F8 /* Common.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41719ACD881D756B29502E6C40D1DBA6 /* Common.swift */; }; 2CEE2991D3F91B4F4A487264CAD9ACBD /* N64EmulatorBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = B57490C68F306064A30510F0C2DDA0E9 /* N64EmulatorBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2D1DC89F0FE2EC35DD25E069F2F52F1E /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = 91D739B0F0436A072325BACEA40B2CDC /* types.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2D2A1C10BEC39B09A8C53A28163F2ABE /* BatchRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B54726597AE9AF0483DF076A1CB773B /* BatchRecordOperation.swift */; }; - 2D39914601466E07EC9C542BF8D7D382 /* Sharing.swift in Sources */ = {isa = PBXBuildFile; fileRef = D205F13F881DDD5824256D1FD8747E00 /* Sharing.swift */; }; 2D4CBFB3DA8BB2BAA010AEB44FFA0320 /* rtc.h in Headers */ = {isa = PBXBuildFile; fileRef = 244AA64A50CBA5A8F3D7EC0201C6CF6A /* rtc.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2D5488880B255FBAE91B98F8FA69A250 /* ftcffdrv.h in Headers */ = {isa = PBXBuildFile; fileRef = C2333DD47D710D157D5C8339C5A707B1 /* ftcffdrv.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2D584CDF59584E88779B5E464D1E9931 /* NstBoardBmc9999999in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 01A0F25A36DD2B95302A9A4B684EA1DB /* NstBoardBmc9999999in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 2DB8890C2DE942DCECB22655819C6FE6 /* retro_environment.h in Headers */ = {isa = PBXBuildFile; fileRef = 8077B4383C95D1FBEC9B64F05C89EE12 /* retro_environment.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2DE20A858C7EEF187435BA5BEDE9B896 /* opengl_ColorBufferReaderWithBufferStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0E1CF313816E073C9354BD9519ABC4C4 /* opengl_ColorBufferReaderWithBufferStorage.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2DF8EEB0BD33DE6A8C07BF6AC69E00E1 /* GTMSessionFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 9265E3D9F1667F3A362493594E094FAD /* GTMSessionFetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2E03E6F3CB3E7ED0F7DD3429E041D3A2 /* Platform.h in Headers */ = {isa = PBXBuildFile; fileRef = 79850525864D43CEE846DDB866D61E85 /* Platform.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2E1C8BF321126F550B67F1BA0970346E /* NstBoardAe.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5D084884EECE3559E55319F1424A8D8C /* NstBoardAe.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 2E3AEDA970F08075A701ED6474E82C4D /* TxHiResCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15A4C1C5522245806B98E3CE07AD6848 /* TxHiResCache.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 2E427DD382F3D107EE028F8C5568F135 /* NstBoardAcclaim.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F6AAFDEFA9F71F3C57731EBF4AB8D32C /* NstBoardAcclaim.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 2E578662790E7405F18171B7788CF477 /* opengl_ColorBufferReaderWithEGLImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4979D7D45D6BAB80551FE538CD80B68A /* opengl_ColorBufferReaderWithEGLImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2ECC7131CA3714D6B97E8E84BE6921B9 /* GTLRBatchResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E93E4BE7AB127183B96B96E91487DA6 /* GTLRBatchResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2ECC7131CA3714D6B97E8E84BE6921B9 /* GTLRBatchResult.h in Headers */ = {isa = PBXBuildFile; fileRef = C86290F9E481344A373DEC5BBD238F5F /* GTLRBatchResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2ED8361FCD98963DF31000F8BC88A1A2 /* bios.h in Headers */ = {isa = PBXBuildFile; fileRef = D729CFBCCA3F1124FDE97773831F18C3 /* bios.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2EE272A27A44DBCB94B73463933F839D /* NstBoardUxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F1F89E144998D06FB16B9DB7CF541BFE /* NstBoardUxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 2EE3CF4A55B398127C54E6F2C9A53048 /* armdis.h in Headers */ = {isa = PBXBuildFile; fileRef = B8723B4EB8758045AE0B087B5528EDC2 /* armdis.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2F385E3F6A66486A704ADE71FEEDD062 /* plugin_delta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CFA17A05957A8AC58AB18B148D1D0249 /* plugin_delta.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2F67E3ECDAE272A345C6D46891A2C1B2 /* RSTHasher.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A02436142FF717FBB3C4C31467F365D /* RSTHasher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2F43218F9FA8FF4F1F5323D5274052E8 /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 849846DBBB863B9383830F30D108134F /* Standard.deltamapping */; }; 2F967BD0AD5B8042F9E85873B2515693 /* DropboxService+Versions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32AB913747C45B7840A8E10C3BF8D166 /* DropboxService+Versions.swift */; }; 2FB9B9FB558A85775DE822A31696AEFE /* metaspu.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CFCEE5AB7FE76148097A054CE7FD7FC /* metaspu.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2FBE984EB7E1BF80CABF35BA76DFCE5D /* GraphicsDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = F260A072AFC19EC79DBD867F12737C22 /* GraphicsDrawer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2FD81A5266BDD0F96753393C7A2447F7 /* svgldict.h in Headers */ = {isa = PBXBuildFile; fileRef = 264DC59A3497324A71B2383889C54393 /* svgldict.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2FED2CE7F8E34AD0E1D1A944CE82CB34 /* NstInpKonamiHyperShot.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 379BCFBDC4056CD29292B7F8110124D7 /* NstInpKonamiHyperShot.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 300302D065CB6F026BAA98ADE3A1A4E2 /* rom.h in Headers */ = {isa = PBXBuildFile; fileRef = D3702A16CB1965259051FE3C110B95F6 /* rom.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 300332AC28D55485028392F71EE93567 /* GTMAppAuthFetcherAuthorization+Keychain.m in Sources */ = {isa = PBXBuildFile; fileRef = 995CA28F9F3E92A264FBC6FD3BFEC725 /* GTMAppAuthFetcherAuthorization+Keychain.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 302BFE418797ECD28F1A79CE497EE262 /* NstVideoFilterNone.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AB95CF30AA5DD54A0DCC146AA3F37E23 /* NstVideoFilterNone.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3042064BEF43B2A390956F92236474EF /* texcache.h in Headers */ = {isa = PBXBuildFile; fileRef = AF7FCA61DFFF5A0D5EDF120BDC0514A1 /* texcache.h */; settings = {ATTRIBUTES = (Project, ); }; }; 304BC6E41428DF5C0057598C8E9FDC55 /* NstInpCrazyClimber.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 74DF3490E9B299E248886B5A9C448B30 /* NstInpCrazyClimber.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 304E477C6D6EB93F08CCEC15259ADE99 /* SoundSDL.h in Headers */ = {isa = PBXBuildFile; fileRef = 4361C606A9E2C67D96A18D5590A9AEB0 /* SoundSDL.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 306CF75F20EE06701E62C2F332204906 /* RSTPlaceholderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 102051CEA6C8229254571DDE0692B129 /* RSTPlaceholderView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 308D2F146EA6E5126EE263B28725FF2C /* NstBoardTaito.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3E8BD0AF4002F9EEE14F93ACF23A5AC6 /* NstBoardTaito.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 30F611E5B17257429B1483895D4FDC55 /* RSTCellContentDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 9ACC9194F5B06F05848A391AED6BEE15 /* RSTCellContentDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 30F7CCAF71389D1C63A349ED60EACD0E /* F3DPD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84FCDC90348CF9FD825BA4BB11409E38 /* F3DPD.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 315E15B79761DA1FC6FA8D8175A32DDB /* GBCEmulatorBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 461A8C42FD4C2807C862842BD5FF46AB /* GBCEmulatorBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; 315E8B8A7A8A6FE1FE7CFA882D89B6CD /* Joystick.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6F227DD9B538B796B61C83211146E652 /* Joystick.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3175516DFA9D9463A3E962D748FEF0FA /* GPU2D_Soft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40AB219ED1D7513FB3C92CB18411C525 /* GPU2D_Soft.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3193E83A4DE3F55C0ACAA4A5DDDF6068 /* Statement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30B4C2B542657C7F8695159F71616D5B /* Statement.swift */; }; + 318E0C75314BDBA155BDE4B3C8240D98 /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = DE00BA4DC34A73CEA579554268A87C7A /* Standard.deltamapping */; }; + 3193E83A4DE3F55C0ACAA4A5DDDF6068 /* Statement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79FCE5BAA38140636DB207A1281BEF35 /* Statement.swift */; }; 31A151D297674D2CC76C50B26B05E889 /* aes.h in Headers */ = {isa = PBXBuildFile; fileRef = 92E8CA46B70D87BC06F626C7D872192C /* aes.h */; settings = {ATTRIBUTES = (Project, ); }; }; 31AE68A1A4B0D94063CF428E463DE2F1 /* NstApiVideo.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F8248C4C4BB7F1AF387613BBB9BAB20A /* NstApiVideo.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 31C7FDFCD4F92F8CB515C341B0521551 /* ffmpeg.h in Headers */ = {isa = PBXBuildFile; fileRef = 60046D5BF02E1F91BD2CA6A0E3316E04 /* ffmpeg.h */; settings = {ATTRIBUTES = (Project, ); }; }; 32056D2551678F8B89365A332D959A77 /* NstTimer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7DC056D6B8BEA94F8A53D5B5CA63969D /* NstTimer.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3207A744A0EC8E70EEB0AA6E10E943E9 /* OpenGL.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 30FF634ABA9431CA1BA6C64DFBACB33B /* OpenGL.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 320CADEC89CAD18AD865510C8771FE68 /* MelonDSEmulatorBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8650C7DFCFF04815A2CA9A7B9DDE7835 /* MelonDSEmulatorBridge.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 320ED7C60FA3138174BE023143B40106 /* RSTDynamicDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = DD5D281A9BAA507A58AFEC76D9B56359 /* RSTDynamicDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 321B164044D737FFB9A35C6BD7CE3516 /* language.h in Headers */ = {isa = PBXBuildFile; fileRef = 66B94332C2892C2FBB6F744B32DFA57D /* language.h */; settings = {ATTRIBUTES = (Project, ); }; }; 324BAD8E812B89F324F4D583EC026775 /* NstBoardBmcGamestarB.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DF54EE6E46C88890646E05D44ABA8AE7 /* NstBoardBmcGamestarB.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 325BC97AB971713DD83322F72769676F /* NstBoardBtl2708.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F542D708E96E4F25592495378286E4B1 /* NstBoardBtl2708.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3269CF2457432C5813EEFEB4E0F6BA07 /* freetype.h in Headers */ = {isa = PBXBuildFile; fileRef = 899AF674EE78F6439D7C571A29DF34E9 /* freetype.h */; settings = {ATTRIBUTES = (Project, ); }; }; 326A3D0B1D11631226DB2F849952556D /* driver.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B119E0AC7ADD1CC57AF7E28DB5B60FD /* driver.h */; settings = {ATTRIBUTES = (Project, ); }; }; 326ECEBB535A74B6912E5F9E9AF13AC5 /* DriveService+Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = B66B120C3DF40DF57AA094724AF2C8EC /* DriveService+Files.swift */; }; - 3275C29735705C7563D266F047EAC4A6 /* NstDatabase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 844F6EF3E43F3AF5908FCC044DE872CF /* NstDatabase.xml */; }; 32D363DFBA05AE5D79F25531D5D89D02 /* GBI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BDA518E2E6EEDD1CE7091CA1EA3C08F6 /* GBI.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 32DAE9B61661C3A4A3EA1A5C8EC9B49E /* NstBoardKonamiVsSystem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1763E08842BCEC128520DBF80C43E656 /* NstBoardKonamiVsSystem.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 32DAF029C5DC04196E825E69B7533AD2 /* NSLayoutConstraint+Edges.m in Sources */ = {isa = PBXBuildFile; fileRef = 020BED2D96312DD71C54EFA929FA2790 /* NSLayoutConstraint+Edges.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 32EC2E4E41958624CCA91DCA445166C1 /* glsl_SpecialShadersFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 47CA46C0583951D8B339C4E4B173CE99 /* glsl_SpecialShadersFactory.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 32EC590FE39AC43D6AD3A9C64FC8D19B /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAF7DAE3D701F9616A709277BAC90365 /* Operators.swift */; }; + 32EC590FE39AC43D6AD3A9C64FC8D19B /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5730EB24A1B5DF89397E65245AFD203 /* Operators.swift */; }; + 3349744BEC0A79775512D95E7488C0F1 /* DeltaTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B4B66C3F7AFFDFBD7BCFD2880FC8411 /* DeltaTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; 335571A4CDE0C1DC0F62569FA623EEBE /* NstBoardWaixingPs2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3996F6488831487C7AA7EAB7511543DA /* NstBoardWaixingPs2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 33A7C76D415B0F51F7293637584EC3AC /* Combiner.h in Headers */ = {isa = PBXBuildFile; fileRef = E91F8931F17AEC8AEFB6296B63AA2C09 /* Combiner.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 33F0F3CF6FE140EF596EDE3AA19829A0 /* Game.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB90A19DC38F46FCF2E949B3090E97F /* Game.swift */; }; + 33F1065FEAD1D6EC2782C811890D9EEB /* RSTPersistentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 49A75C63D0F8A1F76D4ACF9DC8EF0DC6 /* RSTPersistentContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 342EA3CBC961C2B408226AAFA5D4DA4F /* TeamRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48EF4CE2E6166180B091E96C87A37818 /* TeamRoutes.swift */; }; 345316A52C02ACCB2882977374E80EA6 /* NstBoardBtlShuiGuanPipe.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FF4577CBAA8E38968A59CE8320B395FC /* NstBoardBtlShuiGuanPipe.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 3457C62BF9E6FE206E0CCC2E2EE34A17 /* MFiGameController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23C08E2D90F88A855F59186739545F82 /* MFiGameController.swift */; }; 345DB77CA3ACD8F5349E96CB1974BDE2 /* WindowHandle.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 69D7D593CD4C8A55DEF962DF985D212C /* WindowHandle.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 3475293F2FC20AA0943CA662CE115A5B /* GTMSessionFetcherLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FC8D1F562E78B93CBE1671FCCAA9817 /* GTMSessionFetcherLogging.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 3479A01FBDE5D7B6E0B9BC7FEF0CAC91 /* NESEmulatorBridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AA19FDEFBF3791B2260D269109B7E56 /* NESEmulatorBridge.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 34A57857ED20105B871265EA4B7D353C /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = ED98D3CDD8B67DE813123392E2953CE8 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 34A57857ED20105B871265EA4B7D353C /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 01E69CD02F04A42E91A440593AE38207 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; 34BDD773AC6D00AFE24B6866C5470976 /* NstFpuPrecision.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 183064BD8F9AF8DC200D5FDB866A0D4A /* NstFpuPrecision.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 34BF7B799F649C8F99627337460D48CE /* UIViewController+TransitionState.m in Sources */ = {isa = PBXBuildFile; fileRef = AC471F9A34E0E57C35A2BF6C0F31141A /* UIViewController+TransitionState.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 34CF59F82C0CE1EAB39B0D6C5FC96FE0 /* ARMJIT_LoadStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6F9B0CA903658EB64764843AB640E8F4 /* ARMJIT_LoadStore.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 34D1AC4D666FD6B152CBDABBE3A4BE1F /* Context.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 32A4A563FF738E6E5995207D826FF1DA /* Context.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 34F65B7232469CB8A4CCE1EDFCD19326 /* dd_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = 1161DA676E766D39CAA4591DBCD53D45 /* dd_controller.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; @@ -397,55 +420,53 @@ 35C94B00B4B58034850BF15B21F196B5 /* KeyedContainers+ManagedValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 538BECA09BF84EBE9DC16158EAFD9155 /* KeyedContainers+ManagedValues.swift */; }; 35E50479AA3B7CA4D6A4A2B4810DC294 /* NstBoardJalecoJf16.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BA4401C6EB69ED4B5D6552518CB95B8A /* NstBoardJalecoJf16.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 35E905C92CF7F0918E9A5EBEEFEF98F0 /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = A42F4FC362D2CEB66CA5DE0990728B0C /* unzip.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 35EFFBCAE32A7D4501E3A0F047EA29C9 /* RSTCompositeDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 18131699F685BF8185CB2F21F1C06860 /* RSTCompositeDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 361616F5761CED1182C2D3CC9788E51B /* UICollectionViewCell+Nibs.h in Headers */ = {isa = PBXBuildFile; fileRef = F1F469997C999D3731F8539D750D3344 /* UICollectionViewCell+Nibs.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 369DB89CF198E876998460F62C0CA2EC /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = AD7E8DA1695D9954D559B5D1CB60DE8D /* UIImage+MultiFormat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 360E1B247D97F6DF0BE373F88CBF75E7 /* GameControllerStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B192A444B6B7EA865548723995B900AC /* GameControllerStateManager.swift */; }; + 369DB89CF198E876998460F62C0CA2EC /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = B22C35E3B81AAA21464AC1443352552A /* UIImage+MultiFormat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 36C600E123E488A804AB0F2B5FC00D71 /* aes.c in Sources */ = {isa = PBXBuildFile; fileRef = BE590250A2B1C45F7A1EC7B74A9EF339 /* aes.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 36FC4713D6BAA88A981BCE0B07382B94 /* UsersRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00454C669FBEBF5003E744A5BB78F1E9 /* UsersRoutes.swift */; }; 36FE2EC6BDB93A304B56C96CB059BB39 /* NstSoundRenderer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 84A11738FCB471CAF4902770A804B011 /* NstSoundRenderer.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3702DDF50BE8535FEF56C9CFA376C2DE /* UploadRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E3FF04636DCBF756267098ECB332377 /* UploadRecordOperation.swift */; }; 371D3EAF5FA6A92E6BA8BD1CA07B95C0 /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = 65C0DDF5FF53C81B94F9185A89D0DF7B /* pngwrite.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 371F3D9AEE4AB4A90CC41FD9305E72EF /* NstBoardFukutake.hpp in Headers */ = {isa = PBXBuildFile; fileRef = ED3CE2613C7B1382B9B1C109534C8677 /* NstBoardFukutake.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 373CA8EF1554F91A51DF75B33411DFEA /* Custom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B0B928F4C2E085FA3D58246910F1645 /* Custom.swift */; }; 374C1F24F3C19295120D5646E1DA1A0F /* text.h in Headers */ = {isa = PBXBuildFile; fileRef = 48FA33EC260F5271DEE686E157FEB4BC /* text.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 37707C9F0680232CAFAE00AF8DF3B36C /* BaseTeam.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAB0449592C0DCA8414A2D8785033227 /* BaseTeam.swift */; }; 377B2FB346234D5C45951EDC03EB62EC /* N64DeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 757A732B7BAC976FD18554A3F1D66BA3 /* N64DeltaCore-dummy.m */; }; - 37865A8F28DE4C5C4DFF48132A8B4229 /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAB38A1A17078FD95D88608D7190F6C3 /* GameViewController.swift */; }; 3796315C8CB6461D09C52C867DA0CA9D /* CombinerKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0736FF5EBC91716B5E0653CB6248996E /* CombinerKey.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 37A5AE7547B5762463DCCB36B0BC9780 /* glsl_SpecialShadersFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A7DADFCDAEAC310AB54ECC56773765 /* glsl_SpecialShadersFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; 37C280385663D2CEE2D79E2E85F9D75A /* NstBoardEvent.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 40807140551163121D63FB8D225410AD /* NstBoardEvent.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 37D1C4683E6711463F2540C01C280D0C /* NstBoardBmcHero.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AF44DB3EB55D6F519C51804F0F59E94E /* NstBoardBmcHero.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 37E0ACD87C3D17C69221B4DA2726573C /* sdd1.h in Headers */ = {isa = PBXBuildFile; fileRef = 8462BCA1FC7115AE1A6D25D42A9EB3A3 /* sdd1.h */; settings = {ATTRIBUTES = (Project, ); }; }; 37FB9E3B21B67351C595FE6329058D2A /* PaletteTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D09731F0DB8A3CBA35CD1970214969 /* PaletteTexture.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3805C162EBF43555EF66800799D527D4 /* GTMOAuth2KeychainCompatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 520C2AA27D516129AD50BA5B31CC7080 /* GTMOAuth2KeychainCompatibility.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 380E6917652A12A1A2107E3D94240F53 /* ROMList.h in Headers */ = {isa = PBXBuildFile; fileRef = 1735D1ADD52CF3EE3763809EF50C9F46 /* ROMList.h */; settings = {ATTRIBUTES = (Project, ); }; }; 380E9A0C6F7B1FDEB44045C79CA6E8D8 /* NstBoardFujiya.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A80B14BCE931AAFE18709ED7105DBD3B /* NstBoardFujiya.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 382986AC6CAE5798F8F27EF0F944B605 /* RSTHelperFile.m in Sources */ = {isa = PBXBuildFile; fileRef = E19DE8A1E6B39848A1B39E4116DAF8FC /* RSTHelperFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 38417C45AD5A82449E838B0D23E1AA02 /* sfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = 734E6CDBF740483975822ECDD3011947 /* sfnt.h */; settings = {ATTRIBUTES = (Project, ); }; }; 386695E047CA659FFC0463115DF72656 /* ftxf86.h in Headers */ = {isa = PBXBuildFile; fileRef = F0C210243CCE929986475552C4DBC945 /* ftxf86.h */; settings = {ATTRIBUTES = (Project, ); }; }; 38A72D0546438FA178295D4F10BDC1E6 /* GPU3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C8AF4CC1A659AC6382CFC356A0E46E8 /* GPU3D.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 38A8DAAC138F27AA049F7FCB542E6E6B /* UICollectionView+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 52E47CCC16C0DF6A37D17E02443C4812 /* UICollectionView+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; 38ACEA3D6CC622850CAA2FADE4FB36DA /* ftpfr.h in Headers */ = {isa = PBXBuildFile; fileRef = C9D5F54CAAFE4356F8D137546851DBFD /* ftpfr.h */; settings = {ATTRIBUTES = (Project, ); }; }; 38ADB5570CF02403F8B5930BEB48BB97 /* NstBoardUnlMortalKombat2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 77BBA8B2440BB7526EAB4DA6E7AAD930 /* NstBoardUnlMortalKombat2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 38BD70CD10A46DB3C74EDA6719DCD8ED /* SMClassicCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = 32A7FC18682D076FF7779592F09D9ED6 /* SMClassicCalloutView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 38BD70CD10A46DB3C74EDA6719DCD8ED /* SMClassicCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = AE7EE92CFAB3F620FD1040DE3D968F27 /* SMClassicCalloutView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 38D4116601DDB6AEC250E9DB3C1FD422 /* NstBoardNamcot34xx.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 42D48E98CEC65DB8BEA1872E413A49B3 /* NstBoardNamcot34xx.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 38D438DD35170E7701194B17BB94BC2D /* mc.h in Headers */ = {isa = PBXBuildFile; fileRef = F4DA211A37EA56254CA25182C7D9A096 /* mc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 38D9EB2F982AA7BC048DB709CC61DACF /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9103C0E62058A84C7C9BDF9F6915958 /* Request.swift */; }; + 38D9EB2F982AA7BC048DB709CC61DACF /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C7CC72F8BB248BA3F1971C0259ACC5D /* Request.swift */; }; 38F5A810F3D86CE807B2D39CC8791698 /* NativeActivity.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B7E5F1C69ECDFCCEB07609AB872575D2 /* NativeActivity.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3905AD6ECFB651D7669D37C9D403B8D7 /* F3DEX2CBFD.h in Headers */ = {isa = PBXBuildFile; fileRef = E0B853CEF240ECCC29281860C143B77C /* F3DEX2CBFD.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 390E789777169BC77DC7EB7182A754E8 /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 13BAA83DB690C1835AB70FD3FC749AFF /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 390E789777169BC77DC7EB7182A754E8 /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C464583B3EB6274B1F3762F64CD0FB /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Project, ); }; }; 39253F2CF8ECA03207A8E3D39D5F1BA5 /* statemanager.h in Headers */ = {isa = PBXBuildFile; fileRef = BC0630E8B04720358454883097869D91 /* statemanager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 394DEA4CCE1E7BC2D9E0E16E4B2450D9 /* PrepareUploadingRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9836BD15917BC5F758C9618E5688C42D /* PrepareUploadingRecordsOperation.swift */; }; - 3961D91DF742EDEBE6B6AD5EA542CE62 /* GTLRBatchQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = BE678FC4DC246B0D19DC3F53975AFFA0 /* GTLRBatchQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 39942BCD715EE739CA18568965770DA3 /* Paper.swift in Sources */ = {isa = PBXBuildFile; fileRef = A97DFE65ECE733F3876CF13306D4C68B /* Paper.swift */; }; + 3961D91DF742EDEBE6B6AD5EA542CE62 /* GTLRBatchQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = D2A9972C73302E7859114B00F97119FB /* GTLRBatchQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; 39D17BB4347A2846592117950EBFB896 /* controller_input_backend.h in Headers */ = {isa = PBXBuildFile; fileRef = 82A0C157F7F157B4BEC76C3EBC632E38 /* controller_input_backend.h */; settings = {ATTRIBUTES = (Project, ); }; }; 39D34FAD5F93C63CF3958E0446BF259E /* cpu_detect.h in Headers */ = {isa = PBXBuildFile; fileRef = 09DD69CF6FC257E5D3187CF71B58CB31 /* cpu_detect.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A1312E25EB2994225EB2BCB925F5A3F /* UIAlertAction+Actions.h in Headers */ = {isa = PBXBuildFile; fileRef = F1F24B674E056CE5A32339DEEBC8A533 /* UIAlertAction+Actions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3A356D96085EEA5702F73554AC009271 /* DepthBufferRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E92C74541335DAF4E282B176B241F5C0 /* DepthBufferRender.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 3A7DA61227113933BEF75C391B160217 /* NstApiConfig.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B180C048F26D4DD3F706AF3E35AD871F /* NstApiConfig.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 3B006A93A645B554478776F8C54456A0 /* UsersCommon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8F081559EC427BB8BDA8B17DBCCFF1 /* UsersCommon.swift */; }; 3B0E457EA336D6AFF3B484517851BBA4 /* glsl_CombinerProgramImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C04A9D6572366B902256741978C0EE5 /* glsl_CombinerProgramImpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3B1C9F17F3250EF56B06923F6EF29FB7 /* F3DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 931B1EC0132E5C5FBA795E91409367B8 /* F3DEX2.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 3B68803FFA7F105C9F4BD0957AD6B576 /* hermite_resampler.h in Headers */ = {isa = PBXBuildFile; fileRef = 747A20244D91C2176F1D00D844CD1E8A /* hermite_resampler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3B82AC247A60ED05FDF7730BBD1DAEAE /* NstImage.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D794CF918186C2DC6EBD49FC2FAEA95F /* NstImage.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3B9DCEC0158DC291FBCE26CCE4B5D8B7 /* AutoBuild.h in Headers */ = {isa = PBXBuildFile; fileRef = F0CF6600305F4644F8DEA0EC7ACC3262 /* AutoBuild.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3BECB8CB45E22A72402F5C33C4B4E5AF /* NstBoardBmc15in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 063A16999A8C4EC5F4A86EE181EE41A9 /* NstBoardBmc15in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 3C20AC92FF519D4337D07CB85B2CB901 /* Game.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB90A19DC38F46FCF2E949B3090E97F /* Game.swift */; }; 3C237B0C04B8C25EA1818A407170D381 /* ZlutTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43DB8C4B29085E6FE14954933B1854B8 /* ZlutTexture.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 3C28559305A371A192F9EBCB9A901C0C /* N64Types.m in Sources */ = {isa = PBXBuildFile; fileRef = 62F69A205D68CC5AEAFCCDE14C671612 /* N64Types.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 3C59F8D174369320F9B9EEEA081B8B1F /* instructions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DBBAADAFC68D964BA907505CDBFC1CE /* instructions.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -453,17 +474,21 @@ 3CA28C0D6C9A377051BD28D81B3781ED /* Harmony-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 73E2631C811B52E4EF1AA3B351C29EC3 /* Harmony-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3CB2144DF83BFEA51C34E77A5C315B7B /* NstBoardAve.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 58C4A45607185769805CFBEE70467B54 /* NstBoardAve.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3CBF4C3E5B87549F49989D340468FA3E /* callbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 538F365E94CEC13764BF9209E73CA629 /* callbacks.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3CC43C0EB442C0D7BC854C9FEF6D1D6A /* GTMDebugSelectorValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 573983B379A6F917F1D0E630D5F87BC0 /* GTMDebugSelectorValidation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3CD9A8FB6B29BA2284144975AE6D10C9 /* UIAlertAction+Actions.m in Sources */ = {isa = PBXBuildFile; fileRef = 180F36277339830E2C8E248501C9798F /* UIAlertAction+Actions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 3D1EF27AD894FF8A7F37FF546DD4F21D /* NstVector.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1DEEC2B2658603EA59BFF5DBE5E02A90 /* NstVector.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3D3BD7BBDF22A6F7ED000D8EA7A4934B /* NstBoardBtl6035052.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 934B0D52579AC8E47A0F434C6FE5AFFE /* NstBoardBtl6035052.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3D43019BB04A9939B24BB06F2DBFB0BE /* ftcid.h in Headers */ = {isa = PBXBuildFile; fileRef = 04B16560C485FAC4F5A3F7706B845182 /* ftcid.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3DB7323EA3C2947107848876AC1232AA /* ARMJIT_Compiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8640DC6AA2D20C422ABD3FDCD0DE77F4 /* ARMJIT_Compiler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3DBA8C408602F2A5BBE60B6FCCBE8AB9 /* UIImage+Manipulation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D3C0C4D16DA1166A4BE49E0FBEB856E /* UIImage+Manipulation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3DBAB4E63481B360DA60F6130EBBB6CB /* ControllerSkinTraits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 861E076A2C54E6FC988A6CAC6C389867 /* ControllerSkinTraits.swift */; }; + 3DC96774D87A9317378E71FB6540A329 /* OIDGrantTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 667EABC7424BACAE8E7C808CEAD440E5 /* OIDGrantTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3DDECD97243332A11940C4677CEC7E0F /* SDL_opengl.h in Headers */ = {isa = PBXBuildFile; fileRef = 744DCF637AD3CB2923FC1904923483CA /* SDL_opengl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3DE9029916178490DE8DD80B24B5A8E4 /* Debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 801960408F5BCEF8874FE7A6F9DF0F5C /* Debugger.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 3E1618BCFB5DA91248C917A8DA9AE3D3 /* NstBoardIremKaiketsu.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 38B819F08E6CDB261F68D64D78E0CF68 /* NstBoardIremKaiketsu.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3E178519446C458A44FD9175A4816649 /* eventloop.h in Headers */ = {isa = PBXBuildFile; fileRef = 135D0D9E24E408F464F93300BA4BF7B3 /* eventloop.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3E22DFE57B4EBE6FC1BB113A4137CF95 /* SPU.h in Headers */ = {isa = PBXBuildFile; fileRef = A075A26579CDA067964771B08D20968C /* SPU.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3E292073CF1616500B4CB658DCA48FDE /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 60815A565ED55CD68EB1B67F9D360CFF /* UIButton+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3E292073CF1616500B4CB658DCA48FDE /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 684DFD7ECBB5551A653A62AA04E7288F /* UIButton+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3E2A545C8EA735D48E269DFD732DC107 /* OIDDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = CB6DE8B6B571E74C9ACD718E9C02F072 /* OIDDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3E49934B932E44291A6595521AD5FBCB /* SPU.h in Headers */ = {isa = PBXBuildFile; fileRef = 1666402F4E06C53A701E4014F74955AC /* SPU.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3E82E205492677654BD20E486E6D55C6 /* NstBoardBmcSuperVision16in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0DC3D4170D48C711D6FF239C665FCDD3 /* NstBoardBmcSuperVision16in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3EC3A1B2E8D115DBCFC2BF7E85B0A2B9 /* DSi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B07DDECAC335B9CB2DA70E8D6BF1CFF /* DSi.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; @@ -471,16 +496,16 @@ 3F05A1EAFB55D09A47BB8651B943A268 /* System.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AA822019E7EB83C4B3DBA1EEE0BBE2F /* System.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3F5F93A1B1A4F796AA7838A9A66A495C /* NstBoardBtlT230.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1F32CBDF7F217BF39F5A8E98EBE51698 /* NstBoardBtlT230.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 3FBAB86B54062A011F94D5ABFD62B5A3 /* NstBoardCamerica.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9B017390736A088CA383EA6DDF94063D /* NstBoardCamerica.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 3FFB08EA3DD68464BD5B874DB0D508E2 /* UITableViewCell+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = C2AD9DA73A337680DFC1476096E9C55C /* UITableViewCell+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 40222FC2AEBC1088A5771378F18D3A8A /* RSTCompositeDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 18131699F685BF8185CB2F21F1C06860 /* RSTCompositeDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; 403C7D3C741628AB45D5960121543963 /* F3DFLX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0A89CB13248D0FA84EF44A60AB37C8C /* F3DFLX2.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 403EF48EB8ED589888457967A8D12BB3 /* UIViewController+TransitionState.h in Headers */ = {isa = PBXBuildFile; fileRef = 8947E72A2EDA1E13F561A81841DAB93A /* UIViewController+TransitionState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 40434CD6274B9D13388DD1A08B7C6EB6 /* OIDClientMetadataParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = ED6757A3344CDA521DE024969FF490FD /* OIDClientMetadataParameters.h */; settings = {ATTRIBUTES = (Project, ); }; }; 406ACBAA558E7009C9ABE09BB98024A7 /* NESDeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 44FDE520DE8BA6087B7A0628630C3AED /* NESDeltaCore-dummy.m */; }; 408412078840B12616A5EA74E0CEF7A6 /* glsl_Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E46BF8BF2F2DD70A3F7AE44AFA1466D4 /* glsl_Utils.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4097865A62524EBB97CACA88B1BE2308 /* Debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = C60A7836613451F77D217AF7D66A21EE /* Debugger.h */; settings = {ATTRIBUTES = (Project, ); }; }; 40A72760E475767E8E18C89194D84C67 /* MemoryStatus_mupenplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 863E54F84D90A144B48A55BE40E3EE1F /* MemoryStatus_mupenplus.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 40AADBB945DF6A29B302371C01BC5902 /* MelonDS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 872BC2F2D8826C3822D2E02AB2976B11 /* MelonDS.swift */; }; 40AC2C44B00A9FBC735D913A5C765F7A /* ObjectHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 90E890A36409F6874E9DD9D9BB7F4A38 /* ObjectHandle.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 41272E445B92FA12681A0FC9AA1AC082 /* Entry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B8DECBB8717BFBD8259BF1384944BA /* Entry.swift */; }; - 412AF0DBA6A6CF4B82D2DB074592D513 /* FileManager+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 779480D51F350F2ABC3479ACDA749DEB /* FileManager+ZIP.swift */; }; 4146909AD5CE77864F1BAF240F97F310 /* UploadRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA3D00922405E55EEC5C2AF48BB304DE /* UploadRecordsOperation.swift */; }; 415FABE0D2A11A6A9C7E52E5A575429D /* Operation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94524D87F2C5E593C08DE00537BEC7F3 /* Operation.swift */; }; 4165A16184632DD0AAE2D213433DE3E2 /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 97BCFB8C5295906B338CF86C5547DDC4 /* common.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -490,39 +515,45 @@ 42ADBC94026A94B7AED21474AA91E9F3 /* NstBoardBmcSuper700in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D3DB415A75DFB9B29725114787E05A3B /* NstBoardBmcSuper700in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 430E689B4FF1D3DE508F49ED4E9B4FC6 /* ftdebug.h in Headers */ = {isa = PBXBuildFile; fileRef = A6A6777F21A7C3890E7A6B28E83096DA /* ftdebug.h */; settings = {ATTRIBUTES = (Project, ); }; }; 433B9089E8B5B82EE709A9432D44E1D7 /* Config.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DB683D01C648B7B51BB512DE2E9B3032 /* Config.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 437E25CE8D9FECFA14D752316FFF0F39 /* GTLRUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F94637A21D42A1D3D7F8F0AF2786C782 /* GTLRUtilities.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 437E25CE8D9FECFA14D752316FFF0F39 /* GTLRUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = AB35767FB3494B8BDD53E3A7E35D3EB6 /* GTLRUtilities.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 43C3BF7B5589E30CF1CE21E9E049DC60 /* assem_arm64.h in Headers */ = {isa = PBXBuildFile; fileRef = 20918165D519082777452FE2CD859CAF /* assem_arm64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 44042F2B99972A4EDAC118661C59CB69 /* CoreFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FAD8256834DC35886EFCF3F5F2715E /* CoreFunctions.swift */; }; + 43CDEC29F52D106C7CBFD94EC9039CFD /* UsersRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D05B11A7C98445859C746B5D40BBDBA /* UsersRoutes.swift */; }; + 43F1A4BDE979ACB5C59D9700D65B4EDC /* UIView+AnimatedHide.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C10797B4AC0FCD5DC745C1F12F49BF /* UIView+AnimatedHide.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 43F29BC8E62CDEB1427B4879628AD9E2 /* RSTCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EA9B92D6448E177F0943520E1AC9397 /* RSTCollectionViewCell.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 44042F2B99972A4EDAC118661C59CB69 /* CoreFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94453F3BF5916545D37B02509181E412 /* CoreFunctions.swift */; }; 443289DCFDBEA1FABFCE217938E99C23 /* NstVideoFilterxBR.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CA0570E1B9040E7E10E9E862D844F4E7 /* NstVideoFilterxBR.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 4452A3B84A74D8CC3E425216111986C1 /* DSi_NDMA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD283F7D35BCDE09879EF39524DB9924 /* DSi_NDMA.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 44538FEA658A10C51CE5FFE53DF46A20 /* RemoteFile+File.swift in Sources */ = {isa = PBXBuildFile; fileRef = D89F6FAA9CE995ADA9DD64F071D6212E /* RemoteFile+File.swift */; }; - 4455FB1F03CDFF5EB23EB4757E2B611E /* KeyboardGameController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CFBE66FFB04AC7622932A698B834898 /* KeyboardGameController.swift */; }; 447B2D6138000A4128E47638F821C14C /* OutputSoundFile.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1A4F0E97FCA28B46E41A4DE5C72FDED1 /* OutputSoundFile.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 44C5E9FA4117733FEFF3399287D9F063 /* UISpringTimingParameters+Conveniences.h in Headers */ = {isa = PBXBuildFile; fileRef = AFD1A713033C1C1E163FB0798FB83410 /* UISpringTimingParameters+Conveniences.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 44B777CC6A9B53E503223ECB7AE623B4 /* RSTHasher.m in Sources */ = {isa = PBXBuildFile; fileRef = B2315E586056FC23817E8D8C2F509A89 /* RSTHasher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 44C802CA554BB161012DB21A18A7A6C4 /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = D3B94EFE9B4F5C020D66C89DC5C10A71 /* pngset.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 44EBE24CF46242DEC6CF4AABCB5CB74C /* OIDError.m in Sources */ = {isa = PBXBuildFile; fileRef = EBA697660E1BC4D0A27EE3649B361437 /* OIDError.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4514B3FA5A85C56131710DC47A8E9BA4 /* TxImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 30009CAC05D34574EDE2FE06A804ACA8 /* TxImage.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 45195ED1CB958C58F3AD6D329094A285 /* video_capture_backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 51FDCACC28DDE663B17B2A760F42CF94 /* video_capture_backend.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 458EA2839AA9021279E0AE271492FDDC /* UIAlertAction+Actions.h in Headers */ = {isa = PBXBuildFile; fileRef = F1F24B674E056CE5A32339DEEBC8A533 /* UIAlertAction+Actions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 458F17AEBF072DF613E023DE149AF270 /* SoundFileFactory.inl in Headers */ = {isa = PBXBuildFile; fileRef = 68B8A34B28410A45890249885FAC177D /* SoundFileFactory.inl */; settings = {ATTRIBUTES = (Project, ); }; }; 45C3B9CFAE799760CA4CBA57CD56DB27 /* NstVideoFilter2xSaI.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 446BF4A4F470F437E4E1A9162BB485EA /* NstVideoFilter2xSaI.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 45CD0EC344360CDEB804ECAF751B1D59 /* NstBoardWaixingZs.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C942DF0812B9968B0756146F887EC48D /* NstBoardWaixingZs.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 45E16C89C9189BD3A413347E77A8AF07 /* OIDURLSessionProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = C04CD0898323CEBA2603BBB7EFFFAEC9 /* OIDURLSessionProvider.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 45FA217D8A09EC64E385E20F53E3727F /* OIDAuthorizationResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C6A5480D649962867D4456FE8031979 /* OIDAuthorizationResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; 46101F59E3A158065A47CF0735D4C8ED /* pixform.h in Headers */ = {isa = PBXBuildFile; fileRef = A637E0C39F86236B51393E73DEBF5F07 /* pixform.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4638CD9DD99CAD0A7F22468718342241 /* matrix.h in Headers */ = {isa = PBXBuildFile; fileRef = E4764CCFDB5EDCEA6DD86E722A0DBC44 /* matrix.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4643AEFB068FD6A92BD19F0E36205DAE /* GTMSessionUploadFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 94F5D89236B344C4DD052FE9AB17ACC3 /* GTMSessionUploadFetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; 46478183D9FC65EF2E1C3610EF8539CA /* NstBoardUnlEdu2000.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1BE7418CB47A4D76B9D5A36DD85694BF /* NstBoardUnlEdu2000.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 464CCD19609493286BCFFE576E8DB65F /* NstBoardTxcMxmdhtwo.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4B0D707C42C85E0401099A31987D9A28 /* NstBoardTxcMxmdhtwo.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 466EB28B1AA5A4564D606F43E1D171F7 /* glcorearb.h in Headers */ = {isa = PBXBuildFile; fileRef = 191C48F3CD32BEBC50796D1DFC6E4A00 /* glcorearb.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 46915FD97D6A264EDF51E5DCAE616813 /* RSTSeparatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = A586E5FBA2533BD9EC43EFCEC1A2C549 /* RSTSeparatorView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 469671E0D32F648DB27196BAF2F69DC7 /* AAFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C7C42332867E72843B00287AED57A0 /* AAFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 46FF9345C8C0A2EA2BDB8E1FE3AC3F4B /* readwrite.h in Headers */ = {isa = PBXBuildFile; fileRef = AC05CDE0B2DE442E6439E093636483D1 /* readwrite.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 470DE4570D95C0C2F421FBC881D01F61 /* GTMGatherInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = E4E761B4100120EFEE3E77F6B031F1CA /* GTMGatherInputStream.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4740AC2EFC0DDDC9A86BA19A12ECB0FE /* NstBoardSxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FD4C92660B79698510464254D3D020F9 /* NstBoardSxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 47744763ED3C23B3487734D758FEDD3F /* KeyboardGameController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CFBE66FFB04AC7622932A698B834898 /* KeyboardGameController.swift */; }; 47842F78AEB0AD03A87665212046397A /* Patch.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FF075A4A26D2CB2821B4490289C226 /* Patch.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4786A0246778A4F9901CA54B7146AD64 /* dummy_video_capture.c in Sources */ = {isa = PBXBuildFile; fileRef = C0B8F180095207EB3A174AD98D9EEA8A /* dummy_video_capture.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4792B2AD97B2DDDAAC20D7B7A3655EE1 /* NSString+Localization.m in Sources */ = {isa = PBXBuildFile; fileRef = 0382767F1E8C7949EF46FE377A7CD0CD /* NSString+Localization.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4797779B3AC55CEFBAD9B7BD9B9A2D77 /* GLFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 04DE108C75BD8159971EA3972F4FE9D6 /* GLFunctions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 47AD7E2D5140FB7A291FDFC9177FC885 /* NstBoardRexSoft.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CDE9C9A6E3FCD131E7936A7E0E5E9EDD /* NstBoardRexSoft.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 47B232AC6413E9672408AD7B0B301C69 /* NstBoardBmc64in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D3BFB2D54586B0F4F292765883CE2A63 /* NstBoardBmc64in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 47B7880F6DADA1B122EFE9F8D6F8BB28 /* Users.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2915B37F1313A778ECAC05BE22A03BC3 /* Users.swift */; }; 47C09C7FD05CA156A87825F7D6B15E89 /* NstBoardSachen74x374.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E437C59E1C9A7503EE399AE8E4315FF5 /* NstBoardSachen74x374.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 47E4329096BBA57D81BD6B569EABBD4F /* GTLRErrorObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B469CB48E051A7902C306D720CA859C8 /* GTLRErrorObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 47E4329096BBA57D81BD6B569EABBD4F /* GTLRErrorObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FA556F2079F991C20E924384DE65B53 /* GTLRErrorObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; 480710B240A5CDFF0559E787DF0E603E /* expr.cpp.h in Headers */ = {isa = PBXBuildFile; fileRef = 401AF149315D628F51F0F24FE1B4920A /* expr.cpp.h */; settings = {ATTRIBUTES = (Project, ); }; }; 481B109039E079B06D9C661BEB74C11B /* Sprite.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5989C417F48B1221D46CE94295C7E1B1 /* Sprite.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 48411D1C06D9202643AB98F33ADD7707 /* IpAddress.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B6BFF03236A5A68F45CD21861A215907 /* IpAddress.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -530,14 +561,16 @@ 487E2771DE566B805DCB2BF2CD055330 /* CombinerKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 388D3B28B64A26962EFC0170553CAB16 /* CombinerKey.h */; settings = {ATTRIBUTES = (Project, ); }; }; 488234B4E251914A0E419C6D8BE3239B /* NstPatcherUps.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B4F94C52D8A627401416D85EBCFECB07 /* NstPatcherUps.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 48A1F35EA39F5E2896EDDC85895E67A0 /* ringbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = FF2385D45D7C84B6A81962AE50751035 /* ringbuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 48B03A837B0BFD86A8BE32A40988C7E4 /* AppAuth-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 977B784CD6EABB39FE9BC0482AA8F3BC /* AppAuth-dummy.m */; }; 48DD817CC69046E5FB017EF4D9301F67 /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24AA279D040856030E6831B7389C2433 /* File.swift */; }; 4931555D1623098A4B31C73655104C7D /* NstBoardSachenSa0037.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 265FE08FE13B5C52A3147FA23F7AE581 /* NstBoardSachenSa0037.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 4971FC996AFD80F4012E3F06ACB7A01D /* opengl_UnbufferedDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7101A5A0AF996E8B832B03A07D06EF59 /* opengl_UnbufferedDrawer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4978A05EFDB3386107E32E33472A2048 /* KeyboardGameController.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 897041E46CCC3094FF47D7C48A70AC58 /* KeyboardGameController.deltamapping */; }; 49DAA6130D6C93A83B426B369D89C579 /* MemoryStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = A1B435A350DD71C31D721B35C5E20353 /* MemoryStatus.h */; settings = {ATTRIBUTES = (Project, ); }; }; 49EEBC9534A00EFD7B86C7CE86203F8D /* NstBoardWaixingSecurity.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 293A079685748E186A32952B23B9A480 /* NstBoardWaixingSecurity.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4A2CEE05287DC31AC6F017B22E66EAA1 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82D1AD4741CA6ABB465A5B94AA51CEE6 /* Helpers.swift */; }; + 49F4C2F4E73B38019A937DC4A0064D76 /* Pods-Delta-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E39B6D2E1349BC9CF76985C762A82797 /* Pods-Delta-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4A2CEE05287DC31AC6F017B22E66EAA1 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F0D8C427B02F9167601BA32C12AA6B /* Helpers.swift */; }; 4A5332FE1BEACBD063F1EA5EBC316EE0 /* NstInpMouse.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5C0BC836CC26862AF4502F8F063AD007 /* NstInpMouse.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 4A95FE637C0614FCCD65394782083045 /* GTMMIMEDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = C245F10CFA17E68D0F217A475089F44E /* GTMMIMEDocument.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4A9728DCC481D2CFE27674F84477E5AA /* DisplayWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93D3DD537A145A0D8D88B631512C81FA /* DisplayWindow.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4A981D5F88E2B8258EE381195B7FC35A /* svtteng.h in Headers */ = {isa = PBXBuildFile; fileRef = F14B536FAB82EC772F32590FFFD47BE3 /* svtteng.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4AB56A31CBD9CB1B2355D7987CDBF27A /* N64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 195A6B350BE4AA281F1C3D85C256DE64 /* N64.swift */; }; @@ -546,19 +579,19 @@ 4B075FB36497DA55CE6A2B412C1FFC5A /* ftadvanc.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A1AC84009E55C7A033290B41BE0185A /* ftadvanc.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4B2BFB6E5458B412DEC6145A42ABCA63 /* SNESEmulatorBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2CE70AD051297074549413AFA54DE874 /* SNESEmulatorBridge.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4B649CD3CCD48FB1339D601D607DB8FA /* ftvalid.h in Headers */ = {isa = PBXBuildFile; fileRef = C721E311F467365E34B5B12C8CAF2864 /* ftvalid.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4B774337E6D365988EB7FE766F8462D4 /* RSTArrayDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = D4094ED24EA34D2593C503C8D5C105CE /* RSTArrayDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4B8D2753F745197CCD8EDEDF49CAEEC4 /* NstBoardNitra.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2D1631F683A03686D31B68487812E5F4 /* NstBoardNitra.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4BBEF3361572B71857D744493DCBC068 /* DeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C270BF8D0AF1673AA48E2495128A2CB /* DeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4BD13B01D84D0C6A988B292CFACA240A /* memmap.h in Headers */ = {isa = PBXBuildFile; fileRef = 085A6A3B629A655355B2EB1F1BEA9392 /* memmap.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4C1DDF0BFBC1933C6D1F3D5C0F809DFB /* dsp.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DD4A155AA83E86B6E47CBA1E9CD0B45 /* dsp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4C2A2EBC6411463C8F67D7FCD7F1724A /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA41416AF760A4579E38926180FB7E98 /* Async.swift */; }; + 4C2B420D2EE3244F87309914CDE59B63 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 9D83B27394F827A375C8041D26B9F167 /* Standard.deltaskin */; }; 4C51C3C0CAF1CD7C803907B87D91071B /* GBCTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 193169F4EC9BA3A241FB52DE5F655E55 /* GBCTypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4C5816BFC39A038F607CEBF06EBAFA66 /* ContactsRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 980C29471E6FD37CE2CBE26F28FAFFB5 /* ContactsRoutes.swift */; }; 4C7511173C6DEC61690A29345E93D6B2 /* NstPatcherIps.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4EFA33B973ABB5052C6A15108A0A69CE /* NstPatcherIps.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4D01D7DC630CD8C130383A8FEA5B02BA /* RSTPersistentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 49A75C63D0F8A1F76D4ACF9DC8EF0DC6 /* RSTPersistentContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4CF5835DDC0BB972A00042DE7F906260 /* OIDAuthorizationService+IOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C2A10FC9E495738845331CEF5285D98 /* OIDAuthorizationService+IOS.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4D29C769F92124A8D6D69C9CE092A04B /* NstVideoFilterHqX.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6717E36C97D4C7F7ACA1E5E3881BD3B5 /* NstVideoFilterHqX.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 4D5D1D31E6E6F37E46690A099C11BB2C /* NstBoardBmcSuperHiK300in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5D5AB3E63C0BFFC9BC0F3867C18DD5A0 /* NstBoardBmcSuperHiK300in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4D6851FF1A495B17DCCBF394A428F893 /* SMCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F3B43B9B9A8070F8E97D878287EAEDF /* SMCalloutView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4D6851FF1A495B17DCCBF394A428F893 /* SMCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = E8DAD16B1850E65C9CA038B3A3E65519 /* SMCalloutView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4D8B129B2A748D3D89FDDFF6F414B270 /* iniparser.h in Headers */ = {isa = PBXBuildFile; fileRef = B07414167222C856E21B5FC7AAF6B460 /* iniparser.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4D94C521EC89EAE86BF8ABE968C437B7 /* UIView+AnimatedHide.m in Sources */ = {isa = PBXBuildFile; fileRef = 91EA84B7384143BF9065F16161516772 /* UIView+AnimatedHide.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4DA630F8407D87AA8945A199AE0FD4AC /* ARMJIT_Memory.h in Headers */ = {isa = PBXBuildFile; fileRef = 69E68B93890F97717D4799790DFBCF02 /* ARMJIT_Memory.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4DE53CA9456974481B28D93BD7860508 /* memmap.h in Headers */ = {isa = PBXBuildFile; fileRef = E3EC5D23D9AC26F69D6F4ACF67BCFB67 /* memmap.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4DFA14954BF5B65C2EE7980325CD193E /* pngconf.h in Headers */ = {isa = PBXBuildFile; fileRef = 23FC57B058007BA7A82CEA8B9EC5FDF6 /* pngconf.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -567,96 +600,101 @@ 4E56CEEE32E8E668414B0D27E783B822 /* ClipPolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CB2FB6A449519AD09E7964F0CC67DF25 /* ClipPolygon.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4E6DFC2B8F2BB0E8DB800DE1821158F2 /* inputSDL.h in Headers */ = {isa = PBXBuildFile; fileRef = CB2DE433AA67D7DB3319203E042598EF /* inputSDL.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4E6EA48E4D8DB2E255543A2178AAB58B /* RDP.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CADBEC9CAC37776B653B1E88F411732 /* RDP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4E9CB344E6B2A78B62E4638C9674DAD8 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 9D83B27394F827A375C8041D26B9F167 /* Standard.deltaskin */; }; 4EC0C4512E530E2AB2313C514BADE005 /* initstate.h in Headers */ = {isa = PBXBuildFile; fileRef = D9190E21FA9BDC3ECAC991D745F8B829 /* initstate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4EC43DE6673880AEF7A584CC22C8EBE1 /* NstBoardAxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A5CD02BC2D035183432B50AEFA8BF924 /* NstBoardAxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 4ECBC04326D5C7B84F69D70891DB1C74 /* ARM_InstrInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D13A0F4BF74BE8B97BFDAD60B81DF937 /* ARM_InstrInfo.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4EDDA99E48E7F3DA27E3CFD644B98C4E /* NstBoardSuperGamePocahontas2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5DA7BCFC9344385E53F2B5E834573B31 /* NstBoardSuperGamePocahontas2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 4EDDDB9F177D5F6FEE11A9AC11B53784 /* AudioManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2867A21CC5D09F1990985A93B329E72E /* AudioManager.swift */; }; + 4EE1F590962D7FA18359D0BF97BFB859 /* BitmapProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5169DDA0ADF74F8586CB590F9DB33AB1 /* BitmapProcessor.swift */; }; 4F192CC2B1ECAEEF39EA1CBA71BF3248 /* GBI.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0E8C6AC2D4B8988D4640690AB92CD7 /* GBI.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4F1C1E5BB69C11D960DA8D322EB82052 /* FullscreenResolutions.h in Headers */ = {isa = PBXBuildFile; fileRef = B9FB12FD750F2468C4FFCF23657526D2 /* FullscreenResolutions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4F30156495B5DCDFC7F89C1D2F2D9AA4 /* RSTCellContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A8FBC512A3FA5C62FC2321EE56635BD /* RSTCellContentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4F398DD54135C948D1F2D31F027567A3 /* fpu.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B7AC8DBD44374B318026ED02323950B /* fpu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4F39F94C2EF341DCEDD4FEAFB3823D66 /* GTLRQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ACCC934BB5FAD4B0A16D654246E21F6 /* GTLRQuery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4F39F94C2EF341DCEDD4FEAFB3823D66 /* GTLRQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 545C6C3DA50E65CC81FF48464CD13BEE /* GTLRQuery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4F886E83825963198C0EAF9543D14BFA /* ARM_InstrTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 68B085A5D794A541827C808F19891FA8 /* ARM_InstrTable.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4F9CC81551C114BCAFB00F73B8ECAA40 /* RSTPersistentContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DFCB8854AACC5E9396E6BAD6E022BC0 /* RSTPersistentContainer.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4FA2B56FABE21013C63EDDDC0791FF17 /* ftbitmap.h in Headers */ = {isa = PBXBuildFile; fileRef = 974BBCDE95FFEDA149744208E03714F2 /* ftbitmap.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5032F0342544E6569C0EDA9DCD3DD6ED /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 440F728629AA81492F2374B22D158C8D /* Standard.deltamapping */; }; 5062BFF50B4BEE6ABF8E3A8C575D374B /* T3DUX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 500D624EB32D21B043BFA0D55A44007E /* T3DUX.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 5070A96930371CBE597AF9AA22DF19DE /* TxHiResCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E4A756F26BAC97D488ACFDC54789A73 /* TxHiResCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; 50C965EE37FE36D9F935E21F58FF692E /* DSi_SD.h in Headers */ = {isa = PBXBuildFile; fileRef = F51D215880D60371E6A41FF1BD154146 /* DSi_SD.h */; settings = {ATTRIBUTES = (Project, ); }; }; 51012E5A81F055AEAB30620D3146D92C /* DSi_SPI_TSC.h in Headers */ = {isa = PBXBuildFile; fileRef = 707A58EA3FAEA5A0AB870C8240B45F8D /* DSi_SPI_TSC.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 510885EE298CE9547583D923550867BC /* NSConstraintConflict+Conveniences.h in Headers */ = {isa = PBXBuildFile; fileRef = 42C8EB745EF1C9D8ABBD09F6FF45DE37 /* NSConstraintConflict+Conveniences.h */; settings = {ATTRIBUTES = (Project, ); }; }; 512513326883FDF783664843F9ADEC65 /* osd.h in Headers */ = {isa = PBXBuildFile; fileRef = 363EBB698A7608820B51E785BFBDBE5D /* osd.h */; settings = {ATTRIBUTES = (Project, ); }; }; 51648F4F53F7240A92A1ABF5325E61DC /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 98C590E0BFF7BBD01368B459B5376F0D /* version.h */; settings = {ATTRIBUTES = (Project, ); }; }; 516529E8400CF6190EC395335F801EA2 /* arithmetics.h in Headers */ = {isa = PBXBuildFile; fileRef = 80CF4B02715769C8E03C0A9458F8635E /* arithmetics.h */; settings = {ATTRIBUTES = (Project, ); }; }; 51889EA9519AA4662A35E17738064433 /* NstBoardBmc21in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 87715844F346ADEE4BBB5256AC453D53 /* NstBoardBmc21in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 51910230FA66BEA431A60004B3CDAE90 /* TextureFilters_xbrz.h in Headers */ = {isa = PBXBuildFile; fileRef = 17093C4C53CE939177773FF4D3A2247E /* TextureFilters_xbrz.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 52085588CC19123AC83AFFBA93066A76 /* OIDScopeUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 031D09F2BC97265AA9C63DC2B0D56DA9 /* OIDScopeUtilities.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 52533478502E879DB68C2C063953AF97 /* TxDbg.h in Headers */ = {isa = PBXBuildFile; fileRef = E531AA77EC465A15D976C75B5A6C0C8E /* TxDbg.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5269F2F06B7B9AADE496A4CD09793228 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 0648DF1F7281B9D745ECF96C143F2C8F /* Standard.deltaskin */; }; 5283063FD91F3787FFE98C70E7F42A4B /* TxTexCache.h in Headers */ = {isa = PBXBuildFile; fileRef = FA484256A9984FA401CB7DA5848C4481 /* TxTexCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 52841F3B3684F995EDAB87F757E3FBE8 /* UITableView+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 26D9EC83F6440D8D511ACF37FDF0BD8A /* UITableView+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 52B06F7011999F9C278A890DA7C4B28C /* L3DEX.h in Headers */ = {isa = PBXBuildFile; fileRef = DC7CD728E0D260394B7476EE6ED0B494 /* L3DEX.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 52CB103EE58F1825BB61ACAB137A84C5 /* UICollectionView+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 52E47CCC16C0DF6A37D17E02443C4812 /* UICollectionView+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; 52D9CEE7D7500B51DB2884E8C601B55E /* getset.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D152EBA4C6872472C19FF2E0E6302C8 /* getset.h */; settings = {ATTRIBUTES = (Project, ); }; }; 52E64CA6AA3E7BF90B9CD4ED0F9CF19C /* ri_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 37E021780895B0030EDF3FDDE10AB491 /* ri_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; 52FEEBDCF56F0809023B72EEC76072B6 /* ftmm.h in Headers */ = {isa = PBXBuildFile; fileRef = A2F603F5076A5C90C0F7F3B8E1964715 /* ftmm.h */; settings = {ATTRIBUTES = (Project, ); }; }; 530E72432126D9EEE597FC8AD2645259 /* RectangleShape.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9530F5FC4C0B09A188288409FCF835D /* RectangleShape.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 5336D03C6035295B51D47B08E20CD275 /* wglext.h in Headers */ = {isa = PBXBuildFile; fileRef = F200008BAD2C8D2B9909C34A25F2F23F /* wglext.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5336E6D34E157FD1B46ED14451960ACE /* SMCalloutView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B23526A375A47D4DB7E41CEF2AD61087 /* SMCalloutView-dummy.m */; }; - 53578D3E7D989A069C7E70E94BDF6485 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 0648DF1F7281B9D745ECF96C143F2C8F /* Standard.deltaskin */; }; + 5336E6D34E157FD1B46ED14451960ACE /* SMCalloutView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C5E3247DAB82F80DE1AA4666B5015C5 /* SMCalloutView-dummy.m */; }; 5368D26EC79E290BBA16B14EEDDCB528 /* NstBoardBmcT262.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5D28A45F8D7AE36212541B62DB751AAE /* NstBoardBmcT262.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 53D0677CB11698F8EB842C2883CB7FE4 /* NstBoardBtlSuperBros11.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7549BE8B0E3632F3EC1847B5A711B082 /* NstBoardBtlSuperBros11.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 5437B0B3AC0F5C2EA972FB07460A5476 /* RSTDynamicDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 95782CF5CA479EC0FDC53DD42C188A4F /* RSTDynamicDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; 547722282B92D897DCF72B1C5E077EE4 /* TextureFilters_2xsai.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E53123303D13A89EFB690F2B9415065 /* TextureFilters_2xsai.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 54A59C82F837B5C62516AF43BA727127 /* TeamLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A47F312AB75A9DF4F2226CF1E136782 /* TeamLog.swift */; }; 54B07F5D665F8AFCF906D35823998745 /* Util.h in Headers */ = {isa = PBXBuildFile; fileRef = A132045A997E491B1C520AB9F86A520F /* Util.h */; settings = {ATTRIBUTES = (Project, ); }; }; 54C00D9468E49E1BF7C36FC0F977A16C /* CRC.h in Headers */ = {isa = PBXBuildFile; fileRef = 72BAA242AAFF78139FE9E73EA0C58CF6 /* CRC.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 54D8544BA09F27066E2FF2F2C0FBB0E7 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 4350D1FEB43D008EF6E9B2A8AF3F8D46 /* Standard.deltaskin */; }; 54EA6B6907303939CBE9BAB821B37A99 /* SoundFileWriter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7580E8E59C09C681129D551B115623A9 /* SoundFileWriter.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 54F9A025A6FA171F91F84DCBBC8271BF /* Platform.h in Headers */ = {isa = PBXBuildFile; fileRef = 844403BA0FA3541347B6E706E52FA73E /* Platform.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 55165BEE072A341A2B9C7302E7D17B1E /* NSConstraintConflict+Conveniences.m in Sources */ = {isa = PBXBuildFile; fileRef = 18C47529D612750BAFD8B41096414B5A /* NSConstraintConflict+Conveniences.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 553C09576B62520E89825CCC61E7440D /* NstBoardSachenStreetHeroes.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E742500B66D2813CE6D679FAD962D201 /* NstBoardSachenStreetHeroes.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 55A51771307D368AC1CE3B1E48713417 /* FIFOSampleBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C0AAAEC4A92ECADA81C17B1B0BF40E8 /* FIFOSampleBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 55A5B126FB5A194BCA3A842DEED18828 /* opengl_Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F0882105E4993C09A6F0BEAF2E98379 /* opengl_Utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 55AF1496125D73291C6814EAB7E20476 /* TextureFilterHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = EF9E80B0792C03D2FC92D8D7ECE71609 /* TextureFilterHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 55BEF1EEF14FA7E35C0BA84D73F8F633 /* Keys.h in Headers */ = {isa = PBXBuildFile; fileRef = 200A55506E0A6C1EB4B171CB4DB08528 /* Keys.h */; settings = {ATTRIBUTES = (Project, ); }; }; 560457CF466474C19AA7F7B019AF96A0 /* String.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 431AAF0AECA2A0A322351F393EC0FA8A /* String.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 5604DD4EDFA42EBC3C0E0B93A6A76DEA /* RSTLaunchViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 54C38C767637E4968C8562607864A579 /* RSTLaunchViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5615883AFAC03932E189E6EC0E4D262F /* filters.h in Headers */ = {isa = PBXBuildFile; fileRef = C1C34BC62D8AE93049CDE7C85B326781 /* filters.h */; settings = {ATTRIBUTES = (Project, ); }; }; 561D1FF1EA7842AF102804CFE5B2B44A /* NstXml.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1E6FEE1D998C78DF19ACA08E81C7A395 /* NstXml.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5693663E9CEC7D86EA43EFE4F733C159 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = A024A97ADEDE582E9EDA110E6B1AF889 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 569589F32BD7C2AC23660DABD6F61D48 /* ThumbstickInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 186A8A256C8617314B0C613AEF8628A8 /* ThumbstickInputView.swift */; }; + 56305863164CF2F3F39C78948BFF2864 /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAB38A1A17078FD95D88608D7190F6C3 /* GameViewController.swift */; }; + 5693663E9CEC7D86EA43EFE4F733C159 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 374CD16066234452E7C43878019A0C18 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 56A91EB3DEB671A1436CF0D130B8D124 /* SNESDeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 04866315B7587583E5D40EF4EBC19CEE /* SNESDeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 56C96B373F30FBEF3005DBA2AB9359D5 /* GameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 107157B094E03DFB68D4F654B49722D6 /* GameView.swift */; }; + 56AE3EA544042F3AAC7E3D7D596B423E /* OIDIDToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 13569C5378937CE484A595684F2B6253 /* OIDIDToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 56B69D0129EBE5214214754125F55760 /* RSTCellContentDataSource_Subclasses.h in Headers */ = {isa = PBXBuildFile; fileRef = 81B163AB85D27A282399346575986FE5 /* RSTCellContentDataSource_Subclasses.h */; settings = {ATTRIBUTES = (Project, ); }; }; 56CAE30F1F264AC04C3EBD9D577D4A11 /* NstBoardBmc800in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EB4B7F1BEE1FDDC88B83535430E04E40 /* NstBoardBmc800in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 56CE5B694FCB4923AADD1702B79CCDC3 /* GTLRRuntimeCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 279F8F8BF2300C97E89F662A3B1BE1CE /* GTLRRuntimeCommon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 56ED1E08E591633245501C81931D8631 /* DropboxClientsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F780080F088472D2EA3AD73F9AC6B238 /* DropboxClientsManager.swift */; }; + 56CE5B694FCB4923AADD1702B79CCDC3 /* GTLRRuntimeCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F5176A0CD8AA4800A04B7437A3D2160 /* GTLRRuntimeCommon.h */; settings = {ATTRIBUTES = (Project, ); }; }; 56F800FB267C3DECABD9106B4B1C24A4 /* NonStupidBitfield.h in Headers */ = {isa = PBXBuildFile; fileRef = E41FF9AEB8F168E432CF51CF03B82946 /* NonStupidBitfield.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5735F2F6EDB78133140ED13E82E1676E /* Listener.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 94AEEEAD7711AE51F2D41B6A76AD600E /* Listener.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 57447F57373BD46A2284589677413B31 /* Port.h in Headers */ = {isa = PBXBuildFile; fileRef = 028AA0FF5988D03E9907ED4E4E327382 /* Port.h */; settings = {ATTRIBUTES = (Project, ); }; }; 57585A831B2ED14CA5F4ACED05ECF45B /* SoftwareRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E55D287DB523BCC5DDBB884D666555FE /* SoftwareRender.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 575DAC8BE73AE20F0B222941ED1B9937 /* hle_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C1A2B62A0EAECEDC86C6CC187AE4FB /* hle_internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 576E245E446BD6A428B0291DB1A0D284 /* NSUserDefaults+DynamicProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CD24C018B59B44AC41CBF862AAD1B65 /* NSUserDefaults+DynamicProperties.h */; settings = {ATTRIBUTES = (Project, ); }; }; 579890B7046D306313F3438F8831D131 /* NstBoardFutureMedia.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 23456D53AC1C42C6E27540F52DA0A19A /* NstBoardFutureMedia.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 579DF870E92728EB3E325AE8E4932FED /* rhash.h in Headers */ = {isa = PBXBuildFile; fileRef = A678D5FF595ECF2DC2D7255605CC3F1A /* rhash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 57AB5352A91B7AD813965114B54104C5 /* GTMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 629F6A26E346FCCB87CF068FC152224D /* GTMDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; 58023D75EB4C5321E2C02ADEE4F41BF9 /* STTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 4278C7184FE9B1D2B52FC11778CD64F6 /* STTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 580D505101F8DB1FEB7A037545E972A5 /* ControllerSkinTraits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 861E076A2C54E6FC988A6CAC6C389867 /* ControllerSkinTraits.swift */; }; 580E105A009EE800E7CA97C0F1BB9B3C /* svprop.h in Headers */ = {isa = PBXBuildFile; fileRef = 0396C570C0BD057BEE9ED8DFA16DBE14 /* svprop.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5831E1190662E1377B571CF2019B67C5 /* UITableView+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 26D9EC83F6440D8D511ACF37FDF0BD8A /* UITableView+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 583C0A51777A796C8292CD2219468C4D /* movie.h in Headers */ = {isa = PBXBuildFile; fileRef = B5CB62985561D30D99DE10B02CE088C7 /* movie.h */; settings = {ATTRIBUTES = (Project, ); }; }; 585D4119170EE5077D5C1BD0F5063A29 /* GLideN64_mupenplus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B399E2E63878F81C9C03E6363909DF0 /* GLideN64_mupenplus.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 58BD92B144EF9C1DAA0EBBC7ECB4D1AD /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 599A968786BB3CEF39D154E679D99110 /* Validation.swift */; }; + 58BD92B144EF9C1DAA0EBBC7ECB4D1AD /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0908C52D9502D082775F1A5117A6C54 /* Validation.swift */; }; 58D51E7FBA3664F0F49E87F959D20A30 /* GBATypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 506252043EDE210D4DDA95F172CA4144 /* GBATypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 58E9A0B9C1F1974D3CE907FA5CC36402 /* RSTToastView.m in Sources */ = {isa = PBXBuildFile; fileRef = 722140CCA61511949B1060C8B4BAD6D0 /* RSTToastView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 58EB6C7980D2405F254DDEEDF497F791 /* DisplayLoadProgress.h in Headers */ = {isa = PBXBuildFile; fileRef = D6A5B898B9F2D64E02BAEFFC9249C61D /* DisplayLoadProgress.h */; settings = {ATTRIBUTES = (Project, ); }; }; 58ECB8B387694A62EACE695D41C846D0 /* Event.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4B06D58A4F8A5FFF4E828295A45D8D98 /* Event.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 58F148A65F58058B807FB7577F6A2021 /* ARCodeFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 196F9F426B7880E6628258D602510711 /* ARCodeFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5945050F3DB8BD1094C3E72B8D35CDF5 /* plugin_delta.c in Sources */ = {isa = PBXBuildFile; fileRef = 56900423A4BD20C4B21DB5442B46BC21 /* plugin_delta.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5958A7807099957AC1EED605B560D13F /* NSString+Localization.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CFFFA1D5341196B3D469781675F7F87 /* NSString+Localization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5953A78C8502CFD9FDDC1602F2462248 /* GameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 107157B094E03DFB68D4F654B49722D6 /* GameView.swift */; }; 596B5F7D3D539458F423C2ED01BF2B84 /* cart.h in Headers */ = {isa = PBXBuildFile; fileRef = E1B193AAF9196D3694BB4355AF63A47B /* cart.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 597B79CD94D7E6C6DC983585C01E82DC /* TouchInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 711B7352488C5E8D3F8233466422FFF3 /* TouchInputView.swift */; }; 598A606D2A996761094EEBA925D83E98 /* NstDipSwitches.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D56A683DE5B49F71B9810452A09536B0 /* NstDipSwitches.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 59C6644E72BD84BEDEFC8A77F457CDAB /* glsl_CombinerProgramImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 539E45C97BD611AE9D428625F336FB19 /* glsl_CombinerProgramImpl.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 59DC4FF8A5DFD850587059D40CF3C0E2 /* FileRequestsRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52146E42B2E7458AB8F550EAAB719074 /* FileRequestsRoutes.swift */; }; - 5A3A43ABB83E43F2F6ECA0128F71352D /* RSTOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = BB22870483890CB67C08063155A2CD09 /* RSTOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5A4DEBA71ABB2938CEFCE15C052982CE /* RSTSeparatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FA4BA7F6A5656E0A2EB653423B78908 /* RSTSeparatorView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5A09F6457E548D68084B7A7CE07CA68F /* GTMKeychain.m in Sources */ = {isa = PBXBuildFile; fileRef = 9165EBC3B02F7C7983D96A667C6F8BED /* GTMKeychain.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 5A5358B0E96F6343ED225CF4A3764A1E /* Drawable.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0F66CBD0D936F023EA1B5A8FD9C18248 /* Drawable.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 5A621EEA0EC75102AAE2282BB5FC443A /* svbdf.h in Headers */ = {isa = PBXBuildFile; fileRef = ADF5A4B1CDA7693D5DE8FDAE55230F5B /* svbdf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A64E13F83417112C63882DF88E4E35D /* SaveStateProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D6B56947558FEC359A8FAD9606E9D30 /* SaveStateProtocol.swift */; }; - 5A68D12E108620E5704D7B0CB027B081 /* fts3_tokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = E74A96020ABE2A48563D951985291B19 /* fts3_tokenizer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5A68D12E108620E5704D7B0CB027B081 /* fts3_tokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DB143B9201888455FA6E13BE13093EC /* fts3_tokenizer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5A6918BBC6839839661B82EBCDDA5AA1 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = B51E4F3FBCD2986D04F61F4EC3DB5BCB /* Standard.deltaskin */; }; 5A7E8E588940E36CB418F48B1983DC92 /* SoundTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D5C95E1E368FFAA018FC6B2E9FAEF6C /* SoundTouch.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5ACA5713FA47F34923CA3578B6CDA47C /* RSTTintedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 088611513957299C0F064C9A772DA2BA /* RSTTintedImageView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 5AE4B68F2F4D94BFFB49FF2E5B643E6F /* NstApi.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 33F0B5788CE7BB73382F50CE527A7B54 /* NstApi.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 5AF6989F9E0FADE9815651935A52C7D6 /* GTMAppAuth.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CCEE18165C914267574D45D111EF1FB /* GTMAppAuth.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5AFA29F5D5886AAEA2F2D32ADCFBC801 /* FileManager+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2756D7B604A26C88B2CF4AE96B6235 /* FileManager+ZIP.swift */; }; + 5B10BC6C23C5443FEE7B6C1AD3D77DFB /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = B40D570EAF3AC5F1FF34F6CFEB52975B /* Standard.deltaskin */; }; 5B68AF6697E20BB2FB9EC6AB0C532E9E /* defined_ptr.h in Headers */ = {isa = PBXBuildFile; fileRef = 90D732934F09FAD2E836DF46B3A74B05 /* defined_ptr.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B79AC01467BA01B7D3F77EE37315BDA /* NstBoardRexSoftSl1632.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A96B7A289630AA8DF53EE51EE74E54AA /* NstBoardRexSoftSl1632.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 5BBBE6855C48310D28C5199F48AD611B /* CircleShape.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 51E052CDE1536235F7DBEB1B22B94E0B /* CircleShape.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -665,50 +703,48 @@ 5C50623063473C85654184ACA6E0AC2F /* GBADeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EFD0663BDAD1BCA02D985CB4C0E1E5C9 /* GBADeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5C9EE4B2855B3E26304B8EBE6D527961 /* joybus.h in Headers */ = {isa = PBXBuildFile; fileRef = 71ABC7B01A2AED1DF266ADD556DC3E2C /* joybus.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5CAEBD28ED34E8B4A875F1A8BB4885F9 /* cp1.h in Headers */ = {isa = PBXBuildFile; fileRef = 56AEB8AA268644CA6A27F76FCE1D41BA /* cp1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5CB02745E7FA5AC7B02CB9E89DB3F0A3 /* ControllerSkin.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7B19926ABCEF3C3A145040DC531097E /* ControllerSkin.swift */; }; - 5CCCE95B040F7C5092689516D6ABD06F /* GTLRUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = FCA3A4E5B21B603E44C4DA3AB87595F8 /* GTLRUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5CCCE95B040F7C5092689516D6ABD06F /* GTLRUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = C0F43BF9199158EC861C828DB0BD7C94 /* GTLRUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5CFC9AC131FF773AFE85079E71BC2F36 /* TextureFilters.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D07883A213E5E541BA87F867831C0E /* TextureFilters.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5D0A7690E581E7A43021A53831DD45DD /* Text.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D9BE3D68F698321E8E2ABDD6FA14EC78 /* Text.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5D467E47C6B5B59D354FF1BE48699E7E /* SQLite.swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B88A4A4D429C70A73A2F3F183EC24732 /* SQLite.swift-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5D467E47C6B5B59D354FF1BE48699E7E /* SQLite.swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A528E51933EC0D277727107F3B72167E /* SQLite.swift-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5D5A4CF69B77334A83D7F1902B3428A6 /* libco.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B05BFC2197636565CF4F760A845D589 /* libco.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5D8B8038CC885FC6B2978E5661548CF1 /* OIDTokenUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 84CD687D20FDA0F023996548CBA8B983 /* OIDTokenUtilities.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 5DB1E8F66E3F847193C3A4745890D9E2 /* DSiCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 68F725C31134BB9DC7306936029A5D88 /* DSiCrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5E0BC08FA744C5B0506F68C66A93243B /* UITableViewCell+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = CCFF79507F169F74B68C445BA304BD5F /* UITableViewCell+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5DFDA6E2743D8C7ACF3C94838CCDA30A /* NSBundle+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = DFF3F3ED2DD3379D1F7BD0F3059BA64F /* NSBundle+Extensions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5E2CE67C6A9B952D13F25A130B0849E9 /* DLTAMuteSwitchMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 103BD5750DB5001ED6AD8D19BA221BC5 /* DLTAMuteSwitchMonitor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5E2E5979813CAEBB76617D229B539A40 /* xxhash.c in Sources */ = {isa = PBXBuildFile; fileRef = 705A45A31ACA377978617FA5B0556C36 /* xxhash.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5E6C8B93451194A6CDF5FA3181BF5CE2 /* RSTRelationshipPreservingMergePolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B6845564D5CCCEE5193E41148287014 /* RSTRelationshipPreservingMergePolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5E812210D0CF515FB1B44D9A48B5939B /* convert.h in Headers */ = {isa = PBXBuildFile; fileRef = 61C856FF8209BE3A5A5542A18EF2E2E8 /* convert.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5E99E9502FE2083901A57E8164C9834E /* GPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BB733F89F116A23AF96444599346AF5A /* GPU.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5EC3A63A06C26020819E6D246932FABD /* AppAuth.h in Headers */ = {isa = PBXBuildFile; fileRef = 443C783F39A259FCA78B3BBF929FD22C /* AppAuth.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5EC61C959251F52D18630692A7C16DF9 /* DSi_NWifi.h in Headers */ = {isa = PBXBuildFile; fileRef = D98A348E91606946E29BA0B54D6B9F79 /* DSi_NWifi.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5EE18B504889F54B45788C3EE2777F92 /* GTLRURITemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = A02D556906FE8C4CFDDB3F8D10DF3E4B /* GTLRURITemplate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5EE18B504889F54B45788C3EE2777F92 /* GTLRURITemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = B1C8F3DC6ED808186005506E0560109D /* GTLRURITemplate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5EF3757D7EFBFF30F837E9B0D87FD1EA /* GBA.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96010BBED3DFA64FDC2A5369DFA3DB56 /* GBA.swift */; }; - 5F10D25DAB1761ACC9D8CE8CD502AEDC /* TouchControllerSkin.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBEBC13C2601FDB2E7F4D976B174D79A /* TouchControllerSkin.swift */; }; 5F1BE4ED6BF28311952BC75E38434ED8 /* NstApiRewinder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FA3064445067E4146CB67ECCE9C42918 /* NstApiRewinder.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 5F74D72D5C79A0F3D324D2F9468090F9 /* NstVideoRenderer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 79726DFC76B227BC4EBE831292148FCC /* NstVideoRenderer.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5F948F1842B65034A0D1F96BE4DC9574 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 921AD788C442F823555202B44D3AF160 /* SDImageCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5F8098E035FAB26A3BFCFDCD313A286C /* CharacterSet+Hexadecimals.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F2BD453817B0EC3B09CC7CAFACF62C /* CharacterSet+Hexadecimals.swift */; }; + 5F948F1842B65034A0D1F96BE4DC9574 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = EC145F5A4BCF18A8EBAA697F5C1619FF /* SDImageCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 5FB2D13E4B91CF3712AE59C3527CA3B6 /* Window.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1D4578193F1247C295056EC2A8E49E7D /* Window.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 5FB7801D1F95A1B18A2B96E3A54C7C8B /* audio_out_backend.h in Headers */ = {isa = PBXBuildFile; fileRef = 0171332C5354CF5A306250873275CA82 /* audio_out_backend.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5FD58DC3B58461A0151E776A13A0345F /* RSTLaunchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F034FA259711BD2D0D0F5F9E367780E9 /* RSTLaunchViewController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 5FDA81FDB4461B06E2C74963ABF4D604 /* new_dynarec.h in Headers */ = {isa = PBXBuildFile; fileRef = 46A5C3877CB32B44672DC1BE4A60F9A2 /* new_dynarec.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5FF78758C8FEB0043D22432CC1A8D27F /* osd_element.h in Headers */ = {isa = PBXBuildFile; fileRef = 664DAF2B08C53CFFD688E66737890530 /* osd_element.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5FFB6217B24AD96C6E37094334E903EE /* GTMSessionFetcherLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 498BEFABF329CA81DB038DAEE4DA86DB /* GTMSessionFetcherLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6010F8AF884958F9E9D7F56F35DD2E87 /* clock_ctime_plus_delta.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BD54F3ED181ED854CE116DE92F84A4E /* clock_ctime_plus_delta.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6044490996CB50B0E68AFB19757BF808 /* ThreadLocal.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7EF57BB6B247BD777342B282E9659451 /* ThreadLocal.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 609CDB47F8CBF483B892C0D2CE392B1C /* NstBoardBandaiDatach.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4B62BC74F2B87C4D4C3F58016F21513B /* NstBoardBandaiDatach.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 60B2E7267C1CA2C4FC63A11AA9A822A1 /* glsl_ShaderStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5202545B4329D002ACDA953CB13AC144 /* glsl_ShaderStorage.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 60E958C77493633B264BE262E7041817 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = B51E4F3FBCD2986D04F61F4EC3DB5BCB /* Standard.deltaskin */; }; 60F654639519C76D65ED595183934348 /* NstBoardSuperGameLionKing.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 56739173EC3B35597BDA8BAC4DD593D0 /* NstBoardSuperGameLionKing.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 60F8542DD785E5C1B433CD62D774A40E /* NstBoardBmcSuper40in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DC15718FEE1F270A54AA643D5215F826 /* NstBoardBmcSuper40in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 613B16943E12EE293AB8EBA44F780880 /* GoogleToolboxForMac-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C7A9D7E3EC589A75AD2405C76234F641 /* GoogleToolboxForMac-dummy.m */; }; 617BCC8A3FCE53962ED755C3857BAEA5 /* alist.h in Headers */ = {isa = PBXBuildFile; fileRef = 92A92D12C66E3558C97E9529D4FA8A2B /* alist.h */; settings = {ATTRIBUTES = (Project, ); }; }; 61D997C69B1778C246A5B50F469E5956 /* svkern.h in Headers */ = {isa = PBXBuildFile; fileRef = 455381F429A17626651787CCFCAE3912 /* svkern.h */; settings = {ATTRIBUTES = (Project, ); }; }; 61DB7F9E8089B2081380D52E82BB6568 /* NstBoardBmcFamily4646B.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0909B8D3D1894139A67FE93CFCC01DB1 /* NstBoardBmcFamily4646B.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 61DDE33DB21B0485A22AB432474C44D1 /* View.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E802C519C7B2F9B2404F100E87160EC0 /* View.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 61FAF8A487F483A43C3852CA3C456A54 /* gfx.h in Headers */ = {isa = PBXBuildFile; fileRef = 7264E167641F7C858327D20B9E3A58A3 /* gfx.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6239E5403C941AD63072ABAF9136753B /* RSTToastView.h in Headers */ = {isa = PBXBuildFile; fileRef = 755E5E577144BC6D12921757F1F6E1AA /* RSTToastView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 622691B0EBCEAB592A34EDA32A82F3EC /* GTMAppAuthFetcherAuthorization+Keychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 199EF9595C8ADA9D488E6011C710237A /* GTMAppAuthFetcherAuthorization+Keychain.h */; settings = {ATTRIBUTES = (Project, ); }; }; 624BA9C1E0E3AB6037A257AC8BDFB8B7 /* Clock.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BD15AA34950562B6CB6A274DDA0596A3 /* Clock.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 626CFED2F485876ABE8A850BE577DA89 /* CGGeometry+Conveniences.swift in Sources */ = {isa = PBXBuildFile; fileRef = E071D5F4AE0E7711FCA5CCC846C31D03 /* CGGeometry+Conveniences.swift */; }; - 627774500EF806B16C98FF3F38DE3552 /* GTLRDuration.h in Headers */ = {isa = PBXBuildFile; fileRef = 05EFB60F8ABE052EE4B3C48B77C63D6B /* GTLRDuration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 627774500EF806B16C98FF3F38DE3552 /* GTLRDuration.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A67D2E977EA79AB264073D420A46B03 /* GTLRDuration.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6281A9376E0C3B380370ED1FE4B96439 /* NstBoardFfe.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1538A830F2418E6E5E0765FAEBA05CF9 /* NstBoardFfe.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 62868225A3A55C3D4834E17271FC5A63 /* NstFds.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D283F03B2B6006637A857006558B5162 /* NstFds.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 628FE06FEEC5BB6F883D75BD5687DA98 /* GTLRDateTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 1371A75FE41949E4BA02D89705197634 /* GTLRDateTime.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 628FE06FEEC5BB6F883D75BD5687DA98 /* GTLRDateTime.m in Sources */ = {isa = PBXBuildFile; fileRef = C98DB0FD6FD6306E15AEE84B2DC91E6E /* GTLRDateTime.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 6292F65A32ABAE784B9B94A0E254F7F8 /* ftgzip.h in Headers */ = {isa = PBXBuildFile; fileRef = C73DD8D8F63F6A56EB1187D23D256352 /* ftgzip.h */; settings = {ATTRIBUTES = (Project, ); }; }; 62A1336EA8A13B72101756A05722ED97 /* tile.h in Headers */ = {isa = PBXBuildFile; fileRef = 6510AC07F7667F0B972688C1231D9A79 /* tile.h */; settings = {ATTRIBUTES = (Project, ); }; }; 62D80C12CEF12B2733D98B632FB7B195 /* ZlutTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E8CB66A1B4F31BB4E78101DC4BECD06 /* ZlutTexture.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -717,115 +753,122 @@ 639336CE68C120C515CC3852F2BFCE74 /* dd_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = B79CEC2ACB69822AE5E70542DA6188E6 /* dd_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; 63F218C5A81237F19860523A7F04FE93 /* InputStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E52CAC44F749143B431099BD926F6108 /* InputStream.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 63F529CE0B7A979D6B9DDDC963A69949 /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EB560C20640D92EC09B23CC9EB468044 /* Config.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 63F86ECE23B1D616412455D2D66EEAB2 /* RSTNibView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CBCD15F20F318500823C4E873BB6568 /* RSTNibView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 640B444D6A8DA1794E6B830A533D9375 /* adaptivesleep.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FE2A36D23FB9226ADB79E249073A671 /* adaptivesleep.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6443E3487871C05B44312726391C4566 /* opengl_BufferManipulationObjectFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 12340527430BF0F362B63C225065A253 /* opengl_BufferManipulationObjectFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; 64591A567DE87303BDC45618602D464E /* Export.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8B5727BBA5984F66D61DFE098524052C /* Export.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 645B52969DAA0BC05A458CAAD5F38CE2 /* memory.h in Headers */ = {isa = PBXBuildFile; fileRef = 69E9E10208FD58BDFDF95FE905657FB6 /* memory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 646689EE8D8F4F7E32D9AFF55B1768F0 /* RSTSearchController.m in Sources */ = {isa = PBXBuildFile; fileRef = 75759807E6D9531D36908860D364F3A5 /* RSTSearchController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 64B0283C5EF6BDB7E89A6DF25AB25398 /* NstBoardJalecoJf17.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 11339ABDEA626716BA06C85A49A39453 /* NstBoardJalecoJf17.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 650B55547717AC1B785F69B767C26C0A /* CustomRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9428B8A7A37F792EB00157F40ED883BB /* CustomRoutes.swift */; }; 650F8F61C3752229BC5ED65D188613C8 /* NstBoardSomeriTeam.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AA95C0F9ECD426411A1669BDF6B24B50 /* NstBoardSomeriTeam.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 65255C30882153B8DD5B5216DE1EE0E8 /* Config.h in Headers */ = {isa = PBXBuildFile; fileRef = C5C75C2C1AC05CC85E4208CA87601C6F /* Config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 656D55800ADDD54A218DAC58D76E8690 /* RSTFetchedResultsDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = F393147DF602B1AF7C00B67655D80C30 /* RSTFetchedResultsDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 65A75C2264EE370C90CEB7DEDC5700D9 /* OIDIDToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 57D9A2767081A16C0A0BB61D1ECFBA87 /* OIDIDToken.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 65B5265D8C0A7E50D70ECC99231F2AB0 /* DropboxService+Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = F34B201A855CF314CE053AFABCE41DA5 /* DropboxService+Files.swift */; }; 65BF4C3E2DE9C07AE47739B96DA10AA4 /* CP15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B43910F41F6960C33EF3CA1B15E6985B /* CP15.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 65C3ADB5B0DD07AF901C3493848722AD /* SNES.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0EB14ED4D5D7A95884D0106EF841FC9 /* SNES.swift */; }; 65E7429D78DC19BDD650BE043E536EDE /* opengl_Attributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 99F9A81CC01BBA9C948DFB9573F2C392 /* opengl_Attributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 66085A85B603130A665AF34D97C5D2F2 /* Team.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BAACEF4960BF41B08B3E505C4EBC283 /* Team.swift */; }; 660E6A634E317F2B398FC934288E3C94 /* F3DAM.h in Headers */ = {isa = PBXBuildFile; fileRef = 024B54CA010D91D3F6E4E79E93053507 /* F3DAM.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 666AC609C074EB0A1F4D50983BDEB229 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B068E4E7AE4132AAFBBBCBD24D7A4C81 /* SDWebImageDownloaderOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 666AC609C074EB0A1F4D50983BDEB229 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DB3D56DF81E139F8DE10B4B81F75A9E /* SDWebImageDownloaderOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 66752F02564D8C0DA97849A7FB4A3CD9 /* rateest.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AF4BD5DC3F0DEC51F5FFBBD3C37C963 /* rateest.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6678DF92CB6B21F35FA6FED26872A2C3 /* RemoteRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F85D4ABF8253A0637C2CA8D4E0C5DD /* RemoteRecord.swift */; }; - 6683CB2FBB9C07F364DD4DEE96F3907F /* GTLRRuntimeCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = 87BEF86E5D9BA232DF16BE7F774E4D82 /* GTLRRuntimeCommon.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 66A46E0C019995D410BC329F2DC94965 /* GTLRDuration.m in Sources */ = {isa = PBXBuildFile; fileRef = AEC0015955B6C317179ECAEEE8FD46C5 /* GTLRDuration.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 66C6B7250DBC1CD5D20D871920A3533F /* GTLRBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = D1EC922CB4C37FF078E2F2FA393D076C /* GTLRBatchQuery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6683CB2FBB9C07F364DD4DEE96F3907F /* GTLRRuntimeCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = 0537A904DB84DDF42A37224D6E21A907 /* GTLRRuntimeCommon.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 66A46E0C019995D410BC329F2DC94965 /* GTLRDuration.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DB930631E2AEFA13A9D03861573F6AD /* GTLRDuration.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 66C6B7250DBC1CD5D20D871920A3533F /* GTLRBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = F1836C099035D590318910C3DE119171 /* GTLRBatchQuery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 66C7482D1FB12438238D324E6E762628 /* srtc.h in Headers */ = {isa = PBXBuildFile; fileRef = 07F788AE5C171D18C17DC11C35F07537 /* srtc.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6723ECB4685587520AADAD76AC6DD513 /* 3DMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 302E47D1F17CD21389F7B608193F0191 /* 3DMath.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 6737F4A44F8FBE8CE3B06B7098A472D8 /* GPU2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 14503D46A2DB23A541BE74A544353DF6 /* GPU2D.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6739A166D3B12C17BFB08563DEF70024 /* svgxval.h in Headers */ = {isa = PBXBuildFile; fileRef = E4E875CF38214DC3165789D0D73B21CD /* svgxval.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 675657388774F55A5D7E6B82FEC0C399 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 568BC6B386F0E084601CBF273D6953BA /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 674A7F30ED01B781C29B879F3E7E3B63 /* OIDAuthState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4855591EC84F2705E8F012257C9AA50A /* OIDAuthState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 675657388774F55A5D7E6B82FEC0C399 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 810627DCFBDA22971DBF1BECA1817CAA /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Project, ); }; }; 676E6D0A3BD7D80281780FF1D4AE5084 /* fb.h in Headers */ = {isa = PBXBuildFile; fileRef = 00871310E40885E08E93E1CD1C2D4E0A /* fb.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 68029E7E6CBBEC4C2D7726E99EE4C9BD /* FilesRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = E26FEBA64D2374DAC135277E88C048E7 /* FilesRoutes.swift */; }; + 677D56105C5CBE1870B776341E62CE2D /* UIView+AnimatedHide.m in Sources */ = {isa = PBXBuildFile; fileRef = 91EA84B7384143BF9065F16161516772 /* UIView+AnimatedHide.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 679439B462C90710614154CBE6F92431 /* UIScreen+ControllerSkin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 266ED18C08BE308BE761E84DB71257BD /* UIScreen+ControllerSkin.swift */; }; 680E7E43C1ED074EE6D8FBE3CE8EC3A9 /* L3D.h in Headers */ = {isa = PBXBuildFile; fileRef = A799CB2A909060458B708C40148D9784 /* L3D.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6822C98B9E29C576BA52493F7ECEF92A /* GTMNSString+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 269EA2D23CF6BACE160800DAAC54DC94 /* GTMNSString+URLArguments.h */; settings = {ATTRIBUTES = (Project, ); }; }; 68381541C2D3B3488F363A16FA124A1D /* crosshairs.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AE7D98FA3BE6EC5B8C4BD0A9FA7C639 /* crosshairs.h */; settings = {ATTRIBUTES = (Project, ); }; }; 68462036524C05E46047CF7E4FAE8492 /* SNESDeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A07560F133B7C58A11633DFA6A26C33 /* SNESDeltaCore-dummy.m */; }; 68673DA17D850E3BF6E7F5445C384D3F /* 3DMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 150A3F323AA95A1409D48675009ADA82 /* 3DMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6875CAC32E1583DB78FB2CD4697BBEF0 /* NstBoardBxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EFE9AD0A436AB85BE7C58B68F8C17A81 /* NstBoardBxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 689FDAAFA8B25B04D4CAC3A4C6A4C10F /* DropboxClientsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ACF2FB28941FBF4FE5C9B8E60DFD3A9 /* DropboxClientsManager.swift */; }; 68A4CEAF979F43B621A29ACB5E6FA8DF /* NstBoardTxcTw.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FD3FE35BB5ADC5C277235F5BC08B9FF5 /* NstBoardTxcTw.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 68A9FB3A46F4F88993D9BADAB5D74AFE /* DropboxTransportClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBCCD8C7C6480A54F79BDBCD6BAFC020 /* DropboxTransportClient.swift */; }; + 68FAE05630037A9E6A74E8E32EB818B4 /* UITableView+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DF3FF9A69DD247D049DE7DC0007C940 /* UITableView+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6910FF6161A8E0ED113AB09847B3D790 /* eeprom.h in Headers */ = {isa = PBXBuildFile; fileRef = D507E9DF501F229BE997E2B64B0BB402 /* eeprom.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6933DAC6E33996DB0405A9F726B32CB8 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = 89209AA747FCDCA83720EAB03F3D3F50 /* memory.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 69432F22B132BE36989778E6EFF26C00 /* RSTConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B953986F11248C6CA94BCF08358DBAE /* RSTConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; 694918CC60639EB03144D0268C20B264 /* NstBoardWaixing.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E77413BFE1A2AE06387C6606EE592F6E /* NstBoardWaixing.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 6960D65CDD9E72DC3795D98B03616CA8 /* NstBoardCneDecathlon.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8A2A747BF9192AF5072B9AEFF721579D /* NstBoardCneDecathlon.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 696998634EA4485594CF1E413F3E38A8 /* RecordController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC212996B8749C2BF9F4A6A9A3D9E2BA /* RecordController.swift */; }; 699923A427ACBE82FC71D0FF9F2DF228 /* DriveService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35FDBD4E2B527C7E4E26128288F93308 /* DriveService.swift */; }; - 699E9056DC330E8BF43678E919936B3C /* UIDevice+Vibration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8400F21646638487723B9EF9596BA5B /* UIDevice+Vibration.swift */; }; + 699C07F9DF22FE22765A99C2338D5BBD /* StandardGameControllerInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 667BB04531AD532495A6109121EC251F /* StandardGameControllerInput.swift */; }; 699F2E0DE517AD084A65EA5D54B3E04D /* RemoteRecord+File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83873F1E93368D46DCF28140D6B657F3 /* RemoteRecord+File.swift */; }; 69C3DF17B3C7FC4E203169993826BB44 /* TexrectDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = FCABA048366D8089542A06BA620CDBB9 /* TexrectDrawer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6A052E81F331E54CCC31B039F6E2B327 /* spc7110dec.h in Headers */ = {isa = PBXBuildFile; fileRef = D382691E155A7A3DA363B2C6FD35A864 /* spc7110dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6A055A01458AF71F567817308316A5ED /* GTMAppAuth-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E42360B705AA75784D9E9AAEBB830A02 /* GTMAppAuth-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6A2286AC01EFC4440423AB3BB700C484 /* GraphicBufferWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 6292A1AF278F202B2C7DFEAE7F612753 /* GraphicBufferWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6A2B322E9893B64366698D32B80903EC /* NstBoardBmc35in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EFEF5F407D75B1E87004DA92A797689A /* NstBoardBmc35in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 6A2D4CC0AB5C2035AE18C0268C5930A8 /* SaveState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3F65071A7622D8B6598228B03F51F4D /* SaveState.swift */; }; 6A308847F4083823673169F28C993432 /* DSTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A6A8826B644200E536AEC5EF86EF20 /* DSTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6A5DC4195D3C04B1224B561CE5689223 /* UICollectionViewCell+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 700BA0A030FC6AE568E41A84775CF466 /* UICollectionViewCell+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 6A97C2011649CF3449E30D5E31D35E69 /* DriveService+Versions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85754E8C95C188FEED2D1D983314697D /* DriveService+Versions.swift */; }; 6AFED4864281ED27CA907EFEE92DF7C6 /* NstPpu.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 01D6CFE866F11284748563FA8772C843 /* NstPpu.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 6B471D5386B26E42306400F953749BE1 /* movie.h in Headers */ = {isa = PBXBuildFile; fileRef = 81E2AD1FB7A723DACEDB0FAB3BE6A07C /* movie.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6B4EB796C938DDD98C5B9F4960C32505 /* NSString+Localization.m in Sources */ = {isa = PBXBuildFile; fileRef = 0382767F1E8C7949EF46FE377A7CD0CD /* NSString+Localization.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 6B839D4B64B9219FAEAEE6DB7DCFDA39 /* obc1.h in Headers */ = {isa = PBXBuildFile; fileRef = CAA82CD75A5FC90ED4D345E85C29CD53 /* obc1.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6B9BE53719933BA068D5BEDD70771DD1 /* dummy_input.h in Headers */ = {isa = PBXBuildFile; fileRef = 179FB76795D2EE7D2962D405DF63942E /* dummy_input.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6BADA30253C6E385E0C1182224369C8A /* N64.h in Headers */ = {isa = PBXBuildFile; fileRef = 76C34EEDAB12BF43E414A300E3D01560 /* N64.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6BC4CCA4C9146427474BE443DF5921D8 /* DepthBufferRender.h in Headers */ = {isa = PBXBuildFile; fileRef = C2A4A2A48D721601111D959ACC297E61 /* DepthBufferRender.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6BC58CA53B6582EF037C55D8C0DE2111 /* DownloadRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E98DAE508C790215F617D0971A1C75D /* DownloadRecordOperation.swift */; }; 6BCF5A0080103066EF4D559FDB906A9C /* dummy_rsp.h in Headers */ = {isa = PBXBuildFile; fileRef = E7ECFD32AAF9078687765A036E146484 /* dummy_rsp.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6BE0AA06C0274C1A89487166CAE9C27D /* OIDEndSessionResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B33F3AF9A561EA8451966176F78F1BD /* OIDEndSessionResponse.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 6C1C5F53B8923B6CDC9C72A95CD17A48 /* assem_x64.h in Headers */ = {isa = PBXBuildFile; fileRef = 4130E76DBC8F30F3AB50138A69B4B704 /* assem_x64.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6C20B090DF0689FE1F68BBD615FB3684 /* NstBoardFxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D154D94EF977ED8B7B27F1B9F57557EA /* NstBoardFxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 6C4A63C46D779C1BC01B19D2B72AAD48 /* game_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 7914DE489BB276AE0049FA0D58DE4DA5 /* game_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6C99798BDFEFD3B20CE8C05C36605A05 /* VideoMode.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AADDE08AD944B535C0AA08CF01468AD4 /* VideoMode.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 6CA713CDEBD1FDC05556C1B0192DC44C /* NstBoardKonamiVrc7.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 46C7C6CC93893D1F4DA867FB13D67045 /* NstBoardKonamiVrc7.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 6CA7197A697A6910C71D85B86FCC5D62 /* NSPredicate+Search.m in Sources */ = {isa = PBXBuildFile; fileRef = F34A12CDD8A9F7DF59CB6C9DF28C8C37 /* NSPredicate+Search.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 6CB3F36210D0BC75703EF5D95475458A /* libretro.h in Headers */ = {isa = PBXBuildFile; fileRef = B4F50C06C8821EFE495791BACC494700 /* libretro.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6CC6B15A3E84511164EF0F97D15F1833 /* NstBoardBenshengBs5.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 069E1C3C7AEB534A73EC0DABE1B5EFB0 /* NstBoardBenshengBs5.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 6CCCC23BAC70B7A95941548F6260887A /* ConfigDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = E00A573392976831E1DADFFE3450B87A /* ConfigDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6CDE729C2061F2CB33C5145723418553 /* FIFO.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C1F3262541C140E77304A95BC6F7CFD /* FIFO.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6CE6FA7AC574166FFFFE2465C63B6853 /* RSTArrayDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = D4094ED24EA34D2593C503C8D5C105CE /* RSTArrayDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 6D172E12EA2D1B9C282949C5DC3497CA /* NstBoardSachen.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 12B32F4CD8E5782EAE7525A700D68049 /* NstBoardSachen.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6D34808CBD3C28FEDE59AF9CA9C075B1 /* Team.swift in Sources */ = {isa = PBXBuildFile; fileRef = D196E82B652BFF0CF8DD7D134B12120D /* Team.swift */; }; - 6D4CAD3F9491E865F8E20F1F0C4734D2 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 745C7BD034F68630CA1462CB29BF3051 /* ResponseSerialization.swift */; }; + 6D3C1B16D4CE61B52FD41E51E460A72F /* AppAuthCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 53E42F48345B024F7618B9F522C00170 /* AppAuthCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6D4CAD3F9491E865F8E20F1F0C4734D2 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61432BF68678068CA6DE2937DF8E6096 /* ResponseSerialization.swift */; }; 6D5AEC036546123F7FE1320C8E74D879 /* msu1.h in Headers */ = {isa = PBXBuildFile; fileRef = CD48F8DA24834B9E9AFEE176453FC043 /* msu1.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6DAF0A335F62958157EEA19A2011F855 /* DSi_AES.h in Headers */ = {isa = PBXBuildFile; fileRef = AE69FF77D057F65FCC92798BC814D0C0 /* DSi_AES.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6DC8EA419865488B8BC8625A8B63BD22 /* AnyInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9298B315F615623E280CE6D5DD35B045 /* AnyInput.swift */; }; 6DF09CAA89506D02D93FF0A39F38B001 /* ZSortBOSS.h in Headers */ = {isa = PBXBuildFile; fileRef = 71842E47BE8B0F0B851CBD4692774A0D /* ZSortBOSS.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6E34770980C6814A26038301C1D36C1B /* SQLiteObjc.h in Headers */ = {isa = PBXBuildFile; fileRef = F1B7B38160FBB40F6A58CE9397B82088 /* SQLiteObjc.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6E34770980C6814A26038301C1D36C1B /* SQLiteObjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 78926AD45B7D54A5AC482490E17C94A9 /* SQLiteObjc.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6E4CCECC754C31E011AFC32CB728FE2E /* ft2build.h in Headers */ = {isa = PBXBuildFile; fileRef = 05D90FC573A940BC6669EC489A1DB016 /* ft2build.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6E5CE0C6A45B29FDA9024ED474E1628F /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A87FD99965ED242605C99BB49D093C2 /* pngread.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 6E95140B44E362EDED3984EEA5A55180 /* SDL.h in Headers */ = {isa = PBXBuildFile; fileRef = 824CDD6E4BDCAEA39EBA938006905E3B /* SDL.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6E9E2E12CCB5C471F2A9281159361D3E /* VideoRendering.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC14010F5B81F5784EA4C38384B0A468 /* VideoRendering.swift */; }; 6EA1D79C74410E72EAB8009A1ABB3460 /* NstInpSuborKeyboard.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CDB8BB05395141733620E2774F380468 /* NstInpSuborKeyboard.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 6EAE3C4552709C1754E06F8E42833512 /* Shape.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 52E8758B4B04638E106461086364CD77 /* Shape.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 6EF66A2ABF03882AA193FC5ED9533574 /* firmware.h in Headers */ = {isa = PBXBuildFile; fileRef = 78BE744DC96A3ABD50BFBBEA4997CB56 /* firmware.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6F0F8D9002B5B4B590A1EDF5CE2CF812 /* F3DEX2CBFD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 177DC1057417A79A373681D0E58744E8 /* F3DEX2CBFD.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 6F1A2E681063D8697962BF91B4C53D57 /* Version.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10AC04C7503E2DA405EE0A6B53DE10DA /* Version.swift */; }; - 6F20A644E0020CD933167F8787BE65B0 /* RSTCellContentCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 85C95C30CA6D9ACC3BEE5F8DA5DE54DD /* RSTCellContentCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6F2190FF42C8559724FA0175A29FEB8A /* Err.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 421D200ED5A594A93CDBC2EAE558F0C9 /* Err.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 6F284A40957953561CDCAB775FC2D3CC /* GBAEmulatorBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ED124D68BC5C2BE53E6F8F219E17F98 /* GBAEmulatorBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6F3A7069C68E2314C3CA3BCE077666CC /* ttnameid.h in Headers */ = {isa = PBXBuildFile; fileRef = EE6B8B6BB5B3CB1A6DFCE8AE31681400 /* ttnameid.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6F3C44555150DE555E29DEDCB0B0168E /* NstBoardTengenRambo1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A8A1BE1B967B23A7584BF56B5F19F6CD /* NstBoardTengenRambo1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 6F79EC15E5AA3B8BF5D4B9008985545A /* RecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EA98521F6B17FA40E77876B68A9285E /* RecordOperation.swift */; }; 6F7D180FA00888BCA886C3A21605228E /* NstSha1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0D2AD7F0330EEE53F5D0CF3BFA80E563 /* NstSha1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6F88F6AB72B3921F493B604895B83AE0 /* ImmediatePanGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C16D5BBBB45CF1D60FC6565D2CDFF1D2 /* ImmediatePanGestureRecognizer.swift */; }; 6F8EBC492AFA04290E635B2720A18FF4 /* statesaver.h in Headers */ = {isa = PBXBuildFile; fileRef = B1044F71995C46DC0FE073BBF10E9B13 /* statesaver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6FA1A6F24ACF98FB14A67371EF625FD9 /* NSConstraintConflict+Conveniences.h in Headers */ = {isa = PBXBuildFile; fileRef = 42C8EB745EF1C9D8ABBD09F6FF45DE37 /* NSConstraintConflict+Conveniences.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6FCE591BA1C38EE501D2712A58ABE2B5 /* Savestate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21E398FC7D62E8D6680411C9513B39A0 /* Savestate.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 70318A9A0D0EA7B834D9E4897AF554E1 /* Data+Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2794F0E81271A9277E8D45290A0CFD7 /* Data+Compression.swift */; }; 704BB47BBF92080A6C5A5EDAD262DC41 /* skipsched.h in Headers */ = {isa = PBXBuildFile; fileRef = 517D5D662F01BA988D74732FFD13B952 /* skipsched.h */; settings = {ATTRIBUTES = (Project, ); }; }; 709ACF2A4D11DEEE18D669127E851053 /* NstBoardKasing.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 96C44FDF7092320E7DBABE66348B2032 /* NstBoardKasing.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 70B4651742DD71B4991606898E40BDD8 /* CustomTasks.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF4E93C9AE2A0B6FCCC1B6A00F68A725 /* CustomTasks.swift */; }; 70E2424B47CC1C31BCE1BF871051FDCB /* PropertyGroup+Harmony.swift in Sources */ = {isa = PBXBuildFile; fileRef = 716AC385E3C379704598782E95836B4C /* PropertyGroup+Harmony.swift */; }; - 70FAB32D4D69DF18D47D3AF17352EE97 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 3B46B04A3CCDD5165D5EF0121C30CE78 /* Standard.deltaskin */; }; 710323166D93351F1690FF199288F64A /* inputgetter.h in Headers */ = {isa = PBXBuildFile; fileRef = C81C97C396CFD4B3B38A6BA482FBBC01 /* inputgetter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 71078B9476051266967867BC1EB8087E /* opengl_GraphicsDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E00E0C2DB0657397A9AD74AF384F0E0 /* opengl_GraphicsDrawer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 715C4EBBD125D47E00905D62FF7F54BE /* FetchRemoteRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B2761CCCCF2A0BEFF0304C3D4DB75EC /* FetchRemoteRecordsOperation.swift */; }; 71727E0AADC7D7C68C81479517DB0A6F /* ConvexShape.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1843FF8911EC37CF2A63F5904DD381ED /* ConvexShape.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 71755A8F52D90AD7920E7601F8A1F29E /* CombinerProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = 2205C23EE949E458595B874E1F2F54B0 /* CombinerProgram.h */; settings = {ATTRIBUTES = (Project, ); }; }; 71BE63C848664935F28153F3EAC616E7 /* Lock.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 23E3548D42C843603C9BA78FE84A0935 /* Lock.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 71C507A4FE9E1263D273FD7A9F7A934F /* ZIPFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A279615234A2EC2D137F27BB38C19F60 /* ZIPFoundation-dummy.m */; }; 71E2BA44FF54FDD0F544412964858443 /* ColorBufferToRDRAM.h in Headers */ = {isa = PBXBuildFile; fileRef = 789BC68A9D6AF69A55A99DC6F4145F6F /* ColorBufferToRDRAM.h */; settings = {ATTRIBUTES = (Project, ); }; }; 71EA66DAD6C0158F104B1CFB5D7F7B0F /* tima.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C38F52C216C0E25C48A8788DB91AA20 /* tima.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 71F8A8BA3A2BCD08F8C85A5C9FCDB433 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 05E7291F492456F36AE41FD68A486294 /* Standard.deltaskin */; }; 720AC572A4D194C64DDFAC57CC680CA1 /* RecordRepresentation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE7E15F3ABAA53BA70833404896A6CC /* RecordRepresentation.swift */; }; + 72117DF6144270487EC57B9B5E01189B /* RSTCellContentPrefetchingDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = D281516BEAC3D67B16886D5733929B44 /* RSTCellContentPrefetchingDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; 728CC3321DA65243863197CC4F0F913F /* DropboxService+Records.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEF0C5AF4C11DC514081356C4E160FC8 /* DropboxService+Records.swift */; }; 72D6F0EC21A4FFA230DCC0A686BE36BC /* Result+Success.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B66F2860FCED552A9CBCF10B482ADB4 /* Result+Success.swift */; }; 732849C7EA811BF357DA9BA08FD12721 /* glext.h in Headers */ = {isa = PBXBuildFile; fileRef = 969C511B05DDBA88B59AC6B445811C81 /* glext.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -833,26 +876,23 @@ 7399BA3ECA9EABD74198C9A47E127371 /* NstBoardIrem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9753052374E6A9FBF436BA41D1115F09 /* NstBoardIrem.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 73A7E0DE1920AF256FEE8DB759E31FC0 /* DisplayWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = F239B99EA0A6E7C6AC61889145C3B02E /* DisplayWindow.h */; settings = {ATTRIBUTES = (Project, ); }; }; 73C072D6B6FF00B94E08750335C75BB3 /* NstBoardNRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CB7C95528D21C181DD0A15EA00BB253E /* NstBoardNRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 73C6ACB8B241F5E17C56555E537497A0 /* RSTHelperFile.h in Headers */ = {isa = PBXBuildFile; fileRef = A363333B17E12DED3509264B7806E627 /* RSTHelperFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 74147321558A01611FC15FD8C5F60FF6 /* RSTDynamicDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 95782CF5CA479EC0FDC53DD42C188A4F /* RSTDynamicDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7424EF34F6E09998781CD1595CC6DA6C /* NstInpFamilyTrainer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 63E839BBEED37A43F074436ADE9E0EE7 /* NstInpFamilyTrainer.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 74297C31967EB18C71FCB4D36664DAF5 /* recomp.h in Headers */ = {isa = PBXBuildFile; fileRef = 6045D3A35D50C1C15AE8960CB2371B04 /* recomp.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7449C06A52695DFA60C7666F184EACAB /* TxCache.h in Headers */ = {isa = PBXBuildFile; fileRef = DD7734A6643304E8EFFE0DD1DF24C38B /* TxCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7450AF691CC4C9D53B1505978F3B741A /* Mouse.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F03F977EFB307844FD944EF3755260BC /* Mouse.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 745469F1C666F12273F5E5C0344323DF /* font.h in Headers */ = {isa = PBXBuildFile; fileRef = EABD40FB697D4F0BE526F3F31A5F7DE4 /* font.h */; settings = {ATTRIBUTES = (Project, ); }; }; 745603475C417679B4EAF0B21D0B1550 /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = B8BC9FD996DB4D58B199162D2B593381 /* pngrio.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 74863411F4369174A69D1D310AE48A2F /* NSBundle+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6806D956E4140F84365C79F5D4FCE016 /* NSBundle+Extensions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7489A9F8D96B199DC6BD31F0A31BD48F /* NstBoardWaixingSgz.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4F185FE59FC46DA85E8E8D713F6D8D22 /* NstBoardWaixingSgz.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 7496E3794E9FE9903A57CD5FE4FA4653 /* OIDExternalUserAgentIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 6303FACD5A9C1BE3214E82440C968C95 /* OIDExternalUserAgentIOS.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 74BABD77D3831947C04A6850FA61D453 /* Config.h in Headers */ = {isa = PBXBuildFile; fileRef = 6165D72607C70B0F2827923BC22DA64E /* Config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 74BB839F637C70E7260264C4E293FAE0 /* GTLRDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 44BD07F028973D4260A9A797E772F208 /* GTLRDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 74BB839F637C70E7260264C4E293FAE0 /* GTLRDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DF399ADFD1340C66513A8388C3CBB04 /* GTLRDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; 74EC1BFD98AB582003C81DBCF3805B6A /* NstBoardSunsoftDcs.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B8221CD345A28BD3CD8E168C400CA8FF /* NstBoardSunsoftDcs.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 74FF29E2C5E0B5BEB0ACC5DE0B3A628D /* Touch.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35C3D297CE1BB6BB9E374CA4474E2265 /* Touch.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 750B0A72B2BD41780EE2CED554A39352 /* TransportConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5135BCCCC7B1AB36FDF0D6D7F5509182 /* TransportConfig.swift */; }; 755864D23E1CE0B293622A6B85BAC151 /* Glsl.inl in Headers */ = {isa = PBXBuildFile; fileRef = 9D2A88F941018214B1FCA8BC763A0D81 /* Glsl.inl */; settings = {ATTRIBUTES = (Project, ); }; }; 75B20C4170175637E1D5057ECBE37DF9 /* PixelBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = A164F380E128043A22ED2D1D1CFDB3C3 /* PixelBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 75DCB91C9618E2F5F188ED9F925DDD5E /* UIViewController+TransitionState.m in Sources */ = {isa = PBXBuildFile; fileRef = AC471F9A34E0E57C35A2BF6C0F31141A /* UIViewController+TransitionState.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 761A08BFE83B27FD85180334C470C6F2 /* NstBoardCneShlz.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 81DE60C31DFB608912BCD7E757C4FECB /* NstBoardCneShlz.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 76234F4B45941D5B1EBBF2BD78B41079 /* retro_endianness.h in Headers */ = {isa = PBXBuildFile; fileRef = ABE964B5C3D1C4A4D0E44686549901E2 /* retro_endianness.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 762A5A75696DC0705B64691DF1A9D46B /* RSTCompositeDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 2691325FF990437B6E7EAB62E91963C2 /* RSTCompositeDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 765837B3020E853D39E1E95745A0C486 /* Textures.h in Headers */ = {isa = PBXBuildFile; fileRef = F61DE044858B67B90D6336505827DB42 /* Textures.h */; settings = {ATTRIBUTES = (Project, ); }; }; 765B2402CE7FD0614A298FD1829E74C1 /* ereader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8B263C03C096BA48C120F0E908386D /* ereader.h */; settings = {ATTRIBUTES = (Project, ); }; }; 766364A61BD96E8E06B3BB0623F11575 /* instr_counters.h in Headers */ = {isa = PBXBuildFile; fileRef = 145B433A6710947EB52A1518D28FB661 /* instr_counters.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -861,108 +901,112 @@ 770ABC0D878E94BF3FE7594489FDA663 /* mi_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 83716FD2276166E4399FF9F40DC2D268 /* mi_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7712CC983ADBC1E3BE5B366352E25090 /* N64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F3FDD7E5AD04F5B6C3F1E3F28A9E535 /* N64.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 77875868E96848BDB6299B3E29BE87ED /* Packet.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8B7CDA4692CFB9DECC74143244B0CDF2 /* Packet.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7788C7EDBB21DFD3D107D6D9A54816DD /* SeenState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83BBBD73DC5C5BDA24F97461BDDEA0D7 /* SeenState.swift */; }; 778DD60136C5E7EF86B054043A83FF54 /* ftimage.h in Headers */ = {isa = PBXBuildFile; fileRef = F6DACF017EE0B6F06593A30F95A0581E /* ftimage.h */; settings = {ATTRIBUTES = (Project, ); }; }; 77B586F5F46F40A7ED43340E490D4D41 /* hle.c in Sources */ = {isa = PBXBuildFile; fileRef = F3621D7BD773326AE63CB675C90BA4CB /* hle.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 77B8020FBFD05DC127B92C6CD500DBC8 /* GTMSessionFetcher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BBE4EB7361152D3172AB0C275C92415 /* GTMSessionFetcher-dummy.m */; }; 77CB4A617AF6E9EA2BD65E46A6A0E951 /* txWidestringWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DA8EB0F2D12415D238B016624275500 /* txWidestringWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 77D0D0DB7B5CEA6211F9B969C4B2EDCB /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 26ECC555C3C58DB5AFADDF0AA680057C /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 77D0448819EEBC21A17752F508553A2B /* OpenGLESProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE552D959907002364F7DEB08F72AAC2 /* OpenGLESProcessor.swift */; }; + 77D0D0DB7B5CEA6211F9B969C4B2EDCB /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A39A8E5B0EAAD79CD06BCC85C2B6CE1 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 77DEE2A4BFBFD8573FD60ACDDE202F4E /* Entry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EB4FBE3A34AC5F5CF55E865DDB2BAC3 /* Entry.swift */; }; 77E2922A59E02ABF3079F33120E1D113 /* DSDeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 30A1CB2B16F7B1AD55E141D4569AADDC /* DSDeltaCore-dummy.m */; }; - 7814675D3CE2F5E92BAE91DCE181A992 /* SQLite.swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BBBCBFA40EE49208B031D370878AD29 /* SQLite.swift-dummy.m */; }; + 7814675D3CE2F5E92BAE91DCE181A992 /* SQLite.swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A12F6604A0432A7726E6AA7EE190AAE /* SQLite.swift-dummy.m */; }; 78229A0A4F3F6370B92A232771EE278D /* NstBoardKaiser.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F6781A3FC78A881B992A00C57EB61870 /* NstBoardKaiser.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 782907F055EA6D3FC4F2C09832180AEF /* debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E42D33839B19E42F79BE5920F217087 /* debugger.h */; settings = {ATTRIBUTES = (Project, ); }; }; 782AA479ECD641CC6FC024016466888A /* TxReSample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CE161D27A87AAD9038E12AFD2F2F42F /* TxReSample.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 783BC4C05CE1CA8E17606B0C87DD23F3 /* TextureFilters_hq4x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C82CF0926260C9CD4C89A371F21A01D0 /* TextureFilters_hq4x.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 784A64731A1B4377DDC0A5C682BB114F /* MFiGameController.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 2A68BB1DAC0E13CD0973C5A2071BCABD /* MFiGameController.deltamapping */; }; 785BF23552C959C78C02D75131C70850 /* snapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FCFEEAD16A78332EDF4C0FFC05AA2E6 /* snapshot.h */; settings = {ATTRIBUTES = (Project, ); }; }; 78E1DD687C8EE7EBC2726555CF87095C /* ARMInterpreter_Branch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1CAC7BD1A9DBB436A379B63568AB915F /* ARMInterpreter_Branch.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 78FADA583FAEE2A33B9A4C2E848861DD /* oglft_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 946E4DEE68AAF134BCD6A0ED870B2AD4 /* oglft_c.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 791A91F9019EBE452E9B369BD472F386 /* RSTCellContentChangeOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C7F0416EEC0A378939FC4ABF9DB349F8 /* RSTCellContentChangeOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 79255615D24E6AD0CB444759873817CA /* Vector2.inl in Headers */ = {isa = PBXBuildFile; fileRef = F597EF6F3EFC780B48CBD503A27748B9 /* Vector2.inl */; settings = {ATTRIBUTES = (Project, ); }; }; 796077EBBDF6C5385A195E4255D774BD /* SNESTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FA5B004AA291D1626226A4BADA73775 /* SNESTypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 797D5C78945FEFC03F3E01E317EF5CDC /* RSTCellContentChangeOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 729BF0CDF2F194945E181AE490D95F4D /* RSTCellContentChangeOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 796FC800517F0F3645FBDB505A3D7E97 /* RSTNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 57BBF8F3367BAA59BCB8B42DE62C605B /* RSTNavigationController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 799CA91FB606B023922995173A1C38C4 /* ARMJIT_Linkage.S in Sources */ = {isa = PBXBuildFile; fileRef = 5D24EAAFCA1D2D99DA57CE30F5311170 /* ARMJIT_Linkage.S */; }; 79CB7F0A6903DF83EB1A4F5F6F5BB43C /* NstBoardAveNina.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B4AA759028D4A83689DFBCAD32BD6F89 /* NstBoardAveNina.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 79DBECA257851FBCB205412764428665 /* PngFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 833E950CF0A0E93C8DE5A7B5C033A416 /* PngFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; 79DEA850CADB648C593E2E6B7804E79C /* DS.swift in Sources */ = {isa = PBXBuildFile; fileRef = D456E5925A2BB22F574458B154CD52B1 /* DS.swift */; }; + 7A7C26DC835D7E4A6E9C035B07306CD9 /* Roxas-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E216815BF6887E071400BA9F9EC1309 /* Roxas-dummy.m */; }; 7A914AE8439D1E345E8D7359930C4576 /* VI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1DB78BBE91A07FE94FFEBBDD3B5A29F5 /* VI.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7AA4C315063695BCEFAA801048AEBE2F /* SDWebImageDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = A1DC4D0732A2D4A00391980B544DCC7A /* SDWebImageDecoder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7AA4C315063695BCEFAA801048AEBE2F /* SDWebImageDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 1903B1725F196A865B52DDDC1A2BD740 /* SDWebImageDecoder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 7AB515F7BDBF7D3D70C83B91F3C33384 /* NstBoardTaitoTc0190fmc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 26D2E2CEDE1DD7669C1A099A2187DB84 /* NstBoardTaitoTc0190fmc.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 7AE4BD52C67EB01E923B003792BB0470 /* NstInpPaddle.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CA1C13CC0969B73224161A45530F6B3B /* NstInpPaddle.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 7AEAE0B408F18AEE319D598B12BD48D5 /* SoftwareRender.h in Headers */ = {isa = PBXBuildFile; fileRef = E781B127C2986BE78DF6602C9428DB43 /* SoftwareRender.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7AFE8206738BCF777EBE4701FB690EF5 /* DeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D3700E443B0C590B19D2400939E6ADD3 /* DeltaCore-dummy.m */; }; 7B0FD1F98F171D611768C43AB7DD4025 /* sdd1emu.h in Headers */ = {isa = PBXBuildFile; fileRef = F36CCDA948DEABD79BA79A4B43EFF378 /* sdd1emu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7B214DD8A093E10187E40B2363E09F1F /* VideoRendering.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC14010F5B81F5784EA4C38384B0A468 /* VideoRendering.swift */; }; - 7B705214DE4AE6DD613172682F70CC73 /* Roxas-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C294380A302333A15E6E9C07DBB5B94 /* Roxas-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7BA9EEEE99AA55CD892CFC3C081BABE7 /* Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23337F04F86774C07156F65B6DF86644 /* Foundation.swift */; }; + 7B82959877B9DD00DE5919ECDB3F8C85 /* VideoFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2847D38189084A48043661E02AE5E3D /* VideoFormat.swift */; }; + 7BA9EEEE99AA55CD892CFC3C081BABE7 /* Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E428D7A0EE985F874A11A23CAC065DE0 /* Foundation.swift */; }; + 7BB0987D9B11A7D5B0A5E9F43D26D72A /* NSUserDefaults+DynamicProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CD24C018B59B44AC41CBF862AAD1B65 /* NSUserDefaults+DynamicProperties.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7BF596E170F46547E26DC34C2B5ADFC9 /* pcap.h in Headers */ = {isa = PBXBuildFile; fileRef = A00FBF2E46DD44AB85A9E179CB0BBB29 /* pcap.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7BF66635167CAE5044DA7C04AAEB7052 /* NstBoardNamcot175.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BAC09A43CAA1DE563D4710120B89ABA3 /* NstBoardNamcot175.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 7C035504FEC0BC58A21672D234F30415 /* render3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 11D6B4F6E066DF2E8ED26399CF6D7821 /* render3D.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C187AAA74ABD2F9260DF96DEA1E40C9 /* GTLRBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D25D90C2F0571F2A637C30B9B936472 /* GTLRBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C20C65E76A8E35604D8E46DE23160AD /* GameWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7637625DD89FB4AD1D49465C9482EC0 /* GameWindow.swift */; }; + 7C187AAA74ABD2F9260DF96DEA1E40C9 /* GTLRBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 044980032257B075E0B9A57CEFBDFF05 /* GTLRBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7C3D3E0CDF98B631630E96440C0BDA47 /* OIDTokenResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 67972EDAFE4E36E6817526CECEB8ADC1 /* OIDTokenResponse.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 7C75B629A44C6E6B92CDEE604C795998 /* alist.c in Sources */ = {isa = PBXBuildFile; fileRef = B0F1D9E539EEFAF751D9F3EA1ED557D0 /* alist.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7C81C2010292FF18C9B7E33171EB2AB5 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA1C0B3274E804CB44DE0C80AC3E1E9F /* Response.swift */; }; + 7C81C2010292FF18C9B7E33171EB2AB5 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9959369E0C1F1D18532504AC8723B430 /* Response.swift */; }; 7CB34EE47A08662E4B9B5E9AAD4F0150 /* MemoryInputStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 94A9CAF79C008CDB302200E88CFF9FFA /* MemoryInputStream.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7CCE081CB290EC96C8F06C0B071DAA44 /* RSTTintedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F91A9DD254E8DA7FF12F970DCDC62DE /* RSTTintedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7CF75B42B130C582663AE9836DD9B194 /* WriteToRDRAM.h in Headers */ = {isa = PBXBuildFile; fileRef = 7451BADFCD5FCDA73345F9FD825AA24F /* WriteToRDRAM.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7D157AFF8881E357A2F8946CE422C0C9 /* boolean.h in Headers */ = {isa = PBXBuildFile; fileRef = C436117D3ACAAAC959D8673DD5EA97E0 /* boolean.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7D29146B1DDFEF438BABB21EED8F4716 /* NstBoardMagicSeries.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 97B40BC84DBFD2EA1A65EE8D30EE2DCE /* NstBoardMagicSeries.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 7D39C242D4DC16FBDF35161926D392DD /* FramebufferTextureFormats.h in Headers */ = {isa = PBXBuildFile; fileRef = 170B155DBFDD680271E2D9982A607A14 /* FramebufferTextureFormats.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7D49CC9DD30666F88A7009FC96080CEB /* ttunpat.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0E2F1A46796E056C1EB81517BADB9E /* ttunpat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7D69A090845F46E924328386BA9E08C9 /* GTLRFramework.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B84D2927A477768BA7A22EB43B0A83 /* GTLRFramework.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7D69A090845F46E924328386BA9E08C9 /* GTLRFramework.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E1D04BE6B511C93BB76FDEA022EB898 /* GTLRFramework.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 7D74F7217814255EB59A9B41BCAF6E7A /* logger.h in Headers */ = {isa = PBXBuildFile; fileRef = 41718C51A6F1D77D30ABFC2B1E584F17 /* logger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7D80C5B440572EBFC177FDFF7978ED48 /* GTMSessionFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = E2D421F13E814E57B15110AAB3EEFD11 /* GTMSessionFetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7D91E5E992560E07B701809F219E7A64 /* RSTTintedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F91A9DD254E8DA7FF12F970DCDC62DE /* RSTTintedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7DE1FB798BBAD9142B58DEFCEE0C8573 /* CRC32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86E81FBE0D6AA7042D5A17A61FD614F5 /* CRC32.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7E05B3F94E4826FA3F6D9B636D581E9A /* RSTArrayDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = FAEBE5A9F378271ED1B66BA1076847DB /* RSTArrayDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7E406ADC93600AE4A8CBC00F0F662C9B /* vi_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6B6DEF81FE4555CE25B440FD2493BF /* vi_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7E7EF6A077D68E66A2E6AC9D216BF163 /* Sram.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F18A2D4F45F71AF6AFB5F94186376AD /* Sram.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7E9D2BFEEB1B89973F69B938364DBBCF /* GBCCheat.h in Headers */ = {isa = PBXBuildFile; fileRef = AE92A91A4BC673A5EB7544761275778E /* GBCCheat.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7EDA5DCB56636BD3C12BCDCB7BB6E593 /* Common.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C6290365B08DFAC2E9078DECC2AD9E6 /* Common.swift */; }; 7EE35140281452E80563CF746351C0F0 /* FrameBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9573AE8F260951D3F98DAE404AD1B908 /* FrameBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7EF1B608391306A665B481D7606B6556 /* UdpSocket.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1D28337CD2487A0BB2C9A58E121AD619 /* UdpSocket.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 7EFECDD7A4EC03E917E65EC8694C96E9 /* glsl_CombinerProgramUniformFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A15ADE5C4BB0B7B908EDF04E3AE34278 /* glsl_CombinerProgramUniformFactory.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 7F17FB06539CF41988BD36E8976F0669 /* NstBoardBtlGeniusMerioBros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 135664C79DDD08714827F192D20F17D8 /* NstBoardBtlGeniusMerioBros.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 7F28EC44F38CE9A2B8113736FCCA2248 /* NstCpu.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6CDDFBD9A3BA785C35B9CC79A6F6ED65 /* NstCpu.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7F33FAE6C5BCDF7D0AC2DF5A8A915057 /* DBChunkInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F2DBB27BEEB1C9D7D604A978D9DD6B6 /* DBChunkInputStream.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7F672845861EECF0EA4486ED859E7387 /* RSTError.h in Headers */ = {isa = PBXBuildFile; fileRef = CED38382667C264AA0CDCC9A96F9E713 /* RSTError.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7F67B3358A80FEF4C5000034B5BCD673 /* NDS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7DC552BE60F2C812F661C06470C6FD /* NDS.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 7F70C184C85C05CD1C66E46DE8B915AD /* DepthBufferToRDRAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31A0805454F15E0CCAE09354DF86EEC6 /* DepthBufferToRDRAM.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 7F73D070C20FA6A9E06BD5BB1969F740 /* SoundRecorder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 63C624819908489F4CC8D513A9D77584 /* SoundRecorder.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7FA18D5772EB9BD2594BEADBA2200C05 /* CheatFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 675E8B0AFDC80A9C1970C7FDCD10849C /* CheatFormat.swift */; }; 7FAA87BB5678FCFB88678F13D74832D3 /* F3DBETA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C807A3D32FB0C2A58A08A7270A8A634B /* F3DBETA.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 7FC8665AA885C2CC74540097301EBD80 /* retro_stat.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CFB6CDEAD5477F3C41FE7AD566FAEDC /* retro_stat.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7FF03D665509233706BDA0C150864C0D /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = B406D46EC012C6003DF8D4CCFB546BC7 /* Standard.deltamapping */; }; 8036BA365047D6DD8357FF78F71C6BC3 /* NstBoardBandaiKaraokeStudio.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F8D5906CA330B4B62AECE7C268055484 /* NstBoardBandaiKaraokeStudio.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 803D3D5CC49914FFFB742A0BBB8157D5 /* Vector3.inl in Headers */ = {isa = PBXBuildFile; fileRef = 01802D9854180DB5B0E198799B4DD37F /* Vector3.inl */; settings = {ATTRIBUTES = (Project, ); }; }; 804A0A5BCDA4D05113EC7DCDB300E775 /* AlResource.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F00BE8221079BB41E4694113AC54BAC3 /* AlResource.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 804F9C99E5E6A801A3261655DB7D4A11 /* DLTAMuteSwitchMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 103BD5750DB5001ED6AD8D19BA221BC5 /* DLTAMuteSwitchMonitor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 80597632A63DEA9B748FE9E564716EF9 /* idec.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C73C07293FDF1F150FC5E6176AB0D6 /* idec.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 808E589F702DDDED89E5E112CA2A8A31 /* OIDResponseTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = BB6F98A88FE9147A7B9EC010B4812365 /* OIDResponseTypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 809C328A7DF1BBACCAFBB487A63FB55B /* Sound.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D5FA545F9FB9A48DABD30AF68FCD2C4 /* Sound.h */; settings = {ATTRIBUTES = (Project, ); }; }; 810DA07041F8DEEBF22D9232017E6AEC /* NstBoardKonamiVrc1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 220BBE12AD3F54D62DBC8EF45CC87175 /* NstBoardKonamiVrc1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 8113D518B7C490761F97C5C3D914A749 /* NstBoardBmc76in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 50EE5C17E3F318BEB4D7B2961BABB0F2 /* NstBoardBmc76in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 813052F5B55F581A500F453808BDDCCD /* RenderThread.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB416CB894186FF9DB4FCE49262E6CC0 /* RenderThread.swift */; }; - 81470D2CD78095A13EF56E0E79D5DCDE /* Base.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8257136F31A37672447D5F2FCF46FE10 /* Base.swift */; }; + 814D61A7FE271E6B72DEEBCB6209684A /* UIApplication+AppExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57A493CADEF074E51A6C9C0D3220B6BC /* UIApplication+AppExtension.swift */; }; + 815C1A533B7D749CBBA7F3D96371EF7F /* RSTOperationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 2394DCECC5F71EDBCEE1E73732453EAF /* RSTOperationQueue.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 81954AF50CFDB697634978EB9258F689 /* screenshot.h in Headers */ = {isa = PBXBuildFile; fileRef = A063B13BF5FBA3260BB923BFF920E8BE /* screenshot.h */; settings = {ATTRIBUTES = (Project, ); }; }; 819A79F7FDB79573EE098B80E36E8B8F /* NstVsTkoBoxing.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 65A433B3EB98A7B65E810897D6DA9F4A /* NstVsTkoBoxing.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 819D8F8FA2E6617646D9BB4D28100C7C /* RDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B4D4C4C2D7260BC7EC51ED0250F0CE71 /* RDP.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 81BB265435B724881A950F157EC1C03C /* ControllerSkin.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7B19926ABCEF3C3A145040DC531097E /* ControllerSkin.swift */; }; 81D16CBA22E9633EEB0318345692E2ED /* NstInpZapper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 77F2AA581C57990DA2CAAAAAFA7978ED /* NstInpZapper.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 81F69BBAA58BDA48C3578BCD2DE8EC9D /* UIImage+Manipulation.h in Headers */ = {isa = PBXBuildFile; fileRef = 6038A3E16A86BD8715BB972CD9A02CFD /* UIImage+Manipulation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 823C8CD376F50A6447A4DD8A34DEFB69 /* ftbdf.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DC7FF53876342E3B736AFC93E814FC1 /* ftbdf.h */; settings = {ATTRIBUTES = (Project, ); }; }; 824DB7D0B889BDE3C5F397E39974745D /* NstBoardGouder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6E2949ECED20630F005C9089F54664BD /* NstBoardGouder.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 826AA94FFE2630D603192C927473A929 /* RSTBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C080DAA189113F34158A00AA1827ACE7 /* RSTBlockOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 826BEA30577B0C879FFFCF98BA79F1DF /* GTMKeychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 95DF5F1F5D51E2691C2FCC536D134468 /* GTMKeychain.h */; settings = {ATTRIBUTES = (Project, ); }; }; 829278AA869DC84DD2440AEFC3C7970F /* mem.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FEA0F061FD0DCA4F3401D15B1BF469E /* mem.h */; settings = {ATTRIBUTES = (Project, ); }; }; 82B9FC5CAD9153F22D98B4E2EA68A615 /* TxFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C064EE04F45B71F7006F2780F5435535 /* TxFilter.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 82EC1C6499EF26B127216D03C2AB09D7 /* GTLRDriveObjects.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C6BC0D076F377BD8D6A2EAB196A9653 /* GTLRDriveObjects.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 82EC1C6499EF26B127216D03C2AB09D7 /* GTLRDriveObjects.h in Headers */ = {isa = PBXBuildFile; fileRef = E632C9FD06F17BA9EF62C0EB0F22D153 /* GTLRDriveObjects.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8353599D86E76A3FBC94053B5A5219E3 /* NstBoardUnlA9746.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 073D52CEA96107F85C9CAF27356E968C /* NstBoardUnlA9746.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 837DDABAFED414B385A9131813FBB119 /* pngtest.c in Sources */ = {isa = PBXBuildFile; fileRef = 4B5834CF0F3103ECD8508F152DAD7BDE /* pngtest.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 8384CD016C707E301951D35D52400C68 /* NstSoundPlayer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BD8AB4C59982A02840E5E3DEF0708BCE /* NstSoundPlayer.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 8387905F54F3AE8CAA137F38E6CC840A /* InputSoundFile.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 55B9E506F2EC9B7BCD89BD357A6381B8 /* InputSoundFile.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 83CFC7BCF40891AD4478A6126A21CDDD /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926D3355F6CDDC80A17A8A29A62AF05 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 83CE2DF2AE029994E2446BDC74A27D3D /* Thread+RealTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AE4F753611AEF693986993C3D54DDB4 /* Thread+RealTime.swift */; }; + 83CFC7BCF40891AD4478A6126A21CDDD /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CF1F486490405CB6D327E9964B48F24 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 83E428474D3D74B484D8EE1E1EE3CAB2 /* FilterChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092DB3EB21BDEE14EBAE69612D017417 /* FilterChain.swift */; }; 84569B100A8CFC2FD31C127CFFCC4AF8 /* Textures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B1BE1F8D9A26B5F6AD4486918D9E3B8 /* Textures.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 847DF2256C543478637626B1B292A515 /* Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33FE7D465ECFED221B87424469C67A9C /* Files.swift */; }; + 849060A5D7CEABB947C8690A86C984DB /* UIResponder+FirstResponder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BEF3307500AE238F67BF21F7A5E2B90 /* UIResponder+FirstResponder.swift */; }; 849C0DE80B2C123B0A6A3650668133F6 /* GPU.h in Headers */ = {isa = PBXBuildFile; fileRef = E9F2A569674822CF8AD78FEE9E9A88AD /* GPU.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84A421E474477B231DE23FD98986B34F /* GTLRBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = A972E09BA9CC2B4E13DEEC72273122F5 /* GTLRBase64.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 84A421E474477B231DE23FD98986B34F /* GTLRBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DAEEE63785B00C93A66E60C0A817F87 /* GTLRBase64.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 84B90202FCB206D3EE5CB11B42A4FF8C /* m64p_debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 57A748F9DF6BE7E55A5A0388FE3E1701 /* m64p_debugger.h */; settings = {ATTRIBUTES = (Project, ); }; }; 84C79DD5BDA1BA7698E72E7B0AE1D03D /* NstInpPartyTap.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3C704D55B6FFA356BA5C8C4B7EB2754E /* NstInpPartyTap.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 84D13BD9B8CE83F1306F88F7ABB0882C /* TeamCommon.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8E8726464D823B37E1B6D05F7E27255 /* TeamCommon.swift */; }; - 84D2CFAA7888C9DE9E41A043C93F5336 /* UIApplication+AppExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57A493CADEF074E51A6C9C0D3220B6BC /* UIApplication+AppExtension.swift */; }; 84F9C22778BD6A9A7CA6A36DDC466A03 /* System.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 681C6B5D5F90F28373E784C81E247636 /* System.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 85527500CF80CEFFD460EC47E6AF9C25 /* UIWindowScene+StageManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADD04AF6D650BB8C6DC2C8B3CE4D50CE /* UIWindowScene+StageManager.swift */; }; + 859DAA6E3BB359F07A6F1DC19703EDAD /* Paper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 473D178DE3F443CA5636122DC022E6C6 /* Paper.swift */; }; 85D0939D4600CEDADE2C095B7688B115 /* svpscmap.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DB6343B945C10C877D2EB07FB7DDDE7 /* svpscmap.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8648711E19CDEBD2D5E77C6913096AB1 /* DeltaTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 23322BAA6BC48277E409BCCB4717F470 /* DeltaTypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 8674D795322F34E4DCFB09013859BC81 /* GraphicBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 44A50EFCC9BA0E6CB99450C7FB3D91CD /* GraphicBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 86996207E9F250BACD2584C3D6BE7F26 /* aes.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 57EAC3D7BE52CBA8ABD78FA57C93A4A1 /* aes.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 869CCFDBCD0557914B32395C95EE8847 /* SPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 63D1C0BC417103C4DA9392CE6221CC23 /* SPI.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; @@ -970,19 +1014,21 @@ 86D119483438A226A18036657542579A /* NstBoardKayPandaPrince.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3A6BEE1354AB3BB2C198E3B84CE0FD32 /* NstBoardKayPandaPrince.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 86E3D2191A82266D217B68352603FF86 /* NstCartridgeRomset.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6651040D2ACD2960D0454CBB76E74C5C /* NstCartridgeRomset.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 870F9162AEB4082F67D1EB5D5659B754 /* fterrors.h in Headers */ = {isa = PBXBuildFile; fileRef = C7A5FD929F6CABA16DAD7F0D6F24BCB1 /* fterrors.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 875F5857DE237E34D8A1CEBAE5052C24 /* NSConstraintConflict+Conveniences.m in Sources */ = {isa = PBXBuildFile; fileRef = 18C47529D612750BAFD8B41096414B5A /* NSConstraintConflict+Conveniences.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 87659EB72DD1112FCABD7BEBD8BB03AC /* SDL_opengles2.h in Headers */ = {isa = PBXBuildFile; fileRef = 48E3315E7F70EED2C80DA34DF0D097BE /* SDL_opengles2.h */; settings = {ATTRIBUTES = (Project, ); }; }; 877767BEF9274A6876A8E39DB511442F /* re2.c in Sources */ = {isa = PBXBuildFile; fileRef = C22261743FC02934DB3B9E84F128F39D /* re2.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 878DAF23060BFFA0046DAB73A095BA8F /* NstBoardHes.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 422A80E5C1488C2703070BE3A9BFCBF8 /* NstBoardHes.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 879F9F8F726E1E4349E1631FEEFD869E /* GLFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7657BA65EF8EB33312A65840AD32753B /* GLFunctions.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 87F7BECEEDAB6C875E02DC52C49EC1FF /* Time.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A73E4863B50D443B8690784AE23332E /* Time.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 87F841AA0D40203028AE80E2C1AB3403 /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = 1640475EBD956E40B62B5F9A05189C79 /* pngmem.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 881454430F2BBEE23379EC2094AFE03C /* DeltaCoreProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 491E2794FAED7E9D94AE9DE168F3D0A4 /* DeltaCoreProtocol.swift */; }; 88232F50F3BCFCA682F10573A4E74418 /* NstInpExcitingBoxing.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3E7AF896E1BD339BEBCF60104011B278 /* NstInpExcitingBoxing.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 8855166357A5978148B4978AEE59CBF9 /* T3DUX.h in Headers */ = {isa = PBXBuildFile; fileRef = 86100202ABE49603FD3A794305B6D352 /* T3DUX.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8863CC51B030B74173CE530C9FC8F293 /* NstBoardKonamiVrc4.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AB921B1DC81BDEE5F51CF126A058E0A6 /* NstBoardKonamiVrc4.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 888D311F699520E87D67C07C1ACA92DC /* bitmap_font.h in Headers */ = {isa = PBXBuildFile; fileRef = EDFBDB2F7EF79A11AE780E973156FEFA /* bitmap_font.h */; settings = {ATTRIBUTES = (Project, ); }; }; 88A8FA032C974EA305F9ED141E63099C /* NstBoardUnlKingOfFighters96.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6D6DFDB15FE6CF03FA837635E83FF32D /* NstBoardUnlKingOfFighters96.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 88C3807A3E8D82BF5B1A6A2B724C26B9 /* F3DGOLDEN.h in Headers */ = {isa = PBXBuildFile; fileRef = F1F308219B60066743A63F15A7474009 /* F3DGOLDEN.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 89A51D3778AACF0643F2EF7EA5921C85 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C84C3D0F11A5EB1115FFB93D23447AE9 /* NetworkReachabilityManager.swift */; }; + 89A51D3778AACF0643F2EF7EA5921C85 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB2F51D5F10CCC05DE05857AF78C4BFA /* NetworkReachabilityManager.swift */; }; 89DB2832E392F9887C9B0B52807F1A38 /* Transformable.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A360B5584C9A055FB323CD5BE3C7112A /* Transformable.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 89DF4D928A1B9B59974CF85641DB22F9 /* NstPatcher.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 48160C3EDB3E848ADA556F24A1F0E05C /* NstPatcher.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 8A2CFB69A45297D855042879760CF81E /* NstSoundPcm.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FAB191CE78DD029B3A0A1ADEAE1F8064 /* NstSoundPcm.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -995,6 +1041,7 @@ 8B693FE59B92579B64340CA34C51DA2D /* opengl_ContextImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 508B1B9DD956BB2871C1FD457DE3699D /* opengl_ContextImpl.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 8B8370E1E4343CCBE72C4A9E17D3EB45 /* emufile.h in Headers */ = {isa = PBXBuildFile; fileRef = 59C0A3B80D2560CBAFDA59C325B9AF68 /* emufile.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8BB14CD4A4131DE34E4ACAFD7EE701D3 /* clamping.h in Headers */ = {isa = PBXBuildFile; fileRef = 99D59C62581B677C041ED7ABB2684D15 /* clamping.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8BB6D54EA1E55CDDB425F34604665834 /* DBChunkInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 69DDC90963CE22D2698E75E047FA5694 /* DBChunkInputStream.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 8BDFA09DF258B88B8A08FB574741B743 /* NstBoardUnlSuperFighter3.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1DC7FC22376787B4AD635EF64919EE2F /* NstBoardUnlSuperFighter3.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 8BE266498E1A583A0F8AC611E515B408 /* flashram.h in Headers */ = {isa = PBXBuildFile; fileRef = 913C96B95F83ED34F52FC03BC386A5FB /* flashram.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8BE8E4EF68AD338F6E09101AE8B45C99 /* internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 838392E1DA72E275361A75F4487346CA /* internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1002,27 +1049,23 @@ 8C0274677DA920E5667EDA6C0C555E75 /* NstBoardSuperGameBoogerman.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F24A762E5126F2A1E976EFE91A9179BB /* NstBoardSuperGameBoogerman.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 8C162A102E0F64503FF64166BE3F9E1E /* F3DZEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 39046460FA72A6A56671F0F6B91AF239 /* F3DZEX2.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 8C2AEC33DE2D6A21BE06CCC529A5A265 /* TextureFilters_lq2x.h in Headers */ = {isa = PBXBuildFile; fileRef = FF876C737E6500D15274E0522E5E146F /* TextureFilters_lq2x.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C4F17E9CEAC2E52C04D3946D331D6D5 /* GTLRService.m in Sources */ = {isa = PBXBuildFile; fileRef = A8E6AB2F458571355560DBA9096AB908 /* GTLRService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8C4F17E9CEAC2E52C04D3946D331D6D5 /* GTLRService.m in Sources */ = {isa = PBXBuildFile; fileRef = 65C041CF729204D4FD8D6C65A82A97C1 /* GTLRService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 8C694D962BF37523CBD2D44495899E85 /* wifi.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C824FE92FEE981231F0E7F82D68830 /* wifi.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C827FE09F83F11CBDA8F283B2086456 /* UIKit+ActivityIndicating.m in Sources */ = {isa = PBXBuildFile; fileRef = 909D8E207656B028E88C377D1425D826 /* UIKit+ActivityIndicating.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 8CB2304341D5F36F76319498BE38B654 /* NstVsRbiBaseball.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D58E6DDA3A017F21A7B64FB5713075C7 /* NstVsRbiBaseball.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8CBC8B4C98ACF627FA090A7F43106607 /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 9B1ACC9E2F2024AB5391E216FCCD3371 /* Standard.deltamapping */; }; - 8CE9E8F6687BD59187A6FADE4820D498 /* RSTSeparatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = A586E5FBA2533BD9EC43EFCEC1A2C549 /* RSTSeparatorView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8CF05AAF0B79A6D91F416F7D6397C208 /* GameController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0680D0EC0F7556C47C63C604ADEFD565 /* GameController.swift */; }; - 8D10823AC17A303950A80DEB48DC1023 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDAEDE6317A2C17D4DB07ED6E3982F55 /* TaskDelegate.swift */; }; + 8D10823AC17A303950A80DEB48DC1023 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32A441D2F5811D199D7639BC68C30A6B /* TaskDelegate.swift */; }; + 8D2139FDFD828651E6E08D664EE02A31 /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD8090C2C4D6677D98DF61168FD3C8FF /* Archive.swift */; }; 8D255473622F5ACA16B452399BCA114D /* Settings.h in Headers */ = {isa = PBXBuildFile; fileRef = 38E5C54CB5E585159641DCE3D9642596 /* Settings.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8D410B1DD1AC336D7A2DDB3A81FB4FDB /* ColorBufferToRDRAMStub.h in Headers */ = {isa = PBXBuildFile; fileRef = 61617EFC8602E33099222E4CB2B190E7 /* ColorBufferToRDRAMStub.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8DC9BAE60FF061920FEE007FDA277165 /* ARMJIT_Branch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA8815E33DEFEBC12958212043BD15A /* ARMJIT_Branch.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 8DDE736577EFE85B9ABB45E95942DB96 /* Service.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B6E2F8E46DDA68A4E83B62F5C54AB0C /* Service.swift */; }; 8DE7DD36EB7BBD1294BF92F5DF5134E7 /* svcid.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BA280C198FC1CEB945727BFDB4C0998 /* svcid.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8DEBA2D77052B632C229806718F3AC56 /* profile.h in Headers */ = {isa = PBXBuildFile; fileRef = A03DF8BA049109C4706B3178AB84D2C0 /* profile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8DEE0BE3C5F97C9605B7FF974170D64D /* UIAlertAction+Actions.m in Sources */ = {isa = PBXBuildFile; fileRef = 180F36277339830E2C8E248501C9798F /* UIAlertAction+Actions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 8DFC6E3E9856E8490054F108C411F534 /* ARMInterpreter_ALU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DCCE06A90F876C47172EB877B4D1939B /* ARMInterpreter_ALU.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 8E32FE978C573CF1647735B13617CE3B /* NstInpPowerGlove.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A16C1235EEB3B34E65A0A4D5C5E70121 /* NstInpPowerGlove.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E3F5FEE14F3111EEFFCFCF99557A4CA /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 5EA0178D9A10839EC9E1FBC402468DAE /* Standard.deltamapping */; }; 8E615FF629B31118DDF35D64B4531A90 /* Database.h in Headers */ = {isa = PBXBuildFile; fileRef = 388B7AB08494BC0CE5B292DB67FCC889 /* Database.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8E9F1D9434065552D4D66C79C29E1556 /* PlatformConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F06F6967904359DAF7E76D7BBB0C4F9 /* PlatformConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8EA67DDF387EA10ADCFC1FDC05900B1C /* elf.h in Headers */ = {isa = PBXBuildFile; fileRef = 133B0E7CF4E6609FC38EDC0D0F8D25AA /* elf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8EB8CF7DC6E2BBE10A04B63771C2E2BB /* OIDAuthorizationRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 72A27101BC912E97C4A848FA5B2852E3 /* OIDAuthorizationRequest.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 8EBCBC69C3B4E4BDFE2AB6D79E96A787 /* NstBoardBmcGoldenCard6in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4833865EEFC580BBC6B426BBBAF41308 /* NstBoardBmcGoldenCard6in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 8F0A7C9537CC614C4674F9B2D2A9B9FA /* WindowStyle.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 06850EEF7309E2768118A0945B11FCA5 /* WindowStyle.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 8F0DDDCD6877B60131EDA6560DADAD8C /* c4.h in Headers */ = {isa = PBXBuildFile; fileRef = B5157071CB840BAEBFDA6265F58179FD /* c4.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1035,19 +1078,21 @@ 90484821259905CDDB1178B653CB72D9 /* controls.h in Headers */ = {isa = PBXBuildFile; fileRef = 602C4089BDD19728DD20894159F75CD7 /* controls.h */; settings = {ATTRIBUTES = (Project, ); }; }; 905C2FD2A4EF634F13E8E25CB488A44D /* opengl_GLInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 887097ACC33B9A3E93B4D597F6BA2ED8 /* opengl_GLInfo.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 906BC9ED5650F56D54D8BD14A3040CC8 /* NstBoardBmcNovelDiamond.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7663ACEEC1F439694D5928A2A478C3F2 /* NstBoardBmcNovelDiamond.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 908E177D6CBED6F0B3D5E8DA25F078B7 /* RTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE37500E60282A9A4012827461E8C2AC /* RTree.swift */; }; + 908E177D6CBED6F0B3D5E8DA25F078B7 /* RTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2580FFCC835723EF1F5DDF5E6F2165B /* RTree.swift */; }; 9090CF32234F714B1BB6C2923A93C49A /* NSManagedObject+Harmony.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96C67E7D3EA53E2D34D17AD4CEDBB8DB /* NSManagedObject+Harmony.swift */; }; + 90CB671D898E13039E24F030E85BBB89 /* RSTCollectionViewGridLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D1F8117CF84C591BD76F30075300432 /* RSTCollectionViewGridLayout.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 90FC1D6C213B9932B7334A1429DD3BBB /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = F648589D7F71D454423402C87BE80886 /* pngerror.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9102A938C0BAACB3A161E27977690BF8 /* Value.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC30E6531D1C727E6389B4A27F9674E0 /* Value.swift */; }; + 9102A938C0BAACB3A161E27977690BF8 /* Value.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87ACD2A3FDFB3EE8D720E830113C349D /* Value.swift */; }; + 911F76A9DE15FAAFB1000902BB47937E /* RenderThread.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB416CB894186FF9DB4FCE49262E6CC0 /* RenderThread.swift */; }; + 9151B2A4A8EF137A23F05192F1F0E2A1 /* UICollectionViewCell+Nibs.m in Sources */ = {isa = PBXBuildFile; fileRef = C12184A008E6E70912A403A00B2444CD /* UICollectionViewCell+Nibs.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 915E1FBBB12D5785E0FC8C6CF53D38C6 /* NstBoardJalecoSs88006.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 87A5806E79AEC46B9E2F33FEEB33BD37 /* NstBoardJalecoSs88006.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 916105D5B2F282140DBD456E9EED5DA8 /* gbafilter.h in Headers */ = {isa = PBXBuildFile; fileRef = BE9625CAFC1A2B83061830C5FCA51493 /* gbafilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 916A3EFF74570118E4A78D2687BEC5F4 /* ftmemory.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B805F48C8C32F42FEC9BFC063684A1E /* ftmemory.h */; settings = {ATTRIBUTES = (Project, ); }; }; 916ADB17D84FF2608179F6E6C94E2683 /* glsl_Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = BC702BA93AF92C0C284D2A5648226AED /* glsl_Utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 91A444E0F530F0640C1C09BB8E343D56 /* NstBoardCxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 748DBA0F9F23E4A80229ED2BBB2A8C37 /* NstBoardCxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 91C6A1730692E69E0CC8655B7ADAD968 /* RSTCellContentChangeOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C7F0416EEC0A378939FC4ABF9DB349F8 /* RSTCellContentChangeOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 91D5BAB5A97EAE34FC096112B64A22B7 /* arm_cpu_features.h in Headers */ = {isa = PBXBuildFile; fileRef = 390185349C53F11B19BD5CD8FB17A364 /* arm_cpu_features.h */; settings = {ATTRIBUTES = (Project, ); }; }; 92029CE5E63B8D37F7E85A53A233F93F /* ai_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 210231367CBBD06DA488B978D077E7E8 /* ai_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 92272AD39251E67F04778DCBED70AF73 /* AuthRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC89D5569A6FBDDE31EC55DBF2F86B2E /* AuthRoutes.swift */; }; + 9205B563D949BCE238C5E3025CEC9873 /* Users.swift in Sources */ = {isa = PBXBuildFile; fileRef = 565428EE53AC1B19BA15F960B4336E2F /* Users.swift */; }; 92331A6B29FC575D8C4AD0EDED37510F /* NstBoardBmcVt5201.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D4A12ACDD79A62B65966F290DFCF5A2B /* NstBoardBmcVt5201.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 923EA24303DFC84E0232287C9B5EDDB1 /* audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 6897635977DD87B42B68908D5D055763 /* audio.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 927B1E2E01A9FD1B26ECF379B22C0922 /* F3DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D08E53516D7A51AADD55FB1E09C5FD1A /* F3DEX.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; @@ -1056,16 +1101,14 @@ 92C007D6C7E62B7E77B62B8AA990A5B5 /* NstTracker.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E65DB1E52D5DE41D6648FB0DB8944F7D /* NstTracker.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 92C764EF9A9E754BC0DCFE3483442781 /* PlatformConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5509DC9BA6EEB190B7EC3C030723AB3F /* PlatformConfig.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 92CAF4BC033475F5CB7A45317038A761 /* GBCDeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 6483AFCDF2FD38F1D4A3F3A709B1B448 /* GBCDeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 92D96E083E72EFC3FCA49560000AFDD4 /* NSFileManager+URLs.h in Headers */ = {isa = PBXBuildFile; fileRef = 458E5ECC429899615982316D9665F348 /* NSFileManager+URLs.h */; settings = {ATTRIBUTES = (Project, ); }; }; 92DE6EED56BED90BC5577D4E92FCB948 /* HarmonyMetadataKey+Keys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 074EF702627A42EF0E2C8F0E3342EDA4 /* HarmonyMetadataKey+Keys.swift */; }; 92E2660CCA2F24DB60D941D35350713B /* filters.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB27BF3336B399FD4125E31B00D20B4 /* filters.h */; settings = {ATTRIBUTES = (Project, ); }; }; 92EAC7D4455F64E130D1449E451991C3 /* dictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = B16A40EA546C216777D9E352BC96AE3F /* dictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; 92F1C08BDC32C014FB6EB1E1B69664AF /* MelonDSEmulatorBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 05891BAE30F46A352A061FDD712EE3AC /* MelonDSEmulatorBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9307E097520497002BC3B34C7C00AA81 /* SoundStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BCB267858136BF15E2EA99DF8C2D1EA0 /* SoundStream.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 934782B5A76E96EBE561BC133DF638DC /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = B40D570EAF3AC5F1FF34F6CFEB52975B /* Standard.deltaskin */; }; - 93B394E89E851CE07AA3430A4C7231CA /* Thread+RealTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AE4F753611AEF693986993C3D54DDB4 /* Thread+RealTime.swift */; }; + 932FCE3E3F92CDBCE4D18BEF622EDA56 /* RSTCellContentChange.h in Headers */ = {isa = PBXBuildFile; fileRef = C80AEBE8D596D5B9EA9999082C62DB68 /* RSTCellContentChange.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9391AD11D07FA1E05A5214C759220726 /* Base.swift in Sources */ = {isa = PBXBuildFile; fileRef = 345045C88C734F0A16410A696371B04A /* Base.swift */; }; 93EBFCAB609AFE30FF415F07EFF0BA8D /* NstBoardBmcPowerjoy84in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 89AFC42C5AF3615A0E49911F50BF50CA /* NstBoardBmcPowerjoy84in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 941FCD99198C9AB55D0885FF6C9205FB /* NSFileManager+URLs.m in Sources */ = {isa = PBXBuildFile; fileRef = B3EBA4C7AF2961430F113BBF0D749FD2 /* NSFileManager+URLs.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 945555F59547316F3B3251CC427AB746 /* SoundFileFactory.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 271A76E52686EE252C17091DFAE77F79 /* SoundFileFactory.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 94573FBEB0BEA31741A096A4C97DDBA0 /* minkeeper.h in Headers */ = {isa = PBXBuildFile; fileRef = 0951746A87EE7D40305F4B0D0085CFF8 /* minkeeper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9498E1FF821F13E9067ACC346F965867 /* ClipPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = A4C55EFF463225AEF21E52403D1CFB50 /* ClipPolygon.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1077,88 +1120,94 @@ 94E22F654753727CA6493E35086E320D /* AnyKeyPath+StringValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44AA2C2D3122CE3A98EF48503A020844 /* AnyKeyPath+StringValue.swift */; }; 956CD013155FA7D9AF50B7694A860454 /* ftdriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D599FB48924EA924B0EDC964AE95955 /* ftdriver.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9597CA8E12E580E17B545CF789A2CC98 /* xxhash.h in Headers */ = {isa = PBXBuildFile; fileRef = 9092EC81615BC2077259B5A46D2548E3 /* xxhash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9599ADB281EF38C0766DBCE1C8EBB80F /* RSTCellContentDataSource_Subclasses.h in Headers */ = {isa = PBXBuildFile; fileRef = 81B163AB85D27A282399346575986FE5 /* RSTCellContentDataSource_Subclasses.h */; settings = {ATTRIBUTES = (Project, ); }; }; 960819161AFDD81EF6260557418EB8B5 /* Arm64Emitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 25C367213C4B5972B0DA19F3A696F4B4 /* Arm64Emitter.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 96231ACE7146B666F6E6F2F60B244C03 /* RSTOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = BB22870483890CB67C08063155A2CD09 /* RSTOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 9636181B5B48994A8A97060C218D5046 /* svttglyf.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ECEEB09798F93AB5A91A8BF0DC63D45 /* svttglyf.h */; settings = {ATTRIBUTES = (Project, ); }; }; 963680AE695C12BF7BF68887F9AD1BF8 /* GBACart.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B1272AA4FCEF7F4B895C966D7645328 /* GBACart.h */; settings = {ATTRIBUTES = (Project, ); }; }; 96485D82F35BB4CCA9E48DDFFA9E8870 /* DSiCrypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B160D4EFA5A5F1C8742E22E72E905F19 /* DSiCrypto.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 9652F31412792724F7157D6BB380490B /* cstdint.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EED9847BD722A6C949B0DD99EB41C0 /* cstdint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 96B857B6A5E30FFDA1A13DEE99D77826 /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C1E4CF0FFCC19C1AD6905DE817C17EA /* Connection.swift */; }; + 96655385F578AB071ED171325288AEE7 /* ControllerSkinProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54340D6DD361F80825634BA710CC647F /* ControllerSkinProtocol.swift */; }; + 96B857B6A5E30FFDA1A13DEE99D77826 /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB16E0153F5F75FEFD2195E2683E28D /* Connection.swift */; }; 96C997C46C3C4DC962E8094B28CCE5CB /* GPU3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 631AA428C1ADDC4884E3FDFF45CD1CE4 /* GPU3D.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 96D0781410F36BAB77F6A9D55C610641 /* KeyboardResponder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E8FA7EDDF2D182E85D908AB189426B6 /* KeyboardResponder.swift */; }; 96DCDDB6F7D7F297AE08753C5CC2233C /* ftsystem.h in Headers */ = {isa = PBXBuildFile; fileRef = E520F208464333BCFA4367A666CB593F /* ftsystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; 96EAB093B6FD4D17AD64091DAADC5EF5 /* Record.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C247C0F032D07663F65ABCED580EF8A /* Record.swift */; }; - 96F359204A0AD03A36CB5EF1EA148F47 /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = CB0111AD916628D17DBE1C3F2FED3100 /* SMCalloutView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9739EE0B840B0F623D2D380A441CABBB /* UIResponder+FirstResponder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BEF3307500AE238F67BF21F7A5E2B90 /* UIResponder+FirstResponder.swift */; }; + 96F359204A0AD03A36CB5EF1EA148F47 /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = 961F1C561A0CD244864FF1434626856A /* SMCalloutView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 973D77B17FFB4B5ED3EBBC7FE9CCD747 /* retro_common.h in Headers */ = {isa = PBXBuildFile; fileRef = D290CBC984A74AA8A2A92E44A858B1CD /* retro_common.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 975E6847416F072AFEDB7A31CE539B4E /* StoneValidators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C896FF6056EF6073CCFEB25599D37DC1 /* StoneValidators.swift */; }; - 97B1C675C31755288EB856C647FBDB85 /* Cheat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46419BA04293C44F08C03736D6B48308 /* Cheat.swift */; }; + 9764B4BA5D65FD3DB40928AB785018E0 /* CustomRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = F21998B0614EFDB2ED853CACB6A01A38 /* CustomRoutes.swift */; }; 97BB72E4C486CA41110964F1DAD222AD /* NstApiEmulator.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4BEB9E9721620F578D0426BDB238AD95 /* NstApiEmulator.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 9817437F468A9747991CC23D896B8FE6 /* Pods-DeltaPreviews-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CDD676F1CFBC293A793BD1F2DE8EB4A5 /* Pods-DeltaPreviews-dummy.m */; }; 9848E002F2A4BF48871D9DD1EF65259A /* NstApiDipSwitches.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6A4D816174974D9B8D18C7000DB19127 /* NstApiDipSwitches.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 9853CD77426FF9FD29EEACE202A57826 /* UIViewController+TransitionState.h in Headers */ = {isa = PBXBuildFile; fileRef = 8947E72A2EDA1E13F561A81841DAB93A /* UIViewController+TransitionState.h */; settings = {ATTRIBUTES = (Project, ); }; }; 98753D35C009BD6255B67F2BB30EFFD8 /* xxhash.c in Sources */ = {isa = PBXBuildFile; fileRef = EF55878BD6EF8EBB692CE3CC29230405 /* xxhash.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 9888FEF1556A0E7753845F88F05C3D59 /* NstBoardAveD1012.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 364893996CF3D04EBFF0A11679E8B5AD /* NstBoardAveD1012.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 98A945722B4E2B419F453E297C09BC1A /* recomp_types.h in Headers */ = {isa = PBXBuildFile; fileRef = E636E2DE0A5BF7915710AA52E2D51D45 /* recomp_types.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 98A9989C91C4C0502360C8B5D9359FCF /* DLTAMuteSwitchMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = 216ACFC72536D5772D02237D7C716E46 /* DLTAMuteSwitchMonitor.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 98AD219D8E073572E50645E156A20602 /* F3DDKR.h in Headers */ = {isa = PBXBuildFile; fileRef = FA6FE92B481663C99D272E1A4763D254 /* F3DDKR.h */; settings = {ATTRIBUTES = (Project, ); }; }; 98E03399103FCC585393B0C0146E29EE /* DebugDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43E9A99CB2F0F566B1EC79D4A6B08A4E /* DebugDump.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 98E86D0F1797ACA3E42CBD641605DAE1 /* Contacts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B0E21ABA43A14EB561A436856C8C529 /* Contacts.swift */; }; 9943727E47E1D8EBAE33CF10BB8D99F0 /* si_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 3000EB6BEF38AC749B093A0BAC2DC7F1 /* si_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9952BE86D4C6EBBB92303D7C94EE80EE /* RecordEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6631F3A954D12761F4E839FEE9AEBDB2 /* RecordEntry.swift */; }; - 997452A4F11A932CD91E6AC360E41984 /* Custom.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEAA22126ACDA08EE9AC0FA9A9B6EC05 /* Custom.swift */; }; - 998354943699E186F30DC9F4ED19A191 /* SMCalloutView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5209BE954A7C39272EDD3AEE95066684 /* SMCalloutView-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 998354943699E186F30DC9F4ED19A191 /* SMCalloutView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D6BA10B531342B8B8618E903C30F5FF /* SMCalloutView-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 998E072A529E35717DE48C1BB9155639 /* SeenState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71C4D2F17761E8D847E98CA775551753 /* SeenState.swift */; }; 99A79C66F1703B62E0E28B08BD0DA607 /* Glyph.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AC2A6818ECA53421D504520CFA77C252 /* Glyph.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + 99AA988ED9AAF3ABD444AA91151D1A7D /* NSBundle+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6806D956E4140F84365C79F5D4FCE016 /* NSBundle+Extensions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 99B76338216CD7EA251B85CEEFDED06F /* ftsnames.h in Headers */ = {isa = PBXBuildFile; fileRef = ADC1FCED16E475969F3FE7030A995378 /* ftsnames.h */; settings = {ATTRIBUTES = (Project, ); }; }; 99D199737A22001D43A2FE0A62424820 /* bootrom_hle.h in Headers */ = {isa = PBXBuildFile; fileRef = B0B408436ECD4E39C149235FDFEBD2E7 /* bootrom_hle.h */; settings = {ATTRIBUTES = (Project, ); }; }; 99D6C2FFE9143939DA519AC98B5A63E7 /* glsl_CombinerProgramBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0D8CE58CF70DD1E088581E3000641372 /* glsl_CombinerProgramBuilder.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 99DA79B33FEB1BC7F1FA92264E2E8825 /* ftoption.h in Headers */ = {isa = PBXBuildFile; fileRef = 32A7572D74BBE1A81EF3737BA716B1CE /* ftoption.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 99ECED26C64FD819403DE601D582938A /* UIScene+KeyboardFocus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ED49040C12BD759F2626EE518A08FD5 /* UIScene+KeyboardFocus.swift */; }; 9A299C26AAA71E18E802727183111FA3 /* rumble_backend.h in Headers */ = {isa = PBXBuildFile; fileRef = 7559F50967A335CF4EDF95041612E9C0 /* rumble_backend.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9A51DC353E2E14D0849BC95FB3C0A3FA /* Archive+Reading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 602A09D764BF391459201D3C894EE108 /* Archive+Reading.swift */; }; 9A6E3B06FE9AE3D2E06DA5B5D598C6D7 /* NstApiCartridge.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A952298B11A4BD50DC147C4EDAC00561 /* NstApiCartridge.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 9A971BB776B507B0A57CF9FEB8950633 /* sram.h in Headers */ = {isa = PBXBuildFile; fileRef = E267514409136B15146B6D5C6031139B /* sram.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B154A3E8E5D08CE62C5C1E70441168D /* SharingRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D8FC7A21B622E0C6CA1737C2DBD7EE2 /* SharingRoutes.swift */; }; 9B22A567952D69A7B2EDE6B39D48CD9E /* RSP.h in Headers */ = {isa = PBXBuildFile; fileRef = 937263E096F13826F20A39C6D49A8948 /* RSP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B28B79CD201142E295D4F364B5CDAC4 /* OpenGLESProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE552D959907002364F7DEB08F72AAC2 /* OpenGLESProcessor.swift */; }; 9B9B4031D069D598EDEC7C125A49834D /* encrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = B7E187F8D0C14EB3ADB42EA0F95D2579 /* encrypt.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9BDAE1E52FEBBB6709DAA4F670407823 /* RSP_LoadMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE4301FF38FE13F692BC921B12B3CA1F /* RSP_LoadMatrix.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 9C2EC209D91908773544AA8BA75BBA82 /* RSTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 77F19454FB70DAEC91C67992D0B05BF6 /* RSTError.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 9C445C08AF8355160797B2109EDED198 /* GLideN64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 61CB63D0B91F77C8C4CACA85669A8E82 /* GLideN64.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 9C68F55B11603292153549EA32EECD43 /* bsx.h in Headers */ = {isa = PBXBuildFile; fileRef = 17ED26949935DC732FA7AB8430E81D27 /* bsx.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9CA7E859B34BC6328C508397129DA346 /* TDStretch.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E2DE852C4E6E58A4D8E5DA96EF7F58B /* TDStretch.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9CB66234C6951933F21E51FF8B0598F7 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3877506BCB9C396099DE5A88C9255153 /* UIImageView+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 9CB66234C6951933F21E51FF8B0598F7 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C9061FED51126441CF84AFC73EB38CE /* UIImageView+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 9CB97FFD11D919D0B430A8265E0EEA93 /* NstBoardUnlWorldHero.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0A2357A4BDFBA00F38907D9F08280DF3 /* NstBoardUnlWorldHero.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9CBF4F93622FB616E9F0942344ABBB56 /* Blob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 586B03C24E0DFB57820EDB31B86EFDC1 /* Blob.swift */; }; + 9CBF4F93622FB616E9F0942344ABBB56 /* Blob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41CD9A5CE924CE38987C2E1AAF42DC3A /* Blob.swift */; }; + 9D2AC3C253235F4722F3E7BF68F2967B /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 5EA0178D9A10839EC9E1FBC402468DAE /* Standard.deltamapping */; }; 9D337B0698F519D530B42EB02C765349 /* TxCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5F807CBBB1968980C804AD52C94A1F5D /* TxCache.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 9D70A99781AE6A576AA2082FFE5BC49F /* NSManagedObjectContext+Harmony.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28D3BDAF521A2237075C2E325303961F /* NSManagedObjectContext+Harmony.swift */; }; 9D983D10704652B0531E545E0DAA4ABA /* SoundBufferRecorder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 665E0C4FA5D002E1391BD3AEFBE08D3C /* SoundBufferRecorder.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 9DD4D560458F67FAFA2FEE50C63F2157 /* assemble.h in Headers */ = {isa = PBXBuildFile; fileRef = EA9C6CC515F168E4D012A4DF11AA2ED6 /* assemble.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9DEDB0D21CBE80B65E923A9CF7DD4585 /* GTLRDriveService.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C5F8657F7A40B8346317B773095E039 /* GTLRDriveService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9DEDB0D21CBE80B65E923A9CF7DD4585 /* GTLRDriveService.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B338BB72BB5DFCF55D5381B04DCA74E /* GTLRDriveService.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9DEEB167CA9E13C1CAD56EC7BDEE7ADB /* t1types.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F03A41939073CB8DCC32A1EE3888FE0 /* t1types.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9E0F13A920C6F73D12E5CC77F2381701 /* NstBoardSachenTca01.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AC3F72B760841603ABFA83F43599B12B /* NstBoardSachenTca01.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 9E30A534A4FC4C93D3C1430673E7158E /* Keys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5610301A8DB88B241585A06AEE8968DB /* Keys.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 9E7ADA611E531A46F064010C6D401A29 /* Globals.h in Headers */ = {isa = PBXBuildFile; fileRef = 71E4CA9704FAF1A05A6077D6A2F106E5 /* Globals.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9EAD7EA4820F6CBD2759C7A77A88A156 /* OIDResponseTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = BE209924CB6D2E21D31F1FE61E0E2738 /* OIDResponseTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9EDD2BFCD319E4E52E6ECF37F7CC4637 /* NDSCart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 409D014A9EBDA943F1EE0086C74D06F4 /* NDSCart.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 9EE2E441C7E254E6E87E6FAA5F8FDFD1 /* NstBoardBandaiLz93d50ex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 753E1526EB345D5879F78855D82F4049 /* NstBoardBandaiLz93d50ex.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 9F0BB26F2B617ADB2DC6FBA15D46E177 /* opengl_Attributes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B156F27DF13CB000812D58184607846 /* opengl_Attributes.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9F3B1D5F5A9B481434201227C31A78EB /* RSTCellContentDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 589560AD66B49028107CCD31E8FE2B8B /* RSTCellContentDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9F8739608BBC3F80E0BD263C6449D0FB /* resampler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DEED021AB7F54D5F29FF137BF85F83D /* resampler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9F958F9FD9ADE1E6A0FAAE0E6240983C /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D480F6ED4062D534F79485C9C8C741A /* SessionManager.swift */; }; + 9F958F9FD9ADE1E6A0FAAE0E6240983C /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D4BF391EBFCFF80B82DD0CFC9FB297 /* SessionManager.swift */; }; 9FAA3ACE1D819741BD2C4CB0D7ED937F /* alist_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 5D3CDC9E7FC8F361E2B98673E070AC10 /* alist_audio.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 9FE4CD93D1DF18DE6012B88091B5EB2D /* RenderStates.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8198EF58B83E29FCFB4ACDB3BD6D7C86 /* RenderStates.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; 9FE9384F5DCB5CCEB542F5FDE01E5A89 /* glsl_CombinerInputs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AC61A6BCF0DFAA47D7BB0BC9E05514 /* glsl_CombinerInputs.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 9FF426F53B9D8756B44ECD4611CCA998 /* sdl_key_converter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FFCA49336A99ADD0ECF13BCBFA359CC /* sdl_key_converter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A004392982FF7807B1C68D5AD3FC7BF3 /* Delta.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFE241438C0AB57A428B27B443B2AC03 /* Delta.swift */; }; A099F99043D1087B1F396D806DAEA530 /* hle_external.h in Headers */ = {isa = PBXBuildFile; fileRef = F010196232EFA8E4F49527401314BF07 /* hle_external.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A0A3D66658E7FE8E3B462986B2B78209 /* GTLRDriveObjects.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DD7DBBB3619EE9EEDB725158C211C8C /* GTLRDriveObjects.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A0A3D66658E7FE8E3B462986B2B78209 /* GTLRDriveObjects.m in Sources */ = {isa = PBXBuildFile; fileRef = 715A3DF4852F90899132BEFE4C3D6AEA /* GTLRDriveObjects.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; A0A6C1A89375453DBD6FA0E462DCD2CB /* NstBoardBtlSmb2c.hpp in Headers */ = {isa = PBXBuildFile; fileRef = ACCD33F558269F34412CE1B165AC3B83 /* NstBoardBtlSmb2c.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; A0C3DF7AC44389E3B58A31E9FB10BE4A /* NstBoardRexSoftDb5z.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B28C2D359879C1C22B73A921FADCC37F /* NstBoardRexSoftDb5z.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; A0D3C69ACBA5E5461BF99A1A0A894AF7 /* RenderWindow.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 59573A3A70CB507990683221BF1FD05A /* RenderWindow.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; A10AE879C54C59B8DBE3FFB875936BD7 /* cpu.h in Headers */ = {isa = PBXBuildFile; fileRef = 188F965C5720E62E8F6D72473921BCA0 /* cpu.h */; settings = {ATTRIBUTES = (Project, ); }; }; A146353CA730A229643C7B7E806E0C48 /* JSONDecoder+ManagedObjectContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6080A7B672662B9708484ECE9F1E9D20 /* JSONDecoder+ManagedObjectContext.swift */; }; A14BE1B8EB78DC08B5C4F7F226208474 /* EEprom.h in Headers */ = {isa = PBXBuildFile; fileRef = BE1F801E5795D6E1E9A48F3FC3A6818E /* EEprom.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A14E22AC889B106BF3411A7BD35E90F8 /* Bundle+Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = A19318395D3B3D8114C56710610A3443 /* Bundle+Resources.swift */; }; + A17D6F62B0EA95E42F173DC2482F728B /* RSTOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B07948E9EF320FFD68CD858188BDA7D /* RSTOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1A346EE931702C55BAADE71698E7BF3 /* Roxas.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B65D5D12DEE0E289101FC3FE85D5043 /* Roxas.h */; settings = {ATTRIBUTES = (Project, ); }; }; A254638C5A2894121560CF0248FFC26C /* ARMJIT_RegisterCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A65D1E2BCC4BEF145F489BDD64FF84D /* ARMJIT_RegisterCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A276EF01B8CF3AD779D53C7ABD5D77C1 /* NSFileManager+URLs.h in Headers */ = {isa = PBXBuildFile; fileRef = 458E5ECC429899615982316D9665F348 /* NSFileManager+URLs.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A289A91991FD33A28F9D0AD86BE33C40 /* GTMAppAuthFetcherAuthorization.h in Headers */ = {isa = PBXBuildFile; fileRef = 8691A7C558BF5E11E5971EB35F846792 /* GTMAppAuthFetcherAuthorization.h */; settings = {ATTRIBUTES = (Project, ); }; }; A2CE57C2FCC87E5ED8552645739EE78F /* armcpu.h in Headers */ = {isa = PBXBuildFile; fileRef = 78E5EBC47AAD35C9175D0870993FF3FB /* armcpu.h */; settings = {ATTRIBUTES = (Project, ); }; }; A30D3D893AC6547B031A8C299EE5E12F /* NESDeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D0F96015497105F5DAFE0C80ECF75510 /* NESDeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A3367358B8F87A2A2DA61BDCC201D3D5 /* OIDTokenRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 34DEA93A58AA13F6D646EABBC68C479B /* OIDTokenRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; A35805D93B71E9189188FBA302D11882 /* NstBoardBmc110in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7F50D3C5205A62B743D0A44D37F8A99A /* NstBoardBmc110in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A3882ADC2BB9576AB94885EB935580DD /* SQLiteObjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 906A51BA9CD5D535CC8438E8AE2856A1 /* SQLiteObjc.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A387A2E6C503F4678E884AD4BD186F59 /* RSTCellContentCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 85C95C30CA6D9ACC3BEE5F8DA5DE54DD /* RSTCellContentCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A3882ADC2BB9576AB94885EB935580DD /* SQLiteObjc.m in Sources */ = {isa = PBXBuildFile; fileRef = E50D0607ACEC326B0DC65D7D9B0004AD /* SQLiteObjc.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; A3A76BF22861916D87167065FA4D418E /* NstInpDoremikkoKeyboard.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A6ABC02A4B4F0C5993D599BBC8FA20B5 /* NstInpDoremikkoKeyboard.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; A3DD0AD7D0F3E5543583DF6ACA2CA218 /* NstBoardAcclaimMcAcc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C1E5AA6870CC28BC8E70CADC5B21CF0A /* NstBoardAcclaimMcAcc.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; A4329188644EB8D447F19E534ACB229D /* F5Indi_Naboo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 546B608856C222EA5AFDA589F8C1BFA4 /* F5Indi_Naboo.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; @@ -1169,55 +1218,64 @@ A4F312EE53E795FA67AC4EB0C9D8B964 /* ftserv.h in Headers */ = {isa = PBXBuildFile; fileRef = AEEDFE1C6DCCC4D7DAD65E906B2B97A4 /* ftserv.h */; settings = {ATTRIBUTES = (Project, ); }; }; A541F26CB3C11D2CD23884897E44D07C /* fxemu.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB448EADDF731C719FAF25EF2908CC6 /* fxemu.h */; settings = {ATTRIBUTES = (Project, ); }; }; A5688BE2955F80CFA10E995B4D263CD8 /* pakinfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E1FEFE8D022734AECBB5193A06A9854A /* pakinfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A5BD2CABC615B236431CBCEAC88FD22F /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 8638968DC3BD54DEE2C5F9056D50F226 /* GTMNSDictionary+URLArguments.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A5D0BB039627E7DDF91838068C66A661 /* NSPredicate+Search.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C0E24A9C80929074CE421F5E143D51D /* NSPredicate+Search.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A5DF741472773807519BCC1BEAB7DFEC /* UISpringTimingParameters+Conveniences.h in Headers */ = {isa = PBXBuildFile; fileRef = AFD1A713033C1C1E163FB0798FB83410 /* UISpringTimingParameters+Conveniences.h */; settings = {ATTRIBUTES = (Project, ); }; }; A5E68B3F48C9CEC0611B8EF4A8230870 /* TxUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 64CEF3D7C11C1765BE1890D9AE7DE782 /* TxUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A620827F6D47EA5D0443FA46AF88897E /* RSTNavigationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D77FFE1795D8F5D3B1ECC1F477F9831 /* RSTNavigationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A5F6DECD63F2BF577D47CC1F51A90E7D /* RSTNibView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E45092B38B1BCA27D9FBD1E928D6B4E /* RSTNibView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A604AE31AFD60394248D8E81E0ACFA40 /* OIDExternalUserAgentCatalyst.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B316FCB59B7F1A1B43657E5726656E /* OIDExternalUserAgentCatalyst.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A626BB8720A47D63640D5998889AFE10 /* OIDAuthorizationRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = E78B2F076ACDDF03296C6D7787187FA3 /* OIDAuthorizationRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; A62E45F7B06CBEBA72B66B96EE5E7E79 /* ARMInterpreter_Branch.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AC4CEB22A60AA5B33FE37AE9D46E038 /* ARMInterpreter_Branch.h */; settings = {ATTRIBUTES = (Project, ); }; }; A64D97FFDB0A6502E1EFC05705B469A5 /* cpuexec.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DD1E0498241FC67768C582366F133EA /* cpuexec.h */; settings = {ATTRIBUTES = (Project, ); }; }; A64E520463DEB62F615F8B79E1315C6B /* DSi_SPI_TSC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149061ADA1E30AF417B77CEB74D07B8D /* DSi_SPI_TSC.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A65B6AEF7EBC37D2067852FAF5CA02BB /* OAuth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AC9CEAA77814183897B01BB7820D72D /* OAuth.swift */; }; A684F186080A1F9C40356475934FA26A /* RDRAMtoColorBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EE2C65B6FB8399DBD24B625E5BFBCA6 /* RDRAMtoColorBuffer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A6A335940D8607B8F26571B0C5796F90 /* Query.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EC698B7882B84A8292DBB86C9F1ECA7 /* Query.swift */; }; + A6A335940D8607B8F26571B0C5796F90 /* Query.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23760AABA54F71B0F06346CA543E4161 /* Query.swift */; }; A6C389D534D80AF408777EAC39D7B1F1 /* NstInpMahjong.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 133C263D527099B1DC5F15E635A28E8D /* NstInpMahjong.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; A6DEABAE86EBA5E93DDA3E4A3BFCE4F5 /* NstBoardBmcMarioParty7in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3FA021BAB62CBBF723A1A87AFCB9B0EA /* NstBoardBmcMarioParty7in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; A6EC58B6D3E166CE2FC86CC9CF9CA604 /* ftstream.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E3611B1EDCFB4A6939C797F6DCDA585 /* ftstream.h */; settings = {ATTRIBUTES = (Project, ); }; }; A71B013780BD6CAD2ABF88923A79318A /* NstBoardIremHolyDiver.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 85919A3037781B06E86122A531B658CD /* NstBoardIremHolyDiver.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + A72B298CC4323D3A4CA746D37E0E8E84 /* OIDTokenUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = F00642839001DD7DBFABB3D51FC7FB20 /* OIDTokenUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; A73584503A69C0063844120770BC48DE /* NstApiSound.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0EE83B4C6CE642DC6ED9ED13139A14FD /* NstApiSound.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A74F1A187350ACB9D4F3B7BC34C926D7 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 131DE5B5A662F4982F678A6226865295 /* NSData+ImageContentType.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A739DA62932D6A55CC429549E4BAFC33 /* ButtonsInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDB7131D9526D80A2F58C61485D8C02A /* ButtonsInputView.swift */; }; + A74F1A187350ACB9D4F3B7BC34C926D7 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 59A9EA9D8300F82CC7308C695334EB31 /* NSData+ImageContentType.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; A7584B3328B9ED4D44F01F4403A3DAB1 /* OpenGLSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AEAE8D7D6FD51765A26CDDD85CA71CE /* OpenGLSupport.h */; settings = {ATTRIBUTES = (Project, ); }; }; A76738AE3EC3DEFC6AA9AC75292717FE /* NstBoardBmcSuperHiK4in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A2F06AF800FE00397A0393C4F2B21358 /* NstBoardBmcSuperHiK4in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + A7904774161D5C6A485C9273640F83E3 /* VideoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 104E9C84E010B1DB40F30B8A6D71F370 /* VideoManager.swift */; }; A7C5E147703AE70ECE4EE4813046D8EA /* NstBoardCnePsb.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 16927AB40C2007C65D90452F147BB36B /* NstBoardCnePsb.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; A7E427308A69876DEFF309CAFAAC5D4A /* debug.h in Headers */ = {isa = PBXBuildFile; fileRef = 95882B1B89F500794A182F9B050751F3 /* debug.h */; settings = {ATTRIBUTES = (Project, ); }; }; A7EDDA8167D6FA04362958EE57AF1392 /* storage_backend.h in Headers */ = {isa = PBXBuildFile; fileRef = C2968C6CDB74DE4F69E45D0EC3569ACB /* storage_backend.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A7FA90C2F6EB01DB7415B341E4FA1994 /* GTLRDriveQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 501510C0AB0C2749A39F8FE21E2FDE4E /* GTLRDriveQuery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A7FA90C2F6EB01DB7415B341E4FA1994 /* GTLRDriveQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C51D0957C2A3215B7A75B0A8F181E75 /* GTLRDriveQuery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; A82C04434C5E3D4207FCA75353E72E3A /* NstStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A98D3E4D5028A18A48D898DDA29B1B6A /* NstStream.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; A884D76D704EF87019C1DC27CE6AE370 /* pnginfo.h in Headers */ = {isa = PBXBuildFile; fileRef = EB17DEFC04CC15F58D9F00EA666A3561 /* pnginfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; A8AD650D2110F58158B30B67A2D6D1AD /* NstBoardBmc72in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1B85F775ADA1480E245297449F858A58 /* NstBoardBmc72in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; A8C59A082B0CAE2AC5D167E6C2996C11 /* RenderTarget.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D9DA8FE84C120B2A520DC4D71D61CB2D /* RenderTarget.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; A8E8DF364BBE0D808CF180B832D17305 /* NstBoardNanjing.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7861486AF41BBB802B88C5A86C8716D /* NstBoardNanjing.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A8FACCC508B3B698A900D691F3537FF2 /* CustomTasks.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3F1E51AE6F5BE0ACA847F1A9ACE7311 /* CustomTasks.swift */; }; A944F64881C10CC5D5E0076369D23A97 /* MMU_timing.h in Headers */ = {isa = PBXBuildFile; fileRef = EC5C9682B97F1D9C7E273FC89260E663 /* MMU_timing.h */; settings = {ATTRIBUTES = (Project, ); }; }; A9720432E50CE23652E8ACFCF9566AFF /* WifiAP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14F53C32B32D062C3A7D28C47C6BAA0B /* WifiAP.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A973E41A619BC01731D06BCFB1FF6C1F /* OIDServiceConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 29576A8D5243FFF5A0570494C289E3C0 /* OIDServiceConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; A97688B358566A36E596A77307C8B1BF /* svpfr.h in Headers */ = {isa = PBXBuildFile; fileRef = 878FACA9436E10C19249B2B1F73D0495 /* svpfr.h */; settings = {ATTRIBUTES = (Project, ); }; }; A9808B1FA2F72B2F84E38CBF2A638D66 /* memalign.h in Headers */ = {isa = PBXBuildFile; fileRef = BF3798E9873D3426FE46A7B8FC9F1E0E /* memalign.h */; settings = {ATTRIBUTES = (Project, ); }; }; A9A199F03892FEF6FDE87D41A6598894 /* GBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB41699D4C5AC2AFBD30F2473705EC1F /* GBC.swift */; }; + A9CB89D28F0BCDEC0AE0C8795292DE39 /* OIDAuthState+IOS.h in Headers */ = {isa = PBXBuildFile; fileRef = A2412E26D20F3DE5223A9642023ADC3A /* OIDAuthState+IOS.h */; settings = {ATTRIBUTES = (Project, ); }; }; A9E85A25A432F863AAB3BF52097BE851 /* NstIoMap.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A5EEB52EFD99DC3FB9624696A18857AE /* NstIoMap.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + A9F1AA816D505014707C9002F4D0E007 /* UIScene+KeyboardFocus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ED49040C12BD759F2626EE518A08FD5 /* UIScene+KeyboardFocus.swift */; }; AA0F31964C159C08F9F74A091398AEDF /* ARMJIT_Compiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D421B3B41005E75CF47150FB7FAE250 /* ARMJIT_Compiler.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; AA8BFFEBD1899027723D5A4460D06960 /* interpret.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BD44D010CB092864578D2D236E98BC7 /* interpret.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AAA165D8BA040A8C17B2F70C2A6ECB5F /* GameProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05E756BE049BECB36FD17276742F19FD /* GameProtocol.swift */; }; AB2643C55257DB82A2568D9A51E36CFB /* TxFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5697BDD872FAE1F29F301AC50C59364E /* TxFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; AB2F8759FB7AB74E5751D19918B83219 /* NstInpTopRider.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 124DA3F029DAB83892517A557F6DBEF8 /* NstInpTopRider.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + AB4474D7DCDFF771AFC2D6C64EF9B12B /* GTMReadMonitorInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 6771B4449FA8648EEC6B83E8196F57DF /* GTMReadMonitorInputStream.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; AB8881E58DF64EC072840037B98019FA /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCFD6E5826A621DE495268940D60FCCF /* Errors.swift */; }; ABFCFCC4F26F8DF8B7B49A4CB103152D /* FIFO.h in Headers */ = {isa = PBXBuildFile; fileRef = A1C76F8411A39553082A70E918482202 /* FIFO.h */; settings = {ATTRIBUTES = (Project, ); }; }; AC018CB4A4D948BE495D83911A0FB835 /* Rect.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 91709E1068307F806C817F8F25238320 /* Rect.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; AC1A70150CA7273F0F6FC76928A4ECCE /* dynamiclib.h in Headers */ = {isa = PBXBuildFile; fileRef = 3259C22E11C51E32FBFDC06596D86A16 /* dynamiclib.h */; settings = {ATTRIBUTES = (Project, ); }; }; AC1C5AE49CCBC0B1AFA1996B7E2164BD /* DSi_I2C.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F2D1F1B916E9A431C5DD1E62263228AB /* DSi_I2C.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - AC21F5B2F7E344F82C0BFD2EF7869306 /* RSTHasher.m in Sources */ = {isa = PBXBuildFile; fileRef = B2315E586056FC23817E8D8C2F509A89 /* RSTHasher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; AC305BE5BC624BAF5E68833E393B225C /* alist_naudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 411E7554E19C572A693EDB486A957D57 /* alist_naudio.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; AC5E0C162EBC42F7A66A2865063CBC75 /* DSi_NDMA.h in Headers */ = {isa = PBXBuildFile; fileRef = 8861BA10CB5369C24206E4B9E4026EAD /* DSi_NDMA.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AC6AA781E1618DFF02DD02A9DE992BE8 /* RSTOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = D6BCF5C94F60010C0F7EEAC1DE89CC20 /* RSTOperationQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; AC886C4825A8205B9FBEA1F844C280DE /* opengl_BufferManipulationObjectFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5A0597C81856E54BE8AFFB30277E436 /* opengl_BufferManipulationObjectFactory.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; ACC5DCAE99C4062068C5B7E495AD3A75 /* dma.h in Headers */ = {isa = PBXBuildFile; fileRef = 04FA6C81756C2F156FDAF1E5C17CD961 /* dma.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AD01097E6605E4ECC498ED99174C4168 /* RSTCollectionViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = ECF20AE8048AC20A7049C71B4A3D6497 /* RSTCollectionViewCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; AD0E344A997AD26FC7549EC26B651E54 /* ARMJIT.h in Headers */ = {isa = PBXBuildFile; fileRef = F029B93521DA11F6487DF9C66DBA2A8E /* ARMJIT.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AD2816296852E133DE00B5B712D65D8A /* RSTArrayDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = FAEBE5A9F378271ED1B66BA1076847DB /* RSTArrayDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; AD4D29DBAEEDE881EF3E90B574850182 /* ftchapters.h in Headers */ = {isa = PBXBuildFile; fileRef = 1830EF8CBAB2A6E698C20190E98E0CBF /* ftchapters.h */; settings = {ATTRIBUTES = (Project, ); }; }; AD531A124CCE66F08611E72548DD7D87 /* NstBoardBtlAx5705.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 98B0BD8F8752DCC7112E9C0F6C0BFBD2 /* NstBoardBtlAx5705.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; AD5FE39DFC5910DCC170180E7B3780EF /* NstApu.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FA1D9AA72B3CADFD9096721DB32617A0 /* NstApu.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1225,52 +1283,51 @@ ADB155A0B2FBDF2933A0E98B59F2E566 /* remote.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D933F04F185D2DB2581767B7A1F17C9 /* remote.h */; settings = {ATTRIBUTES = (Project, ); }; }; ADB43A2F1D6301DF42BFEA58C1670EDA /* NDS.h in Headers */ = {isa = PBXBuildFile; fileRef = E70E6535CCAFEBE1D14A0AD957C96944 /* NDS.h */; settings = {ATTRIBUTES = (Project, ); }; }; ADD920225D85338FED8AF2D0F221127C /* files.h in Headers */ = {isa = PBXBuildFile; fileRef = CD9A90643977AB1AB20A8F324A49694B /* files.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ADE23034773D80A043F5BBB8C4FC18A6 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 38A54DE3848C6830CA6D438BCCE65D81 /* Alamofire-dummy.m */; }; + ADE23034773D80A043F5BBB8C4FC18A6 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E018A854D17579A468D86ABE0600F93 /* Alamofire-dummy.m */; }; ADE3881F4B4E3EF400211ED598E15945 /* NstVideoScreen.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5587F5DC2A8AD89EAA2F9BB007E8F28F /* NstVideoScreen.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; AE0D5A81044CD02183E9536CCC6750B6 /* ManagedRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7380B23CEE9E13091F4FF1312203FAD1 /* ManagedRecord.swift */; }; AE3581E64A0FF932CA170C3B816326B2 /* TextureFilterHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 66661D2E919981718EF525C8A2B79DD3 /* TextureFilterHandler.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; AE48AC2B8C09CF40422614E10AB0D4C4 /* F3DTEXA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD70C00BF79C2F0C47D21B66E4A63D6F /* F3DTEXA.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; AE67446BBF800191F754141B80345F5A /* GBAinline.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ECC54EF6D8BAE4780A2B8AA2B82AE25 /* GBAinline.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AE8D33C8FB33B57BC9CCC7BBECCD1881 /* OIDAuthStateErrorDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 39AF362A71040A4AEEFB7737C7E433E0 /* OIDAuthStateErrorDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; AE97BB3169F74A103F63AB5476D2659D /* N64Types.h in Headers */ = {isa = PBXBuildFile; fileRef = 98910C42C804F0F2EFEC765887C44E11 /* N64Types.h */; settings = {ATTRIBUTES = (Project, ); }; }; AE9A05F5C06A6532D89D9B4457CBA587 /* dcheck.h in Headers */ = {isa = PBXBuildFile; fileRef = D1C9B2FC2B1D3CBD6D757006FF962939 /* dcheck.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AE9CDB083B2CEB03E50EBB8B8B27E496 /* RingBuffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CA04051997329FA2754F806359AA369 /* RingBuffer.swift */; }; AE9E6097E49D3D1075126852163D3FF8 /* GBASoundDriver.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED0CBD9B20218EC2D349D65021B84D32 /* GBASoundDriver.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; AEB06BB42DE715BFE6936C7ABD5F4CD2 /* slot2.h in Headers */ = {isa = PBXBuildFile; fileRef = 3506891969CC7C1516DAC96B20EE084B /* slot2.h */; settings = {ATTRIBUTES = (Project, ); }; }; AEBC7DC9A9B06869F690D219CF5A234D /* NstBoardBmc31in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 524CD43AD262D88221806C5081ADD094 /* NstBoardBmc31in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AECD06ACC5BAEAAFEB1D53DE3F3B4E03 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = FB23491CA81D5C2441595CFDB66E8D32 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AECD06ACC5BAEAAFEB1D53DE3F3B4E03 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BDBDDD316E4F5B7EFBC5276C28C75D5C /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; AEF82016896D2EC12AE2F7F70F67323B /* rdp_core.h in Headers */ = {isa = PBXBuildFile; fileRef = D4873789421471F74045B1971C0619DF /* rdp_core.h */; settings = {ATTRIBUTES = (Project, ); }; }; AF110D1861CD7AE3C4B9F37C8F974DDD /* Main.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C44A6BA5CBF11AA95A73C7DBA500571F /* Main.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; AF2A017EB2E080F70DE8E58B10044DCF /* String.inl in Headers */ = {isa = PBXBuildFile; fileRef = 91E33227ABD97556F96F711114B0FEB9 /* String.inl */; settings = {ATTRIBUTES = (Project, ); }; }; AF58D41EC3AA4C2A93B6C8F31B916424 /* SPI.h in Headers */ = {isa = PBXBuildFile; fileRef = E2F749876241206B2B12FC438C160208 /* SPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; AF58F92DE76152F3769EB08ED4830DB1 /* NstBoardBtlSmb3.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CB20F171AA181AF98D5C22F837503AED /* NstBoardBtlSmb3.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AF8E9D6893DA97F4A194E6E87FEBBC35 /* RSTCollectionViewGridLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D1F8117CF84C591BD76F30075300432 /* RSTCollectionViewGridLayout.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; AFA213247AE4E71F573874EE41783C95 /* ftstdlib.h in Headers */ = {isa = PBXBuildFile; fileRef = 2899A8ECE6011049F16395993E4F97B7 /* ftstdlib.h */; settings = {ATTRIBUTES = (Project, ); }; }; AFC501F1D0498F46DCE04D2B9C08C2B0 /* SyncProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C822632DEA06D3F0E3CAE9592D0B1B /* SyncProgress.swift */; }; - AFD3734A64D1B6AFA52D8435461FF515 /* GTMSessionFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = EFBE30994381264F2445BF70BEE39EE2 /* GTMSessionFetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B003338225E645CD52136C0AA1EDB823 /* AudioManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2867A21CC5D09F1990985A93B329E72E /* AudioManager.swift */; }; B012130349DD74291AC357338E736874 /* Sensor.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 101F7456267E2C9C8B7BA57B28E456CD /* Sensor.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; B023E9BFDC0EAF2E6CF787B94A7BA09C /* NstBoardKay.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35C043D7CAD5D77F1FBDC45278211DB7 /* NstBoardKay.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B02560094E39AD178474B81210376D50 /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = D42421CB7ACD877300E845DA963BD693 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B02560094E39AD178474B81210376D50 /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 90E048BB42FB6617661967E7D3D153D4 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; B0510999D2AF092A3EB673CFEBCC3D9C /* gbint.h in Headers */ = {isa = PBXBuildFile; fileRef = F573CAE866F8FF2E90FF19FA9E51FF5E /* gbint.h */; settings = {ATTRIBUTES = (Project, ); }; }; B059F568B395F3630FFC02E8611354E0 /* ARMInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 388C8DA3F432735143092D0CC3240A07 /* ARMInterpreter.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B06A7B04B9FAA922083962A3512B4A95 /* md5.h in Headers */ = {isa = PBXBuildFile; fileRef = 496811FEA30B0B9C7D919056C6770654 /* md5.h */; settings = {ATTRIBUTES = (Project, ); }; }; B08926996F2B9E82A0C4A17AE3FAE96C /* GraphicsDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41ACF765A43AACC887E269FF473CBB0D /* GraphicsDrawer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B0A8788BE5BA3358A537946B924F9EBB /* F3DDKR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A18469D7CC5DE9394B6FD480397360EE /* F3DDKR.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B0CB5FAC98AAFC09214918F272CD0477 /* GoogleAPIClientForREST-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3834E77F63953D87853DE315E253E447 /* GoogleAPIClientForREST-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B0B431A18A5B7551E54ABD25173F342B /* RSTHasher.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A02436142FF717FBB3C4C31467F365D /* RSTHasher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B0CB5FAC98AAFC09214918F272CD0477 /* GoogleAPIClientForREST-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C147496CE2BE85DE98AFC33F2DBDC08 /* GoogleAPIClientForREST-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; B0D34907667874FB8B85C35E77293BF7 /* DSEmulatorBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = EFDF8CA72851849A3EAC5C149F1FEAA2 /* DSEmulatorBridge.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B0D9F0A86CA4474E0A6C4933588B1E7A /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 602F93ECC989A3FB6D04031D00DE62E5 /* SDWebImagePrefetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B0D9F0A86CA4474E0A6C4933588B1E7A /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = F197E1DBAE31B57378B6141D9179204A /* SDWebImagePrefetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B12BE45337C88EC9E8FD221DE4282DBA /* ARCodeFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F3BBF912EAEDADF1676BFC69C3F2E5A6 /* ARCodeFile.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B133492DEF49C862E0FE708A0821A6F3 /* messages.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C3ADACD102BF557C0CDF9313E0A577 /* messages.h */; settings = {ATTRIBUTES = (Project, ); }; }; B138479424CF6214AB96935FF55A85BE /* netplay.h in Headers */ = {isa = PBXBuildFile; fileRef = D51E188D838AEB69093123ABC8902093 /* netplay.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B141EDB540C158E21DE6530A58B01482 /* ZIPFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D348B99A21C9231EF8021CE9BE24C999 /* ZIPFoundation-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; B149AA97D57491FCC5A49D3DDE4E9444 /* tttypes.h in Headers */ = {isa = PBXBuildFile; fileRef = A99D6FA874EC0CE5E6FF8B99009BC3CC /* tttypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; B19FEBE25465731EF98426F63AF5229A /* NstInpTurboFile.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D799949A4565702661AFA3995D650C57 /* NstInpTurboFile.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B1B0B44C669FC89BB9B0605DCACF5BA7 /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 440F728629AA81492F2374B22D158C8D /* Standard.deltamapping */; }; B1B726C37FEADFF066DA50A67B1A6FC7 /* UserDefaults+Harmony.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D15689BF394D0D4715A1CF27DC77AFF /* UserDefaults+Harmony.swift */; }; B1F2A524C6C6B182547F97DECAFDF468 /* GBADeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D5333899F4FCD47BE18D2CFB9431CA3 /* GBADeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B258EAF739993BFAA77C6FA467A7B397 /* Pods-Delta-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E39B6D2E1349BC9CF76985C762A82797 /* Pods-Delta-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B297A13AF311273E3D3C05A89ADBBBE7 /* GTMSessionFetcherService.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F7ED6CE3BC682B49D8D74C14E481F37 /* GTMSessionFetcherService.h */; settings = {ATTRIBUTES = (Project, ); }; }; B2BA3D9EB6086382F29E54A66FF218FC /* cexcept.h in Headers */ = {isa = PBXBuildFile; fileRef = B2E4677AF53B14D10F76DC96D0EE8E81 /* cexcept.h */; settings = {ATTRIBUTES = (Project, ); }; }; B2CED5356E1C5BDA73E7FDB98E84EE91 /* pshints.h in Headers */ = {isa = PBXBuildFile; fileRef = 89C960C16995AC56FBCD57A8A50D8C9E /* pshints.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B301A74A5DE411C13AAF6B268E7C8074 /* TeamLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = C585C47CE6EF972B1E2B823683528538 /* TeamLog.swift */; }; + B2F7F02660466D60F8056FEAB270DC78 /* Archive+Reading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 247B8D6B9E9E7BB417296B8976528C7E /* Archive+Reading.swift */; }; + B353669F746337D1A2536BE67E72C3F9 /* ControllerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E391CF9551BB3A4B87436C08C3130381 /* ControllerView.swift */; }; B35F4D3266CD9DFECA20E0744BF1A0AA /* NstBoardExRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 64D795F559E1C97B950AC604E9C450A9 /* NstBoardExRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; B371AE42BF535A6B3B54AF1E05A3A490 /* TextureFilters_hq2x.h in Headers */ = {isa = PBXBuildFile; fileRef = F22EA886730CA92F877F0D9EDA765E5B /* TextureFilters_hq2x.h */; settings = {ATTRIBUTES = (Project, ); }; }; B375A0D6171E8C4D8161485C5AF368C5 /* fttrigon.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BB78DDC672D6777CD11A5E2E0D76606 /* fttrigon.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1281,106 +1338,107 @@ B3D7871D360B517CAD600AFF7BABAE35 /* ContextSettings.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 71122C229801C8A1AE61B44C6072C5BA /* ContextSettings.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; B3EAE32322EF1922A36937A826BC6A76 /* F3DSETA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 297B115A186A67E552AD9686A4D5E67B /* F3DSETA.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B3F3911E43AC3362EFF36C379F53482C /* pngstest-errors.h in Headers */ = {isa = PBXBuildFile; fileRef = 44CC792247829E7BFA3CC5F589AA38AE /* pngstest-errors.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B42B1158662AD764F28A25BA5FD466EA /* AggregateFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10B38D31A95FF99BBC00DA9C36C8D94 /* AggregateFunctions.swift */; }; - B44B64B60EB9561C48562F6B3ACA1514 /* RSTLoadOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 78C8AB7FD07C0ECCA27FBE751419AC29 /* RSTLoadOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B4210A8F0E6142E217A927B5D480F3A4 /* GameController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0680D0EC0F7556C47C63C604ADEFD565 /* GameController.swift */; }; + B42B1158662AD764F28A25BA5FD466EA /* AggregateFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22AA280DD1D36ECC49012CE94F92FF70 /* AggregateFunctions.swift */; }; B450490610581C7BF41B2A5120043541 /* ManagedRecord+Uploading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C4AAA59C0D20ACBCE202A02B2379550 /* ManagedRecord+Uploading.swift */; }; B49BB032702675CECABE19B36330488E /* S2DEX.h in Headers */ = {isa = PBXBuildFile; fileRef = B00F6B23D0B981B123F788DAC719B99F /* S2DEX.h */; settings = {ATTRIBUTES = (Project, ); }; }; B4C60AE3B757CE979D39CEF8E80854CF /* GBADeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B30911B6A5E0646227CAD4286FA16F9 /* GBADeltaCore-dummy.m */; }; B4C89DBF1805D44B57F84DC67D9C61BF /* device.h in Headers */ = {isa = PBXBuildFile; fileRef = EA00C52ECE4DEEE4E7FACEA47A557078 /* device.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B4DADF61E162CDA2228C9C462EA1EF2E /* GTMMethodCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 622C39AE31FBB34625FBFCF26A80CD07 /* GTMMethodCheck.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B5724A9B9054A6E82020990726E5D368 /* mupen64plus.ini in Resources */ = {isa = PBXBuildFile; fileRef = ECBD2A6867A0D5DE628227BE67476E66 /* mupen64plus.ini */; }; + B4D0BEA6C5378B166B195668B5818A12 /* UICollectionView+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = C3C76B6A29C0D032AB0DD055309D1387 /* UICollectionView+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B57A20EB02AA23958E7861737B903F61 /* SDL_config.h in Headers */ = {isa = PBXBuildFile; fileRef = E65C91A453E376EE9681BB62650AACF9 /* SDL_config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B57E6056680308B4169E3607E21B73BF /* SwiftyDropbox-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 25EF96F6B9247B60C952A5BB11777FD0 /* SwiftyDropbox-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; B5886A1D7977B9516EB8935BA5F31B82 /* port.h in Headers */ = {isa = PBXBuildFile; fileRef = 2112A7BA437D6BD56AAC3CAFFF6217F6 /* port.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B5C4A0336395BF8334E3523156F28953 /* GTLRDateTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 04CD4DB2EE3E00431E393AF83DA3B925 /* GTLRDateTime.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B5C4A0336395BF8334E3523156F28953 /* GTLRDateTime.h in Headers */ = {isa = PBXBuildFile; fileRef = CFA4D7A7602BFF3A3C64CE6AF41F95BE /* GTLRDateTime.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B5D6FB89CB3DC83D534C35F0C2D07063 /* GLideN64.ini in Resources */ = {isa = PBXBuildFile; fileRef = 171F9A5206DE0CC67CF12102162639DC /* GLideN64.ini */; }; B5DA3EE3ED0B2EFDE20644633873A049 /* NstBoardJaleco.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C50B575636C35E545F553C586B05FB8A /* NstBoardJaleco.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B5E32E1351FC7E8DC225306223B84686 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 0578BFC4BF51617091C2DE4924C3A501 /* SDWebImageDownloader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B5E32E1351FC7E8DC225306223B84686 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 519291E5371F0C2FAD1EEA6F786E1D41 /* SDWebImageDownloader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B6051C476791D3993EF5886755EEB2F6 /* UICollectionViewCell+Nibs.h in Headers */ = {isa = PBXBuildFile; fileRef = F1F469997C999D3731F8539D750D3344 /* UICollectionViewCell+Nibs.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B634DBD241E1E3174E680E1B35CB3C6B /* OIDClientMetadataParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 932D2A9B9DAC3B894125AF5B6ED7966B /* OIDClientMetadataParameters.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B64B10610D2BA732C0F99B6DC955EC2A /* NstState.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FC0D51663CB6A3226938C00A18899F53 /* NstState.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; B658D955735BDB9692C88BD1EC951907 /* Image.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 287B0AB028F458C9A04121405379BE05 /* Image.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B66B2356A78238EA2B1C2A09FCE0DBD4 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BF527A86BB1F33B31BB0F79626623B7 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B66B2356A78238EA2B1C2A09FCE0DBD4 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F002CEE0C728572DCDE27D651197B5 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; B6C5D696BEDB76B9A08B0C534AFBFA95 /* t1tables.h in Headers */ = {isa = PBXBuildFile; fileRef = A75028C5A393D1E5670377F6BC9905FC /* t1tables.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B6DC6AF08E379BA0EC4A0D8255C2A83A /* OIDTokenRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = A92D30FE329DA910DCFB6DE26BDFA144 /* OIDTokenRequest.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B71FA39164D4737D4DD4258AC7459436 /* opengl_ColorBufferReaderWithReadPixels.h in Headers */ = {isa = PBXBuildFile; fileRef = E2FED4B4A646D3CAD594BD95F165A231 /* opengl_ColorBufferReaderWithReadPixels.h */; settings = {ATTRIBUTES = (Project, ); }; }; B7240D9514693EEBD7A0FC4B8BA00A7E /* conffile.h in Headers */ = {isa = PBXBuildFile; fileRef = 43742E54E76C8CD0C13816B1DE0B217C /* conffile.h */; settings = {ATTRIBUTES = (Project, ); }; }; B73C81771DA13935AEA2DD8B9A2941CD /* NstNsf.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0A1CB1180B4A23EF647F7E0BE5C5E0B0 /* NstNsf.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B75523B990ABDFBDCAFF143CA967A9C6 /* RSTNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 57BBF8F3367BAA59BCB8B42DE62C605B /* RSTNavigationController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B763EEF0FB3946B9E88785EEB6C032B1 /* FinishUploadingRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD6A8CDC5FCD0DA6B0B7F1F9F5689CA /* FinishUploadingRecordsOperation.swift */; }; B7678E1F18DC77D160FD543F5183000C /* NstBoardBmc8157.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 47B404F4B3523D7C2A3C4C3EC84A96D5 /* NstBoardBmc8157.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + B7C79AF285FDA23B54BC21E79EEDB866 /* Bundle+Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = A19318395D3B3D8114C56710610A3443 /* Bundle+Resources.swift */; }; B7D3AAAFA19228CDC13F358AEA6517F1 /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 791E2F50ABC6974A9FCB2BC6FFD052B3 /* pngwutil.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B7DA525F7ED4A71A87217F8DAA536064 /* OIDAuthorizationService+IOS.h in Headers */ = {isa = PBXBuildFile; fileRef = E3A84C00EC52D508C43138D6415A7260 /* OIDAuthorizationService+IOS.h */; settings = {ATTRIBUTES = (Project, ); }; }; B7EC6F1D4F40DFDE0625790510AECB60 /* Http.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0DC1345C3C633EB2A4735D643C13A965 /* Http.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; B82417AE37F75B51FA47D8BC39F60100 /* r4300_core.h in Headers */ = {isa = PBXBuildFile; fileRef = 234810B6DB1F369179094875381A0A0C /* r4300_core.h */; settings = {ATTRIBUTES = (Project, ); }; }; B8323D1BCEA5AC43F2FA74BA9EA51E49 /* NstInpFamilyKeyboard.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F3A21D810CF81C7E8CB80F57ABB8F60E /* NstInpFamilyKeyboard.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; B83D3F40F4ED3D92F65FFBA6C4F33BF2 /* NstBoardNtdec.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 49193C1382CA13663595063370D3886E /* NstBoardNtdec.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; B8535B7D78C014141E7379CEB689FAC8 /* ftgasp.h in Headers */ = {isa = PBXBuildFile; fileRef = BAA2507DBA0FE3ED3BF05CA87C04EC0E /* ftgasp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B856E3ABBA84A55BA16BF2220F9E7AFB /* UIImage+Manipulation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D3C0C4D16DA1166A4BE49E0FBEB856E /* UIImage+Manipulation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B86041447060833F02B5CC0F30275473 /* loadres.h in Headers */ = {isa = PBXBuildFile; fileRef = 8124C610C6CCECA5BEB797AF99935D78 /* loadres.h */; settings = {ATTRIBUTES = (Project, ); }; }; B86B4134A3AE47DBA290E7C92C251543 /* AnyCodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E7363E25334983F1E3E25D44A8609A /* AnyCodable.swift */; }; - B89BEFD7A05D823E3DA57ECB02687066 /* RSTLoadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B5E807740F0EF017C700ADF434C98BD3 /* RSTLoadOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B8A71094754B4CC84186B08D4D59989E /* svpostnm.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BC43D45DBCF227AFEE841E2730C0A96 /* svpostnm.h */; settings = {ATTRIBUTES = (Project, ); }; }; B8D160FDCCABD3610B9C283503F399FE /* ppu.h in Headers */ = {isa = PBXBuildFile; fileRef = EDDC3FD29F1B676D79882A4136C33A00 /* ppu.h */; settings = {ATTRIBUTES = (Project, ); }; }; B8EC7339AF623F5AE4DE1343DDC378DE /* NstBoardDreamtech.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 391BDE6126D57890426F3634F6B5E7CE /* NstBoardDreamtech.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; B8ECA4C378438EC400092DD5BFAB3BC1 /* DeleteRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 105C1D6DE734E0BA808F14764DB1D0C6 /* DeleteRecordOperation.swift */; }; - B909E7E0742D3F6F5A5E1BCB4B6F9A70 /* RSTDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B51099C9B2743A734E370EE4A01EE5C9 /* RSTDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; B91E4B1C667B72D91AF291405D413583 /* main.h in Headers */ = {isa = PBXBuildFile; fileRef = FF72E6DA9F69850C8D1895CACBB59C2B /* main.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B935C2C0051F37DAEC2199101644C1F5 /* OIDExternalUserAgentSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 10AB5968054BF23F73574ED91AB978C1 /* OIDExternalUserAgentSession.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B938AA9D285B48D746443AA36EFDD33C /* UITableViewCell+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = CCFF79507F169F74B68C445BA304BD5F /* UITableViewCell+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B94FA666F1EB80E81D26AC357191EF1B /* WavFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 17F9471707D05916740E7E82ACB33027 /* WavFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B99169F9F5479A13D020FADEC31668E5 /* RSTCollectionViewGridLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 0455CBEF7CB3708C7FFE7E36A032FEDD /* RSTCollectionViewGridLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B991F9D52AF86606C342332641737863 /* RSTPlaceholderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C7580438732575706FC0C5312EF089C /* RSTPlaceholderView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B95F00C6D96B665D5DA4F2202C81106B /* OIDRegistrationResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D95088C649CC96A2D82A787F207F334 /* OIDRegistrationResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B964B855E4E857DAEAB1CB5D6032876B /* DropboxClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6422ED78A396BD722B4FFA6B5EEA3D7A /* DropboxClient.swift */; }; B99735ED3FCF5BDFCB1830445B288E59 /* NstBoardUnlKingOfFighters97.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9E2C7A50AB74899D32691D2FD8664348 /* NstBoardUnlKingOfFighters97.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; B9C3C6C9B010D7A4527C28B0CA639A91 /* AREngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71E7D30B14CEA44743A2FC9890328DD1 /* AREngine.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B9CE09F6E3ADFE67A314CED63C8E0723 /* RSTConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B953986F11248C6CA94BCF08358DBAE /* RSTConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; B9FA1E95A6FC0051578E5F9B90592A25 /* MergePolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = D120FB3DD7CE8E154F0178A7E383180A /* MergePolicy.swift */; }; - BA956DCBC93D2815C285CBA3C0ADECC1 /* StandardGameControllerInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 667BB04531AD532495A6109121EC251F /* StandardGameControllerInput.swift */; }; BAFE59F8467A479C3024C8D1A6B63C1A /* NstBoardSunsoft4.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C22D5AF4DB90EC26C2D5E7314FE452DA /* NstBoardSunsoft4.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BB079FBCD203D0D585F07741BEB1359F /* Pods-Delta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 11D58CDB406CFD79E7AC3E81C6B8B7BD /* Pods-Delta-dummy.m */; }; - BB22175107C5B167BA3A503EF40C95BE /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = F5EA96C879945AA782B43E8FA302CAF0 /* UIImage+GIF.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BB6C7F62ED6607CA3B07B737DE8956BF /* ControllerInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 916DC17A6938C4EB312870DB067BAFE2 /* ControllerInputView.swift */; }; + BB22175107C5B167BA3A503EF40C95BE /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = E93ECC28803C1AAA46C727EEC0426CDC /* UIImage+GIF.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; BB83C478B7243E82DDB3C167A0671904 /* ftautoh.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D23AF10496651959F4FCBA8CD845C8C /* ftautoh.h */; settings = {ATTRIBUTES = (Project, ); }; }; BBE507C7118E79DBE7B88CD3FA91F59A /* mempak.h in Headers */ = {isa = PBXBuildFile; fileRef = D021571E7AD5B0872171BCAC83C8C12A /* mempak.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BBE85B48020FE1E1DA78D0D3EA4EF773 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3983F1895BAF52B55FBA7C3CA41B9A63 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BBE85B48020FE1E1DA78D0D3EA4EF773 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 32F11BE94EA64E284931EE13211BFBD5 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; BBF5090EAC742B949B8C0B2E265FEEDF /* NstLog.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B203F8A88C9D48A5F5958E9C9D692004 /* NstLog.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + BBF6B8C691E588AAFC1F14A809992E95 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 3B46B04A3CCDD5165D5EF0121C30CE78 /* Standard.deltaskin */; }; BC1A368AC0F9987735F7FBD019812173 /* 65c816.h in Headers */ = {isa = PBXBuildFile; fileRef = FE9FC99EFA7CFDE7A20553D6A647FCE9 /* 65c816.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BC247677A17F16688F603D3E9FC22150 /* MFiGameController.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 2A68BB1DAC0E13CD0973C5A2071BCABD /* MFiGameController.deltamapping */; }; + BC3C60DC6E71786B7D99C463A7917027 /* EmulatorBridging.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB7E0D0416AD09FA405E0355EA089AD8 /* EmulatorBridging.swift */; }; BC49945E92A89E7019F4BB36F24724F5 /* NstBoardCne.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4ADA658334DC2FAB8AE0605F38567EE5 /* NstBoardCne.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; BC6BE92D64B0C389F3887186035A4727 /* GBCInputGetter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 30BEF95272EB5D03177EBDA73F04C381 /* GBCInputGetter.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; BC9890509F1495BE1BAAB9D11525EAD7 /* Cheats.h in Headers */ = {isa = PBXBuildFile; fileRef = 4554336FC8DDAB28DF3304A71CB47A27 /* Cheats.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BCE1E07C897188D7F0A78DD02F30AC0B /* GTMGatherInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = EC7D812FBDF10DDBF8A0A3527249F79F /* GTMGatherInputStream.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BCF2769B5B3B75D502DF8D84413B21FD /* GTLRObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F1D0E74F872B2D64D94DDEE42849F609 /* GTLRObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BD2A303D0E510EDC3DDB457909E95390 /* UICollectionViewCell+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = A41248995A9177B9C85BCAF68FD4663A /* UICollectionViewCell+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BCF2769B5B3B75D502DF8D84413B21FD /* GTLRObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F7FF9A766FC21BE3E37E65D11FE6906 /* GTLRObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; BD4BEED86D25C1280D399AB00DEFA344 /* array.h in Headers */ = {isa = PBXBuildFile; fileRef = FFF7826CA41E12879ED186251123A7DA /* array.h */; settings = {ATTRIBUTES = (Project, ); }; }; BD5B05CB6DA552A1336B1B20EF8D86AB /* NstBoardSubor.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4481A21822C862D31F6A82503731AB4F /* NstBoardSubor.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; BD5E83D1D54AF42BE1BE819E5C834B1E /* SocketHandle.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CD4EA785583B6712B56815D0C46BDD97 /* SocketHandle.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BD808726C1E9C066D67461374DEFA21E /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 059E076DC22B421E03349A4BC56852DD /* Alamofire.swift */; }; - BDD91DD6EDDC51DB7B2ABAEBE3CAF275 /* KeyboardResponder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E8FA7EDDF2D182E85D908AB189426B6 /* KeyboardResponder.swift */; }; + BD70FC92F05DDE1D857CCBD86C958F54 /* UIImage+PDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEF39C589F31A8F1B0747404D7D51759 /* UIImage+PDF.swift */; }; + BD808726C1E9C066D67461374DEFA21E /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48605EA57EDF8ABD64CC081DC9E9AFC0 /* Alamofire.swift */; }; + BDC17259CEDE4F4A08764E0595DB7F81 /* OIDRegistrationResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 24A83CCF6D3C57506C97EB1CEAAC398C /* OIDRegistrationResponse.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + BDCBA646CD4EF53313996F3305D55621 /* RSTRelationshipPreservingMergePolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 580875E9EA0153748A8CDB2FF8543EBA /* RSTRelationshipPreservingMergePolicy.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + BDDE68BA1F980DB1E65458EBFAB69F7A /* AudioRendering.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDCC5902B2B69DCE162F96EA6B47E52B /* AudioRendering.swift */; }; BE565F3778315FD427DDF6D5954EA12E /* ARMJIT_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 15EB02E146D6076DA0A1CE5431A1A63A /* ARMJIT_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; BE98A4C2B178AC1A739D261D27CD703B /* NstIoAccessor.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 55741C8D3E2ACFCAE9280C7E549BCF36 /* NstIoAccessor.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + BEB2D889B2A4A378928812081A3D1E4E /* DeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 35A1F31917622413C5030F211BD54C5A /* DeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BEBF8EBF0D7C298688DB7B7D91BF1E1E /* Pods-Delta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 11D58CDB406CFD79E7AC3E81C6B8B7BD /* Pods-Delta-dummy.m */; }; BEC9F99D62ABEF0A53F179024653205A /* glsl_ShaderStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 212805C702C8C64AD6E2603DCD9DBBB2 /* glsl_ShaderStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; BEDC48AD68FCBD1B83E328BD0C105A7A /* NstApiNsf.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 249E3E889143B437B35E6E41D194917D /* NstApiNsf.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BEDE8031E49227D2DB8989ED7FFCD69B /* RSTOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B07948E9EF320FFD68CD858188BDA7D /* RSTOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BEDF0C54AD9B431F9FB6363CD5954B75 /* RSTPlaceholderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C7580438732575706FC0C5312EF089C /* RSTPlaceholderView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; BEEC530219CB5D6A7FD96790F1FB0B6B /* DeleteRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67DE15A659C79639D0F56E08DF9FBC6A /* DeleteRecordsOperation.swift */; }; - BEF1BFD8053562D253948BD404AED944 /* UICollectionView+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = C3C76B6A29C0D032AB0DD055309D1387 /* UICollectionView+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; BF5853F76EA6B398047995DF94BC92CB /* NstBoardSomeriTeamSl12.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B5B746E5EA10FC7F1055958D0934DE8D /* NstBoardSomeriTeamSl12.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; BF70D6105AB4B5CC4861E287B260A0E8 /* glsl_ShaderPart.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD7237D2B6E99690A20999A48E4C078 /* glsl_ShaderPart.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF7C663D422DA4AD0A2A88DEF80CA0E5 /* melonDLDI.h in Headers */ = {isa = PBXBuildFile; fileRef = 648BAE84EFC9AC60FD527D3B96799847 /* melonDLDI.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF7F946EA83F118C48C05DD5E279224F /* ThreadImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF6DFA2E1F6CE9BE69FDF132CFCA0EB /* ThreadImpl.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; BF8563C4252D5B945CFB9E1C8FC29670 /* NstChips.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D6A999738377E05BD7AB69423CFE2D9B /* NstChips.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BFAE06E23BCC98B20A7C1619B12CA859 /* RSTCollectionViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = ECF20AE8048AC20A7049C71B4A3D6497 /* RSTCollectionViewCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; BFC4168E0421BEA7CEE5D0B9D2AE6F40 /* NstBoardHxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1E19119079CB6BCA159A7B0EC7E7B250 /* NstBoardHxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BFC9EB580DD09ED78B7A985E17764B81 /* RSTRelationshipPreservingMergePolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 580875E9EA0153748A8CDB2FF8543EBA /* RSTRelationshipPreservingMergePolicy.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; BFFF048985D92BEA59FBB915147DF23F /* assem_arm.h in Headers */ = {isa = PBXBuildFile; fileRef = F2BC1BB2CD8363FA4B5CEFCA4F3FD2AC /* assem_arm.h */; settings = {ATTRIBUTES = (Project, ); }; }; C01793EAED3811FE38C56BCBD22D9D5A /* NstBoardDxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8A2265D39882CF69243D929B92017C4A /* NstBoardDxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C03B72B616F7DEAC9C3FD176BBE536F6 /* NSPredicate+Search.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C0E24A9C80929074CE421F5E143D51D /* NSPredicate+Search.h */; settings = {ATTRIBUTES = (Project, ); }; }; C0875771C3D718A5B1304FD75190648F /* Graphics.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 22369F9700ABF0D580BE24D3E391B43C /* Graphics.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C0D3240457C5FBB34D12CB60E56EAEE5 /* mbc3_rtc.h in Headers */ = {isa = PBXBuildFile; fileRef = E20F03F43AF80E54C8367A3B1662DF09 /* mbc3_rtc.h */; settings = {ATTRIBUTES = (Project, ); }; }; C0E7ECA9D3D9EB425B50759F0BACD424 /* gDP.h in Headers */ = {isa = PBXBuildFile; fileRef = 905D5F8B676ABDDA03A563E40A3330F1 /* gDP.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C10ADD453F9E626A60A899FE1C3A34C6 /* AnyInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9298B315F615623E280CE6D5DD35B045 /* AnyInput.swift */; }; C13DEA702C4B8F54B1C3582FD728EDAB /* ARM_InstrInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 78F0065D1B4EEB8522402FAB52FAA8AB /* ARM_InstrInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; C14E3A2EFD68843EB556E46F4BBAAAD4 /* TextureFilters_hq4x.h in Headers */ = {isa = PBXBuildFile; fileRef = 611A4156C9373331863B6B3CCCA0ADB0 /* TextureFilters_hq4x.h */; settings = {ATTRIBUTES = (Project, ); }; }; C1614BDA5E3C5BF0267043BE13DFCD86 /* PaletteTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0B70F65B08C7DBDD9932A1ADE91DE586 /* PaletteTexture.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C1704ECAF21DF445A4F498988229E820 /* GTMSessionFetcherService.m in Sources */ = {isa = PBXBuildFile; fileRef = 551F767B133FD2219158C4BD484F80BC /* GTMSessionFetcherService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; C180CB4C7F87086D6493B9237403413D /* convert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 64942D01612D91517D8D0EAC219F7867 /* convert.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; C1A5D5F1F2EFBD8F4813B2A5C0599B05 /* NstBoardBmcGamestarA.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 156AB82C4AEE7915FAB4958A21A7F5E3 /* NstBoardBmcGamestarA.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C1B785629D4D9EEC02B75C26466665F8 /* retro_assert.h in Headers */ = {isa = PBXBuildFile; fileRef = FAD7141BA485A3C8951827182B0B1B18 /* retro_assert.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C1B98F1AEAB982E3CC3EB7E2470581A6 /* FilePropertiesRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FA1B8883F6CAED73B7A39FB514ECF59 /* FilePropertiesRoutes.swift */; }; C1F90A04670AC444F044E019596BFDDC /* CombinerProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03620BC3AFB2B2C65DAA35A7BD95F81E /* CombinerProgram.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; C212D5F9CCB38B2C9C6EC61F6EE5DB9A /* m64282fp.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B2EBA0F2FB98CF01E6F308F1DF1521E /* m64282fp.h */; settings = {ATTRIBUTES = (Project, ); }; }; C24427713749B04C07BF7EC71039BE65 /* pif.h in Headers */ = {isa = PBXBuildFile; fileRef = 53D5CF409D168FA18D40984A454645CB /* pif.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C2744BF959085E4A3942CFA5A079A714 /* RSTCellContentDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 9ACC9194F5B06F05848A391AED6BEE15 /* RSTCellContentDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C29D0EBD4893BA871D029A38898A3BBE /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = E0C78CF3BBD7FAE4DF182AF1C994DD89 /* Standard.deltamapping */; }; C29EE0324D03DE9E3A83E9FB67CDDF8B /* insertion_sort.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C68EF75C56A10FD27BA9FD0A2CFE095 /* insertion_sort.h */; settings = {ATTRIBUTES = (Project, ); }; }; C2B821C89C1FB16466F96149981B4CD1 /* MelonDSDeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C954F1D28F83E537D400863C91A633C /* MelonDSDeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; C2B91A4A6C324875DEA80DD81672BDFB /* WifiAP.h in Headers */ = {isa = PBXBuildFile; fileRef = E21695BC34A564AC90F8B24A9773AD31 /* WifiAP.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1394,7 +1452,6 @@ C383175B44EA6E9E0183F88266B3CFF7 /* assem_x86.h in Headers */ = {isa = PBXBuildFile; fileRef = 100591FC1EB3894E604B7F1E611F4197 /* assem_x86.h */; settings = {ATTRIBUTES = (Project, ); }; }; C39128F55647E75F291DA3CE9157A3D6 /* glsl_CombinerProgramBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 81447175398CDF26A8B1BC2A0076D394 /* glsl_CombinerProgramBuilder.h */; settings = {ATTRIBUTES = (Project, ); }; }; C39E10680D83A8A82BCD42C944B1EA7A /* TextDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F56D901D0434FFC4B130CF5D543B1D0 /* TextDrawer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C3A545BB371565B7B4722AFA2847B747 /* TeamRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F02264297230F05D9C1178C000E04EC /* TeamRoutes.swift */; }; C3B17228F32CE7BE7A6EC499627AE790 /* TxReSample.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C01054A9E17C230DD508039038A8743 /* TxReSample.h */; settings = {ATTRIBUTES = (Project, ); }; }; C41717AA32EB10D6900150CDF785F96C /* NstBoardWhirlwind.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 894E241419E81A5CB6EEE9721DF3E2AC /* NstBoardWhirlwind.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C44098BFAE475EEBE373318437511873 /* NstBoardNamcot163.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F02C3EAB797B0480C4F0D7E178CC92FD /* NstBoardNamcot163.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1408,37 +1465,37 @@ C4D519ED5B6FA490B42C2B4DDE339010 /* NstBoardQj.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EDE87FB7E7AD74383E166733793C5ABB /* NstBoardQj.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C4DFC728EEB6FDABB2CBE8CA34EAF837 /* VI.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A873C2EE1C0E1CB2813C3782D60D441 /* VI.h */; settings = {ATTRIBUTES = (Project, ); }; }; C5097EB312F31FCBE38D31F372992BF1 /* ARMInterpreter_LoadStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 374DF1A46229CD6D1636720284963491 /* ARMInterpreter_LoadStore.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C50FE352C7218811265F45B12CE5DA12 /* UIView+AnimatedHide.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C10797B4AC0FCD5DC745C1F12F49BF /* UIView+AnimatedHide.h */; settings = {ATTRIBUTES = (Project, ); }; }; C522AACE29DDD3EDB7BAB9094A79264D /* PACKED_END.h in Headers */ = {isa = PBXBuildFile; fileRef = 4150FDAF728FC1CCBBC770F2528DDEC2 /* PACKED_END.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C5259247A3BAC31B645EB1872E6F7D9D /* ImmediatePanGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C16D5BBBB45CF1D60FC6565D2CDFF1D2 /* ImmediatePanGestureRecognizer.swift */; }; C538D112D0AA84B842FEDD23E9384008 /* svpsinfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DA04E14F03A3B492ECED840625835E8 /* svpsinfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; C58DBFA07E24339990360F665195B6BC /* NstBoardBmcResetBased4in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35563C6EDDE033848DBE71A1D7EB2272 /* NstBoardBmcResetBased4in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C5925F529900A1E067B57805330A1D02 /* NstBoardHosenkan.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CFD8A4F7B53F8D399A47BBA8043FB62F /* NstBoardHosenkan.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C59F87A5023688E25845F2AF55C291F8 /* ControllerSkinProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54340D6DD361F80825634BA710CC647F /* ControllerSkinProtocol.swift */; }; - C5ABA05640C8BB4E11FB9BD037C8AADA /* NSLayoutConstraint+Edges.m in Sources */ = {isa = PBXBuildFile; fileRef = 020BED2D96312DD71C54EFA929FA2790 /* NSLayoutConstraint+Edges.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; C5F756CA847C218B82DEED5DB3CE3858 /* svwinfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = A675FB05D1C0EA293C549C7C915158CC /* svwinfnt.h */; settings = {ATTRIBUTES = (Project, ); }; }; C60860FFED69DF807BEBEE9FC5215F30 /* NstBoardTxc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5BFD28BD7E770025934EF3C6AE0C0B19 /* NstBoardTxc.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C6086B76E89CBF4AE00B17B8BDE3CABA /* FileProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC547021A6C25CAC75D4CBEA991AF3F2 /* FileProperties.swift */; }; C633DDF872EEA2E81CE49A3F2E3AE670 /* NstBoardBmcCh001.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2F48A72A8BB6DCFEF98DC46F35F8A72C /* NstBoardBmcCh001.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C63A207C224FCF87459DE10A1996F1F0 /* fttypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 02EBA4437D0FA1CF697188CF0D82DF4F /* fttypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C63AE036E8EF4315BC11E94AE4E9FEE8 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 05E7291F492456F36AE41FD68A486294 /* Standard.deltaskin */; }; C640481E728038309D7FE61AB1392E3A /* NstAssert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8BE76479C9EF902888E8C6D3DBFBCB99 /* NstAssert.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C6567183535DE7F5AE7786F52243A039 /* clock_backend.h in Headers */ = {isa = PBXBuildFile; fileRef = A901EB72C85D33069EB23CA37C3FD795 /* clock_backend.h */; settings = {ATTRIBUTES = (Project, ); }; }; C65CDD6C31CFBEB6457173185429F69B /* ARMInterpreter.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C8D322419292F2F744F642CA3045571 /* ARMInterpreter.h */; settings = {ATTRIBUTES = (Project, ); }; }; C695A1E9918EF4EC923526EB013EE9BA /* tlb.h in Headers */ = {isa = PBXBuildFile; fileRef = 32BF8228E40E4E8B1107C6B78FB5388E /* tlb.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C69DD7563D2D8B4E00B2E8A5B1B6331D /* RSTFetchedResultsDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = F393147DF602B1AF7C00B67655D80C30 /* RSTFetchedResultsDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; C6F647699F5706858F621C2F30372440 /* gSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 071B830438D1BFFE8BCC6D2DD693D2CA /* gSP.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C71E5555B9155C0A63EBD3BAF74E6517 /* GTLRService.h in Headers */ = {isa = PBXBuildFile; fileRef = F8694E99071ADE337EEEA41E7C2CFD82 /* GTLRService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C71E5555B9155C0A63EBD3BAF74E6517 /* GTLRService.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB5A7F5FFAE58E02C01B350F0F9D6E3 /* GTLRService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C72ABA4DA09919D87115230754EBFCB5 /* OIDEndSessionRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 45243E1B0086B736C048AED5C8630363 /* OIDEndSessionRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; C73675FF1F6744C03E371F95F74451A8 /* srtcemu.h in Headers */ = {isa = PBXBuildFile; fileRef = 724B29B391C824EDBAFA9DEF2FE99851 /* srtcemu.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C760D7112D1F76DD75F4A98B40C987C1 /* TeamPolicies.swift in Sources */ = {isa = PBXBuildFile; fileRef = E965344846F77B89894EE46FE75B2823 /* TeamPolicies.swift */; }; C76BA4A106074B10E677A1C1A6CC82C8 /* RTC.h in Headers */ = {isa = PBXBuildFile; fileRef = 74839D07D9C98E393388C150451DD09A /* RTC.h */; settings = {ATTRIBUTES = (Project, ); }; }; C7806D8D081F423067BA7F2CC054D830 /* Thread.inl in Headers */ = {isa = PBXBuildFile; fileRef = 6BCDAF46DCBB643E18D73E1CCAD9D4B0 /* Thread.inl */; settings = {ATTRIBUTES = (Project, ); }; }; + C7808EB15AF82E2EFCB71D11F61B8813 /* GameWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7637625DD89FB4AD1D49465C9482EC0 /* GameWindow.swift */; }; + C79ABE3FC9998E3F44B9842CFDCED449 /* StoneValidators.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF36F6F09B4DC03C081DC874523999BD /* StoneValidators.swift */; }; C7A6B7CDF029C2EED0FFA91C0A07C5A0 /* RTC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 739B58FF90CB88672E9485D85ADBB8FB /* RTC.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; C7A895B172FB918D849C7F245C05767E /* Vertex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A40B30BBFA19BA4D3DAFCD7DFF088203 /* Vertex.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C83666281A734DBD4EFA2A93E387E1F1 /* Vector3.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 25E7599D22683A4DB4231E1CCFA343D4 /* Vector3.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C843A985F05AC9FE02041B8F56F0F153 /* NstHook.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1498F44EE9D14A474CEDEE48E5E2896B /* NstHook.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C85987A1FD970DECC6632E9E14817464 /* ThreadLocalPtr.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A907CA805BB18BF27CE7CF69AC743EA6 /* ThreadLocalPtr.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C861A820D803A3F00105643326122EF2 /* RTC.h in Headers */ = {isa = PBXBuildFile; fileRef = E35E5EA84C80DD35DB38191486374F7D /* RTC.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C864A87E7E043C5FD8F6E234424494F7 /* RSTActivityIndicating.h in Headers */ = {isa = PBXBuildFile; fileRef = E4EBA815773EEEF36C8ACC26B336172A /* RSTActivityIndicating.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C89153F4A2AC922A760B97E4CA88075E /* ControllerDebugView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C52AF424178E68A80DE19F46499BC5 /* ControllerDebugView.swift */; }; C8A5DC321681B19339FD2DD80C9F1B9A /* arm_jit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DC94015BCA73967982E873F03E9AAD9 /* arm_jit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C90987A71BCA340A806B8D5BAC38B110 /* GTMOAuth2KeychainCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 97B8154A6F8BE2F1F7D5B7DA2C0E7AF8 /* GTMOAuth2KeychainCompatibility.h */; settings = {ATTRIBUTES = (Project, ); }; }; C91D9F038BCDB008BAF07DE31913EF46 /* NstBoardBtlSmb2a.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DD242F372C307D8E964D89B64FBE0EE2 /* NstBoardBtlSmb2a.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C955609E9429BCF1317E88D3B7385F11 /* NstBoardMmc5.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A06E97FFB0B952513315F9F29356AAF2 /* NstBoardMmc5.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C9569904F33B57E614379AAD0326F1D6 /* NonCopyable.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 89DE63030CF160D701B4937E00A519F4 /* NonCopyable.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1447,92 +1504,82 @@ C9766504221D1451806F2F817618F330 /* NstInpRob.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A3AAAE4E9E9338936F6A4486A7E697B5 /* NstInpRob.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C978AD34902051A2A9B55D89D5BF2725 /* LocalRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39F96EE4C3E8CD656F840B18A960236D /* LocalRecord.swift */; }; C984251B0397F2F333231ECFB831B24E /* spc7110.h in Headers */ = {isa = PBXBuildFile; fileRef = 50AC2C6EE9829DB768B0BC24C15D9DC4 /* spc7110.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C992D1F220758E6E631095F927EC79A8 /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 9B1ACC9E2F2024AB5391E216FCCD3371 /* Standard.deltamapping */; }; C9DAFE293B43BD14B46B20A31CC013B7 /* NstCartridgeInes.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7FE6EA99302F555A285FDBCD5A2158BF /* NstCartridgeInes.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; C9DBF7E142847817D4190E3FA254274E /* NstBoardMxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8187CDA1DAC340C978A249CA4B775C3F /* NstBoardMxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + C9F6EA7F0EB42FF76379805AEE71195A /* GTMSessionFetcherService.h in Headers */ = {isa = PBXBuildFile; fileRef = A9DB08EC4772FF7A6A905D44E5052D06 /* GTMSessionFetcherService.h */; settings = {ATTRIBUTES = (Project, ); }; }; CA06A2A9B4B6D0DD568119113C906296 /* F3DTEXA.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A210B499E1A1A858DB341FEFEB1F163 /* F3DTEXA.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CA4BAC50BA22FAC3BE30A90757588E24 /* TeamLogRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD8779AE248D2A01EAEB45063005C71 /* TeamLogRoutes.swift */; }; CA5AEA1135F07D49B69745A265DBF663 /* FrameBufferInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5FB62AA0B8D0836A6BB5285D7DAEE047 /* FrameBufferInfo.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CA6AEA3623783954D9A9D4F0AA102C79 /* UpdateRecordMetadataOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B24AB2DF8FC4BF4DD6BF037E7818C3D2 /* UpdateRecordMetadataOperation.swift */; }; - CA7DFCADBEA4DD35B62805B5F7DEC0E2 /* GTLRURITemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E7A1D4D282B1A61276595B3F2DA9630 /* GTLRURITemplate.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CA7DFCADBEA4DD35B62805B5F7DEC0E2 /* GTLRURITemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = D057D5A1FCB64223EC87BA53B8351A0B /* GTLRURITemplate.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CA8BC9E9DF72791B7EFF2EE8A38E6654 /* NstBoardBtlDragonNinja.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 752759220DF0B6DAE5C4C713A47F7883 /* NstBoardBtlDragonNinja.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; CAAD5F033E64DE2FFC221FD56F0400B4 /* TextDrawerStub.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C3F964CCAAE0ED64E715E3B13EDC6ECD /* TextDrawerStub.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CB03E6305698C1BF90ABA6C44355A543 /* NstBase.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 57FA5D9B89DC2E6B7F4776BA095BDFC4 /* NstBase.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CB05260BDB2A885AEDB803457764575B /* FilterChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092DB3EB21BDEE14EBAE69612D017417 /* FilterChain.swift */; }; CB17CC9AD4D054EDE0CF5E562B38DA56 /* rsp_core.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DB42486F89614BF4152AD2D590FD8AC /* rsp_core.h */; settings = {ATTRIBUTES = (Project, ); }; }; CB2E2C1A92E75245233968DAE6943ADC /* F3DGOLDEN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6D84236572002E70039D1EC204C0C7F /* F3DGOLDEN.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CB6CE598CBB2E8E9A495CE9CE236FD0E /* TxDbg_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = C920ABE1CD32898FDE28D05E300426D3 /* TxDbg_ios.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CB765FB59178B2E8BAF064DCEEE01B76 /* NstBoardBtlTobidaseDaisakusen.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B5EC979719AF84116845C11E69231908 /* NstBoardBtlTobidaseDaisakusen.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; CC01E3587A8E9AD5CAB5AC395DF17E2A /* NESDeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2967223FA7A49148FE09025B27BCD85C /* NESDeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CC1D0F7857E735E809EC233BD8A7BAC8 /* ExtensibleEnums.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B34E5D0AA3B5154E76417C4AFD1E7A8 /* ExtensibleEnums.swift */; }; - CC2230A8951A1A422A3C7776B181E7D4 /* GTLRBatchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = A136EA4F05EDD2CD92B3C8B2884AAFDD /* GTLRBatchResult.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CC2230A8951A1A422A3C7776B181E7D4 /* GTLRBatchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = DC40A8C710C4F26562DD7DCC58A3262D /* GTLRBatchResult.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CC5620B7128836088908B7C94BF62E43 /* TexrectDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 231187F01BD89BC85A528AEFA81C0E96 /* TexrectDrawer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CC65A3B65CABE8361BC74A86E66FD936 /* ftmac.h in Headers */ = {isa = PBXBuildFile; fileRef = A4179245A527FB2B003066A494ACEC85 /* ftmac.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CC6F43044520D745BC4704927BB6FAC7 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 4350D1FEB43D008EF6E9B2A8AF3F8D46 /* Standard.deltaskin */; }; + CC6E8E2AE33BC0DFAB7620BF20BE5DBB /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 251F4684C8F4F0E1A81110A7ECA9406C /* Async.swift */; }; CC7BC7F5FC3568FB1F83261F89F5F44C /* N64DeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = BE0EB98BA91DB978CF8D6C9BD55A2979 /* N64DeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; CC9404FF52C98B58CA547593FC9351DB /* NstApiMachine.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1E386BD0BB0ECC459FA522E26E6F0D42 /* NstApiMachine.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CC9CF52B502B38F4CD7BB227E11DF536 /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C48CBBB6A97428E4D4CBC314A140585 /* Archive.swift */; }; CCD6042E821C6F702C91191BC08155FD /* Thread.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D843B5D7D188463B152E998ADA05C587 /* Thread.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; CCDF97447661650F3871DA9339296D0A /* AREngine.h in Headers */ = {isa = PBXBuildFile; fileRef = A7318096FFF38B2956754A11C5513065 /* AREngine.h */; settings = {ATTRIBUTES = (Project, ); }; }; CCE5774ED5FCE59E6AA3EF649C770FFE /* retro_dirent.h in Headers */ = {isa = PBXBuildFile; fileRef = 49ED2B3C6FC417978697BAFBB23CFF1F /* retro_dirent.h */; settings = {ATTRIBUTES = (Project, ); }; }; CCE88D1AF8B2FEAFD745471B6F44FA68 /* fxinst.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D8B700F6E00A80322FE11595E6936C3 /* fxinst.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CD0E5EE2406AF3D6F2DE407075AD8B3A /* UISpringTimingParameters+Conveniences.m in Sources */ = {isa = PBXBuildFile; fileRef = F8B187821DFE47A48AFFE8B8496B8C46 /* UISpringTimingParameters+Conveniences.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CCECBE9E5228DC93FF8F0AF4F253231E /* RSTFetchedResultsDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 975243A09D83F735C4EE0F290DC172AD /* RSTFetchedResultsDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CD24A3B4442BED3B42597809D0ADBE50 /* PrimitiveType.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C51BEC03C001CB0D0FF60D596A403A7E /* PrimitiveType.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; CD272F7CAD7065825CB71D733350E228 /* TxUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6AF68755E15FBB7DFA5A924FE61DA530 /* TxUtil.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CD5AF56D25BC2751B5B6025DDB1FA0C0 /* RSTToastView.h in Headers */ = {isa = PBXBuildFile; fileRef = 755E5E577144BC6D12921757F1F6E1AA /* RSTToastView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CD79973FBE5DE0289D7F49A878BA6B47 /* GTMSessionFetcher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A9645906FAADC98FA524868681674322 /* GTMSessionFetcher-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; CDA24CCC0D51A30748B7DAADE6A152CC /* fterrdef.h in Headers */ = {isa = PBXBuildFile; fileRef = A32A1F08621C3AC02C88619A32A00140 /* fterrdef.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CE20BCB9BA1381BD1C4DB29A56C37FE8 /* GameControllerInputMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD97A21427274EAEC21DDEDFF49C63DC /* GameControllerInputMapping.swift */; }; + CDC517A14BB9B75CE58AC878BAB999B1 /* TouchControllerSkin.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBEBC13C2601FDB2E7F4D976B174D79A /* TouchControllerSkin.swift */; }; CE3DAAEEE38CABE3CF1F62527B9F5D52 /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = A8E7FC97AA2B85BD22CE34EEE1605B87 /* pngrtran.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CE703A711608BC1FEC892739B6DCF85F /* DSi_Camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEA3631D1A67FEA74AA8E7FD7F106C13 /* DSi_Camera.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CE79A12BA962B94D8FD54AF3753A5EC1 /* CRC_OPT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E8067378630003C20C51DC33BEEE4A23 /* CRC_OPT.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CE7CFE13E013D5F92BBCA6237DF8BDDE /* TxQuantize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DAC1CABF5E26C01147E714C571690DED /* TxQuantize.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CE829A870CDBA08BC4B81E9921108B1C /* NstInpPowerPad.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A6E36C6DD14EC8BBAA6E35BD54655156 /* NstInpPowerPad.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CE85A4CD0E819A4CFE1F5F1FA8365799 /* RSTCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EA9B92D6448E177F0943520E1AC9397 /* RSTCollectionViewCell.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CE9E9B2D76FBA91771542595C6C1C5EF /* OIDScopeUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 2171C49089CA39B5AB9C5AB30B0A2EFF /* OIDScopeUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; CEED0EF783A24A3B5436285DD0930EA9 /* ftsynth.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D3BF3621581C1A5BF06B7FFAF27C8B4 /* ftsynth.h */; settings = {ATTRIBUTES = (Project, ); }; }; CF29EA98F7421419C4A3F6E729EEF4A9 /* Flash.h in Headers */ = {isa = PBXBuildFile; fileRef = F0F5FCF1BD44945529F548266DD7E662 /* Flash.h */; settings = {ATTRIBUTES = (Project, ); }; }; CF3C3A671090E16C712DAB8C3CE82ED5 /* ftlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 24AFD84AB2FD9F2A10CA2637C8A63A31 /* ftlist.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CF6A6A6D26277F49D80FDA35AF40BCB0 /* TeamPolicies.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAE7CC5E61AD10E58132106C64073663 /* TeamPolicies.swift */; }; - CF7F46116F22A3383DCF9C71C1514F36 /* UICollectionViewCell+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 700BA0A030FC6AE568E41A84775CF466 /* UICollectionViewCell+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CF733DA4F22F1F393B47CEFB64EF03A6 /* OIDGrantTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 02B744FC648DAAA73B0AB093F39C55F4 /* OIDGrantTypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; CFD164035CCFDBEFCA8C94873140DE46 /* NstCartridgeUnif.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A0257E87FCF01DF39003A2312BCD089D /* NstCartridgeUnif.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D011FF2552267BCEB8105A533BB22702 /* RSTCellContentChange.m in Sources */ = {isa = PBXBuildFile; fileRef = B618AE98791FBF53D9CCC55B3BD34734 /* RSTCellContentChange.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D0176CC67A63EBE8433A51999998D3C1 /* SDWebImageDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FBEDF35986AA4976C5186CACDC036A7 /* SDWebImageDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D0176CC67A63EBE8433A51999998D3C1 /* SDWebImageDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = C2FB3A54994D0E5779790FEC602B7851 /* SDWebImageDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; D03963FA152E587CDF8E8251271A2A47 /* Keyboard.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 99D33724A380CFCCAB5BB70097DF09C6 /* Keyboard.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; D03D59240777C6D768BEDC173E01C8FF /* audio.h in Headers */ = {isa = PBXBuildFile; fileRef = F67867503E6E85C4D3C329D0E290FBF3 /* audio.h */; settings = {ATTRIBUTES = (Project, ); }; }; D042A99B0732CD2403CD4B9B9E171E37 /* NESEmulatorBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = A01927D51792C610278C84EC6FC937AC /* NESEmulatorBridge.swift */; }; D045F5A0AB5F57268EBC246669FF74C5 /* TxQuantize.h in Headers */ = {isa = PBXBuildFile; fileRef = 930CCA4FC5D2409FCFFDC96F0C252042 /* TxQuantize.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D057C475EEF51E4601E9A76BC191AA2D /* GameControllerInputMappingProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8322B6BD024082677D1071F4527DD77F /* GameControllerInputMappingProtocol.swift */; }; - D0BCFE1011DB09F0D55A0252F40D21AC /* Delta.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFE241438C0AB57A428B27B443B2AC03 /* Delta.swift */; }; + D0B40F40B5CD2C8E0137F5AF93EBE290 /* CheatProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A4475D925ACB241668382B38C370988 /* CheatProtocol.swift */; }; D0DF2DC2FD93256F49A0084D55CEEF4C /* NstBoardMmc4.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1AB76FD695A8F85C4F2D14CDD05A7647 /* NstBoardMmc4.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D0F3B50F4C6B120305C7671144A3A99F /* RSTCellContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A8FBC512A3FA5C62FC2321EE56635BD /* RSTCellContentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; D10B8BC1F3E3CED7395902257A9611AC /* ARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BA80EA6F6F0EB270D91647C7792AF73D /* ARM.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; D122AE9661B5C72F28248B8D0F657BC7 /* exprNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EC4DA03D57871D39A99EA01B272D4B9 /* exprNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D12F50913671ABA02E063D4BC1A8480B /* Auth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10640380C87A1BC9B04007C2A3C1F529 /* Auth.swift */; }; D1385DFCFF524932808CA99EDCD85424 /* SndOut.h in Headers */ = {isa = PBXBuildFile; fileRef = 194DF7309682A9D246CD7A2499E62054 /* SndOut.h */; settings = {ATTRIBUTES = (Project, ); }; }; D16504DC71264C0EF0C584C8846C497C /* DSi_I2C.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0099BB4D934D97A53DFEC8FEFE075B /* DSi_I2C.h */; settings = {ATTRIBUTES = (Project, ); }; }; D16C9572BBB6F00FE6CEDF3A3F3299A6 /* NstBoardSunsoft.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5589D5317C601AB7C713910F472E12CE /* NstBoardSunsoft.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D17B9BECDE71AC45ED3BE75A449E4A90 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48A7DBA86C0D8564FAED27D377B220EC /* SessionDelegate.swift */; }; + D17B9BECDE71AC45ED3BE75A449E4A90 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9612CD637B3DA6278C0EAD9206004F6F /* SessionDelegate.swift */; }; D1927176060A83BD97889355DD017BC2 /* Color.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 53E70D960C0611443A19CD7A1BDD1E9A /* Color.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; D19CA538FC9B240215B1FD7637A45C80 /* PostProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 887AE07CF0CEFFC19FAF012107E9B4DF /* PostProcessor.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D1BD6200ACA4A2696D1BBD883ACCFB87 /* DropboxTeamClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9F113CDF0897B7162BDC16B4BEEA31 /* DropboxTeamClient.swift */; }; + D1B8B7A2280E887B04EABFFBA993BE4C /* RSTLoadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B5E807740F0EF017C700ADF434C98BD3 /* RSTLoadOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; D1C32B79E7556F47B7C8237369FF3505 /* GBCEmulatorBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = B8A535289EAECB26714F6A1402BDA857 /* GBCEmulatorBridge.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; D1F005A785C937D8E7AFF2D8BFFC04E8 /* GBCTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = A5E4C30525CD8F9FD05E4103946E0914 /* GBCTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D214D63D76701CCE4803A13D9D067C0F /* StoneBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73C973D6C8F68D6041F1D72D7FDFBAA9 /* StoneBase.swift */; }; D227AD96CE87FD2EB77BCD191609E3AC /* NstCrc32.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D08C9A9252EAEDB301C73E7C0496EF63 /* NstCrc32.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; D22D780A0A477D73349725BBD9ED545B /* NstVsSystem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4A1BEB2BDB6B3210EA1E277365276D59 /* NstVsSystem.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D2574B88045C86AD2A82768A1EDE875F /* RSTBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C080DAA189113F34158A00AA1827ACE7 /* RSTBlockOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; D29CC9297F47007E6EA95D5934165BEC /* svsfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = A5A53ECD7E18331B77906E25C2167786 /* svsfnt.h */; settings = {ATTRIBUTES = (Project, ); }; }; D2AB544407CCD947AEC9FE0A42BD6A94 /* m64p_plugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FA0DFEF3BD031E4B756DA084DF77A84 /* m64p_plugin.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D2B0977061CC941C8332CFC7B114D507 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798D5972AD9FFEB025B0DC380ACFC440 /* Result.swift */; }; - D2C593DE7972E6DDCCD0AB051DFCC17F /* UIScreen+ControllerSkin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 266ED18C08BE308BE761E84DB71257BD /* UIScreen+ControllerSkin.swift */; }; - D37F51495463271450C3BC61DDE364CF /* RingBuffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CA04051997329FA2754F806359AA369 /* RingBuffer.swift */; }; - D39289DF13FC9A927A31A670FEAB1E6F /* DeltaTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B4B66C3F7AFFDFBD7BCFD2880FC8411 /* DeltaTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D2B0977061CC941C8332CFC7B114D507 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEA4493E0BDCF56D183CFC94CFF936ED /* Result.swift */; }; D3A8AB0190733730C33F5BB7E4CA331C /* NstInpPachinko.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0F35DDDB6786F90A32DA6F7EAE36B032 /* NstInpPachinko.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D3BA9075ABD08EBF7DE5114A4C57BA72 /* UITableView+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DF3FF9A69DD247D049DE7DC0007C940 /* UITableView+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; D3D3F779A64129565401E26652CFA0C5 /* TxTexCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE62E0A0B61F051910B38B004280A0D /* TxTexCache.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D3FBE94E3A974F586F9955337DEFD972 /* DeltaTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 23322BAA6BC48277E409BCCB4717F470 /* DeltaTypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D3FC93C68B0782DDDAC84BB31DE85B9F /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = E0C78CF3BBD7FAE4DF182AF1C994DD89 /* Standard.deltamapping */; }; D40442328638A1ABEAEA5533C72D4A6D /* biopak.c in Sources */ = {isa = PBXBuildFile; fileRef = 20F7CC12E61013DB22708450AE2BF27B /* biopak.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; D407F246DE6CCDB2477ACF3302500F72 /* m64p_vidext.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FC77100447CAFFFFB6F4AF0B2D187DE /* m64p_vidext.h */; settings = {ATTRIBUTES = (Project, ); }; }; D42591EA5B119243C8F69C20D853598A /* BreakpointStructures.h in Headers */ = {isa = PBXBuildFile; fileRef = 61C2FFE97E3943098D12F4573B41E69E /* BreakpointStructures.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D42A4A68244158741379695CE6C0F188 /* OIDTokenResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 75DBA6DC94189A4B6AD397C7256C9706 /* OIDTokenResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; D44B90A52C2A7C56EDDA617913B48A45 /* NstBoardJyCompany.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B29C1972C13EDC9F6DA00EC69351FC40 /* NstBoardJyCompany.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D44F830424DBCAE3FE3E7C835037B4D5 /* NSLayoutConstraint+Edges.h in Headers */ = {isa = PBXBuildFile; fileRef = AEF3A696869078C864E1963F2F7D12BD /* NSLayoutConstraint+Edges.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D472519DC7987B2A305E8489104F2E35 /* GTMAppAuthFetcherAuthorization.m in Sources */ = {isa = PBXBuildFile; fileRef = 83F6EB025694406CDB495B1EEF28370D /* GTMAppAuthFetcherAuthorization.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; D48818E47B590985586B6836E47D5D2E /* SyncCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A959D02F6935A939FFC2709380B318D /* SyncCoordinator.swift */; }; D48A9D81633B41243E369A033A340C2F /* wst.h in Headers */ = {isa = PBXBuildFile; fileRef = C833FB0585E6763E62B2626B7775EDC2 /* wst.h */; settings = {ATTRIBUTES = (Project, ); }; }; D4960B9F2D62C0DA4A5E1CE4128DCE05 /* F3DBETA.h in Headers */ = {isa = PBXBuildFile; fileRef = F2A86914FF9C66F460C255FE9FABBEC8 /* F3DBETA.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1540,100 +1587,110 @@ D4C835DBBFFF24894884900A2117A216 /* saves.h in Headers */ = {isa = PBXBuildFile; fileRef = A4CF7FC6F159595512140F9E888B3518 /* saves.h */; settings = {ATTRIBUTES = (Project, ); }; }; D4E348B3BF3AA1C09A9952A42A9838EA /* NstBoardHenggedianzi.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F030D5A2ACDFE755FF9CE1388B16AEB0 /* NstBoardHenggedianzi.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; D50BFC0109EF6E5B680609FA2CC27688 /* Music.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 716BF6C8E6DDDF89F269D9F9813DF54F /* Music.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D520E322325CE7788FCC41DC165EEF09 /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70B04C9F57267E03F1342083D92F72DD /* AFError.swift */; }; - D539E38458E7B917933FFBF47FF39622 /* CharacterSet+Hexadecimals.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F2BD453817B0EC3B09CC7CAFACF62C /* CharacterSet+Hexadecimals.swift */; }; + D51705AF9ED6867D34204F8EEE829D01 /* NSString+Localization.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CFFFA1D5341196B3D469781675F7F87 /* NSString+Localization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D520E322325CE7788FCC41DC165EEF09 /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B18D6742D05639138DD820DF9F2993 /* AFError.swift */; }; D55D2EEBDDF533427670ECA70D6C4073 /* L3DEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DCEC04246449B87DF6B75881B0B83BA /* L3DEX2.h */; settings = {ATTRIBUTES = (Project, ); }; }; D569B7ADD2B7C6B94497985909299359 /* alist_nead.c in Sources */ = {isa = PBXBuildFile; fileRef = A7178A506EAC86F8122E430FA7FD88B6 /* alist_nead.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D579F6A35B77F4DE66E2B0E62282C9A9 /* RSTCellContentChangeOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 729BF0CDF2F194945E181AE490D95F4D /* RSTCellContentChangeOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; D5F11E7158AA85B4D41C705233BEB9FE /* cp15.h in Headers */ = {isa = PBXBuildFile; fileRef = F05898980CB64668C5F783AC03E3AAED /* cp15.h */; settings = {ATTRIBUTES = (Project, ); }; }; D60529DE6560CB69891FC2D9540F42A0 /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6AAA864C0F0640170A495DCA2EEC4AE3 /* Config.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; D64EB1A1DAB672E0A2F44B8C895E54DC /* NES.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46D40B2D96145762667E9278A3644BC8 /* NES.swift */; }; - D6DA26ECD3E5480DE7603BA657C237DB /* Setter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39D6AD262133DC7EC88CCFC7215A97F /* Setter.swift */; }; + D6DA26ECD3E5480DE7603BA657C237DB /* Setter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A6AEB2D3D215815256A7B0AFA6FE0B2 /* Setter.swift */; }; D6E3B6785FEB890BC5F5DB58A53D9E0D /* PluginAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B730FDD71B3F180AF4FF2879E85E0B /* PluginAPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; D6E48EA66642BAA3C658D4764BB4D750 /* NstBoardBmc20in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 09593CAF86F019BF1E266337BACBB3E2 /* NstBoardBmc20in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; D6EEF34BC6C0552BCDC3612F67E08128 /* list.h in Headers */ = {isa = PBXBuildFile; fileRef = EBA199A50EE869E685DF78433F29C2A3 /* list.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D70E41A4B705F6E7D4CEF9560371D15B /* NSBundle+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = DFF3F3ED2DD3379D1F7BD0F3059BA64F /* NSBundle+Extensions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D71ABB08B6374DFDFAC0CEF86439AD80 /* BaseTeam.swift in Sources */ = {isa = PBXBuildFile; fileRef = 773A83F92D5093E6969EB0653A60C803 /* BaseTeam.swift */; }; D75DD271F0720286CA1752333223514B /* pure_interp.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E048CA236FFF78A2B866CA79D9255B1 /* pure_interp.h */; settings = {ATTRIBUTES = (Project, ); }; }; D7690E9C48AD553615A4E3BCCD09EA7D /* cached_interp.h in Headers */ = {isa = PBXBuildFile; fileRef = 79096D906F7AF34756EE89FD73D49F70 /* cached_interp.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D7A22BFE7446A39607C81829A30BFB82 /* OIDExternalUserAgentIOSCustomBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = FF22AFB4BDFC6DC8E55CF0D73F4177BD /* OIDExternalUserAgentIOSCustomBrowser.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D7F6F49227260D9300C739725DE03F68 /* Roxas-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C294380A302333A15E6E9C07DBB5B94 /* Roxas-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D809EC26DDCA053E38ED4FE352AE4D3D /* CheatFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 675E8B0AFDC80A9C1970C7FDCD10849C /* CheatFormat.swift */; }; D81548180C2DF5EBC814B6092F24A712 /* GBCCheat.m in Sources */ = {isa = PBXBuildFile; fileRef = 95D5F9A9715A3F046F5369384B6B728D /* GBCCheat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D828319E2F56815B0E6D6639DF63504F /* RSTPersistentContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DFCB8854AACC5E9396E6BAD6E022BC0 /* RSTPersistentContainer.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; D82F6BA0D43AC8E60BC2D0F04D521480 /* vidext.h in Headers */ = {isa = PBXBuildFile; fileRef = 36D5303C814B207B5D7C9751CDC3F79E /* vidext.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D85C671747E01B67306C664008BE2E80 /* EmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 046951C873E03E7C1CE25C16E73169A7 /* EmulatorCore.swift */; }; + D866C834A2A04F9C6B90BF4C67D01F1B /* DBChunkInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 94351FE079C92D1D15F1C924B9B17E49 /* DBChunkInputStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; D8774078179692E108CDAFBD6B8FCC29 /* ftstroke.h in Headers */ = {isa = PBXBuildFile; fileRef = E7EAE72B3B5A196AA54181C497248EA6 /* ftstroke.h */; settings = {ATTRIBUTES = (Project, ); }; }; D8BA4E95CCD1DCDD6FA02D251DE8C8A7 /* GBAcpu.h in Headers */ = {isa = PBXBuildFile; fileRef = 090FCC05017DE4C785A3A0842C353651 /* GBAcpu.h */; settings = {ATTRIBUTES = (Project, ); }; }; D8C15B1944E9D1997529FBBECFCD643C /* opengl_TextureManipulationObjectFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1F6EA5860DA0376325BD9692907C87EF /* opengl_TextureManipulationObjectFactory.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; D8C83B7CECD321DE4F3520C6CAE5D09C /* ConflictRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BA610A36DFB874B62001DEE0934C8EE /* ConflictRecordOperation.swift */; }; D8DF67B614B73C42089123DF9ECCF432 /* SoundSource.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0F4534A20DE8F8809FD5A2FAB80E52C1 /* SoundSource.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + D8FBAB58BC7B04615A9C9E4947E1E306 /* RSTSeparatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FA4BA7F6A5656E0A2EB653423B78908 /* RSTSeparatorView.h */; settings = {ATTRIBUTES = (Project, ); }; }; D9679CC9062CD1EED3FC987E28F6D0BD /* NstBoardSunsoft2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D68AC04EF686D1D8C703E6B1271190CA /* NstBoardSunsoft2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; D9AC90D70E6CBD73218551F2A50595AA /* ftpic.h in Headers */ = {isa = PBXBuildFile; fileRef = 88FE924EEA57077840C906AA3C1ABA58 /* ftpic.h */; settings = {ATTRIBUTES = (Project, ); }; }; D9BDEC07CBF7B3649A84325EDEFF6E3F /* NstBoardDiscrete.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5653340B84C9435A83DA0F9E5FA95602 /* NstBoardDiscrete.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D9E6A0F259BF88A8D921C03AD7E5542B /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E2085B3FF507E08C3040D7E3D3C295B /* Expression.swift */; }; + D9E6A0F259BF88A8D921C03AD7E5542B /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C3FE2E20CFC9B988170243D56ACE9B /* Expression.swift */; }; D9E934284A4CA8B89BAD481317C9AE18 /* osal_files_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9DDA821A26BD45721808E06A0C0E747D /* osal_files_ios.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; DA0314CA8D401BD02F1E14E4E3630D5C /* missing.h in Headers */ = {isa = PBXBuildFile; fileRef = 1297B20DFF4473E5F547712B85C19A4C /* missing.h */; settings = {ATTRIBUTES = (Project, ); }; }; DA08869D49B2BA2428E2BA95CF8E0F71 /* spc7110emu.h in Headers */ = {isa = PBXBuildFile; fileRef = BDA41F3836670134A2A129F2BB8D3D28 /* spc7110emu.h */; settings = {ATTRIBUTES = (Project, ); }; }; DA5FB8762825530A0794591BFC28F42D /* NstBoardBmcFk23c.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 218362C970E305172BDC33EC29EE5E9A /* NstBoardBmcFk23c.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; DAC44210887ABB048895242D099861A2 /* DSDeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B42015FFD3313AC17C168139F10E0C87 /* DSDeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DB11139CD9B9C6D7CF537ABAD258D545 /* ContactsRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 124410B31A9E378F93FDB8A1B6FA19A2 /* ContactsRoutes.swift */; }; DB38CC3B5FCD83618CF7FA28BB02B98A /* NstVideoFilterNtsc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E83F0187AB03EB91B5855B0437FE7E09 /* NstVideoFilterNtsc.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; DB3EA388CCC200C1A1F4B374D0EA2536 /* counterdef.h in Headers */ = {isa = PBXBuildFile; fileRef = E40DF036AF5317A3ED60CE4AF950DD05 /* counterdef.h */; settings = {ATTRIBUTES = (Project, ); }; }; DB47F6853EB382430B44DF4397330737 /* opengl_BufferedDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 355D2540961430E0C98856423F2B9105 /* opengl_BufferedDrawer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; DB6DEBB266FE527175EF835376BADBD8 /* NstBoardKonamiVrc2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 31BCBFB69FB443934A9AD7F10F0B4FFE /* NstBoardKonamiVrc2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DB7B5A0CD362D5CF07FCD9F08C288027 /* GTMDebugThreadValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = D21720F624B8F46DC74D6175670521F8 /* GTMDebugThreadValidation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DB89B219614E471ECBD9AB5F0FA326C2 /* GoogleToolboxForMac-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EF06F8F27ABEC737DD25CCD173676AF /* GoogleToolboxForMac-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; DB9A9DAD158DB8AA7ECC8C48D7BC9A66 /* F3DEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = 64223FA97C874ECB3B3A21028EC6BC31 /* F3DEX2.h */; settings = {ATTRIBUTES = (Project, ); }; }; DBAE7A8FCFB4C2989B2FD3DD0C9000A4 /* Harmony-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DFD3DF8A4FFFE391CADAE464B86DEFD9 /* Harmony-dummy.m */; }; DBBB3448788534CB2BB1227057068558 /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = 05F3C29A1F7007590F21D1381BF87758 /* pngwio.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + DC09532F9274DC2668C6911B36FE253E /* GameControllerInputMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD97A21427274EAEC21DDEDFF49C63DC /* GameControllerInputMapping.swift */; }; DC33C02575D8CF3334F6A6651F46B14E /* sdl2_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = C92E2E1748A19DE3690F0128F51ADC9A /* sdl2_compat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DC33DC0D0AE8F8CB4CCDE2B9C917E8E7 /* RSTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 77F19454FB70DAEC91C67992D0B05BF6 /* RSTError.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; DC5290DA668652E325239F218E345F8B /* NstBoardBmcY2k64in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 41978828D2793918B679572A560230F3 /* NstBoardBmcY2k64in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; DC5A5B90149D2F4AC59E8F45A69562D9 /* Performance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A41E4739936A62A261C531FADCFFFA5C /* Performance.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DC796B1B17BA008A905B492BF356E5C5 /* Roxas.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B65D5D12DEE0E289101FC3FE85D5043 /* Roxas.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DC71CF3F5B6B19843B67F5B5D38CA529 /* OIDScopes.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A378A207EC720321C61582DA42E2EA9 /* OIDScopes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; DCA0FA77663D18238DFC04339B4C184B /* NstBoardTxcPoliceman.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 71D8C40123C88444BCE6C982C12B9658 /* NstBoardTxcPoliceman.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; DCAAAFF280B9BD4C5BBDEC3F18D1935D /* ZSortBOSS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D388FB87279722FB905D7493EE8F038 /* ZSortBOSS.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DCB42ABD746A6D3C5BB66D168DFAF488 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 288F0A8E1830BC9A6DEE1E4E0D082A8D /* SDImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DCB42ABD746A6D3C5BB66D168DFAF488 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AC5187E0261B892EF34E7BCDAC7DE4 /* SDImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; DCB519042760CF10741AC0863F70DD70 /* video_capture_backend.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F9F0BEAE112AEDCAE3217A95BD6DBB1 /* video_capture_backend.h */; settings = {ATTRIBUTES = (Project, ); }; }; DCEA8BBA57B062EC11BC3D08B9647F0A /* DSi_NWifi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 359D895662DCB862D4CE17B9000DAA24 /* DSi_NWifi.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; DD391AA811917A0942680FB80BC61922 /* S2DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DE3115B6E2DC11A1F81FAECB18D25506 /* S2DEX2.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DD4C7A606690D29733F4794399503AE3 /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A0A83DB759E9397D1C0559D05F620AF /* ParameterEncoding.swift */; }; + DD4C7A606690D29733F4794399503AE3 /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EE3E4513ED692C55CF9A08AD54FB349 /* ParameterEncoding.swift */; }; DD7EB2780B435D49CAF5131404404EB7 /* GBAGfx.h in Headers */ = {isa = PBXBuildFile; fileRef = F6B1B4FEAA61105F3C2B48ED15FC84B0 /* GBAGfx.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DDAB3F80FC6467314439BC89B041B61E /* RSTToastView.m in Sources */ = {isa = PBXBuildFile; fileRef = 722140CCA61511949B1060C8B4BAD6D0 /* RSTToastView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; DDC10EB07029BA4818093802B1A972E8 /* ftbbox.h in Headers */ = {isa = PBXBuildFile; fileRef = 741D80A77CF94D1A62975E95320C1C4E /* ftbbox.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DDF3FC93F9A6F20EF9AF2DEAB65B4EC5 /* RSTCollectionViewGridLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 0455CBEF7CB3708C7FFE7E36A032FEDD /* RSTCollectionViewGridLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DE291BEC0E5740FC33219DEA9F429E87 /* GTMReadMonitorInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 59C44C67A8DEA91172EE5DA16AF31EC4 /* GTMReadMonitorInputStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; DE5F56A14FDFC094D758D92A0D3FC332 /* scmrev.h in Headers */ = {isa = PBXBuildFile; fileRef = DBDF1F1562FB4035D9C7758E467FC2B3 /* scmrev.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DE66826524E0FAEE0E07AEF88A209D0A /* OIDURLQueryComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C9F6290BF7A0B03D0F0EB6E48540272 /* OIDURLQueryComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DE69C710239E652AFCD9CB91569EEF02 /* RSTOperation_Subclasses.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CAE986A70F08EBFB10A2ACE57CC759C /* RSTOperation_Subclasses.h */; settings = {ATTRIBUTES = (Project, ); }; }; DE7ED203C8BDD8D10DD1AD546B2AEEC6 /* NSManagedObject+Conveniences.swift in Sources */ = {isa = PBXBuildFile; fileRef = C55FAEAE78442FE223B896686DB18E47 /* NSManagedObject+Conveniences.swift */; }; - DE91130C61E9D53345DE6B9D41B6C334 /* BitmapProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5169DDA0ADF74F8586CB590F9DB33AB1 /* BitmapProcessor.swift */; }; DEB2238EE51D8CE283CF77830FDDA175 /* NstBoardBtlMarioBaby.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B31CEC23EF7DA46F1B8C7D4CB970ECBF /* NstBoardBtlMarioBaby.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DEE00276822742129799062965992F5A /* GLideN64.ini in Resources */ = {isa = PBXBuildFile; fileRef = 171F9A5206DE0CC67CF12102162639DC /* GLideN64.ini */; }; + DEE60CE25F0BA06ADFC980F21212C96D /* GameControllerInputMappingProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8322B6BD024082677D1071F4527DD77F /* GameControllerInputMappingProtocol.swift */; }; DF29CA4DC5D8ADB6E61584685D937384 /* Harmony.h in Headers */ = {isa = PBXBuildFile; fileRef = A16E9848A6E46DF4C5435CE1F1F822B2 /* Harmony.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF32EB09AF5716F5D28EA401191B9698 /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = D01B5BDC517C52E34E8E81885DDA7BC9 /* SDWebImageCompat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DF77F2A0A64103C43A32B6E88D8BC01B /* GTMSessionFetcherLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = B1FE60123D84FA8B290B36D0DA6860F0 /* GTMSessionFetcherLogging.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DF7CEBBC5645AA8BE2892E7966AFBF20 /* SaveState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3F65071A7622D8B6598228B03F51F4D /* SaveState.swift */; }; + DF32EB09AF5716F5D28EA401191B9698 /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 323AE1414C1C0B5D81EADD8808095682 /* SDWebImageCompat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; DFE54DACEBD4B3757194FD6444C86B89 /* ThreadImpl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D60828FEC5AAC1583A8F51DE9C0C7F54 /* ThreadImpl.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; E033E31BA13EEA89F4DD7BBFCEADAAB0 /* NstBoardRumbleStation.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7D2B4AA231F78E750267C346C531145E /* NstBoardRumbleStation.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E04C4B20B14B29E89862820789418DDC /* VideoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 104E9C84E010B1DB40F30B8A6D71F370 /* VideoManager.swift */; }; E0668EA9127E65FBC9BA37F1CC9CC27E /* osal_files.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D610FCE6D7E3AF6DEBF89BCBC88CC02 /* osal_files.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E06ABEF44E360CEEBECFC8A372C16CE0 /* vba-over.ini in Resources */ = {isa = PBXBuildFile; fileRef = 516EB9A951C201FC2386D95A5740FD05 /* vba-over.ini */; }; + E06C07AC3C311F7FC6F8A8D6C5FF3FB5 /* RSTCellContentDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 589560AD66B49028107CCD31E8FE2B8B /* RSTCellContentDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; E0A5A9CBBDB8275DCFAD835B6D4E4AEB /* GBATypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 25D7615688AA86FED1AC4BB20B4DDA61 /* GBATypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; E0C7B02E0794C37C3B0474D08A171DF4 /* NSPersistentStore+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BAA9FFA63CBF1E7F10FDC637ABD3F6B /* NSPersistentStore+Configuration.swift */; }; E0F9A84B4248F7E5365722CB3374B30F /* rumblepak.h in Headers */ = {isa = PBXBuildFile; fileRef = B9BD4DA28886376C2E7481B62044CEAE /* rumblepak.h */; settings = {ATTRIBUTES = (Project, ); }; }; E105C6EF7FFFBDBC56A0858F5F5044C1 /* NstBoardMmc3.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 26646A28E9ED441AB97D854E6673E8A6 /* NstBoardMmc3.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; E14EF0F9CC8432791A33CDA29691E656 /* m64p_types.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DE05F26BE4D2578EF065C4C5AD60FC8 /* m64p_types.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E15BE0D8C9C3A6785FAE5E6E89B90D07 /* FilesRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5457E37E216501C206E67EB911707FF /* FilesRoutes.swift */; }; E1B8F3117E84A93173D84B2FB6C5721C /* NstBoardKonamiVrc6.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 95EFB88BC92F537DB780AE0EA86B3203 /* NstBoardKonamiVrc6.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + E1C1183E9D20804713EA2922704220D4 /* Data+Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55F78D9EBA7E2C91652EB7AA51EBE3A8 /* Data+Compression.swift */; }; E1DBF843AF3DF47466789516392B0CD3 /* usec.h in Headers */ = {isa = PBXBuildFile; fileRef = 676D937BEE4FDF32EC269E9269F058C9 /* usec.h */; settings = {ATTRIBUTES = (Project, ); }; }; E1E5329125EBFCC1C642BFBF5A3BDBA1 /* gfx3d.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A261213E2B25A44E14082D132F7522C /* gfx3d.h */; settings = {ATTRIBUTES = (Project, ); }; }; E1E8D7DF8C4174495EFB59964A31DB53 /* NstBoardUnlCc21.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0F2CA0906100AC0704069571719461AF /* NstBoardUnlCc21.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + E1FE8151E44B6536F24437390E6D5F30 /* FileRequests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C25E327F525D1D268FEEFC92373551D /* FileRequests.swift */; }; + E2114A26364CE82D19486C3AEFFA51C5 /* OIDRegistrationRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 92B2487D9743E608B2F99678B7003B4E /* OIDRegistrationRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E220E1FBF3D8FEEDBD488CE7BAD43936 /* ThumbstickInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 186A8A256C8617314B0C613AEF8628A8 /* ThumbstickInputView.swift */; }; E2298E8D86AD187913EAB237E8DB41CC /* NstInpDevice.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 17181ED2D304D8A94535FE3C58B4C56A /* NstInpDevice.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; E2B6F6DCD8B7D28FF44950550297BB40 /* ftglyph.h in Headers */ = {isa = PBXBuildFile; fileRef = D10C4B664B0D6E9E7A1E16276357E6AB /* ftglyph.h */; settings = {ATTRIBUTES = (Project, ); }; }; E2DB625B1C65125AEB25430CAF2744EE /* MelonDSTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 29515613E23B7BFB6F0C110FF8378E8E /* MelonDSTypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E2DBFE64A210D9EE1E1BE248AD5DB63E /* GTMSessionFetcher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A960DE0A973CA5A4D413E15076178C57 /* GTMSessionFetcher-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; E3347EB4758BE48A44B40F76F0ABB5D1 /* NstApiUser.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DD108C176BAA6B4AFC3B7EA738A0A8EF /* NstApiUser.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; E335B7B44A250042E80CB32AF0151F62 /* ARMJIT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28573BCA4548E16254CA8EE96B3D39B2 /* ARMJIT.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E3465ED475E7A023B07AD0B7D602B217 /* RSTRelationshipPreservingMergePolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B6845564D5CCCEE5193E41148287014 /* RSTRelationshipPreservingMergePolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; E35385E26FD8721078F013624AAA5E5C /* zip.h in Headers */ = {isa = PBXBuildFile; fileRef = 78D67D81F7F536854B214522F25EF65A /* zip.h */; settings = {ATTRIBUTES = (Project, ); }; }; E396CBAEAD7128CCC203DAA3E962D6D8 /* ftmodule.h in Headers */ = {isa = PBXBuildFile; fileRef = 49686D6DC64792B2244933701BBFCECA /* ftmodule.h */; settings = {ATTRIBUTES = (Project, ); }; }; E3AEDA58F4D0C0BD7F203947626DE7D0 /* Log_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0CAD629C78F4E51B87B6EFB4DCC01E05 /* Log_ios.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; E3C97C8CA1AB5CDE6D1F246ACB16151F /* NstBoardNxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0409B2DFBB15F5B0BC181C680F5CEE57 /* NstBoardNxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E3D806DCB0941DA9328A7376123C1FE0 /* RSTTintedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 088611513957299C0F064C9A772DA2BA /* RSTTintedImageView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E3D32B2A3D7E64FBFD9B523C79E7FA31 /* DeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D3700E443B0C590B19D2400939E6ADD3 /* DeltaCore-dummy.m */; }; E3DE6A457A9654D6FB5986019E6A46AF /* lua-engine.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AAF5A370221319ED336FD38BFB973A3 /* lua-engine.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E4016329D69FF508E81322939E947CDE /* GoogleAPIClientForREST-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 268A80FCD8A58CFE6C097469D5AF1C00 /* GoogleAPIClientForREST-dummy.m */; }; + E4016329D69FF508E81322939E947CDE /* GoogleAPIClientForREST-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D7A1BA4EEE3E57C803738BDA3D5E308 /* GoogleAPIClientForREST-dummy.m */; }; E41468F7B5F4698DD5B41B7436D6967C /* CommonAPIImpl_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26ACDD74537A9B88E74C1CF1FB3A5D2C /* CommonAPIImpl_common.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E43287A65A84A8B79DEF1343DBD7571A /* StoneSerializers.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAF493714512E4455A1C5612FDA9AFBB /* StoneSerializers.swift */; }; E4449EB6050573E0A2670FBBD9C0861F /* winlnxdefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB109D8EAF10C56E1B3A5EA385A22B0 /* winlnxdefs.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E46B6E43167692715997A0063F4FD5A0 /* StoneSerializers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79488326ACD741DA78E6F8BFDA889395 /* StoneSerializers.swift */; }; - E4942F9F78DEDBA2293646101599AB07 /* RSTCellContentPrefetchingDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = D281516BEAC3D67B16886D5733929B44 /* RSTCellContentPrefetchingDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; E4AE151A4B124F23C4906A24431832A3 /* Parameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A38C1E36D3663B274B3678F5A0CB9CE /* Parameters.h */; settings = {ATTRIBUTES = (Project, ); }; }; E4F261276E9BE30D823F625C4311FDA8 /* SoundFileReader.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 90B5B6D25886498F82E67ED2C2974FB6 /* SoundFileReader.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; E4F6C651232FBD19521548AD4CC1C14B /* ftmoderr.h in Headers */ = {isa = PBXBuildFile; fileRef = C285F91AC1ABFD39E8D04C2480BD194F /* ftmoderr.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1643,16 +1700,18 @@ E54D91B26363B98ECDD77D9D6E00A1AF /* MelonDSDeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0248915F3E65215D001A7F3F3F07EAE4 /* MelonDSDeltaCore-dummy.m */; }; E56A26E26A57695ED809BC9A3FEB8A6F /* NstBoardNihon.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 91C1D15A9C93BFC2017C671E77726FCF /* NstBoardNihon.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; E56D537E78664B7686E214AD10C8033F /* NstBoardWaixingSh2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C3D6F6B13F9013F63F5A2EAF9F8DCBB6 /* NstBoardWaixingSh2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + E573FEEB4E80F970D6BF7ABED6B8F539 /* MFiGameController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23C08E2D90F88A855F59186739545F82 /* MFiGameController.swift */; }; E5E4270ECAD590590A7E8FFF59E43605 /* N64EmulatorBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C43172CB210B7F49EBC3401D86153F /* N64EmulatorBridge.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; E62F63E0249D27A94722291AEB2CEAC5 /* Sound.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 86D8A5EB56D2B72C1973874D422CD16C /* Sound.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + E641CB63BB5D8566EB330133AFCB9BA2 /* ExternalGameControllerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9DBB5B63025C19E83C9451107DE56A1 /* ExternalGameControllerManager.swift */; }; E641FD1B0F72E40013A35C3D2110B8B3 /* S2DEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = 83AF443222FD006C987B73C4B7720ADD /* S2DEX2.h */; settings = {ATTRIBUTES = (Project, ); }; }; E66D50DE579C45661DFB274FD67B2154 /* NstBoardOpenCorp.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8C7FF379DA01990AD6AF85CC74DCEE8A /* NstBoardOpenCorp.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; E66E140C17BD2110139CEEF150CF4180 /* gdbstub.h in Headers */ = {isa = PBXBuildFile; fileRef = 383303B1D603BDA417B2A5F924044053 /* gdbstub.h */; settings = {ATTRIBUTES = (Project, ); }; }; E6D61CADD6A5C059931C0DA27C8675E4 /* SNESTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 608439DF02BFE25E295C6EFBD20644A1 /* SNESTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; E789F730E95E4CF0E8787030301C51C8 /* dummy_audio.h in Headers */ = {isa = PBXBuildFile; fileRef = 98679983FCBE7D77A34F05B9E9B007E6 /* dummy_audio.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E790FB7C2B25DA4C665808BBAE955853 /* DropboxTeamClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBE3523E6D83A42F45B0052F6D4F6F2D /* DropboxTeamClient.swift */; }; E7A40C157495F42EA0A1E07A1F5575DA /* TcpListener.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2128629C2E748025D3FB6470F39C3F8C /* TcpListener.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E7BAD58DE1C59A3242FA699CE57D8E92 /* VideoFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2847D38189084A48043661E02AE5E3D /* VideoFormat.swift */; }; - E7F05E4549F57639ADE69789DAAA88C7 /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 187CA309F162A5C8E844D881DBC4B533 /* SDWebImage-dummy.m */; }; + E7F05E4549F57639ADE69789DAAA88C7 /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8566CDD1FB53D255D5D3A25258C806A7 /* SDWebImage-dummy.m */; }; E806E45AFE7C3645E34D8550A60E75A8 /* Utf.inl in Headers */ = {isa = PBXBuildFile; fileRef = C858F6B7C21B35E28BD8E19BAD707358 /* Utf.inl */; settings = {ATTRIBUTES = (Project, ); }; }; E80A460B2363F705D519774B4050802E /* NstBoardBmcSuperGun20in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8202AEA51A9BDEA50A02BCD308E4CC0F /* NstBoardBmcSuperGun20in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; E813B0A841D21C8D57902AB39C1532D0 /* NstInpOekaKidsTablet.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 208387340E2D80E4A9EC6C73164DCAF2 /* NstInpOekaKidsTablet.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1663,12 +1722,14 @@ E872929FF78AC12C502DF80E79FDE098 /* ConflictRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C54E1DEA371F87A57123E554E9AFA60 /* ConflictRecordsOperation.swift */; }; E88445D41516D1B5A3E628EC3E040A5A /* BPMDetect.h in Headers */ = {isa = PBXBuildFile; fileRef = 43E8E60E56CB19A317F1DD05A4167EEE /* BPMDetect.h */; settings = {ATTRIBUTES = (Project, ); }; }; E884C117E7C25AE55F0BE89ECB4B625A /* NstBoardSunsoft3.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9C1FAD618686D13B2AEBF79B8CB40A2 /* NstBoardSunsoft3.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + E8BDBD91D9E23495943918DD2326BDD0 /* RSTDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B51099C9B2743A734E370EE4A01EE5C9 /* RSTDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E8C89F9ED55450C6CEC170D556E61B3F /* OIDAuthorizationResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A2B008456750489266ED1E1757F116E /* OIDAuthorizationResponse.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; E8CB443BBA12C2CF11926EC31D455F45 /* jpeg.c in Sources */ = {isa = PBXBuildFile; fileRef = 33F72A4F1B550B619BFAABFF9E654173 /* jpeg.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; E8CCD4305086613813CDB2D5462AEEED /* NstBoardMmc1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8549AC19C31B13D32BDAF18AE9132190 /* NstBoardMmc1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; E932A6A4783874F31B53CFE0787C0581 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = E44721DCD5EC81393AB1A2954814DCA1 /* version.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E93A479057E2768185A33551F38077D4 /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87B8D974016F8FF0B7457CF079A700AB /* ServerTrustPolicy.swift */; }; - E948703A3443B2D2D2D8723BE03AC50D /* SwiftyDropbox.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B90429F17069F50CA065D66C7BA9614 /* SwiftyDropbox.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E93A479057E2768185A33551F38077D4 /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6C8649B0ED17391598516AD2135217E /* ServerTrustPolicy.swift */; }; E95AC3962DDB0700F02094C5F26B09CF /* NstBoardBmcGolden190in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0906F4731470C31D026AF417D3565A77 /* NstBoardBmcGolden190in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + E9BC5B2C7BB7DCF038E70097812774E7 /* OIDExternalUserAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A0C0F111C5D027A122A6E4B76B77EB /* OIDExternalUserAgent.h */; settings = {ATTRIBUTES = (Project, ); }; }; E9CB1780157DFE783275E66654270681 /* NstApiInput.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 613E3D02E0FCA1DB2DAAAF575F3B6092 /* NstApiInput.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; E9F6F491EF2950FE17E9AD6651904D97 /* L3DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAD67D1F51514F2A8FD14EE1A3BDB20B /* L3DEX2.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; E9FC3B0D0E3540BBBA611FE7EBB4AD89 /* ColorBufferReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A7C1BFAE179AE0D743ACBFA494428FC /* ColorBufferReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1676,63 +1737,72 @@ EA4A047F75E41DB824267018B4F9A3A9 /* complex.h in Headers */ = {isa = PBXBuildFile; fileRef = 54292260C7F0C11AE47734437FFC763F /* complex.h */; settings = {ATTRIBUTES = (Project, ); }; }; EA9018991B3D1E7F972855D322B8402F /* pngusr.h in Headers */ = {isa = PBXBuildFile; fileRef = 946BB7E7DCE5991C44F1D670DDABFC29 /* pngusr.h */; settings = {ATTRIBUTES = (Project, ); }; }; EAA60BBD1FE1D30F81B8E5F3A5B368BC /* NstBoardVsSystem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2F604792FD5850F6D01682B904D4F54F /* NstBoardVsSystem.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - EAD179E06409B8D6B211DE6EEECCE18A /* FTS4.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2887F0AA90E8BCE5770880C29DE7A352 /* FTS4.swift */; }; + EAB683F7CA0A225FFA7F93C0EB2F9C05 /* CGGeometry+Conveniences.swift in Sources */ = {isa = PBXBuildFile; fileRef = E071D5F4AE0E7711FCA5CCC846C31D03 /* CGGeometry+Conveniences.swift */; }; + EAD179E06409B8D6B211DE6EEECCE18A /* FTS4.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3B384A7E8A4FCAED1BD8FEF95AEE857 /* FTS4.swift */; }; EAD5F0EEDC2C86935624BBC077AED5F6 /* ConfigManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8E69A7A33F1B8CF300B1933EFB3070 /* ConfigManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EAE70B9850606EF3C57E0209F68A3400 /* GTMAppAuth-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CF1D5DE7C168A69862C6EA8564C5C1CE /* GTMAppAuth-dummy.m */; }; EB591E4315B746FBA0C0D0734EEE9298 /* cpuops.h in Headers */ = {isa = PBXBuildFile; fileRef = 0874B8660547C2AF46167531101B0E22 /* cpuops.h */; settings = {ATTRIBUTES = (Project, ); }; }; EB5DF12525D86B4C320EF9E73AC388FD /* NstBoardTaitoX1005.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 06E6ED3761F907C941B3EF6B837BB916 /* NstBoardTaitoX1005.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - EB99E70ECA09AC660E7197169EDC7AF4 /* RSTPlaceholderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 102051CEA6C8229254571DDE0692B129 /* RSTPlaceholderView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EBE5EB8961EB52A0877773AC4CC7FC41 /* AudioRendering.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDCC5902B2B69DCE162F96EA6B47E52B /* AudioRendering.swift */; }; + EBDB37F52F9C59552C2294164562E911 /* OAuthMobile.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C86BB3C7C2C64B7D0492A9FBD2E363 /* OAuthMobile.swift */; }; EBE666213B50E4664037BE93325B029B /* DepthBufferToRDRAM.h in Headers */ = {isa = PBXBuildFile; fileRef = 271E2E56285E890F193D75D7238055D0 /* DepthBufferToRDRAM.h */; settings = {ATTRIBUTES = (Project, ); }; }; EBF6BFD128020D5E02D7FFE5E3C9FDB7 /* plugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 35AE38290CFBB8DCF28A79FC5E0F2D79 /* plugin.h */; settings = {ATTRIBUTES = (Project, ); }; }; EC4F7598C6498E377431E4F5890C53F9 /* FIFOSamplePipe.h in Headers */ = {isa = PBXBuildFile; fileRef = E18BAC1A364476138165E9DAA8E469F8 /* FIFOSamplePipe.h */; settings = {ATTRIBUTES = (Project, ); }; }; EC7E73562900AD369694E78DD3A086A2 /* registers.h in Headers */ = {isa = PBXBuildFile; fileRef = A3861AA996FB10FE608C9E586D90C9F7 /* registers.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ECA23A638F54DBFCD740249C08D8DD55 /* RSTNavigationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D77FFE1795D8F5D3B1ECC1F477F9831 /* RSTNavigationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; ECC57F685A71ADB84B524DFD4B35802A /* L3DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 02DEBBF9FF6D702FBFBE8D12C367A119 /* L3DEX.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - ECCC671BAE599408FCCE9724731E19C4 /* DLTAMuteSwitchMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = 216ACFC72536D5772D02237D7C716E46 /* DLTAMuteSwitchMonitor.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; ECD4161D31505217F505E61F26AA4856 /* af_rtc.h in Headers */ = {isa = PBXBuildFile; fileRef = 63009045A5258EC061C7BDFA58FCA888 /* af_rtc.h */; settings = {ATTRIBUTES = (Project, ); }; }; ED1E125D9B437B94D81EA1BBC901BAE0 /* NstBoardPxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 54A730464A55628A722655074F050412 /* NstBoardPxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; ED26B95CBBBDD55729D406DC306DA2B7 /* SocketSelector.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F25116F1E4A1156B547162477D7FFCA4 /* SocketSelector.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; ED306C34E1E03702D84BBB475EA0D89D /* ServiceOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FAD1B63265F0B9C30F70FA871EB0F98 /* ServiceOperation.swift */; }; - ED4596C6347FD432BD009C5F857C2DE9 /* DeltaCoreProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 491E2794FAED7E9D94AE9DE168F3D0A4 /* DeltaCoreProtocol.swift */; }; ED483949393C2AC6CFE5A772C4327081 /* pnglibconf.h in Headers */ = {isa = PBXBuildFile; fileRef = A52160BD111F9889E80A031A846BAA05 /* pnglibconf.h */; settings = {ATTRIBUTES = (Project, ); }; }; ED9E1F1714C7881F7457330B8EB57F2F /* Log.h in Headers */ = {isa = PBXBuildFile; fileRef = 863405EBF5EF0703221FA48790EA55F8 /* Log.h */; settings = {ATTRIBUTES = (Project, ); }; }; EDAB744BBA4BCE3883336694ACA84DC8 /* writepng.h in Headers */ = {isa = PBXBuildFile; fileRef = C9C923E11C5810643A0781C332F533A8 /* writepng.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EDACE38AA7FE871FEE64F0BB10786EB2 /* OIDURLSessionProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = DC27826173671382807D1965A3D411A3 /* OIDURLSessionProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; EDDABACECEF1B91FC77944FE9DAE995B /* NstBoardBandaiLz93d50.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D136D0103EFC98F76207487A7ABC2F67 /* NstBoardBandaiLz93d50.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + EE1396A5F8CA3A6610AE1E3996883309 /* UISpringTimingParameters+Conveniences.m in Sources */ = {isa = PBXBuildFile; fileRef = F8B187821DFE47A48AFFE8B8496B8C46 /* UISpringTimingParameters+Conveniences.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + EE76AEB8804234E5B3E9ABD84BC310E3 /* Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36B26B4BA4D64E1FC05F98C19F020B9A /* Files.swift */; }; EE8BEA7B964D3396B893AFB51E3C9F58 /* Socket.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5FA94A0E58BBBE2266CA695115221C4A /* Socket.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - EEF2D4B53073F27A5A65700D9A6A0D5A /* Collation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D7F02896E229D7D3C9C8484A39D3F5A /* Collation.swift */; }; - EF171A9DF5A7FD043156A5A175A88657 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = F277C96C222F36E6CCE96F066C0292B9 /* Errors.swift */; }; + EEF1348868D6EE8B085FC3772DA1EABA /* UICollectionViewCell+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = A41248995A9177B9C85BCAF68FD4663A /* UICollectionViewCell+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EEF2D4B53073F27A5A65700D9A6A0D5A /* Collation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237C158F7CC5E577445E86C2492F4FEC /* Collation.swift */; }; + EF171A9DF5A7FD043156A5A175A88657 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4159401DC087CCC701F3A9F3EFDC7A05 /* Errors.swift */; }; EF3DF641AA5ED5CD257B0E657C7569A3 /* NSError+LocalizedFailureDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBB9F0A1BC69481A113A4FD4A1971F08 /* NSError+LocalizedFailureDescription.swift */; }; EF4AE5DF945B34213337F6AAB77A1AF4 /* NstRam.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1B91D408ADBF0A1364B8E859A3DF051E /* NstRam.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; EF5AE48CE9D7BC0F3F93CF4FA6195EAD /* NstInpAdapter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5F3E73B0C28C65A6D5C2D04412B1E3A2 /* NstInpAdapter.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; EF76A1290DA3DE1B0EF87D3370D19B4B /* NstApiTapeRecorder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D2C5FF03705697F80BAC9D24C6CDDAB2 /* NstApiTapeRecorder.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; EF8D87239066573EE797BF0EFBB04736 /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = 6DA856617D2E5895654D405707061C8D /* pngtrans.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + EF942B80E3741A0318698FCAC9C3976F /* ExtensibleEnums.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B34E5D0AA3B5154E76417C4AFD1E7A8 /* ExtensibleEnums.swift */; }; + EFD75D09801AA27EB73C3EB4ADE80C10 /* GLideN64.custom.ini in Resources */ = {isa = PBXBuildFile; fileRef = D9A99AC4564024C83E5D7E12274FEA75 /* GLideN64.custom.ini */; }; F033CA4D5B2140BAA54F3EC3DE06947D /* NDSSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 418408117D755DC58FD35A1AEBE7BD41 /* NDSSystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F0421A7031BE6E308D3FD0FCE8F225A1 /* OIDServiceDiscovery.h in Headers */ = {isa = PBXBuildFile; fileRef = 420B009C10AE0D3BA2E2D208DC4055BC /* OIDServiceDiscovery.h */; settings = {ATTRIBUTES = (Project, ); }; }; F063049B4B7A1CD6B5A9BF0D32386FCC /* FrameBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FCC9F5D5AA2C30DD2A0310B67BF6941 /* FrameBuffer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F0E9D8F13C1491DFF2968EAF368BA95F /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 520D9B2D1F6739C099B2819925297F07 /* SDWebImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F0E9D8F13C1491DFF2968EAF368BA95F /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F9882A9873399959B5A741A7DDAEC02 /* SDWebImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; F0ECD14E643C69A2026E3DDB669C1EE5 /* instruction_attributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 47869A3E08F3C34D3A128ECDB9C276B1 /* instruction_attributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F1490B80F6E2DDF4AC0354F5C2962503 /* RSTBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = B74C7230EB4D0627847A02A9CE1544AE /* RSTBlockOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F0F9CC78D8F1758F81D6FB77418EEF44 /* GTMSessionFetcherService.m in Sources */ = {isa = PBXBuildFile; fileRef = 69F822EB18DC49C603929CDE54E390B2 /* GTMSessionFetcherService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F10F183C24562A17CAAF86FA42D368DF /* GameProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05E756BE049BECB36FD17276742F19FD /* GameProtocol.swift */; }; F1530EEA01F1A7C1E4518B08E637F628 /* ftttdrv.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E2E27F6A574D10C04C2A28A8F7F929B /* ftttdrv.h */; settings = {ATTRIBUTES = (Project, ); }; }; F1A1C65761F59B17E9F0CCD6E31BC6D1 /* NstBoardNamcot.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 63363BF83848A94A46DEE8515C73F001 /* NstBoardNamcot.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; F1AE2EC9FFCC375E75FE6FAFBBDE1E96 /* ftoutln.h in Headers */ = {isa = PBXBuildFile; fileRef = 091DED2DD5BC6745EBBD64305E80ED68 /* ftoutln.h */; settings = {ATTRIBUTES = (Project, ); }; }; F1AEF2B1C6CCBC24D4497AE79403B3A9 /* NLS.h in Headers */ = {isa = PBXBuildFile; fileRef = FDE03E8868705921E4D7F341382087D9 /* NLS.h */; settings = {ATTRIBUTES = (Project, ); }; }; F1D4CAD0ACCA1BEF7211125452F7225F /* Thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 117F03E796D3E4C1912371CA0722AF12 /* Thread.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F1D849039E3AE051D84F5AB2434E4D32 /* AuthRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CC2E9716502B9D8374D5E0AB89659B /* AuthRoutes.swift */; }; F1FF4C5FB474337CB81B747C4F2EC38F /* NstVsSuperXevious.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DFA6380E55BF081358F382C0F2FA7B60 /* NstVsSuperXevious.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F25A97243E1AD7DBD715CFAA07651641 /* GTLRQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = BB1A039FF5440BBD2EF096501C8ED363 /* GTLRQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F23BCFC609EBD2CDCBA8A5923E6EBE8E /* UIDevice+Vibration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8400F21646638487723B9EF9596BA5B /* UIDevice+Vibration.swift */; }; + F25A97243E1AD7DBD715CFAA07651641 /* GTLRQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = 8270D9EC826BA43DC24BF1A467527292 /* GTLRQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; F262EDC9220824B65970BD81B9D900C8 /* Result+Dropbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 443636AEB2461813DE19CAAEDB8822E0 /* Result+Dropbox.swift */; }; F27810503A84E1DF0956A50AFF1B9685 /* cart_rom.h in Headers */ = {isa = PBXBuildFile; fileRef = BD07BF4FD0D241E4EEB7F77EB2E38547 /* cart_rom.h */; settings = {ATTRIBUTES = (Project, ); }; }; F2CB81C2F71BA80DE116C20982244569 /* sar.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D51A28CA4983A6CC1305B2891CCFCE /* sar.h */; settings = {ATTRIBUTES = (Project, ); }; }; F2FE3835FE8882C7FBC1BA452BEC1FC7 /* Time.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B6F07EAB1D04617215BC613043EF6A03 /* Time.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; F310B0118BAAB7E23157158A799F3645 /* GBACart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18B2919809C4CFF342E76CFFC86FF457 /* GBACart.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; F318C3794184AA58D785EFD93FE43B9D /* android_hardware_buffer_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = A670E0A07A93DB068E3BBF5E5644BB5D /* android_hardware_buffer_compat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F31B581D7530205ADDB3C9A9F8B58F25 /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1E150EA94D5A0A5026F379E1681155 /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F31B581D7530205ADDB3C9A9F8B58F25 /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AADC3EF280FDC8505D5068249481C84D /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; F328A0F33FA194EBF2326259CC2AD62D /* n64_cic_nus_6105.h in Headers */ = {isa = PBXBuildFile; fileRef = 858C0A79D272BFFC52B94D2BDD345A3E /* n64_cic_nus_6105.h */; settings = {ATTRIBUTES = (Project, ); }; }; F35285DBFEFF7CBF2F8FB165FD79DD98 /* NstBoardBmcA65as.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A89A4AD8EE20FF09DD4FE01EC306F892 /* NstBoardBmcA65as.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F352E4BDB218990315AAFA0EA7745D8F /* RSTOperation_Subclasses.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CAE986A70F08EBFB10A2ACE57CC759C /* RSTOperation_Subclasses.h */; settings = {ATTRIBUTES = (Project, ); }; }; F38821175CD8A761DBCE0F06C455F9A1 /* CheatSearch.h in Headers */ = {isa = PBXBuildFile; fileRef = 2327BFAA2B34E53C849391EFB6C26E15 /* CheatSearch.h */; settings = {ATTRIBUTES = (Project, ); }; }; F39FF74FAD441990411ACD6C516AE159 /* TextureFilters_hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 055F19EAEEC932D69F4AD6D6C02673B1 /* TextureFilters_hq2x.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F3A27F2DC5065EBC03588390CBBC340A /* ControllerDebugView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C52AF424178E68A80DE19F46499BC5 /* ControllerDebugView.swift */; }; F3CF5B677E189A99863C53B7129664D8 /* TextureFilters_2xsai.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76F99B741051818D7B84AB0AAB5A23DF /* TextureFilters_2xsai.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F3D967C866EAA159C916CB25F62F39E8 /* GTMMIMEDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 644438FF1363ED7F30AA44B6F1D3D4F9 /* GTMMIMEDocument.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; F3ECFF5A4BA63E87214430A12812CC88 /* vidext_sdl2_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = 72F4F97B5A20840B22C7B3086D082CFE /* vidext_sdl2_compat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F42E3A54C619D9F87FDCF1801CD463C9 /* GTMMIMEDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = EF3D819417FD851E3EA790DF036DBEA4 /* GTMMIMEDocument.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F439240C6EDC7375D6CC060D4869B5E1 /* Data+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 660E3C5DCE31A47E4D097B7EAB89ADC4 /* Data+Serialization.swift */; }; F43BA1A82D360BBE531D7C293737CB62 /* FrameBufferInfoAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = BC45D9FBFEAFD0B53F95C8F4773F02E8 /* FrameBufferInfoAPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; F49934225D5974E030FF9CB9416A059C /* ftrfork.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E2A5DE941B07521BD76FDACA929E0C2 /* ftrfork.h */; settings = {ATTRIBUTES = (Project, ); }; }; F502D4152256E4F651960BCA7BE24E86 /* DMA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD55C1D1EA8D292BB2927054E5C56F6E /* DMA.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; @@ -1741,40 +1811,41 @@ F5464AF4D6078E29DB3795FCDCDCA5E8 /* Version+Dropbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = C28C86EC3EAB2B8660286270E36A6CA8 /* Version+Dropbox.swift */; }; F554AD1CDF74A113E39C286238820473 /* NstBoardJalecoJf11.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E131823B02DA62033ACD68F90979B3A6 /* NstBoardJalecoJf11.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; F58AF3DAD5D5916F712390DBA8BD2965 /* opengl_TextureManipulationObjectFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EA06691575E37AAE40934A36DFD963E /* opengl_TextureManipulationObjectFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F5C315D312696DA2A3DFBBC4D40FB8E3 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03368477B0F9F367CC8C9443F31F2918 /* Notifications.swift */; }; - F5CB903CC602617A94978CB68815EAD8 /* SQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = 12FF6FB31C4FC8525FF9C9D35EDCABC3 /* SQLite.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F5C315D312696DA2A3DFBBC4D40FB8E3 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB1D0383574EDCBFCB1E01640904FF7 /* Notifications.swift */; }; + F5CB903CC602617A94978CB68815EAD8 /* SQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E4CD8CDBB4408C8BD5636BAFD235F02 /* SQLite.h */; settings = {ATTRIBUTES = (Project, ); }; }; F62135414F6F7917FDAAC694256D5AC3 /* NstBoardBmcGoldenGame260in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AEB81A6D02776389727FD1234E8C86BB /* NstBoardBmcGoldenGame260in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + F62634A46EB24B7ED75303A9B133029B /* NstDatabase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 844F6EF3E43F3AF5908FCC044DE872CF /* NstDatabase.xml */; }; F67EA6EA59A43D602F6A5671A20CDC53 /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = EF93377C240378AF46C36F1D6AE7E241 /* pngrutil.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; F6BD13E3D33810BFCC570979C5FB382D /* ftlzw.h in Headers */ = {isa = PBXBuildFile; fileRef = 420F2D7E82DCB4670DD9AC159AE8CB48 /* ftlzw.h */; settings = {ATTRIBUTES = (Project, ); }; }; F6C58A1587E069C62C520BBC5EF7CEE3 /* autohint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2321A59BE64F0DD031D7850508AB6437 /* autohint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F6DED1B87CAB561CFB9D72DB0E92F018 /* Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5B49946963C58320761EF205659BBFE /* Coding.swift */; }; + F6DED1B87CAB561CFB9D72DB0E92F018 /* Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3E462965638C3B3A14A015889EAD1F6 /* Coding.swift */; }; F70A0EAB25CE80D13EDFBCDE5DD9D005 /* Combiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53D2A4DA49C20418137EF65E0F9A5665 /* Combiner.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; F71F9160F9CBD0B794B9C4C287D927C2 /* GBASoundDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = BE4C3DE847FBC50AAA7DF9A629B1AC09 /* GBASoundDriver.h */; settings = {ATTRIBUTES = (Project, ); }; }; F7519C1D6E9E92AF645CEFB2E4554096 /* ftobjs.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F23316432A2E40B25E4A0F2D32AB9B3 /* ftobjs.h */; settings = {ATTRIBUTES = (Project, ); }; }; F754EF0C3AF108C6B7782AB12A6BC563 /* retro_common_api.h in Headers */ = {isa = PBXBuildFile; fileRef = BB90D6B156245C90414C9D66ACF8CFA2 /* retro_common_api.h */; settings = {ATTRIBUTES = (Project, ); }; }; F75AA663567F70EB6EE15E16E8FAED0E /* DebugDump.h in Headers */ = {isa = PBXBuildFile; fileRef = E42ABC54F33F8C0E48F35F0411521A9B /* DebugDump.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F7648239120699351C08E480E3AF46AE /* OIDErrorUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = EE0AC971380D9474A4A588F1C961933F /* OIDErrorUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; F7812D280E0B0ADA0EE10C0047F90310 /* Version+Revision.swift in Sources */ = {isa = PBXBuildFile; fileRef = 127AD280199D3775991F5A47656B16BC /* Version+Revision.swift */; }; + F781A32EAE164E3F7D34AF3107028D37 /* RSTActivityIndicating.h in Headers */ = {isa = PBXBuildFile; fileRef = E4EBA815773EEEF36C8ACC26B336172A /* RSTActivityIndicating.h */; settings = {ATTRIBUTES = (Project, ); }; }; F7845B071AB072DE21C9C6DF891595D0 /* NstApiBarcodeReader.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6CED9A062A0270F010C6EB9D1C8210C0 /* NstApiBarcodeReader.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; F79A6978DCC55BB59B530FC01880E29D /* GLideN64.h in Headers */ = {isa = PBXBuildFile; fileRef = C74A158169DF87C094722AEF80379C12 /* GLideN64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F7B46F08F478C451F93F859CFB540820 /* GTMSessionUploadFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFFA33EF26C6E6BBBA92570888B7054 /* GTMSessionUploadFetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; F7E19CA79BB48E48716DED58215AD911 /* ColorBufferReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EBB27E55F8C770C262902824CCDFBB55 /* ColorBufferReader.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; F820DDDB50E89BC0F39E18CF72B093E0 /* F3DFLX2.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C16C000033E3A0DDF2B3B7B582F2A2D /* F3DFLX2.h */; settings = {ATTRIBUTES = (Project, ); }; }; F8456082844E1B329908912F845EE35E /* readpng2.h in Headers */ = {isa = PBXBuildFile; fileRef = F05832C13F18C01CF5E10661F433547C /* readpng2.h */; settings = {ATTRIBUTES = (Project, ); }; }; F84671FE8BA3F5C965FA4ACD5FFA5200 /* NstBoardGxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 477FB86AC8B0D1B1317290EE392A0ABF /* NstBoardGxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F8700BFB83819A8020B48CC994945A15 /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BBF21DB7D0A3DEFC2DB5CF5C384EC77 /* MultipartFormData.swift */; }; + F8700BFB83819A8020B48CC994945A15 /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D7A5D7D8CAD4684E8FC0960E77D2A76 /* MultipartFormData.swift */; }; F875E5994E4FE31BC8D3A96E4B404E9D /* GBA.h in Headers */ = {isa = PBXBuildFile; fileRef = EEEB95030AF7A9764E692CE0A4780722 /* GBA.h */; settings = {ATTRIBUTES = (Project, ); }; }; F8CCD0AA7FB23F7CB1C08DE04B1A93C7 /* NstBoardBtlSmb2b.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C3A9EDD6A6B25EA9B355E4498EA7598E /* NstBoardBtlSmb2b.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + F8F62DBA1DA7317A47680145818F62D7 /* ControllerInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 916DC17A6938C4EB312870DB067BAFE2 /* ControllerInputView.swift */; }; F91147CE6333EB45B7FEAD9FA93B59EA /* fxp.h in Headers */ = {isa = PBXBuildFile; fileRef = 3933218BC8BCF02EB2BF32BD1FDEA43D /* fxp.h */; settings = {ATTRIBUTES = (Project, ); }; }; F9261AFE6C6D70EC1E66696C4DCD178E /* F3DPD.h in Headers */ = {isa = PBXBuildFile; fileRef = B444C52B7AFA9D63FAF0B461FA593168 /* F3DPD.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F9500289F70CA27F637D81A06DD4B60E /* ZIPFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B3BC53887BCBE3F02841C302D9EFCB4 /* ZIPFoundation-dummy.m */; }; F956BCE9AE2D261366C1A17A816088C5 /* FIRFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFFF4B845C9F49DB2E04228D7CEE551 /* FIRFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; F9698CB61E155BC0A54052454CA4220C /* psaux.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D3971B130EA808E3BC3AC7DCFDFCD2B /* psaux.h */; settings = {ATTRIBUTES = (Project, ); }; }; F9C5FFBD5B7FE43750628BC9C3B5DFCB /* F3DAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C07C9B57A5D082C07FD91A96267A69C /* F3DAM.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FA0036353A4095FAC4266C2BF6DFE389 /* DateAndTimeFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34B9FC0547132313C6B66562D7FB6FE6 /* DateAndTimeFunctions.swift */; }; - FA0EAACFF92EB2EA0331C1803BF42074 /* GTMNSDictionary+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C84F28BC8941E34DD2FCD83B3BA50C0 /* GTMNSDictionary+URLArguments.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FA0036353A4095FAC4266C2BF6DFE389 /* DateAndTimeFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAC07B3D9E7C4AD3DD82C841899CF5BD /* DateAndTimeFunctions.swift */; }; FA1701E91582ACCF6BFE0E144F8150DB /* NstBoardRcm.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E03B229B626122855F4CF94308B4637F /* NstBoardRcm.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - FA5F18DE3CD30B57518B7F901B5EDB65 /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECCD45E4DF53FED6DA4A6938B32FD27 /* Timeline.swift */; }; - FA61CAAB6D8624FB6060BC1569696684 /* RSTLaunchViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 54C38C767637E4968C8562607864A579 /* RSTLaunchViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FA5F18DE3CD30B57518B7F901B5EDB65 /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3281A1D52BF5FE4FFF7B0138662B41AC /* Timeline.swift */; }; + FA7B2DA97A0367438952589204609F1A /* OIDRegistrationRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 02DDE00A6C67B510A37562DA364563DF /* OIDRegistrationRequest.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; FA8250F0F83A37256630AC8758FC5AD4 /* TcpSocket.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CA55F47F80C2DC890C16CE8644549D2F /* TcpSocket.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; FA8C88B96FBBE7295D4C65F943AADA79 /* OGLRender.h in Headers */ = {isa = PBXBuildFile; fileRef = F22B9A20D8FCAE9E7B8FB6467F30054B /* OGLRender.h */; settings = {ATTRIBUTES = (Project, ); }; }; FA9B3AC7F5917EC0557B43CF9F65AA9C /* cheats.h in Headers */ = {isa = PBXBuildFile; fileRef = C324BC780B175A1C93C1DAAC4213BBA7 /* cheats.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1785,397 +1856,422 @@ FB327AFF20A254B19FECD641BE8B515C /* transferpak.h in Headers */ = {isa = PBXBuildFile; fileRef = 48907C43DF6930F8003108EB5C6F7BA3 /* transferpak.h */; settings = {ATTRIBUTES = (Project, ); }; }; FB3EE8D4ADBA3CE6470A53C129E1999B /* ftmodapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 39E88053160E909EE0AD49CAC49DAE99 /* ftmodapi.h */; settings = {ATTRIBUTES = (Project, ); }; }; FB4CC6A36E964220C63B0E2A59173476 /* PostProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = F58B6A269CCE0D6DC10601E490E20B54 /* PostProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FB4CCBB8A8E97E0154324C412E20C324 /* GameControllerStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B192A444B6B7EA865548723995B900AC /* GameControllerStateManager.swift */; }; FB4EBBFD6045EB9128A76A9318CD5BE4 /* NstBoardBandaiOekaKids.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BB32B7EDD671EBFA1249485B97B59362 /* NstBoardBandaiOekaKids.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; + FB4FE830670C24C02D845A7487D150DF /* NSUserDefaults+DynamicProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 15F97120052DC61976DE9E72A49B3917 /* NSUserDefaults+DynamicProperties.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; FB6DF9070B968DEC6BE6D200B64EF86C /* uncopyable.h in Headers */ = {isa = PBXBuildFile; fileRef = AC7B93FEB4CD587D67E7FBC9030FFB69 /* uncopyable.h */; settings = {ATTRIBUTES = (Project, ); }; }; FB99CA157ABBB0F0A9A40B20EF00708A /* seta.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A64822D43AA4F0CF69800DA732637F9 /* seta.h */; settings = {ATTRIBUTES = (Project, ); }; }; FBB0EF1ECE6783F04140EB42D131A035 /* MMU.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D617918958B004C494A5E18D1F77DE5 /* MMU.h */; settings = {ATTRIBUTES = (Project, ); }; }; FBB304AA8F4B6D44D94F0F5168E133DE /* opengl_BufferedDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = 73ADD12AA159A3A86ABFF932ECF648EE /* opengl_BufferedDrawer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FBB6EBC8558504C740EE9B3BBD5A48F0 /* RSTFetchedResultsDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 975243A09D83F735C4EE0F290DC172AD /* RSTFetchedResultsDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; FBC915474FD9A84A925EF747968A1CFA /* transfer_ptr.h in Headers */ = {isa = PBXBuildFile; fileRef = EDF01A13CD65D9D294C488D4EE221B68 /* transfer_ptr.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FBE53C0DE4569D6979BE7382F31F2B09 /* SMClassicCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = ADF793502FD046991EE487F895BA270F /* SMClassicCalloutView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FC16CEF20879563EE345764D753289CF /* ZIPFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F4912D5F8E8AA63C9F6417DD320A1C6 /* ZIPFoundation-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FBE33EB58621A81814455F4F6E8C5C79 /* RSTSearchController.m in Sources */ = {isa = PBXBuildFile; fileRef = 75759807E6D9531D36908860D364F3A5 /* RSTSearchController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + FBE53C0DE4569D6979BE7382F31F2B09 /* SMClassicCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = 60846DC9067AEB427BC583ED3B0AB2AA /* SMClassicCalloutView.h */; settings = {ATTRIBUTES = (Project, ); }; }; FC496ABB9C78B576287AF63933F4024A /* cpuaddr.h in Headers */ = {isa = PBXBuildFile; fileRef = 237EA7FAD30101B1B933A7BFC4950C00 /* cpuaddr.h */; settings = {ATTRIBUTES = (Project, ); }; }; FC7FBAB5F9D657568EC7C86DA10C5F84 /* GLideNUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 94C0157C0BE85463A3B2C001FE4AF746 /* GLideNUI.h */; settings = {ATTRIBUTES = (Project, ); }; }; FC8DF3C57DC66D5717E7900ACA2AB6A7 /* NstBoardZz.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2F24F4CC901AC25CA196803FE1A3C61E /* NstBoardZz.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; FC957E3A72E29AB5BBA6E1279F047040 /* F5Rogue.h in Headers */ = {isa = PBXBuildFile; fileRef = C6BCF1612FFF75C8E8FD3D3E4723E112 /* F5Rogue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCAE595180947228FC1618C3D8BDBED1 /* GTMReadMonitorInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBFEACE2F6510E0AC190F950DC15702 /* GTMReadMonitorInputStream.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FCE08CF79B7B1382065AF4A7C39D1E5D /* OAuthMobile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4BFB7D39F6CF7F3B3B3BB96C9EAC314 /* OAuthMobile.swift */; }; - FCE1768EFA9F6D5B803048839268F21A /* RSTSearchController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7102A8DBFC6D01F98DCE0C4D4CC37C59 /* RSTSearchController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCF7FCAAFD8BD392EECBAA2B35EF15A3 /* ButtonsInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDB7131D9526D80A2F58C61485D8C02A /* ButtonsInputView.swift */; }; + FCD8B76614D8D02AF7991997026D8322 /* UIKit+ActivityIndicating.h in Headers */ = {isa = PBXBuildFile; fileRef = 82656B4A230970BB031B9D9C19699E88 /* UIKit+ActivityIndicating.h */; settings = {ATTRIBUTES = (Project, ); }; }; FD0D4712F2A3CE1900314DB8739F322C /* ARMJIT_Memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AE4075237EF07EF0EF97D959D5273E5C /* ARMJIT_Memory.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; FD236BFB6FC09D23BB5049F58F28626D /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 00B5C83D4A8CE5DE69951A0127250BED /* version.h */; settings = {ATTRIBUTES = (Project, ); }; }; FD3303F5BBB44097C3462FED3A278711 /* ColorBufferToRDRAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8F858D684628842AC5118616BB283BFD /* ColorBufferToRDRAM.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; FD45FE71D694B383B0D18EF51DD4BF3B /* readpng.h in Headers */ = {isa = PBXBuildFile; fileRef = A30F6CDE8A6A2E3A97CC0B969043EC7E /* readpng.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FD53DD7CC4FB437A70ECB3B96D9FBD28 /* OIDAuthState+IOS.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C64537334355255D5B2EAEBB95293B /* OIDAuthState+IOS.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; FD8A3151DE7D3760830165162466984A /* NstBoardSachenSa72008.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9F65846296AA0445D9DA7FC1DE9B4CBE /* NstBoardSachenSa72008.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; FD8B38FE86A21A76E06E7F04D66045DA /* GPU2D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E91E986A8B15803FB3C1B92D9C417DF /* GPU2D.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FDBB1A6796683E960EC8974DC252D14D /* GLideN64.custom.ini in Resources */ = {isa = PBXBuildFile; fileRef = D9A99AC4564024C83E5D7E12274FEA75 /* GLideN64.custom.ini */; }; FDD486DA97B3C271F139CBDCD5D3F4EA /* video.h in Headers */ = {isa = PBXBuildFile; fileRef = C50B426C6CE12AA24A5D9876EA2A99B4 /* video.h */; settings = {ATTRIBUTES = (Project, ); }; }; FE023380F7318C57744D912C05549838 /* RDRAMtoColorBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 47698E5A57A16FA76229820066EC0795 /* RDRAMtoColorBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FE1F4ECCDB94C7034A4401140E0BEBF6 /* OIDEndSessionResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 58C91782F219ED52DC9C1CB57C6F993E /* OIDEndSessionResponse.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FEDF533C78E3E3AD3B5EE58410634F3F /* GTMSessionFetcher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 623B35F702DC1066A2A46AF8A9CD3ABC /* GTMSessionFetcher-dummy.m */; }; FF1C193E19586061D4E78FC84BE9D58C /* TxFilterExport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCDAE003FD5AAB091DE46063067C6C2D /* TxFilterExport.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; FF29E9B84DF390494FA20C4022D1D8F0 /* F3DEX.h in Headers */ = {isa = PBXBuildFile; fileRef = 395682778B41F09E1AFF66EE9BB36A96 /* F3DEX.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF4162F2E737F86BD74D6D6879EFB0B2 /* TouchInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 711B7352488C5E8D3F8233466422FFF3 /* TouchInputView.swift */; }; + FF46F64CB114D930EC03317D467007D8 /* TeamLogRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB18133E0ECE1AE6EAF820FD43E8C7CD /* TeamLogRoutes.swift */; }; FF4AACDBDB3F094AEA72D4D89C6FB7AA /* ThreadLocalPtr.inl in Headers */ = {isa = PBXBuildFile; fileRef = A7A9E2A726CB19BB48BEEB0560456EA9 /* ThreadLocalPtr.inl */; settings = {ATTRIBUTES = (Project, ); }; }; FF5354464D8CC654338F0DA305571C72 /* array.h in Headers */ = {isa = PBXBuildFile; fileRef = 229BBE000F8954FF0FD0C2D18ECB8463 /* array.h */; settings = {ATTRIBUTES = (Project, ); }; }; FF8A3BB6317EEB1D3625363461829C82 /* interruptrequester.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C7AB60D65C527E722A39665A2C3E20C /* interruptrequester.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FFD0EC593CE94958FF475F2D83057284 /* CheatProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A4475D925ACB241668382B38C370988 /* CheatProtocol.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 00ABB22A75519A7A599715EC0ACB193A /* PBXContainerItemProxy */ = { + 0381E78DE06B9270F4D0519BDA82935B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = E5449403CBE67599315B4D26019FA175; - remoteInfo = "DSDeltaCore-DSDeltaCore"; + remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; + remoteInfo = ZIPFoundation; }; - 032ABA8A9A410F994632CDEF65807785 /* PBXContainerItemProxy */ = { + 0408354ADB097E0A8E68F20380932BB3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; - remoteInfo = Alamofire; + remoteGlobalIDString = 530F469AED058B94728C278CCA514500; + remoteInfo = DeltaCore; }; - 0B6CD0ABE88B501AAD50A39D0E445B8F /* PBXContainerItemProxy */ = { + 072E7F0B3D88295C324403DE92F92B3A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 126073BF5D2BF3A4BDD22FE9062C9D20; - remoteInfo = N64DeltaCore; + remoteGlobalIDString = ABB048B191245233986A7CD75FE412A5; + remoteInfo = Fabric; }; - 0DBECE441841118F16A18343AF31CEB2 /* PBXContainerItemProxy */ = { + 0CF12E649CAD1F1E92FED94B71AEDFFB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FF39B7A1D9F00620D9F56635ABBB2C03; + remoteInfo = SwiftyDropbox; + }; + 0D270BD35C866AD87A6917C16C716C0A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B5D1BA64AC676FF46408FCDE19A05767; + remoteInfo = Roxas; + }; + 0E0A7A7170507F9B250583AD471F9FC3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 6538136F848A07F507372CCFB40CEB88; remoteInfo = "SNESDeltaCore-SNESDeltaCore"; }; - 115FA5913AAD88EAA93DDD1D1BA15F55 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; - remoteInfo = ZIPFoundation; - }; - 16C867214A1C64F5B7C8BC2C57F7E5E9 /* PBXContainerItemProxy */ = { + 0E6EB0CECE923F6573D8C74F0A0C19B2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D676E21115185671D7258A56944ABE98; remoteInfo = GTMSessionFetcher; }; - 182C89C9CE6CCE9883389B00267CB0D3 /* PBXContainerItemProxy */ = { + 105291183B86B99424D915F04A6EC9D0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D7958E869B6C0073DB3025514393D7A3; - remoteInfo = GoogleAPIClientForREST; + remoteGlobalIDString = D676E21115185671D7258A56944ABE98; + remoteInfo = GTMSessionFetcher; }; - 1A52A6707FB67141E6BA2342DA2986FB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - 217195DBADE042CCA0C8CDC4B3898A93 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = CAD3534FC55B0333104E5117C0A9A324; - remoteInfo = GoogleSignIn; - }; - 218EB7E2C662CA44770BC335EAC9E974 /* PBXContainerItemProxy */ = { + 106930F3A226D2078130B3CE6D68923C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; remoteInfo = Alamofire; }; - 2B37CC1C410B99E845DE044F83B0752C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; - remoteInfo = GoogleToolboxForMac; - }; - 3871E35B35BAE07094A60B4E8D698577 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1B47E46598F87113B00B3B25BBF51B32; - remoteInfo = "DeltaCore-DeltaCore"; - }; - 396504BDD855395F6A4F3327DD460648 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = ABB048B191245233986A7CD75FE412A5; - remoteInfo = Fabric; - }; - 583173D42BF0D2C0302B77CB5A34008B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - 5D8BC7C0064417F7A6EC9446B8B453B3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = DCBC8D45C727B1472F26E79661AF11B0; - remoteInfo = DSDeltaCore; - }; - 612161C2AE361027CB10DA943C56B5C5 /* PBXContainerItemProxy */ = { + 13D1F49B3DF394631E4E66025C7BDA35 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; remoteInfo = ZIPFoundation; }; - 64DC15ACA9C0BE50343C47C7556EF937 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - 65E2351B4A27AEA1AA5B7FEAF0C5BB27 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D676E21115185671D7258A56944ABE98; - remoteInfo = GTMSessionFetcher; - }; - 660544F600360A80311C6050DBFB12FB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7056A67459B0B8B62FACACCE167546B8; - remoteInfo = GBADeltaCore; - }; - 670D444F32F68C5BAE5BA52BB3C9341F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 280620EDC57ABB510508698A7233E414; - remoteInfo = "N64DeltaCore-Mupen64Plus"; - }; - 68B4FFAC29F79C22868F1B74A1B7C53C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - 7087C0FF26AB5A74E2A39C29483140D2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; - remoteInfo = GoogleToolboxForMac; - }; - 7171CCE0B6B707D604944DA33B68E740 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = FF39B7A1D9F00620D9F56635ABBB2C03; - remoteInfo = SwiftyDropbox; - }; - 77F8D708735AE9ACEDED484F57FB81CD /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B5D1BA64AC676FF46408FCDE19A05767; - remoteInfo = Roxas; - }; - 7B513CD2857B9A0B8B647BB86B98462D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B5D1BA64AC676FF46408FCDE19A05767; - remoteInfo = Roxas; - }; - 7C330B4E047C76E064118BE2FE314A38 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D20492B6476142DCA0C455340876BB98; - remoteInfo = SMCalloutView; - }; - 7F1F16C14DD6A01A7FBDBD3515F305E9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B5D1BA64AC676FF46408FCDE19A05767; - remoteInfo = Roxas; - }; - 8B84C12FA9DF88E9F0F56AEFB8624B9D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 890229DC8DCC9C43917568A0C4502FCA; - remoteInfo = "GBADeltaCore-GBADeltaCore"; - }; - 923E2672706828303AB76095C2408141 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 141E2D29C29A1BC1ABA3483321DF3C88; - remoteInfo = SNESDeltaCore; - }; - 9473F6E2CDA87D45944E67C067B86B59 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = DB59C68809324297BEDAF0CC3F931B27; - remoteInfo = GBCDeltaCore; - }; - 9A86622D90861874C972FB5531045978 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7F839870ECBE0065B4BCC02E5F98F48A; - remoteInfo = "NESDeltaCore-NESDeltaCore"; - }; - 9E3E15A0C985BB30CAD56F253F9202A4 /* PBXContainerItemProxy */ = { + 16A0FE6F747E52448CA1134642FF8A3C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0FAC8C4777DBD31221FE57848CB5F759; remoteInfo = NESDeltaCore; }; - A54DE205C4387B61F613CDC124D137AF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - A671990224DAE3878C70A0689E4AA6EA /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = ABB048B191245233986A7CD75FE412A5; - remoteInfo = Fabric; - }; - A98ACDFA51CE6EBA58A454A3F6F45687 /* PBXContainerItemProxy */ = { + 19E1CF10F66B17A25BABAAB743189EBB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = C0E41540D6862472ED7F2FA11669BE1F; remoteInfo = Crashlytics; }; - ABB58AF7ADA7C64C3CA39B697E459BFB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 38A7AA32705A9662332E76FA75B50858; - remoteInfo = MelonDSDeltaCore; - }; - AFC9CE874D0440BE0B62813B4D033D2E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - B0324C12FBDC1E38147C9E9572F4D499 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3F2C1776D90B62B156DB52C41A5C419C; - remoteInfo = SQLite.swift; - }; - B0480D608BEEF676DA55FBCB5005519F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D7958E869B6C0073DB3025514393D7A3; - remoteInfo = GoogleAPIClientForREST; - }; - B43168D5B6284E0B7F8C62E5731D2837 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - BCD0AD4B1161E515B0B2028FFEC7ACA6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5CB4163F0A6D4BDE0A490758A78BA43D; - remoteInfo = Harmony; - }; - D5EB338CE31FF03E14A17B0F83813D64 /* PBXContainerItemProxy */ = { + 2042E2571CAD8DC5706E9A876466500B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = CAD3534FC55B0333104E5117C0A9A324; remoteInfo = GoogleSignIn; }; - DAB4C6A655ECE1630B81850BE839EE9A /* PBXContainerItemProxy */ = { + 2336D1B988543D623B1A54C387ED0B61 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D7958E869B6C0073DB3025514393D7A3; + remoteInfo = GoogleAPIClientForREST; + }; + 29785AE02EC77FBB28208501FF7C6189 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5C642AA10FB29936669CC269F42079C6; + remoteInfo = AppAuth; + }; + 298EF793452E49D5655284A280B9F9B9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7056A67459B0B8B62FACACCE167546B8; + remoteInfo = GBADeltaCore; + }; + 2F63B539FF0587BC87B0D75C8EF28C23 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CAD3534FC55B0333104E5117C0A9A324; + remoteInfo = GoogleSignIn; + }; + 3A1F34786D068E81F27D8F249C9FA86B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 530F469AED058B94728C278CCA514500; remoteInfo = DeltaCore; }; - DF5B23DD38F9D0918E99CA6A926F122C /* PBXContainerItemProxy */ = { + 3D809D293AFBD9DD21C0414BF3B1DBCF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = FF39B7A1D9F00620D9F56635ABBB2C03; - remoteInfo = SwiftyDropbox; + remoteGlobalIDString = DCBC8D45C727B1472F26E79661AF11B0; + remoteInfo = DSDeltaCore; }; - EBDD6F9A701A551203275358C5598614 /* PBXContainerItemProxy */ = { + 3DBE129674815EC4346667F5BAA2126E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D676E21115185671D7258A56944ABE98; - remoteInfo = GTMSessionFetcher; + remoteGlobalIDString = 7F839870ECBE0065B4BCC02E5F98F48A; + remoteInfo = "NESDeltaCore-NESDeltaCore"; }; - ED11CC9CDDFD16C617C7206B44FFC277 /* PBXContainerItemProxy */ = { + 3EC8C0293F12428CC16DA81C5E7A42C9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5B32FEE5AD13CB944235C9158BECB929; - remoteInfo = "MelonDSDeltaCore-melonDS"; + remoteGlobalIDString = 890229DC8DCC9C43917568A0C4502FCA; + remoteInfo = "GBADeltaCore-GBADeltaCore"; }; - EE028E549C7FA02EC6E68A8419489A5B /* PBXContainerItemProxy */ = { + 412CA4067545871902A7F37FAF35E3F6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; - remoteInfo = ZIPFoundation; + remoteGlobalIDString = DB59C68809324297BEDAF0CC3F931B27; + remoteInfo = GBCDeltaCore; }; - F05A29193F5186E8F733980BA972B9EC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - FA2FA092217D51D2A608BC0F246042BA /* PBXContainerItemProxy */ = { + 42C193A783D1BB080BBEC1000704334B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5C36E65AEF44273E4AF0CBFADD00C090; remoteInfo = "GBCDeltaCore-GBCDeltaCore"; }; - FAC2D87B120F38C2FB54BBBD353756A8 /* PBXContainerItemProxy */ = { + 6218128228EFAD7B4A524AEB42CB97FB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B5D1BA64AC676FF46408FCDE19A05767; + remoteInfo = Roxas; + }; + 6D26698771AE28FE4D5EB8E2FA47B074 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8627999EF1D5E93E13DAFF580DA8CDCF; + remoteInfo = GTMAppAuth; + }; + 6D2E706AEAE1E2E3397DCC4964ACE6C3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; + remoteInfo = Alamofire; + }; + 7023B8C0EB28914B4D7743E5440F2877 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3F2C1776D90B62B156DB52C41A5C419C; + remoteInfo = SQLite.swift; + }; + 7C696291D9F2C7A6DD3BE5216C1DADEB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FF39B7A1D9F00620D9F56635ABBB2C03; + remoteInfo = SwiftyDropbox; + }; + 7D81F9F0D4343DB552801716ECEA2412 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1B47E46598F87113B00B3B25BBF51B32; + remoteInfo = "DeltaCore-DeltaCore"; + }; + 7E5C11460D9353A6362C7ECFCCA226A4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 530F469AED058B94728C278CCA514500; + remoteInfo = DeltaCore; + }; + 808CBCB3ED51E776558C9FD8EC1C1BF1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5C642AA10FB29936669CC269F42079C6; + remoteInfo = AppAuth; + }; + 8D229C2F1EE85B1E27D00AA1D0E2F07D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = ABB048B191245233986A7CD75FE412A5; + remoteInfo = Fabric; + }; + 9098FB6228C856DA4B7730E7659F75C0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 38A7AA32705A9662332E76FA75B50858; + remoteInfo = MelonDSDeltaCore; + }; + 9B7A4646FBEA53716AAB162179A8FF4F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5C642AA10FB29936669CC269F42079C6; + remoteInfo = AppAuth; + }; + 9DAC17464127653AF8C63782B487448B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 530F469AED058B94728C278CCA514500; + remoteInfo = DeltaCore; + }; + AAA10707205D50B2856F77D58D8C8E13 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D20492B6476142DCA0C455340876BB98; + remoteInfo = SMCalloutView; + }; + AF7DC483053274DFA800F2466443160B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5B32FEE5AD13CB944235C9158BECB929; + remoteInfo = "MelonDSDeltaCore-melonDS"; + }; + B20304413613A7B5157B3D7ECFEFEDB0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E5449403CBE67599315B4D26019FA175; + remoteInfo = "DSDeltaCore-DSDeltaCore"; + }; + B720251EC7132B58D2795C28365761B8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B5D1BA64AC676FF46408FCDE19A05767; + remoteInfo = Roxas; + }; + B8F72F362174B5212D8FAEBF16BAFE37 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 530F469AED058B94728C278CCA514500; + remoteInfo = DeltaCore; + }; + C74D7DE612FBBEDCA1B7152C171E3262 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D7958E869B6C0073DB3025514393D7A3; + remoteInfo = GoogleAPIClientForREST; + }; + C7E578AB83134DC0A1981337C8969F2C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 280620EDC57ABB510508698A7233E414; + remoteInfo = "N64DeltaCore-Mupen64Plus"; + }; + C9879760162056B9390CDCB7A492F552 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 530F469AED058B94728C278CCA514500; + remoteInfo = DeltaCore; + }; + C99A88091ACD71F5271C376C33B7882F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 530F469AED058B94728C278CCA514500; + remoteInfo = DeltaCore; + }; + CE55DD9B607A3EAC1D2E8F0B00021A54 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; + remoteInfo = ZIPFoundation; + }; + D05C542A1E79E8C76828AA22FE8C7355 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 530F469AED058B94728C278CCA514500; + remoteInfo = DeltaCore; + }; + D3B33BAB0310D199BDFD753887964357 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D676E21115185671D7258A56944ABE98; + remoteInfo = GTMSessionFetcher; + }; + D47411A8A08D6FE7AEE5DDFD235EB9E8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 126073BF5D2BF3A4BDD22FE9062C9D20; + remoteInfo = N64DeltaCore; + }; + D48F80BC365DF1B3A8E33324D6523928 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 530F469AED058B94728C278CCA514500; + remoteInfo = DeltaCore; + }; + D66732993C2AA0083A3C9422167351D2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D676E21115185671D7258A56944ABE98; + remoteInfo = GTMSessionFetcher; + }; + E4863082BBC88C43E94F5FDC117E3EDB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; remoteInfo = SDWebImage; }; + EA2F59167A6B3D3D9C610A18D72CDA34 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5CB4163F0A6D4BDE0A490758A78BA43D; + remoteInfo = Harmony; + }; + FDE3DE69220AE64B536ED6E80507B954 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8627999EF1D5E93E13DAFF580DA8CDCF; + remoteInfo = GTMAppAuth; + }; + FFDD5E4A213E93783EC2272754D443A4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 141E2D29C29A1BC1ABA3483321DF3C88; + remoteInfo = SNESDeltaCore; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00454C669FBEBF5003E744A5BB78F1E9 /* UsersRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UsersRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/UsersRoutes.swift; sourceTree = ""; }; - 005FC9907E7BDC0BEFC3ADF4DDF1EE39 /* GoogleToolboxForMac.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleToolboxForMac.modulemap; sourceTree = ""; }; 00871310E40885E08E93E1CD1C2D4E0A /* fb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fb.h; sourceTree = ""; }; 008BAE2DDBD414ECE1FA379339AB5914 /* pngusr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngusr.h; sourceTree = ""; }; 00B5C83D4A8CE5DE69951A0127250BED /* version.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; @@ -2185,38 +2281,41 @@ 01802D9854180DB5B0E198799B4DD37F /* Vector3.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = Vector3.inl; sourceTree = ""; }; 019BB4B6CBE90602032D506492CB517D /* Rect.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = Rect.inl; sourceTree = ""; }; 01A0F25A36DD2B95302A9A4B684EA1DB /* NstBoardBmc9999999in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc9999999in1.hpp; sourceTree = ""; }; + 01A5A745F3104352234EF8168F5660E0 /* GoogleSignIn.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleSignIn.release.xcconfig; sourceTree = ""; }; 01D6CFE866F11284748563FA8772C843 /* NstPpu.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstPpu.hpp; sourceTree = ""; }; + 01E69CD02F04A42E91A440593AE38207 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/UIButton+WebCache.h"; sourceTree = ""; }; 020BED2D96312DD71C54EFA929FA2790 /* NSLayoutConstraint+Edges.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+Edges.m"; path = "Roxas/NSLayoutConstraint+Edges.m"; sourceTree = ""; }; 0248915F3E65215D001A7F3F3F07EAE4 /* MelonDSDeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MelonDSDeltaCore-dummy.m"; sourceTree = ""; }; 024B54CA010D91D3F6E4E79E93053507 /* F3DAM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DAM.h; sourceTree = ""; }; + 026303687AA738C6704F0AE2C4415571 /* GTLRFramework.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRFramework.h; path = Source/Utilities/GTLRFramework.h; sourceTree = ""; }; 028AA0FF5988D03E9907ED4E4E327382 /* Port.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Port.h; sourceTree = ""; }; + 02B744FC648DAAA73B0AB093F39C55F4 /* OIDGrantTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDGrantTypes.m; path = Source/AppAuthCore/OIDGrantTypes.m; sourceTree = ""; }; + 02DDE00A6C67B510A37562DA364563DF /* OIDRegistrationRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDRegistrationRequest.m; path = Source/AppAuthCore/OIDRegistrationRequest.m; sourceTree = ""; }; 02DEBBF9FF6D702FBFBE8D12C367A119 /* L3DEX.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = L3DEX.cpp; sourceTree = ""; }; 02EBA4437D0FA1CF697188CF0D82DF4F /* fttypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fttypes.h; sourceTree = ""; }; - 03368477B0F9F367CC8C9443F31F2918 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; + 031D09F2BC97265AA9C63DC2B0D56DA9 /* OIDScopeUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDScopeUtilities.m; path = Source/AppAuthCore/OIDScopeUtilities.m; sourceTree = ""; }; 03620BC3AFB2B2C65DAA35A7BD95F81E /* CombinerProgram.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CombinerProgram.cpp; sourceTree = ""; }; 0382767F1E8C7949EF46FE377A7CD0CD /* NSString+Localization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Localization.m"; path = "Roxas/NSString+Localization.m"; sourceTree = ""; }; 0396C570C0BD057BEE9ED8DFA16DBE14 /* svprop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svprop.h; sourceTree = ""; }; 040946E3833F7C5AB61A26EC2289838B /* ftcache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftcache.h; sourceTree = ""; }; 0409B2DFBB15F5B0BC181C680F5CEE57 /* NstBoardNxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNxRom.hpp; sourceTree = ""; }; + 044980032257B075E0B9A57CEFBDFF05 /* GTLRBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBase64.h; path = Source/Utilities/GTLRBase64.h; sourceTree = ""; }; 0455CBEF7CB3708C7FFE7E36A032FEDD /* RSTCollectionViewGridLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCollectionViewGridLayout.h; path = Roxas/RSTCollectionViewGridLayout.h; sourceTree = ""; }; 046951C873E03E7C1CE25C16E73169A7 /* EmulatorCore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EmulatorCore.swift; sourceTree = ""; }; 04866315B7587583E5D40EF4EBC19CEE /* SNESDeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SNESDeltaCore-umbrella.h"; sourceTree = ""; }; 04A6A8826B644200E536AEC5EF86EF20 /* DSTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSTypes.h; sourceTree = ""; }; 04B16560C485FAC4F5A3F7706B845182 /* ftcid.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftcid.h; sourceTree = ""; }; 04C80661427B321039C056114B4E2607 /* ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist"; sourceTree = ""; }; - 04CD4DB2EE3E00431E393AF83DA3B925 /* GTLRDateTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDateTime.h; path = Source/Objects/GTLRDateTime.h; sourceTree = ""; }; + 04D4BF391EBFCFF80B82DD0CFC9FB297 /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; 04DE108C75BD8159971EA3972F4FE9D6 /* GLFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GLFunctions.h; sourceTree = ""; }; 04FA6C81756C2F156FDAF1E5C17CD961 /* dma.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dma.h; sourceTree = ""; }; - 053CC9F79B24C95D4BA1804F4282EC93 /* GTMMIMEDocument.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMMIMEDocument.h; path = Source/GTMMIMEDocument.h; sourceTree = ""; }; + 0537A904DB84DDF42A37224D6E21A907 /* GTLRRuntimeCommon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRRuntimeCommon.m; path = Source/Objects/GTLRRuntimeCommon.m; sourceTree = ""; }; 055F19EAEEC932D69F4AD6D6C02673B1 /* TextureFilters_hq2x.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters_hq2x.cpp; sourceTree = ""; }; 0577268AB0BC44BB1F536100FA4F2815 /* Texture.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Texture.hpp; sourceTree = ""; }; - 0578BFC4BF51617091C2DE4924C3A501 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/SDWebImageDownloader.m; sourceTree = ""; }; 05891BAE30F46A352A061FDD712EE3AC /* MelonDSEmulatorBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MelonDSEmulatorBridge.h; sourceTree = ""; }; - 059E076DC22B421E03349A4BC56852DD /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; 05D90FC573A940BC6669EC489A1DB016 /* ft2build.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ft2build.h; sourceTree = ""; }; 05E7291F492456F36AE41FD68A486294 /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; sourceTree = ""; }; 05E756BE049BECB36FD17276742F19FD /* GameProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameProtocol.swift; sourceTree = ""; }; - 05EFB60F8ABE052EE4B3C48B77C63D6B /* GTLRDuration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDuration.h; path = Source/Objects/GTLRDuration.h; sourceTree = ""; }; 05F3C29A1F7007590F21D1381BF87758 /* pngwio.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngwio.c; sourceTree = ""; }; 063A16999A8C4EC5F4A86EE181EE41A9 /* NstBoardBmc15in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc15in1.hpp; sourceTree = ""; }; 0648DF1F7281B9D745ECF96C143F2C8F /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; sourceTree = ""; }; @@ -2224,7 +2323,9 @@ 0680D0EC0F7556C47C63C604ADEFD565 /* GameController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameController.swift; sourceTree = ""; }; 06850EEF7309E2768118A0945B11FCA5 /* WindowStyle.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = WindowStyle.hpp; sourceTree = ""; }; 06887CF48CFCCD61F000F6D7ADADB817 /* Mutex.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Mutex.hpp; sourceTree = ""; }; + 0698C5226E823C39770BD349C70B0687 /* AppAuth.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AppAuth.modulemap; sourceTree = ""; }; 069E1C3C7AEB534A73EC0DABE1B5EFB0 /* NstBoardBenshengBs5.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBenshengBs5.hpp; sourceTree = ""; }; + 06ADE05CA7A29A787C2432063D18C3EB /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; 06E6ED3761F907C941B3EF6B837BB916 /* NstBoardTaitoX1005.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTaitoX1005.hpp; sourceTree = ""; }; 071B830438D1BFFE8BCC6D2DD693D2CA /* gSP.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = gSP.cpp; sourceTree = ""; }; 0736FF5EBC91716B5E0653CB6248996E /* CombinerKey.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CombinerKey.cpp; sourceTree = ""; }; @@ -2242,7 +2343,6 @@ 0906F4731470C31D026AF417D3565A77 /* NstBoardBmcGolden190in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcGolden190in1.hpp; sourceTree = ""; }; 0909B8D3D1894139A67FE93CFCC01DB1 /* NstBoardBmcFamily4646B.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcFamily4646B.hpp; sourceTree = ""; }; 090FCC05017DE4C785A3A0842C353651 /* GBAcpu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBAcpu.h; sourceTree = ""; }; - 0911CB832D9A4864180F2DCFB13BCC10 /* GTLRFramework.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRFramework.h; path = Source/Utilities/GTLRFramework.h; sourceTree = ""; }; 091DED2DD5BC6745EBBD64305E80ED68 /* ftoutln.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftoutln.h; sourceTree = ""; }; 092D038ED4B7771CB6E22F62CF4FCE35 /* callbacks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = callbacks.h; sourceTree = ""; }; 092DB3EB21BDEE14EBAE69612D017417 /* FilterChain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FilterChain.swift; sourceTree = ""; }; @@ -2257,14 +2357,21 @@ 0A1AC84009E55C7A033290B41BE0185A /* ftadvanc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftadvanc.h; sourceTree = ""; }; 0A1CB1180B4A23EF647F7E0BE5C5E0B0 /* NstNsf.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstNsf.hpp; sourceTree = ""; }; 0A2357A4BDFBA00F38907D9F08280DF3 /* NstBoardUnlWorldHero.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlWorldHero.hpp; sourceTree = ""; }; + 0A2B008456750489266ED1E1757F116E /* OIDAuthorizationResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDAuthorizationResponse.m; path = Source/AppAuthCore/OIDAuthorizationResponse.m; sourceTree = ""; }; + 0A2C38334522FD96B8FC777F0039D64B /* Archive+Writing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Writing.swift"; path = "Sources/ZIPFoundation/Archive+Writing.swift"; sourceTree = ""; }; 0AA822019E7EB83C4B3DBA1EEE0BBE2F /* System.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = System.h; sourceTree = ""; }; + 0ACF2FB28941FBF4FE5C9B8E60DFD3A9 /* DropboxClientsManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxClientsManager.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxClientsManager.swift; sourceTree = ""; }; + 0B2698B75759D27EF243CC7E533878B5 /* StoneBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoneBase.swift; path = Source/SwiftyDropbox/Shared/Generated/StoneBase.swift; sourceTree = ""; }; 0B30911B6A5E0646227CAD4286FA16F9 /* GBADeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GBADeltaCore-dummy.m"; sourceTree = ""; }; + 0B33F3AF9A561EA8451966176F78F1BD /* OIDEndSessionResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDEndSessionResponse.m; path = Source/AppAuthCore/OIDEndSessionResponse.m; sourceTree = ""; }; 0B34E5D0AA3B5154E76417C4AFD1E7A8 /* ExtensibleEnums.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExtensibleEnums.swift; sourceTree = ""; }; 0B70F65B08C7DBDD9932A1ADE91DE586 /* PaletteTexture.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = PaletteTexture.cpp; sourceTree = ""; }; + 0B76D0275A850219FC0DB8E28690133C /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; 0B95DFEB81DF1D8518CAE70B259EBC9D /* pngstruct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngstruct.h; sourceTree = ""; }; 0BAA9FFA63CBF1E7F10FDC637ABD3F6B /* NSPersistentStore+Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSPersistentStore+Configuration.swift"; sourceTree = ""; }; - 0BBF21DB7D0A3DEFC2DB5CF5C384EC77 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; + 0BAEF49A2334870E4FC91FC1EA0F4972 /* SQLite.swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SQLite.swift.debug.xcconfig; sourceTree = ""; }; 0C0E24A9C80929074CE421F5E143D51D /* NSPredicate+Search.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSPredicate+Search.h"; path = "Roxas/NSPredicate+Search.h"; sourceTree = ""; }; + 0C147496CE2BE85DE98AFC33F2DBDC08 /* GoogleAPIClientForREST-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleAPIClientForREST-umbrella.h"; sourceTree = ""; }; 0C294380A302333A15E6E9C07DBB5B94 /* Roxas-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Roxas-umbrella.h"; sourceTree = ""; }; 0C2C2469F8CD59B3DDC9C1BDF2DA5B0B /* ring_buffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ring_buffer.h; sourceTree = ""; }; 0CAD629C78F4E51B87B6EFB4DCC01E05 /* Log_ios.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = Log_ios.mm; sourceTree = ""; }; @@ -2272,13 +2379,14 @@ 0CD299184405C4128DEA2447113D9BAF /* Types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Types.h; sourceTree = ""; }; 0CDA0FC7271D53C680CB63F678C1ABF1 /* NstBoardUnlTf1201.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlTf1201.hpp; sourceTree = ""; }; 0CE161D27A87AAD9038E12AFD2F2F42F /* TxReSample.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxReSample.cpp; sourceTree = ""; }; + 0CF1F486490405CB6D327E9964B48F24 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/SDWebImageManager.h; sourceTree = ""; }; 0D1F8117CF84C591BD76F30075300432 /* RSTCollectionViewGridLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCollectionViewGridLayout.m; path = Roxas/RSTCollectionViewGridLayout.m; sourceTree = ""; }; 0D23AF10496651959F4FCBA8CD845C8C /* ftautoh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftautoh.h; sourceTree = ""; }; 0D2AD7F0330EEE53F5D0CF3BFA80E563 /* NstSha1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstSha1.hpp; sourceTree = ""; }; - 0D57E07B7CA9C82C9090FC455119B46B /* SwiftyDropbox-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyDropbox-umbrella.h"; sourceTree = ""; }; 0D5C95E1E368FFAA018FC6B2E9FAEF6C /* SoundTouch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SoundTouch.h; sourceTree = ""; }; 0D8CE58CF70DD1E088581E3000641372 /* glsl_CombinerProgramBuilder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramBuilder.cpp; sourceTree = ""; }; 0D933F04F185D2DB2581767B7A1F17C9 /* remote.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = remote.h; sourceTree = ""; }; + 0DAEEE63785B00C93A66E60C0A817F87 /* GTLRBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBase64.m; path = Source/Utilities/GTLRBase64.m; sourceTree = ""; }; 0DB410AC329D13D7051BC6E0A7D5BBE5 /* Transform.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Transform.hpp; sourceTree = ""; }; 0DC1345C3C633EB2A4735D643C13A965 /* Http.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Http.hpp; sourceTree = ""; }; 0DC3D4170D48C711D6FF239C665FCDD3 /* NstBoardBmcSuperVision16in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuperVision16in1.hpp; sourceTree = ""; }; @@ -2288,16 +2396,14 @@ 0E048CA236FFF78A2B866CA79D9255B1 /* pure_interp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pure_interp.h; sourceTree = ""; }; 0E1CF313816E073C9354BD9519ABC4C4 /* opengl_ColorBufferReaderWithBufferStorage.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ColorBufferReaderWithBufferStorage.cpp; sourceTree = ""; }; 0E2E27F6A574D10C04C2A28A8F7F929B /* ftttdrv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftttdrv.h; sourceTree = ""; }; - 0E7A1D4D282B1A61276595B3F2DA9630 /* GTLRURITemplate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRURITemplate.m; path = Source/Utilities/GTLRURITemplate.m; sourceTree = ""; }; - 0E9B2D2921B154E904D13D0ECB5ED2B0 /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; - 0EC698B7882B84A8292DBB86C9F1ECA7 /* Query.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Query.swift; path = Sources/SQLite/Typed/Query.swift; sourceTree = ""; }; - 0ECCD45E4DF53FED6DA4A6938B32FD27 /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; + 0E46C56B92BDA7292006F96168CEEED5 /* OIDEndSessionRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDEndSessionRequest.m; path = Source/AppAuthCore/OIDEndSessionRequest.m; sourceTree = ""; }; 0EE83B4C6CE642DC6ED9ED13139A14FD /* NstApiSound.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiSound.hpp; sourceTree = ""; }; 0F06F6967904359DAF7E76D7BBB0C4F9 /* PlatformConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PlatformConfig.h; sourceTree = ""; }; 0F2CA0906100AC0704069571719461AF /* NstBoardUnlCc21.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlCc21.hpp; sourceTree = ""; }; 0F35DDDB6786F90A32DA6F7EAE36B032 /* NstInpPachinko.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPachinko.hpp; sourceTree = ""; }; 0F4534A20DE8F8809FD5A2FAB80E52C1 /* SoundSource.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundSource.hpp; sourceTree = ""; }; 0F66CBD0D936F023EA1B5A8FD9C18248 /* Drawable.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Drawable.hpp; sourceTree = ""; }; + 0F7FF9A766FC21BE3E37E65D11FE6906 /* GTLRObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRObject.h; path = Source/Objects/GTLRObject.h; sourceTree = ""; }; 0FF6DFA2E1F6CE9BE69FDF132CFCA0EB /* ThreadImpl.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadImpl.cpp; sourceTree = ""; }; 100591FC1EB3894E604B7F1E611F4197 /* assem_x86.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assem_x86.h; sourceTree = ""; }; 101F7456267E2C9C8B7BA57B28E456CD /* Sensor.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Sensor.hpp; sourceTree = ""; }; @@ -2305,11 +2411,12 @@ 103BD5750DB5001ED6AD8D19BA221BC5 /* DLTAMuteSwitchMonitor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DLTAMuteSwitchMonitor.h; path = "../Emulator Core/Audio/DLTAMuteSwitchMonitor.h"; sourceTree = ""; }; 104E9C84E010B1DB40F30B8A6D71F370 /* VideoManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VideoManager.swift; sourceTree = ""; }; 105C1D6DE734E0BA808F14764DB1D0C6 /* DeleteRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeleteRecordOperation.swift; sourceTree = ""; }; - 10640380C87A1BC9B04007C2A3C1F529 /* Auth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Auth.swift; path = Source/SwiftyDropbox/Shared/Generated/Auth.swift; sourceTree = ""; }; 107157B094E03DFB68D4F654B49722D6 /* GameView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameView.swift; sourceTree = ""; }; + 10AB5968054BF23F73574ED91AB978C1 /* OIDExternalUserAgentSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDExternalUserAgentSession.h; path = Source/AppAuthCore/OIDExternalUserAgentSession.h; sourceTree = ""; }; 10AC04C7503E2DA405EE0A6B53DE10DA /* Version.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Version.swift; sourceTree = ""; }; 11339ABDEA626716BA06C85A49A39453 /* NstBoardJalecoJf17.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJalecoJf17.hpp; sourceTree = ""; }; 1161DA676E766D39CAA4591DBCD53D45 /* dd_controller.c */ = {isa = PBXFileReference; includeInIndex = 1; path = dd_controller.c; sourceTree = ""; }; + 1170BF99B298B53699071262DB9FCFB3 /* OIDAuthStateChangeDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDAuthStateChangeDelegate.h; path = Source/AppAuthCore/OIDAuthStateChangeDelegate.h; sourceTree = ""; }; 117A5FCAB2DE05F212AD4037F599CEA0 /* VertexArray.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = VertexArray.hpp; sourceTree = ""; }; 117F03E796D3E4C1912371CA0722AF12 /* Thread.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Thread.cpp; sourceTree = ""; }; 119BB39F7E9FD0CA9AEF703928526233 /* MelonDSDeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MelonDSDeltaCore-umbrella.h"; sourceTree = ""; }; @@ -2317,27 +2424,26 @@ 11D58CDB406CFD79E7AC3E81C6B8B7BD /* Pods-Delta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Delta-dummy.m"; sourceTree = ""; }; 11D6B4F6E066DF2E8ED26399CF6D7821 /* render3D.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = render3D.h; sourceTree = ""; }; 12340527430BF0F362B63C225065A253 /* opengl_BufferManipulationObjectFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_BufferManipulationObjectFactory.h; sourceTree = ""; }; - 124410B31A9E378F93FDB8A1B6FA19A2 /* ContactsRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContactsRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/ContactsRoutes.swift; sourceTree = ""; }; 124DA3F029DAB83892517A557F6DBEF8 /* NstInpTopRider.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpTopRider.hpp; sourceTree = ""; }; 127AD280199D3775991F5A47656B16BC /* Version+Revision.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Version+Revision.swift"; sourceTree = ""; }; 1297B20DFF4473E5F547712B85C19A4C /* missing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = missing.h; sourceTree = ""; }; 12B32F4CD8E5782EAE7525A700D68049 /* NstBoardSachen.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachen.hpp; sourceTree = ""; }; - 12FF6FB31C4FC8525FF9C9D35EDCABC3 /* SQLite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SQLite.h; path = Sources/SQLite/SQLite.h; sourceTree = ""; }; - 131DE5B5A662F4982F678A6226865295 /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/NSData+ImageContentType.m"; sourceTree = ""; }; 133B0E7CF4E6609FC38EDC0D0F8D25AA /* elf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = elf.h; sourceTree = ""; }; 133C263D527099B1DC5F15E635A28E8D /* NstInpMahjong.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpMahjong.hpp; sourceTree = ""; }; 135664C79DDD08714827F192D20F17D8 /* NstBoardBtlGeniusMerioBros.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlGeniusMerioBros.hpp; sourceTree = ""; }; + 13569C5378937CE484A595684F2B6253 /* OIDIDToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDIDToken.h; path = Source/AppAuthCore/OIDIDToken.h; sourceTree = ""; }; 135D0D9E24E408F464F93300BA4BF7B3 /* eventloop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = eventloop.h; sourceTree = ""; }; - 1371A75FE41949E4BA02D89705197634 /* GTLRDateTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDateTime.m; path = Source/Objects/GTLRDateTime.m; sourceTree = ""; }; - 13BAA83DB690C1835AB70FD3FC749AFF /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/UIImage+GIF.h"; sourceTree = ""; }; - 13E2386205BC0C6A8574002DB9AF6B91 /* SQLite.swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SQLite.swift.modulemap; sourceTree = ""; }; - 13E613695F9989137A9FF581460F493C /* CLSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSStackFrame.h; path = iOS/Crashlytics.framework/Headers/CLSStackFrame.h; sourceTree = ""; }; + 13B316FCB59B7F1A1B43657E5726656E /* OIDExternalUserAgentCatalyst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDExternalUserAgentCatalyst.m; path = Source/AppAuth/iOS/OIDExternalUserAgentCatalyst.m; sourceTree = ""; }; + 13C3FE2E20CFC9B988170243D56ACE9B /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/SQLite/Typed/Expression.swift; sourceTree = ""; }; + 13EE631F19BD42787C6A3844D1625C06 /* SQLite.swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SQLite.swift.modulemap; sourceTree = ""; }; 14503D46A2DB23A541BE74A544353DF6 /* GPU2D.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GPU2D.h; sourceTree = ""; }; 145B433A6710947EB52A1518D28FB661 /* instr_counters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = instr_counters.h; sourceTree = ""; }; 146429EC2344DCAD80826ED3B4177EE9 /* savestate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = savestate.h; sourceTree = ""; }; + 147380551203FA839FB1F446BC985FA2 /* FABAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FABAttributes.h; path = iOS/Fabric.framework/Headers/FABAttributes.h; sourceTree = ""; }; 149061ADA1E30AF417B77CEB74D07B8D /* DSi_SPI_TSC.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_SPI_TSC.cpp; sourceTree = ""; }; 1498F44EE9D14A474CEDEE48E5E2896B /* NstHook.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstHook.hpp; sourceTree = ""; }; 14A77E30EF61FC6FB2A8792E6A917634 /* Dictionary+Sequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Dictionary+Sequence.swift"; sourceTree = ""; }; + 14EAE7328BBAFFB03192CE3D50F2E038 /* OIDAuthState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDAuthState.m; path = Source/AppAuthCore/OIDAuthState.m; sourceTree = ""; }; 14F2BD453817B0EC3B09CC7CAFACF62C /* CharacterSet+Hexadecimals.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CharacterSet+Hexadecimals.swift"; sourceTree = ""; }; 14F53C32B32D062C3A7D28C47C6BAA0B /* WifiAP.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = WifiAP.cpp; sourceTree = ""; }; 150A3F323AA95A1409D48675009ADA82 /* 3DMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = 3DMath.h; sourceTree = ""; }; @@ -2354,13 +2460,12 @@ 16927AB40C2007C65D90452F147BB36B /* NstBoardCnePsb.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCnePsb.hpp; sourceTree = ""; }; 16E7163E9E035CE9295C356CD79F0E03 /* NstVideoFilterScaleX.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoFilterScaleX.hpp; sourceTree = ""; }; 16E8AE20B9CFDB87D64063469B6C2C5C /* Dialogs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Dialogs.h; sourceTree = ""; }; + 16EC71A85F94E8C3BB45FD9A7137656B /* Answers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Answers.h; path = iOS/Crashlytics.framework/Headers/Answers.h; sourceTree = ""; }; 17093C4C53CE939177773FF4D3A2247E /* TextureFilters_xbrz.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilters_xbrz.h; sourceTree = ""; }; 170B155DBFDD680271E2D9982A607A14 /* FramebufferTextureFormats.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FramebufferTextureFormats.h; sourceTree = ""; }; 17181ED2D304D8A94535FE3C58B4C56A /* NstInpDevice.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpDevice.hpp; sourceTree = ""; }; - 17191C33E01881A9A1CB215D6932040B /* GTLRDriveService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDriveService.m; path = Source/GeneratedServices/Drive/GTLRDriveService.m; sourceTree = ""; }; 171F9A5206DE0CC67CF12102162639DC /* GLideN64.ini */ = {isa = PBXFileReference; includeInIndex = 1; path = GLideN64.ini; sourceTree = ""; }; 1735D1ADD52CF3EE3763809EF50C9F46 /* ROMList.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ROMList.h; sourceTree = ""; }; - 175A71504D934211FCC245712633EBF6 /* Fabric.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Fabric.debug.xcconfig; sourceTree = ""; }; 1763E08842BCEC128520DBF80C43E656 /* NstBoardKonamiVsSystem.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVsSystem.hpp; sourceTree = ""; }; 17727E0A676EE497F9A211B83A5E4F20 /* Harmony.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Harmony.modulemap; sourceTree = ""; }; 177DC1057417A79A373681D0E58744E8 /* F3DEX2CBFD.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DEX2CBFD.cpp; sourceTree = ""; }; @@ -2374,23 +2479,26 @@ 1830EF8CBAB2A6E698C20190E98E0CBF /* ftchapters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftchapters.h; sourceTree = ""; }; 1843FF8911EC37CF2A63F5904DD381ED /* ConvexShape.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = ConvexShape.hpp; sourceTree = ""; }; 186A8A256C8617314B0C613AEF8628A8 /* ThumbstickInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ThumbstickInputView.swift; sourceTree = ""; }; - 187CA309F162A5C8E844D881DBC4B533 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; 188F965C5720E62E8F6D72473921BCA0 /* cpu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cpu.h; sourceTree = ""; }; 18B2919809C4CFF342E76CFFC86FF457 /* GBACart.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GBACart.cpp; sourceTree = ""; }; - 18B8DECBB8717BFBD8259BF1384944BA /* Entry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Entry.swift; path = Sources/ZIPFoundation/Entry.swift; sourceTree = ""; }; 18C47529D612750BAFD8B41096414B5A /* NSConstraintConflict+Conveniences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSConstraintConflict+Conveniences.m"; path = "Roxas/NSConstraintConflict+Conveniences.m"; sourceTree = ""; }; + 1903B1725F196A865B52DDDC1A2BD740 /* SDWebImageDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDecoder.m; path = SDWebImage/SDWebImageDecoder.m; sourceTree = ""; }; + 190BDF601666D0980206E38BF1F0EE15 /* SharingRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SharingRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/SharingRoutes.swift; sourceTree = ""; }; 191C48F3CD32BEBC50796D1DFC6E4A00 /* glcorearb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glcorearb.h; sourceTree = ""; }; 193169F4EC9BA3A241FB52DE5F655E55 /* GBCTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = GBCTypes.m; sourceTree = ""; }; 194DF7309682A9D246CD7A2499E62054 /* SndOut.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SndOut.h; sourceTree = ""; }; 195A6B350BE4AA281F1C3D85C256DE64 /* N64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = N64.swift; sourceTree = ""; }; + 196F592EF827C71B59D72F88BBFADB73 /* Crashlytics.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Crashlytics.release.xcconfig; sourceTree = ""; }; 196F9F426B7880E6628258D602510711 /* ARCodeFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARCodeFile.h; sourceTree = ""; }; - 19DAEF74182F401F21DF4FA82B1FD4B2 /* FTS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FTS5.swift; path = Sources/SQLite/Extensions/FTS5.swift; sourceTree = ""; }; + 199EF9595C8ADA9D488E6011C710237A /* GTMAppAuthFetcherAuthorization+Keychain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMAppAuthFetcherAuthorization+Keychain.h"; path = "GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization+Keychain.h"; sourceTree = ""; }; 1A4F0E97FCA28B46E41A4DE5C72FDED1 /* OutputSoundFile.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = OutputSoundFile.hpp; sourceTree = ""; }; + 1A59BF4564B0426D4BD0FC48C7AFF077 /* PaperRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PaperRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/PaperRoutes.swift; sourceTree = ""; }; 1A73E4863B50D443B8690784AE23332E /* Time.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Time.cpp; sourceTree = ""; }; 1AB76FD695A8F85C4F2D14CDD05A7647 /* NstBoardMmc4.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMmc4.hpp; sourceTree = ""; }; 1ACA4549EF8177725B56D2E737602463 /* NstBoardAgci.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAgci.hpp; sourceTree = ""; }; 1AF60355DDCB4C37B37B346B3A139591 /* snes9x.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = snes9x.h; sourceTree = ""; }; 1B0E2F1A46796E056C1EB81517BADB9E /* ttunpat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ttunpat.h; sourceTree = ""; }; + 1B2756D7B604A26C88B2CF4AE96B6235 /* FileManager+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FileManager+ZIP.swift"; path = "Sources/ZIPFoundation/FileManager+ZIP.swift"; sourceTree = ""; }; 1B66F2860FCED552A9CBCF10B482ADB4 /* Result+Success.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Result+Success.swift"; sourceTree = ""; }; 1B6845564D5CCCEE5193E41148287014 /* RSTRelationshipPreservingMergePolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTRelationshipPreservingMergePolicy.h; path = Roxas/RSTRelationshipPreservingMergePolicy.h; sourceTree = ""; }; 1B85F775ADA1480E245297449F858A58 /* NstBoardBmc72in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc72in1.hpp; sourceTree = ""; }; @@ -2398,26 +2506,26 @@ 1BE7418CB47A4D76B9D5A36DD85694BF /* NstBoardUnlEdu2000.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlEdu2000.hpp; sourceTree = ""; }; 1C270BF8D0AF1673AA48E2495128A2CB /* DeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DeltaCore-umbrella.h"; sourceTree = ""; }; 1C2D5F89F949859FF4665D03834D9EC0 /* pngstruct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngstruct.h; sourceTree = ""; }; - 1C5F8657F7A40B8346317B773095E039 /* GTLRDriveService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDriveService.h; path = Source/GeneratedServices/Drive/GTLRDriveService.h; sourceTree = ""; }; - 1C84F28BC8941E34DD2FCD83B3BA50C0 /* GTMNSDictionary+URLArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSDictionary+URLArguments.h"; path = "Foundation/GTMNSDictionary+URLArguments.h"; sourceTree = ""; }; 1C8AF4CC1A659AC6382CFC356A0E46E8 /* GPU3D.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GPU3D.h; sourceTree = ""; }; 1C9E2FAC3B0BCD4CAF1070323704128C /* F5Indi_Naboo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F5Indi_Naboo.h; sourceTree = ""; }; 1CAC7BD1A9DBB436A379B63568AB915F /* ARMInterpreter_Branch.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMInterpreter_Branch.cpp; sourceTree = ""; }; 1CBA76EDD27FA2D20B1EA0F0BF7F082C /* SwiftyDropbox */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = SwiftyDropbox; path = libSwiftyDropbox.a; sourceTree = BUILT_PRODUCTS_DIR; }; 1CBCD15F20F318500823C4E873BB6568 /* RSTNibView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTNibView.h; path = Roxas/RSTNibView.h; sourceTree = ""; }; - 1CD8779AE248D2A01EAEB45063005C71 /* TeamLogRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamLogRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamLogRoutes.swift; sourceTree = ""; }; + 1CFBBFCD11DF5152F30C049558087FA5 /* OIDExternalUserAgentRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDExternalUserAgentRequest.h; path = Source/AppAuthCore/OIDExternalUserAgentRequest.h; sourceTree = ""; }; 1D28337CD2487A0BB2C9A58E121AD619 /* UdpSocket.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = UdpSocket.hpp; sourceTree = ""; }; 1D3BF3621581C1A5BF06B7FFAF27C8B4 /* ftsynth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftsynth.h; sourceTree = ""; }; 1D4578193F1247C295056EC2A8E49E7D /* Window.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Window.hpp; sourceTree = ""; }; 1D4C3A6603990DE07B5A1A0D0DA26809 /* Export.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Export.hpp; sourceTree = ""; }; + 1D7A5D7D8CAD4684E8FC0960E77D2A76 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; 1DA8EB0F2D12415D238B016624275500 /* txWidestringWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = txWidestringWrapper.h; sourceTree = ""; }; + 1DB3D56DF81E139F8DE10B4B81F75A9E /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/SDWebImageDownloaderOperation.m; sourceTree = ""; }; 1DB78BBE91A07FE94FFEBBDD3B5A29F5 /* VI.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = VI.cpp; sourceTree = ""; }; 1DC7FC22376787B4AD635EF64919EE2F /* NstBoardUnlSuperFighter3.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlSuperFighter3.hpp; sourceTree = ""; }; 1DD4A155AA83E86B6E47CBA1E9CD0B45 /* dsp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dsp.h; sourceTree = ""; }; 1DEEC2B2658603EA59BFF5DBE5E02A90 /* NstVector.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVector.hpp; sourceTree = ""; }; 1DFD1D3FB89CFCF0208D414DDE2C3D83 /* NESDeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NESDeltaCore.debug.xcconfig; sourceTree = ""; }; + 1E00B17C1A5DC9E1DDE14FE714A5AFBE /* GoogleAPIClientForREST.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAPIClientForREST.debug.xcconfig; sourceTree = ""; }; 1E19119079CB6BCA159A7B0EC7E7B250 /* NstBoardHxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardHxRom.hpp; sourceTree = ""; }; - 1E2085B3FF507E08C3040D7E3D3C295B /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/SQLite/Typed/Expression.swift; sourceTree = ""; }; 1E386BD0BB0ECC459FA522E26E6F0D42 /* NstApiMachine.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiMachine.hpp; sourceTree = ""; }; 1E4A756F26BAC97D488ACFDC54789A73 /* TxHiResCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxHiResCache.h; sourceTree = ""; }; 1E5356E04E92615CFF0666E5987CE594 /* NESDeltaCore */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = NESDeltaCore; path = libNESDeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -2425,8 +2533,9 @@ 1EB109D8EAF10C56E1B3A5EA385A22B0 /* winlnxdefs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = winlnxdefs.h; sourceTree = ""; }; 1EC4DA03D57871D39A99EA01B272D4B9 /* exprNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = exprNode.h; sourceTree = ""; }; 1EEC75EC7031D203F22BC56362793D38 /* ObjectHandle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectHandle.cpp; sourceTree = ""; }; + 1EF9B4800AD37F657F3399A0AF68A314 /* CLSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSStackFrame.h; path = iOS/Crashlytics.framework/Headers/CLSStackFrame.h; sourceTree = ""; }; + 1F236A3805E02C90AE33A5EAB004863A /* Crashlytics.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Crashlytics.debug.xcconfig; sourceTree = ""; }; 1F23DBC67505E77BE77552D6D84A3DAA /* GBCDeltaCore-GBCDeltaCore */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "GBCDeltaCore-GBCDeltaCore"; path = GBCDeltaCore.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 1F2DBB27BEEB1C9D7D604A978D9DD6B6 /* DBChunkInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DBChunkInputStream.m; path = Source/SwiftyDropbox/Shared/Handwritten/DBChunkInputStream.m; sourceTree = ""; }; 1F32CBDF7F217BF39F5A8E98EBE51698 /* NstBoardBtlT230.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlT230.hpp; sourceTree = ""; }; 1F6EA5860DA0376325BD9692907C87EF /* opengl_TextureManipulationObjectFactory.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_TextureManipulationObjectFactory.cpp; sourceTree = ""; }; 1F859C835F87766EF7FBFFB399501D01 /* Shader.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Shader.hpp; sourceTree = ""; }; @@ -2442,7 +2551,9 @@ 2128629C2E748025D3FB6470F39C3F8C /* TcpListener.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = TcpListener.hpp; sourceTree = ""; }; 2158278AE32018CEB6355F65E9A01568 /* ftheader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftheader.h; sourceTree = ""; }; 216ACFC72536D5772D02237D7C716E46 /* DLTAMuteSwitchMonitor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = DLTAMuteSwitchMonitor.m; sourceTree = ""; }; + 2171C49089CA39B5AB9C5AB30B0A2EFF /* OIDScopeUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDScopeUtilities.h; path = Source/AppAuthCore/OIDScopeUtilities.h; sourceTree = ""; }; 218362C970E305172BDC33EC29EE5E9A /* NstBoardBmcFk23c.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcFk23c.hpp; sourceTree = ""; }; + 219AF562FA6151A79D962EC5F6BBAC8F /* AppAuth-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AppAuth-prefix.pch"; sourceTree = ""; }; 21E398FC7D62E8D6680411C9513B39A0 /* Savestate.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Savestate.cpp; sourceTree = ""; }; 21F887B2571901F5C1B0E7E06528AF66 /* NstBoardSachenSa0036.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenSa0036.hpp; sourceTree = ""; }; 2205C23EE949E458595B874E1F2F54B0 /* CombinerProgram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CombinerProgram.h; sourceTree = ""; }; @@ -2452,6 +2563,7 @@ 22369F9700ABF0D580BE24D3E391B43C /* Graphics.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Graphics.hpp; sourceTree = ""; }; 229BBE000F8954FF0FD0C2D18ECB8463 /* array.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = array.h; sourceTree = ""; }; 22A7DADFCDAEAC310AB54ECC56773765 /* glsl_SpecialShadersFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_SpecialShadersFactory.h; sourceTree = ""; }; + 22AA280DD1D36ECC49012CE94F92FF70 /* AggregateFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AggregateFunctions.swift; path = Sources/SQLite/Typed/AggregateFunctions.swift; sourceTree = ""; }; 22D9323511F1615198D8034484F5E9BB /* GlResource.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = GlResource.hpp; sourceTree = ""; }; 230CA3A76ADC8CA21BF4C3575F6B34A0 /* ZSort.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ZSort.h; sourceTree = ""; }; 231187F01BD89BC85A528AEFA81C0E96 /* TexrectDrawer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TexrectDrawer.cpp; sourceTree = ""; }; @@ -2460,9 +2572,10 @@ 2327BFAA2B34E53C849391EFB6C26E15 /* CheatSearch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CheatSearch.h; sourceTree = ""; }; 232D7A46495F7EDE0AA71065D2D2DAD4 /* NstIoLine.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstIoLine.hpp; sourceTree = ""; }; 23322BAA6BC48277E409BCCB4717F470 /* DeltaTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DeltaTypes.m; path = DeltaCore/DeltaTypes.m; sourceTree = ""; }; - 23337F04F86774C07156F65B6DF86644 /* Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Foundation.swift; path = Sources/SQLite/Foundation.swift; sourceTree = ""; }; 23456D53AC1C42C6E27540F52DA0A19A /* NstBoardFutureMedia.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardFutureMedia.hpp; sourceTree = ""; }; 234810B6DB1F369179094875381A0A0C /* r4300_core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = r4300_core.h; sourceTree = ""; }; + 23760AABA54F71B0F06346CA543E4161 /* Query.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Query.swift; path = Sources/SQLite/Typed/Query.swift; sourceTree = ""; }; + 237C158F7CC5E577445E86C2492F4FEC /* Collation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Collation.swift; path = Sources/SQLite/Typed/Collation.swift; sourceTree = ""; }; 237EA7FAD30101B1B933A7BFC4950C00 /* cpuaddr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cpuaddr.h; sourceTree = ""; }; 2394DCECC5F71EDBCEE1E73732453EAF /* RSTOperationQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTOperationQueue.m; path = Roxas/RSTOperationQueue.m; sourceTree = ""; }; 23ACB54BC353515116EF1E02A2A1D1E8 /* NstBoardIremG101.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardIremG101.hpp; sourceTree = ""; }; @@ -2470,83 +2583,87 @@ 23E3548D42C843603C9BA78FE84A0935 /* Lock.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Lock.hpp; sourceTree = ""; }; 23FC57B058007BA7A82CEA8B9EC5FDF6 /* pngconf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = ""; }; 244AA64A50CBA5A8F3D7EC0201C6CF6A /* rtc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rtc.h; sourceTree = ""; }; - 24542D74858775F20FC6798EF8EE4264 /* SQLite.swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SQLite.swift-prefix.pch"; sourceTree = ""; }; + 247B8D6B9E9E7BB417296B8976528C7E /* Archive+Reading.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Reading.swift"; path = "Sources/ZIPFoundation/Archive+Reading.swift"; sourceTree = ""; }; 2499B2A39C9F997BD275818028C50100 /* m64p_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_common.h; sourceTree = ""; }; 249E3E889143B437B35E6E41D194917D /* NstApiNsf.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiNsf.hpp; sourceTree = ""; }; + 24A83CCF6D3C57506C97EB1CEAAC398C /* OIDRegistrationResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDRegistrationResponse.m; path = Source/AppAuthCore/OIDRegistrationResponse.m; sourceTree = ""; }; 24AA279D040856030E6831B7389C2433 /* File.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = ""; }; 24AFD84AB2FD9F2A10CA2637C8A63A31 /* ftlist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftlist.h; sourceTree = ""; }; - 251C6319AD50CB50F18D50CBF727F8B2 /* GoogleToolboxForMac */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = GoogleToolboxForMac; path = libGoogleToolboxForMac.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 251F4684C8F4F0E1A81110A7ECA9406C /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Source/SwiftyDropbox/Shared/Generated/Async.swift; sourceTree = ""; }; 25C367213C4B5972B0DA19F3A696F4B4 /* Arm64Emitter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Arm64Emitter.cpp; sourceTree = ""; }; 25C73FB51C8BC62E6168E00A2CC8D348 /* Vector2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Vector2.hpp; sourceTree = ""; }; 25D7615688AA86FED1AC4BB20B4DDA61 /* GBATypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBATypes.h; sourceTree = ""; }; 25E7599D22683A4DB4231E1CCFA343D4 /* Vector3.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Vector3.hpp; sourceTree = ""; }; + 25EF96F6B9247B60C952A5BB11777FD0 /* SwiftyDropbox-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyDropbox-umbrella.h"; sourceTree = ""; }; 262B52A2B8C6A3CAF3DB4C8B6B761203 /* m64p_plugin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_plugin.h; sourceTree = ""; }; 264DC59A3497324A71B2383889C54393 /* svgldict.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svgldict.h; sourceTree = ""; }; 265FE08FE13B5C52A3147FA23F7AE581 /* NstBoardSachenSa0037.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenSa0037.hpp; sourceTree = ""; }; 26646A28E9ED441AB97D854E6673E8A6 /* NstBoardMmc3.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMmc3.hpp; sourceTree = ""; }; 266ED18C08BE308BE761E84DB71257BD /* UIScreen+ControllerSkin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIScreen+ControllerSkin.swift"; sourceTree = ""; }; - 268A80FCD8A58CFE6C097469D5AF1C00 /* GoogleAPIClientForREST-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleAPIClientForREST-dummy.m"; sourceTree = ""; }; 2691325FF990437B6E7EAB62E91963C2 /* RSTCompositeDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCompositeDataSource.m; path = Roxas/RSTCompositeDataSource.m; sourceTree = ""; }; - 269EA2D23CF6BACE160800DAAC54DC94 /* GTMNSString+URLArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSString+URLArguments.h"; path = "Foundation/GTMNSString+URLArguments.h"; sourceTree = ""; }; 26ACDD74537A9B88E74C1CF1FB3A5D2C /* CommonAPIImpl_common.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CommonAPIImpl_common.cpp; sourceTree = ""; }; 26D2E2CEDE1DD7669C1A099A2187DB84 /* NstBoardTaitoTc0190fmc.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTaitoTc0190fmc.hpp; sourceTree = ""; }; + 26D87D2AD10A8E21F109C33C9251C5E9 /* GTLRDriveService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDriveService.m; path = Source/GeneratedServices/Drive/GTLRDriveService.m; sourceTree = ""; }; 26D9EC83F6440D8D511ACF37FDF0BD8A /* UITableView+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+CellContent.m"; path = "Roxas/UITableView+CellContent.m"; sourceTree = ""; }; - 26ECC555C3C58DB5AFADDF0AA680057C /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/SDWebImageOperation.h; sourceTree = ""; }; + 26DB7ADA441E211720139768B35B32E8 /* ZIPFoundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ZIPFoundation.modulemap; sourceTree = ""; }; 271A76E52686EE252C17091DFAE77F79 /* SoundFileFactory.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundFileFactory.hpp; sourceTree = ""; }; 271E2E56285E890F193D75D7238055D0 /* DepthBufferToRDRAM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DepthBufferToRDRAM.h; sourceTree = ""; }; 273EE68570378702DCBA449E2763210E /* png.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = ""; }; 276E878302AEACCC6E7DBDF027635C08 /* OGLFT.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = OGLFT.h; sourceTree = ""; }; - 279F8F8BF2300C97E89F662A3B1BE1CE /* GTLRRuntimeCommon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRRuntimeCommon.h; path = Source/Objects/GTLRRuntimeCommon.h; sourceTree = ""; }; 281238B2703F882C01E20A3CE5743AFE /* Syncable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Syncable.swift; sourceTree = ""; }; 28382F5C12A6F8376FEFD601A04F351E /* GBADeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GBADeltaCore.debug.xcconfig; sourceTree = ""; }; 28573BCA4548E16254CA8EE96B3D39B2 /* ARMJIT.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT.cpp; sourceTree = ""; }; + 2859993DBC54C542151DB3BE05AB67E4 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/UIImageView+WebCache.h"; sourceTree = ""; }; 2867A21CC5D09F1990985A93B329E72E /* AudioManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AudioManager.swift; sourceTree = ""; }; 287B0AB028F458C9A04121405379BE05 /* Image.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Image.hpp; sourceTree = ""; }; - 2887F0AA90E8BCE5770880C29DE7A352 /* FTS4.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FTS4.swift; path = Sources/SQLite/Extensions/FTS4.swift; sourceTree = ""; }; - 288F0A8E1830BC9A6DEE1E4E0D082A8D /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/SDImageCache.h; sourceTree = ""; }; 2899A8ECE6011049F16395993E4F97B7 /* ftstdlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftstdlib.h; sourceTree = ""; }; 28BDAB6D36E1EADCF2531924F93D2485 /* MelonDSTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MelonDSTypes.h; sourceTree = ""; }; 28D3BDAF521A2237075C2E325303961F /* NSManagedObjectContext+Harmony.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+Harmony.swift"; sourceTree = ""; }; - 2915B37F1313A778ECAC05BE22A03BC3 /* Users.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Users.swift; path = Source/SwiftyDropbox/Shared/Generated/Users.swift; sourceTree = ""; }; + 2912AEC6FA45796383577A04D7F50D20 /* Fabric.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Fabric.debug.xcconfig; sourceTree = ""; }; 293A079685748E186A32952B23B9A480 /* NstBoardWaixingSecurity.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingSecurity.hpp; sourceTree = ""; }; 29515613E23B7BFB6F0C110FF8378E8E /* MelonDSTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MelonDSTypes.m; sourceTree = ""; }; + 29576A8D5243FFF5A0570494C289E3C0 /* OIDServiceConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDServiceConfiguration.h; path = Source/AppAuthCore/OIDServiceConfiguration.h; sourceTree = ""; }; 2967223FA7A49148FE09025B27BCD85C /* NESDeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NESDeltaCore.h; sourceTree = ""; }; 297B115A186A67E552AD9686A4D5E67B /* F3DSETA.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DSETA.cpp; sourceTree = ""; }; - 29919E9648C822A2B4D58714161F47A8 /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = iOS/Fabric.framework; sourceTree = ""; }; 29B3676796A388530ACB7A0D65044B70 /* interrupter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = interrupter.h; sourceTree = ""; }; 2A02436142FF717FBB3C4C31467F365D /* RSTHasher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTHasher.h; path = Roxas/RSTHasher.h; sourceTree = ""; }; 2A039E021DD018FC43C64E12CCA4A5A9 /* SNESDeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SNESDeltaCore.modulemap; sourceTree = ""; }; 2A07560F133B7C58A11633DFA6A26C33 /* SNESDeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SNESDeltaCore-dummy.m"; sourceTree = ""; }; 2A210B499E1A1A858DB341FEFEB1F163 /* F3DTEXA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DTEXA.h; sourceTree = ""; }; + 2A378A207EC720321C61582DA42E2EA9 /* OIDScopes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDScopes.m; path = Source/AppAuthCore/OIDScopes.m; sourceTree = ""; }; + 2A4F8E27EA2A514D08C6821D64F28148 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; 2A64822D43AA4F0CF69800DA732637F9 /* seta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = seta.h; sourceTree = ""; }; 2A68BB1DAC0E13CD0973C5A2071BCABD /* MFiGameController.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; name = MFiGameController.deltamapping; path = "DeltaCore/Supporting Files/MFiGameController.deltamapping"; sourceTree = ""; }; + 2A80B7D648995C747A8D7ABC799CD2C8 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/NSData+ImageContentType.h"; sourceTree = ""; }; 2AB2CBD9EF8248E80EABD0A818D52236 /* Roxas.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Roxas.modulemap; sourceTree = ""; }; 2B07948E9EF320FFD68CD858188BDA7D /* RSTOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTOperation.h; path = Roxas/RSTOperation.h; sourceTree = ""; }; 2B0EB17AE5F142CA95FB5976BE47D913 /* NstBoardKayH2288.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKayH2288.hpp; sourceTree = ""; }; 2B1272AA4FCEF7F4B895C966D7645328 /* GBACart.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBACart.h; sourceTree = ""; }; 2B156F27DF13CB000812D58184607846 /* opengl_Attributes.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_Attributes.cpp; sourceTree = ""; }; + 2B338BB72BB5DFCF55D5381B04DCA74E /* GTLRDriveService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDriveService.h; path = Source/GeneratedServices/Drive/GTLRDriveService.h; sourceTree = ""; }; 2BB78DDC672D6777CD11A5E2E0D76606 /* fttrigon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fttrigon.h; sourceTree = ""; }; - 2BBE4EB7361152D3172AB0C275C92415 /* GTMSessionFetcher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GTMSessionFetcher-dummy.m"; sourceTree = ""; }; 2BC96C69F0777BA6CF116E30A45DB1FB /* NstBoardUnlN625092.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlN625092.hpp; sourceTree = ""; }; 2BD83DB7A332052EBC34798D4AB2A9CC /* glsl_FXAA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_FXAA.h; sourceTree = ""; }; - 2BF527A86BB1F33B31BB0F79626623B7 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/UIView+WebCacheOperation.h"; sourceTree = ""; }; 2C16C000033E3A0DDF2B3B7B582F2A2D /* F3DFLX2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DFLX2.h; sourceTree = ""; }; + 2C30CE1530C1D90F1109BC1C2AB60603 /* OAuth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OAuth.swift; path = Source/SwiftyDropbox/Shared/Handwritten/OAuth.swift; sourceTree = ""; }; 2C54E1DEA371F87A57123E554E9AFA60 /* ConflictRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConflictRecordsOperation.swift; sourceTree = ""; }; 2C68DA7C782218AA185F906F90656A2F /* file_storage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = file_storage.h; sourceTree = ""; }; - 2C9B018595CD9C8401E17A0CED6F461B /* CLSAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSAttributes.h; path = iOS/Crashlytics.framework/Headers/CLSAttributes.h; sourceTree = ""; }; + 2C7CC72F8BB248BA3F1971C0259ACC5D /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; 2CADBEC9CAC37776B653B1E88F411732 /* RDP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RDP.h; sourceTree = ""; }; 2CE70AD051297074549413AFA54DE874 /* SNESEmulatorBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = SNESEmulatorBridge.mm; sourceTree = ""; }; 2D1631F683A03686D31B68487812E5F4 /* NstBoardNitra.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNitra.hpp; sourceTree = ""; }; 2DB42486F89614BF4152AD2D590FD8AC /* rsp_core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rsp_core.h; sourceTree = ""; }; 2DBDFD713A38C39EC0131BC04B04AD80 /* svmm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svmm.h; sourceTree = ""; }; 2DEED021AB7F54D5F29FF137BF85F83D /* resampler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = resampler.h; sourceTree = ""; }; + 2DF399ADFD1340C66513A8388C3CBB04 /* GTLRDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDefines.h; path = Source/GTLRDefines.h; sourceTree = ""; }; 2E00E0C2DB0657397A9AD74AF384F0E0 /* opengl_GraphicsDrawer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_GraphicsDrawer.h; sourceTree = ""; }; + 2E1D04BE6B511C93BB76FDEA022EB898 /* GTLRFramework.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRFramework.m; path = Source/Utilities/GTLRFramework.m; sourceTree = ""; }; 2F24F4CC901AC25CA196803FE1A3C61E /* NstBoardZz.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardZz.hpp; sourceTree = ""; }; 2F48A72A8BB6DCFEF98DC46F35F8A72C /* NstBoardBmcCh001.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcCh001.hpp; sourceTree = ""; }; + 2F5176A0CD8AA4800A04B7437A3D2160 /* GTLRRuntimeCommon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRRuntimeCommon.h; path = Source/Objects/GTLRRuntimeCommon.h; sourceTree = ""; }; 2F604792FD5850F6D01682B904D4F54F /* NstBoardVsSystem.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardVsSystem.hpp; sourceTree = ""; }; 2F66BAA873EADA8F2D6D6EB5AA4C399F /* SoundBuffer.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundBuffer.hpp; sourceTree = ""; }; 2F7C608BFA656FE4EFBA10D0422E8A6E /* NstBoardSachenTcu.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenTcu.hpp; sourceTree = ""; }; - 2FBBCE862E374DE16A6F3E328AA1A1DA /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; 2FCC9F5D5AA2C30DD2A0310B67BF6941 /* FrameBuffer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = FrameBuffer.cpp; sourceTree = ""; }; 30009CAC05D34574EDE2FE06A804ACA8 /* TxImage.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxImage.cpp; sourceTree = ""; }; 3000EB6BEF38AC749B093A0BAC2DC7F1 /* si_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = si_controller.h; sourceTree = ""; }; @@ -2555,7 +2672,6 @@ 302E47D1F17CD21389F7B608193F0191 /* 3DMath.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = 3DMath.cpp; sourceTree = ""; }; 309F30534E2673B0504A148002C4BE88 /* NstBoardBmc150in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc150in1.hpp; sourceTree = ""; }; 30A1CB2B16F7B1AD55E141D4569AADDC /* DSDeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DSDeltaCore-dummy.m"; sourceTree = ""; }; - 30B4C2B542657C7F8695159F71616D5B /* Statement.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Statement.swift; path = Sources/SQLite/Core/Statement.swift; sourceTree = ""; }; 30BEF95272EB5D03177EBDA73F04C381 /* GBCInputGetter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GBCInputGetter.cpp; sourceTree = ""; }; 30FF634ABA9431CA1BA6C64DFBACB33B /* OpenGL.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = OpenGL.hpp; sourceTree = ""; }; 3100BB31B2E91306349BDD568411A483 /* ucodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ucodes.h; sourceTree = ""; }; @@ -2564,23 +2680,25 @@ 3197199434FFC5FBB31D71D5168BA2D6 /* Glsl.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Glsl.hpp; sourceTree = ""; }; 31A0805454F15E0CCAE09354DF86EEC6 /* DepthBufferToRDRAM.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DepthBufferToRDRAM.cpp; sourceTree = ""; }; 31BCBFB69FB443934A9AD7F10F0B4FFE /* NstBoardKonamiVrc2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVrc2.hpp; sourceTree = ""; }; + 323AE1414C1C0B5D81EADD8808095682 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/SDWebImageCompat.m; sourceTree = ""; }; 3259C22E11C51E32FBFDC06596D86A16 /* dynamiclib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dynamiclib.h; sourceTree = ""; }; 326F24135E2B142C63EEE38DDEC80B31 /* HarmonyToHarmony2.xcmappingmodel */ = {isa = PBXFileReference; includeInIndex = 1; path = HarmonyToHarmony2.xcmappingmodel; sourceTree = ""; }; + 3281A1D52BF5FE4FFF7B0138662B41AC /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; + 32A441D2F5811D199D7639BC68C30A6B /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; 32A4A563FF738E6E5995207D826FF1DA /* Context.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Context.hpp; sourceTree = ""; }; 32A7572D74BBE1A81EF3737BA716B1CE /* ftoption.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftoption.h; sourceTree = ""; }; - 32A7FC18682D076FF7779592F09D9ED6 /* SMClassicCalloutView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SMClassicCalloutView.m; sourceTree = ""; }; 32AB913747C45B7840A8E10C3BF8D166 /* DropboxService+Versions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DropboxService+Versions.swift"; path = "Backends/Dropbox/Harmony-Dropbox/DropboxService+Versions.swift"; sourceTree = ""; }; 32BF8228E40E4E8B1107C6B78FB5388E /* tlb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = tlb.h; sourceTree = ""; }; + 32F0D8C427B02F9167601BA32C12AA6B /* Helpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Helpers.swift; path = Sources/SQLite/Helpers.swift; sourceTree = ""; }; + 32F11BE94EA64E284931EE13211BFBD5 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/SDWebImageDownloader.h; sourceTree = ""; }; 3345BF1B10185047E735F8C829106C04 /* DSDeltaCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DSDeltaCore-prefix.pch"; sourceTree = ""; }; 3374EEE9DE762478FB108577A45A36D2 /* F3DZEX2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DZEX2.h; sourceTree = ""; }; 33F0B5788CE7BB73382F50CE527A7B54 /* NstApi.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApi.hpp; sourceTree = ""; }; 33F72A4F1B550B619BFAABFF9E654173 /* jpeg.c */ = {isa = PBXFileReference; includeInIndex = 1; path = jpeg.c; sourceTree = ""; }; - 33FE7D465ECFED221B87424469C67A9C /* Files.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Files.swift; path = Source/SwiftyDropbox/Shared/Generated/Files.swift; sourceTree = ""; }; 343E29E6172EB41208BFFAAF614C62F1 /* Harmony.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Harmony.debug.xcconfig; sourceTree = ""; }; - 344175CF76093086EA58BEBC8AD0E014 /* PaperRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PaperRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/PaperRoutes.swift; sourceTree = ""; }; 3445C3B0F68199082CCA95F9F4C599B5 /* F3D.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3D.h; sourceTree = ""; }; - 3464E71D1132BB4ECDA6EE3AD5D9C854 /* Schema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Schema.swift; path = Sources/SQLite/Typed/Schema.swift; sourceTree = ""; }; - 34B9FC0547132313C6B66562D7FB6FE6 /* DateAndTimeFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DateAndTimeFunctions.swift; path = Sources/SQLite/Typed/DateAndTimeFunctions.swift; sourceTree = ""; }; + 345045C88C734F0A16410A696371B04A /* Base.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Base.swift; path = Source/SwiftyDropbox/Shared/Generated/Base.swift; sourceTree = ""; }; + 34DEA93A58AA13F6D646EABBC68C479B /* OIDTokenRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDTokenRequest.h; path = Source/AppAuthCore/OIDTokenRequest.h; sourceTree = ""; }; 3506891969CC7C1516DAC96B20EE084B /* slot2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = slot2.h; sourceTree = ""; }; 35563C6EDDE033848DBE71A1D7EB2272 /* NstBoardBmcResetBased4in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcResetBased4in1.hpp; sourceTree = ""; }; 355D2540961430E0C98856423F2B9105 /* opengl_BufferedDrawer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_BufferedDrawer.cpp; sourceTree = ""; }; @@ -2593,21 +2711,19 @@ 363EBB698A7608820B51E785BFBDBE5D /* osd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = osd.h; sourceTree = ""; }; 364893996CF3D04EBFF0A11679E8B5AD /* NstBoardAveD1012.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAveD1012.hpp; sourceTree = ""; }; 3657D29FC929113DDDDFC5C7E19C7391 /* NstBoardCony.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCony.hpp; sourceTree = ""; }; - 36CE82CF693A751E8245859F6F1F0059 /* GoogleSignIn.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleSignIn.release.xcconfig; sourceTree = ""; }; + 36B26B4BA4D64E1FC05F98C19F020B9A /* Files.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Files.swift; path = Source/SwiftyDropbox/Shared/Generated/Files.swift; sourceTree = ""; }; 36D5303C814B207B5D7C9751CDC3F79E /* vidext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = vidext.h; sourceTree = ""; }; + 374CD16066234452E7C43878019A0C18 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/SDWebImageDownloaderOperation.h; sourceTree = ""; }; 374DF1A46229CD6D1636720284963491 /* ARMInterpreter_LoadStore.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMInterpreter_LoadStore.cpp; sourceTree = ""; }; 379BCFBDC4056CD29292B7F8110124D7 /* NstInpKonamiHyperShot.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpKonamiHyperShot.hpp; sourceTree = ""; }; 37C824FE92FEE981231F0E7F82D68830 /* wifi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = wifi.h; sourceTree = ""; }; 37E021780895B0030EDF3FDDE10AB491 /* ri_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ri_controller.h; sourceTree = ""; }; 383303B1D603BDA417B2A5F924044053 /* gdbstub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gdbstub.h; sourceTree = ""; }; - 3834E77F63953D87853DE315E253E447 /* GoogleAPIClientForREST-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleAPIClientForREST-umbrella.h"; sourceTree = ""; }; 383BE6B9C0159CE9420D06D227AB94C5 /* NstBoardFb.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardFb.hpp; sourceTree = ""; }; - 3877506BCB9C396099DE5A88C9255153 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/UIImageView+WebCache.m"; sourceTree = ""; }; 3878924447484A466599DC5D45CF9CAF /* DSDeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DSDeltaCore.debug.xcconfig; sourceTree = ""; }; 388B7AB08494BC0CE5B292DB67FCC889 /* Database.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Database.h; sourceTree = ""; }; 388C8DA3F432735143092D0CC3240A07 /* ARMInterpreter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMInterpreter.cpp; sourceTree = ""; }; 388D3B28B64A26962EFC0170553CAB16 /* CombinerKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CombinerKey.h; sourceTree = ""; }; - 38A54DE3848C6830CA6D438BCCE65D81 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; 38B819F08E6CDB261F68D64D78E0CF68 /* NstBoardIremKaiketsu.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardIremKaiketsu.hpp; sourceTree = ""; }; 38E5C54CB5E585159641DCE3D9642596 /* Settings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Settings.h; sourceTree = ""; }; 38E8088F5565B53ACC65BE005156ACE8 /* pngget.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngget.c; sourceTree = ""; }; @@ -2616,29 +2732,33 @@ 3911A2FE847ADE263F3D2AE0E1962055 /* libhardware.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = libhardware.h; sourceTree = ""; }; 391BDE6126D57890426F3634F6B5E7CE /* NstBoardDreamtech.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardDreamtech.hpp; sourceTree = ""; }; 392DD0F87D600A6E0ABF1357D951CFD3 /* m64p_config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_config.h; sourceTree = ""; }; + 3930CBF18C1C33D1EFACFE50685AAA6E /* SMCalloutView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SMCalloutView.release.xcconfig; sourceTree = ""; }; 3933218BC8BCF02EB2BF32BD1FDEA43D /* fxp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fxp.h; sourceTree = ""; }; 393B1763D9F2667EE816F0FE4A4F61CB /* GBCInputGetter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBCInputGetter.h; sourceTree = ""; }; 3940128758AA053C43D1A5213246A4A2 /* gSP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gSP.h; sourceTree = ""; }; 394BC7C3740766492985ED4E69FA615D /* bios.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = bios.h; sourceTree = ""; }; 3950D2B5CCA13E0965D5B2725374EB4B /* assemble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assemble.h; sourceTree = ""; }; 395682778B41F09E1AFF66EE9BB36A96 /* F3DEX.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DEX.h; sourceTree = ""; }; - 3983F1895BAF52B55FBA7C3CA41B9A63 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/SDWebImageDownloader.h; sourceTree = ""; }; 3996F6488831487C7AA7EAB7511543DA /* NstBoardWaixingPs2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingPs2.hpp; sourceTree = ""; }; + 39AF362A71040A4AEEFB7737C7E433E0 /* OIDAuthStateErrorDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDAuthStateErrorDelegate.h; path = Source/AppAuthCore/OIDAuthStateErrorDelegate.h; sourceTree = ""; }; 39E88053160E909EE0AD49CAC49DAE99 /* ftmodapi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftmodapi.h; sourceTree = ""; }; 39F96EE4C3E8CD656F840B18A960236D /* LocalRecord.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LocalRecord.swift; sourceTree = ""; }; 3A66FC57CF12C4C7F15051EABEBF706E /* Err.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Err.hpp; sourceTree = ""; }; 3A6BEE1354AB3BB2C198E3B84CE0FD32 /* NstBoardKayPandaPrince.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKayPandaPrince.hpp; sourceTree = ""; }; 3AAF5A370221319ED336FD38BFB973A3 /* lua-engine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "lua-engine.h"; sourceTree = ""; }; - 3B3BC53887BCBE3F02841C302D9EFCB4 /* ZIPFoundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ZIPFoundation-dummy.m"; sourceTree = ""; }; + 3AB406A384F5DBA022E1670CF8121C8E /* FileRequestsRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileRequestsRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/FileRequestsRoutes.swift; sourceTree = ""; }; 3B46B04A3CCDD5165D5EF0121C30CE78 /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; sourceTree = ""; }; 3B54726597AE9AF0483DF076A1CB773B /* BatchRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BatchRecordOperation.swift; sourceTree = ""; }; 3B7AC8DBD44374B318026ED02323950B /* fpu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fpu.h; sourceTree = ""; }; 3B7FD5DF96760E0D16B8DD3B4CBD5A59 /* Pods-DeltaPreviews.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DeltaPreviews.release.xcconfig"; sourceTree = ""; }; 3C07C9B57A5D082C07FD91A96267A69C /* F3DAM.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DAM.cpp; sourceTree = ""; }; + 3C07CCA1A3B98D511A5ABE9C9D042B20 /* OIDAuthorizationService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDAuthorizationService.h; path = Source/AppAuthCore/OIDAuthorizationService.h; sourceTree = ""; }; 3C247C0F032D07663F65ABCED580EF8A /* Record.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Record.swift; sourceTree = ""; }; + 3C6A5480D649962867D4456FE8031979 /* OIDAuthorizationResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDAuthorizationResponse.h; path = Source/AppAuthCore/OIDAuthorizationResponse.h; sourceTree = ""; }; 3C704D55B6FFA356BA5C8C4B7EB2754E /* NstInpPartyTap.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPartyTap.hpp; sourceTree = ""; }; 3C7580438732575706FC0C5312EF089C /* RSTPlaceholderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTPlaceholderView.m; path = Roxas/RSTPlaceholderView.m; sourceTree = ""; }; 3C8CE65457D44545CA35E78C01B553DE /* N64DeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = N64DeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 3C9F6290BF7A0B03D0F0EB6E48540272 /* OIDURLQueryComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDURLQueryComponent.h; path = Source/AppAuthCore/OIDURLQueryComponent.h; sourceTree = ""; }; 3CA04051997329FA2754F806359AA369 /* RingBuffer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RingBuffer.swift; sourceTree = ""; }; 3CFB6CDEAD5477F3C41FE7AD566FAEDC /* retro_stat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_stat.h; sourceTree = ""; }; 3D15689BF394D0D4715A1CF27DC77AFF /* UserDefaults+Harmony.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UserDefaults+Harmony.swift"; sourceTree = ""; }; @@ -2646,21 +2766,24 @@ 3D5854AD3351948F70B6EFA492DA13D7 /* retro_miscellaneous.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; 3D5FA545F9FB9A48DABD30AF68FCD2C4 /* Sound.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Sound.h; sourceTree = ""; }; 3D610FCE6D7E3AF6DEBF89BCBC88CC02 /* osal_files.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = osal_files.h; sourceTree = ""; }; + 3D6495324D070183F05BAB2B199F89AF /* ZIPFoundation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.debug.xcconfig; sourceTree = ""; }; + 3D7A1BA4EEE3E57C803738BDA3D5E308 /* GoogleAPIClientForREST-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleAPIClientForREST-dummy.m"; sourceTree = ""; }; 3D8B700F6E00A80322FE11595E6936C3 /* fxinst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fxinst.h; sourceTree = ""; }; 3DBBAADAFC68D964BA907505CDBFC1CE /* instructions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = instructions.h; sourceTree = ""; }; 3DEA24EE1C12BA08F9715415DA0C0632 /* crypt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; 3DFCB8854AACC5E9396E6BAD6E022BC0 /* RSTPersistentContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTPersistentContainer.m; path = Roxas/RSTPersistentContainer.m; sourceTree = ""; }; + 3E018A854D17579A468D86ABE0600F93 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; 3E1A7F168275457728FC46DD69F2506C /* gralloc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gralloc.h; sourceTree = ""; }; + 3E1AFE6F8229938A27A495C21C806A1A /* GTMSessionUploadFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionUploadFetcher.m; path = Source/GTMSessionUploadFetcher.m; sourceTree = ""; }; 3E45092B38B1BCA27D9FBD1E928D6B4E /* RSTNibView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTNibView.m; path = Roxas/RSTNibView.m; sourceTree = ""; }; 3E7AF896E1BD339BEBCF60104011B278 /* NstInpExcitingBoxing.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpExcitingBoxing.hpp; sourceTree = ""; }; - 3E7B7BF0A743BE6F53D69481DCC503FE /* GoogleToolboxForMac-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleToolboxForMac-prefix.pch"; sourceTree = ""; }; 3E8BD0AF4002F9EEE14F93ACF23A5AC6 /* NstBoardTaito.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTaito.hpp; sourceTree = ""; }; 3EEE9648B0750DF64CE837F255F2B085 /* interpret.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = interpret.h; sourceTree = ""; }; 3F0882105E4993C09A6F0BEAF2E98379 /* opengl_Utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_Utils.h; sourceTree = ""; }; 3FA021BAB62CBBF723A1A87AFCB9B0EA /* NstBoardBmcMarioParty7in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcMarioParty7in1.hpp; sourceTree = ""; }; - 3FA1B8883F6CAED73B7A39FB514ECF59 /* FilePropertiesRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FilePropertiesRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/FilePropertiesRoutes.swift; sourceTree = ""; }; 3FAD1B63265F0B9C30F70FA871EB0F98 /* ServiceOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ServiceOperation.swift; sourceTree = ""; }; 3FC5C25A1E62C26E9D6FAD2F32C223B9 /* N64DeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = N64DeltaCore.debug.xcconfig; sourceTree = ""; }; + 3FD1B4C1246D643E9476438C28048FA8 /* AppAuth */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = AppAuth; path = libAppAuth.a; sourceTree = BUILT_PRODUCTS_DIR; }; 401AF149315D628F51F0F24FE1B4920A /* expr.cpp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = expr.cpp.h; sourceTree = ""; }; 402411DBB78262FF5BC895B7AB80E70E /* Harmony 2.xcdatamodel */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.xcdatamodel; path = "Harmony 2.xcdatamodel"; sourceTree = ""; }; 4042F7590F74B0BB81EE774F8A93F73D /* RemoteFile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RemoteFile.swift; sourceTree = ""; }; @@ -2672,11 +2795,13 @@ 411E7554E19C572A693EDB486A957D57 /* alist_naudio.c */ = {isa = PBXFileReference; includeInIndex = 1; path = alist_naudio.c; sourceTree = ""; }; 4130E76DBC8F30F3AB50138A69B4B704 /* assem_x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assem_x64.h; sourceTree = ""; }; 4150FDAF728FC1CCBBC770F2528DDEC2 /* PACKED_END.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PACKED_END.h; sourceTree = ""; }; + 4159401DC087CCC701F3A9F3EFDC7A05 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/SQLite/Core/Errors.swift; sourceTree = ""; }; 41718C51A6F1D77D30ABFC2B1E584F17 /* logger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = logger.h; sourceTree = ""; }; - 41719ACD881D756B29502E6C40D1DBA6 /* Common.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Common.swift; path = Source/SwiftyDropbox/Shared/Generated/Common.swift; sourceTree = ""; }; 418408117D755DC58FD35A1AEBE7BD41 /* NDSSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NDSSystem.h; sourceTree = ""; }; 41978828D2793918B679572A560230F3 /* NstBoardBmcY2k64in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcY2k64in1.hpp; sourceTree = ""; }; 41ACF765A43AACC887E269FF473CBB0D /* GraphicsDrawer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsDrawer.cpp; sourceTree = ""; }; + 41CD9A5CE924CE38987C2E1AAF42DC3A /* Blob.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blob.swift; path = Sources/SQLite/Core/Blob.swift; sourceTree = ""; }; + 420B009C10AE0D3BA2E2D208DC4055BC /* OIDServiceDiscovery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDServiceDiscovery.h; path = Source/AppAuthCore/OIDServiceDiscovery.h; sourceTree = ""; }; 420F2D7E82DCB4670DD9AC159AE8CB48 /* ftlzw.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftlzw.h; sourceTree = ""; }; 421D200ED5A594A93CDBC2EAE558F0C9 /* Err.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Err.cpp; sourceTree = ""; }; 422A80E5C1488C2703070BE3A9BFCBF8 /* NstBoardHes.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardHes.hpp; sourceTree = ""; }; @@ -2686,56 +2811,61 @@ 42D48E98CEC65DB8BEA1872E413A49B3 /* NstBoardNamcot34xx.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNamcot34xx.hpp; sourceTree = ""; }; 42D656CB96743D600DE464719D5B977C /* Export.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Export.hpp; sourceTree = ""; }; 42D809A7248EAA3C75D32A0875CD3E2B /* NstPins.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstPins.hpp; sourceTree = ""; }; + 42FD340F455E2B2472776617C3C10535 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; 43025ED25FA3BA9FEA4A363425FDBD71 /* display.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = display.h; sourceTree = ""; }; 431AAF0AECA2A0A322351F393EC0FA8A /* String.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = String.hpp; sourceTree = ""; }; 4350D1FEB43D008EF6E9B2A8AF3F8D46 /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; sourceTree = ""; }; 4361C606A9E2C67D96A18D5590A9AEB0 /* SoundSDL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SoundSDL.h; sourceTree = ""; }; 43742E54E76C8CD0C13816B1DE0B217C /* conffile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = conffile.h; sourceTree = ""; }; 438D2375AA6FC8CECAFB0F98FFCB4A43 /* Pods-Delta.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Delta.modulemap"; sourceTree = ""; }; - 43949B838135A4C9AF88A573B762A429 /* DBChunkInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DBChunkInputStream.h; path = Source/SwiftyDropbox/Shared/Handwritten/DBChunkInputStream.h; sourceTree = ""; }; 43DB8C4B29085E6FE14954933B1854B8 /* ZlutTexture.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ZlutTexture.cpp; sourceTree = ""; }; 43E8E60E56CB19A317F1DD05A4167EEE /* BPMDetect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BPMDetect.h; sourceTree = ""; }; 43E9A99CB2F0F566B1EC79D4A6B08A4E /* DebugDump.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DebugDump.cpp; sourceTree = ""; }; 4405793D5AF1EFD9D2BDA30AA0D2E514 /* Roxas */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = Roxas; path = libRoxas.a; sourceTree = BUILT_PRODUCTS_DIR; }; 440F728629AA81492F2374B22D158C8D /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; name = Standard.deltamapping; path = DSDeltaCore/Standard.deltamapping; sourceTree = ""; }; 443636AEB2461813DE19CAAEDB8822E0 /* Result+Dropbox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Result+Dropbox.swift"; sourceTree = ""; }; + 443C783F39A259FCA78B3BBF929FD22C /* AppAuth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AppAuth.h; path = Source/AppAuth.h; sourceTree = ""; }; 446BF4A4F470F437E4E1A9162BB485EA /* NstVideoFilter2xSaI.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoFilter2xSaI.hpp; sourceTree = ""; }; 4481A21822C862D31F6A82503731AB4F /* NstBoardSubor.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSubor.hpp; sourceTree = ""; }; 44A50EFCC9BA0E6CB99450C7FB3D91CD /* GraphicBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GraphicBuffer.h; sourceTree = ""; }; 44AA2C2D3122CE3A98EF48503A020844 /* AnyKeyPath+StringValue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AnyKeyPath+StringValue.swift"; sourceTree = ""; }; - 44BD07F028973D4260A9A797E772F208 /* GTLRDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDefines.h; path = Source/GTLRDefines.h; sourceTree = ""; }; + 44AC5187E0261B892EF34E7BCDAC7DE4 /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/SDImageCache.h; sourceTree = ""; }; 44CC792247829E7BFA3CC5F589AA38AE /* pngstest-errors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "pngstest-errors.h"; sourceTree = ""; }; 44FDE520DE8BA6087B7A0628630C3AED /* NESDeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NESDeltaCore-dummy.m"; sourceTree = ""; }; + 45243E1B0086B736C048AED5C8630363 /* OIDEndSessionRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDEndSessionRequest.h; path = Source/AppAuthCore/OIDEndSessionRequest.h; sourceTree = ""; }; 455381F429A17626651787CCFCAE3912 /* svkern.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svkern.h; sourceTree = ""; }; 4554336FC8DDAB28DF3304A71CB47A27 /* Cheats.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Cheats.h; sourceTree = ""; }; 458E5ECC429899615982316D9665F348 /* NSFileManager+URLs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileManager+URLs.h"; path = "Roxas/NSFileManager+URLs.h"; sourceTree = ""; }; 45B64928D43C2AF68B71222DD6DFEBEB /* NstBoardWaixingSgzlz.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingSgzlz.hpp; sourceTree = ""; }; + 45EEA56032C12443D7F5CDED8FC4CDF5 /* OIDExternalUserAgentIOS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDExternalUserAgentIOS.h; path = Source/AppAuth/iOS/OIDExternalUserAgentIOS.h; sourceTree = ""; }; 45FFCE5AB4BF0EF0CAE474BF43EAD886 /* lirc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = lirc.h; sourceTree = ""; }; 461A8C42FD4C2807C862842BD5FF46AB /* GBCEmulatorBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBCEmulatorBridge.h; sourceTree = ""; }; 46419BA04293C44F08C03736D6B48308 /* Cheat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Cheat.swift; sourceTree = ""; }; + 465D766B2AFF0875B4B11F931485EA41 /* OIDFieldMapping.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDFieldMapping.m; path = Source/AppAuthCore/OIDFieldMapping.m; sourceTree = ""; }; 46A5C3877CB32B44672DC1BE4A60F9A2 /* new_dynarec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = new_dynarec.h; sourceTree = ""; }; 46C7C6CC93893D1F4DA867FB13D67045 /* NstBoardKonamiVrc7.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVrc7.hpp; sourceTree = ""; }; 46D40B2D96145762667E9278A3644BC8 /* NES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NES.swift; sourceTree = ""; }; 46DEC7E66ED81351FAF7ED175FBCFA8A /* opengl_Utils.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_Utils.cpp; sourceTree = ""; }; 4727804804CEE498DC0BB4D5A0899D67 /* regcache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = regcache.h; sourceTree = ""; }; + 473D178DE3F443CA5636122DC022E6C6 /* Paper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Paper.swift; path = Source/SwiftyDropbox/Shared/Generated/Paper.swift; sourceTree = ""; }; 47698E5A57A16FA76229820066EC0795 /* RDRAMtoColorBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RDRAMtoColorBuffer.h; sourceTree = ""; }; 476E44D494F1D0E21C743AEBDB09E8C2 /* gDP.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = gDP.cpp; sourceTree = ""; }; 477FB86AC8B0D1B1317290EE392A0ABF /* NstBoardGxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardGxRom.hpp; sourceTree = ""; }; 47869A3E08F3C34D3A128ECDB9C276B1 /* instruction_attributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = instruction_attributes.h; sourceTree = ""; }; - 478FF66EA47351596632AC605ADC8D1D /* CLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSReport.h; path = iOS/Crashlytics.framework/Headers/CLSReport.h; sourceTree = ""; }; 47B404F4B3523D7C2A3C4C3EC84A96D5 /* NstBoardBmc8157.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc8157.hpp; sourceTree = ""; }; 47CA46C0583951D8B339C4E4B173CE99 /* glsl_SpecialShadersFactory.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_SpecialShadersFactory.cpp; sourceTree = ""; }; 48160C3EDB3E848ADA556F24A1F0E05C /* NstPatcher.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstPatcher.hpp; sourceTree = ""; }; - 481B0FB19748AA00058AAB4125E08BF8 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; 481E2A9FE78254577B8894F8E6BFFC1C /* NstBoardIremLrog017.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardIremLrog017.hpp; sourceTree = ""; }; 4833865EEFC580BBC6B426BBBAF41308 /* NstBoardBmcGoldenCard6in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcGoldenCard6in1.hpp; sourceTree = ""; }; + 4855591EC84F2705E8F012257C9AA50A /* OIDAuthState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDAuthState.h; path = Source/AppAuthCore/OIDAuthState.h; sourceTree = ""; }; + 48605EA57EDF8ABD64CC081DC9E9AFC0 /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; 487C7DB0A7257F16983BEF8324BEF561 /* NESDeltaCore-NESDeltaCore */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "NESDeltaCore-NESDeltaCore"; path = NESDeltaCore.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 48907C43DF6930F8003108EB5C6F7BA3 /* transferpak.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = transferpak.h; sourceTree = ""; }; 4898E73F069A8D1192DE3114754EC447 /* path.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = path.h; sourceTree = ""; }; 48A4A6EDC08C8AC933D0DCD507E9D173 /* ZIPFoundation */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = ZIPFoundation; path = libZIPFoundation.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 48A7DBA86C0D8564FAED27D377B220EC /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; 48B37C8C22C518C72C0677EACF6B53BB /* NESDeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NESDeltaCore.release.xcconfig; sourceTree = ""; }; 48E3315E7F70EED2C80DA34DF0D097BE /* SDL_opengles2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2.h; sourceTree = ""; }; + 48EF4CE2E6166180B091E96C87A37818 /* TeamRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamRoutes.swift; sourceTree = ""; }; 48FA33EC260F5271DEE686E157FEB4BC /* text.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = text.h; sourceTree = ""; }; 49193C1382CA13663595063370D3886E /* NstBoardNtdec.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNtdec.hpp; sourceTree = ""; }; 491E2794FAED7E9D94AE9DE168F3D0A4 /* DeltaCoreProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeltaCoreProtocol.swift; sourceTree = ""; }; @@ -2743,15 +2873,17 @@ 492C2815F39A115DF5927FA25B5A4486 /* NstBoardBmc1200in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc1200in1.hpp; sourceTree = ""; }; 492DC4F04F735634E9927A4A87E38C52 /* m64p_vidext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_vidext.h; sourceTree = ""; }; 493BDC001AB8FCF2899F9370590EF3C7 /* getopt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; + 494E77D3CFBDCDB05A1862B8E739A5EA /* ZIPFoundation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.release.xcconfig; sourceTree = ""; }; 496811FEA30B0B9C7D919056C6770654 /* md5.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; 49686D6DC64792B2244933701BBFCECA /* ftmodule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftmodule.h; sourceTree = ""; }; 4979D7D45D6BAB80551FE538CD80B68A /* opengl_ColorBufferReaderWithEGLImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_ColorBufferReaderWithEGLImage.h; sourceTree = ""; }; - 498BEFABF329CA81DB038DAEE4DA86DB /* GTMSessionFetcherLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherLogging.h; path = Source/GTMSessionFetcherLogging.h; sourceTree = ""; }; 498F938217E118A1DBF9DED133090463 /* DisplayLoadProgress.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DisplayLoadProgress.cpp; sourceTree = ""; }; 49A75C63D0F8A1F76D4ACF9DC8EF0DC6 /* RSTPersistentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTPersistentContainer.h; path = Roxas/RSTPersistentContainer.h; sourceTree = ""; }; + 49EB5764D1BF3A8632E1D42CE4EAABFC /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; 49ED2B3C6FC417978697BAFBB23CFF1F /* retro_dirent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; 4A1BEB2BDB6B3210EA1E277365276D59 /* NstVsSystem.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVsSystem.hpp; sourceTree = ""; }; 4A261213E2B25A44E14082D132F7522C /* gfx3d.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gfx3d.h; sourceTree = ""; }; + 4A39A8E5B0EAAD79CD06BCC85C2B6CE1 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/SDWebImageOperation.h; sourceTree = ""; }; 4A69E9B1FC701F3CDFFDAED41E72FC3C /* SNESDeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SNESDeltaCore.h; sourceTree = ""; }; 4A6CEB53419EF6042E06B56676D1DAF8 /* DSDeltaCore-DSDeltaCore */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "DSDeltaCore-DSDeltaCore"; path = DSDeltaCore.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 4AC4CEB22A60AA5B33FE37AE9D46E038 /* ARMInterpreter_Branch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMInterpreter_Branch.h; sourceTree = ""; }; @@ -2762,51 +2894,48 @@ 4B3E26ED85603F0970658C4AF3B559ED /* TxInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxInternal.h; sourceTree = ""; }; 4B5834CF0F3103ECD8508F152DAD7BDE /* pngtest.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngtest.c; sourceTree = ""; }; 4B62BC74F2B87C4D4C3F58016F21513B /* NstBoardBandaiDatach.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandaiDatach.hpp; sourceTree = ""; }; + 4BAACEF4960BF41B08B3E505C4EBC283 /* Team.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Team.swift; path = Source/SwiftyDropbox/Shared/Generated/Team.swift; sourceTree = ""; }; 4BB9ED2F8B3AF9970E225DCC57EFBC39 /* mp3.c */ = {isa = PBXFileReference; includeInIndex = 1; path = mp3.c; sourceTree = ""; }; - 4BBBCBFA40EE49208B031D370878AD29 /* SQLite.swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SQLite.swift-dummy.m"; sourceTree = ""; }; 4BD7237D2B6E99690A20999A48E4C078 /* glsl_ShaderPart.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_ShaderPart.h; sourceTree = ""; }; 4BEB9E9721620F578D0426BDB238AD95 /* NstApiEmulator.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiEmulator.hpp; sourceTree = ""; }; 4BEF3307500AE238F67BF21F7A5E2B90 /* UIResponder+FirstResponder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIResponder+FirstResponder.swift"; sourceTree = ""; }; 4C22C82316853ABB688358B93486CF8E /* MelonDSDeltaCore */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = MelonDSDeltaCore; path = libMelonDSDeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; 4C38F52C216C0E25C48A8788DB91AA20 /* tima.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = tima.h; sourceTree = ""; }; - 4C48CBBB6A97428E4D4CBC314A140585 /* Archive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Archive.swift; path = Sources/ZIPFoundation/Archive.swift; sourceTree = ""; }; 4C619FD58ECE5046BFBE7F16F5A14C4E /* NstInpPad.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPad.hpp; sourceTree = ""; }; - 4C832C9A82654DA76719E0AB5ED13D8E /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; - 4CB7FC1BCCB48A79D26DDA5099AB7393 /* GTLRDrive.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDrive.h; path = Source/GeneratedServices/Drive/GTLRDrive.h; sourceTree = ""; }; - 4CBFEACE2F6510E0AC190F950DC15702 /* GTMReadMonitorInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMReadMonitorInputStream.m; path = Source/GTMReadMonitorInputStream.m; sourceTree = ""; }; + 4C6290365B08DFAC2E9078DECC2AD9E6 /* Common.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Common.swift; path = Source/SwiftyDropbox/Shared/Generated/Common.swift; sourceTree = ""; }; 4D388FB87279722FB905D7493EE8F038 /* ZSortBOSS.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ZSortBOSS.cpp; sourceTree = ""; }; 4D3971B130EA808E3BC3AC7DCFDFCD2B /* psaux.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = psaux.h; sourceTree = ""; }; 4D421B3B41005E75CF47150FB7FAE250 /* ARMJIT_Compiler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_Compiler.cpp; sourceTree = ""; }; - 4D480F6ED4062D534F79485C9C8C741A /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; 4DF3FF9A69DD247D049DE7DC0007C940 /* UITableView+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+CellContent.h"; path = "Roxas/UITableView+CellContent.h"; sourceTree = ""; }; 4E39C29C0853BA98AA1E40F44CC7E574 /* NstInpBarcodeWorld.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpBarcodeWorld.hpp; sourceTree = ""; }; 4E42D33839B19E42F79BE5920F217087 /* debugger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = debugger.h; sourceTree = ""; }; + 4E4CD8CDBB4408C8BD5636BAFD235F02 /* SQLite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SQLite.h; path = Sources/SQLite/SQLite.h; sourceTree = ""; }; + 4E84293B19D2B78E9615B80C007FBE3D /* GTMSessionFetcher.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMSessionFetcher.debug.xcconfig; sourceTree = ""; }; 4EFA33B973ABB5052C6A15108A0A69CE /* NstPatcherIps.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstPatcherIps.hpp; sourceTree = ""; }; 4F185FE59FC46DA85E8E8D713F6D8D22 /* NstBoardWaixingSgz.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingSgz.hpp; sourceTree = ""; }; 4F443577C83DB995BE6046BEC237E5F0 /* retro_inline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; + 4F9882A9873399959B5A741A7DDAEC02 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/SDWebImageManager.m; sourceTree = ""; }; 4FA0DFEF3BD031E4B756DA084DF77A84 /* m64p_plugin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_plugin.h; sourceTree = ""; }; 4FE2A36D23FB9226ADB79E249073A671 /* adaptivesleep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = adaptivesleep.h; sourceTree = ""; }; 4FFCA49336A99ADD0ECF13BCBFA359CC /* sdl_key_converter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sdl_key_converter.h; sourceTree = ""; }; 500D624EB32D21B043BFA0D55A44007E /* T3DUX.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = T3DUX.cpp; sourceTree = ""; }; - 501510C0AB0C2749A39F8FE21E2FDE4E /* GTLRDriveQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDriveQuery.m; path = Source/GeneratedServices/Drive/GTLRDriveQuery.m; sourceTree = ""; }; 501D427EE5E1A8882E6159ABF154A5A9 /* gambatte.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gambatte.h; sourceTree = ""; }; 506252043EDE210D4DDA95F172CA4144 /* GBATypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = GBATypes.m; sourceTree = ""; }; 508B1B9DD956BB2871C1FD457DE3699D /* opengl_ContextImpl.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ContextImpl.cpp; sourceTree = ""; }; - 50AB12044ABB6573A85B1B594DFD3566 /* ANSCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ANSCompatibility.h; path = iOS/Crashlytics.framework/Headers/ANSCompatibility.h; sourceTree = ""; }; 50AC2C6EE9829DB768B0BC24C15D9DC4 /* spc7110.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = spc7110.h; sourceTree = ""; }; 50B675723A77E42B1FB1C0333565E307 /* NstBoardBandai.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandai.hpp; sourceTree = ""; }; 50C3ADACD102BF557C0CDF9313E0A577 /* messages.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = messages.h; sourceTree = ""; }; 50EE5C17E3F318BEB4D7B2961BABB0F2 /* NstBoardBmc76in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc76in1.hpp; sourceTree = ""; }; + 5135BCCCC7B1AB36FDF0D6D7F5509182 /* TransportConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransportConfig.swift; path = Source/SwiftyDropbox/Shared/Handwritten/TransportConfig.swift; sourceTree = ""; }; 5169DDA0ADF74F8586CB590F9DB33AB1 /* BitmapProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BitmapProcessor.swift; sourceTree = ""; }; 516EB9A951C201FC2386D95A5740FD05 /* vba-over.ini */ = {isa = PBXFileReference; includeInIndex = 1; path = "vba-over.ini"; sourceTree = ""; }; 517D5D662F01BA988D74732FFD13B952 /* skipsched.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = skipsched.h; sourceTree = ""; }; + 519291E5371F0C2FAD1EEA6F786E1D41 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/SDWebImageDownloader.m; sourceTree = ""; }; 51C7C42332867E72843B00287AED57A0 /* AAFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AAFilter.h; sourceTree = ""; }; 51E052CDE1536235F7DBEB1B22B94E0B /* CircleShape.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = CircleShape.hpp; sourceTree = ""; }; 51FDCACC28DDE663B17B2A760F42CF94 /* video_capture_backend.c */ = {isa = PBXFileReference; includeInIndex = 1; path = video_capture_backend.c; sourceTree = ""; }; 5202545B4329D002ACDA953CB13AC144 /* glsl_ShaderStorage.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_ShaderStorage.cpp; sourceTree = ""; }; - 5209BE954A7C39272EDD3AEE95066684 /* SMCalloutView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SMCalloutView-umbrella.h"; sourceTree = ""; }; - 520D9B2D1F6739C099B2819925297F07 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/SDWebImageManager.m; sourceTree = ""; }; - 52146E42B2E7458AB8F550EAAB719074 /* FileRequestsRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileRequestsRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/FileRequestsRoutes.swift; sourceTree = ""; }; + 520C2AA27D516129AD50BA5B31CC7080 /* GTMOAuth2KeychainCompatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMOAuth2KeychainCompatibility.m; path = GTMAppAuth/Sources/GTMOAuth2KeychainCompatibility.m; sourceTree = ""; }; 5227D41DB55CBF9FDDD7E241B3BC8240 /* ftconfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftconfig.h; sourceTree = ""; }; 524CD43AD262D88221806C5081ADD094 /* NstBoardBmc31in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc31in1.hpp; sourceTree = ""; }; 52809410CFB6030953B0EC02A43AD384 /* types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; @@ -2814,65 +2943,62 @@ 52B79B7D3595C4B07C01B51ACF536A49 /* NstApiMovie.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiMovie.hpp; sourceTree = ""; }; 52E47CCC16C0DF6A37D17E02443C4812 /* UICollectionView+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionView+CellContent.h"; path = "Roxas/UICollectionView+CellContent.h"; sourceTree = ""; }; 52E8758B4B04638E106461086364CD77 /* Shape.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Shape.hpp; sourceTree = ""; }; + 5304A1BBB26BB2A13B780F30AE9DE490 /* OIDFieldMapping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDFieldMapping.h; path = Source/AppAuthCore/OIDFieldMapping.h; sourceTree = ""; }; 532EBD7F18EC49C1878B6CF0BA4F38E0 /* GPU.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GPU.h; sourceTree = ""; }; 538BECA09BF84EBE9DC16158EAFD9155 /* KeyedContainers+ManagedValues.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "KeyedContainers+ManagedValues.swift"; sourceTree = ""; }; 538F365E94CEC13764BF9209E73CA629 /* callbacks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = callbacks.h; sourceTree = ""; }; 539E45C97BD611AE9D428625F336FB19 /* glsl_CombinerProgramImpl.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramImpl.cpp; sourceTree = ""; }; + 53A049AD9805951D5775D017CF5E4E8E /* OIDScopes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDScopes.h; path = Source/AppAuthCore/OIDScopes.h; sourceTree = ""; }; 53A730F4F4248E7E3F38F8409A2DE97C /* SMCalloutView */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = SMCalloutView; path = libSMCalloutView.a; sourceTree = BUILT_PRODUCTS_DIR; }; 53D2A4DA49C20418137EF65E0F9A5665 /* Combiner.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Combiner.cpp; sourceTree = ""; }; 53D5CF409D168FA18D40984A454645CB /* pif.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pif.h; sourceTree = ""; }; + 53E42F48345B024F7618B9F522C00170 /* AppAuthCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AppAuthCore.h; path = Source/AppAuthCore.h; sourceTree = ""; }; 53E70D960C0611443A19CD7A1BDD1E9A /* Color.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Color.hpp; sourceTree = ""; }; - 540AD95463DB65E077F08253A77C4865 /* GoogleToolboxForMac.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleToolboxForMac.release.xcconfig; sourceTree = ""; }; 54292260C7F0C11AE47734437FFC763F /* complex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = complex.h; sourceTree = ""; }; 54340D6DD361F80825634BA710CC647F /* ControllerSkinProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControllerSkinProtocol.swift; sourceTree = ""; }; + 545C6C3DA50E65CC81FF48464CD13BEE /* GTLRQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRQuery.m; path = Source/Objects/GTLRQuery.m; sourceTree = ""; }; 546B608856C222EA5AFDA589F8C1BFA4 /* F5Indi_Naboo.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F5Indi_Naboo.cpp; sourceTree = ""; }; 54A730464A55628A722655074F050412 /* NstBoardPxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardPxRom.hpp; sourceTree = ""; }; 54C38C767637E4968C8562607864A579 /* RSTLaunchViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTLaunchViewController.h; path = Roxas/RSTLaunchViewController.h; sourceTree = ""; }; 54ECA01A22C32DC89AB39DF9BFFD5FB6 /* DeltaCore-DeltaCore */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "DeltaCore-DeltaCore"; path = DeltaCore.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 5509DC9BA6EEB190B7EC3C030723AB3F /* PlatformConfig.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformConfig.cpp; sourceTree = ""; }; - 551F767B133FD2219158C4BD484F80BC /* GTMSessionFetcherService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherService.m; path = Source/GTMSessionFetcherService.m; sourceTree = ""; }; - 553931D6CFC09E8F76B87ACF1E671321 /* Fabric.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Fabric.release.xcconfig; sourceTree = ""; }; 5567EB12DEB303864D39F83A736AF4EF /* AboutDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AboutDialog.h; sourceTree = ""; }; 55741C8D3E2ACFCAE9280C7E549BCF36 /* NstIoAccessor.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstIoAccessor.hpp; sourceTree = ""; }; 5587F5DC2A8AD89EAA2F9BB007E8F28F /* NstVideoScreen.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoScreen.hpp; sourceTree = ""; }; 5589D5317C601AB7C713910F472E12CE /* NstBoardSunsoft.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoft.hpp; sourceTree = ""; }; 55B9E506F2EC9B7BCD89BD357A6381B8 /* InputSoundFile.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = InputSoundFile.hpp; sourceTree = ""; }; + 55F78D9EBA7E2C91652EB7AA51EBE3A8 /* Data+Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Compression.swift"; path = "Sources/ZIPFoundation/Data+Compression.swift"; sourceTree = ""; }; 5610301A8DB88B241585A06AEE8968DB /* Keys.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Keys.cpp; sourceTree = ""; }; 5653340B84C9435A83DA0F9E5FA95602 /* NstBoardDiscrete.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardDiscrete.hpp; sourceTree = ""; }; + 565428EE53AC1B19BA15F960B4336E2F /* Users.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Users.swift; path = Source/SwiftyDropbox/Shared/Generated/Users.swift; sourceTree = ""; }; 56739173EC3B35597BDA8BAC4DD593D0 /* NstBoardSuperGameLionKing.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSuperGameLionKing.hpp; sourceTree = ""; }; - 568BC6B386F0E084601CBF273D6953BA /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/UIImage+MultiFormat.h"; sourceTree = ""; }; 56900423A4BD20C4B21DB5442B46BC21 /* plugin_delta.c */ = {isa = PBXFileReference; includeInIndex = 1; path = plugin_delta.c; sourceTree = ""; }; 5697BDD872FAE1F29F301AC50C59364E /* TxFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxFilter.h; sourceTree = ""; }; 56AEB8AA268644CA6A27F76FCE1D41BA /* cp1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cp1.h; sourceTree = ""; }; - 56C4158DD79B8800FDBEF6D1FD40BEBE /* GTMReadMonitorInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMReadMonitorInputStream.h; path = Source/GTMReadMonitorInputStream.h; sourceTree = ""; }; 56EA7BF8FBD08AEA6EF3CE5A757C464D /* ftsizes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftsizes.h; sourceTree = ""; }; - 573983B379A6F917F1D0E630D5F87BC0 /* GTMDebugSelectorValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMDebugSelectorValidation.h; path = DebugUtils/GTMDebugSelectorValidation.h; sourceTree = ""; }; + 57336537A50773006A909975955521AE /* OIDAuthorizationService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDAuthorizationService.m; path = Source/AppAuthCore/OIDAuthorizationService.m; sourceTree = ""; }; 57A493CADEF074E51A6C9C0D3220B6BC /* UIApplication+AppExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIApplication+AppExtension.swift"; sourceTree = ""; }; 57A748F9DF6BE7E55A5A0388FE3E1701 /* m64p_debugger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_debugger.h; sourceTree = ""; }; - 57B181D60AC201D8FEBD7C8BE993EEDD /* GTMSessionFetcher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-prefix.pch"; sourceTree = ""; }; - 57B34424210B5C2631F01A486C9351BB /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; 57BBF8F3367BAA59BCB8B42DE62C605B /* RSTNavigationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTNavigationController.m; path = Roxas/RSTNavigationController.m; sourceTree = ""; }; + 57D9A2767081A16C0A0BB61D1ECFBA87 /* OIDIDToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDIDToken.m; path = Source/AppAuthCore/OIDIDToken.m; sourceTree = ""; }; 57EAC3D7BE52CBA8ABD78FA57C93A4A1 /* aes.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = aes.hpp; sourceTree = ""; }; 57FA5D9B89DC2E6B7F4776BA095BDFC4 /* NstBase.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBase.hpp; sourceTree = ""; }; 580875E9EA0153748A8CDB2FF8543EBA /* RSTRelationshipPreservingMergePolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTRelationshipPreservingMergePolicy.m; path = Roxas/RSTRelationshipPreservingMergePolicy.m; sourceTree = ""; }; - 586B03C24E0DFB57820EDB31B86EFDC1 /* Blob.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blob.swift; path = Sources/SQLite/Core/Blob.swift; sourceTree = ""; }; + 5862AFC41DDC8CFD882F00E20652CBBA /* SMCalloutView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SMCalloutView-prefix.pch"; sourceTree = ""; }; 5874634B8AF12D2C9EBEC9F18722BC95 /* NESDeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = NESDeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 589073BC91C57152BEF9DF66EE60BDE1 /* RemoteFile+Dropbox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RemoteFile+Dropbox.swift"; sourceTree = ""; }; 589560AD66B49028107CCD31E8FE2B8B /* RSTCellContentDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentDataSource.h; path = Roxas/RSTCellContentDataSource.h; sourceTree = ""; }; - 58B84D2927A477768BA7A22EB43B0A83 /* GTLRFramework.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRFramework.m; path = Source/Utilities/GTLRFramework.m; sourceTree = ""; }; 58C4A45607185769805CFBEE70467B54 /* NstBoardAve.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAve.hpp; sourceTree = ""; }; + 58C91782F219ED52DC9C1CB57C6F993E /* OIDEndSessionResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDEndSessionResponse.h; path = Source/AppAuthCore/OIDEndSessionResponse.h; sourceTree = ""; }; 594631815DCEBE56D97BF5A2839C39F8 /* ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist"; sourceTree = ""; }; 59573A3A70CB507990683221BF1FD05A /* RenderWindow.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = RenderWindow.hpp; sourceTree = ""; }; 59740CE3094844205DE805C6ADB909B4 /* NstBoardBmc22Games.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc22Games.hpp; sourceTree = ""; }; - 598055BE88FB8053259FAF21F5B8BAD1 /* SMCalloutView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SMCalloutView.debug.xcconfig; sourceTree = ""; }; 5989C417F48B1221D46CE94295C7E1B1 /* Sprite.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Sprite.hpp; sourceTree = ""; }; - 599A968786BB3CEF39D154E679D99110 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; + 59A9EA9D8300F82CC7308C695334EB31 /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/NSData+ImageContentType.m"; sourceTree = ""; }; 59C0A3B80D2560CBAFDA59C325B9AF68 /* emufile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = emufile.h; sourceTree = ""; }; - 5A0A83DB759E9397D1C0559D05F620AF /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; + 59C44C67A8DEA91172EE5DA16AF31EC4 /* GTMReadMonitorInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMReadMonitorInputStream.h; path = Source/GTMReadMonitorInputStream.h; sourceTree = ""; }; 5A49A08C63E4F4237D52D159DD1D93ED /* svotval.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svotval.h; sourceTree = ""; }; - 5A644A5B4BD538209D5C42F09565D52C /* ZIPFoundation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.debug.xcconfig; sourceTree = ""; }; 5A9BA0AFD82C04952ABDC3E12154E9FB /* regcache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = regcache.h; sourceTree = ""; }; - 5AB2076B345EF471110CA2A7FA91562E /* SQLite.swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SQLite.swift.release.xcconfig; sourceTree = ""; }; 5AF4BD5DC3F0DEC51F5FFBBD3C37C963 /* rateest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rateest.h; sourceTree = ""; }; 5B2EBA0F2FB98CF01E6F308F1DF1521E /* m64282fp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64282fp.h; sourceTree = ""; }; 5B399E2E63878F81C9C03E6363909DF0 /* GLideN64_mupenplus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GLideN64_mupenplus.h; sourceTree = ""; }; @@ -2883,14 +3009,16 @@ 5BFD28BD7E770025934EF3C6AE0C0B19 /* NstBoardTxc.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTxc.hpp; sourceTree = ""; }; 5C0BC836CC26862AF4502F8F063AD007 /* NstInpMouse.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpMouse.hpp; sourceTree = ""; }; 5C4AAA59C0D20ACBCE202A02B2379550 /* ManagedRecord+Uploading.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "ManagedRecord+Uploading.swift"; sourceTree = ""; }; + 5C51D0957C2A3215B7A75B0A8F181E75 /* GTLRDriveQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDriveQuery.m; path = Source/GeneratedServices/Drive/GTLRDriveQuery.m; sourceTree = ""; }; 5C68EF75C56A10FD27BA9FD0A2CFE095 /* insertion_sort.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = insertion_sort.h; sourceTree = ""; }; 5C7AB60D65C527E722A39665A2C3E20C /* interruptrequester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = interruptrequester.h; sourceTree = ""; }; + 5C9061FED51126441CF84AFC73EB38CE /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/UIImageView+WebCache.m"; sourceTree = ""; }; 5CA49EC9478356DE77A7F75F21D362CA /* MelonDSDeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MelonDSDeltaCore.release.xcconfig; sourceTree = ""; }; 5CC605E6227DC63EE4FC8F25683864C9 /* sound.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sound.h; sourceTree = ""; }; - 5CCF0F50976DE33EBB7327D6CE071A1A /* ZIPFoundation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.release.xcconfig; sourceTree = ""; }; - 5D042F73BB66CA682FF5DD25BC25323C /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; + 5CCEE18165C914267574D45D111EF1FB /* GTMAppAuth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMAppAuth.h; path = GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuth.h; sourceTree = ""; }; 5D084884EECE3559E55319F1424A8D8C /* NstBoardAe.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAe.hpp; sourceTree = ""; }; 5D152EBA4C6872472C19FF2E0E6302C8 /* getset.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = getset.h; sourceTree = ""; }; + 5D19506EF29EFA81183C84880EC42262 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; 5D1E820E405347525EB1422245371FA4 /* SoundDriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SoundDriver.h; sourceTree = ""; }; 5D24EAAFCA1D2D99DA57CE30F5311170 /* ARMJIT_Linkage.S */ = {isa = PBXFileReference; includeInIndex = 1; path = ARMJIT_Linkage.S; sourceTree = ""; }; 5D28A45F8D7AE36212541B62DB751AAE /* NstBoardBmcT262.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcT262.hpp; sourceTree = ""; }; @@ -2902,12 +3030,10 @@ 5D797E9A5C5782CE845840781FA1CC81 /* Alamofire */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = Alamofire; path = libAlamofire.a; sourceTree = BUILT_PRODUCTS_DIR; }; 5D877B8846666B99FE70DE7336946A59 /* PACKED.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PACKED.h; sourceTree = ""; }; 5DA7BCFC9344385E53F2B5E834573B31 /* NstBoardSuperGamePocahontas2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSuperGamePocahontas2.hpp; sourceTree = ""; }; - 5DD7DBBB3619EE9EEDB725158C211C8C /* GTLRDriveObjects.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDriveObjects.m; path = Source/GeneratedServices/Drive/GTLRDriveObjects.m; sourceTree = ""; }; 5E53123303D13A89EFB690F2B9415065 /* TextureFilters_2xsai.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilters_2xsai.h; sourceTree = ""; }; 5EA0178D9A10839EC9E1FBC402468DAE /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltamapping; sourceTree = ""; }; 5EA06691575E37AAE40934A36DFD963E /* opengl_TextureManipulationObjectFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_TextureManipulationObjectFactory.h; sourceTree = ""; }; 5EE5CF89122B8100740B5D964BC6C60A /* ResourceBundle-DeltaCore-DeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-DeltaCore-DeltaCore-Info.plist"; sourceTree = ""; }; - 5EF06F8F27ABEC737DD25CCD173676AF /* GoogleToolboxForMac-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleToolboxForMac-umbrella.h"; sourceTree = ""; }; 5F12796CD4266DB2BA844C3FE802694F /* FileInputStream.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = FileInputStream.hpp; sourceTree = ""; }; 5F3E73B0C28C65A6D5C2D04412B1E3A2 /* NstInpAdapter.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpAdapter.hpp; sourceTree = ""; }; 5F807CBBB1968980C804AD52C94A1F5D /* TxCache.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxCache.cpp; sourceTree = ""; }; @@ -2918,51 +3044,56 @@ 5FCFEEAD16A78332EDF4C0FFC05AA2E6 /* snapshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = snapshot.h; sourceTree = ""; }; 5FEA0F061FD0DCA4F3401D15B1BF469E /* mem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = mem.h; sourceTree = ""; }; 60046D5BF02E1F91BD2CA6A0E3316E04 /* ffmpeg.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ffmpeg.h; sourceTree = ""; }; - 602A09D764BF391459201D3C894EE108 /* Archive+Reading.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Reading.swift"; path = "Sources/ZIPFoundation/Archive+Reading.swift"; sourceTree = ""; }; 602C4089BDD19728DD20894159F75CD7 /* controls.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = controls.h; sourceTree = ""; }; - 602F93ECC989A3FB6D04031D00DE62E5 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/SDWebImagePrefetcher.m; sourceTree = ""; }; 6038A3E16A86BD8715BB972CD9A02CFD /* UIImage+Manipulation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Manipulation.h"; path = "Roxas/UIImage+Manipulation.h"; sourceTree = ""; }; 6045D3A35D50C1C15AE8960CB2371B04 /* recomp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = recomp.h; sourceTree = ""; }; 6080A7B672662B9708484ECE9F1E9D20 /* JSONDecoder+ManagedObjectContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "JSONDecoder+ManagedObjectContext.swift"; sourceTree = ""; }; - 60815A565ED55CD68EB1B67F9D360CFF /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/UIButton+WebCache.m"; sourceTree = ""; }; 608439DF02BFE25E295C6EFBD20644A1 /* SNESTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SNESTypes.h; sourceTree = ""; }; + 60846DC9067AEB427BC583ED3B0AB2AA /* SMClassicCalloutView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SMClassicCalloutView.h; sourceTree = ""; }; 611A4156C9373331863B6B3CCCA0ADB0 /* TextureFilters_hq4x.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilters_hq4x.h; sourceTree = ""; }; 613E3D02E0FCA1DB2DAAAF575F3B6092 /* NstApiInput.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiInput.hpp; sourceTree = ""; }; + 61432BF68678068CA6DE2937DF8E6096 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; 61617EFC8602E33099222E4CB2B190E7 /* ColorBufferToRDRAMStub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ColorBufferToRDRAMStub.h; sourceTree = ""; }; 6165D72607C70B0F2827923BC22DA64E /* Config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Config.h; sourceTree = ""; }; 61731B27E7AB44193397CEB87F0DC6E7 /* rdram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rdram.h; sourceTree = ""; }; 61C2FFE97E3943098D12F4573B41E69E /* BreakpointStructures.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BreakpointStructures.h; sourceTree = ""; }; 61C856FF8209BE3A5A5542A18EF2E2E8 /* convert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = convert.h; sourceTree = ""; }; 61CB63D0B91F77C8C4CACA85669A8E82 /* GLideN64.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GLideN64.cpp; sourceTree = ""; }; - 61EE3CF1533FE896277A8399AB5697AE /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; - 622C39AE31FBB34625FBFCF26A80CD07 /* GTMMethodCheck.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMMethodCheck.h; path = DebugUtils/GTMMethodCheck.h; sourceTree = ""; }; + 621592BBAC875C8A274C00B49FAC693D /* CLSAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSAttributes.h; path = iOS/Crashlytics.framework/Headers/CLSAttributes.h; sourceTree = ""; }; + 623B35F702DC1066A2A46AF8A9CD3ABC /* GTMSessionFetcher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GTMSessionFetcher-dummy.m"; sourceTree = ""; }; + 6254C48CD5724F0BDBF7A6EB0177D259 /* GoogleSignIn.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleSignIn.framework; path = Frameworks/GoogleSignIn.framework; sourceTree = ""; }; 6292A1AF278F202B2C7DFEAE7F612753 /* GraphicBufferWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GraphicBufferWrapper.h; sourceTree = ""; }; - 629F6A26E346FCCB87CF068FC152224D /* GTMDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; 62C822632DEA06D3F0E3CAE9592D0B1B /* SyncProgress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncProgress.swift; sourceTree = ""; }; + 62CDF5DE6B91DC2BAAA133DC0CE14FB9 /* SQLite.swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SQLite.swift.release.xcconfig; sourceTree = ""; }; 62F69A205D68CC5AEAFCCDE14C671612 /* N64Types.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = N64Types.m; sourceTree = ""; }; 63009045A5258EC061C7BDFA58FCA888 /* af_rtc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = af_rtc.h; sourceTree = ""; }; + 6303FACD5A9C1BE3214E82440C968C95 /* OIDExternalUserAgentIOS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDExternalUserAgentIOS.m; path = Source/AppAuth/iOS/OIDExternalUserAgentIOS.m; sourceTree = ""; }; 6317442074E2356EB92C4083C5885EB7 /* NESDeltaCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NESDeltaCore-prefix.pch"; sourceTree = ""; }; 631AA428C1ADDC4884E3FDFF45CD1CE4 /* GPU3D.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GPU3D.cpp; sourceTree = ""; }; 63363BF83848A94A46DEE8515C73F001 /* NstBoardNamcot.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNamcot.hpp; sourceTree = ""; }; - 63596961E529E55CE62A0623E1E98848 /* Crashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Crashlytics.h; path = iOS/Crashlytics.framework/Headers/Crashlytics.h; sourceTree = ""; }; + 6346787D54CB5AEC2AF8189D7BA5769B /* GTMAppAuth.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GTMAppAuth.modulemap; sourceTree = ""; }; 639E4A72009647184186830A27020CFA /* commandline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = commandline.h; sourceTree = ""; }; 63C624819908489F4CC8D513A9D77584 /* SoundRecorder.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundRecorder.hpp; sourceTree = ""; }; 63D1C0BC417103C4DA9392CE6221CC23 /* SPI.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = SPI.cpp; sourceTree = ""; }; 63E839BBEED37A43F074436ADE9E0EE7 /* NstInpFamilyTrainer.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpFamilyTrainer.hpp; sourceTree = ""; }; 63F7D87FC807DBF94D110542C7A61703 /* plugins_compat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = plugins_compat.h; sourceTree = ""; }; 64223FA97C874ECB3B3A21028EC6BC31 /* F3DEX2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DEX2.h; sourceTree = ""; }; + 6422ED78A396BD722B4FFA6B5EEA3D7A /* DropboxClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxClient.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxClient.swift; sourceTree = ""; }; + 644438FF1363ED7F30AA44B6F1D3D4F9 /* GTMMIMEDocument.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMMIMEDocument.m; path = Source/GTMMIMEDocument.m; sourceTree = ""; }; 6483AFCDF2FD38F1D4A3F3A709B1B448 /* GBCDeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBCDeltaCore.h; sourceTree = ""; }; 648BAE84EFC9AC60FD527D3B96799847 /* melonDLDI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = melonDLDI.h; sourceTree = ""; }; 64942D01612D91517D8D0EAC219F7867 /* convert.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = convert.cpp; sourceTree = ""; }; - 6497DCF700203B483AC09F89101261EB /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/UIView+WebCacheOperation.m"; sourceTree = ""; }; 64CEF3D7C11C1765BE1890D9AE7DE782 /* TxUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxUtil.h; sourceTree = ""; }; 64D795F559E1C97B950AC604E9C450A9 /* NstBoardExRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardExRom.hpp; sourceTree = ""; }; 6510AC07F7667F0B972688C1231D9A79 /* tile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = tile.h; sourceTree = ""; }; 6514E7536A5192984F03FB8FCA148B25 /* NstBoardBmcSuper24in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuper24in1.hpp; sourceTree = ""; }; 65504AC7E46DADE41EA84C80B7836EBB /* RateTransposer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RateTransposer.h; sourceTree = ""; }; 65A433B3EB98A7B65E810897D6DA9F4A /* NstVsTkoBoxing.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVsTkoBoxing.hpp; sourceTree = ""; }; + 65C041CF729204D4FD8D6C65A82A97C1 /* GTLRService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRService.m; path = Source/Objects/GTLRService.m; sourceTree = ""; }; 65C0DDF5FF53C81B94F9185A89D0DF7B /* pngwrite.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngwrite.c; sourceTree = ""; }; + 65CB42CA8D5984A85D114FE0E4DA0D4D /* GTMGatherInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMGatherInputStream.h; path = Source/GTMGatherInputStream.h; sourceTree = ""; }; 65EE3AAF17CA05DE17F33860600EACDC /* NstProperties.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstProperties.hpp; sourceTree = ""; }; + 660E3C5DCE31A47E4D097B7EAB89ADC4 /* Data+Serialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Serialization.swift"; path = "Sources/ZIPFoundation/Data+Serialization.swift"; sourceTree = ""; }; 661EC5D34F43356B676899643B0968B6 /* NstBoardBmcSuper22Games.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuper22Games.hpp; sourceTree = ""; }; 6631F3A954D12761F4E839FEE9AEBDB2 /* RecordEntry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RecordEntry.swift; sourceTree = ""; }; 664DAF2B08C53CFFD688E66737890530 /* osd_element.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = osd_element.h; sourceTree = ""; }; @@ -2970,17 +3101,19 @@ 665E0C4FA5D002E1391BD3AEFBE08D3C /* SoundBufferRecorder.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundBufferRecorder.hpp; sourceTree = ""; }; 66661D2E919981718EF525C8A2B79DD3 /* TextureFilterHandler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilterHandler.cpp; sourceTree = ""; }; 667BB04531AD532495A6109121EC251F /* StandardGameControllerInput.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = StandardGameControllerInput.swift; sourceTree = ""; }; - 6699C28C7C6519A74846481B5F2FC5A3 /* Alamofire.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.debug.xcconfig; sourceTree = ""; }; + 667EABC7424BACAE8E7C808CEAD440E5 /* OIDGrantTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDGrantTypes.h; path = Source/AppAuthCore/OIDGrantTypes.h; sourceTree = ""; }; 66B94332C2892C2FBB6F744B32DFA57D /* language.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = language.h; sourceTree = ""; }; 6717E36C97D4C7F7ACA1E5E3881BD3B5 /* NstVideoFilterHqX.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoFilterHqX.hpp; sourceTree = ""; }; - 674B43A90EAC668AF859CC16F6048DC4 /* SwiftyDropbox-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyDropbox-prefix.pch"; sourceTree = ""; }; 675E8B0AFDC80A9C1970C7FDCD10849C /* CheatFormat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CheatFormat.swift; sourceTree = ""; }; 676D937BEE4FDF32EC269E9269F058C9 /* usec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = usec.h; sourceTree = ""; }; + 6771B4449FA8648EEC6B83E8196F57DF /* GTMReadMonitorInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMReadMonitorInputStream.m; path = Source/GTMReadMonitorInputStream.m; sourceTree = ""; }; + 67972EDAFE4E36E6817526CECEB8ADC1 /* OIDTokenResponse.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDTokenResponse.m; path = Source/AppAuthCore/OIDTokenResponse.m; sourceTree = ""; }; 67C1AA390485CC2C6DC31AC269DDAA69 /* NstBoardBmcVrc4.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcVrc4.hpp; sourceTree = ""; }; 67DE15A659C79639D0F56E08DF9FBC6A /* DeleteRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeleteRecordsOperation.swift; sourceTree = ""; }; - 67EBFE3C6348F22E3FACE3590580BB37 /* Fabric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fabric.h; path = iOS/Fabric.framework/Headers/Fabric.h; sourceTree = ""; }; 6806D956E4140F84365C79F5D4FCE016 /* NSBundle+Extensions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+Extensions.h"; path = "Roxas/NSBundle+Extensions.h"; sourceTree = ""; }; 681C6B5D5F90F28373E784C81E247636 /* System.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = System.hpp; sourceTree = ""; }; + 684DFD7ECBB5551A653A62AA04E7288F /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/UIButton+WebCache.m"; sourceTree = ""; }; + 6889D75793FCB73A96071074FD242409 /* SQLite.swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SQLite.swift-prefix.pch"; sourceTree = ""; }; 6897635977DD87B42B68908D5D055763 /* audio.c */ = {isa = PBXFileReference; includeInIndex = 1; path = audio.c; sourceTree = ""; }; 68A5300F3188F31B9006F34795F04024 /* DSDeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DSDeltaCore.release.xcconfig; sourceTree = ""; }; 68B085A5D794A541827C808F19891FA8 /* ARM_InstrTable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARM_InstrTable.h; sourceTree = ""; }; @@ -2988,17 +3121,15 @@ 68F725C31134BB9DC7306936029A5D88 /* DSiCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSiCrypto.h; sourceTree = ""; }; 6984E1848F3D8BB2CFFD8E74430573AA /* NoiseTexture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NoiseTexture.h; sourceTree = ""; }; 698A11ECCAF009BA9765514FEF63E5D2 /* SNESDeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SNESDeltaCore.release.xcconfig; sourceTree = ""; }; - 699BB5E960F7F5A50C96A562EA76EE9C /* GoogleSignIn.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleSignIn.framework; path = Frameworks/GoogleSignIn.framework; sourceTree = ""; }; 69D7D593CD4C8A55DEF962DF985D212C /* WindowHandle.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = WindowHandle.hpp; sourceTree = ""; }; + 69DDC90963CE22D2698E75E047FA5694 /* DBChunkInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DBChunkInputStream.m; path = Source/SwiftyDropbox/Shared/Handwritten/DBChunkInputStream.m; sourceTree = ""; }; 69E68B93890F97717D4799790DFBCF02 /* ARMJIT_Memory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Memory.h; sourceTree = ""; }; 69E9E10208FD58BDFDF95FE905657FB6 /* memory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + 69F822EB18DC49C603929CDE54E390B2 /* GTMSessionFetcherService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherService.m; path = Source/GTMSessionFetcherService.m; sourceTree = ""; }; 6A4D816174974D9B8D18C7000DB19127 /* NstApiDipSwitches.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiDipSwitches.hpp; sourceTree = ""; }; 6A873C2EE1C0E1CB2813C3782D60D441 /* VI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = VI.h; sourceTree = ""; }; 6AAA864C0F0640170A495DCA2EEC4AE3 /* Config.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Config.cpp; sourceTree = ""; }; - 6AC9CEAA77814183897B01BB7820D72D /* OAuth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OAuth.swift; path = Source/SwiftyDropbox/Shared/Handwritten/OAuth.swift; sourceTree = ""; }; - 6ACCC934BB5FAD4B0A16D654246E21F6 /* GTLRQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRQuery.m; path = Source/Objects/GTLRQuery.m; sourceTree = ""; }; 6AE4F753611AEF693986993C3D54DDB4 /* Thread+RealTime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Thread+RealTime.swift"; sourceTree = ""; }; - 6AE80E95610AC55EF36C52FE2399360A /* SwiftyDropbox.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyDropbox.debug.xcconfig; sourceTree = ""; }; 6AF68755E15FBB7DFA5A924FE61DA530 /* TxUtil.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxUtil.cpp; sourceTree = ""; }; 6B07DDECAC335B9CB2DA70E8D6BF1CFF /* DSi.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi.cpp; sourceTree = ""; }; 6B805F48C8C32F42FEC9BFC063684A1E /* ftmemory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftmemory.h; sourceTree = ""; }; @@ -3006,48 +3137,53 @@ 6BA9A7C0E7B06DF8174958C010B1B142 /* Harmony.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Harmony.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 6BCDAF46DCBB643E18D73E1CCAD9D4B0 /* Thread.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = Thread.inl; sourceTree = ""; }; 6C01054A9E17C230DD508039038A8743 /* TxReSample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxReSample.h; sourceTree = ""; }; - 6C1E4CF0FFCC19C1AD6905DE817C17EA /* Connection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Connection.swift; path = Sources/SQLite/Core/Connection.swift; sourceTree = ""; }; 6C1F3262541C140E77304A95BC6F7CFD /* FIFO.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FIFO.h; sourceTree = ""; }; 6CAE986A70F08EBFB10A2ACE57CC759C /* RSTOperation_Subclasses.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTOperation_Subclasses.h; path = Roxas/RSTOperation_Subclasses.h; sourceTree = ""; }; 6CD24C018B59B44AC41CBF862AAD1B65 /* NSUserDefaults+DynamicProperties.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSUserDefaults+DynamicProperties.h"; path = "Roxas/NSUserDefaults+DynamicProperties.h"; sourceTree = ""; }; 6CDDFBD9A3BA785C35B9CC79A6F6ED65 /* NstCpu.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstCpu.hpp; sourceTree = ""; }; 6CED9A062A0270F010C6EB9D1C8210C0 /* NstApiBarcodeReader.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiBarcodeReader.hpp; sourceTree = ""; }; - 6D25D90C2F0571F2A637C30B9B936472 /* GTLRBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBase64.h; path = Source/Utilities/GTLRBase64.h; sourceTree = ""; }; + 6D05B11A7C98445859C746B5D40BBDBA /* UsersRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UsersRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/UsersRoutes.swift; sourceTree = ""; }; 6D6DFDB15FE6CF03FA837635E83FF32D /* NstBoardUnlKingOfFighters96.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlKingOfFighters96.hpp; sourceTree = ""; }; 6D7215E9860D5201C6E662D028167008 /* png.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = ""; }; 6D839771AD6266616548B689C98C152B /* zlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + 6D95088C649CC96A2D82A787F207F334 /* OIDRegistrationResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDRegistrationResponse.h; path = Source/AppAuthCore/OIDRegistrationResponse.h; sourceTree = ""; }; + 6DA4650CFA3D840D5700092BAEE1BB9F /* Alamofire.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.release.xcconfig; sourceTree = ""; }; 6DA856617D2E5895654D405707061C8D /* pngtrans.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngtrans.c; sourceTree = ""; }; + 6DB143B9201888455FA6E13BE13093EC /* fts3_tokenizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fts3_tokenizer.h; path = Sources/SQLiteObjc/fts3_tokenizer.h; sourceTree = ""; }; + 6DB930631E2AEFA13A9D03861573F6AD /* GTLRDuration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDuration.m; path = Source/Objects/GTLRDuration.m; sourceTree = ""; }; 6DCA8DE46094D93D094469CF3789EDFD /* NstInpBandaiHyperShot.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpBandaiHyperShot.hpp; sourceTree = ""; }; 6E2949ECED20630F005C9089F54664BD /* NstBoardGouder.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardGouder.hpp; sourceTree = ""; }; 6E2DE852C4E6E58A4D8E5DA96EF7F58B /* TDStretch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TDStretch.h; sourceTree = ""; }; - 6E93E4BE7AB127183B96B96E91487DA6 /* GTLRBatchResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBatchResult.h; path = Source/Objects/GTLRBatchResult.h; sourceTree = ""; }; 6EB90A19DC38F46FCF2E949B3090E97F /* Game.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Game.swift; sourceTree = ""; }; 6ECC54EF6D8BAE4780A2B8AA2B82AE25 /* GBAinline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBAinline.h; sourceTree = ""; }; 6F227DD9B538B796B61C83211146E652 /* Joystick.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Joystick.hpp; sourceTree = ""; }; + 6F44A711D7E6E13C98A5A2D6DB029155 /* GTMAppAuth.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMAppAuth.release.xcconfig; sourceTree = ""; }; 6F472639A9FFD42C9F8AEA03512A2556 /* Ext_TxFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Ext_TxFilter.h; sourceTree = ""; }; 6F4E2EF4061C123327CC34F6A00BA605 /* N64DeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = N64DeltaCore.modulemap; sourceTree = ""; }; - 6F67C72AC639FF2FE8B8682CBADFEA91 /* CustomFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomFunctions.swift; path = Sources/SQLite/Typed/CustomFunctions.swift; sourceTree = ""; }; 6F91A9DD254E8DA7FF12F970DCDC62DE /* RSTTintedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTTintedImageView.h; path = Roxas/RSTTintedImageView.h; sourceTree = ""; }; 6F9B0CA903658EB64764843AB640E8F4 /* ARMJIT_LoadStore.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_LoadStore.cpp; sourceTree = ""; }; 6FA4BA7F6A5656E0A2EB653423B78908 /* RSTSeparatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTSeparatorView.h; path = Roxas/RSTSeparatorView.h; sourceTree = ""; }; - 6FB01D09B653BA294A2E5E980D435892 /* GTLRUploadParameters.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRUploadParameters.m; path = Source/Objects/GTLRUploadParameters.m; sourceTree = ""; }; + 6FBA5C1ECE9E5A1D4290E1131731F13F /* ANSCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ANSCompatibility.h; path = iOS/Crashlytics.framework/Headers/ANSCompatibility.h; sourceTree = ""; }; 6FC77100447CAFFFFB6F4AF0B2D187DE /* m64p_vidext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_vidext.h; sourceTree = ""; }; + 6FD122EA0AB9AB2A8FFA5F676C795DF0 /* GTMAppAuth */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = GTMAppAuth; path = libGTMAppAuth.a; sourceTree = BUILT_PRODUCTS_DIR; }; 7003747C317E358B598ECB582505C2B9 /* ftcalc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftcalc.h; sourceTree = ""; }; 700BA0A030FC6AE568E41A84775CF466 /* UICollectionViewCell+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewCell+CellContent.m"; path = "Roxas/UICollectionViewCell+CellContent.m"; sourceTree = ""; }; 705A45A31ACA377978617FA5B0556C36 /* xxhash.c */ = {isa = PBXFileReference; includeInIndex = 1; path = xxhash.c; sourceTree = ""; }; 707A58EA3FAEA5A0AB870C8240B45F8D /* DSi_SPI_TSC.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_SPI_TSC.h; sourceTree = ""; }; 70AC9A537F1807D80751379F589A5A6E /* agbprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = agbprint.h; sourceTree = ""; }; 70AE7CC7AFFE33944F4D565A383D0A4B /* SyncRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncRecordsOperation.swift; sourceTree = ""; }; - 70B04C9F57267E03F1342083D92F72DD /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; 7101A5A0AF996E8B832B03A07D06EF59 /* opengl_UnbufferedDrawer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_UnbufferedDrawer.h; sourceTree = ""; }; 7102A8DBFC6D01F98DCE0C4D4CC37C59 /* RSTSearchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTSearchController.h; path = Roxas/RSTSearchController.h; sourceTree = ""; }; 71122C229801C8A1AE61B44C6072C5BA /* ContextSettings.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = ContextSettings.hpp; sourceTree = ""; }; 711B7352488C5E8D3F8233466422FFF3 /* TouchInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TouchInputView.swift; sourceTree = ""; }; 713D0E7BCA5C03C90F079A4843B7A0BF /* SPU.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = SPU.cpp; sourceTree = ""; }; + 715A3DF4852F90899132BEFE4C3D6AEA /* GTLRDriveObjects.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDriveObjects.m; path = Source/GeneratedServices/Drive/GTLRDriveObjects.m; sourceTree = ""; }; 716AC385E3C379704598782E95836B4C /* PropertyGroup+Harmony.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PropertyGroup+Harmony.swift"; sourceTree = ""; }; 716BF6C8E6DDDF89F269D9F9813DF54F /* Music.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Music.hpp; sourceTree = ""; }; 71842E47BE8B0F0B851CBD4692774A0D /* ZSortBOSS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ZSortBOSS.h; sourceTree = ""; }; 71ABC7B01A2AED1DF266ADD556DC3E2C /* joybus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = joybus.h; sourceTree = ""; }; + 71B40389FEF3F25336856EBDF7DD4FB4 /* Schema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Schema.swift; path = Sources/SQLite/Typed/Schema.swift; sourceTree = ""; }; + 71C4D2F17761E8D847E98CA775551753 /* SeenState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SeenState.swift; path = Source/SwiftyDropbox/Shared/Generated/SeenState.swift; sourceTree = ""; }; 71D8C40123C88444BCE6C982C12B9658 /* NstBoardTxcPoliceman.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTxcPoliceman.hpp; sourceTree = ""; }; 71E4CA9704FAF1A05A6077D6A2F106E5 /* Globals.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Globals.h; sourceTree = ""; }; 71E7D30B14CEA44743A2FC9890328DD1 /* AREngine.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = AREngine.cpp; sourceTree = ""; }; @@ -3056,6 +3192,7 @@ 724B29B391C824EDBAFA9DEF2FE99851 /* srtcemu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = srtcemu.h; sourceTree = ""; }; 7264E167641F7C858327D20B9E3A58A3 /* gfx.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gfx.h; sourceTree = ""; }; 729BF0CDF2F194945E181AE490D95F4D /* RSTCellContentChangeOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentChangeOperation.h; path = Roxas/RSTCellContentChangeOperation.h; sourceTree = ""; }; + 72A27101BC912E97C4A848FA5B2852E3 /* OIDAuthorizationRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDAuthorizationRequest.m; path = Source/AppAuthCore/OIDAuthorizationRequest.m; sourceTree = ""; }; 72BAA242AAFF78139FE9E73EA0C58CF6 /* CRC.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CRC.h; sourceTree = ""; }; 72C2BD691E773B3AA18161BE9F907814 /* musyx.c */ = {isa = PBXFileReference; includeInIndex = 1; path = musyx.c; sourceTree = ""; }; 72F4F97B5A20840B22C7B3086D082CFE /* vidext_sdl2_compat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = vidext_sdl2_compat.h; sourceTree = ""; }; @@ -3065,12 +3202,10 @@ 739B58FF90CB88672E9485D85ADBB8FB /* RTC.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RTC.cpp; sourceTree = ""; }; 739E915513C72D897FE1A9E3F5526FF5 /* ARMJIT_ALU.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_ALU.cpp; sourceTree = ""; }; 73ADD12AA159A3A86ABFF932ECF648EE /* opengl_BufferedDrawer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_BufferedDrawer.h; sourceTree = ""; }; - 73C973D6C8F68D6041F1D72D7FDFBAA9 /* StoneBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoneBase.swift; path = Source/SwiftyDropbox/Shared/Generated/StoneBase.swift; sourceTree = ""; }; 73E2631C811B52E4EF1AA3B351C29EC3 /* Harmony-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Harmony-umbrella.h"; sourceTree = ""; }; 741D80A77CF94D1A62975E95320C1C4E /* ftbbox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftbbox.h; sourceTree = ""; }; 744DCF637AD3CB2923FC1904923483CA /* SDL_opengl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SDL_opengl.h; sourceTree = ""; }; 7451BADFCD5FCDA73345F9FD825AA24F /* WriteToRDRAM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = WriteToRDRAM.h; sourceTree = ""; }; - 745C7BD034F68630CA1462CB29BF3051 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; 74649BDF8639556695E5571599771679 /* GBALink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBALink.h; sourceTree = ""; }; 747A20244D91C2176F1D00D844CD1E8A /* hermite_resampler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = hermite_resampler.h; sourceTree = ""; }; 74839D07D9C98E393388C150451DD09A /* RTC.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RTC.h; sourceTree = ""; }; @@ -3078,6 +3213,7 @@ 74A8674F8F7BBD7931D23CC4805BEE81 /* DSTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = DSTypes.m; sourceTree = ""; }; 74CE98C1A722E74DF58E8FC293568C26 /* ManagedRecord+Predicates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "ManagedRecord+Predicates.swift"; sourceTree = ""; }; 74DF3490E9B299E248886B5A9C448B30 /* NstInpCrazyClimber.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpCrazyClimber.hpp; sourceTree = ""; }; + 74F05A6C37749284B183DB2143487616 /* Fabric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fabric.h; path = iOS/Fabric.framework/Headers/Fabric.h; sourceTree = ""; }; 751CF81F10F453FC303ED3CCAE06ACF2 /* Turbo3D.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Turbo3D.cpp; sourceTree = ""; }; 752759220DF0B6DAE5C4C713A47F7883 /* NstBoardBtlDragonNinja.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlDragonNinja.hpp; sourceTree = ""; }; 752E5F252C16B0791F925DBFFD546EC7 /* Harmony-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Harmony-prefix.pch"; sourceTree = ""; }; @@ -3086,51 +3222,57 @@ 7559F50967A335CF4EDF95041612E9C0 /* rumble_backend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rumble_backend.h; sourceTree = ""; }; 755E5E577144BC6D12921757F1F6E1AA /* RSTToastView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTToastView.h; path = Roxas/RSTToastView.h; sourceTree = ""; }; 75759807E6D9531D36908860D364F3A5 /* RSTSearchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTSearchController.m; path = Roxas/RSTSearchController.m; sourceTree = ""; }; - 75769AD8AA1E6A55767E34444DEBA81E /* SQLite.swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SQLite.swift.debug.xcconfig; sourceTree = ""; }; 757A732B7BAC976FD18554A3F1D66BA3 /* N64DeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "N64DeltaCore-dummy.m"; sourceTree = ""; }; 7580E8E59C09C681129D551B115623A9 /* SoundFileWriter.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundFileWriter.hpp; sourceTree = ""; }; + 75DBA6DC94189A4B6AD397C7256C9706 /* OIDTokenResponse.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDTokenResponse.h; path = Source/AppAuthCore/OIDTokenResponse.h; sourceTree = ""; }; 761A98F99CC4AC398A9EE32A6DF30727 /* rasterize.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rasterize.h; sourceTree = ""; }; 762C44D2B54DC847400E23DF806F5656 /* ARM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARM.h; sourceTree = ""; }; 7657BA65EF8EB33312A65840AD32753B /* GLFunctions.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GLFunctions.cpp; sourceTree = ""; }; 7663ACEEC1F439694D5928A2A478C3F2 /* NstBoardBmcNovelDiamond.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcNovelDiamond.hpp; sourceTree = ""; }; + 76831D1F4916ABDA8E9B757F3D89906C /* GoogleAPIClientForREST.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleAPIClientForREST.modulemap; sourceTree = ""; }; 76C34EEDAB12BF43E414A300E3D01560 /* N64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = N64.h; sourceTree = ""; }; 76F99B741051818D7B84AB0AAB5A23DF /* TextureFilters_2xsai.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters_2xsai.cpp; sourceTree = ""; }; - 779480D51F350F2ABC3479ACDA749DEB /* FileManager+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FileManager+ZIP.swift"; path = "Sources/ZIPFoundation/FileManager+ZIP.swift"; sourceTree = ""; }; + 773A83F92D5093E6969EB0653A60C803 /* BaseTeam.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BaseTeam.swift; path = Source/SwiftyDropbox/Shared/Generated/BaseTeam.swift; sourceTree = ""; }; + 774669B0A54F8C6387DA08EDDD540FE7 /* GTMSessionFetcher.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMSessionFetcher.release.xcconfig; sourceTree = ""; }; 77B25B584DEB91D5A2E01AF428205DF8 /* GBADeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GBADeltaCore.release.xcconfig; sourceTree = ""; }; 77BBA8B2440BB7526EAB4DA6E7AAD930 /* NstBoardUnlMortalKombat2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlMortalKombat2.hpp; sourceTree = ""; }; 77F19454FB70DAEC91C67992D0B05BF6 /* RSTError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTError.m; path = Roxas/RSTError.m; sourceTree = ""; }; 77F2AA581C57990DA2CAAAAAFA7978ED /* NstInpZapper.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpZapper.hpp; sourceTree = ""; }; + 78926AD45B7D54A5AC482490E17C94A9 /* SQLiteObjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SQLiteObjc.h; path = Sources/SQLiteObjc/include/SQLiteObjc.h; sourceTree = ""; }; 789BC68A9D6AF69A55A99DC6F4145F6F /* ColorBufferToRDRAM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ColorBufferToRDRAM.h; sourceTree = ""; }; 78BE744DC96A3ABD50BFBBEA4997CB56 /* firmware.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = firmware.h; sourceTree = ""; }; 78C8AB7FD07C0ECCA27FBE751419AC29 /* RSTLoadOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTLoadOperation.h; path = Roxas/RSTLoadOperation.h; sourceTree = ""; }; 78D67D81F7F536854B214522F25EF65A /* zip.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; 78E5EBC47AAD35C9175D0870993FF3FB /* armcpu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = armcpu.h; sourceTree = ""; }; 78F0065D1B4EEB8522402FAB52FAA8AB /* ARM_InstrInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARM_InstrInfo.h; sourceTree = ""; }; + 78F9D9A60A5D47161DEB5603E363B2C2 /* FileProperties.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileProperties.swift; path = Source/SwiftyDropbox/Shared/Generated/FileProperties.swift; sourceTree = ""; }; 79096D906F7AF34756EE89FD73D49F70 /* cached_interp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cached_interp.h; sourceTree = ""; }; 7914DE489BB276AE0049FA0D58DE4DA5 /* game_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = game_controller.h; sourceTree = ""; }; 791E2F50ABC6974A9FCB2BC6FFD052B3 /* pngwutil.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngwutil.c; sourceTree = ""; }; - 79488326ACD741DA78E6F8BFDA889395 /* StoneSerializers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoneSerializers.swift; path = Source/SwiftyDropbox/Shared/Generated/StoneSerializers.swift; sourceTree = ""; }; 79726DFC76B227BC4EBE831292148FCC /* NstVideoRenderer.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoRenderer.hpp; sourceTree = ""; }; 79850525864D43CEE846DDB866D61E85 /* Platform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = ""; }; - 798D5972AD9FFEB025B0DC380ACFC440 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; 7992DF58A03B979D2C28021F9A285D86 /* ZilmarGFX_1_3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ZilmarGFX_1_3.h; sourceTree = ""; }; + 79CC2E9716502B9D8374D5E0AB89659B /* AuthRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/AuthRoutes.swift; sourceTree = ""; }; + 79FCE5BAA38140636DB207A1281BEF35 /* Statement.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Statement.swift; path = Sources/SQLite/Core/Statement.swift; sourceTree = ""; }; 7A0260AEF602B25A1C9C1070115AFE67 /* png.c */ = {isa = PBXFileReference; includeInIndex = 1; path = png.c; sourceTree = ""; }; + 7A12F6604A0432A7726E6AA7EE190AAE /* SQLite.swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SQLite.swift-dummy.m"; sourceTree = ""; }; 7A3FB29F31D9C72AEF1108F15ED0F102 /* NstBoardKonamiVrc3.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVrc3.hpp; sourceTree = ""; }; 7A65D1E2BCC4BEF145F489BDD64FF84D /* ARMJIT_RegisterCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMJIT_RegisterCache.h; sourceTree = ""; }; 7A7771014FAB9D9EC0615DFB04A95468 /* NstBoardUnlXzy.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlXzy.hpp; sourceTree = ""; }; 7A7C1BFAE179AE0D743ACBFA494428FC /* ColorBufferReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ColorBufferReader.h; sourceTree = ""; }; 7A959D02F6935A939FFC2709380B318D /* SyncCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SyncCoordinator.swift; path = Harmony/SyncCoordinator.swift; sourceTree = ""; }; 7AA19FDEFBF3791B2260D269109B7E56 /* NESEmulatorBridge.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = NESEmulatorBridge.cpp; sourceTree = ""; }; - 7AEEEEBC25EAA4D178CE03F03D008923 /* GTMGatherInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMGatherInputStream.h; path = Source/GTMGatherInputStream.h; sourceTree = ""; }; + 7AAA640AFD19E6EFC758E877BB143972 /* SDKConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SDKConstants.swift; path = Source/SwiftyDropbox/Shared/Handwritten/SDKConstants.swift; sourceTree = ""; }; 7B1BE1F8D9A26B5F6AD4486918D9E3B8 /* Textures.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Textures.cpp; sourceTree = ""; }; 7B2761CCCCF2A0BEFF0304C3D4DB75EC /* FetchRemoteRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FetchRemoteRecordsOperation.swift; sourceTree = ""; }; 7B953986F11248C6CA94BCF08358DBAE /* RSTConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTConstants.h; path = Roxas/RSTConstants.h; sourceTree = ""; }; 7BA610A36DFB874B62001DEE0934C8EE /* ConflictRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConflictRecordOperation.swift; sourceTree = ""; }; 7BC43D45DBCF227AFEE841E2730C0A96 /* svpostnm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svpostnm.h; sourceTree = ""; }; 7BD44D010CB092864578D2D236E98BC7 /* interpret.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = interpret.h; sourceTree = ""; }; - 7C6BC0D076F377BD8D6A2EAB196A9653 /* GTLRDriveObjects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDriveObjects.h; path = Source/GeneratedServices/Drive/GTLRDriveObjects.h; sourceTree = ""; }; + 7C577D7CCC9935FF8720C6CB71251340 /* GTLRObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRObject.m; path = Source/Objects/GTLRObject.m; sourceTree = ""; }; 7C8D322419292F2F744F642CA3045571 /* ARMInterpreter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMInterpreter.h; sourceTree = ""; }; 7CADAC9681F97C7BA6737523C8485566 /* ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist"; sourceTree = ""; }; + 7CB6C7B27A989417744E3635C017E270 /* OIDError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDError.h; path = Source/AppAuthCore/OIDError.h; sourceTree = ""; }; 7CE529984247F0D4B4C84FC43F503559 /* NstMemory.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstMemory.hpp; sourceTree = ""; }; 7CFFFA1D5341196B3D469781675F7F87 /* NSString+Localization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Localization.h"; path = "Roxas/NSString+Localization.h"; sourceTree = ""; }; 7D0099BB4D934D97A53DFEC8FEFE075B /* DSi_I2C.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_I2C.h; sourceTree = ""; }; @@ -3139,9 +3281,7 @@ 7D27A8D199AF789EB7101A558A907648 /* pngwtran.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngwtran.c; sourceTree = ""; }; 7D2B4AA231F78E750267C346C531145E /* NstBoardRumbleStation.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardRumbleStation.hpp; sourceTree = ""; }; 7D444C25C8025A81A966501B2A795E65 /* Parameter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Parameter.h; sourceTree = ""; }; - 7D657B72C28A6793148493FF9DEAA8A6 /* GTMSessionFetcher.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMSessionFetcher.release.xcconfig; sourceTree = ""; }; 7D751206A951D9727B38F71A2BB990AA /* SNESDeltaCore-SNESDeltaCore */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "SNESDeltaCore-SNESDeltaCore"; path = SNESDeltaCore.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 7D8FC7A21B622E0C6CA1737C2DBD7EE2 /* SharingRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SharingRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/SharingRoutes.swift; sourceTree = ""; }; 7DA04E14F03A3B492ECED840625835E8 /* svpsinfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svpsinfo.h; sourceTree = ""; }; 7DC056D6B8BEA94F8A53D5B5CA63969D /* NstTimer.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstTimer.hpp; sourceTree = ""; }; 7DCEC04246449B87DF6B75881B0B83BA /* L3DEX2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = L3DEX2.h; sourceTree = ""; }; @@ -3151,10 +3291,12 @@ 7E2A5DE941B07521BD76FDACA929E0C2 /* ftrfork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftrfork.h; sourceTree = ""; }; 7E3611B1EDCFB4A6939C797F6DCDA585 /* ftstream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftstream.h; sourceTree = ""; }; 7E3FF04636DCBF756267098ECB332377 /* UploadRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UploadRecordOperation.swift; sourceTree = ""; }; + 7E44726CE3BEEC66D46CA5D4DA3FD929 /* GTMAppAuth.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMAppAuth.debug.xcconfig; sourceTree = ""; }; + 7E457A58ED9BCC239084CD98A2A99346 /* Alamofire.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.debug.xcconfig; sourceTree = ""; }; 7E8CB66A1B4F31BB4E78101DC4BECD06 /* ZlutTexture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ZlutTexture.h; sourceTree = ""; }; - 7E950C5201F678049BF12854FA5D327A /* Archive+Writing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Writing.swift"; path = "Sources/ZIPFoundation/Archive+Writing.swift"; sourceTree = ""; }; 7EB9E20E1710796508F8D28D3DBF0956 /* NstFile.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstFile.hpp; sourceTree = ""; }; 7ED49040C12BD759F2626EE518A08FD5 /* UIScene+KeyboardFocus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIScene+KeyboardFocus.swift"; sourceTree = ""; }; + 7EE3E4513ED692C55CF9A08AD54FB349 /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; 7EF57BB6B247BD777342B282E9659451 /* ThreadLocal.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = ThreadLocal.hpp; sourceTree = ""; }; 7F18A2D4F45F71AF6AFB5F94186376AD /* Sram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Sram.h; sourceTree = ""; }; 7F236127684F9C51E29D6AB9CEB6275E /* m64p_config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_config.h; sourceTree = ""; }; @@ -3162,14 +3304,16 @@ 7F4CAA5FAB5325B477B9D4E36BA0CC95 /* NstBoardJalecoJf13.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJalecoJf13.hpp; sourceTree = ""; }; 7F50D3C5205A62B743D0A44D37F8A99A /* NstBoardBmc110in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc110in1.hpp; sourceTree = ""; }; 7F56D901D0434FFC4B130CF5D543B1D0 /* TextDrawer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextDrawer.h; sourceTree = ""; }; - 7F7ED6CE3BC682B49D8D74C14E481F37 /* GTMSessionFetcherService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherService.h; path = Source/GTMSessionFetcherService.h; sourceTree = ""; }; 7F9F0BEAE112AEDCAE3217A95BD6DBB1 /* video_capture_backend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = video_capture_backend.h; sourceTree = ""; }; 7FA1917AB274D05CA027D69B924FDBFA /* DSi_SD.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_SD.cpp; sourceTree = ""; }; + 7FC32953EC0D6D770E416EF82293A1B1 /* SwiftyDropbox.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftyDropbox.modulemap; sourceTree = ""; }; 7FE6EA99302F555A285FDBCD5A2158BF /* NstCartridgeInes.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstCartridgeInes.hpp; sourceTree = ""; }; 801960408F5BCEF8874FE7A6F9DF0F5C /* Debugger.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Debugger.cpp; sourceTree = ""; }; 8077B4383C95D1FBEC9B64F05C89EE12 /* retro_environment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; 809ED1EC76A3205A49D0AABF6FDA8AF1 /* GPU_OpenGL_shaders.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GPU_OpenGL_shaders.h; sourceTree = ""; }; 80CF4B02715769C8E03C0A9458F8635E /* arithmetics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = arithmetics.h; sourceTree = ""; }; + 810627DCFBDA22971DBF1BECA1817CAA /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/UIImage+MultiFormat.h"; sourceTree = ""; }; + 81156CFB5EFE4A6A001952871E86551C /* GoogleSignIn.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleSignIn.debug.xcconfig; sourceTree = ""; }; 811FC2EA0A1D4C9E7DB2ED5BE38AF9C1 /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; 8124C610C6CCECA5BEB797AF99935D78 /* loadres.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = loadres.h; sourceTree = ""; }; 812D04F11B2183C048A9283D0E8234EB /* TextureFilters.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters.cpp; sourceTree = ""; }; @@ -3182,33 +3326,36 @@ 81C43172CB210B7F49EBC3401D86153F /* N64EmulatorBridge.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = N64EmulatorBridge.m; sourceTree = ""; }; 81DE60C31DFB608912BCD7E757C4FECB /* NstBoardCneShlz.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCneShlz.hpp; sourceTree = ""; }; 81E2AD1FB7A723DACEDB0FAB3BE6A07C /* movie.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = movie.h; sourceTree = ""; }; - 81FAD8256834DC35886EFCF3F5F2715E /* CoreFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CoreFunctions.swift; path = Sources/SQLite/Typed/CoreFunctions.swift; sourceTree = ""; }; 8202AEA51A9BDEA50A02BCD308E4CC0F /* NstBoardBmcSuperGun20in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuperGun20in1.hpp; sourceTree = ""; }; 824CDD6E4BDCAEA39EBA938006905E3B /* SDL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SDL.h; sourceTree = ""; }; - 8257136F31A37672447D5F2FCF46FE10 /* Base.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Base.swift; path = Source/SwiftyDropbox/Shared/Generated/Base.swift; sourceTree = ""; }; 82656B4A230970BB031B9D9C19699E88 /* UIKit+ActivityIndicating.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+ActivityIndicating.h"; path = "Roxas/UIKit+ActivityIndicating.h"; sourceTree = ""; }; - 829735A0F9CEBD3D7585C21C3AC6FD0B /* GoogleAPIClientForREST-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleAPIClientForREST-prefix.pch"; sourceTree = ""; }; + 8270D9EC826BA43DC24BF1A467527292 /* GTLRQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRQuery.h; path = Source/Objects/GTLRQuery.h; sourceTree = ""; }; 82A0C157F7F157B4BEC76C3EBC632E38 /* controller_input_backend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = controller_input_backend.h; sourceTree = ""; }; 82BFECD5E791BE3FA1DE6D01CD5E9BC3 /* Sleep.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Sleep.hpp; sourceTree = ""; }; - 82D1AD4741CA6ABB465A5B94AA51CEE6 /* Helpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Helpers.swift; path = Sources/SQLite/Helpers.swift; sourceTree = ""; }; 8322B6BD024082677D1071F4527DD77F /* GameControllerInputMappingProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameControllerInputMappingProtocol.swift; sourceTree = ""; }; 833E950CF0A0E93C8DE5A7B5C033A416 /* PngFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PngFile.h; sourceTree = ""; }; 83512F1D34AE91977D202DBA42BE83C9 /* screenshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = screenshot.h; sourceTree = ""; }; + 835D7336F5224A95CF8910C2719DD690 /* SwiftyDropbox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SwiftyDropbox.h; path = Source/SwiftyDropbox/Shared/Handwritten/SwiftyDropbox.h; sourceTree = ""; }; 83716FD2276166E4399FF9F40DC2D268 /* mi_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = mi_controller.h; sourceTree = ""; }; 838392E1DA72E275361A75F4487346CA /* internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = internal.h; sourceTree = ""; }; 83873F1E93368D46DCF28140D6B657F3 /* RemoteRecord+File.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RemoteRecord+File.swift"; sourceTree = ""; }; + 838CA0439D7C8B31AE1AD2623D31DDA6 /* Archive+MemoryFile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+MemoryFile.swift"; path = "Sources/ZIPFoundation/Archive+MemoryFile.swift"; sourceTree = ""; }; + 839690876534FC0D3EFEFB677A6155A9 /* FilePropertiesRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FilePropertiesRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/FilePropertiesRoutes.swift; sourceTree = ""; }; 83AF443222FD006C987B73C4B7720ADD /* S2DEX2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = S2DEX2.h; sourceTree = ""; }; - 83BBBD73DC5C5BDA24F97461BDDEA0D7 /* SeenState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SeenState.swift; path = Source/SwiftyDropbox/Shared/Generated/SeenState.swift; sourceTree = ""; }; + 83F6EB025694406CDB495B1EEF28370D /* GTMAppAuthFetcherAuthorization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMAppAuthFetcherAuthorization.m; path = GTMAppAuth/Sources/GTMAppAuthFetcherAuthorization.m; sourceTree = ""; }; 8406B153DF09A3DC829DAF90D1C24127 /* NstMachine.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstMachine.hpp; sourceTree = ""; }; 844403BA0FA3541347B6E706E52FA73E /* Platform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = ""; }; 844F6EF3E43F3AF5908FCC044DE872CF /* NstDatabase.xml */ = {isa = PBXFileReference; includeInIndex = 1; path = NstDatabase.xml; sourceTree = ""; }; 845FBEA4FB904AF17C7B0B84C08416E3 /* DeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = DeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 8462BCA1FC7115AE1A6D25D42A9EB3A3 /* sdd1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sdd1.h; sourceTree = ""; }; + 848A93F7DF5BC4A24E1F379E42DD1839 /* TeamCommon.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamCommon.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamCommon.swift; sourceTree = ""; }; 849846DBBB863B9383830F30D108134F /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltamapping; sourceTree = ""; }; 84A11738FCB471CAF4902770A804B011 /* NstSoundRenderer.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstSoundRenderer.hpp; sourceTree = ""; }; + 84CD687D20FDA0F023996548CBA8B983 /* OIDTokenUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDTokenUtilities.m; path = Source/AppAuthCore/OIDTokenUtilities.m; sourceTree = ""; }; 84FCDC90348CF9FD825BA4BB11409E38 /* F3DPD.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DPD.cpp; sourceTree = ""; }; 8549AC19C31B13D32BDAF18AE9132190 /* NstBoardMmc1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMmc1.hpp; sourceTree = ""; }; 855D77B9B3667427FEF22757E46E2233 /* gb_cart.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gb_cart.h; sourceTree = ""; }; + 8566CDD1FB53D255D5D3A25258C806A7 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; 85754E8C95C188FEED2D1D983314697D /* DriveService+Versions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DriveService+Versions.swift"; path = "Backends/Drive/Harmony-Drive/DriveService+Versions.swift"; sourceTree = ""; }; 858C0A79D272BFFC52B94D2BDD345A3E /* n64_cic_nus_6105.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = n64_cic_nus_6105.h; sourceTree = ""; }; 85919A3037781B06E86122A531B658CD /* NstBoardIremHolyDiver.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardIremHolyDiver.hpp; sourceTree = ""; }; @@ -3219,26 +3366,27 @@ 861E076A2C54E6FC988A6CAC6C389867 /* ControllerSkinTraits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControllerSkinTraits.swift; sourceTree = ""; }; 863405EBF5EF0703221FA48790EA55F8 /* Log.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Log.h; sourceTree = ""; }; 86375C23888D1DF4D55B3B283ABEBEB5 /* fttrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fttrace.h; sourceTree = ""; }; - 8638968DC3BD54DEE2C5F9056D50F226 /* GTMNSDictionary+URLArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSDictionary+URLArguments.m"; path = "Foundation/GTMNSDictionary+URLArguments.m"; sourceTree = ""; }; 863E54F84D90A144B48A55BE40E3EE1F /* MemoryStatus_mupenplus.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryStatus_mupenplus.cpp; sourceTree = ""; }; 863EBFD88D51BDD8A33265E1BFD3C862 /* ioapi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; 8640DC6AA2D20C422ABD3FDCD0DE77F4 /* ARMJIT_Compiler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Compiler.h; sourceTree = ""; }; 8650C7DFCFF04815A2CA9A7B9DDE7835 /* MelonDSEmulatorBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = MelonDSEmulatorBridge.mm; sourceTree = ""; }; 865F6B98B40E1FF0BEA7DB4B71AC8881 /* glsl_CombinerProgramUniformFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramUniformFactory.h; sourceTree = ""; }; 866F291441AA89E3F102F070B71A123A /* tttags.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = tttags.h; sourceTree = ""; }; + 8672E3B374E908EA10A8340D6066D7A1 /* GTLRDrive.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDrive.h; path = Source/GeneratedServices/Drive/GTLRDrive.h; sourceTree = ""; }; + 8691A7C558BF5E11E5971EB35F846792 /* GTMAppAuthFetcherAuthorization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMAppAuthFetcherAuthorization.h; path = GTMAppAuth/Sources/Public/GTMAppAuth/GTMAppAuthFetcherAuthorization.h; sourceTree = ""; }; 86D07883A213E5E541BA87F867831C0E /* TextureFilters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilters.h; sourceTree = ""; }; 86D8A5EB56D2B72C1973874D422CD16C /* Sound.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Sound.hpp; sourceTree = ""; }; + 86DCECF7E86603CF1CA6BF9DD97ADC21 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; 86DFF83A4B95ADF0960D74BB55A4A86A /* ARMInterpreter_LoadStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMInterpreter_LoadStore.h; sourceTree = ""; }; 86E81FBE0D6AA7042D5A17A61FD614F5 /* CRC32.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CRC32.cpp; sourceTree = ""; }; 87025200BDD7098A51992DE1488B1C85 /* Pods-Delta-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Delta-resources.sh"; sourceTree = ""; }; 8725EAE2102B04E4489565CFB1A011DB /* Audio.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Audio.hpp; sourceTree = ""; }; 872BC2F2D8826C3822D2E02AB2976B11 /* MelonDS.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MelonDS.swift; sourceTree = ""; }; - 874D46F582C919DAECAE2F7A7A611809 /* TransportConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransportConfig.swift; path = Source/SwiftyDropbox/Shared/Handwritten/TransportConfig.swift; sourceTree = ""; }; 87715844F346ADEE4BBB5256AC453D53 /* NstBoardBmc21in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc21in1.hpp; sourceTree = ""; }; 878FACA9436E10C19249B2B1F73D0495 /* svpfr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svpfr.h; sourceTree = ""; }; 87A5806E79AEC46B9E2F33FEEB33BD37 /* NstBoardJalecoSs88006.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJalecoSs88006.hpp; sourceTree = ""; }; - 87B8D974016F8FF0B7457CF079A700AB /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; - 87BEF86E5D9BA232DF16BE7F774E4D82 /* GTLRRuntimeCommon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRRuntimeCommon.m; path = Source/Objects/GTLRRuntimeCommon.m; sourceTree = ""; }; + 87ABCA436899BDC642D85AA569C87D98 /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; + 87ACD2A3FDFB3EE8D720E830113C349D /* Value.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Value.swift; path = Sources/SQLite/Core/Value.swift; sourceTree = ""; }; 87FC96BE0521153572CB86D7A92024F6 /* m64p_types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_types.h; sourceTree = ""; }; 88260109DD185FBC70FACA067B377111 /* NstBarcodeReader.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBarcodeReader.hpp; sourceTree = ""; }; 8861BA10CB5369C24206E4B9E4026EAD /* DSi_NDMA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_NDMA.h; sourceTree = ""; }; @@ -3257,25 +3405,29 @@ 8A2265D39882CF69243D929B92017C4A /* NstBoardDxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardDxRom.hpp; sourceTree = ""; }; 8A2A747BF9192AF5072B9AEFF721579D /* NstBoardCneDecathlon.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCneDecathlon.hpp; sourceTree = ""; }; 8A4475D925ACB241668382B38C370988 /* CheatProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CheatProtocol.swift; sourceTree = ""; }; + 8A47F312AB75A9DF4F2226CF1E136782 /* TeamLog.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamLog.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamLog.swift; sourceTree = ""; }; + 8A67D2E977EA79AB264073D420A46B03 /* GTLRDuration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDuration.h; path = Source/Objects/GTLRDuration.h; sourceTree = ""; }; 8A6C70477FE2611FD7AB31D418502F33 /* mic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = mic.h; sourceTree = ""; }; 8A8FBC512A3FA5C62FC2321EE56635BD /* RSTCellContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentView.h; path = Roxas/RSTCellContentView.h; sourceTree = ""; }; 8AE7D98FA3BE6EC5B8C4BD0A9FA7C639 /* crosshairs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = crosshairs.h; sourceTree = ""; }; 8AEAE8D7D6FD51765A26CDDD85CA71CE /* OpenGLSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = OpenGLSupport.h; sourceTree = ""; }; - 8B0443A5AFC99B4F146BEF80A5D5D4DC /* ZIPFoundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ZIPFoundation.modulemap; sourceTree = ""; }; 8B05BFC2197636565CF4F760A845D589 /* libco.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = libco.h; sourceTree = ""; }; - 8B0E21ABA43A14EB561A436856C8C529 /* Contacts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contacts.swift; path = Source/SwiftyDropbox/Shared/Generated/Contacts.swift; sourceTree = ""; }; + 8B0B928F4C2E085FA3D58246910F1645 /* Custom.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Custom.swift; path = Source/SwiftyDropbox/Shared/Handwritten/Custom.swift; sourceTree = ""; }; 8B119E0AC7ADD1CC57AF7E28DB5B60FD /* driver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = driver.h; sourceTree = ""; }; 8B28A15260CA005E1C1E307ABD67C20A /* biopak.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = biopak.h; sourceTree = ""; }; 8B5727BBA5984F66D61DFE098524052C /* Export.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Export.hpp; sourceTree = ""; }; 8B6E2F8E46DDA68A4E83B62F5C54AB0C /* Service.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Service.swift; sourceTree = ""; }; 8B7CDA4692CFB9DECC74143244B0CDF2 /* Packet.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Packet.hpp; sourceTree = ""; }; 8BE76479C9EF902888E8C6D3DBFBCB99 /* NstAssert.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstAssert.hpp; sourceTree = ""; }; + 8C25E327F525D1D268FEEFC92373551D /* FileRequests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileRequests.swift; path = Source/SwiftyDropbox/Shared/Generated/FileRequests.swift; sourceTree = ""; }; + 8C2A10FC9E495738845331CEF5285D98 /* OIDAuthorizationService+IOS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "OIDAuthorizationService+IOS.m"; path = "Source/AppAuth/iOS/OIDAuthorizationService+IOS.m"; sourceTree = ""; }; + 8C5E3247DAB82F80DE1AA4666B5015C5 /* SMCalloutView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SMCalloutView-dummy.m"; sourceTree = ""; }; 8C7FF379DA01990AD6AF85CC74DCEE8A /* NstBoardOpenCorp.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardOpenCorp.hpp; sourceTree = ""; }; 8C954F1D28F83E537D400863C91A633C /* MelonDSDeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MelonDSDeltaCore.h; sourceTree = ""; }; 8CFCEE5AB7FE76148097A054CE7FD7FC /* metaspu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = metaspu.h; sourceTree = ""; }; 8D3C0C4D16DA1166A4BE49E0FBEB856E /* UIImage+Manipulation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Manipulation.m"; path = "Roxas/UIImage+Manipulation.m"; sourceTree = ""; }; 8D599FB48924EA924B0EDC964AE95955 /* ftdriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftdriver.h; sourceTree = ""; }; - 8D7F02896E229D7D3C9C8484A39D3F5A /* Collation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Collation.swift; path = Sources/SQLite/Typed/Collation.swift; sourceTree = ""; }; + 8D8F081559EC427BB8BDA8B17DBCCFF1 /* UsersCommon.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UsersCommon.swift; path = Source/SwiftyDropbox/Shared/Generated/UsersCommon.swift; sourceTree = ""; }; 8D9428685D97EB224E9E3B526F26AAE0 /* RSTCollectionViewCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = RSTCollectionViewCell.xib; path = Roxas/RSTCollectionViewCell.xib; sourceTree = ""; }; 8DD1E0498241FC67768C582366F133EA /* cpuexec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cpuexec.h; sourceTree = ""; }; 8DF503EB5BF2CD824792BFD2BBC0992F /* DSDeltaCore */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = DSDeltaCore; path = libDSDeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -3285,28 +3437,30 @@ 8E98DAE508C790215F617D0971A1C75D /* DownloadRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DownloadRecordOperation.swift; sourceTree = ""; }; 8EA98521F6B17FA40E77876B68A9285E /* RecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RecordOperation.swift; sourceTree = ""; }; 8EA9B92D6448E177F0943520E1AC9397 /* RSTCollectionViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCollectionViewCell.m; path = Roxas/RSTCollectionViewCell.m; sourceTree = ""; }; + 8EB4FBE3A34AC5F5CF55E865DDB2BAC3 /* Entry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Entry.swift; path = Sources/ZIPFoundation/Entry.swift; sourceTree = ""; }; 8EB727E9ED3C811AA0FA8F4472904B39 /* NstBoardJalecoJf19.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJalecoJf19.hpp; sourceTree = ""; }; 8EEBE0E7342313CE1B527FA099E3A0E8 /* DriveService+Records.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DriveService+Records.swift"; path = "Backends/Drive/Harmony-Drive/DriveService+Records.swift"; sourceTree = ""; }; 8F23316432A2E40B25E4A0F2D32AB9B3 /* ftobjs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftobjs.h; sourceTree = ""; }; - 8F3B43B9B9A8070F8E97D878287EAEDF /* SMCalloutView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SMCalloutView.h; sourceTree = ""; }; - 8F4912D5F8E8AA63C9F6417DD320A1C6 /* ZIPFoundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-umbrella.h"; sourceTree = ""; }; 8F858D684628842AC5118616BB283BFD /* ColorBufferToRDRAM.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ColorBufferToRDRAM.cpp; sourceTree = ""; }; 8F8B263C03C096BA48C120F0E908386D /* ereader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ereader.h; sourceTree = ""; }; 8F8E69A7A33F1B8CF300B1933EFB3070 /* ConfigManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ConfigManager.h; sourceTree = ""; }; - 8F9F113CDF0897B7162BDC16B4BEEA31 /* DropboxTeamClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxTeamClient.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxTeamClient.swift; sourceTree = ""; }; + 8FA4CCB0BE904F77C8B8EC9084035AED /* AppAuth-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AppAuth-umbrella.h"; sourceTree = ""; }; + 8FC8D1F562E78B93CBE1671FCCAA9817 /* GTMSessionFetcherLogging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherLogging.m; path = Source/GTMSessionFetcherLogging.m; sourceTree = ""; }; 8FCA76413D5A2DBC427390B20410111E /* Pods-DeltaPreviews-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DeltaPreviews-acknowledgements.markdown"; sourceTree = ""; }; 90108346CE8681BDF45E6A86AD56CDDD /* NstBoardBmcSuperBig7in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuperBig7in1.hpp; sourceTree = ""; }; 905D5F8B676ABDDA03A563E40A3330F1 /* gDP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gDP.h; sourceTree = ""; }; 9062040845AC2F15A091455D553746FA /* MelonDSDeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MelonDSDeltaCore.modulemap; sourceTree = ""; }; - 906A51BA9CD5D535CC8438E8AE2856A1 /* SQLiteObjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SQLiteObjc.m; path = Sources/SQLiteObjc/SQLiteObjc.m; sourceTree = ""; }; 9092EC81615BC2077259B5A46D2548E3 /* xxhash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = xxhash.h; sourceTree = ""; }; 909D8E207656B028E88C377D1425D826 /* UIKit+ActivityIndicating.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIKit+ActivityIndicating.m"; path = "Roxas/UIKit+ActivityIndicating.m"; sourceTree = ""; }; 90B5B6D25886498F82E67ED2C2974FB6 /* SoundFileReader.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundFileReader.hpp; sourceTree = ""; }; 90BF7F2CFCB96FA1AC37764CEFBD6512 /* GPU3D_Soft.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GPU3D_Soft.cpp; sourceTree = ""; }; 90D732934F09FAD2E836DF46B3A74B05 /* defined_ptr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = defined_ptr.h; sourceTree = ""; }; + 90E048BB42FB6617661967E7D3D153D4 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/SDWebImagePrefetcher.h; sourceTree = ""; }; 90E890A36409F6874E9DD9D9BB7F4A38 /* ObjectHandle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ObjectHandle.h; sourceTree = ""; }; 913C96B95F83ED34F52FC03BC386A5FB /* flashram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = flashram.h; sourceTree = ""; }; 9160F8868FD9BD417C394A0B283C3E9A /* Ftp.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Ftp.hpp; sourceTree = ""; }; + 9165EBC3B02F7C7983D96A667C6F8BED /* GTMKeychain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMKeychain.m; path = GTMAppAuth/Sources/GTMKeychain.m; sourceTree = ""; }; + 916A64DBFF66567EFA9AE1A60B43C5CB /* OIDServiceConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDServiceConfiguration.m; path = Source/AppAuthCore/OIDServiceConfiguration.m; sourceTree = ""; }; 916DC17A6938C4EB312870DB067BAFE2 /* ControllerInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControllerInputView.swift; sourceTree = ""; }; 91709E1068307F806C817F8F25238320 /* Rect.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Rect.hpp; sourceTree = ""; }; 91AD846287C70541C254FF3F53081FD3 /* txWidestringWrapper.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = txWidestringWrapper.cpp; sourceTree = ""; }; @@ -3314,36 +3468,42 @@ 91D739B0F0436A072325BACEA40B2CDC /* types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; 91E33227ABD97556F96F711114B0FEB9 /* String.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = String.inl; sourceTree = ""; }; 91EA84B7384143BF9065F16161516772 /* UIView+AnimatedHide.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnimatedHide.m"; path = "Roxas/UIView+AnimatedHide.m"; sourceTree = ""; }; - 921AD788C442F823555202B44D3AF160 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/SDImageCache.m; sourceTree = ""; }; - 9265E3D9F1667F3A362493594E094FAD /* GTMSessionFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcher.h; path = Source/GTMSessionFetcher.h; sourceTree = ""; }; 9298B315F615623E280CE6D5DD35B045 /* AnyInput.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AnyInput.swift; sourceTree = ""; }; 92A92D12C66E3558C97E9529D4FA8A2B /* alist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = alist.h; sourceTree = ""; }; 92A9E92E7E1EAD792E6F5D67559633B5 /* workqueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = workqueue.h; sourceTree = ""; }; + 92B2487D9743E608B2F99678B7003B4E /* OIDRegistrationRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDRegistrationRequest.h; path = Source/AppAuthCore/OIDRegistrationRequest.h; sourceTree = ""; }; 92D87AA47D0093293EA81378FC72519B /* GBCDeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GBCDeltaCore-umbrella.h"; sourceTree = ""; }; 92DD48352E52F2F0EE682A6B7C06E768 /* NstBoardTaitoTc0190fmcPal16r4.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTaitoTc0190fmcPal16r4.hpp; sourceTree = ""; }; 92E8CA46B70D87BC06F626C7D872192C /* aes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = ""; }; 930CCA4FC5D2409FCFFDC96F0C252042 /* TxQuantize.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxQuantize.h; sourceTree = ""; }; 931B1EC0132E5C5FBA795E91409367B8 /* F3DEX2.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DEX2.cpp; sourceTree = ""; }; + 932A82F9F802EF94A7D26B14C4810B49 /* OIDURLQueryComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDURLQueryComponent.m; path = Source/AppAuthCore/OIDURLQueryComponent.m; sourceTree = ""; }; + 932D2A9B9DAC3B894125AF5B6ED7966B /* OIDClientMetadataParameters.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDClientMetadataParameters.m; path = Source/AppAuthCore/OIDClientMetadataParameters.m; sourceTree = ""; }; 934B0D52579AC8E47A0F434C6FE5AFFE /* NstBoardBtl6035052.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtl6035052.hpp; sourceTree = ""; }; 937263E096F13826F20A39C6D49A8948 /* RSP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RSP.h; sourceTree = ""; }; 93C10797B4AC0FCD5DC745C1F12F49BF /* UIView+AnimatedHide.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnimatedHide.h"; path = "Roxas/UIView+AnimatedHide.h"; sourceTree = ""; }; + 93C3F8DB60D4036F101818A25789D30E /* OIDExternalUserAgentCatalyst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDExternalUserAgentCatalyst.h; path = Source/AppAuth/iOS/OIDExternalUserAgentCatalyst.h; sourceTree = ""; }; 93D3DD537A145A0D8D88B631512C81FA /* DisplayWindow.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DisplayWindow.cpp; sourceTree = ""; }; - 9428B8A7A37F792EB00157F40ED883BB /* CustomRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomRoutes.swift; path = Source/SwiftyDropbox/Shared/Handwritten/CustomRoutes.swift; sourceTree = ""; }; + 94351FE079C92D1D15F1C924B9B17E49 /* DBChunkInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DBChunkInputStream.h; path = Source/SwiftyDropbox/Shared/Handwritten/DBChunkInputStream.h; sourceTree = ""; }; + 94453F3BF5916545D37B02509181E412 /* CoreFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CoreFunctions.swift; path = Sources/SQLite/Typed/CoreFunctions.swift; sourceTree = ""; }; 94524D87F2C5E593C08DE00537BEC7F3 /* Operation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Operation.swift; sourceTree = ""; }; 946BB7E7DCE5991C44F1D670DDABFC29 /* pngusr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngusr.h; sourceTree = ""; }; 946E4DEE68AAF134BCD6A0ED870B2AD4 /* oglft_c.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = oglft_c.h; sourceTree = ""; }; 94A9CAF79C008CDB302200E88CFF9FFA /* MemoryInputStream.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = MemoryInputStream.hpp; sourceTree = ""; }; 94AEEEAD7711AE51F2D41B6A76AD600E /* Listener.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Listener.hpp; sourceTree = ""; }; 94C0157C0BE85463A3B2C001FE4AF746 /* GLideNUI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GLideNUI.h; sourceTree = ""; }; - 94F5D89236B344C4DD052FE9AB17ACC3 /* GTMSessionUploadFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionUploadFetcher.h; path = Source/GTMSessionUploadFetcher.h; sourceTree = ""; }; 954ABDE364FCE24122E00A1B9A644CEA /* SNESDeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SNESDeltaCore.debug.xcconfig; sourceTree = ""; }; 9573AE8F260951D3F98DAE404AD1B908 /* FrameBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FrameBuffer.h; sourceTree = ""; }; 95782CF5CA479EC0FDC53DD42C188A4F /* RSTDynamicDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTDynamicDataSource.h; path = Roxas/RSTDynamicDataSource.h; sourceTree = ""; }; 95882B1B89F500794A182F9B050751F3 /* debug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; 95D5F9A9715A3F046F5369384B6B728D /* GBCCheat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = GBCCheat.m; sourceTree = ""; }; + 95DF5F1F5D51E2691C2FCC536D134468 /* GTMKeychain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMKeychain.h; path = GTMAppAuth/Sources/Public/GTMAppAuth/GTMKeychain.h; sourceTree = ""; }; 95EFB88BC92F537DB780AE0EA86B3203 /* NstBoardKonamiVrc6.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVrc6.hpp; sourceTree = ""; }; 95F85D4ABF8253A0637C2CA8D4E0C5DD /* RemoteRecord.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RemoteRecord.swift; sourceTree = ""; }; 96010BBED3DFA64FDC2A5369DFA3DB56 /* GBA.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GBA.swift; sourceTree = ""; }; + 9612CD637B3DA6278C0EAD9206004F6F /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; + 961F1C561A0CD244864FF1434626856A /* SMCalloutView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SMCalloutView.m; sourceTree = ""; }; + 969A0E6B50AC94779E15554E68201C1B /* GTMSessionFetcherLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherLogging.h; path = Source/GTMSessionFetcherLogging.h; sourceTree = ""; }; 969C511B05DDBA88B59AC6B445811C81 /* glext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glext.h; sourceTree = ""; }; 96C44FDF7092320E7DBABE66348B2032 /* NstBoardKasing.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKasing.hpp; sourceTree = ""; }; 96C67E7D3EA53E2D34D17AD4CEDBB8DB /* NSManagedObject+Harmony.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Harmony.swift"; sourceTree = ""; }; @@ -3353,10 +3513,13 @@ 9751757B32305955DA6674D065A4EE46 /* Roxas.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Roxas.release.xcconfig; sourceTree = ""; }; 975243A09D83F735C4EE0F290DC172AD /* RSTFetchedResultsDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTFetchedResultsDataSource.m; path = Roxas/RSTFetchedResultsDataSource.m; sourceTree = ""; }; 9753052374E6A9FBF436BA41D1115F09 /* NstBoardIrem.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardIrem.hpp; sourceTree = ""; }; + 977B784CD6EABB39FE9BC0482AA8F3BC /* AppAuth-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AppAuth-dummy.m"; sourceTree = ""; }; 97A3DFC8FBF9251F15DD0753153296C8 /* pngpread.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngpread.c; sourceTree = ""; }; 97AC61A6BCF0DFAA47D7BB0BC9E05514 /* glsl_CombinerInputs.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerInputs.cpp; sourceTree = ""; }; 97B40BC84DBFD2EA1A65EE8D30EE2DCE /* NstBoardMagicSeries.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMagicSeries.hpp; sourceTree = ""; }; + 97B8154A6F8BE2F1F7D5B7DA2C0E7AF8 /* GTMOAuth2KeychainCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMOAuth2KeychainCompatibility.h; path = GTMAppAuth/Sources/Public/GTMAppAuth/GTMOAuth2KeychainCompatibility.h; sourceTree = ""; }; 97BCFB8C5295906B338CF86C5547DDC4 /* common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + 980C29471E6FD37CE2CBE26F28FAFFB5 /* ContactsRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContactsRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/ContactsRoutes.swift; sourceTree = ""; }; 9816EFF6A2268AAEA7B1C19BBE416477 /* N64DeltaCore-Mupen64Plus */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "N64DeltaCore-Mupen64Plus"; path = Mupen64Plus.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 9836BD15917BC5F758C9618E5688C42D /* PrepareUploadingRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PrepareUploadingRecordsOperation.swift; sourceTree = ""; }; 98679983FCBE7D77A34F05B9E9B007E6 /* dummy_audio.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dummy_audio.h; sourceTree = ""; }; @@ -3364,24 +3527,21 @@ 98B0BD8F8752DCC7112E9C0F6C0BFBD2 /* NstBoardBtlAx5705.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlAx5705.hpp; sourceTree = ""; }; 98C590E0BFF7BBD01368B459B5376F0D /* version.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; 98CB332826F5DA37CA3482360EA6192D /* Window.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Window.hpp; sourceTree = ""; }; - 98D8B9C03706EA64A98272C9B5617C09 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; + 9959369E0C1F1D18532504AC8723B430 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; + 995CA28F9F3E92A264FBC6FD3BFEC725 /* GTMAppAuthFetcherAuthorization+Keychain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMAppAuthFetcherAuthorization+Keychain.m"; path = "GTMAppAuth/Sources/GTMAppAuthFetcherAuthorization+Keychain.m"; sourceTree = ""; }; 99BA7AD7200541E538CD1AA86091990C /* xxhash.c */ = {isa = PBXFileReference; includeInIndex = 1; path = xxhash.c; sourceTree = ""; }; 99D33724A380CFCCAB5BB70097DF09C6 /* Keyboard.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Keyboard.hpp; sourceTree = ""; }; 99D59C62581B677C041ED7ABB2684D15 /* clamping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = clamping.h; sourceTree = ""; }; 99E22538983F74607E5924EF0AF604AC /* bldno.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = bldno.h; sourceTree = ""; }; 99F9A81CC01BBA9C948DFB9573F2C392 /* opengl_Attributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_Attributes.h; sourceTree = ""; }; - 9A139AD5491148B868F3054FD397E659 /* GoogleSignIn.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = GoogleSignIn.bundle; path = Resources/GoogleSignIn.bundle; sourceTree = ""; }; 9A38C1E36D3663B274B3678F5A0CB9CE /* Parameters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Parameters.h; sourceTree = ""; }; - 9A69779C7CE90E43C61DC0446CE1DBB5 /* SMCalloutView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SMCalloutView.release.xcconfig; sourceTree = ""; }; + 9A6AEB2D3D215815256A7B0AFA6FE0B2 /* Setter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Setter.swift; path = Sources/SQLite/Typed/Setter.swift; sourceTree = ""; }; 9A87FD99965ED242605C99BB49D093C2 /* pngread.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngread.c; sourceTree = ""; }; - 9A994D0970557F8DBF425A2E6710A042 /* GTMSessionFetcher.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMSessionFetcher.debug.xcconfig; sourceTree = ""; }; 9AA8815E33DEFEBC12958212043BD15A /* ARMJIT_Branch.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_Branch.cpp; sourceTree = ""; }; 9ACC9194F5B06F05848A391AED6BEE15 /* RSTCellContentDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentDataSource.m; path = Roxas/RSTCellContentDataSource.m; sourceTree = ""; }; - 9AD902A56CCE972EB5C283E7E6C49040 /* GoogleAPIClientForREST.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleAPIClientForREST.modulemap; sourceTree = ""; }; 9B017390736A088CA383EA6DDF94063D /* NstBoardCamerica.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCamerica.hpp; sourceTree = ""; }; 9B1ACC9E2F2024AB5391E216FCCD3371 /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltamapping; sourceTree = ""; }; 9B250FCF7FBCF770F63C88F1C384975C /* NstBoardSuperGame.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSuperGame.hpp; sourceTree = ""; }; - 9B90429F17069F50CA065D66C7BA9614 /* SwiftyDropbox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SwiftyDropbox.h; path = Source/SwiftyDropbox/Shared/Handwritten/SwiftyDropbox.h; sourceTree = ""; }; 9BA280C198FC1CEB945727BFDB4C0998 /* svcid.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svcid.h; sourceTree = ""; }; 9BA8AB7642059FF005035C432650109C /* xxhash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = xxhash.h; sourceTree = ""; }; 9C04A9D6572366B902256741978C0EE5 /* glsl_CombinerProgramImpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramImpl.h; sourceTree = ""; }; @@ -3389,12 +3549,13 @@ 9C6B6DEF81FE4555CE25B440FD2493BF /* vi_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = vi_controller.h; sourceTree = ""; }; 9CA80A61ABF26FA89F4E22A30284B0DD /* Pods-Delta */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "Pods-Delta"; path = "libPods-Delta.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 9CFBE66FFB04AC7622932A698B834898 /* KeyboardGameController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KeyboardGameController.swift; sourceTree = ""; }; - 9D1E150EA94D5A0A5026F379E1681155 /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; 9D2A88F941018214B1FCA8BC763A0D81 /* Glsl.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = Glsl.inl; sourceTree = ""; }; 9D5333899F4FCD47BE18D2CFB9431CA3 /* GBADeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBADeltaCore.h; sourceTree = ""; }; 9D617918958B004C494A5E18D1F77DE5 /* MMU.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MMU.h; sourceTree = ""; }; + 9D6BA10B531342B8B8618E903C30F5FF /* SMCalloutView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SMCalloutView-umbrella.h"; sourceTree = ""; }; 9D83B27394F827A375C8041D26B9F167 /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; 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; }; + 9DA78CBF88A04BBCFF5516F488EE945E /* FTS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FTS5.swift; path = Sources/SQLite/Extensions/FTS5.swift; sourceTree = ""; }; 9DB6343B945C10C877D2EB07FB7DDDE7 /* svpscmap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svpscmap.h; sourceTree = ""; }; 9DDA821A26BD45721808E06A0C0E747D /* osal_files_ios.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = osal_files_ios.mm; sourceTree = ""; }; 9DFFF4B845C9F49DB2E04228D7CEE551 /* FIRFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FIRFilter.h; sourceTree = ""; }; @@ -3402,31 +3563,27 @@ 9ECEEB09798F93AB5A91A8BF0DC63D45 /* svttglyf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svttglyf.h; sourceTree = ""; }; 9ED124D68BC5C2BE53E6F8F219E17F98 /* GBAEmulatorBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBAEmulatorBridge.h; sourceTree = ""; }; 9EE2C65B6FB8399DBD24B625E5BFBCA6 /* RDRAMtoColorBuffer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RDRAMtoColorBuffer.cpp; sourceTree = ""; }; - 9F02264297230F05D9C1178C000E04EC /* TeamRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamRoutes.swift; sourceTree = ""; }; 9F027A32561BBBB8A3DFFA6369D04A13 /* Network.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Network.hpp; sourceTree = ""; }; 9F03A41939073CB8DCC32A1EE3888FE0 /* t1types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = t1types.h; sourceTree = ""; }; 9F1767D3A97BDEE6B358290592EAFCE6 /* NstBoardTxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTxRom.hpp; sourceTree = ""; }; 9F1CB41D7530646052AE18F4D562D276 /* ftrender.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftrender.h; sourceTree = ""; }; 9F65846296AA0445D9DA7FC1DE9B4CBE /* NstBoardSachenSa72008.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenSa72008.hpp; sourceTree = ""; }; - 9FBEDF35986AA4976C5186CACDC036A7 /* SDWebImageDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDecoder.h; path = SDWebImage/SDWebImageDecoder.h; sourceTree = ""; }; + 9FA556F2079F991C20E924384DE65B53 /* GTLRErrorObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRErrorObject.h; path = Source/Objects/GTLRErrorObject.h; sourceTree = ""; }; 9FCE854CD1033DAE63BDD91C5DBEA512 /* m64p_debugger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_debugger.h; sourceTree = ""; }; A0082D3F46835BE2D0939FDB289C6E65 /* Pods-Delta.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Delta.debug.xcconfig"; sourceTree = ""; }; A00FBF2E46DD44AB85A9E179CB0BBB29 /* pcap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pcap.h; sourceTree = ""; }; A01927D51792C610278C84EC6FC937AC /* NESEmulatorBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NESEmulatorBridge.swift; sourceTree = ""; }; A0196C3B20F2D9E886462BCDA4B77E08 /* GPU3D_OpenGL_shaders.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GPU3D_OpenGL_shaders.h; sourceTree = ""; }; - A024A97ADEDE582E9EDA110E6B1AF889 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/SDWebImageDownloaderOperation.h; sourceTree = ""; }; A0257E87FCF01DF39003A2312BCD089D /* NstCartridgeUnif.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstCartridgeUnif.hpp; sourceTree = ""; }; - A02D556906FE8C4CFDDB3F8D10DF3E4B /* GTLRURITemplate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRURITemplate.h; path = Source/Utilities/GTLRURITemplate.h; sourceTree = ""; }; A03DF8BA049109C4706B3178AB84D2C0 /* profile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = profile.h; sourceTree = ""; }; - A03E19C0995989B6E3E1FFC99B95C5D2 /* SDKConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SDKConstants.swift; path = Source/SwiftyDropbox/Shared/Handwritten/SDKConstants.swift; sourceTree = ""; }; A063B13BF5FBA3260BB923BFF920E8BE /* screenshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = screenshot.h; sourceTree = ""; }; A06E97FFB0B952513315F9F29356AAF2 /* NstBoardMmc5.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMmc5.hpp; sourceTree = ""; }; A075A26579CDA067964771B08D20968C /* SPU.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SPU.h; sourceTree = ""; }; + A0908C52D9502D082775F1A5117A6C54 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; A0A89CB13248D0FA84EF44A60AB37C8C /* F3DFLX2.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DFLX2.cpp; sourceTree = ""; }; A0D13BDD07591784D6EFC4B322E34E46 /* NstBoardSunsoft5b.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoft5b.hpp; sourceTree = ""; }; A0EB14ED4D5D7A95884D0106EF841FC9 /* SNES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SNES.swift; sourceTree = ""; }; A132045A997E491B1C520AB9F86A520F /* Util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Util.h; sourceTree = ""; }; - A136EA4F05EDD2CD92B3C8B2884AAFDD /* GTLRBatchResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBatchResult.m; path = Source/Objects/GTLRBatchResult.m; sourceTree = ""; }; A15ADE5C4BB0B7B908EDF04E3AE34278 /* glsl_CombinerProgramUniformFactory.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramUniformFactory.cpp; sourceTree = ""; }; A164F380E128043A22ED2D1D1CFDB3C3 /* PixelBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PixelBuffer.h; sourceTree = ""; }; A16C1235EEB3B34E65A0A4D5C5E70121 /* NstInpPowerGlove.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPowerGlove.hpp; sourceTree = ""; }; @@ -3435,15 +3592,18 @@ A19318395D3B3D8114C56710610A3443 /* Bundle+Resources.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Bundle+Resources.swift"; sourceTree = ""; }; A1B435A350DD71C31D721B35C5E20353 /* MemoryStatus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MemoryStatus.h; sourceTree = ""; }; A1C76F8411A39553082A70E918482202 /* FIFO.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FIFO.h; sourceTree = ""; }; - A1DC4D0732A2D4A00391980B544DCC7A /* SDWebImageDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDecoder.m; path = SDWebImage/SDWebImageDecoder.m; sourceTree = ""; }; + A2412E26D20F3DE5223A9642023ADC3A /* OIDAuthState+IOS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "OIDAuthState+IOS.h"; path = "Source/AppAuth/iOS/OIDAuthState+IOS.h"; sourceTree = ""; }; + A279615234A2EC2D137F27BB38C19F60 /* ZIPFoundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ZIPFoundation-dummy.m"; sourceTree = ""; }; A2B4D256B3D188077F6B41F821BF28C3 /* Pods-Delta-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Delta-acknowledgements.plist"; sourceTree = ""; }; A2F06AF800FE00397A0393C4F2B21358 /* NstBoardBmcSuperHiK4in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuperHiK4in1.hpp; sourceTree = ""; }; A2F603F5076A5C90C0F7F3B8E1964715 /* ftmm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftmm.h; sourceTree = ""; }; A305BD1E403F2080A66FACB6EE133DF8 /* ftgxval.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftgxval.h; sourceTree = ""; }; A30F6CDE8A6A2E3A97CC0B969043EC7E /* readpng.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = readpng.h; sourceTree = ""; }; + A31786EA1A7642B4AF7E809A73AAEB56 /* SwiftyDropbox-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyDropbox-dummy.m"; sourceTree = ""; }; A32A1F08621C3AC02C88619A32A00140 /* fterrdef.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fterrdef.h; sourceTree = ""; }; A32ACBDAAF06587E09AA2D7FBA1FE620 /* F5Rogue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F5Rogue.cpp; sourceTree = ""; }; A334B63A7B2EF8C29B5D119E6B8E0C0C /* ARMJIT_Compiler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Compiler.h; sourceTree = ""; }; + A3552D865207139EC4F4DC6E995D6BB0 /* GTMSessionFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcher.m; path = Source/GTMSessionFetcher.m; sourceTree = ""; }; A360B5584C9A055FB323CD5BE3C7112A /* Transformable.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Transformable.hpp; sourceTree = ""; }; A363333B17E12DED3509264B7806E627 /* RSTHelperFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTHelperFile.h; path = Roxas/RSTHelperFile.h; sourceTree = ""; }; A3861AA996FB10FE608C9E586D90C9F7 /* registers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = registers.h; sourceTree = ""; }; @@ -3456,10 +3616,11 @@ A4C55EFF463225AEF21E52403D1CFB50 /* ClipPolygon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ClipPolygon.h; sourceTree = ""; }; A4CF7FC6F159595512140F9E888B3518 /* saves.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = saves.h; sourceTree = ""; }; A52160BD111F9889E80A031A846BAA05 /* pnglibconf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pnglibconf.h; sourceTree = ""; }; + A528E51933EC0D277727107F3B72167E /* SQLite.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SQLite.swift-umbrella.h"; sourceTree = ""; }; + A5730EB24A1B5DF89397E65245AFD203 /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/SQLite/Typed/Operators.swift; sourceTree = ""; }; A586E5FBA2533BD9EC43EFCEC1A2C549 /* RSTSeparatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTSeparatorView.m; path = Roxas/RSTSeparatorView.m; sourceTree = ""; }; A5A53ECD7E18331B77906E25C2167786 /* svsfnt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svsfnt.h; sourceTree = ""; }; - A5B49946963C58320761EF205659BBFE /* Coding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Coding.swift; path = Sources/SQLite/Typed/Coding.swift; sourceTree = ""; }; - A5B95194D64CEE2620808A3F54044158 /* GoogleAPIClientForREST.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAPIClientForREST.release.xcconfig; sourceTree = ""; }; + A5C464583B3EB6274B1F3762F64CD0FB /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/UIImage+GIF.h"; sourceTree = ""; }; A5C793705F8636862B9913E9351FBD3A /* libretro_vulkan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = libretro_vulkan.h; sourceTree = ""; }; A5CD02BC2D035183432B50AEFA8BF924 /* NstBoardAxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAxRom.hpp; sourceTree = ""; }; A5DDC94A90C6C7EC4D51C80E392A88D1 /* state_osd_elements.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = state_osd_elements.h; sourceTree = ""; }; @@ -3474,6 +3635,7 @@ A6ABC02A4B4F0C5993D599BBC8FA20B5 /* NstInpDoremikkoKeyboard.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpDoremikkoKeyboard.hpp; sourceTree = ""; }; A6DEF32284E33A95F396F5189D8852BE /* GBADeltaCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GBADeltaCore-prefix.pch"; sourceTree = ""; }; A6E36C6DD14EC8BBAA6E35BD54655156 /* NstInpPowerPad.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPowerPad.hpp; sourceTree = ""; }; + A7174449301ADCBCB2D5E8102BFC713C /* CLSLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSLogging.h; path = iOS/Crashlytics.framework/Headers/CLSLogging.h; sourceTree = ""; }; A7178A506EAC86F8122E430FA7FD88B6 /* alist_nead.c */ = {isa = PBXFileReference; includeInIndex = 1; path = alist_nead.c; sourceTree = ""; }; A7318096FFF38B2956754A11C5513065 /* AREngine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AREngine.h; sourceTree = ""; }; A75028C5A393D1E5670377F6BC9905FC /* t1tables.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = t1tables.h; sourceTree = ""; }; @@ -3490,35 +3652,34 @@ A86BA7BFBDD1A9CA9B7830177E7F88D0 /* m64p_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_common.h; sourceTree = ""; }; A89A4AD8EE20FF09DD4FE01EC306F892 /* NstBoardBmcA65as.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcA65as.hpp; sourceTree = ""; }; A8A1BE1B967B23A7584BF56B5F19F6CD /* NstBoardTengenRambo1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTengenRambo1.hpp; sourceTree = ""; }; - A8A39A015FAAB4B02C5DDC94DE475046 /* GTLRErrorObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRErrorObject.m; path = Source/Objects/GTLRErrorObject.m; sourceTree = ""; }; - A8E6AB2F458571355560DBA9096AB908 /* GTLRService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRService.m; path = Source/Objects/GTLRService.m; sourceTree = ""; }; A8E7FC97AA2B85BD22CE34EEE1605B87 /* pngrtran.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngrtran.c; sourceTree = ""; }; A8F1FE24B6E6CC8FA9022AAC76A538BC /* MelonDSDeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = MelonDSDeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; A901EB72C85D33069EB23CA37C3FD795 /* clock_backend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = clock_backend.h; sourceTree = ""; }; A907CA805BB18BF27CE7CF69AC743EA6 /* ThreadLocalPtr.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = ThreadLocalPtr.hpp; sourceTree = ""; }; - A926D3355F6CDDC80A17A8A29A62AF05 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/SDWebImageManager.h; sourceTree = ""; }; + A92D30FE329DA910DCFB6DE26BDFA144 /* OIDTokenRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDTokenRequest.m; path = Source/AppAuthCore/OIDTokenRequest.m; sourceTree = ""; }; A952298B11A4BD50DC147C4EDAC00561 /* NstApiCartridge.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiCartridge.hpp; sourceTree = ""; }; A9530F5FC4C0B09A188288409FCF835D /* RectangleShape.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = RectangleShape.hpp; sourceTree = ""; }; - A960DE0A973CA5A4D413E15076178C57 /* GTMSessionFetcher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-umbrella.h"; sourceTree = ""; }; + A9645906FAADC98FA524868681674322 /* GTMSessionFetcher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-umbrella.h"; sourceTree = ""; }; A96B7A289630AA8DF53EE51EE74E54AA /* NstBoardRexSoftSl1632.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardRexSoftSl1632.hpp; sourceTree = ""; }; - A96F1AF6EE27AE150CDEB7A987B02DAE /* CLSLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSLogging.h; path = iOS/Crashlytics.framework/Headers/CLSLogging.h; sourceTree = ""; }; - A972E09BA9CC2B4E13DEEC72273122F5 /* GTLRBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBase64.m; path = Source/Utilities/GTLRBase64.m; sourceTree = ""; }; - A97DFE65ECE733F3876CF13306D4C68B /* Paper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Paper.swift; path = Source/SwiftyDropbox/Shared/Generated/Paper.swift; sourceTree = ""; }; A98D3E4D5028A18A48D898DDA29B1B6A /* NstStream.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstStream.hpp; sourceTree = ""; }; A99D6FA874EC0CE5E6FF8B99009BC3CC /* tttypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = tttypes.h; sourceTree = ""; }; A9C1FAD618686D13B2AEBF79B8CB40A2 /* NstBoardSunsoft3.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoft3.hpp; sourceTree = ""; }; A9D7AF60A10248042EB6FD2757BD8731 /* Pods-DeltaPreviews-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DeltaPreviews-resources.sh"; sourceTree = ""; }; - AA1C0B3274E804CB44DE0C80AC3E1E9F /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; + A9DB08EC4772FF7A6A905D44E5052D06 /* GTMSessionFetcherService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherService.h; path = Source/GTMSessionFetcherService.h; sourceTree = ""; }; + A9F3A1170913746AF93AFB59C287153B /* AppAuth.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AppAuth.release.xcconfig; sourceTree = ""; }; + A9F908C0B56B67657D5675D61E51B242 /* Auth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Auth.swift; path = Source/SwiftyDropbox/Shared/Generated/Auth.swift; sourceTree = ""; }; AA3D00922405E55EEC5C2AF48BB304DE /* UploadRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UploadRecordsOperation.swift; sourceTree = ""; }; - AA41416AF760A4579E38926180FB7E98 /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Source/SwiftyDropbox/Shared/Generated/Async.swift; sourceTree = ""; }; AA495E205457383DB9EAD1BF06190FDF /* Performance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Performance.h; sourceTree = ""; }; AA95C0F9ECD426411A1669BDF6B24B50 /* NstBoardSomeriTeam.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSomeriTeam.hpp; sourceTree = ""; }; AAB27BF3336B399FD4125E31B00D20B4 /* filters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = filters.h; sourceTree = ""; }; + AAD2667BBE65AFB801C1E17E617CD367 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/SDWebImageCompat.h; sourceTree = ""; }; + AADC3EF280FDC8505D5068249481C84D /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; AADDE08AD944B535C0AA08CF01468AD4 /* VideoMode.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = VideoMode.hpp; sourceTree = ""; }; + AB35767FB3494B8BDD53E3A7E35D3EB6 /* GTLRUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRUtilities.m; path = Source/Utilities/GTLRUtilities.m; sourceTree = ""; }; AB5D7F2A8723F9FD0DDD87295F8B8C05 /* pngpriv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngpriv.h; sourceTree = ""; }; - AB908F46DC3EF545093A039507FB5ECB /* Crashlytics.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Crashlytics.debug.xcconfig; sourceTree = ""; }; AB921B1DC81BDEE5F51CF126A058E0A6 /* NstBoardKonamiVrc4.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVrc4.hpp; sourceTree = ""; }; AB95CF30AA5DD54A0DCC146AA3F37E23 /* NstVideoFilterNone.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoFilterNone.hpp; sourceTree = ""; }; + AB98E43036B0C024577074DC0955BE17 /* Sharing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sharing.swift; path = Source/SwiftyDropbox/Shared/Generated/Sharing.swift; sourceTree = ""; }; ABA52C76AE80C5B8512D587E0428F03F /* String.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = String.cpp; sourceTree = ""; }; ABE964B5C3D1C4A4D0E44686549901E2 /* retro_endianness.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; AC05CDE0B2DE442E6439E093636483D1 /* readwrite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = readwrite.h; sourceTree = ""; }; @@ -3526,50 +3687,49 @@ AC3F72B760841603ABFA83F43599B12B /* NstBoardSachenTca01.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenTca01.hpp; sourceTree = ""; }; AC471F9A34E0E57C35A2BF6C0F31141A /* UIViewController+TransitionState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+TransitionState.m"; path = "Roxas/UIViewController+TransitionState.m"; sourceTree = ""; }; AC7B93FEB4CD587D67E7FBC9030FFB69 /* uncopyable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = uncopyable.h; sourceTree = ""; }; - AC89D5569A6FBDDE31EC55DBF2F86B2E /* AuthRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/AuthRoutes.swift; sourceTree = ""; }; ACCD33F558269F34412CE1B165AC3B83 /* NstBoardBtlSmb2c.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlSmb2c.hpp; sourceTree = ""; }; AD283F7D35BCDE09879EF39524DB9924 /* DSi_NDMA.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_NDMA.cpp; sourceTree = ""; }; - AD38FECB05322CFA65D8B297F68349F8 /* DropboxClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxClient.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxClient.swift; sourceTree = ""; }; AD55C1D1EA8D292BB2927054E5C56F6E /* DMA.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DMA.cpp; sourceTree = ""; }; AD70C00BF79C2F0C47D21B66E4A63D6F /* F3DTEXA.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DTEXA.cpp; sourceTree = ""; }; - AD7E8DA1695D9954D559B5D1CB60DE8D /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/UIImage+MultiFormat.m"; sourceTree = ""; }; + ADB16E0153F5F75FEFD2195E2683E28D /* Connection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Connection.swift; path = Sources/SQLite/Core/Connection.swift; sourceTree = ""; }; ADC1FCED16E475969F3FE7030A995378 /* ftsnames.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftsnames.h; sourceTree = ""; }; ADD04AF6D650BB8C6DC2C8B3CE4D50CE /* UIWindowScene+StageManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIWindowScene+StageManager.swift"; sourceTree = ""; }; + ADDACBAB744B830529FA593E7E9CD122 /* SwiftyDropbox.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyDropbox.debug.xcconfig; sourceTree = ""; }; ADF5A4B1CDA7693D5DE8FDAE55230F5B /* svbdf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svbdf.h; sourceTree = ""; }; - ADF793502FD046991EE487F895BA270F /* SMClassicCalloutView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SMClassicCalloutView.h; sourceTree = ""; }; AE4075237EF07EF0EF97D959D5273E5C /* ARMJIT_Memory.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_Memory.cpp; sourceTree = ""; }; AE552D959907002364F7DEB08F72AAC2 /* OpenGLESProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OpenGLESProcessor.swift; sourceTree = ""; }; AE69FF77D057F65FCC92798BC814D0C0 /* DSi_AES.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_AES.h; sourceTree = ""; }; + AE7EE92CFAB3F620FD1040DE3D968F27 /* SMClassicCalloutView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SMClassicCalloutView.m; sourceTree = ""; }; AE92A91A4BC673A5EB7544761275778E /* GBCCheat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBCCheat.h; sourceTree = ""; }; AE98BDAE0F5DB8787D05342FF84430EA /* L3D.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = L3D.cpp; sourceTree = ""; }; AEB81A6D02776389727FD1234E8C86BB /* NstBoardBmcGoldenGame260in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcGoldenGame260in1.hpp; sourceTree = ""; }; - AEC0015955B6C317179ECAEEE8FD46C5 /* GTLRDuration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDuration.m; path = Source/Objects/GTLRDuration.m; sourceTree = ""; }; + AEE900D97CC8D857A6CBCA6C6122BFE2 /* OIDServiceDiscovery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDServiceDiscovery.m; path = Source/AppAuthCore/OIDServiceDiscovery.m; sourceTree = ""; }; AEEDFE1C6DCCC4D7DAD65E906B2B97A4 /* ftserv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftserv.h; sourceTree = ""; }; AEF3A696869078C864E1963F2F7D12BD /* NSLayoutConstraint+Edges.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+Edges.h"; path = "Roxas/NSLayoutConstraint+Edges.h"; sourceTree = ""; }; + AF36F6F09B4DC03C081DC874523999BD /* StoneValidators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoneValidators.swift; path = Source/SwiftyDropbox/Shared/Generated/StoneValidators.swift; sourceTree = ""; }; AF44DB3EB55D6F519C51804F0F59E94E /* NstBoardBmcHero.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcHero.hpp; sourceTree = ""; }; + AF4E93C9AE2A0B6FCCC1B6A00F68A725 /* CustomTasks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomTasks.swift; path = Source/SwiftyDropbox/Shared/Handwritten/CustomTasks.swift; sourceTree = ""; }; AF7FCA61DFFF5A0D5EDF120BDC0514A1 /* texcache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = texcache.h; sourceTree = ""; }; AFD1A713033C1C1E163FB0798FB83410 /* UISpringTimingParameters+Conveniences.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UISpringTimingParameters+Conveniences.h"; path = "Roxas/UISpringTimingParameters+Conveniences.h"; sourceTree = ""; }; B009A13CCE9979249146089BA1A34F0D /* debug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; B00F6B23D0B981B123F788DAC719B99F /* S2DEX.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = S2DEX.h; sourceTree = ""; }; - B068E4E7AE4132AAFBBBCBD24D7A4C81 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/SDWebImageDownloaderOperation.m; sourceTree = ""; }; B07414167222C856E21B5FC7AAF6B460 /* iniparser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = iniparser.h; sourceTree = ""; }; B0765CD98C1CE1F2F85791B602FF2798 /* DeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DeltaCore.release.xcconfig; sourceTree = ""; }; B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = SDWebImage; path = libSDWebImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; B0B408436ECD4E39C149235FDFEBD2E7 /* bootrom_hle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = bootrom_hle.h; sourceTree = ""; }; B0F1D9E539EEFAF751D9F3EA1ED557D0 /* alist.c */ = {isa = PBXFileReference; includeInIndex = 1; path = alist.c; sourceTree = ""; }; B1044F71995C46DC0FE073BBF10E9B13 /* statesaver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = statesaver.h; sourceTree = ""; }; - B10B38D31A95FF99BBC00DA9C36C8D94 /* AggregateFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AggregateFunctions.swift; path = Sources/SQLite/Typed/AggregateFunctions.swift; sourceTree = ""; }; B10D64929F1FEAF657DE2891DDA14698 /* Pods-DeltaPreviews.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DeltaPreviews.debug.xcconfig"; sourceTree = ""; }; + B12A51AB51E035AEBEC352A58DEC7353 /* SMCalloutView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SMCalloutView.debug.xcconfig; sourceTree = ""; }; B160D4EFA5A5F1C8742E22E72E905F19 /* DSiCrypto.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSiCrypto.cpp; sourceTree = ""; }; B16A40EA546C216777D9E352BC96AE3F /* dictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dictionary.h; sourceTree = ""; }; B1731070434E5EFF380B47A5CF081A88 /* Turbo3D.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Turbo3D.h; sourceTree = ""; }; B180C048F26D4DD3F706AF3E35AD871F /* NstApiConfig.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiConfig.hpp; sourceTree = ""; }; B192A444B6B7EA865548723995B900AC /* GameControllerStateManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameControllerStateManager.swift; sourceTree = ""; }; - B19869A46C0D54CF10CFA28DEDBA6863 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; - B1FE60123D84FA8B290B36D0DA6860F0 /* GTMSessionFetcherLogging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherLogging.m; path = Source/GTMSessionFetcherLogging.m; sourceTree = ""; }; + B1C8F3DC6ED808186005506E0560109D /* GTLRURITemplate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRURITemplate.h; path = Source/Utilities/GTLRURITemplate.h; sourceTree = ""; }; B203F8A88C9D48A5F5958E9C9D692004 /* NstLog.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstLog.hpp; sourceTree = ""; }; + B22C35E3B81AAA21464AC1443352552A /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/UIImage+MultiFormat.m"; sourceTree = ""; }; B2315E586056FC23817E8D8C2F509A89 /* RSTHasher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTHasher.m; path = Roxas/RSTHasher.m; sourceTree = ""; }; - B23526A375A47D4DB7E41CEF2AD61087 /* SMCalloutView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SMCalloutView-dummy.m"; sourceTree = ""; }; B24AB2DF8FC4BF4DD6BF037E7818C3D2 /* UpdateRecordMetadataOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UpdateRecordMetadataOperation.swift; sourceTree = ""; }; B28C2D359879C1C22B73A921FADCC37F /* NstBoardRexSoftDb5z.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardRexSoftDb5z.hpp; sourceTree = ""; }; B29C1972C13EDC9F6DA00EC69351FC40 /* NstBoardJyCompany.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJyCompany.hpp; sourceTree = ""; }; @@ -3583,6 +3743,7 @@ B36B730F8AD540F525B5277EA31AC67F /* savestates.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = savestates.h; sourceTree = ""; }; B37A83095DB9485A2D6648B90229B165 /* check.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = check.h; sourceTree = ""; }; B380DE90CB179CA5CD21009426F6A5F0 /* pngdebug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngdebug.h; sourceTree = ""; }; + B3B4FCE84C0C49B1BA071F7674824E28 /* Crashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Crashlytics.h; path = iOS/Crashlytics.framework/Headers/Crashlytics.h; sourceTree = ""; }; B3EBA4C7AF2961430F113BBF0D749FD2 /* NSFileManager+URLs.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileManager+URLs.m"; path = "Roxas/NSFileManager+URLs.m"; sourceTree = ""; }; B406D46EC012C6003DF8D4CCFB546BC7 /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; name = Standard.deltamapping; path = GBCDeltaCore/Standard.deltamapping; sourceTree = ""; }; B40D570EAF3AC5F1FF34F6CFEB52975B /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; sourceTree = ""; }; @@ -3591,10 +3752,8 @@ B42134C901D85FF595600E8BEF31D70B /* Export.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Export.hpp; sourceTree = ""; }; B43910F41F6960C33EF3CA1B15E6985B /* CP15.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CP15.cpp; sourceTree = ""; }; B444C52B7AFA9D63FAF0B461FA593168 /* F3DPD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DPD.h; sourceTree = ""; }; - B469CB48E051A7902C306D720CA859C8 /* GTLRErrorObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRErrorObject.h; path = Source/Objects/GTLRErrorObject.h; sourceTree = ""; }; B491F193F0E7C08E3D5835D0EC6C8663 /* TextureFilters_xbrz.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters_xbrz.cpp; sourceTree = ""; }; B4AA759028D4A83689DFBCAD32BD6F89 /* NstBoardAveNina.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAveNina.hpp; sourceTree = ""; }; - B4BFB7D39F6CF7F3B3B3BB96C9EAC314 /* OAuthMobile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OAuthMobile.swift; path = Source/SwiftyDropbox/Platform/SwiftyDropbox_iOS/OAuthMobile.swift; sourceTree = ""; }; B4CAF60ABFA97CF71DAF2DE433630D80 /* Roxas-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Roxas-prefix.pch"; sourceTree = ""; }; B4D4C4C2D7260BC7EC51ED0250F0CE71 /* RDP.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RDP.cpp; sourceTree = ""; }; B4E404A1CC7DB6206E915912755904D4 /* opengl_ColorBufferReaderWithPixelBuffer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ColorBufferReaderWithPixelBuffer.cpp; sourceTree = ""; }; @@ -3609,7 +3768,6 @@ B58EFCC5EF56D718978F57E079A87EA4 /* NstBoardSunsoft1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoft1.hpp; sourceTree = ""; }; B5B746E5EA10FC7F1055958D0934DE8D /* NstBoardSomeriTeamSl12.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSomeriTeamSl12.hpp; sourceTree = ""; }; B5CB62985561D30D99DE10B02CE088C7 /* movie.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = movie.h; sourceTree = ""; }; - B5DC276CC14F0847B9A8C006CE0B064D /* GTMSessionFetcher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GTMSessionFetcher.modulemap; sourceTree = ""; }; B5E807740F0EF017C700ADF434C98BD3 /* RSTLoadOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTLoadOperation.m; path = Roxas/RSTLoadOperation.m; sourceTree = ""; }; B5EC979719AF84116845C11E69231908 /* NstBoardBtlTobidaseDaisakusen.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlTobidaseDaisakusen.hpp; sourceTree = ""; }; B618AE98791FBF53D9CCC55B3BD34734 /* RSTCellContentChange.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentChange.m; path = Roxas/RSTCellContentChange.m; sourceTree = ""; }; @@ -3627,29 +3785,28 @@ B8221CD345A28BD3CD8E168C400CA8FF /* NstBoardSunsoftDcs.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoftDcs.hpp; sourceTree = ""; }; B8400F21646638487723B9EF9596BA5B /* UIDevice+Vibration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIDevice+Vibration.swift"; sourceTree = ""; }; B8723B4EB8758045AE0B087B5528EDC2 /* armdis.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = armdis.h; sourceTree = ""; }; - B88A4A4D429C70A73A2F3F183EC24732 /* SQLite.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SQLite.swift-umbrella.h"; sourceTree = ""; }; B8A535289EAECB26714F6A1402BDA857 /* GBCEmulatorBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = GBCEmulatorBridge.mm; sourceTree = ""; }; B8BC89C0B8E5FFBFE6703D54BB9CEDF0 /* NstBoardBandai24c0x.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandai24c0x.hpp; sourceTree = ""; }; B8BC9FD996DB4D58B199162D2B593381 /* pngrio.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngrio.c; sourceTree = ""; }; - B9103C0E62058A84C7C9BDF9F6915958 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; - B9599505824F928A644466FC5D89F93C /* GTLRUploadParameters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRUploadParameters.h; path = Source/Objects/GTLRUploadParameters.h; sourceTree = ""; }; B95FA910628920D8E8299C42CA7BA421 /* NstBoardTengen.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTengen.hpp; sourceTree = ""; }; + B96B6CCA6172BD6CACE709722F1DD049 /* CLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSReport.h; path = iOS/Crashlytics.framework/Headers/CLSReport.h; sourceTree = ""; }; + B9A0C0F111C5D027A122A6E4B76B77EB /* OIDExternalUserAgent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDExternalUserAgent.h; path = Source/AppAuthCore/OIDExternalUserAgent.h; sourceTree = ""; }; B9BD4DA28886376C2E7481B62044CEAE /* rumblepak.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rumblepak.h; sourceTree = ""; }; B9FB12FD750F2468C4FFCF23657526D2 /* FullscreenResolutions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FullscreenResolutions.h; sourceTree = ""; }; - BA1F46281ACC03BA5632B185F2754D85 /* SMCalloutView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SMCalloutView-prefix.pch"; sourceTree = ""; }; BA4401C6EB69ED4B5D6552518CB95B8A /* NstBoardJalecoJf16.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJalecoJf16.hpp; sourceTree = ""; }; BA7AE85FBD0C664A9A33E289943C3825 /* DropboxService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxService.swift; path = "Backends/Dropbox/Harmony-Dropbox/DropboxService.swift"; sourceTree = ""; }; BA80EA6F6F0EB270D91647C7792AF73D /* ARM.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARM.cpp; sourceTree = ""; }; BAA2507DBA0FE3ED3BF05CA87C04EC0E /* ftgasp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftgasp.h; sourceTree = ""; }; BAC09A43CAA1DE563D4710120B89ABA3 /* NstBoardNamcot175.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNamcot175.hpp; sourceTree = ""; }; - BAE7CC5E61AD10E58132106C64073663 /* TeamPolicies.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamPolicies.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamPolicies.swift; sourceTree = ""; }; - BB1A039FF5440BBD2EF096501C8ED363 /* GTLRQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRQuery.h; path = Source/Objects/GTLRQuery.h; sourceTree = ""; }; BB22870483890CB67C08063155A2CD09 /* RSTOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTOperation.m; path = Roxas/RSTOperation.m; sourceTree = ""; }; BB32B7EDD671EBFA1249485B97B59362 /* NstBoardBandaiOekaKids.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandaiOekaKids.hpp; sourceTree = ""; }; + BB6F98A88FE9147A7B9EC010B4812365 /* OIDResponseTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDResponseTypes.m; path = Source/AppAuthCore/OIDResponseTypes.m; sourceTree = ""; }; BB733F89F116A23AF96444599346AF5A /* GPU.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GPU.cpp; sourceTree = ""; }; BB90D6B156245C90414C9D66ACF8CFA2 /* retro_common_api.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; + BBE3523E6D83A42F45B0052F6D4F6F2D /* DropboxTeamClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxTeamClient.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxTeamClient.swift; sourceTree = ""; }; BC0630E8B04720358454883097869D91 /* statemanager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = statemanager.h; sourceTree = ""; }; BC45D9FBFEAFD0B53F95C8F4773F02E8 /* FrameBufferInfoAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FrameBufferInfoAPI.h; sourceTree = ""; }; + BC5CA5B0238F3D020CCC2D1E3520C450 /* Contacts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contacts.swift; path = Source/SwiftyDropbox/Shared/Generated/Contacts.swift; sourceTree = ""; }; BC702BA93AF92C0C284D2A5648226AED /* glsl_Utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_Utils.h; sourceTree = ""; }; BC7DC552BE60F2C812F661C06470C6FD /* NDS.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = NDS.cpp; sourceTree = ""; }; BC8D6DADCB295C3B1CB4B4517085615C /* opengl_ContextImpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_ContextImpl.h; sourceTree = ""; }; @@ -3657,18 +3814,19 @@ BCDAE003FD5AAB091DE46063067C6C2D /* TxFilterExport.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxFilterExport.cpp; sourceTree = ""; }; BCFD6E5826A621DE495268940D60FCCF /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = ""; }; BD07BF4FD0D241E4EEB7F77EB2E38547 /* cart_rom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cart_rom.h; sourceTree = ""; }; + BD14EE61773F621F7BE47DDD2372E279 /* GTMSessionUploadFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionUploadFetcher.h; path = Source/GTMSessionUploadFetcher.h; sourceTree = ""; }; BD15AA34950562B6CB6A274DDA0596A3 /* Clock.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Clock.hpp; sourceTree = ""; }; BD26C015E7A919A5AE1046A3815237A0 /* m64p_frontend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_frontend.h; sourceTree = ""; }; - BD4FD5ECAA33E983C93BD04B1AEEDF59 /* SwiftyDropbox.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyDropbox.release.xcconfig; sourceTree = ""; }; BD8AB4C59982A02840E5E3DEF0708BCE /* NstSoundPlayer.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstSoundPlayer.hpp; sourceTree = ""; }; BD97A21427274EAEC21DDEDFF49C63DC /* GameControllerInputMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameControllerInputMapping.swift; sourceTree = ""; }; BDA41F3836670134A2A129F2BB8D3D28 /* spc7110emu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = spc7110emu.h; sourceTree = ""; }; BDA518E2E6EEDD1CE7091CA1EA3C08F6 /* GBI.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GBI.cpp; sourceTree = ""; }; + BDBDDD316E4F5B7EFBC5276C28C75D5C /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; BE0EB98BA91DB978CF8D6C9BD55A2979 /* N64DeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = N64DeltaCore.h; sourceTree = ""; }; BE1F801E5795D6E1E9A48F3FC3A6818E /* EEprom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EEprom.h; sourceTree = ""; }; + BE209924CB6D2E21D31F1FE61E0E2738 /* OIDResponseTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDResponseTypes.h; path = Source/AppAuthCore/OIDResponseTypes.h; sourceTree = ""; }; BE4C3DE847FBC50AAA7DF9A629B1AC09 /* GBASoundDriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBASoundDriver.h; sourceTree = ""; }; BE590250A2B1C45F7A1EC7B74A9EF339 /* aes.c */ = {isa = PBXFileReference; includeInIndex = 1; path = aes.c; sourceTree = ""; }; - BE678FC4DC246B0D19DC3F53975AFFA0 /* GTLRBatchQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBatchQuery.h; path = Source/Objects/GTLRBatchQuery.h; sourceTree = ""; }; BE8BFBFB5BEBA9732CC4263C09CA8D48 /* NstBoardIremH3001.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardIremH3001.hpp; sourceTree = ""; }; BE9625CAFC1A2B83061830C5FCA51493 /* gbafilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gbafilter.h; sourceTree = ""; }; BEA3631D1A67FEA74AA8E7FD7F106C13 /* DSi_Camera.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_Camera.cpp; sourceTree = ""; }; @@ -3676,9 +3834,11 @@ BF214410911943AE7235221D8B5EC42B /* ftotval.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftotval.h; sourceTree = ""; }; BF3798E9873D3426FE46A7B8FC9F1E0E /* memalign.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; C01DE739F0664348F6CA49A620277718 /* DSDeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = DSDeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + C04CD0898323CEBA2603BBB7EFFFAEC9 /* OIDURLSessionProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDURLSessionProvider.m; path = Source/AppAuthCore/OIDURLSessionProvider.m; sourceTree = ""; }; C064EE04F45B71F7006F2780F5435535 /* TxFilter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxFilter.cpp; sourceTree = ""; }; C080DAA189113F34158A00AA1827ACE7 /* RSTBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTBlockOperation.m; path = Roxas/RSTBlockOperation.m; sourceTree = ""; }; C0B8F180095207EB3A174AD98D9EEA8A /* dummy_video_capture.c */ = {isa = PBXFileReference; includeInIndex = 1; path = dummy_video_capture.c; sourceTree = ""; }; + C0F43BF9199158EC861C828DB0BD7C94 /* GTLRUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRUtilities.h; path = Source/Utilities/GTLRUtilities.h; sourceTree = ""; }; C12184A008E6E70912A403A00B2444CD /* UICollectionViewCell+Nibs.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewCell+Nibs.m"; path = "Roxas/UICollectionViewCell+Nibs.m"; sourceTree = ""; }; C16D5BBBB45CF1D60FC6565D2CDFF1D2 /* ImmediatePanGestureRecognizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ImmediatePanGestureRecognizer.swift; sourceTree = ""; }; C1998E0D8085221AD87F89B614C10E52 /* GTMSessionFetcher */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = GTMSessionFetcher; path = libGTMSessionFetcher.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -3687,31 +3847,32 @@ C22261743FC02934DB3B9E84F128F39D /* re2.c */ = {isa = PBXFileReference; includeInIndex = 1; path = re2.c; sourceTree = ""; }; C22D5AF4DB90EC26C2D5E7314FE452DA /* NstBoardSunsoft4.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoft4.hpp; sourceTree = ""; }; C2333DD47D710D157D5C8339C5A707B1 /* ftcffdrv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftcffdrv.h; sourceTree = ""; }; - C2794F0E81271A9277E8D45290A0CFD7 /* Data+Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Compression.swift"; path = "Sources/ZIPFoundation/Data+Compression.swift"; sourceTree = ""; }; + C245F10CFA17E68D0F217A475089F44E /* GTMMIMEDocument.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMMIMEDocument.h; path = Source/GTMMIMEDocument.h; sourceTree = ""; }; C285F91AC1ABFD39E8D04C2480BD194F /* ftmoderr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftmoderr.h; sourceTree = ""; }; C28C86EC3EAB2B8660286270E36A6CA8 /* Version+Dropbox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Version+Dropbox.swift"; sourceTree = ""; }; C2968C6CDB74DE4F69E45D0EC3569ACB /* storage_backend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = storage_backend.h; sourceTree = ""; }; C2A4A2A48D721601111D959ACC297E61 /* DepthBufferRender.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DepthBufferRender.h; sourceTree = ""; }; + C2ABAF2897D42614561ECAB22FCE403C /* SwiftyDropbox-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyDropbox-prefix.pch"; sourceTree = ""; }; C2AD9DA73A337680DFC1476096E9C55C /* UITableViewCell+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableViewCell+CellContent.h"; path = "Roxas/UITableViewCell+CellContent.h"; sourceTree = ""; }; + C2DDE061668DA510D878B4C7EE55B5BA /* GoogleAPIClientForREST.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAPIClientForREST.release.xcconfig; sourceTree = ""; }; + C2FB3A54994D0E5779790FEC602B7851 /* SDWebImageDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDecoder.h; path = SDWebImage/SDWebImageDecoder.h; sourceTree = ""; }; C324BC780B175A1C93C1DAAC4213BBA7 /* cheats.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cheats.h; sourceTree = ""; }; C3586CAA3B14430C3B92F4791040A126 /* NDSCart.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NDSCart.h; sourceTree = ""; }; C3A9EDD6A6B25EA9B355E4498EA7598E /* NstBoardBtlSmb2b.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlSmb2b.hpp; sourceTree = ""; }; - C3B144DAC7663AA196FF05DB5F4FAEBE /* Alamofire.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.release.xcconfig; sourceTree = ""; }; C3C76B6A29C0D032AB0DD055309D1387 /* UICollectionView+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionView+CellContent.m"; path = "Roxas/UICollectionView+CellContent.m"; sourceTree = ""; }; C3D6F6B13F9013F63F5A2EAF9F8DCBB6 /* NstBoardWaixingSh2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingSh2.hpp; sourceTree = ""; }; + C3E462965638C3B3A14A015889EAD1F6 /* Coding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Coding.swift; path = Sources/SQLite/Typed/Coding.swift; sourceTree = ""; }; C3F65071A7622D8B6598228B03F51F4D /* SaveState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SaveState.swift; sourceTree = ""; }; C3F964CCAAE0ED64E715E3B13EDC6ECD /* TextDrawerStub.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextDrawerStub.cpp; sourceTree = ""; }; C436117D3ACAAAC959D8673DD5EA97E0 /* boolean.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; C44A6BA5CBF11AA95A73C7DBA500571F /* Main.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Main.hpp; sourceTree = ""; }; + C4653210AF8AB8B84AC363E10864FEA1 /* GTMSessionFetcher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-prefix.pch"; sourceTree = ""; }; C50B426C6CE12AA24A5D9876EA2A99B4 /* video.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = video.h; sourceTree = ""; }; C50B575636C35E545F553C586B05FB8A /* NstBoardJaleco.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJaleco.hpp; sourceTree = ""; }; C51BEC03C001CB0D0FF60D596A403A7E /* PrimitiveType.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = PrimitiveType.hpp; sourceTree = ""; }; - C526F8C0BC1F7A1BE3449A79197ECC22 /* Answers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Answers.h; path = iOS/Crashlytics.framework/Headers/Answers.h; sourceTree = ""; }; C55FAEAE78442FE223B896686DB18E47 /* NSManagedObject+Conveniences.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Conveniences.swift"; sourceTree = ""; }; - C585C47CE6EF972B1E2B823683528538 /* TeamLog.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamLog.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamLog.swift; sourceTree = ""; }; C5A0597C81856E54BE8AFFB30277E436 /* opengl_BufferManipulationObjectFactory.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_BufferManipulationObjectFactory.cpp; sourceTree = ""; }; C5C75C2C1AC05CC85E4208CA87601C6F /* Config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Config.h; sourceTree = ""; }; - C5D0C48AB270EA1136E55E203CF7D378 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/NSData+ImageContentType.h"; sourceTree = ""; }; C60A7836613451F77D217AF7D66A21EE /* Debugger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Debugger.h; sourceTree = ""; }; C61EBFABBEAD75E970E91B92F765E605 /* pngconf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = ""; }; C6557795EA6149DB85F43ED83D8054AA /* SDL_thread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SDL_thread.h; sourceTree = ""; }; @@ -3720,7 +3881,6 @@ C73DD8D8F63F6A56EB1187D23D256352 /* ftgzip.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftgzip.h; sourceTree = ""; }; C74A158169DF87C094722AEF80379C12 /* GLideN64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GLideN64.h; sourceTree = ""; }; C7A5FD929F6CABA16DAD7F0D6F24BCB1 /* fterrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fterrors.h; sourceTree = ""; }; - C7A9D7E3EC589A75AD2405C76234F641 /* GoogleToolboxForMac-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleToolboxForMac-dummy.m"; sourceTree = ""; }; C7F0416EEC0A378939FC4ABF9DB349F8 /* RSTCellContentChangeOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentChangeOperation.m; path = Roxas/RSTCellContentChangeOperation.m; sourceTree = ""; }; C802F35EF4ADB2EB9720F2A4042A62CF /* CRC32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CRC32.h; sourceTree = ""; }; C807A3D32FB0C2A58A08A7270A8A634B /* F3DBETA.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DBETA.cpp; sourceTree = ""; }; @@ -3728,32 +3888,33 @@ C81C97C396CFD4B3B38A6BA482FBBC01 /* inputgetter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = inputgetter.h; sourceTree = ""; }; C82CF0926260C9CD4C89A371F21A01D0 /* TextureFilters_hq4x.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters_hq4x.cpp; sourceTree = ""; }; C833FB0585E6763E62B2626B7775EDC2 /* wst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = wst.h; sourceTree = ""; }; - C84C3D0F11A5EB1115FFB93D23447AE9 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; + C85789FDF6B43171F0FCB8542E299962 /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; C858F6B7C21B35E28BD8E19BAD707358 /* Utf.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = Utf.inl; sourceTree = ""; }; - C896FF6056EF6073CCFEB25599D37DC1 /* StoneValidators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoneValidators.swift; path = Source/SwiftyDropbox/Shared/Generated/StoneValidators.swift; sourceTree = ""; }; + C86290F9E481344A373DEC5BBD238F5F /* GTLRBatchResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBatchResult.h; path = Source/Objects/GTLRBatchResult.h; sourceTree = ""; }; + C8BD415C13FB4C499F0890A3714FD956 /* GTLRUploadParameters.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRUploadParameters.m; path = Source/Objects/GTLRUploadParameters.m; sourceTree = ""; }; C8D6AC695498645EEE4A66FCEF97D848 /* N64DeltaCore */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = N64DeltaCore; path = libN64DeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; C920ABE1CD32898FDE28D05E300426D3 /* TxDbg_ios.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = TxDbg_ios.mm; sourceTree = ""; }; C92E2E1748A19DE3690F0128F51ADC9A /* sdl2_compat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sdl2_compat.h; sourceTree = ""; }; C942DF0812B9968B0756146F887EC48D /* NstBoardWaixingZs.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingZs.hpp; sourceTree = ""; }; + C98DB0FD6FD6306E15AEE84B2DC91E6E /* GTLRDateTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDateTime.m; path = Source/Objects/GTLRDateTime.m; sourceTree = ""; }; C9C923E11C5810643A0781C332F533A8 /* writepng.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = writepng.h; sourceTree = ""; }; C9D5F54CAAFE4356F8D137546851DBFD /* ftpfr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftpfr.h; sourceTree = ""; }; CA0570E1B9040E7E10E9E862D844F4E7 /* NstVideoFilterxBR.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoFilterxBR.hpp; sourceTree = ""; }; CA1C13CC0969B73224161A45530F6B3B /* NstInpPaddle.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPaddle.hpp; sourceTree = ""; }; CA55F47F80C2DC890C16CE8644549D2F /* TcpSocket.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = TcpSocket.hpp; sourceTree = ""; }; CAA82CD75A5FC90ED4D345E85C29CD53 /* obc1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = obc1.h; sourceTree = ""; }; - CAB0449592C0DCA8414A2D8785033227 /* BaseTeam.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BaseTeam.swift; path = Source/SwiftyDropbox/Shared/Generated/BaseTeam.swift; sourceTree = ""; }; - CAF7DAE3D701F9616A709277BAC90365 /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/SQLite/Typed/Operators.swift; sourceTree = ""; }; - CB0111AD916628D17DBE1C3F2FED3100 /* SMCalloutView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SMCalloutView.m; sourceTree = ""; }; + CAC07B3D9E7C4AD3DD82C841899CF5BD /* DateAndTimeFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DateAndTimeFunctions.swift; path = Sources/SQLite/Typed/DateAndTimeFunctions.swift; sourceTree = ""; }; + CAF493714512E4455A1C5612FDA9AFBB /* StoneSerializers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoneSerializers.swift; path = Source/SwiftyDropbox/Shared/Generated/StoneSerializers.swift; sourceTree = ""; }; + CB18133E0ECE1AE6EAF820FD43E8C7CD /* TeamLogRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamLogRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamLogRoutes.swift; sourceTree = ""; }; CB183AD11F0038C0F2527033206C8BC9 /* opengl_ColorBufferReaderWithPixelBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_ColorBufferReaderWithPixelBuffer.h; sourceTree = ""; }; CB20F171AA181AF98D5C22F837503AED /* NstBoardBtlSmb3.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlSmb3.hpp; sourceTree = ""; }; CB23A58DB03D44EA7C023930110C42D6 /* NstBoardSunsoftFme7.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoftFme7.hpp; sourceTree = ""; }; CB2DE433AA67D7DB3319203E042598EF /* inputSDL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = inputSDL.h; sourceTree = ""; }; CB2FB6A449519AD09E7964F0CC67DF25 /* ClipPolygon.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ClipPolygon.cpp; sourceTree = ""; }; CB41699D4C5AC2AFBD30F2473705EC1F /* GBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GBC.swift; sourceTree = ""; }; + CB6DE8B6B571E74C9ACD718E9C02F072 /* OIDDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDDefines.h; path = Source/AppAuthCore/OIDDefines.h; sourceTree = ""; }; CB7BCA1A53C8996DE41676BCFE8A7EEE /* Account.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Account.swift; sourceTree = ""; }; CB7C95528D21C181DD0A15EA00BB253E /* NstBoardNRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNRom.hpp; sourceTree = ""; }; - CBBEE4D27B665A1DD4EDB8A509D41C6C /* SwiftyDropbox.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftyDropbox.modulemap; sourceTree = ""; }; - CBCCD8C7C6480A54F79BDBCD6BAFC020 /* DropboxTransportClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxTransportClient.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxTransportClient.swift; sourceTree = ""; }; CBDA9BCF2343410A45207B8BA198A99B /* ftwinfnt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftwinfnt.h; sourceTree = ""; }; CC212996B8749C2BF9F4A6A9A3D9E2BA /* RecordController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RecordController.swift; sourceTree = ""; }; CCFF79507F169F74B68C445BA304BD5F /* UITableViewCell+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableViewCell+CellContent.m"; path = "Roxas/UITableViewCell+CellContent.m"; sourceTree = ""; }; @@ -3762,26 +3923,28 @@ CD4EA785583B6712B56815D0C46BDD97 /* SocketHandle.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SocketHandle.hpp; sourceTree = ""; }; CD6D9A12F60639B7290A8762618AA481 /* interrupt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = interrupt.h; sourceTree = ""; }; CD9A90643977AB1AB20A8F324A49694B /* files.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = files.h; sourceTree = ""; }; - CDAEDE6317A2C17D4DB07ED6E3982F55 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; + CDA0F802A4ECCF2B37D4B27747861281 /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; CDB8BB05395141733620E2774F380468 /* NstInpSuborKeyboard.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpSuborKeyboard.hpp; sourceTree = ""; }; CDCC5902B2B69DCE162F96EA6B47E52B /* AudioRendering.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AudioRendering.swift; sourceTree = ""; }; CDD676F1CFBC293A793BD1F2DE8EB4A5 /* Pods-DeltaPreviews-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DeltaPreviews-dummy.m"; sourceTree = ""; }; CDD6A8CDC5FCD0DA6B0B7F1F9F5689CA /* FinishUploadingRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FinishUploadingRecordsOperation.swift; sourceTree = ""; }; CDE9C9A6E3FCD131E7936A7E0E5E9EDD /* NstBoardRexSoft.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardRexSoft.hpp; sourceTree = ""; }; CE0692DFDB826DC47131EF92FFE1618F /* N64DeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "N64DeltaCore-umbrella.h"; sourceTree = ""; }; - CE47B9173973846BA966835EB7C3B4DF /* Archive+MemoryFile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+MemoryFile.swift"; path = "Sources/ZIPFoundation/Archive+MemoryFile.swift"; sourceTree = ""; }; CE78A65434CC7B5A569BDA6008543CB2 /* opengl_ColorBufferReaderWithBufferStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_ColorBufferReaderWithBufferStorage.h; sourceTree = ""; }; CE9F70F5875E0DA8644F2FE8581B1552 /* FrameBufferInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FrameBufferInfo.h; sourceTree = ""; }; CED38382667C264AA0CDCC9A96F9E713 /* RSTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTError.h; path = Roxas/RSTError.h; sourceTree = ""; }; - CEFFA33EF26C6E6BBBA92570888B7054 /* GTMSessionUploadFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionUploadFetcher.m; path = Source/GTMSessionUploadFetcher.m; sourceTree = ""; }; + CF1D5DE7C168A69862C6EA8564C5C1CE /* GTMAppAuth-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GTMAppAuth-dummy.m"; sourceTree = ""; }; CFA17A05957A8AC58AB18B148D1D0249 /* plugin_delta.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = plugin_delta.cpp; sourceTree = ""; }; + CFA4D7A7602BFF3A3C64CE6AF41F95BE /* GTLRDateTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDateTime.h; path = Source/Objects/GTLRDateTime.h; sourceTree = ""; }; + CFB1D0383574EDCBFCB1E01640904FF7 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; CFD8A4F7B53F8D399A47BBA8043FB62F /* NstBoardHosenkan.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardHosenkan.hpp; sourceTree = ""; }; - D01B5BDC517C52E34E8E81885DDA7BC9 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/SDWebImageCompat.m; sourceTree = ""; }; D021571E7AD5B0872171BCAC83C8C12A /* mempak.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = mempak.h; sourceTree = ""; }; + D057D5A1FCB64223EC87BA53B8351A0B /* GTLRURITemplate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRURITemplate.m; path = Source/Utilities/GTLRURITemplate.m; sourceTree = ""; }; D07593E3481101DA254F891F7AB6D797 /* glsl_CombinerInputs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerInputs.h; sourceTree = ""; }; D08C9A9252EAEDB301C73E7C0496EF63 /* NstCrc32.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstCrc32.hpp; sourceTree = ""; }; D08E53516D7A51AADD55FB1E09C5FD1A /* F3DEX.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DEX.cpp; sourceTree = ""; }; D0A55488C42737DFC74709CAF4D17297 /* NstBoardBmcBallgames11in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcBallgames11in1.hpp; sourceTree = ""; }; + D0C86BB3C7C2C64B7D0492A9FBD2E363 /* OAuthMobile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OAuthMobile.swift; path = Source/SwiftyDropbox/Platform/SwiftyDropbox_iOS/OAuthMobile.swift; sourceTree = ""; }; D0F96015497105F5DAFE0C80ECF75510 /* NESDeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NESDeltaCore-umbrella.h"; sourceTree = ""; }; D0F9F0360C252D9E820EE537A0A44704 /* debugger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = debugger.h; sourceTree = ""; }; D101092815A4853D5955A079B268C708 /* GBADeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = GBADeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; @@ -3789,40 +3952,38 @@ D120FB3DD7CE8E154F0178A7E383180A /* MergePolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MergePolicy.swift; sourceTree = ""; }; D136D0103EFC98F76207487A7ABC2F67 /* NstBoardBandaiLz93d50.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandaiLz93d50.hpp; sourceTree = ""; }; D13A0F4BF74BE8B97BFDAD60B81DF937 /* ARM_InstrInfo.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARM_InstrInfo.cpp; sourceTree = ""; }; - D145AF0D8138ED303A35F31CC28531D9 /* SwiftyDropbox-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyDropbox-dummy.m"; sourceTree = ""; }; D154D94EF977ED8B7B27F1B9F57557EA /* NstBoardFxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardFxRom.hpp; sourceTree = ""; }; - D196E82B652BFF0CF8DD7D134B12120D /* Team.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Team.swift; path = Source/SwiftyDropbox/Shared/Generated/Team.swift; sourceTree = ""; }; D1B0D2FC2C2810170AD695B08F5D980F /* NstBoardWaixingFfv.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingFfv.hpp; sourceTree = ""; }; D1C9B2FC2B1D3CBD6D757006FF962939 /* dcheck.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dcheck.h; sourceTree = ""; }; - D1E2911B0409362E1D0AF530431EF0B4 /* GTMNSString+URLArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSString+URLArguments.m"; path = "Foundation/GTMNSString+URLArguments.m"; sourceTree = ""; }; - D1EC922CB4C37FF078E2F2FA393D076C /* GTLRBatchQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBatchQuery.m; path = Source/Objects/GTLRBatchQuery.m; sourceTree = ""; }; - D205F13F881DDD5824256D1FD8747E00 /* Sharing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sharing.swift; path = Source/SwiftyDropbox/Shared/Generated/Sharing.swift; sourceTree = ""; }; - D21720F624B8F46DC74D6175670521F8 /* GTMDebugThreadValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMDebugThreadValidation.h; path = DebugUtils/GTMDebugThreadValidation.h; sourceTree = ""; }; D274287734C3E8C2F9B0BE9AE03C2224 /* Arm64Emitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Arm64Emitter.h; sourceTree = ""; }; D281516BEAC3D67B16886D5733929B44 /* RSTCellContentPrefetchingDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentPrefetchingDataSource.h; path = Roxas/RSTCellContentPrefetchingDataSource.h; sourceTree = ""; }; D283F03B2B6006637A857006558B5162 /* NstFds.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstFds.hpp; sourceTree = ""; }; D290CBC984A74AA8A2A92E44A858B1CD /* retro_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; + D2A9972C73302E7859114B00F97119FB /* GTLRBatchQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBatchQuery.h; path = Source/Objects/GTLRBatchQuery.h; sourceTree = ""; }; D2C5FF03705697F80BAC9D24C6CDDAB2 /* NstApiTapeRecorder.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiTapeRecorder.hpp; sourceTree = ""; }; + D348B99A21C9231EF8021CE9BE24C999 /* ZIPFoundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-umbrella.h"; sourceTree = ""; }; D3700E443B0C590B19D2400939E6ADD3 /* DeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DeltaCore-dummy.m"; sourceTree = ""; }; D3702A16CB1965259051FE3C110B95F6 /* rom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rom.h; sourceTree = ""; }; D382691E155A7A3DA363B2C6FD35A864 /* spc7110dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = spc7110dec.h; sourceTree = ""; }; + D3B384A7E8A4FCAED1BD8FEF95AEE857 /* FTS4.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FTS4.swift; path = Sources/SQLite/Extensions/FTS4.swift; sourceTree = ""; }; D3B94EFE9B4F5C020D66C89DC5C10A71 /* pngset.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngset.c; sourceTree = ""; }; D3BFB2D54586B0F4F292765883CE2A63 /* NstBoardBmc64in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc64in1.hpp; sourceTree = ""; }; + D3C64537334355255D5B2EAEBB95293B /* OIDAuthState+IOS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "OIDAuthState+IOS.m"; path = "Source/AppAuth/iOS/OIDAuthState+IOS.m"; sourceTree = ""; }; D3DB415A75DFB9B29725114787E05A3B /* NstBoardBmcSuper700in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuper700in1.hpp; sourceTree = ""; }; D3E0CEEDFD4A7C498DB0BB86C7454069 /* svxf86nm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svxf86nm.h; sourceTree = ""; }; D4094ED24EA34D2593C503C8D5C105CE /* RSTArrayDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTArrayDataSource.m; path = Roxas/RSTArrayDataSource.m; sourceTree = ""; }; - D42421CB7ACD877300E845DA963BD693 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/SDWebImagePrefetcher.h; sourceTree = ""; }; D456E5925A2BB22F574458B154CD52B1 /* DS.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DS.swift; sourceTree = ""; }; D4873789421471F74045B1971C0619DF /* rdp_core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rdp_core.h; sourceTree = ""; }; D4A12ACDD79A62B65966F290DFCF5A2B /* NstBoardBmcVt5201.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcVt5201.hpp; sourceTree = ""; }; D4C010E8572FAE8B51DFDBF2300ECF30 /* GBCDeltaCore */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = GBCDeltaCore; path = libGBCDeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; + D4E7CE62FA7A699F92E7E3872EA98545 /* DropboxTransportClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxTransportClient.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxTransportClient.swift; sourceTree = ""; }; D507E9DF501F229BE997E2B64B0BB402 /* eeprom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = eeprom.h; sourceTree = ""; }; D51E188D838AEB69093123ABC8902093 /* netplay.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = netplay.h; sourceTree = ""; }; - D55E6137C8C963C0E24FF6F3246DAA3D /* FABAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FABAttributes.h; path = iOS/Fabric.framework/Headers/FABAttributes.h; sourceTree = ""; }; + D52EA840A37C4DA8B470A68AEE6590FC /* GTLRErrorObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRErrorObject.m; path = Source/Objects/GTLRErrorObject.m; sourceTree = ""; }; D56A683DE5B49F71B9810452A09536B0 /* NstDipSwitches.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstDipSwitches.hpp; sourceTree = ""; }; D58E6DDA3A017F21A7B64FB5713075C7 /* NstVsRbiBaseball.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVsRbiBaseball.hpp; sourceTree = ""; }; + D5D6AF0C13DDE459DA4AC814450C8D0D /* OIDErrorUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDErrorUtilities.m; path = Source/AppAuthCore/OIDErrorUtilities.m; sourceTree = ""; }; D60828FEC5AAC1583A8F51DE9C0C7F54 /* ThreadImpl.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = ThreadImpl.hpp; sourceTree = ""; }; - D63DF8BC0893DD34539EDEF01E7690F8 /* GTLRObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRObject.m; path = Source/Objects/GTLRObject.m; sourceTree = ""; }; D66CCB837673A92E3EE52F14F3E1714B /* GBAEmulatorBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = GBAEmulatorBridge.mm; sourceTree = ""; }; D68AC04EF686D1D8C703E6B1271190CA /* NstBoardSunsoft2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoft2.hpp; sourceTree = ""; }; D6A5B898B9F2D64E02BAEFFC9249C61D /* DisplayLoadProgress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DisplayLoadProgress.h; sourceTree = ""; }; @@ -3834,12 +3995,15 @@ D786ED3A972D8A992B14AA4D10957252 /* RSTPlaceholderView.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = RSTPlaceholderView.xib; path = Roxas/RSTPlaceholderView.xib; sourceTree = ""; }; D794CF918186C2DC6EBD49FC2FAEA95F /* NstImage.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstImage.hpp; sourceTree = ""; }; D799949A4565702661AFA3995D650C57 /* NstInpTurboFile.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpTurboFile.hpp; sourceTree = ""; }; + D7F002CEE0C728572DCDE27D651197B5 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/UIView+WebCacheOperation.h"; sourceTree = ""; }; D81CD67810D215E63E82293B4E836FA7 /* opengl_GLInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_GLInfo.h; sourceTree = ""; }; D843B5D7D188463B152E998ADA05C587 /* Thread.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Thread.hpp; sourceTree = ""; }; D89F6FAA9CE995ADA9DD64F071D6212E /* RemoteFile+File.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RemoteFile+File.swift"; sourceTree = ""; }; D9190E21FA9BDC3ECAC991D745F8B829 /* initstate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = initstate.h; sourceTree = ""; }; D92F9E5A5EB369E6906F6574ADEE9001 /* sRGB.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sRGB.h; sourceTree = ""; }; D98A348E91606946E29BA0B54D6B9F79 /* DSi_NWifi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_NWifi.h; sourceTree = ""; }; + D99D4D1F0BBB15D16CA6DB89F3A3ACFE /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/UIView+WebCacheOperation.m"; sourceTree = ""; }; + D9A35F037627770B9E4D134A54ED7A1D /* CustomFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomFunctions.swift; path = Sources/SQLite/Typed/CustomFunctions.swift; sourceTree = ""; }; D9A99AC4564024C83E5D7E12274FEA75 /* GLideN64.custom.ini */ = {isa = PBXFileReference; includeInIndex = 1; path = GLideN64.custom.ini; sourceTree = ""; }; D9BE3D68F698321E8E2ABDD6FA14EC78 /* Text.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Text.hpp; sourceTree = ""; }; D9DA8FE84C120B2A520DC4D71D61CB2D /* RenderTarget.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = RenderTarget.hpp; sourceTree = ""; }; @@ -3847,9 +4011,9 @@ DAB38A1A17078FD95D88608D7190F6C3 /* GameViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = ""; }; DAB448EADDF731C719FAF25EF2908CC6 /* fxemu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fxemu.h; sourceTree = ""; }; DAC1CABF5E26C01147E714C571690DED /* TxQuantize.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxQuantize.cpp; sourceTree = ""; }; + DB2F51D5F10CCC05DE05857AF78C4BFA /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; DB416CB894186FF9DB4FCE49262E6CC0 /* RenderThread.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RenderThread.swift; sourceTree = ""; }; DB683D01C648B7B51BB512DE2E9B3032 /* Config.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Config.hpp; sourceTree = ""; }; - DBAAF6DBA09834539A368667AF5A1211 /* GoogleAPIClientForREST.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAPIClientForREST.debug.xcconfig; sourceTree = ""; }; DBAD4BC508BBD2D2F2B465DE8AC80A4F /* debugger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = debugger.h; sourceTree = ""; }; DBC0113CF73BE24525E670D024A85BE7 /* Harmony */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = Harmony; path = libHarmony.a; sourceTree = BUILT_PRODUCTS_DIR; }; DBDF1F1562FB4035D9C7758E467FC2B3 /* scmrev.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = scmrev.h; sourceTree = ""; }; @@ -3858,8 +4022,9 @@ DBF044364539F3E0E010F5D683AC7DA1 /* F3D.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3D.cpp; sourceTree = ""; }; DC12A357C05925889CD29FB0539FEC74 /* NstTrackerMovie.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstTrackerMovie.hpp; sourceTree = ""; }; DC15718FEE1F270A54AA643D5215F826 /* NstBoardBmcSuper40in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuper40in1.hpp; sourceTree = ""; }; - DC30E6531D1C727E6389B4A27F9674E0 /* Value.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Value.swift; path = Sources/SQLite/Core/Value.swift; sourceTree = ""; }; + DC27826173671382807D1965A3D411A3 /* OIDURLSessionProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDURLSessionProvider.h; path = Source/AppAuthCore/OIDURLSessionProvider.h; sourceTree = ""; }; DC338FDCACE70DA458A3ECF44352685F /* ftbzip2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftbzip2.h; sourceTree = ""; }; + DC40A8C710C4F26562DD7DCC58A3262D /* GTLRBatchResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBatchResult.m; path = Source/Objects/GTLRBatchResult.m; sourceTree = ""; }; DC7CD728E0D260394B7476EE6ED0B494 /* L3DEX.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = L3DEX.h; sourceTree = ""; }; DCCE06A90F876C47172EB877B4D1939B /* ARMInterpreter_ALU.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMInterpreter_ALU.cpp; sourceTree = ""; }; DCFF6C6EF28C1BFF22E47FEA4AAD1223 /* mupen64plus_DisplayWindow.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = mupen64plus_DisplayWindow.cpp; sourceTree = ""; }; @@ -3877,14 +4042,17 @@ DF54EE6E46C88890646E05D44ABA8AE7 /* NstBoardBmcGamestarB.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcGamestarB.hpp; sourceTree = ""; }; DF5C826C0D98174AFC775070DD3253D0 /* TxImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxImage.h; sourceTree = ""; }; DFA6380E55BF081358F382C0F2FA7B60 /* NstVsSuperXevious.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVsSuperXevious.hpp; sourceTree = ""; }; + DFB5A7F5FFAE58E02C01B350F0F9D6E3 /* GTLRService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRService.h; path = Source/Objects/GTLRService.h; sourceTree = ""; }; DFD3DF8A4FFFE391CADAE464B86DEFD9 /* Harmony-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Harmony-dummy.m"; sourceTree = ""; }; DFE241438C0AB57A428B27B443B2AC03 /* Delta.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Delta.swift; path = DeltaCore/Delta.swift; sourceTree = ""; }; DFF3F3ED2DD3379D1F7BD0F3059BA64F /* NSBundle+Extensions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+Extensions.m"; path = "Roxas/NSBundle+Extensions.m"; sourceTree = ""; }; E00A573392976831E1DADFFE3450B87A /* ConfigDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ConfigDialog.h; sourceTree = ""; }; + E0174FCA92F9D1D559BD164B2F6FD1F5 /* GTLRDriveQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDriveQuery.h; path = Source/GeneratedServices/Drive/GTLRDriveQuery.h; sourceTree = ""; }; E03B229B626122855F4CF94308B4637F /* NstBoardRcm.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardRcm.hpp; sourceTree = ""; }; + E04217CEFCF82D4E2C9F2DC0B3090E3D /* SwiftyDropbox.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyDropbox.release.xcconfig; sourceTree = ""; }; E056F9C392ACCD36B6E5FF8B6D6877C6 /* pi_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pi_controller.h; sourceTree = ""; }; - E064EB97821DE1B8BFCC21E48F3D5BA0 /* Data+Serialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Serialization.swift"; path = "Sources/ZIPFoundation/Data+Serialization.swift"; sourceTree = ""; }; E071D5F4AE0E7711FCA5CCC846C31D03 /* CGGeometry+Conveniences.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CGGeometry+Conveniences.swift"; sourceTree = ""; }; + E09978A0B7F52029D794C4817785CBC4 /* GTMSessionFetcher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GTMSessionFetcher.modulemap; sourceTree = ""; }; E0B853CEF240ECCC29281860C143B77C /* F3DEX2CBFD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DEX2CBFD.h; sourceTree = ""; }; E0C78CF3BBD7FAE4DF182AF1C994DD89 /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; name = Standard.deltamapping; path = MelonDSDeltaCore/Standard.deltamapping; sourceTree = ""; }; E0E396C6ACEADA6313110BA019AE87CF /* opengl_UnbufferedDrawer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_UnbufferedDrawer.cpp; sourceTree = ""; }; @@ -3900,11 +4068,10 @@ E21695BC34A564AC90F8B24A9773AD31 /* WifiAP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = WifiAP.h; sourceTree = ""; }; E22D40F072FC60A30938FBAD93B403BE /* DSi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi.h; sourceTree = ""; }; E239ED1166B2CA4127C1ADA9EE66B7F7 /* NstBoardSachenSa72007.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenSa72007.hpp; sourceTree = ""; }; - E25B44BABC7528C07CC191BA85CCE447 /* SMCalloutView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SMCalloutView.modulemap; sourceTree = ""; }; + E2580FFCC835723EF1F5DDF5E6F2165B /* RTree.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RTree.swift; path = Sources/SQLite/Extensions/RTree.swift; sourceTree = ""; }; E267514409136B15146B6D5C6031139B /* sram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sram.h; sourceTree = ""; }; - E26FEBA64D2374DAC135277E88C048E7 /* FilesRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FilesRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/FilesRoutes.swift; sourceTree = ""; }; E2847D38189084A48043661E02AE5E3D /* VideoFormat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VideoFormat.swift; sourceTree = ""; }; - E296E74D5BB17E065FADEFAB60BF91B5 /* UsersCommon.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UsersCommon.swift; path = Source/SwiftyDropbox/Shared/Generated/UsersCommon.swift; sourceTree = ""; }; + E2D421F13E814E57B15110AAB3EEFD11 /* GTMSessionFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcher.h; path = Source/GTMSessionFetcher.h; sourceTree = ""; }; E2F73A989BF6FCAB3263CF3D770CC457 /* NstApiCheats.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiCheats.hpp; sourceTree = ""; }; E2F749876241206B2B12FC438C160208 /* SPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SPI.h; sourceTree = ""; }; E2FED4B4A646D3CAD594BD95F165A231 /* opengl_ColorBufferReaderWithReadPixels.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_ColorBufferReaderWithReadPixels.h; sourceTree = ""; }; @@ -3912,38 +4079,42 @@ E35E5EA84C80DD35DB38191486374F7D /* RTC.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RTC.h; sourceTree = ""; }; E391CF9551BB3A4B87436C08C3130381 /* ControllerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControllerView.swift; sourceTree = ""; }; E39B6D2E1349BC9CF76985C762A82797 /* Pods-Delta-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Delta-umbrella.h"; sourceTree = ""; }; + E3A84C00EC52D508C43138D6415A7260 /* OIDAuthorizationService+IOS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "OIDAuthorizationService+IOS.h"; path = "Source/AppAuth/iOS/OIDAuthorizationService+IOS.h"; sourceTree = ""; }; E3E35D2003A87897EFBA643B7A078C3E /* RSP.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RSP.cpp; sourceTree = ""; }; E3EC5D23D9AC26F69D6F4ACF67BCFB67 /* memmap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; E40DF036AF5317A3ED60CE4AF950DD05 /* counterdef.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = counterdef.h; sourceTree = ""; }; E41FF9AEB8F168E432CF51CF03B82946 /* NonStupidBitfield.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NonStupidBitfield.h; sourceTree = ""; }; + E42360B705AA75784D9E9AAEBB830A02 /* GTMAppAuth-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMAppAuth-umbrella.h"; sourceTree = ""; }; E427909C72F63CEA1B0E907812DEA956 /* Roxas.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Roxas.debug.xcconfig; sourceTree = ""; }; + E428D7A0EE985F874A11A23CAC065DE0 /* Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Foundation.swift; path = Sources/SQLite/Foundation.swift; sourceTree = ""; }; E42ABC54F33F8C0E48F35F0411521A9B /* DebugDump.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DebugDump.h; sourceTree = ""; }; E437C59E1C9A7503EE399AE8E4315FF5 /* NstBoardSachen74x374.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachen74x374.hpp; sourceTree = ""; }; E44721DCD5EC81393AB1A2954814DCA1 /* version.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; E46BF8BF2F2DD70A3F7AE44AFA1466D4 /* glsl_Utils.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_Utils.cpp; sourceTree = ""; }; E4764CCFDB5EDCEA6DD86E722A0DBC44 /* matrix.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = matrix.h; sourceTree = ""; }; E4B5AA983A8DCB04CD1380E97F735828 /* ftgloadr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftgloadr.h; sourceTree = ""; }; + E4E761B4100120EFEE3E77F6B031F1CA /* GTMGatherInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMGatherInputStream.m; path = Source/GTMGatherInputStream.m; sourceTree = ""; }; E4E875CF38214DC3165789D0D73B21CD /* svgxval.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svgxval.h; sourceTree = ""; }; E4EBA815773EEEF36C8ACC26B336172A /* RSTActivityIndicating.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTActivityIndicating.h; path = Roxas/RSTActivityIndicating.h; sourceTree = ""; }; + E50D0607ACEC326B0DC65D7D9B0004AD /* SQLiteObjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SQLiteObjc.m; path = Sources/SQLiteObjc/SQLiteObjc.m; sourceTree = ""; }; E520F208464333BCFA4367A666CB593F /* ftsystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftsystem.h; sourceTree = ""; }; E52CAC44F749143B431099BD926F6108 /* InputStream.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = InputStream.hpp; sourceTree = ""; }; E531AA77EC465A15D976C75B5A6C0C8E /* TxDbg.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxDbg.h; sourceTree = ""; }; E55D287DB523BCC5DDBB884D666555FE /* SoftwareRender.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = SoftwareRender.cpp; sourceTree = ""; }; E5C5658B98F305B1F0A0DE676A766C32 /* common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + E632C9FD06F17BA9EF62C0EB0F22D153 /* GTLRDriveObjects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDriveObjects.h; path = Source/GeneratedServices/Drive/GTLRDriveObjects.h; sourceTree = ""; }; E636E2DE0A5BF7915710AA52E2D51D45 /* recomp_types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = recomp_types.h; sourceTree = ""; }; E65999F874A6BFA45EC1C62F41BD7C97 /* assemble_struct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assemble_struct.h; sourceTree = ""; }; E65C91A453E376EE9681BB62650AACF9 /* SDL_config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SDL_config.h; sourceTree = ""; }; E65DB1E52D5DE41D6648FB0DB8944F7D /* NstTracker.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstTracker.hpp; sourceTree = ""; }; E66B7B043452B92B922E437CDE08AB94 /* ftlcdfil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftlcdfil.h; sourceTree = ""; }; E6AB1BD2CE7196982B4DC417E4A40A3B /* apu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = apu.h; sourceTree = ""; }; - E6C9B6763FC803B3E3266F762DFABEC6 /* GoogleToolboxForMac.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleToolboxForMac.debug.xcconfig; sourceTree = ""; }; E70E6535CCAFEBE1D14A0AD957C96944 /* NDS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NDS.h; sourceTree = ""; }; E728CC551211CEABCE163AE6952A1A3A /* NstIoPort.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstIoPort.hpp; sourceTree = ""; }; - E7294A191F7AC7765349928B17D20EAE /* GTLRDriveQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDriveQuery.h; path = Source/GeneratedServices/Drive/GTLRDriveQuery.h; sourceTree = ""; }; E742500B66D2813CE6D679FAD962D201 /* NstBoardSachenStreetHeroes.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenStreetHeroes.hpp; sourceTree = ""; }; - E74A96020ABE2A48563D951985291B19 /* fts3_tokenizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fts3_tokenizer.h; path = Sources/SQLiteObjc/fts3_tokenizer.h; sourceTree = ""; }; E77413BFE1A2AE06387C6606EE592F6E /* NstBoardWaixing.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixing.hpp; sourceTree = ""; }; E781B127C2986BE78DF6602C9428DB43 /* SoftwareRender.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SoftwareRender.h; sourceTree = ""; }; + E78B2F076ACDDF03296C6D7787187FA3 /* OIDAuthorizationRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDAuthorizationRequest.h; path = Source/AppAuthCore/OIDAuthorizationRequest.h; sourceTree = ""; }; E7EAE72B3B5A196AA54181C497248EA6 /* ftstroke.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftstroke.h; sourceTree = ""; }; E7ECFD32AAF9078687765A036E146484 /* dummy_rsp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dummy_rsp.h; sourceTree = ""; }; E802C519C7B2F9B2404F100E87160EC0 /* View.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = View.hpp; sourceTree = ""; }; @@ -3952,8 +4123,12 @@ E836DDED41F116702DDB6431F2E606F4 /* opengl_CachedFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_CachedFunctions.h; sourceTree = ""; }; E83F0187AB03EB91B5855B0437FE7E09 /* NstVideoFilterNtsc.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoFilterNtsc.hpp; sourceTree = ""; }; E8B48771183C2D183E6BC362B2D1A788 /* NstBoardKonami.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonami.hpp; sourceTree = ""; }; + E8DAD16B1850E65C9CA038B3A3E65519 /* SMCalloutView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SMCalloutView.h; sourceTree = ""; }; + E8EB251114467D02FC567209AE2B575B /* GTLRUploadParameters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRUploadParameters.h; path = Source/Objects/GTLRUploadParameters.h; sourceTree = ""; }; E91F8931F17AEC8AEFB6296B63AA2C09 /* Combiner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Combiner.h; sourceTree = ""; }; E92C74541335DAF4E282B176B241F5C0 /* DepthBufferRender.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DepthBufferRender.cpp; sourceTree = ""; }; + E93ECC28803C1AAA46C727EEC0426CDC /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/UIImage+GIF.m"; sourceTree = ""; }; + E965344846F77B89894EE46FE75B2823 /* TeamPolicies.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamPolicies.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamPolicies.swift; sourceTree = ""; }; E9846E34A2F44F4023E9EB29943A3F16 /* xxhash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = xxhash.h; sourceTree = ""; }; E989AAD5B5176E39AEACF997E83D5120 /* Input.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Input.swift; sourceTree = ""; }; E9DBB5B63025C19E83C9451107DE56A1 /* ExternalGameControllerManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExternalGameControllerManager.swift; sourceTree = ""; }; @@ -3965,6 +4140,7 @@ EA54E632D567E615B08CD945946BA30C /* DeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DeltaCore.debug.xcconfig; sourceTree = ""; }; EA9C6CC515F168E4D012A4DF11AA2ED6 /* assemble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assemble.h; sourceTree = ""; }; EAACD8B3176E4E306106E019BACCC04C /* memory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; + EAB1D6A53015FCCF416370C8C413C827 /* OIDExternalUserAgentIOSCustomBrowser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDExternalUserAgentIOSCustomBrowser.h; path = Source/AppAuth/iOS/OIDExternalUserAgentIOSCustomBrowser.h; sourceTree = ""; }; EAB58487403CD763EA77B6E5686C1C1C /* Pods-Delta.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Delta.release.xcconfig"; sourceTree = ""; }; EABD40FB697D4F0BE526F3F31A5F7DE4 /* font.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = ""; }; EAE62E0A0B61F051910B38B004280A0D /* TxTexCache.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxTexCache.cpp; sourceTree = ""; }; @@ -3973,48 +4149,46 @@ EB4B7F1BEE1FDDC88B83535430E04E40 /* NstBoardBmc800in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc800in1.hpp; sourceTree = ""; }; EB560C20640D92EC09B23CC9EB468044 /* Config.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Config.cpp; sourceTree = ""; }; EBA199A50EE869E685DF78433F29C2A3 /* list.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = list.h; sourceTree = ""; }; + EBA697660E1BC4D0A27EE3649B361437 /* OIDError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDError.m; path = Source/AppAuthCore/OIDError.m; sourceTree = ""; }; EBB27E55F8C770C262902824CCDFBB55 /* ColorBufferReader.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ColorBufferReader.cpp; sourceTree = ""; }; EBB9F0A1BC69481A113A4FD4A1971F08 /* NSError+LocalizedFailureDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSError+LocalizedFailureDescription.swift"; sourceTree = ""; }; EBCB2D018FCD273A488F1FDD51D5AF46 /* xxh3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = xxh3.h; sourceTree = ""; }; EBE7E15F3ABAA53BA70833404896A6CC /* RecordRepresentation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RecordRepresentation.swift; sourceTree = ""; }; EBF2B463BB1DE7D9642507CD8AD0B459 /* Pods-DeltaPreviews-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-DeltaPreviews-umbrella.h"; sourceTree = ""; }; EC14010F5B81F5784EA4C38384B0A468 /* VideoRendering.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VideoRendering.swift; sourceTree = ""; }; - EC547021A6C25CAC75D4CBEA991AF3F2 /* FileProperties.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileProperties.swift; path = Source/SwiftyDropbox/Shared/Generated/FileProperties.swift; sourceTree = ""; }; + EC145F5A4BCF18A8EBAA697F5C1619FF /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/SDImageCache.m; sourceTree = ""; }; EC5C9682B97F1D9C7E273FC89260E663 /* MMU_timing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MMU_timing.h; sourceTree = ""; }; - EC7D812FBDF10DDBF8A0A3527249F79F /* GTMGatherInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMGatherInputStream.m; path = Source/GTMGatherInputStream.m; sourceTree = ""; }; EC827F858A5C671004CB3FE3F0985371 /* stream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = stream.h; sourceTree = ""; }; ECBD2A6867A0D5DE628227BE67476E66 /* mupen64plus.ini */ = {isa = PBXFileReference; includeInIndex = 1; path = mupen64plus.ini; sourceTree = ""; }; ECD0868BC2D1CFC2A22DDD56F79CF4B1 /* MelonDSDeltaCore-melonDS */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "MelonDSDeltaCore-melonDS"; path = melonDS.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; ECF20AE8048AC20A7049C71B4A3D6497 /* RSTCollectionViewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCollectionViewCell.h; path = Roxas/RSTCollectionViewCell.h; sourceTree = ""; }; ED0CBD9B20218EC2D349D65021B84D32 /* GBASoundDriver.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = GBASoundDriver.mm; sourceTree = ""; }; - ED28BE1D7327BA6ABFA7B757E13A6EBB /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/SDWebImageCompat.h; sourceTree = ""; }; ED3CE2613C7B1382B9B1C109534C8677 /* NstBoardFukutake.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardFukutake.hpp; sourceTree = ""; }; + ED6757A3344CDA521DE024969FF490FD /* OIDClientMetadataParameters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDClientMetadataParameters.h; path = Source/AppAuthCore/OIDClientMetadataParameters.h; sourceTree = ""; }; ED799C5F26128518BF54B30517200ACA /* zconf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; - ED98D3CDD8B67DE813123392E2953CE8 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/UIButton+WebCache.h"; sourceTree = ""; }; EDB7131D9526D80A2F58C61485D8C02A /* ButtonsInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ButtonsInputView.swift; sourceTree = ""; }; EDDC3FD29F1B676D79882A4136C33A00 /* ppu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ppu.h; sourceTree = ""; }; EDE87FB7E7AD74383E166733793C5ABB /* NstBoardQj.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardQj.hpp; sourceTree = ""; }; EDF01A13CD65D9D294C488D4EE221B68 /* transfer_ptr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = transfer_ptr.h; sourceTree = ""; }; EDFBDB2F7EF79A11AE780E973156FEFA /* bitmap_font.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = bitmap_font.h; sourceTree = ""; }; + EE0AC971380D9474A4A588F1C961933F /* OIDErrorUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDErrorUtilities.h; path = Source/AppAuthCore/OIDErrorUtilities.h; sourceTree = ""; }; EE40A9BE79EFF9E3924C2691A2238819 /* cheatSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cheatSystem.h; sourceTree = ""; }; EE4301FF38FE13F692BC921B12B3CA1F /* RSP_LoadMatrix.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RSP_LoadMatrix.cpp; sourceTree = ""; }; EE6B8B6BB5B3CB1A6DFCE8AE31681400 /* ttnameid.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ttnameid.h; sourceTree = ""; }; + EEA4493E0BDCF56D183CFC94CFF936ED /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; EEEB95030AF7A9764E692CE0A4780722 /* GBA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBA.h; sourceTree = ""; }; - EF1AA4BB7C7EA9D745AEBF944DC944BA /* FileRequests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileRequests.swift; path = Source/SwiftyDropbox/Shared/Generated/FileRequests.swift; sourceTree = ""; }; - EF3D819417FD851E3EA790DF036DBEA4 /* GTMMIMEDocument.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMMIMEDocument.m; path = Source/GTMMIMEDocument.m; sourceTree = ""; }; EF55878BD6EF8EBB692CE3CC29230405 /* xxhash.c */ = {isa = PBXFileReference; includeInIndex = 1; path = xxhash.c; sourceTree = ""; }; EF93377C240378AF46C36F1D6AE7E241 /* pngrutil.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngrutil.c; sourceTree = ""; }; EF9E2339887B291A4CFE77E816D1073D /* DSi_AES.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_AES.cpp; sourceTree = ""; }; EF9E80B0792C03D2FC92D8D7ECE71609 /* TextureFilterHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilterHandler.h; sourceTree = ""; }; EFBC50FFC6DBAB7B8B9ACFB47805BC1A /* Savestate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Savestate.h; sourceTree = ""; }; - EFBE30994381264F2445BF70BEE39EE2 /* GTMSessionFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcher.m; path = Source/GTMSessionFetcher.m; sourceTree = ""; }; EFD0663BDAD1BCA02D985CB4C0E1E5C9 /* GBADeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GBADeltaCore-umbrella.h"; sourceTree = ""; }; EFDF8CA72851849A3EAC5C149F1FEAA2 /* DSEmulatorBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = DSEmulatorBridge.mm; sourceTree = ""; }; EFE9AD0A436AB85BE7C58B68F8C17A81 /* NstBoardBxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBxRom.hpp; sourceTree = ""; }; EFEF5F407D75B1E87004DA92A797689A /* NstBoardBmc35in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc35in1.hpp; sourceTree = ""; }; + F00642839001DD7DBFABB3D51FC7FB20 /* OIDTokenUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OIDTokenUtilities.h; path = Source/AppAuthCore/OIDTokenUtilities.h; sourceTree = ""; }; F00BE8221079BB41E4694113AC54BAC3 /* AlResource.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = AlResource.hpp; sourceTree = ""; }; F010196232EFA8E4F49527401314BF07 /* hle_external.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = hle_external.h; sourceTree = ""; }; - F01FE1957D23109377788923DE2AC6B5 /* Crashlytics.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Crashlytics.release.xcconfig; sourceTree = ""; }; F029B93521DA11F6487DF9C66DBA2A8E /* ARMJIT.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMJIT.h; sourceTree = ""; }; F02C3EAB797B0480C4F0D7E178CC92FD /* NstBoardNamcot163.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNamcot163.hpp; sourceTree = ""; }; F030D5A2ACDFE755FF9CE1388B16AEB0 /* NstBoardHenggedianzi.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardHenggedianzi.hpp; sourceTree = ""; }; @@ -4029,51 +4203,51 @@ F0CB881EF470C5FD6485DB624B9A2E56 /* RenderTexture.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = RenderTexture.hpp; sourceTree = ""; }; F0CF6600305F4644F8DEA0EC7ACC3262 /* AutoBuild.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AutoBuild.h; sourceTree = ""; }; F0F5FCF1BD44945529F548266DD7E662 /* Flash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Flash.h; sourceTree = ""; }; + F0FC43099FEA0FC37F27A10E7B222D98 /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = iOS/Fabric.framework; sourceTree = ""; }; F14B536FAB82EC772F32590FFFD47BE3 /* svtteng.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svtteng.h; sourceTree = ""; }; - F1B7B38160FBB40F6A58CE9397B82088 /* SQLiteObjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SQLiteObjc.h; path = Sources/SQLiteObjc/include/SQLiteObjc.h; sourceTree = ""; }; + F1836C099035D590318910C3DE119171 /* GTLRBatchQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBatchQuery.m; path = Source/Objects/GTLRBatchQuery.m; sourceTree = ""; }; + F197E1DBAE31B57378B6141D9179204A /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/SDWebImagePrefetcher.m; sourceTree = ""; }; + F1B18D6742D05639138DD820DF9F2993 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; F1BA6A083756E08AB6B08120AC5A64BF /* ARMInterpreter_ALU.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMInterpreter_ALU.h; sourceTree = ""; }; - F1D0E74F872B2D64D94DDEE42849F609 /* GTLRObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRObject.h; path = Source/Objects/GTLRObject.h; sourceTree = ""; }; F1F24B674E056CE5A32339DEEBC8A533 /* UIAlertAction+Actions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIAlertAction+Actions.h"; path = "Roxas/UIAlertAction+Actions.h"; sourceTree = ""; }; F1F308219B60066743A63F15A7474009 /* F3DGOLDEN.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DGOLDEN.h; sourceTree = ""; }; F1F469997C999D3731F8539D750D3344 /* UICollectionViewCell+Nibs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewCell+Nibs.h"; path = "Roxas/UICollectionViewCell+Nibs.h"; sourceTree = ""; }; F1F89E144998D06FB16B9DB7CF541BFE /* NstBoardUxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUxRom.hpp; sourceTree = ""; }; F200008BAD2C8D2B9909C34A25F2F23F /* wglext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = wglext.h; sourceTree = ""; }; + F21998B0614EFDB2ED853CACB6A01A38 /* CustomRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomRoutes.swift; path = Source/SwiftyDropbox/Shared/Handwritten/CustomRoutes.swift; sourceTree = ""; }; F22B9A20D8FCAE9E7B8FB6467F30054B /* OGLRender.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = OGLRender.h; sourceTree = ""; }; F22EA886730CA92F877F0D9EDA765E5B /* TextureFilters_hq2x.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilters_hq2x.h; sourceTree = ""; }; F239B99EA0A6E7C6AC61889145C3B02E /* DisplayWindow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DisplayWindow.h; sourceTree = ""; }; F24A762E5126F2A1E976EFE91A9179BB /* NstBoardSuperGameBoogerman.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSuperGameBoogerman.hpp; sourceTree = ""; }; F25116F1E4A1156B547162477D7FFCA4 /* SocketSelector.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SocketSelector.hpp; sourceTree = ""; }; F260A072AFC19EC79DBD867F12737C22 /* GraphicsDrawer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GraphicsDrawer.h; sourceTree = ""; }; - F277C96C222F36E6CCE96F066C0292B9 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/SQLite/Core/Errors.swift; sourceTree = ""; }; F2A86914FF9C66F460C255FE9FABBEC8 /* F3DBETA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DBETA.h; sourceTree = ""; }; F2BC1BB2CD8363FA4B5CEFCA4F3FD2AC /* assem_arm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assem_arm.h; sourceTree = ""; }; F2D1F1B916E9A431C5DD1E62263228AB /* DSi_I2C.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_I2C.cpp; sourceTree = ""; }; F2DBDBAF395A737341BD91FFA0B89C1B /* GBCDeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GBCDeltaCore.modulemap; sourceTree = ""; }; - F30E0BB406275FD00829195C22A80D4F /* ZIPFoundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-prefix.pch"; sourceTree = ""; }; - F34749A9A557A7ADE2676021CDBAC6DC /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; + F32189B7EB10C9C7FA2DBEC132A8B9DF /* AppAuth.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AppAuth.debug.xcconfig; sourceTree = ""; }; F34A12CDD8A9F7DF59CB6C9DF28C8C37 /* NSPredicate+Search.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSPredicate+Search.m"; path = "Roxas/NSPredicate+Search.m"; sourceTree = ""; }; F34B201A855CF314CE053AFABCE41DA5 /* DropboxService+Files.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DropboxService+Files.swift"; path = "Backends/Dropbox/Harmony-Dropbox/DropboxService+Files.swift"; sourceTree = ""; }; F3621D7BD773326AE63CB675C90BA4CB /* hle.c */ = {isa = PBXFileReference; includeInIndex = 1; path = hle.c; sourceTree = ""; }; F36CCDA948DEABD79BA79A4B43EFF378 /* sdd1emu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sdd1emu.h; sourceTree = ""; }; F393147DF602B1AF7C00B67655D80C30 /* RSTFetchedResultsDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTFetchedResultsDataSource.h; path = Roxas/RSTFetchedResultsDataSource.h; sourceTree = ""; }; - F39D6AD262133DC7EC88CCFC7215A97F /* Setter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Setter.swift; path = Sources/SQLite/Typed/Setter.swift; sourceTree = ""; }; F3A21D810CF81C7E8CB80F57ABB8F60E /* NstInpFamilyKeyboard.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpFamilyKeyboard.hpp; sourceTree = ""; }; F3BBF912EAEDADF1676BFC69C3F2E5A6 /* ARCodeFile.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARCodeFile.cpp; sourceTree = ""; }; - F3F1E51AE6F5BE0ACA847F1A9ACE7311 /* CustomTasks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomTasks.swift; path = Source/SwiftyDropbox/Shared/Handwritten/CustomTasks.swift; sourceTree = ""; }; - F41D052495AB2789D36A7796B17EADD4 /* GoogleSignIn.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleSignIn.debug.xcconfig; sourceTree = ""; }; + F3EBDD99965D94C61967C9A45BE4D693 /* GoogleSignIn.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = GoogleSignIn.bundle; path = Resources/GoogleSignIn.bundle; sourceTree = ""; }; F4A46C0ABE96F3E6D87318355F32F3A7 /* N64DeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = N64DeltaCore.release.xcconfig; sourceTree = ""; }; F4B64FD6EF5659CFF43AADEC0A864AAB /* DepthBuffer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DepthBuffer.cpp; sourceTree = ""; }; F4C91AF33EEDB415FB575836D7AC8594 /* osal_dynamiclib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = osal_dynamiclib.h; sourceTree = ""; }; F4DA211A37EA56254CA25182C7D9A096 /* mc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = mc.h; sourceTree = ""; }; F51D215880D60371E6A41FF1BD154146 /* DSi_SD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_SD.h; sourceTree = ""; }; F542D708E96E4F25592495378286E4B1 /* NstBoardBtl2708.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtl2708.hpp; sourceTree = ""; }; + F5457E37E216501C206E67EB911707FF /* FilesRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FilesRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/FilesRoutes.swift; sourceTree = ""; }; F573CAE866F8FF2E90FF19FA9E51FF5E /* gbint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gbint.h; sourceTree = ""; }; F58B6A269CCE0D6DC10601E490E20B54 /* PostProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PostProcessor.h; sourceTree = ""; }; F597EF6F3EFC780B48CBD503A27748B9 /* Vector2.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = Vector2.inl; sourceTree = ""; }; F5B730FDD71B3F180AF4FF2879E85E0B /* PluginAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PluginAPI.h; sourceTree = ""; }; F5D6D408C7399EE158034BDE3D97FC45 /* Pods-DeltaPreviews.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-DeltaPreviews.modulemap"; sourceTree = ""; }; F5DBEFEA68B991BD01BA0CF549877402 /* NstBoardBmcCtc65.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcCtc65.hpp; sourceTree = ""; }; - F5EA96C879945AA782B43E8FA302CAF0 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/UIImage+GIF.m"; sourceTree = ""; }; + F5F0BEF8DBC67E0EE87E2BED4D850E3D /* SMCalloutView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SMCalloutView.modulemap; sourceTree = ""; }; F5FA45A44C42CC2CA3A324A3E914CE19 /* SQLite.swift */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = SQLite.swift; path = libSQLite.swift.a; sourceTree = BUILT_PRODUCTS_DIR; }; F61DE044858B67B90D6336505827DB42 /* Textures.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Textures.h; sourceTree = ""; }; F61EAC2ED0D1C52D33AAF703B7E82775 /* NstImageDatabase.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstImageDatabase.hpp; sourceTree = ""; }; @@ -4081,26 +4255,24 @@ F6781A3FC78A881B992A00C57EB61870 /* NstBoardKaiser.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKaiser.hpp; sourceTree = ""; }; F67867503E6E85C4D3C329D0E290FBF3 /* audio.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = audio.h; sourceTree = ""; }; F6858F4103F0DF99FCE59053702ABD4E /* Export.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Export.hpp; sourceTree = ""; }; + F6A7AA0925B99ECAD9E67DBBB97BB56D /* GoogleAPIClientForREST-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleAPIClientForREST-prefix.pch"; sourceTree = ""; }; F6AA5371A44AF005FBDC5DB2248CC9F5 /* SNESDeltaCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SNESDeltaCore-prefix.pch"; sourceTree = ""; }; F6AAFDEFA9F71F3C57731EBF4AB8D32C /* NstBoardAcclaim.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAcclaim.hpp; sourceTree = ""; }; F6B1B4FEAA61105F3C2B48ED15FC84B0 /* GBAGfx.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBAGfx.h; sourceTree = ""; }; + F6C8649B0ED17391598516AD2135217E /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; F6D84236572002E70039D1EC204C0C7F /* F3DGOLDEN.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DGOLDEN.cpp; sourceTree = ""; }; F6DACF017EE0B6F06593A30F95A0581E /* ftimage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftimage.h; sourceTree = ""; }; F759FC53A0E1756CFF56DDAA2D49FB52 /* m64p_frontend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_frontend.h; sourceTree = ""; }; F770AA950DAA7D1F67AE5C73D3E4F89B /* F3DEX2ACCLAIM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DEX2ACCLAIM.h; sourceTree = ""; }; - F780080F088472D2EA3AD73F9AC6B238 /* DropboxClientsManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxClientsManager.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxClientsManager.swift; sourceTree = ""; }; F79B969084D7427ED26DC4A0D24EA680 /* Font.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Font.hpp; sourceTree = ""; }; F79CE73A998802EAA5371175285AFAE2 /* glsl_FXAA.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_FXAA.cpp; sourceTree = ""; }; F79F60360C7C09A357E9D03EA22E0DF5 /* SNESEmulatorBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SNESEmulatorBridge.h; sourceTree = ""; }; F7B19926ABCEF3C3A145040DC531097E /* ControllerSkin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControllerSkin.swift; sourceTree = ""; }; F7C68DCFBAE339F49EA2AD9DBF3E7B0D /* ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist"; sourceTree = ""; }; F8248C4C4BB7F1AF387613BBB9BAB20A /* NstApiVideo.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiVideo.hpp; sourceTree = ""; }; - F8694E99071ADE337EEEA41E7C2CFD82 /* GTLRService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRService.h; path = Source/Objects/GTLRService.h; sourceTree = ""; }; F8B187821DFE47A48AFFE8B8496B8C46 /* UISpringTimingParameters+Conveniences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UISpringTimingParameters+Conveniences.m"; path = "Roxas/UISpringTimingParameters+Conveniences.m"; sourceTree = ""; }; F8D5906CA330B4B62AECE7C268055484 /* NstBoardBandaiKaraokeStudio.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandaiKaraokeStudio.hpp; sourceTree = ""; }; - F8E8726464D823B37E1B6D05F7E27255 /* TeamCommon.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamCommon.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamCommon.swift; sourceTree = ""; }; F93477FBF1E4488E506F9BB79AF57D38 /* DeltaCore */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = DeltaCore; path = libDeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; - F94637A21D42A1D3D7F8F0AF2786C782 /* GTLRUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRUtilities.m; path = Source/Utilities/GTLRUtilities.m; sourceTree = ""; }; F97D6695C3982D8DC4829D7E999A38BD /* NstBoardSachenS8259.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenS8259.hpp; sourceTree = ""; }; F9D1DD6FEAB8A8054D0D87545594975D /* DSDeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DSDeltaCore.modulemap; sourceTree = ""; }; FA1D9AA72B3CADFD9096721DB32617A0 /* NstApu.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApu.hpp; sourceTree = ""; }; @@ -4113,25 +4285,24 @@ FAD67D1F51514F2A8FD14EE1A3BDB20B /* L3DEX2.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = L3DEX2.cpp; sourceTree = ""; }; FAD7141BA485A3C8951827182B0B1B18 /* retro_assert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; FAEBE5A9F378271ED1B66BA1076847DB /* RSTArrayDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTArrayDataSource.h; path = Roxas/RSTArrayDataSource.h; sourceTree = ""; }; - FB23491CA81D5C2441595CFDB66E8D32 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; FB4B8785E16046201D6AA7809ADAA7C8 /* FinishDownloadingRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FinishDownloadingRecordsOperation.swift; sourceTree = ""; }; FB79D49FEEADDF6A31447B8F3392099B /* ringbuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ringbuffer.h; sourceTree = ""; }; FB7E0D0416AD09FA405E0355EA089AD8 /* EmulatorBridging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EmulatorBridging.swift; sourceTree = ""; }; + FB92A78D28CD36043ADBA69E72E19E42 /* ZIPFoundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-prefix.pch"; sourceTree = ""; }; FC0D51663CB6A3226938C00A18899F53 /* NstState.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstState.hpp; sourceTree = ""; }; - FC5CD66C23C8B15B020AD1A0E066DE14 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/UIImageView+WebCache.h"; sourceTree = ""; }; FC9842FA1CA47EEB5F912C337B2EB0C7 /* assemble_struct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assemble_struct.h; sourceTree = ""; }; - FCA3A4E5B21B603E44C4DA3AB87595F8 /* GTLRUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRUtilities.h; path = Source/Utilities/GTLRUtilities.h; sourceTree = ""; }; FCABA048366D8089542A06BA620CDBB9 /* TexrectDrawer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TexrectDrawer.h; sourceTree = ""; }; FD2F697B1A15BE95A6A49DE449DC9880 /* GBCDeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GBCDeltaCore.release.xcconfig; sourceTree = ""; }; FD34A13CC25429000B2C00EA6D1109C1 /* OGLRender_3_2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = OGLRender_3_2.h; sourceTree = ""; }; FD3FE35BB5ADC5C277235F5BC08B9FF5 /* NstBoardTxcTw.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTxcTw.hpp; sourceTree = ""; }; + FD4B129300E3ABC3B0263D68E517A823 /* Fabric.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Fabric.release.xcconfig; sourceTree = ""; }; FD4C92660B79698510464254D3D020F9 /* NstBoardSxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSxRom.hpp; sourceTree = ""; }; FD519882861480B93B563B477CE1FA29 /* GoogleAPIClientForREST */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = GoogleAPIClientForREST; path = libGoogleAPIClientForREST.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FD8090C2C4D6677D98DF61168FD3C8FF /* Archive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Archive.swift; path = Sources/ZIPFoundation/Archive.swift; sourceTree = ""; }; FDE03E8868705921E4D7F341382087D9 /* NLS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NLS.h; sourceTree = ""; }; - FE37500E60282A9A4012827461E8C2AC /* RTree.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RTree.swift; path = Sources/SQLite/Extensions/RTree.swift; sourceTree = ""; }; FE9FC99EFA7CFDE7A20553D6A647FCE9 /* 65c816.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = 65c816.h; sourceTree = ""; }; - FEAA22126ACDA08EE9AC0FA9A9B6EC05 /* Custom.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Custom.swift; path = Source/SwiftyDropbox/Shared/Handwritten/Custom.swift; sourceTree = ""; }; FEB3E528887CEC276D84AFFF62FAEB00 /* GBCDeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = GBCDeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + FF22AFB4BDFC6DC8E55CF0D73F4177BD /* OIDExternalUserAgentIOSCustomBrowser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OIDExternalUserAgentIOSCustomBrowser.m; path = Source/AppAuth/iOS/OIDExternalUserAgentIOSCustomBrowser.m; sourceTree = ""; }; FF2385D45D7C84B6A81962AE50751035 /* ringbuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ringbuffer.h; sourceTree = ""; }; FF3E301DAF4760FB806BA003BBB073FF /* NstZlib.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstZlib.hpp; sourceTree = ""; }; FF4577CBAA8E38968A59CE8320B395FC /* NstBoardBtlShuiGuanPipe.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlShuiGuanPipe.hpp; sourceTree = ""; }; @@ -4156,7 +4327,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 210EA27381AAAC85C997626875A95E52 /* Frameworks */ = { + 16182241408C0E7B850FE93BB1B8DEE6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1C7B61E7D9CC1AA26E25A5C56362CA14 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 204B31357C52413610E09829733BE80E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -4177,14 +4362,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 2CB1A2640C93979BD4F7B2C7308D4CE3 /* Frameworks */ = { + 33B14229D7BCB0F453CC3E0D1FEF83D2 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 357413F987F8E80ADD668D43E93E564F /* Frameworks */ = { + 348604DF1EDBF852AA5003225119A438 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3EBF19B0654575222A5CD8E9DD86E294 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -4198,21 +4390,35 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 4819BB67A9E465ADAEAD054C96F9FBF8 /* Frameworks */ = { + 507CBE0ECE206C4E1EC0B93345FB0EB3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 51BDF4D0DD1B4032389879AA789E5F67 /* Frameworks */ = { + 51CE2E369CDC8423AAD8F781836EDCF5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 52D0FA85C9BC2D7DF1F71A809586A4DB /* Frameworks */ = { + 52CC584F33DF1D6189E15DEF7A058213 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58A92C878B9D3DCFB125410BA38BADB0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 60C8C597948FA10F4D8A847C0519E711 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -4240,27 +4446,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8B3FA8A2DE1BF8CFF4C87AE643053BDD /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 90579C7237FDE073EA9A104552E21A4D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9561537B3E7428F8F980599BA0D08823 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 97138C7B8B0355C2D268F4DDF87178C0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -4268,14 +4453,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9C9138727C7CB7EDCF8E7DB9A1E7E9A5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A44F41E5598ABEE7EC448498AEA05FA3 /* Frameworks */ = { + A55A4267A04FED87945C3128391E1CF0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -4289,13 +4467,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - ADDEAF6C36A023DAFAECF90F3A50F1F3 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B570BBD934949D715E711683228091C8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -4303,7 +4474,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - DE11EF2192EC02CC335CFF90A59E4F5C /* Frameworks */ = { + B6AF485A92AF52D66CC240C91F6985B2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C51EF155313EA6F0A39EB53611EB892C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C8C6807AF36953E87266B828DB533FDE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -4317,14 +4502,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - EDAC7BC89179F40F93BD19D36314144C /* Frameworks */ = { + E9A52EBBA45867772D7A97CE0141C5CF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - F55A22D25DDC18689E9F94CEB8737ADA /* Frameworks */ = { + EDAC7BC89179F40F93BD19D36314144C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -4338,31 +4523,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - F9C135444B8F6D6706847FEB55B83326 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 009F0CC285F6BA78E9A92285E866A377 /* Crashlytics */ = { + 025DB7C886BCC8A80A8C60661FA0E92E /* Fabric */ = { isa = PBXGroup; children = ( - 50AB12044ABB6573A85B1B594DFD3566 /* ANSCompatibility.h */, - C526F8C0BC1F7A1BE3449A79197ECC22 /* Answers.h */, - 2C9B018595CD9C8401E17A0CED6F461B /* CLSAttributes.h */, - A96F1AF6EE27AE150CDEB7A987B02DAE /* CLSLogging.h */, - 478FF66EA47351596632AC605ADC8D1D /* CLSReport.h */, - 13E613695F9989137A9FF581460F493C /* CLSStackFrame.h */, - 63596961E529E55CE62A0623E1E98848 /* Crashlytics.h */, - DAB3A620E6753672E6B5D0FDD42AD39A /* Frameworks */, - 4D92D1A8EF32BA646425361261FC2014 /* Support Files */, + 147380551203FA839FB1F446BC985FA2 /* FABAttributes.h */, + 74F05A6C37749284B183DB2143487616 /* Fabric.h */, + 6BD3FAC5AC1AE1F8712F418863E11E16 /* Frameworks */, + 90158BB275FB1B9365995C44EA96BDE6 /* Support Files */, ); - name = Crashlytics; - path = Crashlytics; + name = Fabric; + path = Fabric; sourceTree = ""; }; 02ABCDDCC7BA2EB13C7C1C7F935ECD9B /* x64 */ = { @@ -4386,40 +4559,24 @@ path = apu; sourceTree = ""; }; - 04CF5B4661B2C9B83AAB13F34DA4F5F8 /* Products */ = { + 033A89078BADFBA7DF04DCBE56DAAA5B /* Pods */ = { isa = PBXGroup; children = ( - 5D797E9A5C5782CE845840781FA1CC81 /* Alamofire */, - F93477FBF1E4488E506F9BB79AF57D38 /* DeltaCore */, - 54ECA01A22C32DC89AB39DF9BFFD5FB6 /* DeltaCore-DeltaCore */, - 8DF503EB5BF2CD824792BFD2BBC0992F /* DSDeltaCore */, - 4A6CEB53419EF6042E06B56676D1DAF8 /* DSDeltaCore-DSDeltaCore */, - 85A4BD81985AEDB6D9BA5E50804225D0 /* GBADeltaCore */, - 30131336E11D11700AC99D314BDC275C /* GBADeltaCore-GBADeltaCore */, - D4C010E8572FAE8B51DFDBF2300ECF30 /* GBCDeltaCore */, - 1F23DBC67505E77BE77552D6D84A3DAA /* GBCDeltaCore-GBCDeltaCore */, - FD519882861480B93B563B477CE1FA29 /* GoogleAPIClientForREST */, - 251C6319AD50CB50F18D50CBF727F8B2 /* GoogleToolboxForMac */, - C1998E0D8085221AD87F89B614C10E52 /* GTMSessionFetcher */, - DBC0113CF73BE24525E670D024A85BE7 /* Harmony */, - 4C22C82316853ABB688358B93486CF8E /* MelonDSDeltaCore */, - ECD0868BC2D1CFC2A22DDD56F79CF4B1 /* MelonDSDeltaCore-melonDS */, - C8D6AC695498645EEE4A66FCEF97D848 /* N64DeltaCore */, - 9816EFF6A2268AAEA7B1C19BBE416477 /* N64DeltaCore-Mupen64Plus */, - 1E5356E04E92615CFF0666E5987CE594 /* NESDeltaCore */, - 487C7DB0A7257F16983BEF8324BEF561 /* NESDeltaCore-NESDeltaCore */, - 9CA80A61ABF26FA89F4E22A30284B0DD /* Pods-Delta */, - DA2A0DBE0F65EA7F137BF7F1EA703E73 /* Pods-DeltaPreviews */, - 4405793D5AF1EFD9D2BDA30AA0D2E514 /* Roxas */, - B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */, - 53A730F4F4248E7E3F38F8409A2DE97C /* SMCalloutView */, - FA400832D3E46B39D5EC83D09A7572FC /* SNESDeltaCore */, - 7D751206A951D9727B38F71A2BB990AA /* SNESDeltaCore-SNESDeltaCore */, - F5FA45A44C42CC2CA3A324A3E914CE19 /* SQLite.swift */, - 1CBA76EDD27FA2D20B1EA0F0BF7F082C /* SwiftyDropbox */, - 48A4A6EDC08C8AC933D0DCD507E9D173 /* ZIPFoundation */, + 9CFAB8DC2D1BCE05FE67CBA5101A75E3 /* Alamofire */, + 0B276CD318DBC09F6328E2C79E25E84D /* AppAuth */, + A4B5E5005DB9E901F7A83C3F0BF8BF88 /* Crashlytics */, + 025DB7C886BCC8A80A8C60661FA0E92E /* Fabric */, + 729A49BB34B1CBEE74885AE1D3084325 /* GoogleAPIClientForREST */, + A03F1C9C7EA322F62414C4BDCE01F1F5 /* GoogleSignIn */, + E4B121E01CBB2A8D87C99E045286A7D2 /* GTMAppAuth */, + DEAFA0B40B3B07BEB99FA93D78AD3F65 /* GTMSessionFetcher */, + 255A65AF3EF698947DD562F2BB45CA10 /* SDWebImage */, + E76DA24394F285F1FF3AA32D642A288C /* SMCalloutView */, + C328B2140274DE0186F5AE1EEF77D569 /* SQLite.swift */, + 19FDD06D84D144DE8C44701ED543C54A /* SwiftyDropbox */, + BFE8B19143A36001219A7C717789BAF2 /* ZIPFoundation */, ); - name = Products; + name = Pods; sourceTree = ""; }; 05A41666D55BC6C698B7E30ECEF85512 /* uCodes */ = { @@ -4492,6 +4649,19 @@ path = minizip; sourceTree = ""; }; + 06A88667BEBA7636D943984D0E7C025E /* Full */ = { + isa = PBXGroup; + children = ( + 65CB42CA8D5984A85D114FE0E4DA0D4D /* GTMGatherInputStream.h */, + E4E761B4100120EFEE3E77F6B031F1CA /* GTMGatherInputStream.m */, + C245F10CFA17E68D0F217A475089F44E /* GTMMIMEDocument.h */, + 644438FF1363ED7F30AA44B6F1D3D4F9 /* GTMMIMEDocument.m */, + 59C44C67A8DEA91172EE5DA16AF31EC4 /* GTMReadMonitorInputStream.h */, + 6771B4449FA8648EEC6B83E8196F57DF /* GTMReadMonitorInputStream.m */, + ); + name = Full; + sourceTree = ""; + }; 0987F7F2E4E50214BC3F95D7D7381782 /* Controller Skin */ = { isa = PBXGroup; children = ( @@ -4511,18 +4681,15 @@ path = Types; sourceTree = ""; }; - 09DDB94F18DBC0FD433191CBFE31AA7E /* Support Files */ = { + 0B276CD318DBC09F6328E2C79E25E84D /* AppAuth */ = { isa = PBXGroup; children = ( - CBBEE4D27B665A1DD4EDB8A509D41C6C /* SwiftyDropbox.modulemap */, - D145AF0D8138ED303A35F31CC28531D9 /* SwiftyDropbox-dummy.m */, - 674B43A90EAC668AF859CC16F6048DC4 /* SwiftyDropbox-prefix.pch */, - 0D57E07B7CA9C82C9090FC455119B46B /* SwiftyDropbox-umbrella.h */, - 6AE80E95610AC55EF36C52FE2399360A /* SwiftyDropbox.debug.xcconfig */, - BD4FD5ECAA33E983C93BD04B1AEEDF59 /* SwiftyDropbox.release.xcconfig */, + 8B115E2C361775D37665089ECD410BC3 /* Core */, + 419F691012C6E2AB530C9EA04EBE5C03 /* ExternalUserAgent */, + 3B081803D6CE4EFC41F13E166ED530C6 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/SwiftyDropbox"; + name = AppAuth; + path = AppAuth; sourceTree = ""; }; 0B3FDC6DE141E8E93DF8E8AA139D9A94 /* Types */ = { @@ -4661,6 +4828,20 @@ path = GLideNHQ; sourceTree = ""; }; + 108FF02357FBD456984AC027EF8AD442 /* Support Files */ = { + isa = PBXGroup; + children = ( + 2A4F8E27EA2A514D08C6821D64F28148 /* Alamofire.modulemap */, + 3E018A854D17579A468D86ABE0600F93 /* Alamofire-dummy.m */, + 06ADE05CA7A29A787C2432063D18C3EB /* Alamofire-prefix.pch */, + 49EB5764D1BF3A8632E1D42CE4EAABFC /* Alamofire-umbrella.h */, + 7E457A58ED9BCC239084CD98A2A99346 /* Alamofire.debug.xcconfig */, + 6DA4650CFA3D840D5700092BAEE1BB9F /* Alamofire.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/Alamofire"; + sourceTree = ""; + }; 110C7C9A967997A878ABCCEE3AF6FE4E /* GBADeltaCore */ = { isa = PBXGroup; children = ( @@ -4682,6 +4863,20 @@ name = Pod; sourceTree = ""; }; + 1171B62368311C31ED04810C721B7804 /* Support Files */ = { + isa = PBXGroup; + children = ( + 13EE631F19BD42787C6A3844D1625C06 /* SQLite.swift.modulemap */, + 7A12F6604A0432A7726E6AA7EE190AAE /* SQLite.swift-dummy.m */, + 6889D75793FCB73A96071074FD242409 /* SQLite.swift-prefix.pch */, + A528E51933EC0D277727107F3B72167E /* SQLite.swift-umbrella.h */, + 0BAEF49A2334870E4FC91FC1EA0F4972 /* SQLite.swift.debug.xcconfig */, + 62CDF5DE6B91DC2BAAA133DC0CE14FB9 /* SQLite.swift.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SQLite.swift"; + sourceTree = ""; + }; 12105C6D85DA3C7B85BA529F34F1CD49 /* Window */ = { isa = PBXGroup; children = ( @@ -4718,38 +4913,6 @@ path = "Core Data"; sourceTree = ""; }; - 129E714EB792A0367A8ACDC297B0921A /* standard */ = { - isa = PBXGroup; - children = ( - B10B38D31A95FF99BBC00DA9C36C8D94 /* AggregateFunctions.swift */, - 586B03C24E0DFB57820EDB31B86EFDC1 /* Blob.swift */, - A5B49946963C58320761EF205659BBFE /* Coding.swift */, - 8D7F02896E229D7D3C9C8484A39D3F5A /* Collation.swift */, - 6C1E4CF0FFCC19C1AD6905DE817C17EA /* Connection.swift */, - 81FAD8256834DC35886EFCF3F5F2715E /* CoreFunctions.swift */, - 6F67C72AC639FF2FE8B8682CBADFEA91 /* CustomFunctions.swift */, - 34B9FC0547132313C6B66562D7FB6FE6 /* DateAndTimeFunctions.swift */, - F277C96C222F36E6CCE96F066C0292B9 /* Errors.swift */, - 1E2085B3FF507E08C3040D7E3D3C295B /* Expression.swift */, - 23337F04F86774C07156F65B6DF86644 /* Foundation.swift */, - E74A96020ABE2A48563D951985291B19 /* fts3_tokenizer.h */, - 2887F0AA90E8BCE5770880C29DE7A352 /* FTS4.swift */, - 19DAEF74182F401F21DF4FA82B1FD4B2 /* FTS5.swift */, - 82D1AD4741CA6ABB465A5B94AA51CEE6 /* Helpers.swift */, - CAF7DAE3D701F9616A709277BAC90365 /* Operators.swift */, - 0EC698B7882B84A8292DBB86C9F1ECA7 /* Query.swift */, - FE37500E60282A9A4012827461E8C2AC /* RTree.swift */, - 3464E71D1132BB4ECDA6EE3AD5D9C854 /* Schema.swift */, - F39D6AD262133DC7EC88CCFC7215A97F /* Setter.swift */, - 12FF6FB31C4FC8525FF9C9D35EDCABC3 /* SQLite.h */, - F1B7B38160FBB40F6A58CE9397B82088 /* SQLiteObjc.h */, - 906A51BA9CD5D535CC8438E8AE2856A1 /* SQLiteObjc.m */, - 30B4C2B542657C7F8695159F71616D5B /* Statement.swift */, - DC30E6531D1C727E6389B4A27F9674E0 /* Value.swift */, - ); - name = standard; - sourceTree = ""; - }; 141640A1C79F1058997CAC050E647C15 /* Pods-Delta */ = { isa = PBXGroup; children = ( @@ -4775,20 +4938,6 @@ path = libDeSmuME; sourceTree = ""; }; - 153056187C2919053D9759A64BD233B3 /* Support Files */ = { - isa = PBXGroup; - children = ( - B5DC276CC14F0847B9A8C006CE0B064D /* GTMSessionFetcher.modulemap */, - 2BBE4EB7361152D3172AB0C275C92415 /* GTMSessionFetcher-dummy.m */, - 57B181D60AC201D8FEBD7C8BE993EEDD /* GTMSessionFetcher-prefix.pch */, - A960DE0A973CA5A4D413E15076178C57 /* GTMSessionFetcher-umbrella.h */, - 9A994D0970557F8DBF425A2E6710A042 /* GTMSessionFetcher.debug.xcconfig */, - 7D657B72C28A6793148493FF9DEAA8A6 /* GTMSessionFetcher.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/GTMSessionFetcher"; - sourceTree = ""; - }; 160FD5BF805F010C5CB05590ED791600 /* OpenGLContext */ = { isa = PBXGroup; children = ( @@ -4888,6 +5037,43 @@ path = gba; sourceTree = ""; }; + 19AA260E663F3C8B1C18C3F1FED97C92 /* Products */ = { + isa = PBXGroup; + children = ( + 5D797E9A5C5782CE845840781FA1CC81 /* Alamofire */, + 3FD1B4C1246D643E9476438C28048FA8 /* AppAuth */, + F93477FBF1E4488E506F9BB79AF57D38 /* DeltaCore */, + 54ECA01A22C32DC89AB39DF9BFFD5FB6 /* DeltaCore-DeltaCore */, + 8DF503EB5BF2CD824792BFD2BBC0992F /* DSDeltaCore */, + 4A6CEB53419EF6042E06B56676D1DAF8 /* DSDeltaCore-DSDeltaCore */, + 85A4BD81985AEDB6D9BA5E50804225D0 /* GBADeltaCore */, + 30131336E11D11700AC99D314BDC275C /* GBADeltaCore-GBADeltaCore */, + D4C010E8572FAE8B51DFDBF2300ECF30 /* GBCDeltaCore */, + 1F23DBC67505E77BE77552D6D84A3DAA /* GBCDeltaCore-GBCDeltaCore */, + FD519882861480B93B563B477CE1FA29 /* GoogleAPIClientForREST */, + 6FD122EA0AB9AB2A8FFA5F676C795DF0 /* GTMAppAuth */, + C1998E0D8085221AD87F89B614C10E52 /* GTMSessionFetcher */, + DBC0113CF73BE24525E670D024A85BE7 /* Harmony */, + 4C22C82316853ABB688358B93486CF8E /* MelonDSDeltaCore */, + ECD0868BC2D1CFC2A22DDD56F79CF4B1 /* MelonDSDeltaCore-melonDS */, + C8D6AC695498645EEE4A66FCEF97D848 /* N64DeltaCore */, + 9816EFF6A2268AAEA7B1C19BBE416477 /* N64DeltaCore-Mupen64Plus */, + 1E5356E04E92615CFF0666E5987CE594 /* NESDeltaCore */, + 487C7DB0A7257F16983BEF8324BEF561 /* NESDeltaCore-NESDeltaCore */, + 9CA80A61ABF26FA89F4E22A30284B0DD /* Pods-Delta */, + DA2A0DBE0F65EA7F137BF7F1EA703E73 /* Pods-DeltaPreviews */, + 4405793D5AF1EFD9D2BDA30AA0D2E514 /* Roxas */, + B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */, + 53A730F4F4248E7E3F38F8409A2DE97C /* SMCalloutView */, + FA400832D3E46B39D5EC83D09A7572FC /* SNESDeltaCore */, + 7D751206A951D9727B38F71A2BB990AA /* SNESDeltaCore-SNESDeltaCore */, + F5FA45A44C42CC2CA3A324A3E914CE19 /* SQLite.swift */, + 1CBA76EDD27FA2D20B1EA0F0BF7F082C /* SwiftyDropbox */, + 48A4A6EDC08C8AC933D0DCD507E9D173 /* ZIPFoundation */, + ); + name = Products; + sourceTree = ""; + }; 19CA7325AD93B0BF984391CA61857C55 /* backends */ = { isa = PBXGroup; children = ( @@ -4910,6 +5096,60 @@ path = src; sourceTree = ""; }; + 19FDD06D84D144DE8C44701ED543C54A /* SwiftyDropbox */ = { + isa = PBXGroup; + children = ( + 251F4684C8F4F0E1A81110A7ECA9406C /* Async.swift */, + A9F908C0B56B67657D5675D61E51B242 /* Auth.swift */, + 79CC2E9716502B9D8374D5E0AB89659B /* AuthRoutes.swift */, + 345045C88C734F0A16410A696371B04A /* Base.swift */, + 773A83F92D5093E6969EB0653A60C803 /* BaseTeam.swift */, + 4C6290365B08DFAC2E9078DECC2AD9E6 /* Common.swift */, + BC5CA5B0238F3D020CCC2D1E3520C450 /* Contacts.swift */, + 980C29471E6FD37CE2CBE26F28FAFFB5 /* ContactsRoutes.swift */, + 8B0B928F4C2E085FA3D58246910F1645 /* Custom.swift */, + F21998B0614EFDB2ED853CACB6A01A38 /* CustomRoutes.swift */, + AF4E93C9AE2A0B6FCCC1B6A00F68A725 /* CustomTasks.swift */, + 94351FE079C92D1D15F1C924B9B17E49 /* DBChunkInputStream.h */, + 69DDC90963CE22D2698E75E047FA5694 /* DBChunkInputStream.m */, + 6422ED78A396BD722B4FFA6B5EEA3D7A /* DropboxClient.swift */, + 0ACF2FB28941FBF4FE5C9B8E60DFD3A9 /* DropboxClientsManager.swift */, + BBE3523E6D83A42F45B0052F6D4F6F2D /* DropboxTeamClient.swift */, + D4E7CE62FA7A699F92E7E3872EA98545 /* DropboxTransportClient.swift */, + 78F9D9A60A5D47161DEB5603E363B2C2 /* FileProperties.swift */, + 839690876534FC0D3EFEFB677A6155A9 /* FilePropertiesRoutes.swift */, + 8C25E327F525D1D268FEEFC92373551D /* FileRequests.swift */, + 3AB406A384F5DBA022E1670CF8121C8E /* FileRequestsRoutes.swift */, + 36B26B4BA4D64E1FC05F98C19F020B9A /* Files.swift */, + F5457E37E216501C206E67EB911707FF /* FilesRoutes.swift */, + 2C30CE1530C1D90F1109BC1C2AB60603 /* OAuth.swift */, + D0C86BB3C7C2C64B7D0492A9FBD2E363 /* OAuthMobile.swift */, + 473D178DE3F443CA5636122DC022E6C6 /* Paper.swift */, + 1A59BF4564B0426D4BD0FC48C7AFF077 /* PaperRoutes.swift */, + 7AAA640AFD19E6EFC758E877BB143972 /* SDKConstants.swift */, + 71C4D2F17761E8D847E98CA775551753 /* SeenState.swift */, + AB98E43036B0C024577074DC0955BE17 /* Sharing.swift */, + 190BDF601666D0980206E38BF1F0EE15 /* SharingRoutes.swift */, + 0B2698B75759D27EF243CC7E533878B5 /* StoneBase.swift */, + CAF493714512E4455A1C5612FDA9AFBB /* StoneSerializers.swift */, + AF36F6F09B4DC03C081DC874523999BD /* StoneValidators.swift */, + 835D7336F5224A95CF8910C2719DD690 /* SwiftyDropbox.h */, + 4BAACEF4960BF41B08B3E505C4EBC283 /* Team.swift */, + 848A93F7DF5BC4A24E1F379E42DD1839 /* TeamCommon.swift */, + 8A47F312AB75A9DF4F2226CF1E136782 /* TeamLog.swift */, + CB18133E0ECE1AE6EAF820FD43E8C7CD /* TeamLogRoutes.swift */, + E965344846F77B89894EE46FE75B2823 /* TeamPolicies.swift */, + 48EF4CE2E6166180B091E96C87A37818 /* TeamRoutes.swift */, + 5135BCCCC7B1AB36FDF0D6D7F5509182 /* TransportConfig.swift */, + 565428EE53AC1B19BA15F960B4336E2F /* Users.swift */, + 8D8F081559EC427BB8BDA8B17DBCCFF1 /* UsersCommon.swift */, + 6D05B11A7C98445859C746B5D40BBDBA /* UsersRoutes.swift */, + F1BD8F856BF0F44F570C723B3859B352 /* Support Files */, + ); + name = SwiftyDropbox; + path = SwiftyDropbox; + sourceTree = ""; + }; 1ACD4C45AF2A77F00AD76853EDCE81A5 /* DSDeltaCore */ = { isa = PBXGroup; children = ( @@ -4965,20 +5205,6 @@ path = "visualboyadvance-m"; sourceTree = ""; }; - 1E5B261DFFAFBF20E38675C589F334CD /* Support Files */ = { - isa = PBXGroup; - children = ( - E25B44BABC7528C07CC191BA85CCE447 /* SMCalloutView.modulemap */, - B23526A375A47D4DB7E41CEF2AD61087 /* SMCalloutView-dummy.m */, - BA1F46281ACC03BA5632B185F2754D85 /* SMCalloutView-prefix.pch */, - 5209BE954A7C39272EDD3AEE95066684 /* SMCalloutView-umbrella.h */, - 598055BE88FB8053259FAF21F5B8BAD1 /* SMCalloutView.debug.xcconfig */, - 9A69779C7CE90E43C61DC0446CE1DBB5 /* SMCalloutView.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/SMCalloutView"; - sourceTree = ""; - }; 1F19C9E0168680C92EBB7D176CF4EA69 /* ri */ = { isa = PBXGroup; children = ( @@ -5013,15 +5239,14 @@ path = ../Cores/DeltaCore; sourceTree = ""; }; - 228FA8748601A2EE4B21161E81835AA4 /* GoogleAPIClientForREST */ = { + 21F9440627B64A82C54FC22CBE2D59E5 /* Support Files */ = { isa = PBXGroup; children = ( - C6160687C7FB523D45EFF836774FB4EC /* Core */, - 481ED60E33EE09552AC37427329E94E5 /* Drive */, - 2F79BB26FB709FFE055009A206613571 /* Support Files */, + 1F236A3805E02C90AE33A5EAB004863A /* Crashlytics.debug.xcconfig */, + 196F592EF827C71B59D72F88BBFADB73 /* Crashlytics.release.xcconfig */, ); - name = GoogleAPIClientForREST; - path = GoogleAPIClientForREST; + name = "Support Files"; + path = "../Target Support Files/Crashlytics"; sourceTree = ""; }; 2519C35DC719213F64E2832B2506865B /* inc */ = { @@ -5043,6 +5268,16 @@ path = inc; sourceTree = ""; }; + 255A65AF3EF698947DD562F2BB45CA10 /* SDWebImage */ = { + isa = PBXGroup; + children = ( + F03912742B6130876A35A409B01F202C /* Core */, + F2341B87199157363A2AC8276C155D6E /* Support Files */, + ); + name = SDWebImage; + path = SDWebImage; + sourceTree = ""; + }; 25E6310F7364FDA5AD8C9557C6A08D7C /* Game */ = { isa = PBXGroup; children = ( @@ -5054,6 +5289,14 @@ path = Game; sourceTree = ""; }; + 2738D9667936B26BC23347E83484BB87 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6254C48CD5724F0BDBF7A6EB0177D259 /* GoogleSignIn.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 292F891AC1C6B0873F4855BA177A7970 /* Bridge */ = { isa = PBXGroup; children = ( @@ -5088,23 +5331,6 @@ path = "Parent Operations"; sourceTree = ""; }; - 2A4D74C9D467468EFCA8893B6056F58A /* NSDictionary+URLArguments */ = { - isa = PBXGroup; - children = ( - 1C84F28BC8941E34DD2FCD83B3BA50C0 /* GTMNSDictionary+URLArguments.h */, - 8638968DC3BD54DEE2C5F9056D50F226 /* GTMNSDictionary+URLArguments.m */, - ); - name = "NSDictionary+URLArguments"; - sourceTree = ""; - }; - 2ABE2B7331A6B7CCD2ED6CE8F923D864 /* Defines */ = { - isa = PBXGroup; - children = ( - 629F6A26E346FCCB87CF068FC152224D /* GTMDefines.h */, - ); - name = Defines; - sourceTree = ""; - }; 2B27399C3DBFAD4ED2503738CA62BA68 /* plugin */ = { isa = PBXGroup; children = ( @@ -5204,6 +5430,20 @@ path = src; sourceTree = ""; }; + 2F5A041DE8E838EB79F4039999665D2B /* Support Files */ = { + isa = PBXGroup; + children = ( + 26DB7ADA441E211720139768B35B32E8 /* ZIPFoundation.modulemap */, + A279615234A2EC2D137F27BB38C19F60 /* ZIPFoundation-dummy.m */, + FB92A78D28CD36043ADBA69E72E19E42 /* ZIPFoundation-prefix.pch */, + D348B99A21C9231EF8021CE9BE24C999 /* ZIPFoundation-umbrella.h */, + 3D6495324D070183F05BAB2B199F89AF /* ZIPFoundation.debug.xcconfig */, + 494E77D3CFBDCDB05A1862B8E739A5EA /* ZIPFoundation.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/ZIPFoundation"; + sourceTree = ""; + }; 2F6048A65922E60BD504FBECD7013638 /* src */ = { isa = PBXGroup; children = ( @@ -5219,20 +5459,6 @@ path = src; sourceTree = ""; }; - 2F79BB26FB709FFE055009A206613571 /* Support Files */ = { - isa = PBXGroup; - children = ( - 9AD902A56CCE972EB5C283E7E6C49040 /* GoogleAPIClientForREST.modulemap */, - 268A80FCD8A58CFE6C097469D5AF1C00 /* GoogleAPIClientForREST-dummy.m */, - 829735A0F9CEBD3D7585C21C3AC6FD0B /* GoogleAPIClientForREST-prefix.pch */, - 3834E77F63953D87853DE315E253E447 /* GoogleAPIClientForREST-umbrella.h */, - DBAAF6DBA09834539A368667AF5A1211 /* GoogleAPIClientForREST.debug.xcconfig */, - A5B95194D64CEE2620808A3F54044158 /* GoogleAPIClientForREST.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/GoogleAPIClientForREST"; - sourceTree = ""; - }; 311CE94779C589289659561C60C79277 /* rdram */ = { isa = PBXGroup; children = ( @@ -5330,25 +5556,6 @@ path = SFML; sourceTree = ""; }; - 37A13D22D37F4CBE50B9E137E884332C /* Pods */ = { - isa = PBXGroup; - children = ( - 40C5F442233EAF3D2D8F7F4D767AC3D8 /* Alamofire */, - 009F0CC285F6BA78E9A92285E866A377 /* Crashlytics */, - 767F33825DE0F39188233463ECBDF664 /* Fabric */, - 228FA8748601A2EE4B21161E81835AA4 /* GoogleAPIClientForREST */, - 97745B3B38E6073A9771423FCAB2F249 /* GoogleSignIn */, - 7AB57013EE6E9FF32B0E460C137984BD /* GoogleToolboxForMac */, - C84950D48B648DFC85215E0934082867 /* GTMSessionFetcher */, - 8FDE4525075516E90A9286C18AA7F0FD /* SDWebImage */, - 9C42098D9CF012CF305746841BDC6BF2 /* SMCalloutView */, - 97C18C4F2DEF2C74145C683D8870C6D7 /* SQLite.swift */, - 7CBC032BF922DFB50EEAB6D72B91354A /* SwiftyDropbox */, - 66BDA1DDF054BE81384AB85BFA7630C1 /* ZIPFoundation */, - ); - name = Pods; - sourceTree = ""; - }; 38680FA022F55CF26BDA844A05AB6E64 /* x86_64 */ = { isa = PBXGroup; children = ( @@ -5388,6 +5595,20 @@ path = ../Cores/DSDeltaCore; sourceTree = ""; }; + 3B081803D6CE4EFC41F13E166ED530C6 /* Support Files */ = { + isa = PBXGroup; + children = ( + 0698C5226E823C39770BD349C70B0687 /* AppAuth.modulemap */, + 977B784CD6EABB39FE9BC0482AA8F3BC /* AppAuth-dummy.m */, + 219AF562FA6151A79D962EC5F6BBAC8F /* AppAuth-prefix.pch */, + 8FA4CCB0BE904F77C8B8EC9084035AED /* AppAuth-umbrella.h */, + F32189B7EB10C9C7FA2DBEC132A8B9DF /* AppAuth.debug.xcconfig */, + A9F3A1170913746AF93AFB59C287153B /* AppAuth.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/AppAuth"; + sourceTree = ""; + }; 3CF89E7CF9F095E8E33471DB0E2A186B /* tiny-AES-c */ = { isa = PBXGroup; children = ( @@ -5467,68 +5688,6 @@ path = "../../Pods/Target Support Files/DSDeltaCore"; sourceTree = ""; }; - 40C5F442233EAF3D2D8F7F4D767AC3D8 /* Alamofire */ = { - isa = PBXGroup; - children = ( - 70B04C9F57267E03F1342083D92F72DD /* AFError.swift */, - 059E076DC22B421E03349A4BC56852DD /* Alamofire.swift */, - 61EE3CF1533FE896277A8399AB5697AE /* DispatchQueue+Alamofire.swift */, - 0BBF21DB7D0A3DEFC2DB5CF5C384EC77 /* MultipartFormData.swift */, - C84C3D0F11A5EB1115FFB93D23447AE9 /* NetworkReachabilityManager.swift */, - 03368477B0F9F367CC8C9443F31F2918 /* Notifications.swift */, - 5A0A83DB759E9397D1C0559D05F620AF /* ParameterEncoding.swift */, - B9103C0E62058A84C7C9BDF9F6915958 /* Request.swift */, - AA1C0B3274E804CB44DE0C80AC3E1E9F /* Response.swift */, - 745C7BD034F68630CA1462CB29BF3051 /* ResponseSerialization.swift */, - 798D5972AD9FFEB025B0DC380ACFC440 /* Result.swift */, - 87B8D974016F8FF0B7457CF079A700AB /* ServerTrustPolicy.swift */, - 48A7DBA86C0D8564FAED27D377B220EC /* SessionDelegate.swift */, - 4D480F6ED4062D534F79485C9C8C741A /* SessionManager.swift */, - CDAEDE6317A2C17D4DB07ED6E3982F55 /* TaskDelegate.swift */, - 0ECCD45E4DF53FED6DA4A6938B32FD27 /* Timeline.swift */, - 599A968786BB3CEF39D154E679D99110 /* Validation.swift */, - EB34A2FC74D6227E23516B7948BC9D0F /* Support Files */, - ); - name = Alamofire; - path = Alamofire; - sourceTree = ""; - }; - 411CCD233F29EAD26706B07FE1DB055E /* Core */ = { - isa = PBXGroup; - children = ( - C5D0C48AB270EA1136E55E203CF7D378 /* NSData+ImageContentType.h */, - 131DE5B5A662F4982F678A6226865295 /* NSData+ImageContentType.m */, - 288F0A8E1830BC9A6DEE1E4E0D082A8D /* SDImageCache.h */, - 921AD788C442F823555202B44D3AF160 /* SDImageCache.m */, - ED28BE1D7327BA6ABFA7B757E13A6EBB /* SDWebImageCompat.h */, - D01B5BDC517C52E34E8E81885DDA7BC9 /* SDWebImageCompat.m */, - 9FBEDF35986AA4976C5186CACDC036A7 /* SDWebImageDecoder.h */, - A1DC4D0732A2D4A00391980B544DCC7A /* SDWebImageDecoder.m */, - 3983F1895BAF52B55FBA7C3CA41B9A63 /* SDWebImageDownloader.h */, - 0578BFC4BF51617091C2DE4924C3A501 /* SDWebImageDownloader.m */, - A024A97ADEDE582E9EDA110E6B1AF889 /* SDWebImageDownloaderOperation.h */, - B068E4E7AE4132AAFBBBCBD24D7A4C81 /* SDWebImageDownloaderOperation.m */, - A926D3355F6CDDC80A17A8A29A62AF05 /* SDWebImageManager.h */, - 520D9B2D1F6739C099B2819925297F07 /* SDWebImageManager.m */, - 26ECC555C3C58DB5AFADDF0AA680057C /* SDWebImageOperation.h */, - D42421CB7ACD877300E845DA963BD693 /* SDWebImagePrefetcher.h */, - 602F93ECC989A3FB6D04031D00DE62E5 /* SDWebImagePrefetcher.m */, - ED98D3CDD8B67DE813123392E2953CE8 /* UIButton+WebCache.h */, - 60815A565ED55CD68EB1B67F9D360CFF /* UIButton+WebCache.m */, - 13BAA83DB690C1835AB70FD3FC749AFF /* UIImage+GIF.h */, - F5EA96C879945AA782B43E8FA302CAF0 /* UIImage+GIF.m */, - 568BC6B386F0E084601CBF273D6953BA /* UIImage+MultiFormat.h */, - AD7E8DA1695D9954D559B5D1CB60DE8D /* UIImage+MultiFormat.m */, - FB23491CA81D5C2441595CFDB66E8D32 /* UIImageView+HighlightedWebCache.h */, - 98D8B9C03706EA64A98272C9B5617C09 /* UIImageView+HighlightedWebCache.m */, - FC5CD66C23C8B15B020AD1A0E066DE14 /* UIImageView+WebCache.h */, - 3877506BCB9C396099DE5A88C9255153 /* UIImageView+WebCache.m */, - 2BF527A86BB1F33B31BB0F79626623B7 /* UIView+WebCacheOperation.h */, - 6497DCF700203B483AC09F89101261EB /* UIView+WebCacheOperation.m */, - ); - name = Core; - sourceTree = ""; - }; 412D4770D812C7CF16210223A7965E13 /* decoder */ = { isa = PBXGroup; children = ( @@ -5554,18 +5713,22 @@ path = BufferCopy; sourceTree = ""; }; - 436E6987663F1DA9FDD171E9BC13426C /* Support Files */ = { + 419F691012C6E2AB530C9EA04EBE5C03 /* ExternalUserAgent */ = { isa = PBXGroup; children = ( - 005FC9907E7BDC0BEFC3ADF4DDF1EE39 /* GoogleToolboxForMac.modulemap */, - C7A9D7E3EC589A75AD2405C76234F641 /* GoogleToolboxForMac-dummy.m */, - 3E7B7BF0A743BE6F53D69481DCC503FE /* GoogleToolboxForMac-prefix.pch */, - 5EF06F8F27ABEC737DD25CCD173676AF /* GoogleToolboxForMac-umbrella.h */, - E6C9B6763FC803B3E3266F762DFABEC6 /* GoogleToolboxForMac.debug.xcconfig */, - 540AD95463DB65E077F08253A77C4865 /* GoogleToolboxForMac.release.xcconfig */, + 443C783F39A259FCA78B3BBF929FD22C /* AppAuth.h */, + E3A84C00EC52D508C43138D6415A7260 /* OIDAuthorizationService+IOS.h */, + 8C2A10FC9E495738845331CEF5285D98 /* OIDAuthorizationService+IOS.m */, + A2412E26D20F3DE5223A9642023ADC3A /* OIDAuthState+IOS.h */, + D3C64537334355255D5B2EAEBB95293B /* OIDAuthState+IOS.m */, + 93C3F8DB60D4036F101818A25789D30E /* OIDExternalUserAgentCatalyst.h */, + 13B316FCB59B7F1A1B43657E5726656E /* OIDExternalUserAgentCatalyst.m */, + 45EEA56032C12443D7F5CDED8FC4CDF5 /* OIDExternalUserAgentIOS.h */, + 6303FACD5A9C1BE3214E82440C968C95 /* OIDExternalUserAgentIOS.m */, + EAB1D6A53015FCCF416370C8C413C827 /* OIDExternalUserAgentIOSCustomBrowser.h */, + FF22AFB4BDFC6DC8E55CF0D73F4177BD /* OIDExternalUserAgentIOSCustomBrowser.m */, ); - name = "Support Files"; - path = "../Target Support Files/GoogleToolboxForMac"; + name = ExternalUserAgent; sourceTree = ""; }; 437B19E7AEB1904E719931B7EA691D4A /* subprojects */ = { @@ -5621,18 +5784,17 @@ path = frontend; sourceTree = ""; }; - 481ED60E33EE09552AC37427329E94E5 /* Drive */ = { + 48AF851EED58BAEBC20333DCB2DDEC67 /* Support Files */ = { isa = PBXGroup; children = ( - 4CB7FC1BCCB48A79D26DDA5099AB7393 /* GTLRDrive.h */, - 7C6BC0D076F377BD8D6A2EAB196A9653 /* GTLRDriveObjects.h */, - 5DD7DBBB3619EE9EEDB725158C211C8C /* GTLRDriveObjects.m */, - E7294A191F7AC7765349928B17D20EAE /* GTLRDriveQuery.h */, - 501510C0AB0C2749A39F8FE21E2FDE4E /* GTLRDriveQuery.m */, - 1C5F8657F7A40B8346317B773095E039 /* GTLRDriveService.h */, - 17191C33E01881A9A1CB215D6932040B /* GTLRDriveService.m */, + 6346787D54CB5AEC2AF8189D7BA5769B /* GTMAppAuth.modulemap */, + CF1D5DE7C168A69862C6EA8564C5C1CE /* GTMAppAuth-dummy.m */, + E42360B705AA75784D9E9AAEBB830A02 /* GTMAppAuth-umbrella.h */, + 7E44726CE3BEEC66D46CA5D4DA3FD929 /* GTMAppAuth.debug.xcconfig */, + 6F44A711D7E6E13C98A5A2D6DB029155 /* GTMAppAuth.release.xcconfig */, ); - name = Drive; + name = "Support Files"; + path = "../Target Support Files/GTMAppAuth"; sourceTree = ""; }; 498644E552FD7A87D46AF639FDE5337E /* Model */ = { @@ -5842,6 +6004,20 @@ path = Keyboard; sourceTree = ""; }; + 4D20F91B9C2E8A734DFBEE99CE1655BE /* Support Files */ = { + isa = PBXGroup; + children = ( + F5F0BEF8DBC67E0EE87E2BED4D850E3D /* SMCalloutView.modulemap */, + 8C5E3247DAB82F80DE1AA4666B5015C5 /* SMCalloutView-dummy.m */, + 5862AFC41DDC8CFD882F00E20652CBBA /* SMCalloutView-prefix.pch */, + 9D6BA10B531342B8B8618E903C30F5FF /* SMCalloutView-umbrella.h */, + B12A51AB51E035AEBEC352A58DEC7353 /* SMCalloutView.debug.xcconfig */, + 3930CBF18C1C33D1EFACFE50685AAA6E /* SMCalloutView.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SMCalloutView"; + sourceTree = ""; + }; 4D2F7FD8F9409B989D893BAE090B90BE /* xxhash */ = { isa = PBXGroup; children = ( @@ -5853,16 +6029,6 @@ path = xxhash; sourceTree = ""; }; - 4D92D1A8EF32BA646425361261FC2014 /* Support Files */ = { - isa = PBXGroup; - children = ( - AB908F46DC3EF545093A039507FB5ECB /* Crashlytics.debug.xcconfig */, - F01FE1957D23109377788923DE2AC6B5 /* Crashlytics.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Crashlytics"; - sourceTree = ""; - }; 4E3A196D456CDC6AABCB781AF7AE0208 /* libretro-common */ = { isa = PBXGroup; children = ( @@ -5893,6 +6059,20 @@ path = Model; sourceTree = ""; }; + 5056BC4CCBD9891CEC3B00A2A78D95F7 /* Support Files */ = { + isa = PBXGroup; + children = ( + E09978A0B7F52029D794C4817785CBC4 /* GTMSessionFetcher.modulemap */, + 623B35F702DC1066A2A46AF8A9CD3ABC /* GTMSessionFetcher-dummy.m */, + C4653210AF8AB8B84AC363E10864FEA1 /* GTMSessionFetcher-prefix.pch */, + A9645906FAADC98FA524868681674322 /* GTMSessionFetcher-umbrella.h */, + 4E84293B19D2B78E9615B80C007FBE3D /* GTMSessionFetcher.debug.xcconfig */, + 774669B0A54F8C6387DA08EDDD540FE7 /* GTMSessionFetcher.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/GTMSessionFetcher"; + sourceTree = ""; + }; 53D3A3A6FC710DC3DE73D323D86BBFCA /* Bridge */ = { isa = PBXGroup; children = ( @@ -6056,18 +6236,18 @@ path = "Harmony/Core Data"; sourceTree = ""; }; - 5F367EF45196EF0904C5391E210E7129 /* Support Files */ = { + 600416464281A19D228CB18F211FA2FA /* Drive */ = { isa = PBXGroup; children = ( - F34749A9A557A7ADE2676021CDBAC6DC /* SDWebImage.modulemap */, - 187CA309F162A5C8E844D881DBC4B533 /* SDWebImage-dummy.m */, - B19869A46C0D54CF10CFA28DEDBA6863 /* SDWebImage-prefix.pch */, - 9D1E150EA94D5A0A5026F379E1681155 /* SDWebImage-umbrella.h */, - 5D042F73BB66CA682FF5DD25BC25323C /* SDWebImage.debug.xcconfig */, - 481B0FB19748AA00058AAB4125E08BF8 /* SDWebImage.release.xcconfig */, + 8672E3B374E908EA10A8340D6066D7A1 /* GTLRDrive.h */, + E632C9FD06F17BA9EF62C0EB0F22D153 /* GTLRDriveObjects.h */, + 715A3DF4852F90899132BEFE4C3D6AEA /* GTLRDriveObjects.m */, + E0174FCA92F9D1D559BD164B2F6FD1F5 /* GTLRDriveQuery.h */, + 5C51D0957C2A3215B7A75B0A8F181E75 /* GTLRDriveQuery.m */, + 2B338BB72BB5DFCF55D5381B04DCA74E /* GTLRDriveService.h */, + 26D87D2AD10A8E21F109C33C9251C5E9 /* GTLRDriveService.m */, ); - name = "Support Files"; - path = "../Target Support Files/SDWebImage"; + name = Drive; sourceTree = ""; }; 601AC4C0A1C38AE3A8409720C96E0535 /* src */ = { @@ -6258,23 +6438,6 @@ path = SNESDeltaCore; sourceTree = ""; }; - 66BDA1DDF054BE81384AB85BFA7630C1 /* ZIPFoundation */ = { - isa = PBXGroup; - children = ( - 4C48CBBB6A97428E4D4CBC314A140585 /* Archive.swift */, - CE47B9173973846BA966835EB7C3B4DF /* Archive+MemoryFile.swift */, - 602A09D764BF391459201D3C894EE108 /* Archive+Reading.swift */, - 7E950C5201F678049BF12854FA5D327A /* Archive+Writing.swift */, - C2794F0E81271A9277E8D45290A0CFD7 /* Data+Compression.swift */, - E064EB97821DE1B8BFCC21E48F3D5BA0 /* Data+Serialization.swift */, - 18B8DECBB8717BFBD8259BF1384944BA /* Entry.swift */, - 779480D51F350F2ABC3479ACDA749DEB /* FileManager+ZIP.swift */, - D53E5E39034806EB8B0622E79CD828A9 /* Support Files */, - ); - name = ZIPFoundation; - path = ZIPFoundation; - sourceTree = ""; - }; 67D48765D4B9D34A153C491DB5B39910 /* sdl */ = { isa = PBXGroup; children = ( @@ -6313,16 +6476,6 @@ name = "Harmony-Dropbox"; sourceTree = ""; }; - 6B3F3CD396B692AD978B4DD934D91AD0 /* Support Files */ = { - isa = PBXGroup; - children = ( - 175A71504D934211FCC245712633EBF6 /* Fabric.debug.xcconfig */, - 553931D6CFC09E8F76B87ACF1E671321 /* Fabric.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Fabric"; - sourceTree = ""; - }; 6B422B04445CB72171BACD8D37EDA481 /* Bridge */ = { isa = PBXGroup; children = ( @@ -6332,6 +6485,14 @@ path = Bridge; sourceTree = ""; }; + 6BD3FAC5AC1AE1F8712F418863E11E16 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F0FC43099FEA0FC37F27A10E7B222D98 /* Fabric.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 6C8F923836C653F79B9AEDA48BD7C4A7 /* Network */ = { isa = PBXGroup; children = ( @@ -6398,6 +6559,17 @@ path = config; sourceTree = ""; }; + 729A49BB34B1CBEE74885AE1D3084325 /* GoogleAPIClientForREST */ = { + isa = PBXGroup; + children = ( + 76425622E919D4C20153B65255E5AA22 /* Core */, + 600416464281A19D228CB18F211FA2FA /* Drive */, + FCE3DE23FD5F8FD6DB958EE1EF370AF2 /* Support Files */, + ); + name = GoogleAPIClientForREST; + path = GoogleAPIClientForREST; + sourceTree = ""; + }; 747F3074BCB19D39A9261A06B314434A /* libMupen64Plus */ = { isa = PBXGroup; children = ( @@ -6407,19 +6579,12 @@ path = libMupen64Plus; sourceTree = ""; }; - 75316DA5FE1CBCBBBF62CE6972920D20 /* Core */ = { + 75BDB68F88E9C1934239BB3C3C9CA166 /* Resources */ = { isa = PBXGroup; children = ( - 9265E3D9F1667F3A362493594E094FAD /* GTMSessionFetcher.h */, - EFBE30994381264F2445BF70BEE39EE2 /* GTMSessionFetcher.m */, - 498BEFABF329CA81DB038DAEE4DA86DB /* GTMSessionFetcherLogging.h */, - B1FE60123D84FA8B290B36D0DA6860F0 /* GTMSessionFetcherLogging.m */, - 7F7ED6CE3BC682B49D8D74C14E481F37 /* GTMSessionFetcherService.h */, - 551F767B133FD2219158C4BD484F80BC /* GTMSessionFetcherService.m */, - 94F5D89236B344C4DD052FE9AB17ACC3 /* GTMSessionUploadFetcher.h */, - CEFFA33EF26C6E6BBBA92570888B7054 /* GTMSessionUploadFetcher.m */, + F3EBDD99965D94C61967C9A45BE4D693 /* GoogleSignIn.bundle */, ); - name = Core; + name = Resources; sourceTree = ""; }; 75C3517754CBC2D236917B6E579EE656 /* Types */ = { @@ -6659,6 +6824,42 @@ path = board; sourceTree = ""; }; + 76425622E919D4C20153B65255E5AA22 /* Core */ = { + isa = PBXGroup; + children = ( + 044980032257B075E0B9A57CEFBDFF05 /* GTLRBase64.h */, + 0DAEEE63785B00C93A66E60C0A817F87 /* GTLRBase64.m */, + D2A9972C73302E7859114B00F97119FB /* GTLRBatchQuery.h */, + F1836C099035D590318910C3DE119171 /* GTLRBatchQuery.m */, + C86290F9E481344A373DEC5BBD238F5F /* GTLRBatchResult.h */, + DC40A8C710C4F26562DD7DCC58A3262D /* GTLRBatchResult.m */, + CFA4D7A7602BFF3A3C64CE6AF41F95BE /* GTLRDateTime.h */, + C98DB0FD6FD6306E15AEE84B2DC91E6E /* GTLRDateTime.m */, + 2DF399ADFD1340C66513A8388C3CBB04 /* GTLRDefines.h */, + 8A67D2E977EA79AB264073D420A46B03 /* GTLRDuration.h */, + 6DB930631E2AEFA13A9D03861573F6AD /* GTLRDuration.m */, + 9FA556F2079F991C20E924384DE65B53 /* GTLRErrorObject.h */, + D52EA840A37C4DA8B470A68AEE6590FC /* GTLRErrorObject.m */, + 026303687AA738C6704F0AE2C4415571 /* GTLRFramework.h */, + 2E1D04BE6B511C93BB76FDEA022EB898 /* GTLRFramework.m */, + 0F7FF9A766FC21BE3E37E65D11FE6906 /* GTLRObject.h */, + 7C577D7CCC9935FF8720C6CB71251340 /* GTLRObject.m */, + 8270D9EC826BA43DC24BF1A467527292 /* GTLRQuery.h */, + 545C6C3DA50E65CC81FF48464CD13BEE /* GTLRQuery.m */, + 2F5176A0CD8AA4800A04B7437A3D2160 /* GTLRRuntimeCommon.h */, + 0537A904DB84DDF42A37224D6E21A907 /* GTLRRuntimeCommon.m */, + DFB5A7F5FFAE58E02C01B350F0F9D6E3 /* GTLRService.h */, + 65C041CF729204D4FD8D6C65A82A97C1 /* GTLRService.m */, + E8EB251114467D02FC567209AE2B575B /* GTLRUploadParameters.h */, + C8BD415C13FB4C499F0890A3714FD956 /* GTLRUploadParameters.m */, + B1C8F3DC6ED808186005506E0560109D /* GTLRURITemplate.h */, + D057D5A1FCB64223EC87BA53B8351A0B /* GTLRURITemplate.m */, + C0F43BF9199158EC861C828DB0BD7C94 /* GTLRUtilities.h */, + AB35767FB3494B8BDD53E3A7E35D3EB6 /* GTLRUtilities.m */, + ); + name = Core; + sourceTree = ""; + }; 7660956094FCC8D6266C39EBFC4DD94F /* Mupen64Plus */ = { isa = PBXGroup; children = ( @@ -6669,18 +6870,6 @@ path = Mupen64Plus; sourceTree = ""; }; - 767F33825DE0F39188233463ECBDF664 /* Fabric */ = { - isa = PBXGroup; - children = ( - D55E6137C8C963C0E24FF6F3246DAA3D /* FABAttributes.h */, - 67EBFE3C6348F22E3FACE3590580BB37 /* Fabric.h */, - 87B42D8199F3AAFDAA7D64F8D0460B7A /* Frameworks */, - 6B3F3CD396B692AD978B4DD934D91AD0 /* Support Files */, - ); - name = Fabric; - path = Fabric; - sourceTree = ""; - }; 76C7D99E981A75E406A4909A4F89ADC6 /* SoundTouch */ = { isa = PBXGroup; children = ( @@ -6728,16 +6917,6 @@ path = internal; sourceTree = ""; }; - 774E21ED78BE63857812B5970D9F6E94 /* Support Files */ = { - isa = PBXGroup; - children = ( - F41D052495AB2789D36A7796B17EADD4 /* GoogleSignIn.debug.xcconfig */, - 36CE82CF693A751E8245859F6F1F0059 /* GoogleSignIn.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/GoogleSignIn"; - sourceTree = ""; - }; 7773941D01F9B1037860E25991804D04 /* vssystem */ = { isa = PBXGroup; children = ( @@ -6787,19 +6966,6 @@ path = include; sourceTree = ""; }; - 7AB57013EE6E9FF32B0E460C137984BD /* GoogleToolboxForMac */ = { - isa = PBXGroup; - children = ( - B31C19BDA103ED7CBF60EAD41A0CCFF6 /* DebugUtils */, - 2ABE2B7331A6B7CCD2ED6CE8F923D864 /* Defines */, - 2A4D74C9D467468EFCA8893B6056F58A /* NSDictionary+URLArguments */, - AFEE717218FFFF8DBCAE0A28F9C15D3C /* NSString+URLArguments */, - 436E6987663F1DA9FDD171E9BC13426C /* Support Files */, - ); - name = GoogleToolboxForMac; - path = GoogleToolboxForMac; - sourceTree = ""; - }; 7B8242715C8646C65F25C4873AC25CBF /* Upload */ = { isa = PBXGroup; children = ( @@ -6812,60 +6978,6 @@ path = Upload; sourceTree = ""; }; - 7CBC032BF922DFB50EEAB6D72B91354A /* SwiftyDropbox */ = { - isa = PBXGroup; - children = ( - AA41416AF760A4579E38926180FB7E98 /* Async.swift */, - 10640380C87A1BC9B04007C2A3C1F529 /* Auth.swift */, - AC89D5569A6FBDDE31EC55DBF2F86B2E /* AuthRoutes.swift */, - 8257136F31A37672447D5F2FCF46FE10 /* Base.swift */, - CAB0449592C0DCA8414A2D8785033227 /* BaseTeam.swift */, - 41719ACD881D756B29502E6C40D1DBA6 /* Common.swift */, - 8B0E21ABA43A14EB561A436856C8C529 /* Contacts.swift */, - 124410B31A9E378F93FDB8A1B6FA19A2 /* ContactsRoutes.swift */, - FEAA22126ACDA08EE9AC0FA9A9B6EC05 /* Custom.swift */, - 9428B8A7A37F792EB00157F40ED883BB /* CustomRoutes.swift */, - F3F1E51AE6F5BE0ACA847F1A9ACE7311 /* CustomTasks.swift */, - 43949B838135A4C9AF88A573B762A429 /* DBChunkInputStream.h */, - 1F2DBB27BEEB1C9D7D604A978D9DD6B6 /* DBChunkInputStream.m */, - AD38FECB05322CFA65D8B297F68349F8 /* DropboxClient.swift */, - F780080F088472D2EA3AD73F9AC6B238 /* DropboxClientsManager.swift */, - 8F9F113CDF0897B7162BDC16B4BEEA31 /* DropboxTeamClient.swift */, - CBCCD8C7C6480A54F79BDBCD6BAFC020 /* DropboxTransportClient.swift */, - EC547021A6C25CAC75D4CBEA991AF3F2 /* FileProperties.swift */, - 3FA1B8883F6CAED73B7A39FB514ECF59 /* FilePropertiesRoutes.swift */, - EF1AA4BB7C7EA9D745AEBF944DC944BA /* FileRequests.swift */, - 52146E42B2E7458AB8F550EAAB719074 /* FileRequestsRoutes.swift */, - 33FE7D465ECFED221B87424469C67A9C /* Files.swift */, - E26FEBA64D2374DAC135277E88C048E7 /* FilesRoutes.swift */, - 6AC9CEAA77814183897B01BB7820D72D /* OAuth.swift */, - B4BFB7D39F6CF7F3B3B3BB96C9EAC314 /* OAuthMobile.swift */, - A97DFE65ECE733F3876CF13306D4C68B /* Paper.swift */, - 344175CF76093086EA58BEBC8AD0E014 /* PaperRoutes.swift */, - A03E19C0995989B6E3E1FFC99B95C5D2 /* SDKConstants.swift */, - 83BBBD73DC5C5BDA24F97461BDDEA0D7 /* SeenState.swift */, - D205F13F881DDD5824256D1FD8747E00 /* Sharing.swift */, - 7D8FC7A21B622E0C6CA1737C2DBD7EE2 /* SharingRoutes.swift */, - 73C973D6C8F68D6041F1D72D7FDFBAA9 /* StoneBase.swift */, - 79488326ACD741DA78E6F8BFDA889395 /* StoneSerializers.swift */, - C896FF6056EF6073CCFEB25599D37DC1 /* StoneValidators.swift */, - 9B90429F17069F50CA065D66C7BA9614 /* SwiftyDropbox.h */, - D196E82B652BFF0CF8DD7D134B12120D /* Team.swift */, - F8E8726464D823B37E1B6D05F7E27255 /* TeamCommon.swift */, - C585C47CE6EF972B1E2B823683528538 /* TeamLog.swift */, - 1CD8779AE248D2A01EAEB45063005C71 /* TeamLogRoutes.swift */, - BAE7CC5E61AD10E58132106C64073663 /* TeamPolicies.swift */, - 9F02264297230F05D9C1178C000E04EC /* TeamRoutes.swift */, - 874D46F582C919DAECAE2F7A7A611809 /* TransportConfig.swift */, - 2915B37F1313A778ECAC05BE22A03BC3 /* Users.swift */, - E296E74D5BB17E065FADEFAB60BF91B5 /* UsersCommon.swift */, - 00454C669FBEBF5003E744A5BB78F1E9 /* UsersRoutes.swift */, - 09DDB94F18DBC0FD433191CBFE31AA7E /* Support Files */, - ); - name = SwiftyDropbox; - path = SwiftyDropbox; - sourceTree = ""; - }; 7DCF159F2A3F4D52865B1E6CAE043D7D /* ini */ = { isa = PBXGroup; children = ( @@ -7036,14 +7148,6 @@ path = Video; sourceTree = ""; }; - 87B42D8199F3AAFDAA7D64F8D0460B7A /* Frameworks */ = { - isa = PBXGroup; - children = ( - 29919E9648C822A2B4D58714161F47A8 /* Fabric.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 8802B0142B964F75C662CD5B8E4E1F79 /* Extensions */ = { isa = PBXGroup; children = ( @@ -7057,27 +7161,6 @@ path = "Backends/Dropbox/Harmony-Dropbox/Extensions"; sourceTree = ""; }; - 88667F1262CA040FDDC222012EB0231C /* Full */ = { - isa = PBXGroup; - children = ( - 7AEEEEBC25EAA4D178CE03F03D008923 /* GTMGatherInputStream.h */, - EC7D812FBDF10DDBF8A0A3527249F79F /* GTMGatherInputStream.m */, - 053CC9F79B24C95D4BA1804F4282EC93 /* GTMMIMEDocument.h */, - EF3D819417FD851E3EA790DF036DBEA4 /* GTMMIMEDocument.m */, - 56C4158DD79B8800FDBEF6D1FD40BEBE /* GTMReadMonitorInputStream.h */, - 4CBFEACE2F6510E0AC190F950DC15702 /* GTMReadMonitorInputStream.m */, - ); - name = Full; - sourceTree = ""; - }; - 894BAE60FD5052909C1128ADA39CA7A1 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 699BB5E960F7F5A50C96A562EA76EE9C /* GoogleSignIn.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 8950726198270C078FE49ECF939824D3 /* Extensions */ = { isa = PBXGroup; children = ( @@ -7100,6 +7183,68 @@ path = SFML; sourceTree = ""; }; + 8B115E2C361775D37665089ECD410BC3 /* Core */ = { + isa = PBXGroup; + children = ( + 53E42F48345B024F7618B9F522C00170 /* AppAuthCore.h */, + E78B2F076ACDDF03296C6D7787187FA3 /* OIDAuthorizationRequest.h */, + 72A27101BC912E97C4A848FA5B2852E3 /* OIDAuthorizationRequest.m */, + 3C6A5480D649962867D4456FE8031979 /* OIDAuthorizationResponse.h */, + 0A2B008456750489266ED1E1757F116E /* OIDAuthorizationResponse.m */, + 3C07CCA1A3B98D511A5ABE9C9D042B20 /* OIDAuthorizationService.h */, + 57336537A50773006A909975955521AE /* OIDAuthorizationService.m */, + 4855591EC84F2705E8F012257C9AA50A /* OIDAuthState.h */, + 14EAE7328BBAFFB03192CE3D50F2E038 /* OIDAuthState.m */, + 1170BF99B298B53699071262DB9FCFB3 /* OIDAuthStateChangeDelegate.h */, + 39AF362A71040A4AEEFB7737C7E433E0 /* OIDAuthStateErrorDelegate.h */, + ED6757A3344CDA521DE024969FF490FD /* OIDClientMetadataParameters.h */, + 932D2A9B9DAC3B894125AF5B6ED7966B /* OIDClientMetadataParameters.m */, + CB6DE8B6B571E74C9ACD718E9C02F072 /* OIDDefines.h */, + 45243E1B0086B736C048AED5C8630363 /* OIDEndSessionRequest.h */, + 0E46C56B92BDA7292006F96168CEEED5 /* OIDEndSessionRequest.m */, + 58C91782F219ED52DC9C1CB57C6F993E /* OIDEndSessionResponse.h */, + 0B33F3AF9A561EA8451966176F78F1BD /* OIDEndSessionResponse.m */, + 7CB6C7B27A989417744E3635C017E270 /* OIDError.h */, + EBA697660E1BC4D0A27EE3649B361437 /* OIDError.m */, + EE0AC971380D9474A4A588F1C961933F /* OIDErrorUtilities.h */, + D5D6AF0C13DDE459DA4AC814450C8D0D /* OIDErrorUtilities.m */, + B9A0C0F111C5D027A122A6E4B76B77EB /* OIDExternalUserAgent.h */, + 1CFBBFCD11DF5152F30C049558087FA5 /* OIDExternalUserAgentRequest.h */, + 10AB5968054BF23F73574ED91AB978C1 /* OIDExternalUserAgentSession.h */, + 5304A1BBB26BB2A13B780F30AE9DE490 /* OIDFieldMapping.h */, + 465D766B2AFF0875B4B11F931485EA41 /* OIDFieldMapping.m */, + 667EABC7424BACAE8E7C808CEAD440E5 /* OIDGrantTypes.h */, + 02B744FC648DAAA73B0AB093F39C55F4 /* OIDGrantTypes.m */, + 13569C5378937CE484A595684F2B6253 /* OIDIDToken.h */, + 57D9A2767081A16C0A0BB61D1ECFBA87 /* OIDIDToken.m */, + 92B2487D9743E608B2F99678B7003B4E /* OIDRegistrationRequest.h */, + 02DDE00A6C67B510A37562DA364563DF /* OIDRegistrationRequest.m */, + 6D95088C649CC96A2D82A787F207F334 /* OIDRegistrationResponse.h */, + 24A83CCF6D3C57506C97EB1CEAAC398C /* OIDRegistrationResponse.m */, + BE209924CB6D2E21D31F1FE61E0E2738 /* OIDResponseTypes.h */, + BB6F98A88FE9147A7B9EC010B4812365 /* OIDResponseTypes.m */, + 53A049AD9805951D5775D017CF5E4E8E /* OIDScopes.h */, + 2A378A207EC720321C61582DA42E2EA9 /* OIDScopes.m */, + 2171C49089CA39B5AB9C5AB30B0A2EFF /* OIDScopeUtilities.h */, + 031D09F2BC97265AA9C63DC2B0D56DA9 /* OIDScopeUtilities.m */, + 29576A8D5243FFF5A0570494C289E3C0 /* OIDServiceConfiguration.h */, + 916A64DBFF66567EFA9AE1A60B43C5CB /* OIDServiceConfiguration.m */, + 420B009C10AE0D3BA2E2D208DC4055BC /* OIDServiceDiscovery.h */, + AEE900D97CC8D857A6CBCA6C6122BFE2 /* OIDServiceDiscovery.m */, + 34DEA93A58AA13F6D646EABBC68C479B /* OIDTokenRequest.h */, + A92D30FE329DA910DCFB6DE26BDFA144 /* OIDTokenRequest.m */, + 75DBA6DC94189A4B6AD397C7256C9706 /* OIDTokenResponse.h */, + 67972EDAFE4E36E6817526CECEB8ADC1 /* OIDTokenResponse.m */, + F00642839001DD7DBFABB3D51FC7FB20 /* OIDTokenUtilities.h */, + 84CD687D20FDA0F023996548CBA8B983 /* OIDTokenUtilities.m */, + 3C9F6290BF7A0B03D0F0EB6E48540272 /* OIDURLQueryComponent.h */, + 932A82F9F802EF94A7D26B14C4810B49 /* OIDURLQueryComponent.m */, + DC27826173671382807D1965A3D411A3 /* OIDURLSessionProvider.h */, + C04CD0898323CEBA2603BBB7EFFFAEC9 /* OIDURLSessionProvider.m */, + ); + name = Core; + sourceTree = ""; + }; 8C8C3DC3C704EECF977279A2A1D9DF14 /* api */ = { isa = PBXGroup; children = ( @@ -7119,6 +7264,16 @@ path = api; sourceTree = ""; }; + 8D89922ECC83CBE56ACE2CE4708FF193 /* Support Files */ = { + isa = PBXGroup; + children = ( + 81156CFB5EFE4A6A001952871E86551C /* GoogleSignIn.debug.xcconfig */, + 01A5A745F3104352234EF8168F5660E0 /* GoogleSignIn.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/GoogleSignIn"; + sourceTree = ""; + }; 8E8CF3796AA4CC36CE2DAECA80D9EF31 /* SNESDeltaCore */ = { isa = PBXGroup; children = ( @@ -7150,14 +7305,14 @@ name = Video; sourceTree = ""; }; - 8FDE4525075516E90A9286C18AA7F0FD /* SDWebImage */ = { + 90158BB275FB1B9365995C44EA96BDE6 /* Support Files */ = { isa = PBXGroup; children = ( - 411CCD233F29EAD26706B07FE1DB055E /* Core */, - 5F367EF45196EF0904C5391E210E7129 /* Support Files */, + 2912AEC6FA45796383577A04D7F50D20 /* Fabric.debug.xcconfig */, + FD4B129300E3ABC3B0263D68E517A823 /* Fabric.release.xcconfig */, ); - name = SDWebImage; - path = SDWebImage; + name = "Support Files"; + path = "../Target Support Files/Fabric"; sourceTree = ""; }; 90BF512AE5B89E91E8C1A23E89DFF421 /* contrib */ = { @@ -7419,17 +7574,6 @@ path = "../../Pods/Target Support Files/DeltaCore"; sourceTree = ""; }; - 97745B3B38E6073A9771423FCAB2F249 /* GoogleSignIn */ = { - isa = PBXGroup; - children = ( - 894BAE60FD5052909C1128ADA39CA7A1 /* Frameworks */, - CF5F7EC6E0C5BAD54926F88715D9FD4C /* Resources */, - 774E21ED78BE63857812B5970D9F6E94 /* Support Files */, - ); - name = GoogleSignIn; - path = GoogleSignIn; - sourceTree = ""; - }; 977F9C9199E190A1D1DE96CC02A30B92 /* main */ = { isa = PBXGroup; children = ( @@ -7460,16 +7604,6 @@ path = libtests; sourceTree = ""; }; - 97C18C4F2DEF2C74145C683D8870C6D7 /* SQLite.swift */ = { - isa = PBXGroup; - children = ( - 129E714EB792A0367A8ACDC297B0921A /* standard */, - FC18A141231F5F8AF364EAEA504A1027 /* Support Files */, - ); - name = SQLite.swift; - path = SQLite.swift; - sourceTree = ""; - }; 98045065FA9F379C54158DDA929629CD /* Types */ = { isa = PBXGroup; children = ( @@ -7568,19 +7702,6 @@ name = "Development Pods"; sourceTree = ""; }; - 9C42098D9CF012CF305746841BDC6BF2 /* SMCalloutView */ = { - isa = PBXGroup; - children = ( - 8F3B43B9B9A8070F8E97D878287EAEDF /* SMCalloutView.h */, - CB0111AD916628D17DBE1C3F2FED3100 /* SMCalloutView.m */, - ADF793502FD046991EE487F895BA270F /* SMClassicCalloutView.h */, - 32A7FC18682D076FF7779592F09D9ED6 /* SMClassicCalloutView.m */, - 1E5B261DFFAFBF20E38675C589F334CD /* Support Files */, - ); - name = SMCalloutView; - path = SMCalloutView; - sourceTree = ""; - }; 9CB922D965D06C74773242AD9AAECA3A /* controllers */ = { isa = PBXGroup; children = ( @@ -7591,6 +7712,32 @@ path = controllers; sourceTree = ""; }; + 9CFAB8DC2D1BCE05FE67CBA5101A75E3 /* Alamofire */ = { + isa = PBXGroup; + children = ( + F1B18D6742D05639138DD820DF9F2993 /* AFError.swift */, + 48605EA57EDF8ABD64CC081DC9E9AFC0 /* Alamofire.swift */, + 0B76D0275A850219FC0DB8E28690133C /* DispatchQueue+Alamofire.swift */, + 1D7A5D7D8CAD4684E8FC0960E77D2A76 /* MultipartFormData.swift */, + DB2F51D5F10CCC05DE05857AF78C4BFA /* NetworkReachabilityManager.swift */, + CFB1D0383574EDCBFCB1E01640904FF7 /* Notifications.swift */, + 7EE3E4513ED692C55CF9A08AD54FB349 /* ParameterEncoding.swift */, + 2C7CC72F8BB248BA3F1971C0259ACC5D /* Request.swift */, + 9959369E0C1F1D18532504AC8723B430 /* Response.swift */, + 61432BF68678068CA6DE2937DF8E6096 /* ResponseSerialization.swift */, + EEA4493E0BDCF56D183CFC94CFF936ED /* Result.swift */, + F6C8649B0ED17391598516AD2135217E /* ServerTrustPolicy.swift */, + 9612CD637B3DA6278C0EAD9206004F6F /* SessionDelegate.swift */, + 04D4BF391EBFCFF80B82DD0CFC9FB297 /* SessionManager.swift */, + 32A441D2F5811D199D7639BC68C30A6B /* TaskDelegate.swift */, + 3281A1D52BF5FE4FFF7B0138662B41AC /* Timeline.swift */, + A0908C52D9502D082775F1A5117A6C54 /* Validation.swift */, + 108FF02357FBD456984AC027EF8AD442 /* Support Files */, + ); + name = Alamofire; + path = Alamofire; + sourceTree = ""; + }; 9E736F768CD93BA08678AC05B3889BA1 /* Unix */ = { isa = PBXGroup; children = ( @@ -7601,6 +7748,17 @@ path = Unix; sourceTree = ""; }; + A03F1C9C7EA322F62414C4BDCE01F1F5 /* GoogleSignIn */ = { + isa = PBXGroup; + children = ( + 2738D9667936B26BC23347E83484BB87 /* Frameworks */, + 75BDB68F88E9C1934239BB3C3C9CA166 /* Resources */, + 8D89922ECC83CBE56ACE2CE4708FF193 /* Support Files */, + ); + name = GoogleSignIn; + path = GoogleSignIn; + sourceTree = ""; + }; A2264369683BCAF8B4C63E618FA22EC2 /* src */ = { isa = PBXGroup; children = ( @@ -7659,6 +7817,23 @@ path = src; sourceTree = ""; }; + A4B5E5005DB9E901F7A83C3F0BF8BF88 /* Crashlytics */ = { + isa = PBXGroup; + children = ( + 6FBA5C1ECE9E5A1D4290E1131731F13F /* ANSCompatibility.h */, + 16EC71A85F94E8C3BB45FD9A7137656B /* Answers.h */, + 621592BBAC875C8A274C00B49FAC693D /* CLSAttributes.h */, + A7174449301ADCBCB2D5E8102BFC713C /* CLSLogging.h */, + B96B6CCA6172BD6CACE709722F1DD049 /* CLSReport.h */, + 1EF9B4800AD37F657F3399A0AF68A314 /* CLSStackFrame.h */, + B3B4FCE84C0C49B1BA071F7674824E28 /* Crashlytics.h */, + D3088D77BE720C34E3D91110A7CD80DD /* Frameworks */, + 21F9440627B64A82C54FC22CBE2D59E5 /* Support Files */, + ); + name = Crashlytics; + path = Crashlytics; + sourceTree = ""; + }; A4BD8A5B5603A0F14597FD1CB420F3D3 /* Bridge */ = { isa = PBXGroup; children = ( @@ -7710,25 +7885,6 @@ path = subprojects; sourceTree = ""; }; - AFEE717218FFFF8DBCAE0A28F9C15D3C /* NSString+URLArguments */ = { - isa = PBXGroup; - children = ( - 269EA2D23CF6BACE160800DAAC54DC94 /* GTMNSString+URLArguments.h */, - D1E2911B0409362E1D0AF530431EF0B4 /* GTMNSString+URLArguments.m */, - ); - name = "NSString+URLArguments"; - sourceTree = ""; - }; - B31C19BDA103ED7CBF60EAD41A0CCFF6 /* DebugUtils */ = { - isa = PBXGroup; - children = ( - 573983B379A6F917F1D0E630D5F87BC0 /* GTMDebugSelectorValidation.h */, - D21720F624B8F46DC74D6175670521F8 /* GTMDebugThreadValidation.h */, - 622C39AE31FBB34625FBFCF26A80CD07 /* GTMMethodCheck.h */, - ); - name = DebugUtils; - sourceTree = ""; - }; B723D6F0E8A041C821B198B097F3EBEF /* Pod */ = { isa = PBXGroup; children = ( @@ -7836,6 +7992,23 @@ name = Pod; sourceTree = ""; }; + BFE8B19143A36001219A7C717789BAF2 /* ZIPFoundation */ = { + isa = PBXGroup; + children = ( + FD8090C2C4D6677D98DF61168FD3C8FF /* Archive.swift */, + 838CA0439D7C8B31AE1AD2623D31DDA6 /* Archive+MemoryFile.swift */, + 247B8D6B9E9E7BB417296B8976528C7E /* Archive+Reading.swift */, + 0A2C38334522FD96B8FC777F0039D64B /* Archive+Writing.swift */, + 55F78D9EBA7E2C91652EB7AA51EBE3A8 /* Data+Compression.swift */, + 660E3C5DCE31A47E4D097B7EAB89ADC4 /* Data+Serialization.swift */, + 8EB4FBE3A34AC5F5CF55E865DDB2BAC3 /* Entry.swift */, + 1B2756D7B604A26C88B2CF4AE96B6235 /* FileManager+ZIP.swift */, + 2F5A041DE8E838EB79F4039999665D2B /* Support Files */, + ); + name = ZIPFoundation; + path = ZIPFoundation; + sourceTree = ""; + }; C1D7294C4861EEFD127D166979E02A88 /* Graphics */ = { isa = PBXGroup; children = ( @@ -7917,6 +8090,16 @@ path = DeltaCore/Model; sourceTree = ""; }; + C328B2140274DE0186F5AE1EEF77D569 /* SQLite.swift */ = { + isa = PBXGroup; + children = ( + CF1D3A8EE5243E614B6C86F23CE418FD /* standard */, + 1171B62368311C31ED04810C721B7804 /* Support Files */, + ); + name = SQLite.swift; + path = SQLite.swift; + sourceTree = ""; + }; C37B35A3F6A598898648E2760A51EC34 /* Bridge */ = { isa = PBXGroup; children = ( @@ -8011,42 +8194,6 @@ path = GLideN64; sourceTree = ""; }; - C6160687C7FB523D45EFF836774FB4EC /* Core */ = { - isa = PBXGroup; - children = ( - 6D25D90C2F0571F2A637C30B9B936472 /* GTLRBase64.h */, - A972E09BA9CC2B4E13DEEC72273122F5 /* GTLRBase64.m */, - BE678FC4DC246B0D19DC3F53975AFFA0 /* GTLRBatchQuery.h */, - D1EC922CB4C37FF078E2F2FA393D076C /* GTLRBatchQuery.m */, - 6E93E4BE7AB127183B96B96E91487DA6 /* GTLRBatchResult.h */, - A136EA4F05EDD2CD92B3C8B2884AAFDD /* GTLRBatchResult.m */, - 04CD4DB2EE3E00431E393AF83DA3B925 /* GTLRDateTime.h */, - 1371A75FE41949E4BA02D89705197634 /* GTLRDateTime.m */, - 44BD07F028973D4260A9A797E772F208 /* GTLRDefines.h */, - 05EFB60F8ABE052EE4B3C48B77C63D6B /* GTLRDuration.h */, - AEC0015955B6C317179ECAEEE8FD46C5 /* GTLRDuration.m */, - B469CB48E051A7902C306D720CA859C8 /* GTLRErrorObject.h */, - A8A39A015FAAB4B02C5DDC94DE475046 /* GTLRErrorObject.m */, - 0911CB832D9A4864180F2DCFB13BCC10 /* GTLRFramework.h */, - 58B84D2927A477768BA7A22EB43B0A83 /* GTLRFramework.m */, - F1D0E74F872B2D64D94DDEE42849F609 /* GTLRObject.h */, - D63DF8BC0893DD34539EDEF01E7690F8 /* GTLRObject.m */, - BB1A039FF5440BBD2EF096501C8ED363 /* GTLRQuery.h */, - 6ACCC934BB5FAD4B0A16D654246E21F6 /* GTLRQuery.m */, - 279F8F8BF2300C97E89F662A3B1BE1CE /* GTLRRuntimeCommon.h */, - 87BEF86E5D9BA232DF16BE7F774E4D82 /* GTLRRuntimeCommon.m */, - F8694E99071ADE337EEEA41E7C2CFD82 /* GTLRService.h */, - A8E6AB2F458571355560DBA9096AB908 /* GTLRService.m */, - B9599505824F928A644466FC5D89F93C /* GTLRUploadParameters.h */, - 6FB01D09B653BA294A2E5E980D435892 /* GTLRUploadParameters.m */, - A02D556906FE8C4CFDDB3F8D10DF3E4B /* GTLRURITemplate.h */, - 0E7A1D4D282B1A61276595B3F2DA9630 /* GTLRURITemplate.m */, - FCA3A4E5B21B603E44C4DA3AB87595F8 /* GTLRUtilities.h */, - F94637A21D42A1D3D7F8F0AF2786C782 /* GTLRUtilities.m */, - ); - name = Core; - sourceTree = ""; - }; C6BB498F5BC5B516A051F1930360467A /* md5 */ = { isa = PBXGroup; children = ( @@ -8124,17 +8271,6 @@ name = Pod; sourceTree = ""; }; - C84950D48B648DFC85215E0934082867 /* GTMSessionFetcher */ = { - isa = PBXGroup; - children = ( - 75316DA5FE1CBCBBBF62CE6972920D20 /* Core */, - 88667F1262CA040FDDC222012EB0231C /* Full */, - 153056187C2919053D9759A64BD233B3 /* Support Files */, - ); - name = GTMSessionFetcher; - path = GTMSessionFetcher; - sourceTree = ""; - }; C89BD9E5069CF671A2A8909C5C6C1A6B /* Controller Skin */ = { isa = PBXGroup; children = ( @@ -8244,18 +8380,42 @@ 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 9C11018640D0B959BFF8EF95DCE54319 /* Development Pods */, D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, - 37A13D22D37F4CBE50B9E137E884332C /* Pods */, - 04CF5B4661B2C9B83AAB13F34DA4F5F8 /* Products */, + 033A89078BADFBA7DF04DCBE56DAAA5B /* Pods */, + 19AA260E663F3C8B1C18C3F1FED97C92 /* Products */, CA095B31908C638D4B82476FC01B08E5 /* Targets Support Files */, ); sourceTree = ""; }; - CF5F7EC6E0C5BAD54926F88715D9FD4C /* Resources */ = { + CF1D3A8EE5243E614B6C86F23CE418FD /* standard */ = { isa = PBXGroup; children = ( - 9A139AD5491148B868F3054FD397E659 /* GoogleSignIn.bundle */, + 22AA280DD1D36ECC49012CE94F92FF70 /* AggregateFunctions.swift */, + 41CD9A5CE924CE38987C2E1AAF42DC3A /* Blob.swift */, + C3E462965638C3B3A14A015889EAD1F6 /* Coding.swift */, + 237C158F7CC5E577445E86C2492F4FEC /* Collation.swift */, + ADB16E0153F5F75FEFD2195E2683E28D /* Connection.swift */, + 94453F3BF5916545D37B02509181E412 /* CoreFunctions.swift */, + D9A35F037627770B9E4D134A54ED7A1D /* CustomFunctions.swift */, + CAC07B3D9E7C4AD3DD82C841899CF5BD /* DateAndTimeFunctions.swift */, + 4159401DC087CCC701F3A9F3EFDC7A05 /* Errors.swift */, + 13C3FE2E20CFC9B988170243D56ACE9B /* Expression.swift */, + E428D7A0EE985F874A11A23CAC065DE0 /* Foundation.swift */, + 6DB143B9201888455FA6E13BE13093EC /* fts3_tokenizer.h */, + D3B384A7E8A4FCAED1BD8FEF95AEE857 /* FTS4.swift */, + 9DA78CBF88A04BBCFF5516F488EE945E /* FTS5.swift */, + 32F0D8C427B02F9167601BA32C12AA6B /* Helpers.swift */, + A5730EB24A1B5DF89397E65245AFD203 /* Operators.swift */, + 23760AABA54F71B0F06346CA543E4161 /* Query.swift */, + E2580FFCC835723EF1F5DDF5E6F2165B /* RTree.swift */, + 71B40389FEF3F25336856EBDF7DD4FB4 /* Schema.swift */, + 9A6AEB2D3D215815256A7B0AFA6FE0B2 /* Setter.swift */, + 4E4CD8CDBB4408C8BD5636BAFD235F02 /* SQLite.h */, + 78926AD45B7D54A5AC482490E17C94A9 /* SQLiteObjc.h */, + E50D0607ACEC326B0DC65D7D9B0004AD /* SQLiteObjc.m */, + 79FCE5BAA38140636DB207A1281BEF35 /* Statement.swift */, + 87ACD2A3FDFB3EE8D720E830113C349D /* Value.swift */, ); - name = Resources; + name = standard; sourceTree = ""; }; CFBB46D7E310832F9C9B9F702861D5E9 /* GL */ = { @@ -8294,6 +8454,14 @@ path = DeltaCore/UI; sourceTree = ""; }; + D3088D77BE720C34E3D91110A7CD80DD /* Frameworks */ = { + isa = PBXGroup; + children = ( + 87ABCA436899BDC642D85AA569C87D98 /* Crashlytics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; D334BCBFBE459A07592783C9964678E0 /* Controller Skin */ = { isa = PBXGroup; children = ( @@ -8334,20 +8502,6 @@ path = Download; sourceTree = ""; }; - D53E5E39034806EB8B0622E79CD828A9 /* Support Files */ = { - isa = PBXGroup; - children = ( - 8B0443A5AFC99B4F146BEF80A5D5D4DC /* ZIPFoundation.modulemap */, - 3B3BC53887BCBE3F02841C302D9EFCB4 /* ZIPFoundation-dummy.m */, - F30E0BB406275FD00829195C22A80D4F /* ZIPFoundation-prefix.pch */, - 8F4912D5F8E8AA63C9F6417DD320A1C6 /* ZIPFoundation-umbrella.h */, - 5A644A5B4BD538209D5C42F09565D52C /* ZIPFoundation.debug.xcconfig */, - 5CCF0F50976DE33EBB7327D6CE071A1A /* ZIPFoundation.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/ZIPFoundation"; - sourceTree = ""; - }; D68DE72B3F3A565A84F7CC91CB1E19EB /* src */ = { isa = PBXGroup; children = ( @@ -8424,14 +8578,6 @@ path = Conflict; sourceTree = ""; }; - DAB3A620E6753672E6B5D0FDD42AD39A /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0E9B2D2921B154E904D13D0ECB5ED2B0 /* Crashlytics.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; DADAAE7FB02E368B3C6812AB22C8096D /* SDL */ = { isa = PBXGroup; children = ( @@ -8482,6 +8628,17 @@ path = DeltaCore/Filters; sourceTree = ""; }; + DEAFA0B40B3B07BEB99FA93D78AD3F65 /* GTMSessionFetcher */ = { + isa = PBXGroup; + children = ( + EEA391566DC0FA1A93444B7DA34191B6 /* Core */, + 06A88667BEBA7636D943984D0E7C025E /* Full */, + 5056BC4CCBD9891CEC3B00A2A78D95F7 /* Support Files */, + ); + name = GTMSessionFetcher; + path = GTMSessionFetcher; + sourceTree = ""; + }; DF07CA928B39263CE487F3BCAA0AF495 /* MelonDSDeltaCore */ = { isa = PBXGroup; children = ( @@ -8540,6 +8697,24 @@ path = GBCDeltaCore; sourceTree = ""; }; + E4B121E01CBB2A8D87C99E045286A7D2 /* GTMAppAuth */ = { + isa = PBXGroup; + children = ( + 5CCEE18165C914267574D45D111EF1FB /* GTMAppAuth.h */, + 8691A7C558BF5E11E5971EB35F846792 /* GTMAppAuthFetcherAuthorization.h */, + 83F6EB025694406CDB495B1EEF28370D /* GTMAppAuthFetcherAuthorization.m */, + 199EF9595C8ADA9D488E6011C710237A /* GTMAppAuthFetcherAuthorization+Keychain.h */, + 995CA28F9F3E92A264FBC6FD3BFEC725 /* GTMAppAuthFetcherAuthorization+Keychain.m */, + 95DF5F1F5D51E2691C2FCC536D134468 /* GTMKeychain.h */, + 9165EBC3B02F7C7983D96A667C6F8BED /* GTMKeychain.m */, + 97B8154A6F8BE2F1F7D5B7DA2C0E7AF8 /* GTMOAuth2KeychainCompatibility.h */, + 520C2AA27D516129AD50BA5B31CC7080 /* GTMOAuth2KeychainCompatibility.m */, + 48AF851EED58BAEBC20333DCB2DDEC67 /* Support Files */, + ); + name = GTMAppAuth; + path = GTMAppAuth; + sourceTree = ""; + }; E62F9CED27D511659A046E705BF5D7B4 /* common */ = { isa = PBXGroup; children = ( @@ -8549,6 +8724,19 @@ path = common; sourceTree = ""; }; + E76DA24394F285F1FF3AA32D642A288C /* SMCalloutView */ = { + isa = PBXGroup; + children = ( + E8DAD16B1850E65C9CA038B3A3E65519 /* SMCalloutView.h */, + 961F1C561A0CD244864FF1434626856A /* SMCalloutView.m */, + 60846DC9067AEB427BC583ED3B0AB2AA /* SMClassicCalloutView.h */, + AE7EE92CFAB3F620FD1040DE3D968F27 /* SMClassicCalloutView.m */, + 4D20F91B9C2E8A734DFBEE99CE1655BE /* Support Files */, + ); + name = SMCalloutView; + path = SMCalloutView; + sourceTree = ""; + }; E7B08EC38E79EFB16621B6A13A0A936B /* NestopiaJS */ = { isa = PBXGroup; children = ( @@ -8577,20 +8765,6 @@ path = GLideN64; sourceTree = ""; }; - EB34A2FC74D6227E23516B7948BC9D0F /* Support Files */ = { - isa = PBXGroup; - children = ( - 57B34424210B5C2631F01A486C9351BB /* Alamofire.modulemap */, - 38A54DE3848C6830CA6D438BCCE65D81 /* Alamofire-dummy.m */, - 4C832C9A82654DA76719E0AB5ED13D8E /* Alamofire-prefix.pch */, - 2FBBCE862E374DE16A6F3E328AA1A1DA /* Alamofire-umbrella.h */, - 6699C28C7C6519A74846481B5F2FC5A3 /* Alamofire.debug.xcconfig */, - C3B144DAC7663AA196FF05DB5F4FAEBE /* Alamofire.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Alamofire"; - sourceTree = ""; - }; ECD2CF605BF26E6B16D3C5F4DA3380AF /* freetype */ = { isa = PBXGroup; children = ( @@ -8609,6 +8783,21 @@ path = ai; sourceTree = ""; }; + EEA391566DC0FA1A93444B7DA34191B6 /* Core */ = { + isa = PBXGroup; + children = ( + E2D421F13E814E57B15110AAB3EEFD11 /* GTMSessionFetcher.h */, + A3552D865207139EC4F4DC6E995D6BB0 /* GTMSessionFetcher.m */, + 969A0E6B50AC94779E15554E68201C1B /* GTMSessionFetcherLogging.h */, + 8FC8D1F562E78B93CBE1671FCCAA9817 /* GTMSessionFetcherLogging.m */, + A9DB08EC4772FF7A6A905D44E5052D06 /* GTMSessionFetcherService.h */, + 69F822EB18DC49C603929CDE54E390B2 /* GTMSessionFetcherService.m */, + BD14EE61773F621F7BE47DDD2372E279 /* GTMSessionUploadFetcher.h */, + 3E1AFE6F8229938A27A495C21C806A1A /* GTMSessionUploadFetcher.m */, + ); + name = Core; + sourceTree = ""; + }; EF62B437349A7B1106429D529A65DF15 /* Support Files */ = { isa = PBXGroup; children = ( @@ -8648,6 +8837,42 @@ path = nestopia; sourceTree = ""; }; + F03912742B6130876A35A409B01F202C /* Core */ = { + isa = PBXGroup; + children = ( + 2A80B7D648995C747A8D7ABC799CD2C8 /* NSData+ImageContentType.h */, + 59A9EA9D8300F82CC7308C695334EB31 /* NSData+ImageContentType.m */, + 44AC5187E0261B892EF34E7BCDAC7DE4 /* SDImageCache.h */, + EC145F5A4BCF18A8EBAA697F5C1619FF /* SDImageCache.m */, + AAD2667BBE65AFB801C1E17E617CD367 /* SDWebImageCompat.h */, + 323AE1414C1C0B5D81EADD8808095682 /* SDWebImageCompat.m */, + C2FB3A54994D0E5779790FEC602B7851 /* SDWebImageDecoder.h */, + 1903B1725F196A865B52DDDC1A2BD740 /* SDWebImageDecoder.m */, + 32F11BE94EA64E284931EE13211BFBD5 /* SDWebImageDownloader.h */, + 519291E5371F0C2FAD1EEA6F786E1D41 /* SDWebImageDownloader.m */, + 374CD16066234452E7C43878019A0C18 /* SDWebImageDownloaderOperation.h */, + 1DB3D56DF81E139F8DE10B4B81F75A9E /* SDWebImageDownloaderOperation.m */, + 0CF1F486490405CB6D327E9964B48F24 /* SDWebImageManager.h */, + 4F9882A9873399959B5A741A7DDAEC02 /* SDWebImageManager.m */, + 4A39A8E5B0EAAD79CD06BCC85C2B6CE1 /* SDWebImageOperation.h */, + 90E048BB42FB6617661967E7D3D153D4 /* SDWebImagePrefetcher.h */, + F197E1DBAE31B57378B6141D9179204A /* SDWebImagePrefetcher.m */, + 01E69CD02F04A42E91A440593AE38207 /* UIButton+WebCache.h */, + 684DFD7ECBB5551A653A62AA04E7288F /* UIButton+WebCache.m */, + A5C464583B3EB6274B1F3762F64CD0FB /* UIImage+GIF.h */, + E93ECC28803C1AAA46C727EEC0426CDC /* UIImage+GIF.m */, + 810627DCFBDA22971DBF1BECA1817CAA /* UIImage+MultiFormat.h */, + B22C35E3B81AAA21464AC1443352552A /* UIImage+MultiFormat.m */, + BDBDDD316E4F5B7EFBC5276C28C75D5C /* UIImageView+HighlightedWebCache.h */, + 86DCECF7E86603CF1CA6BF9DD97ADC21 /* UIImageView+HighlightedWebCache.m */, + 2859993DBC54C542151DB3BE05AB67E4 /* UIImageView+WebCache.h */, + 5C9061FED51126441CF84AFC73EB38CE /* UIImageView+WebCache.m */, + D7F002CEE0C728572DCDE27D651197B5 /* UIView+WebCacheOperation.h */, + D99D4D1F0BBB15D16CA6DB89F3A3ACFE /* UIView+WebCacheOperation.m */, + ); + name = Core; + sourceTree = ""; + }; F0F426707917B1507A92C47EC82299E4 /* Controller Skin */ = { isa = PBXGroup; children = ( @@ -8689,6 +8914,34 @@ path = Graphics; sourceTree = ""; }; + F1BD8F856BF0F44F570C723B3859B352 /* Support Files */ = { + isa = PBXGroup; + children = ( + 7FC32953EC0D6D770E416EF82293A1B1 /* SwiftyDropbox.modulemap */, + A31786EA1A7642B4AF7E809A73AAEB56 /* SwiftyDropbox-dummy.m */, + C2ABAF2897D42614561ECAB22FCE403C /* SwiftyDropbox-prefix.pch */, + 25EF96F6B9247B60C952A5BB11777FD0 /* SwiftyDropbox-umbrella.h */, + ADDACBAB744B830529FA593E7E9CD122 /* SwiftyDropbox.debug.xcconfig */, + E04217CEFCF82D4E2C9F2DC0B3090E3D /* SwiftyDropbox.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SwiftyDropbox"; + sourceTree = ""; + }; + F2341B87199157363A2AC8276C155D6E /* Support Files */ = { + isa = PBXGroup; + children = ( + CDA0F802A4ECCF2B37D4B27747861281 /* SDWebImage.modulemap */, + 8566CDD1FB53D255D5D3A25258C806A7 /* SDWebImage-dummy.m */, + 5D19506EF29EFA81183C84880EC42262 /* SDWebImage-prefix.pch */, + AADC3EF280FDC8505D5068249481C84D /* SDWebImage-umbrella.h */, + C85789FDF6B43171F0FCB8542E299962 /* SDWebImage.debug.xcconfig */, + 42FD340F455E2B2472776617C3C10535 /* SDWebImage.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SDWebImage"; + sourceTree = ""; + }; F25CB79431F49AED72398EE56E723E71 /* GBADeltaCore */ = { isa = PBXGroup; children = ( @@ -8778,20 +9031,6 @@ path = input; sourceTree = ""; }; - FC18A141231F5F8AF364EAEA504A1027 /* Support Files */ = { - isa = PBXGroup; - children = ( - 13E2386205BC0C6A8574002DB9AF6B91 /* SQLite.swift.modulemap */, - 4BBBCBFA40EE49208B031D370878AD29 /* SQLite.swift-dummy.m */, - 24542D74858775F20FC6798EF8EE4264 /* SQLite.swift-prefix.pch */, - B88A4A4D429C70A73A2F3F183EC24732 /* SQLite.swift-umbrella.h */, - 75769AD8AA1E6A55767E34444DEBA81E /* SQLite.swift.debug.xcconfig */, - 5AB2076B345EF471110CA2A7FA91562E /* SQLite.swift.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/SQLite.swift"; - sourceTree = ""; - }; FC9B5BFBFA498134C10E8BAFB0D13FB2 /* osal */ = { isa = PBXGroup; children = ( @@ -8802,6 +9041,20 @@ path = osal; sourceTree = ""; }; + FCE3DE23FD5F8FD6DB958EE1EF370AF2 /* Support Files */ = { + isa = PBXGroup; + children = ( + 76831D1F4916ABDA8E9B757F3D89906C /* GoogleAPIClientForREST.modulemap */, + 3D7A1BA4EEE3E57C803738BDA3D5E308 /* GoogleAPIClientForREST-dummy.m */, + F6A7AA0925B99ECAD9E67DBBB97BB56D /* GoogleAPIClientForREST-prefix.pch */, + 0C147496CE2BE85DE98AFC33F2DBDC08 /* GoogleAPIClientForREST-umbrella.h */, + 1E00B17C1A5DC9E1DDE14FE714A5AFBE /* GoogleAPIClientForREST.debug.xcconfig */, + C2DDE061668DA510D878B4C7EE55B5BA /* GoogleAPIClientForREST.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/GoogleAPIClientForREST"; + sourceTree = ""; + }; FD021266BC654F93DDAFA07180C207CA /* DepthBufferRender */ = { isa = PBXGroup; children = ( @@ -8853,20 +9106,6 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 0BFBCF7C3024C0F3D530003353F9EFC0 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - DB89B219614E471ECBD9AB5F0FA326C2 /* GoogleToolboxForMac-umbrella.h in Headers */, - 3CC43C0EB442C0D7BC854C9FEF6D1D6A /* GTMDebugSelectorValidation.h in Headers */, - DB7B5A0CD362D5CF07FCD9F08C288027 /* GTMDebugThreadValidation.h in Headers */, - 57AB5352A91B7AD813965114B54104C5 /* GTMDefines.h in Headers */, - B4DADF61E162CDA2228C9C462EA1EF2E /* GTMMethodCheck.h in Headers */, - FA0EAACFF92EB2EA0331C1803BF42074 /* GTMNSDictionary+URLArguments.h in Headers */, - 6822C98B9E29C576BA52493F7ECEF92A /* GTMNSString+URLArguments.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 1184813534B88F0F271F5F4851427E41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -8922,21 +9161,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 27B2EA22B6E23A5D6A220B87051F14CA /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 12CEB0176E2C7729DACA31EC21FF24AD /* GTMGatherInputStream.h in Headers */, - 1577E488FAEA3CAD96997901D621A8CA /* GTMMIMEDocument.h in Headers */, - 119652C7AE4B1553F76A5DF290DC68AF /* GTMReadMonitorInputStream.h in Headers */, - 2DF8EEB0BD33DE6A8C07BF6AC69E00E1 /* GTMSessionFetcher.h in Headers */, - E2DBFE64A210D9EE1E1BE248AD5DB63E /* GTMSessionFetcher-umbrella.h in Headers */, - 5FFB6217B24AD96C6E37094334E903EE /* GTMSessionFetcherLogging.h in Headers */, - B297A13AF311273E3D3C05A89ADBBBE7 /* GTMSessionFetcherService.h in Headers */, - 4643AEFB068FD6A92BD19F0E36205DAE /* GTMSessionUploadFetcher.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 29DECF339BB4EC16E87BC641BE73B0CC /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -8964,11 +9188,37 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 45A2F4E7739B1A350407D2C3106D3BFA /* Headers */ = { + 3AA2FAA1D0E276553B39D2E3D779EF75 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - FC16CEF20879563EE345764D753289CF /* ZIPFoundation-umbrella.h in Headers */, + 273779AD3DAABE14C460A6C775E9D236 /* GTMGatherInputStream.h in Headers */, + 4A95FE637C0614FCCD65394782083045 /* GTMMIMEDocument.h in Headers */, + DE291BEC0E5740FC33219DEA9F429E87 /* GTMReadMonitorInputStream.h in Headers */, + 7D80C5B440572EBFC177FDFF7978ED48 /* GTMSessionFetcher.h in Headers */, + CD79973FBE5DE0289D7F49A878BA6B47 /* GTMSessionFetcher-umbrella.h in Headers */, + 097C95DDFD1959CD31B883C9BC41EF55 /* GTMSessionFetcherLogging.h in Headers */, + C9F6EA7F0EB42FF76379805AEE71195A /* GTMSessionFetcherService.h in Headers */, + 15E0058C90957F595875A3FAB81C5C8E /* GTMSessionUploadFetcher.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D539BFB579E57388F8F424388C924E9 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + BEB2D889B2A4A378928812081A3D1E4E /* DeltaCore.h in Headers */, + 09C02AFACAE37E8F657E1888A1CCCEE1 /* DeltaCore-umbrella.h in Headers */, + 3349744BEC0A79775512D95E7488C0F1 /* DeltaTypes.h in Headers */, + 5E2CE67C6A9B952D13F25A130B0849E9 /* DLTAMuteSwitchMonitor.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3E1BBB9CBAA3946696DF9E21776EBDD0 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B141EDB540C158E21DE6530A58B01482 /* ZIPFoundation-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -9693,14 +9943,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 68ABD7D82C81B3FF199AAA2A88B257A0 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B258EAF739993BFAA77C6FA467A7B397 /* Pods-Delta-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 7E72402FD31A078BC78369D9D65F7098 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -10033,6 +10275,67 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 82DB235ECDFECA58B139CE4C93CF1265 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 99AA988ED9AAF3ABD444AA91151D1A7D /* NSBundle+Extensions.h in Headers */, + 6FA1A6F24ACF98FB14A67371EF625FD9 /* NSConstraintConflict+Conveniences.h in Headers */, + A276EF01B8CF3AD779D53C7ABD5D77C1 /* NSFileManager+URLs.h in Headers */, + 19E2262D89EA6A0442CEA237AA76AA52 /* NSLayoutConstraint+Edges.h in Headers */, + A5D0BB039627E7DDF91838068C66A661 /* NSPredicate+Search.h in Headers */, + D51705AF9ED6867D34204F8EEE829D01 /* NSString+Localization.h in Headers */, + 7BB0987D9B11A7D5B0A5E9F43D26D72A /* NSUserDefaults+DynamicProperties.h in Headers */, + A1A346EE931702C55BAADE71698E7BF3 /* Roxas.h in Headers */, + D7F6F49227260D9300C739725DE03F68 /* Roxas-umbrella.h in Headers */, + F781A32EAE164E3F7D34AF3107028D37 /* RSTActivityIndicating.h in Headers */, + AD2816296852E133DE00B5B712D65D8A /* RSTArrayDataSource.h in Headers */, + 11EF832C8D6C3BF3DA5DF53A82C21C31 /* RSTBlockOperation.h in Headers */, + A387A2E6C503F4678E884AD4BD186F59 /* RSTCellContentCell.h in Headers */, + 932FCE3E3F92CDBCE4D18BEF622EDA56 /* RSTCellContentChange.h in Headers */, + D579F6A35B77F4DE66E2B0E62282C9A9 /* RSTCellContentChangeOperation.h in Headers */, + E06C07AC3C311F7FC6F8A8D6C5FF3FB5 /* RSTCellContentDataSource.h in Headers */, + 56B69D0129EBE5214214754125F55760 /* RSTCellContentDataSource_Subclasses.h in Headers */, + 72117DF6144270487EC57B9B5E01189B /* RSTCellContentPrefetchingDataSource.h in Headers */, + 4F30156495B5DCDFC7F89C1D2F2D9AA4 /* RSTCellContentView.h in Headers */, + AD01097E6605E4ECC498ED99174C4168 /* RSTCollectionViewCell.h in Headers */, + DDF3FC93F9A6F20EF9AF2DEAB65B4EC5 /* RSTCollectionViewGridLayout.h in Headers */, + 40222FC2AEBC1088A5771378F18D3A8A /* RSTCompositeDataSource.h in Headers */, + B9CE09F6E3ADFE67A314CED63C8E0723 /* RSTConstants.h in Headers */, + E8BDBD91D9E23495943918DD2326BDD0 /* RSTDefines.h in Headers */, + 5437B0B3AC0F5C2EA972FB07460A5476 /* RSTDynamicDataSource.h in Headers */, + 00F71D33E715A190A61A1FD67B322378 /* RSTError.h in Headers */, + 656D55800ADDD54A218DAC58D76E8690 /* RSTFetchedResultsDataSource.h in Headers */, + B0B431A18A5B7551E54ABD25173F342B /* RSTHasher.h in Headers */, + 148BA584011F2DADA6E348405416C732 /* RSTHelperFile.h in Headers */, + 5604DD4EDFA42EBC3C0E0B93A6A76DEA /* RSTLaunchViewController.h in Headers */, + 0C1F5689BA717A7CB5812828A4B9DABD /* RSTLoadOperation.h in Headers */, + ECA23A638F54DBFCD740249C08D8DD55 /* RSTNavigationController.h in Headers */, + 237CA8760D2383428CAE777E1851F522 /* RSTNibView.h in Headers */, + A17D6F62B0EA95E42F173DC2482F728B /* RSTOperation.h in Headers */, + DE69C710239E652AFCD9CB91569EEF02 /* RSTOperation_Subclasses.h in Headers */, + AC6AA781E1618DFF02DD02A9DE992BE8 /* RSTOperationQueue.h in Headers */, + 33F1065FEAD1D6EC2782C811890D9EEB /* RSTPersistentContainer.h in Headers */, + 306CF75F20EE06701E62C2F332204906 /* RSTPlaceholderView.h in Headers */, + E3465ED475E7A023B07AD0B7D602B217 /* RSTRelationshipPreservingMergePolicy.h in Headers */, + 2764E4B14B2E755B3B172C1710F05880 /* RSTSearchController.h in Headers */, + D8FBAB58BC7B04615A9C9E4947E1E306 /* RSTSeparatorView.h in Headers */, + 7D91E5E992560E07B701809F219E7A64 /* RSTTintedImageView.h in Headers */, + CD5AF56D25BC2751B5B6025DDB1FA0C0 /* RSTToastView.h in Headers */, + 458EA2839AA9021279E0AE271492FDDC /* UIAlertAction+Actions.h in Headers */, + 52CB103EE58F1825BB61ACAB137A84C5 /* UICollectionView+CellContent.h in Headers */, + EEF1348868D6EE8B085FC3772DA1EABA /* UICollectionViewCell+CellContent.h in Headers */, + B6051C476791D3993EF5886755EEB2F6 /* UICollectionViewCell+Nibs.h in Headers */, + 81F69BBAA58BDA48C3578BCD2DE8EC9D /* UIImage+Manipulation.h in Headers */, + FCD8B76614D8D02AF7991997026D8322 /* UIKit+ActivityIndicating.h in Headers */, + A5DF741472773807519BCC1BEAB7DFEC /* UISpringTimingParameters+Conveniences.h in Headers */, + 68FAE05630037A9E6A74E8E32EB818B4 /* UITableView+CellContent.h in Headers */, + 3FFB08EA3DD68464BD5B874DB0D508E2 /* UITableViewCell+CellContent.h in Headers */, + 43F1A4BDE979ACB5C59D9700D65B4EDC /* UIView+AnimatedHide.h in Headers */, + 9853CD77426FF9FD29EEACE202A57826 /* UIViewController+TransitionState.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8CCD7E375E7F7A8E289EB660E5A411F1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -10041,13 +10344,48 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - AC79A083834E06CB841C32B22E580F67 /* Headers */ = { + 9A0A72818710D9A67CEC489D05713870 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1BC8FD9B47A7439B1E6222A14FEBDE2F /* DBChunkInputStream.h in Headers */, - E948703A3443B2D2D2D8723BE03AC50D /* SwiftyDropbox.h in Headers */, - 253F3CE3DF554BF36424995224319256 /* SwiftyDropbox-umbrella.h in Headers */, + 5EC3A63A06C26020819E6D246932FABD /* AppAuth.h in Headers */, + 24F6F46E0260E820BC8C2CF29F099FDD /* AppAuth-umbrella.h in Headers */, + 6D3C1B16D4CE61B52FD41E51E460A72F /* AppAuthCore.h in Headers */, + A626BB8720A47D63640D5998889AFE10 /* OIDAuthorizationRequest.h in Headers */, + 45FA217D8A09EC64E385E20F53E3727F /* OIDAuthorizationResponse.h in Headers */, + 1198484F6C2747B5A32CE33C8619FCD2 /* OIDAuthorizationService.h in Headers */, + B7DA525F7ED4A71A87217F8DAA536064 /* OIDAuthorizationService+IOS.h in Headers */, + 674A7F30ED01B781C29B879F3E7E3B63 /* OIDAuthState.h in Headers */, + A9CB89D28F0BCDEC0AE0C8795292DE39 /* OIDAuthState+IOS.h in Headers */, + 1F417CD1429CC9B61DC398B806DB45AE /* OIDAuthStateChangeDelegate.h in Headers */, + AE8D33C8FB33B57BC9CCC7BBECCD1881 /* OIDAuthStateErrorDelegate.h in Headers */, + 40434CD6274B9D13388DD1A08B7C6EB6 /* OIDClientMetadataParameters.h in Headers */, + 3E2A545C8EA735D48E269DFD732DC107 /* OIDDefines.h in Headers */, + C72ABA4DA09919D87115230754EBFCB5 /* OIDEndSessionRequest.h in Headers */, + FE1F4ECCDB94C7034A4401140E0BEBF6 /* OIDEndSessionResponse.h in Headers */, + 2458C6994F65686A0BC723D9E87D244F /* OIDError.h in Headers */, + F7648239120699351C08E480E3AF46AE /* OIDErrorUtilities.h in Headers */, + E9BC5B2C7BB7DCF038E70097812774E7 /* OIDExternalUserAgent.h in Headers */, + 18F27129CB930A89AB7798158C2982DB /* OIDExternalUserAgentCatalyst.h in Headers */, + 0E3820AB74C99EA4F6B2C0FB8A34EE38 /* OIDExternalUserAgentIOS.h in Headers */, + 032B7AC4D31DD6F3839787A6FC93F8B4 /* OIDExternalUserAgentIOSCustomBrowser.h in Headers */, + 0AF651B804B6B8A8A5A52CE91138BFC3 /* OIDExternalUserAgentRequest.h in Headers */, + B935C2C0051F37DAEC2199101644C1F5 /* OIDExternalUserAgentSession.h in Headers */, + 17BE2A4F5BE69077DA5F358B3ABD809F /* OIDFieldMapping.h in Headers */, + 3DC96774D87A9317378E71FB6540A329 /* OIDGrantTypes.h in Headers */, + 56AE3EA544042F3AAC7E3D7D596B423E /* OIDIDToken.h in Headers */, + E2114A26364CE82D19486C3AEFFA51C5 /* OIDRegistrationRequest.h in Headers */, + B95F00C6D96B665D5DA4F2202C81106B /* OIDRegistrationResponse.h in Headers */, + 9EAD7EA4820F6CBD2759C7A77A88A156 /* OIDResponseTypes.h in Headers */, + 11F4192141425ACF00360ED0CB85A902 /* OIDScopes.h in Headers */, + CE9E9B2D76FBA91771542595C6C1C5EF /* OIDScopeUtilities.h in Headers */, + A973E41A619BC01731D06BCFB1FF6C1F /* OIDServiceConfiguration.h in Headers */, + F0421A7031BE6E308D3FD0FCE8F225A1 /* OIDServiceDiscovery.h in Headers */, + A3367358B8F87A2A2DA61BDCC201D3D5 /* OIDTokenRequest.h in Headers */, + D42A4A68244158741379695CE6C0F188 /* OIDTokenResponse.h in Headers */, + A72B298CC4323D3A4CA746D37E0E8E84 /* OIDTokenUtilities.h in Headers */, + DE66826524E0FAEE0E07AEF88A209D0A /* OIDURLQueryComponent.h in Headers */, + EDACE38AA7FE871FEE64F0BB10786EB2 /* OIDURLSessionProvider.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -10061,6 +10399,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BA4EEED22C2D4153BA5CE00A95CE4B86 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 5AF6989F9E0FADE9815651935A52C7D6 /* GTMAppAuth.h in Headers */, + 6A055A01458AF71F567817308316A5ED /* GTMAppAuth-umbrella.h in Headers */, + A289A91991FD33A28F9D0AD86BE33C40 /* GTMAppAuthFetcherAuthorization.h in Headers */, + 622691B0EBCEAB592A34EDA32A82F3EC /* GTMAppAuthFetcherAuthorization+Keychain.h in Headers */, + 826BEA30577B0C879FFFCF98BA79F1DF /* GTMKeychain.h in Headers */, + C90987A71BCA340A806B8D5BAC38B110 /* GTMOAuth2KeychainCompatibility.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; C0636D2F84D579551458E5D65D97D426 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -10084,17 +10435,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - CC765527FF39D811141E85AB970C5718 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 1BC13158C5A72D50C3879D3E928CDC63 /* DeltaCore.h in Headers */, - 4BBEF3361572B71857D744493DCBC068 /* DeltaCore-umbrella.h in Headers */, - D39289DF13FC9A927A31A670FEAB1E6F /* DeltaTypes.h in Headers */, - 804F9C99E5E6A801A3261655DB7D4A11 /* DLTAMuteSwitchMonitor.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; CF89E3104DD8038179BE52A3DD126111 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -10167,6 +10507,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DE8FB4094FCBA2310B7E8EE77313CCA9 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 49F4C2F4E73B38019A937DC4A0064D76 /* Pods-Delta-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; EDE1E282E73A6B3F3F5476A7F5952343 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -10175,64 +10523,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - FC9A9F6E61D4CD7F7551E0AF307DADEB /* Headers */ = { + FCFF6F4355304E3A7E62921348687B37 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 74863411F4369174A69D1D310AE48A2F /* NSBundle+Extensions.h in Headers */, - 510885EE298CE9547583D923550867BC /* NSConstraintConflict+Conveniences.h in Headers */, - 92D96E083E72EFC3FCA49560000AFDD4 /* NSFileManager+URLs.h in Headers */, - D44F830424DBCAE3FE3E7C835037B4D5 /* NSLayoutConstraint+Edges.h in Headers */, - C03B72B616F7DEAC9C3FD176BBE536F6 /* NSPredicate+Search.h in Headers */, - 5958A7807099957AC1EED605B560D13F /* NSString+Localization.h in Headers */, - 576E245E446BD6A428B0291DB1A0D284 /* NSUserDefaults+DynamicProperties.h in Headers */, - DC796B1B17BA008A905B492BF356E5C5 /* Roxas.h in Headers */, - 7B705214DE4AE6DD613172682F70CC73 /* Roxas-umbrella.h in Headers */, - C864A87E7E043C5FD8F6E234424494F7 /* RSTActivityIndicating.h in Headers */, - 7E05B3F94E4826FA3F6D9B636D581E9A /* RSTArrayDataSource.h in Headers */, - F1490B80F6E2DDF4AC0354F5C2962503 /* RSTBlockOperation.h in Headers */, - 6F20A644E0020CD933167F8787BE65B0 /* RSTCellContentCell.h in Headers */, - 17CE565E6072F092E438CF51DA6E5B5C /* RSTCellContentChange.h in Headers */, - 797D5C78945FEFC03F3E01E317EF5CDC /* RSTCellContentChangeOperation.h in Headers */, - 9F3B1D5F5A9B481434201227C31A78EB /* RSTCellContentDataSource.h in Headers */, - 9599ADB281EF38C0766DBCE1C8EBB80F /* RSTCellContentDataSource_Subclasses.h in Headers */, - E4942F9F78DEDBA2293646101599AB07 /* RSTCellContentPrefetchingDataSource.h in Headers */, - D0F3B50F4C6B120305C7671144A3A99F /* RSTCellContentView.h in Headers */, - BFAE06E23BCC98B20A7C1619B12CA859 /* RSTCollectionViewCell.h in Headers */, - B99169F9F5479A13D020FADEC31668E5 /* RSTCollectionViewGridLayout.h in Headers */, - 35EFFBCAE32A7D4501E3A0F047EA29C9 /* RSTCompositeDataSource.h in Headers */, - 69432F22B132BE36989778E6EFF26C00 /* RSTConstants.h in Headers */, - B909E7E0742D3F6F5A5E1BCB4B6F9A70 /* RSTDefines.h in Headers */, - 74147321558A01611FC15FD8C5F60FF6 /* RSTDynamicDataSource.h in Headers */, - 7F672845861EECF0EA4486ED859E7387 /* RSTError.h in Headers */, - C69DD7563D2D8B4E00B2E8A5B1B6331D /* RSTFetchedResultsDataSource.h in Headers */, - 2F67E3ECDAE272A345C6D46891A2C1B2 /* RSTHasher.h in Headers */, - 73C6ACB8B241F5E17C56555E537497A0 /* RSTHelperFile.h in Headers */, - FA61CAAB6D8624FB6060BC1569696684 /* RSTLaunchViewController.h in Headers */, - B44B64B60EB9561C48562F6B3ACA1514 /* RSTLoadOperation.h in Headers */, - A620827F6D47EA5D0443FA46AF88897E /* RSTNavigationController.h in Headers */, - 63F86ECE23B1D616412455D2D66EEAB2 /* RSTNibView.h in Headers */, - BEDE8031E49227D2DB8989ED7FFCD69B /* RSTOperation.h in Headers */, - F352E4BDB218990315AAFA0EA7745D8F /* RSTOperation_Subclasses.h in Headers */, - 15EFB271421D7E8869161476BA69F152 /* RSTOperationQueue.h in Headers */, - 4D01D7DC630CD8C130383A8FEA5B02BA /* RSTPersistentContainer.h in Headers */, - EB99E70ECA09AC660E7197169EDC7AF4 /* RSTPlaceholderView.h in Headers */, - 5E6C8B93451194A6CDF5FA3181BF5CE2 /* RSTRelationshipPreservingMergePolicy.h in Headers */, - FCE1768EFA9F6D5B803048839268F21A /* RSTSearchController.h in Headers */, - 5A4DEBA71ABB2938CEFCE15C052982CE /* RSTSeparatorView.h in Headers */, - 7CCE081CB290EC96C8F06C0B071DAA44 /* RSTTintedImageView.h in Headers */, - 6239E5403C941AD63072ABAF9136753B /* RSTToastView.h in Headers */, - 3A1312E25EB2994225EB2BCB925F5A3F /* UIAlertAction+Actions.h in Headers */, - 38A8DAAC138F27AA049F7FCB542E6E6B /* UICollectionView+CellContent.h in Headers */, - BD2A303D0E510EDC3DDB457909E95390 /* UICollectionViewCell+CellContent.h in Headers */, - 361616F5761CED1182C2D3CC9788E51B /* UICollectionViewCell+Nibs.h in Headers */, - 04BB42EECBFAE435FE44D975FA4682E8 /* UIImage+Manipulation.h in Headers */, - 2BCB3B0E54399BE03A1BB5546CA1CB4E /* UIKit+ActivityIndicating.h in Headers */, - 44C5E9FA4117733FEFF3399287D9F063 /* UISpringTimingParameters+Conveniences.h in Headers */, - D3BA9075ABD08EBF7DE5114A4C57BA72 /* UITableView+CellContent.h in Headers */, - 0982AF38104A6A3C7F068BE1E4F35DA8 /* UITableViewCell+CellContent.h in Headers */, - C50FE352C7218811265F45B12CE5DA12 /* UIView+AnimatedHide.h in Headers */, - 403EF48EB8ED589888457967A8D12BB3 /* UIViewController+TransitionState.h in Headers */, + D866C834A2A04F9C6B90BF4C67D01F1B /* DBChunkInputStream.h in Headers */, + 231DDA0E273AF813E7CF426C4250B5DE /* SwiftyDropbox.h in Headers */, + B57E6056680308B4169E3607E21B73BF /* SwiftyDropbox-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -10251,8 +10548,8 @@ buildRules = ( ); dependencies = ( - 7B74B476418D2254A7DBCBABC2EB7C8D /* PBXTargetDependency */, - 60E1F8AF322DD8855E9B1EA0F3ED6C6F /* PBXTargetDependency */, + 27915D18668C6619567344FD083EAE0B /* PBXTargetDependency */, + B90F846715153C3E811487302FEF85FF /* PBXTargetDependency */, ); name = NESDeltaCore; productName = NESDeltaCore; @@ -10272,8 +10569,8 @@ buildRules = ( ); dependencies = ( - 584A64134687EB9E9A7E1716B4EE4F7F /* PBXTargetDependency */, - 405DB1395DC7FFCC66188966E9C8FF0F /* PBXTargetDependency */, + D4AF32E3A420951E3D71342A5EF48B6A /* PBXTargetDependency */, + FC19AEA68C7C18B2DA9475AB1898B10E /* PBXTargetDependency */, ); name = N64DeltaCore; productName = N64DeltaCore; @@ -10292,8 +10589,8 @@ buildRules = ( ); dependencies = ( - BFBBC7C353D411E346EC54F80A8A8F56 /* PBXTargetDependency */, - 3333CED60D820CEA83E3774494283579 /* PBXTargetDependency */, + 77E7AE66E1E69EEFE7DEC62D520BD57F /* PBXTargetDependency */, + CD3B9085F0E898B9FFA3D1EAED1FD4D3 /* PBXTargetDependency */, ); name = SNESDeltaCore; productName = SNESDeltaCore; @@ -10302,11 +10599,11 @@ }; 1B47E46598F87113B00B3B25BBF51B32 /* DeltaCore-DeltaCore */ = { isa = PBXNativeTarget; - buildConfigurationList = A61EFF98EBAB617B0477DB9275217779 /* Build configuration list for PBXNativeTarget "DeltaCore-DeltaCore" */; + buildConfigurationList = 89DC8FEB15062D86BEFD312203ADCF26 /* Build configuration list for PBXNativeTarget "DeltaCore-DeltaCore" */; buildPhases = ( - BE5266821CE84258ED1D9C61320F0A44 /* Sources */, - 4819BB67A9E465ADAEAD054C96F9FBF8 /* Frameworks */, - A8460FC64032AFF1DCD55C12596F45A9 /* Resources */, + CDDD74A780D6502A4F82C1F74DE19F93 /* Sources */, + 60C8C597948FA10F4D8A847C0519E711 /* Frameworks */, + 63FC58D86BEC26E4ACBB226C08F9BBCB /* Resources */, ); buildRules = ( ); @@ -10319,11 +10616,11 @@ }; 280620EDC57ABB510508698A7233E414 /* N64DeltaCore-Mupen64Plus */ = { isa = PBXNativeTarget; - buildConfigurationList = CB4B243CF23253D32380869A30311BE2 /* Build configuration list for PBXNativeTarget "N64DeltaCore-Mupen64Plus" */; + buildConfigurationList = 24A1D8D2B42CF7E088967A7102856A6E /* Build configuration list for PBXNativeTarget "N64DeltaCore-Mupen64Plus" */; buildPhases = ( - 218D52BECFBF6D2008130183D8C39A40 /* Sources */, - 210EA27381AAAC85C997626875A95E52 /* Frameworks */, - D081D46F3456594C0452CB7E5F52F22A /* Resources */, + B7CF1F6568C35C929AC52E1BECBE0CFB /* Sources */, + 16182241408C0E7B850FE93BB1B8DEE6 /* Frameworks */, + AD00840368A6E6CFFF0CC083718E51B7 /* Resources */, ); buildRules = ( ); @@ -10336,37 +10633,38 @@ }; 33C94426DAF58519DC6806AF4C44C9E7 /* Pods-Delta */ = { isa = PBXNativeTarget; - buildConfigurationList = 54196F2930F7F66CFF163D8030FAC5C2 /* Build configuration list for PBXNativeTarget "Pods-Delta" */; + buildConfigurationList = 2FEC6A495F14D70E19AADEB8CD5537E7 /* Build configuration list for PBXNativeTarget "Pods-Delta" */; buildPhases = ( - 68ABD7D82C81B3FF199AAA2A88B257A0 /* Headers */, - 3916EC5A6CB929D445F7709D5824E179 /* Sources */, - A44F41E5598ABEE7EC448498AEA05FA3 /* Frameworks */, + DE8FB4094FCBA2310B7E8EE77313CCA9 /* Headers */, + 203A2790DB3E2607910F5D3E01CF047D /* Sources */, + C51EF155313EA6F0A39EB53611EB892C /* Frameworks */, ); buildRules = ( ); dependencies = ( - B893B7538E4BA21A7D39A98A2A372BE4 /* PBXTargetDependency */, - A72D314FD7CBA7BB199A34655231A53A /* PBXTargetDependency */, - 7223F965D59B06D02CEBA5668B3A215B /* PBXTargetDependency */, - 8DF4E035B0EA67C9D2B5E81FAAD105A2 /* PBXTargetDependency */, - B07DA2ABC3DE6D9A601DDE618D551A3D /* PBXTargetDependency */, - 5F4837AB87C8BE9B028A20B89DF363EE /* PBXTargetDependency */, - D0A74EB32FD885956697FF47C4A2EC10 /* PBXTargetDependency */, - D45175856A3E2CA63EF2763644BE1DB4 /* PBXTargetDependency */, - 3BF7467B9C159C651D4ADF0E169E0E09 /* PBXTargetDependency */, - 0FD168922DA16D011F4EBBEC1724DBD7 /* PBXTargetDependency */, - A294DF459E6EAA3BCD4C8AEBC857A34F /* PBXTargetDependency */, - 31DFE8C4FDA8B68C467B126F1F173892 /* PBXTargetDependency */, - 2D4CD0B7A33315E3CD9B312424710ADC /* PBXTargetDependency */, - BA9AB397129A53475C415C208E45E540 /* PBXTargetDependency */, - CAB5255210A87458FB38F27D53D50BF8 /* PBXTargetDependency */, - E120C130FA87078100FA1D7358BF46FB /* PBXTargetDependency */, - B8270A8FB74E336C3C90DFA5A149C0D2 /* PBXTargetDependency */, - CACA03D933B717B4E6ABD48614BB992D /* PBXTargetDependency */, - 63BB2FDFD973E6FC98A4CAA9BC3A5CD2 /* PBXTargetDependency */, - AD81B017854CB26D0A2D18C9CE39C261 /* PBXTargetDependency */, - 0C4F9235A49FC0F67FA07FF9D9DE9ABC /* PBXTargetDependency */, - B4BD8CDF06B2C8F30A9378AC866A82FC /* PBXTargetDependency */, + 2112E0D63C42F20CB97F5ECBD7A4E1A4 /* PBXTargetDependency */, + 1503E8C0492EF5E61F202A09DA21E5C6 /* PBXTargetDependency */, + FABFC06117019070CC15B7710CAC6EC0 /* PBXTargetDependency */, + 6CBBE451A7D1C3A08C82542C1E0040D4 /* PBXTargetDependency */, + E13E673AD2804CD9DE52CA13C294E7A6 /* PBXTargetDependency */, + 10201230581B4419FFBDBE85EF053F32 /* PBXTargetDependency */, + 28EE65EA59A8BBF50124F4CC59B06290 /* PBXTargetDependency */, + B44C07B4B5F167F93086445BFE9CC1D0 /* PBXTargetDependency */, + 715902BCB336D2D24EC59FFEF5714920 /* PBXTargetDependency */, + 4A4C60E7C5CE914F6C7B90FC41AA19D5 /* PBXTargetDependency */, + 238EEA2E283E44E053F0B369F9CB85E9 /* PBXTargetDependency */, + AEE392605693D1262AC59FAC9A747FF0 /* PBXTargetDependency */, + EA76B2103493AEEED85C24641B0EBC71 /* PBXTargetDependency */, + 29388C9E64571851AD02A6DE16D1918C /* PBXTargetDependency */, + 9CD3BECE21CF000B78DFEEF86F502355 /* PBXTargetDependency */, + 623D97BF6B87233BA431B76F6B501D7D /* PBXTargetDependency */, + 04E83C98BDA51B627E572C6E95BA8EDD /* PBXTargetDependency */, + 40992F2D18F1D99073EB764374FEC509 /* PBXTargetDependency */, + 636E3417A93E3B1842F0FD381CE673C8 /* PBXTargetDependency */, + CEC7BD3BB1D71B931F7AB7DBF7BD101B /* PBXTargetDependency */, + AB25C93C73538EB029F179B21903CF33 /* PBXTargetDependency */, + 47C889C72B72CCE6D3708D79927D0F84 /* PBXTargetDependency */, + 4EFEDBF3593AFCC349C8B4FEC088A263 /* PBXTargetDependency */, ); name = "Pods-Delta"; productName = "Pods-Delta"; @@ -10402,8 +10700,8 @@ buildRules = ( ); dependencies = ( - 65FAC1705AA8E5AC149C5257978E9888 /* PBXTargetDependency */, - D5DF0386E3E7F77F73D4970BA4887FE7 /* PBXTargetDependency */, + 6F0CE4B01807950B88C1E60B59DA0191 /* PBXTargetDependency */, + 1D742D4B1E43AAD5460365803124862D /* PBXTargetDependency */, ); name = MelonDSDeltaCore; productName = MelonDSDeltaCore; @@ -10430,19 +10728,19 @@ }; 530F469AED058B94728C278CCA514500 /* DeltaCore */ = { isa = PBXNativeTarget; - buildConfigurationList = 74C3E37F40C49D1F4520899231264732 /* Build configuration list for PBXNativeTarget "DeltaCore" */; + buildConfigurationList = 3B8C1B108D2D3D538B67AD186A20A63C /* Build configuration list for PBXNativeTarget "DeltaCore" */; buildPhases = ( - CC765527FF39D811141E85AB970C5718 /* Headers */, - E7794EC466A1FA3904D282C410778E19 /* Sources */, - 52D0FA85C9BC2D7DF1F71A809586A4DB /* Frameworks */, - 6935470A468D81C84816374492D79340 /* Copy generated compatibility header */, - 5333C4F6228DB89674A7CEFD1863A981 /* [CP-User] Copy Swift Header */, + 3D539BFB579E57388F8F424388C924E9 /* Headers */, + 8E411DE747051728B38B8A55D129EBFF /* Sources */, + 52CC584F33DF1D6189E15DEF7A058213 /* Frameworks */, + 98A03D6FBC5BEB669DF26CDDDB94A529 /* Copy generated compatibility header */, + 9664C8F4D28579D63EB1515C466CED68 /* [CP-User] Copy Swift Header */, ); buildRules = ( ); dependencies = ( - D16AFAC311E666D713B0263FEA713E35 /* PBXTargetDependency */, - 150D86AEB94AC827006238033CFFF642 /* PBXTargetDependency */, + 39311880F77E386C86C8DA36B6BCA0A0 /* PBXTargetDependency */, + ACE6B460F49DE75C23E8A21CEC1B5F2C /* PBXTargetDependency */, ); name = DeltaCore; productName = DeltaCore; @@ -10451,11 +10749,11 @@ }; 5B32FEE5AD13CB944235C9158BECB929 /* MelonDSDeltaCore-melonDS */ = { isa = PBXNativeTarget; - buildConfigurationList = 0CA496B39F943A5EB3AF2261C664733C /* Build configuration list for PBXNativeTarget "MelonDSDeltaCore-melonDS" */; + buildConfigurationList = DD6CAC2FFE855C331CBDAA1F404AE160 /* Build configuration list for PBXNativeTarget "MelonDSDeltaCore-melonDS" */; buildPhases = ( - A4FAC7BB2092FCF78218D409A19DB310 /* Sources */, - 357413F987F8E80ADD668D43E93E564F /* Frameworks */, - EC8CDA63283D0C3A559D9541482FA712 /* Resources */, + B74B490B1E084F7CA8A8831C2BAC4E88 /* Sources */, + 58A92C878B9D3DCFB125410BA38BADB0 /* Frameworks */, + F1E4046305FCD91F18F5822334957B7E /* Resources */, ); buildRules = ( ); @@ -10468,11 +10766,11 @@ }; 5C36E65AEF44273E4AF0CBFADD00C090 /* GBCDeltaCore-GBCDeltaCore */ = { isa = PBXNativeTarget; - buildConfigurationList = E4EDC2895B540564D7C9ED07FEF6FDF7 /* Build configuration list for PBXNativeTarget "GBCDeltaCore-GBCDeltaCore" */; + buildConfigurationList = BAF81FB83E228331B26A5A1CEA6CDC37 /* Build configuration list for PBXNativeTarget "GBCDeltaCore-GBCDeltaCore" */; buildPhases = ( - 7C0E8476DD7E1CFA88556E5B3CD1A88F /* Sources */, - 9C9138727C7CB7EDCF8E7DB9A1E7E9A5 /* Frameworks */, - 98E0868298FA3D5073FE5A23AF22192C /* Resources */, + B80EFF08F32CAE3EC6B29E5465C4F87E /* Sources */, + 33B14229D7BCB0F453CC3E0D1FEF83D2 /* Frameworks */, + FDCF81A3515AAE4C04B06C81FA6FFFEF /* Resources */, ); buildRules = ( ); @@ -10483,6 +10781,23 @@ productReference = 1F23DBC67505E77BE77552D6D84A3DAA /* GBCDeltaCore-GBCDeltaCore */; productType = "com.apple.product-type.bundle"; }; + 5C642AA10FB29936669CC269F42079C6 /* AppAuth */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5B5FED3C22EDD8397D3FB134C41BBF1C /* Build configuration list for PBXNativeTarget "AppAuth" */; + buildPhases = ( + 9A0A72818710D9A67CEC489D05713870 /* Headers */, + DC5EEF63703EEFC7F9FDF49B9E174BAE /* Sources */, + A55A4267A04FED87945C3128391E1CF0 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AppAuth; + productName = AppAuth; + productReference = 3FD1B4C1246D643E9476438C28048FA8 /* AppAuth */; + productType = "com.apple.product-type.library.static"; + }; 5CB4163F0A6D4BDE0A490758A78BA43D /* Harmony */ = { isa = PBXNativeTarget; buildConfigurationList = DAE691A18BC09FB13583507769DF5BBF /* Build configuration list for PBXNativeTarget "Harmony" */; @@ -10495,10 +10810,10 @@ buildRules = ( ); dependencies = ( - 06C88D7533B88FF913507D709B32D471 /* PBXTargetDependency */, - F79495F0D1A7769F86BA739EE38BE670 /* PBXTargetDependency */, - 1184AD1C06F5719CE39D9DDB3C9D0ED3 /* PBXTargetDependency */, - 9549964E95EE7D1903B985FD7003E796 /* PBXTargetDependency */, + 6E9A901811BE3099E935F1FC22893C31 /* PBXTargetDependency */, + 8A1E33141C1DE6A05C1C246C32303E74 /* PBXTargetDependency */, + 6466A79073C35950697C09C468BF8C95 /* PBXTargetDependency */, + 87AD3D8C35793D912C2A2516A2E01F70 /* PBXTargetDependency */, ); name = Harmony; productName = Harmony; @@ -10507,11 +10822,11 @@ }; 6538136F848A07F507372CCFB40CEB88 /* SNESDeltaCore-SNESDeltaCore */ = { isa = PBXNativeTarget; - buildConfigurationList = FE782205259167B7CB9B4164B7F9E233 /* Build configuration list for PBXNativeTarget "SNESDeltaCore-SNESDeltaCore" */; + buildConfigurationList = 04E7E97FC89B707F89FF2D8CEDBF5E10 /* Build configuration list for PBXNativeTarget "SNESDeltaCore-SNESDeltaCore" */; buildPhases = ( - C15D65156D281112E31055785C0DB923 /* Sources */, - DE11EF2192EC02CC335CFF90A59E4F5C /* Frameworks */, - DA4FDAD650076F484AE40B755762ED5D /* Resources */, + 2044D2266A9244885412FD78AB43CB10 /* Sources */, + 3EBF19B0654575222A5CD8E9DD86E294 /* Frameworks */, + 110C320962F019E551FDADE7020EAA8E /* Resources */, ); buildRules = ( ); @@ -10533,9 +10848,9 @@ buildRules = ( ); dependencies = ( - E21AB63C36D7137CA2F5593C57AFC689 /* PBXTargetDependency */, - E63D0301BA0E8864C0B79FF61E040DAB /* PBXTargetDependency */, - BF2BC8A27FB0E94A8B5015FAF32981E7 /* PBXTargetDependency */, + 2D39EBA8ECED05A35D6710121C3C8E74 /* PBXTargetDependency */, + C34BDEAB78537CF42D621EC8314BA5F5 /* PBXTargetDependency */, + 7F9A331E45C1D818CB903CC86F0528C1 /* PBXTargetDependency */, ); name = "Pods-DeltaPreviews"; productName = "Pods-DeltaPreviews"; @@ -10554,8 +10869,8 @@ buildRules = ( ); dependencies = ( - 0602117E79F378CA6EC9432E4A2F2DFE /* PBXTargetDependency */, - B96F054E35BA2069A9CE75D212C23632 /* PBXTargetDependency */, + A308457B689C0C3F93100F38522A3058 /* PBXTargetDependency */, + A01BA50C5F0D561C95FB6A11135566FD /* PBXTargetDependency */, ); name = GBADeltaCore; productName = GBADeltaCore; @@ -10564,11 +10879,11 @@ }; 7F839870ECBE0065B4BCC02E5F98F48A /* NESDeltaCore-NESDeltaCore */ = { isa = PBXNativeTarget; - buildConfigurationList = 2DE70B831705E35B38C14C221BEB70EA /* Build configuration list for PBXNativeTarget "NESDeltaCore-NESDeltaCore" */; + buildConfigurationList = 09B200A2586DB2CC057311A44B897BEA /* Build configuration list for PBXNativeTarget "NESDeltaCore-NESDeltaCore" */; buildPhases = ( - CD1EF2680ED27B75CE432198964346B0 /* Sources */, - 90579C7237FDE073EA9A104552E21A4D /* Frameworks */, - 92670818CD3183B253308E902670EA32 /* Resources */, + 93417B656AD189A4972361F7DFBEF9E5 /* Sources */, + B6AF485A92AF52D66CC240C91F6985B2 /* Frameworks */, + 8C8D3C512F23648184903BC33D167797 /* Resources */, ); buildRules = ( ); @@ -10579,13 +10894,32 @@ productReference = 487C7DB0A7257F16983BEF8324BEF561 /* NESDeltaCore-NESDeltaCore */; productType = "com.apple.product-type.bundle"; }; + 8627999EF1D5E93E13DAFF580DA8CDCF /* GTMAppAuth */ = { + isa = PBXNativeTarget; + buildConfigurationList = 62E72F0214AA2B95FFD06A5094AB62AC /* Build configuration list for PBXNativeTarget "GTMAppAuth" */; + buildPhases = ( + BA4EEED22C2D4153BA5CE00A95CE4B86 /* Headers */, + D18C83D9E20EFA0FA26A3F062F35D251 /* Sources */, + 348604DF1EDBF852AA5003225119A438 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + A75B9120111EDEC74CD38AD687D861E3 /* PBXTargetDependency */, + 9EACE67A17CF18B3F7448F0AFBE698B5 /* PBXTargetDependency */, + ); + name = GTMAppAuth; + productName = GTMAppAuth; + productReference = 6FD122EA0AB9AB2A8FFA5F676C795DF0 /* GTMAppAuth */; + productType = "com.apple.product-type.library.static"; + }; 890229DC8DCC9C43917568A0C4502FCA /* GBADeltaCore-GBADeltaCore */ = { isa = PBXNativeTarget; - buildConfigurationList = 598A4E912D6B733A5E93F1A84DABBED3 /* Build configuration list for PBXNativeTarget "GBADeltaCore-GBADeltaCore" */; + buildConfigurationList = EAC3EF6889DECE73845AAED3FDD67F48 /* Build configuration list for PBXNativeTarget "GBADeltaCore-GBADeltaCore" */; buildPhases = ( - A1E110048D2CECE2328841DB5B76441C /* Sources */, - 9561537B3E7428F8F980599BA0D08823 /* Frameworks */, - 90266F59941DA292B336BB7123CACF37 /* Resources */, + 406B452E52ADF1B76AFC59E6392D8F05 /* Sources */, + 51CE2E369CDC8423AAD8F781836EDCF5 /* Frameworks */, + 9D7D7EB4E225936555BC8B2718A4365B /* Resources */, ); buildRules = ( ); @@ -10598,12 +10932,12 @@ }; AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */ = { isa = PBXNativeTarget; - buildConfigurationList = 4BF080638F1BF895E31B0C5D2DB56B66 /* Build configuration list for PBXNativeTarget "ZIPFoundation" */; + buildConfigurationList = AC08A8742DDE1C7A38E6DCD9B35CE59E /* Build configuration list for PBXNativeTarget "ZIPFoundation" */; buildPhases = ( - 45A2F4E7739B1A350407D2C3106D3BFA /* Headers */, - 09F9375093891FBFBADBC4D6D333A230 /* Sources */, - F9C135444B8F6D6706847FEB55B83326 /* Frameworks */, - DEF50063DA2C498D1EFEA37B36C9F694 /* Copy generated compatibility header */, + 3E1BBB9CBAA3946696DF9E21776EBDD0 /* Headers */, + 9F9B5B0D1BFF01F48E13B90301234FC1 /* Sources */, + 204B31357C52413610E09829733BE80E /* Frameworks */, + E1BA641F0D52D66E7FBD1474637CD62D /* Copy generated compatibility header */, ); buildRules = ( ); @@ -10616,11 +10950,11 @@ }; B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */ = { isa = PBXNativeTarget; - buildConfigurationList = 0B5724438AC08EB51CF27843F2C55956 /* Build configuration list for PBXNativeTarget "Roxas" */; + buildConfigurationList = D2B5C7A37C0C275FDBFBD82B51C0FC9A /* Build configuration list for PBXNativeTarget "Roxas" */; buildPhases = ( - FC9A9F6E61D4CD7F7551E0AF307DADEB /* Headers */, - B36A33A9AB00E4F9515BA0CA965E1DDA /* Sources */, - 51BDF4D0DD1B4032389879AA789E5F67 /* Frameworks */, + 82DB235ECDFECA58B139CE4C93CF1265 /* Headers */, + 961159007D69A2652AC0800DEB731514 /* Sources */, + 507CBE0ECE206C4E1EC0B93345FB0EB3 /* Frameworks */, ); buildRules = ( ); @@ -10648,30 +10982,13 @@ productReference = 53A730F4F4248E7E3F38F8409A2DE97C /* SMCalloutView */; productType = "com.apple.product-type.library.static"; }; - D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */ = { - isa = PBXNativeTarget; - buildConfigurationList = 705546DA72F2B83A3E1F0EAE82E3C827 /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */; - buildPhases = ( - 0BFBCF7C3024C0F3D530003353F9EFC0 /* Headers */, - E99335F18DE491EDD3ED0E2DBB89F7FF /* Sources */, - F55A22D25DDC18689E9F94CEB8737ADA /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = GoogleToolboxForMac; - productName = GoogleToolboxForMac; - productReference = 251C6319AD50CB50F18D50CBF727F8B2 /* GoogleToolboxForMac */; - productType = "com.apple.product-type.library.static"; - }; D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */ = { isa = PBXNativeTarget; - buildConfigurationList = 3A5BE225A7CCAEC0F4EC3FD397714BF0 /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */; + buildConfigurationList = 9800C0589EFA6EB2D67FD93E63C66EAB /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */; buildPhases = ( - 27B2EA22B6E23A5D6A220B87051F14CA /* Headers */, - 4CD8ABA127633CF71E734C3BD5BF2C91 /* Sources */, - 8B3FA8A2DE1BF8CFF4C87AE643053BDD /* Frameworks */, + 3AA2FAA1D0E276553B39D2E3D779EF75 /* Headers */, + A20D03EE72BE6A62CB1CD056A85CECD4 /* Sources */, + E9A52EBBA45867772D7A97CE0141C5CF /* Frameworks */, ); buildRules = ( ); @@ -10693,7 +11010,7 @@ buildRules = ( ); dependencies = ( - F8E6A9AEBCCA6D1EF31F3CAA30C23B42 /* PBXTargetDependency */, + 3EB8C2079E6008F6F277C8CE7F36CB07 /* PBXTargetDependency */, ); name = GoogleAPIClientForREST; productName = GoogleAPIClientForREST; @@ -10712,8 +11029,8 @@ buildRules = ( ); dependencies = ( - 875A753393C5B2F83B421A8B55AB3174 /* PBXTargetDependency */, - CEDADBE67DA1EB522AA0CEE270D02C19 /* PBXTargetDependency */, + 77A56F97C875CAF07F1D960B600719BE /* PBXTargetDependency */, + 0176E933B9DF63413C1766380D8365CF /* PBXTargetDependency */, ); name = GBCDeltaCore; productName = GBCDeltaCore; @@ -10732,8 +11049,8 @@ buildRules = ( ); dependencies = ( - B08E3AFDD79285BEF550ECE01CC48083 /* PBXTargetDependency */, - 57F994495DB2B38399E960295657D2FA /* PBXTargetDependency */, + 35A48894226347B35D8F73FAC5AF554F /* PBXTargetDependency */, + 1D3D1303B878304E72080E38BDA14341 /* PBXTargetDependency */, ); name = DSDeltaCore; productName = DSDeltaCore; @@ -10742,11 +11059,11 @@ }; E5449403CBE67599315B4D26019FA175 /* DSDeltaCore-DSDeltaCore */ = { isa = PBXNativeTarget; - buildConfigurationList = 663B6A2DDCEC446185B84C36ACD073D6 /* Build configuration list for PBXNativeTarget "DSDeltaCore-DSDeltaCore" */; + buildConfigurationList = D5EE1D17379088C9784C90F886F174CC /* Build configuration list for PBXNativeTarget "DSDeltaCore-DSDeltaCore" */; buildPhases = ( - ED5DFC24546A9917FAD88C38491EE329 /* Sources */, - 2CB1A2640C93979BD4F7B2C7308D4CE3 /* Frameworks */, - 25564BEC77FA6CF0B890CA70D29F8CB8 /* Resources */, + E95171820DB3EB9AC51D01BE39E83C2C /* Sources */, + 1C7B61E7D9CC1AA26E25A5C56362CA14 /* Frameworks */, + 89229E2CDFA7E920864D5A31986ADDC7 /* Resources */, ); buildRules = ( ); @@ -10777,17 +11094,17 @@ }; FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */ = { isa = PBXNativeTarget; - buildConfigurationList = A05C444C9557E0D417D9BF4E9DF194A3 /* Build configuration list for PBXNativeTarget "SwiftyDropbox" */; + buildConfigurationList = 35002C794040DC29952B111351615955 /* Build configuration list for PBXNativeTarget "SwiftyDropbox" */; buildPhases = ( - AC79A083834E06CB841C32B22E580F67 /* Headers */, - 95A82B893679CB7848549321A48DEFA5 /* Sources */, - ADDEAF6C36A023DAFAECF90F3A50F1F3 /* Frameworks */, - E95FB564ACA2D8899A19BCC01D1BCFB9 /* Copy generated compatibility header */, + FCFF6F4355304E3A7E62921348687B37 /* Headers */, + FA9DDAB34B64DCCC14952BBD8E0CCCEF /* Sources */, + C8C6807AF36953E87266B828DB533FDE /* Frameworks */, + 4B6513FD67537B30C2CCC31F7DCD5E7D /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( - 58E8FBBDF5D506D7272BB9EB705B7EC6 /* PBXTargetDependency */, + 5DD3D8832389FF835DAE5794E3AB01A7 /* PBXTargetDependency */, ); name = SwiftyDropbox; productName = SwiftyDropbox; @@ -10812,11 +11129,12 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 04CF5B4661B2C9B83AAB13F34DA4F5F8 /* Products */; + productRefGroup = 19AA260E663F3C8B1C18C3F1FED97C92 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */, + 5C642AA10FB29936669CC269F42079C6 /* AppAuth */, C0E41540D6862472ED7F2FA11669BE1F /* Crashlytics */, 530F469AED058B94728C278CCA514500 /* DeltaCore */, 1B47E46598F87113B00B3B25BBF51B32 /* DeltaCore-DeltaCore */, @@ -10829,7 +11147,7 @@ 5C36E65AEF44273E4AF0CBFADD00C090 /* GBCDeltaCore-GBCDeltaCore */, D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */, CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */, - D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */, + 8627999EF1D5E93E13DAFF580DA8CDCF /* GTMAppAuth */, D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */, 5CB4163F0A6D4BDE0A490758A78BA43D /* Harmony */, 38A7AA32705A9662332E76FA75B50858 /* MelonDSDeltaCore */, @@ -10853,80 +11171,80 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 25564BEC77FA6CF0B890CA70D29F8CB8 /* Resources */ = { + 110C320962F019E551FDADE7020EAA8E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - B1B0B44C669FC89BB9B0605DCACF5BA7 /* Standard.deltamapping in Resources */, - C63AE036E8EF4315BC11E94AE4E9FEE8 /* Standard.deltaskin in Resources */, + 318E0C75314BDBA155BDE4B3C8240D98 /* Standard.deltamapping in Resources */, + 5B10BC6C23C5443FEE7B6C1AD3D77DFB /* Standard.deltaskin in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 90266F59941DA292B336BB7123CACF37 /* Resources */ = { + 63FC58D86BEC26E4ACBB226C08F9BBCB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8CBC8B4C98ACF627FA090A7F43106607 /* Standard.deltamapping in Resources */, - 60E958C77493633B264BE262E7041817 /* Standard.deltaskin in Resources */, - 25A56AE425DE026B7866820144EEB210 /* vba-over.ini in Resources */, + 11434BFBA34893E408578721E0A9DE95 /* KeyboardGameController.deltamapping in Resources */, + BC247677A17F16688F603D3E9FC22150 /* MFiGameController.deltamapping in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 92670818CD3183B253308E902670EA32 /* Resources */ = { + 89229E2CDFA7E920864D5A31986ADDC7 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3275C29735705C7563D266F047EAC4A6 /* NstDatabase.xml in Resources */, - 8E3F5FEE14F3111EEFFCFCF99557A4CA /* Standard.deltamapping in Resources */, - CC6F43044520D745BC4704927BB6FAC7 /* Standard.deltaskin in Resources */, + 5032F0342544E6569C0EDA9DCD3DD6ED /* Standard.deltamapping in Resources */, + 71F8A8BA3A2BCD08F8C85A5C9FCDB433 /* Standard.deltaskin in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 98E0868298FA3D5073FE5A23AF22192C /* Resources */ = { + 8C8D3C512F23648184903BC33D167797 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1A55D634DBF021D1D3CE755052F3918E /* Standard.deltamapping in Resources */, - 4E9CB344E6B2A78B62E4638C9674DAD8 /* Standard.deltaskin in Resources */, + F62634A46EB24B7ED75303A9B133029B /* NstDatabase.xml in Resources */, + 9D2AC3C253235F4722F3E7BF68F2967B /* Standard.deltamapping in Resources */, + 54D8544BA09F27066E2FF2F2C0FBB0E7 /* Standard.deltaskin in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A8460FC64032AFF1DCD55C12596F45A9 /* Resources */ = { + 9D7D7EB4E225936555BC8B2718A4365B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4978A05EFDB3386107E32E33472A2048 /* KeyboardGameController.deltamapping in Resources */, - 784A64731A1B4377DDC0A5C682BB114F /* MFiGameController.deltamapping in Resources */, + C992D1F220758E6E631095F927EC79A8 /* Standard.deltamapping in Resources */, + 5A6918BBC6839839661B82EBCDDA5AA1 /* Standard.deltaskin in Resources */, + E06ABEF44E360CEEBECFC8A372C16CE0 /* vba-over.ini in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D081D46F3456594C0452CB7E5F52F22A /* Resources */ = { + AD00840368A6E6CFFF0CC083718E51B7 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - DEE00276822742129799062965992F5A /* GLideN64.ini in Resources */, - FDBB1A6796683E960EC8974DC252D14D /* GLideN64.custom.ini in Resources */, - B5724A9B9054A6E82020990726E5D368 /* mupen64plus.ini in Resources */, - 2A6364D845C5E5EE2D8FA6F545B1B9E4 /* Standard.deltamapping in Resources */, - 53578D3E7D989A069C7E70E94BDF6485 /* Standard.deltaskin in Resources */, + B5D6FB89CB3DC83D534C35F0C2D07063 /* GLideN64.ini in Resources */, + EFD75D09801AA27EB73C3EB4ADE80C10 /* GLideN64.custom.ini in Resources */, + 09F179547379944AF0B51815CD31643F /* mupen64plus.ini in Resources */, + 2F43218F9FA8FF4F1F5323D5274052E8 /* Standard.deltamapping in Resources */, + 5269F2F06B7B9AADE496A4CD09793228 /* Standard.deltaskin in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DA4FDAD650076F484AE40B755762ED5D /* Resources */ = { + F1E4046305FCD91F18F5822334957B7E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 20EB6B39BBAE80A64D599AFBA7245D2F /* Standard.deltamapping in Resources */, - 934782B5A76E96EBE561BC133DF638DC /* Standard.deltaskin in Resources */, + D3FC93C68B0782DDDAC84BB31DE85B9F /* Standard.deltamapping in Resources */, + BBF6B8C691E588AAFC1F14A809992E95 /* Standard.deltaskin in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - EC8CDA63283D0C3A559D9541482FA712 /* Resources */ = { + FDCF81A3515AAE4C04B06C81FA6FFFEF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - C29D0EBD4893BA871D029A38898A3BBE /* Standard.deltamapping in Resources */, - 70FAB32D4D69DF18D47D3AF17352EE97 /* Standard.deltaskin in Resources */, + 7FF03D665509233706BDA0C150864C0D /* Standard.deltamapping in Resources */, + 4C2B420D2EE3244F87309914CDE59B63 /* Standard.deltaskin in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -11029,17 +11347,7 @@ shellPath = /bin/sh; shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/GBCDeltaCore/GBCDeltaCore.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/GBCDeltaCore/GBCDeltaCore-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; - 5333C4F6228DB89674A7CEFD1863A981 /* [CP-User] Copy Swift Header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - name = "[CP-User] Copy Swift Header"; - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "target_dir=${BUILT_PRODUCTS_DIR}\n\nmkdir -p ${target_dir}\n\n# Copy any file that looks like a Swift generated header to the include path\ncp ${DERIVED_SOURCES_DIR}/*-Swift.h ${target_dir}\n"; - }; - 6935470A468D81C84816374492D79340 /* Copy generated compatibility header */ = { + 4B6513FD67537B30C2CCC31F7DCD5E7D /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -11048,20 +11356,20 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/DeltaCore/DeltaCore.modulemap", - "${PODS_ROOT}/Headers/Public/DeltaCore/DeltaCore-umbrella.h", + "${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap", + "${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/DeltaCore-umbrella.h", + "${BUILT_PRODUCTS_DIR}/SwiftyDropbox-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/DeltaCore/DeltaCore.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/DeltaCore/DeltaCore-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; 71FF5C8316B047512A7972E466F363A4 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; @@ -11145,7 +11453,17 @@ shellPath = /bin/sh; shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; - DEF50063DA2C498D1EFEA37B36C9F694 /* Copy generated compatibility header */ = { + 9664C8F4D28579D63EB1515C466CED68 /* [CP-User] Copy Swift Header */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + name = "[CP-User] Copy Swift Header"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "target_dir=${BUILT_PRODUCTS_DIR}\n\nmkdir -p ${target_dir}\n\n# Copy any file that looks like a Swift generated header to the include path\ncp ${DERIVED_SOURCES_DIR}/*-Swift.h ${target_dir}\n"; + }; + 98A03D6FBC5BEB669DF26CDDDB94A529 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -11154,20 +11472,20 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/ZIPFoundation/ZIPFoundation.modulemap", - "${PODS_ROOT}/Headers/Public/ZIPFoundation/ZIPFoundation-umbrella.h", + "${PODS_ROOT}/Headers/Public/DeltaCore/DeltaCore.modulemap", + "${PODS_ROOT}/Headers/Public/DeltaCore/DeltaCore-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/ZIPFoundation-umbrella.h", + "${BUILT_PRODUCTS_DIR}/DeltaCore-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/ZIPFoundation/ZIPFoundation.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/ZIPFoundation/ZIPFoundation-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/DeltaCore/DeltaCore.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/DeltaCore/DeltaCore-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; DF855FC8270C2B91AFE7E83F7D084948 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; @@ -11193,7 +11511,7 @@ shellPath = /bin/sh; shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SQLite/SQLite.swift.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SQLite/SQLite.swift-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; - E95FB564ACA2D8899A19BCC01D1BCFB9 /* Copy generated compatibility header */ = { + E1BA641F0D52D66E7FBD1474637CD62D /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -11202,20 +11520,20 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap", - "${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox-umbrella.h", + "${PODS_ROOT}/Headers/Public/ZIPFoundation/ZIPFoundation.modulemap", + "${PODS_ROOT}/Headers/Public/ZIPFoundation/ZIPFoundation-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/SwiftyDropbox-umbrella.h", + "${BUILT_PRODUCTS_DIR}/ZIPFoundation-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/ZIPFoundation/ZIPFoundation.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/ZIPFoundation/ZIPFoundation-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; F6C424ED2D0C94403B2180B867549BA3 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; @@ -11268,22 +11586,6 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 09F9375093891FBFBADBC4D6D333A230 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CC9CF52B502B38F4CD7BB227E11DF536 /* Archive.swift in Sources */, - 2B3FC147C9555040C219F585B1D8BD4A /* Archive+MemoryFile.swift in Sources */, - 9A51DC353E2E14D0849BC95FB3C0A3FA /* Archive+Reading.swift in Sources */, - 1A829E859EB4CA2FADA0551417F0F36E /* Archive+Writing.swift in Sources */, - 70318A9A0D0EA7B834D9E4897AF554E1 /* Data+Compression.swift in Sources */, - 16BCC2EDD2D964A598F4577BCF1D3AB9 /* Data+Serialization.swift in Sources */, - 41272E445B92FA12681A0FC9AA1AC082 /* Entry.swift in Sources */, - 412AF0DBA6A6CF4B82D2DB074592D513 /* FileManager+ZIP.swift in Sources */, - F9500289F70CA27F637D81A06DD4B60E /* ZIPFoundation-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 0C3FFE22A8463FD66153A616B0E5338C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -11480,18 +11782,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 218D52BECFBF6D2008130183D8C39A40 /* Sources */ = { + 203A2790DB3E2607910F5D3E01CF047D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + BEBF8EBF0D7C298688DB7B7D91BF1E1E /* Pods-Delta-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3916EC5A6CB929D445F7709D5824E179 /* Sources */ = { + 2044D2266A9244885412FD78AB43CB10 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BB079FBCD203D0D585F07741BEB1359F /* Pods-Delta-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -11525,18 +11827,10 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 4CD8ABA127633CF71E734C3BD5BF2C91 /* Sources */ = { + 406B452E52ADF1B76AFC59E6392D8F05 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BCE1E07C897188D7F0A78DD02F30AC0B /* GTMGatherInputStream.m in Sources */, - F42E3A54C619D9F87FDCF1801CD463C9 /* GTMMIMEDocument.m in Sources */, - FCAE595180947228FC1618C3D8BDBED1 /* GTMReadMonitorInputStream.m in Sources */, - AFD3734A64D1B6AFA52D8435461FF515 /* GTMSessionFetcher.m in Sources */, - 77B8020FBFD05DC127B92C6CD500DBC8 /* GTMSessionFetcher-dummy.m in Sources */, - DF77F2A0A64103C43A32B6E88D8BC01B /* GTMSessionFetcherLogging.m in Sources */, - C1704ECAF21DF445A4F498988229E820 /* GTMSessionFetcherService.m in Sources */, - F7B46F08F478C451F93F859CFB540820 /* GTMSessionUploadFetcher.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -11562,13 +11856,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 7C0E8476DD7E1CFA88556E5B3CD1A88F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 84FDD6EEEA6801004B1E0464B662B932 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -11680,6 +11967,74 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 8E411DE747051728B38B8A55D129EBFF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C10ADD453F9E626A60A899FE1C3A34C6 /* AnyInput.swift in Sources */, + 4EDDDB9F177D5F6FEE11A9AC11B53784 /* AudioManager.swift in Sources */, + BDDE68BA1F980DB1E65458EBFAB69F7A /* AudioRendering.swift in Sources */, + 4EE1F590962D7FA18359D0BF97BFB859 /* BitmapProcessor.swift in Sources */, + B7C79AF285FDA23B54BC21E79EEDB866 /* Bundle+Resources.swift in Sources */, + A739DA62932D6A55CC429549E4BAFC33 /* ButtonsInputView.swift in Sources */, + EAB683F7CA0A225FFA7F93C0EB2F9C05 /* CGGeometry+Conveniences.swift in Sources */, + 5F8098E035FAB26A3BFCFDCD313A286C /* CharacterSet+Hexadecimals.swift in Sources */, + 0FC57501D577A2F0F85E764EE81AB7C9 /* Cheat.swift in Sources */, + D809EC26DDCA053E38ED4FE352AE4D3D /* CheatFormat.swift in Sources */, + D0B40F40B5CD2C8E0137F5AF93EBE290 /* CheatProtocol.swift in Sources */, + C89153F4A2AC922A760B97E4CA88075E /* ControllerDebugView.swift in Sources */, + F8F62DBA1DA7317A47680145818F62D7 /* ControllerInputView.swift in Sources */, + 81BB265435B724881A950F157EC1C03C /* ControllerSkin.swift in Sources */, + 96655385F578AB071ED171325288AEE7 /* ControllerSkinProtocol.swift in Sources */, + 3DBAB4E63481B360DA60F6130EBBB6CB /* ControllerSkinTraits.swift in Sources */, + B353669F746337D1A2536BE67E72C3F9 /* ControllerView.swift in Sources */, + A004392982FF7807B1C68D5AD3FC7BF3 /* Delta.swift in Sources */, + E3D32B2A3D7E64FBFD9B523C79E7FA31 /* DeltaCore-dummy.m in Sources */, + 881454430F2BBEE23379EC2094AFE03C /* DeltaCoreProtocol.swift in Sources */, + 8648711E19CDEBD2D5E77C6913096AB1 /* DeltaTypes.m in Sources */, + 98A9989C91C4C0502360C8B5D9359FCF /* DLTAMuteSwitchMonitor.m in Sources */, + BC3C60DC6E71786B7D99C463A7917027 /* EmulatorBridging.swift in Sources */, + D85C671747E01B67306C664008BE2E80 /* EmulatorCore.swift in Sources */, + EF942B80E3741A0318698FCAC9C3976F /* ExtensibleEnums.swift in Sources */, + E641CB63BB5D8566EB330133AFCB9BA2 /* ExternalGameControllerManager.swift in Sources */, + 83E428474D3D74B484D8EE1E1EE3CAB2 /* FilterChain.swift in Sources */, + 3C20AC92FF519D4337D07CB85B2CB901 /* Game.swift in Sources */, + B4210A8F0E6142E217A927B5D480F3A4 /* GameController.swift in Sources */, + DC09532F9274DC2668C6911B36FE253E /* GameControllerInputMapping.swift in Sources */, + DEE60CE25F0BA06ADFC980F21212C96D /* GameControllerInputMappingProtocol.swift in Sources */, + 360E1B247D97F6DF0BE373F88CBF75E7 /* GameControllerStateManager.swift in Sources */, + F10F183C24562A17CAAF86FA42D368DF /* GameProtocol.swift in Sources */, + 5953A78C8502CFD9FDDC1602F2462248 /* GameView.swift in Sources */, + 56305863164CF2F3F39C78948BFF2864 /* GameViewController.swift in Sources */, + C7808EB15AF82E2EFCB71D11F61B8813 /* GameWindow.swift in Sources */, + C5259247A3BAC31B645EB1872E6F7D9D /* ImmediatePanGestureRecognizer.swift in Sources */, + 1805F5A3687D6A687FA91FC3A56FE6A6 /* Input.swift in Sources */, + 47744763ED3C23B3487734D758FEDD3F /* KeyboardGameController.swift in Sources */, + 96D0781410F36BAB77F6A9D55C610641 /* KeyboardResponder.swift in Sources */, + E573FEEB4E80F970D6BF7ABED6B8F539 /* MFiGameController.swift in Sources */, + 77D0448819EEBC21A17752F508553A2B /* OpenGLESProcessor.swift in Sources */, + 911F76A9DE15FAAFB1000902BB47937E /* RenderThread.swift in Sources */, + AE9CDB083B2CEB03E50EBB8B8B27E496 /* RingBuffer.swift in Sources */, + 6A2D4CC0AB5C2035AE18C0268C5930A8 /* SaveState.swift in Sources */, + 1095E111263785AD9B10EB85A356B29A /* SaveStateProtocol.swift in Sources */, + 699C07F9DF22FE22765A99C2338D5BBD /* StandardGameControllerInput.swift in Sources */, + 83CE2DF2AE029994E2446BDC74A27D3D /* Thread+RealTime.swift in Sources */, + E220E1FBF3D8FEEDBD488CE7BAD43936 /* ThumbstickInputView.swift in Sources */, + CDC517A14BB9B75CE58AC878BAB999B1 /* TouchControllerSkin.swift in Sources */, + FF4162F2E737F86BD74D6D6879EFB0B2 /* TouchInputView.swift in Sources */, + 814D61A7FE271E6B72DEEBCB6209684A /* UIApplication+AppExtension.swift in Sources */, + F23BCFC609EBD2CDCBA8A5923E6EBE8E /* UIDevice+Vibration.swift in Sources */, + BD70FC92F05DDE1D857CCBD86C958F54 /* UIImage+PDF.swift in Sources */, + 849060A5D7CEABB947C8690A86C984DB /* UIResponder+FirstResponder.swift in Sources */, + A9F1AA816D505014707C9002F4D0E007 /* UIScene+KeyboardFocus.swift in Sources */, + 679439B462C90710614154CBE6F92431 /* UIScreen+ControllerSkin.swift in Sources */, + 11C6C2CBEF8225188AFAC6175D40C7E6 /* UIWindowScene+StageManager.swift in Sources */, + 7B82959877B9DD00DE5919ECDB3F8C85 /* VideoFormat.swift in Sources */, + A7904774161D5C6A485C9273640F83E3 /* VideoManager.swift in Sources */, + 6E9E2E12CCB5C471F2A9281159361D3E /* VideoRendering.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8EDDB914B2C5DA8366D687BE6ACFD114 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -11691,6 +12046,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 93417B656AD189A4972361F7DFBEF9E5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9411E083C3CA4A937A532D5F8BE7BBF8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -11702,68 +12064,86 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 95A82B893679CB7848549321A48DEFA5 /* Sources */ = { + 961159007D69A2652AC0800DEB731514 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4C2A2EBC6411463C8F67D7FCD7F1724A /* Async.swift in Sources */, - D12F50913671ABA02E063D4BC1A8480B /* Auth.swift in Sources */, - 92272AD39251E67F04778DCBED70AF73 /* AuthRoutes.swift in Sources */, - 81470D2CD78095A13EF56E0E79D5DCDE /* Base.swift in Sources */, - 37707C9F0680232CAFAE00AF8DF3B36C /* BaseTeam.swift in Sources */, - 2CDD146EF35819C8E736C161877EB3F8 /* Common.swift in Sources */, - 98E86D0F1797ACA3E42CBD641605DAE1 /* Contacts.swift in Sources */, - DB11139CD9B9C6D7CF537ABAD258D545 /* ContactsRoutes.swift in Sources */, - 997452A4F11A932CD91E6AC360E41984 /* Custom.swift in Sources */, - 650B55547717AC1B785F69B767C26C0A /* CustomRoutes.swift in Sources */, - A8FACCC508B3B698A900D691F3537FF2 /* CustomTasks.swift in Sources */, - 7F33FAE6C5BCDF7D0AC2DF5A8A915057 /* DBChunkInputStream.m in Sources */, - 12269D4284464C6DC5047C8ACEDC02C7 /* DropboxClient.swift in Sources */, - 56ED1E08E591633245501C81931D8631 /* DropboxClientsManager.swift in Sources */, - D1BD6200ACA4A2696D1BBD883ACCFB87 /* DropboxTeamClient.swift in Sources */, - 68A9FB3A46F4F88993D9BADAB5D74AFE /* DropboxTransportClient.swift in Sources */, - C6086B76E89CBF4AE00B17B8BDE3CABA /* FileProperties.swift in Sources */, - C1B98F1AEAB982E3CC3EB7E2470581A6 /* FilePropertiesRoutes.swift in Sources */, - 24D14BD248C8F09EBE320A9CD94AD697 /* FileRequests.swift in Sources */, - 59DC4FF8A5DFD850587059D40CF3C0E2 /* FileRequestsRoutes.swift in Sources */, - 847DF2256C543478637626B1B292A515 /* Files.swift in Sources */, - 68029E7E6CBBEC4C2D7726E99EE4C9BD /* FilesRoutes.swift in Sources */, - A65B6AEF7EBC37D2067852FAF5CA02BB /* OAuth.swift in Sources */, - FCE08CF79B7B1382065AF4A7C39D1E5D /* OAuthMobile.swift in Sources */, - 39942BCD715EE739CA18568965770DA3 /* Paper.swift in Sources */, - 18E8C08EDA82CC13F07673EFD63EFCC6 /* PaperRoutes.swift in Sources */, - 2741D1049119F88CA18ECB5B6B3C4921 /* SDKConstants.swift in Sources */, - 7788C7EDBB21DFD3D107D6D9A54816DD /* SeenState.swift in Sources */, - 2D39914601466E07EC9C542BF8D7D382 /* Sharing.swift in Sources */, - 9B154A3E8E5D08CE62C5C1E70441168D /* SharingRoutes.swift in Sources */, - D214D63D76701CCE4803A13D9D067C0F /* StoneBase.swift in Sources */, - E46B6E43167692715997A0063F4FD5A0 /* StoneSerializers.swift in Sources */, - 975E6847416F072AFEDB7A31CE539B4E /* StoneValidators.swift in Sources */, - 1B5D7AADF3C2CCA05B017A3B923A60F8 /* SwiftyDropbox-dummy.m in Sources */, - 6D34808CBD3C28FEDE59AF9CA9C075B1 /* Team.swift in Sources */, - 84D13BD9B8CE83F1306F88F7ABB0882C /* TeamCommon.swift in Sources */, - B301A74A5DE411C13AAF6B268E7C8074 /* TeamLog.swift in Sources */, - CA4BAC50BA22FAC3BE30A90757588E24 /* TeamLogRoutes.swift in Sources */, - CF6A6A6D26277F49D80FDA35AF40BCB0 /* TeamPolicies.swift in Sources */, - C3A545BB371565B7B4722AFA2847B747 /* TeamRoutes.swift in Sources */, - 030CF210599016EB9D45ABCA6E9F816C /* TransportConfig.swift in Sources */, - 47B7880F6DADA1B122EFE9F8D6F8BB28 /* Users.swift in Sources */, - 081FC3F758562BD8D6FB5B3E26ADA35B /* UsersCommon.swift in Sources */, - 36FC4713D6BAA88A981BCE0B07382B94 /* UsersRoutes.swift in Sources */, + 5DFDA6E2743D8C7ACF3C94838CCDA30A /* NSBundle+Extensions.m in Sources */, + 875F5857DE237E34D8A1CEBAE5052C24 /* NSConstraintConflict+Conveniences.m in Sources */, + 0DC9060C337C5E1DA0E82F3CBDD0865A /* NSFileManager+URLs.m in Sources */, + 32DAF029C5DC04196E825E69B7533AD2 /* NSLayoutConstraint+Edges.m in Sources */, + 6CA7197A697A6910C71D85B86FCC5D62 /* NSPredicate+Search.m in Sources */, + 6B4EB796C938DDD98C5B9F4960C32505 /* NSString+Localization.m in Sources */, + FB4FE830670C24C02D845A7487D150DF /* NSUserDefaults+DynamicProperties.m in Sources */, + 7A7C26DC835D7E4A6E9C035B07306CD9 /* Roxas-dummy.m in Sources */, + 4B774337E6D365988EB7FE766F8462D4 /* RSTArrayDataSource.m in Sources */, + 826AA94FFE2630D603192C927473A929 /* RSTBlockOperation.m in Sources */, + 1E52FCCAC118847802DBC763AFCB4CA2 /* RSTCellContentChange.m in Sources */, + 791A91F9019EBE452E9B369BD472F386 /* RSTCellContentChangeOperation.m in Sources */, + 30F611E5B17257429B1483895D4FDC55 /* RSTCellContentDataSource.m in Sources */, + 43F29BC8E62CDEB1427B4879628AD9E2 /* RSTCollectionViewCell.m in Sources */, + 90CB671D898E13039E24F030E85BBB89 /* RSTCollectionViewGridLayout.m in Sources */, + 28AA3A68AE58340F6582972934096656 /* RSTCompositeDataSource.m in Sources */, + 08B1C74CBBF07D8AF36E7730F2030E66 /* RSTDynamicDataSource.m in Sources */, + 9C2EC209D91908773544AA8BA75BBA82 /* RSTError.m in Sources */, + CCECBE9E5228DC93FF8F0AF4F253231E /* RSTFetchedResultsDataSource.m in Sources */, + 44B777CC6A9B53E503223ECB7AE623B4 /* RSTHasher.m in Sources */, + 382986AC6CAE5798F8F27EF0F944B605 /* RSTHelperFile.m in Sources */, + 5FD58DC3B58461A0151E776A13A0345F /* RSTLaunchViewController.m in Sources */, + D1B8B7A2280E887B04EABFFBA993BE4C /* RSTLoadOperation.m in Sources */, + 796FC800517F0F3645FBDB505A3D7E97 /* RSTNavigationController.m in Sources */, + A5F6DECD63F2BF577D47CC1F51A90E7D /* RSTNibView.m in Sources */, + 96231ACE7146B666F6E6F2F60B244C03 /* RSTOperation.m in Sources */, + 815C1A533B7D749CBBA7F3D96371EF7F /* RSTOperationQueue.m in Sources */, + D828319E2F56815B0E6D6639DF63504F /* RSTPersistentContainer.m in Sources */, + BEDF0C54AD9B431F9FB6363CD5954B75 /* RSTPlaceholderView.m in Sources */, + BDCBA646CD4EF53313996F3305D55621 /* RSTRelationshipPreservingMergePolicy.m in Sources */, + FBE33EB58621A81814455F4F6E8C5C79 /* RSTSearchController.m in Sources */, + 46915FD97D6A264EDF51E5DCAE616813 /* RSTSeparatorView.m in Sources */, + 5ACA5713FA47F34923CA3578B6CDA47C /* RSTTintedImageView.m in Sources */, + 58E9A0B9C1F1974D3CE907FA5CC36402 /* RSTToastView.m in Sources */, + 3CD9A8FB6B29BA2284144975AE6D10C9 /* UIAlertAction+Actions.m in Sources */, + B4D0BEA6C5378B166B195668B5818A12 /* UICollectionView+CellContent.m in Sources */, + 6A5DC4195D3C04B1224B561CE5689223 /* UICollectionViewCell+CellContent.m in Sources */, + 9151B2A4A8EF137A23F05192F1F0E2A1 /* UICollectionViewCell+Nibs.m in Sources */, + 3DBA8C408602F2A5BBE60B6FCCBE8AB9 /* UIImage+Manipulation.m in Sources */, + 23E191086C89AA402B1317068AA2E0E2 /* UIKit+ActivityIndicating.m in Sources */, + EE1396A5F8CA3A6610AE1E3996883309 /* UISpringTimingParameters+Conveniences.m in Sources */, + 5831E1190662E1377B571CF2019B67C5 /* UITableView+CellContent.m in Sources */, + B938AA9D285B48D746443AA36EFDD33C /* UITableViewCell+CellContent.m in Sources */, + 677D56105C5CBE1870B776341E62CE2D /* UIView+AnimatedHide.m in Sources */, + 34BF7B799F649C8F99627337460D48CE /* UIViewController+TransitionState.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A1E110048D2CECE2328841DB5B76441C /* Sources */ = { + 9F9B5B0D1BFF01F48E13B90301234FC1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 8D2139FDFD828651E6E08D664EE02A31 /* Archive.swift in Sources */, + 27D5FD6BC8716AE412DD8610AE12E215 /* Archive+MemoryFile.swift in Sources */, + B2F7F02660466D60F8056FEAB270DC78 /* Archive+Reading.swift in Sources */, + 072133B2BB282EF9FBC7F5F696A5119A /* Archive+Writing.swift in Sources */, + E1C1183E9D20804713EA2922704220D4 /* Data+Compression.swift in Sources */, + F439240C6EDC7375D6CC060D4869B5E1 /* Data+Serialization.swift in Sources */, + 77DEE2A4BFBFD8573FD60ACDDE202F4E /* Entry.swift in Sources */, + 5AFA29F5D5886AAEA2F2D32ADCFBC801 /* FileManager+ZIP.swift in Sources */, + 71C507A4FE9E1263D273FD7A9F7A934F /* ZIPFoundation-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A4FAC7BB2092FCF78218D409A19DB310 /* Sources */ = { + A20D03EE72BE6A62CB1CD056A85CECD4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 470DE4570D95C0C2F421FBC881D01F61 /* GTMGatherInputStream.m in Sources */, + F3D967C866EAA159C916CB25F62F39E8 /* GTMMIMEDocument.m in Sources */, + AB4474D7DCDFF771AFC2D6C64EF9B12B /* GTMReadMonitorInputStream.m in Sources */, + 225058BADDDCE6036000A69F57DE8F1C /* GTMSessionFetcher.m in Sources */, + FEDF533C78E3E3AD3B5EE58410634F3F /* GTMSessionFetcher-dummy.m in Sources */, + 3475293F2FC20AA0943CA662CE115A5B /* GTMSessionFetcherLogging.m in Sources */, + F0F9CC78D8F1758F81D6FB77418EEF44 /* GTMSessionFetcherService.m in Sources */, + 263A7779554A8298F7B4A42971E55D49 /* GTMSessionUploadFetcher.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -11778,66 +12158,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B36A33A9AB00E4F9515BA0CA965E1DDA /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D70E41A4B705F6E7D4CEF9560371D15B /* NSBundle+Extensions.m in Sources */, - 55165BEE072A341A2B9C7302E7D17B1E /* NSConstraintConflict+Conveniences.m in Sources */, - 941FCD99198C9AB55D0885FF6C9205FB /* NSFileManager+URLs.m in Sources */, - C5ABA05640C8BB4E11FB9BD037C8AADA /* NSLayoutConstraint+Edges.m in Sources */, - 0D0CE4B177877BB0F04AD37AAEDEF374 /* NSPredicate+Search.m in Sources */, - 4792B2AD97B2DDDAAC20D7B7A3655EE1 /* NSString+Localization.m in Sources */, - 1B663A12738E308F89877AF325B24033 /* NSUserDefaults+DynamicProperties.m in Sources */, - 05DAAFFB5F6882E12B132CB368C7DC23 /* Roxas-dummy.m in Sources */, - 6CE6FA7AC574166FFFFE2465C63B6853 /* RSTArrayDataSource.m in Sources */, - D2574B88045C86AD2A82768A1EDE875F /* RSTBlockOperation.m in Sources */, - D011FF2552267BCEB8105A533BB22702 /* RSTCellContentChange.m in Sources */, - 91C6A1730692E69E0CC8655B7ADAD968 /* RSTCellContentChangeOperation.m in Sources */, - C2744BF959085E4A3942CFA5A079A714 /* RSTCellContentDataSource.m in Sources */, - CE85A4CD0E819A4CFE1F5F1FA8365799 /* RSTCollectionViewCell.m in Sources */, - AF8E9D6893DA97F4A194E6E87FEBBC35 /* RSTCollectionViewGridLayout.m in Sources */, - 762A5A75696DC0705B64691DF1A9D46B /* RSTCompositeDataSource.m in Sources */, - 320ED7C60FA3138174BE023143B40106 /* RSTDynamicDataSource.m in Sources */, - DC33DC0D0AE8F8CB4CCDE2B9C917E8E7 /* RSTError.m in Sources */, - FBB6EBC8558504C740EE9B3BBD5A48F0 /* RSTFetchedResultsDataSource.m in Sources */, - AC21F5B2F7E344F82C0BFD2EF7869306 /* RSTHasher.m in Sources */, - 26A0F4E8969807660BFE8820994F0A3D /* RSTHelperFile.m in Sources */, - 01099FBC15BB56E1BD96D357894737EF /* RSTLaunchViewController.m in Sources */, - B89BEFD7A05D823E3DA57ECB02687066 /* RSTLoadOperation.m in Sources */, - B75523B990ABDFBDCAFF143CA967A9C6 /* RSTNavigationController.m in Sources */, - 1B71C4FC9E436BB959410AA87386F79A /* RSTNibView.m in Sources */, - 5A3A43ABB83E43F2F6ECA0128F71352D /* RSTOperation.m in Sources */, - 1539BEC91F71F469A0961D1839624A0B /* RSTOperationQueue.m in Sources */, - 4F9CC81551C114BCAFB00F73B8ECAA40 /* RSTPersistentContainer.m in Sources */, - B991F9D52AF86606C342332641737863 /* RSTPlaceholderView.m in Sources */, - BFC9EB580DD09ED78B7A985E17764B81 /* RSTRelationshipPreservingMergePolicy.m in Sources */, - 646689EE8D8F4F7E32D9AFF55B1768F0 /* RSTSearchController.m in Sources */, - 8CE9E8F6687BD59187A6FADE4820D498 /* RSTSeparatorView.m in Sources */, - E3D806DCB0941DA9328A7376123C1FE0 /* RSTTintedImageView.m in Sources */, - DDAB3F80FC6467314439BC89B041B61E /* RSTToastView.m in Sources */, - 8DEE0BE3C5F97C9605B7FF974170D64D /* UIAlertAction+Actions.m in Sources */, - BEF1BFD8053562D253948BD404AED944 /* UICollectionView+CellContent.m in Sources */, - CF7F46116F22A3383DCF9C71C1514F36 /* UICollectionViewCell+CellContent.m in Sources */, - 1BBE7574E3F45B7F2B730EED785EB97C /* UICollectionViewCell+Nibs.m in Sources */, - B856E3ABBA84A55BA16BF2220F9E7AFB /* UIImage+Manipulation.m in Sources */, - 8C827FE09F83F11CBDA8F283B2086456 /* UIKit+ActivityIndicating.m in Sources */, - CD0E5EE2406AF3D6F2DE407075AD8B3A /* UISpringTimingParameters+Conveniences.m in Sources */, - 52841F3B3684F995EDAB87F757E3FBE8 /* UITableView+CellContent.m in Sources */, - 5E0BC08FA744C5B0506F68C66A93243B /* UITableViewCell+CellContent.m in Sources */, - 4D94C521EC89EAE86BF8ABE968C437B7 /* UIView+AnimatedHide.m in Sources */, - 75DCB91C9618E2F5F188ED9F925DDD5E /* UIViewController+TransitionState.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BE5266821CE84258ED1D9C61320F0A44 /* Sources */ = { + B74B490B1E084F7CA8A8831C2BAC4E88 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - C15D65156D281112E31055785C0DB923 /* Sources */ = { + B7CF1F6568C35C929AC52E1BECBE0CFB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B80EFF08F32CAE3EC6B29E5465C4F87E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -11901,13 +12236,62 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - CD1EF2680ED27B75CE432198964346B0 /* Sources */ = { + CDDD74A780D6502A4F82C1F74DE19F93 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; + D18C83D9E20EFA0FA26A3F062F35D251 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EAE70B9850606EF3C57E0209F68A3400 /* GTMAppAuth-dummy.m in Sources */, + D472519DC7987B2A305E8489104F2E35 /* GTMAppAuthFetcherAuthorization.m in Sources */, + 300332AC28D55485028392F71EE93567 /* GTMAppAuthFetcherAuthorization+Keychain.m in Sources */, + 5A09F6457E548D68084B7A7CE07CA68F /* GTMKeychain.m in Sources */, + 3805C162EBF43555EF66800799D527D4 /* GTMOAuth2KeychainCompatibility.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DC5EEF63703EEFC7F9FDF49B9E174BAE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 48B03A837B0BFD86A8BE32A40988C7E4 /* AppAuth-dummy.m in Sources */, + 8EB8CF7DC6E2BBE10A04B63771C2E2BB /* OIDAuthorizationRequest.m in Sources */, + E8C89F9ED55450C6CEC170D556E61B3F /* OIDAuthorizationResponse.m in Sources */, + 11D1380C0B87ADBD24DE03621CB8A62B /* OIDAuthorizationService.m in Sources */, + 4CF5835DDC0BB972A00042DE7F906260 /* OIDAuthorizationService+IOS.m in Sources */, + 17C1448997A69DFC08D5ACEA83B1338F /* OIDAuthState.m in Sources */, + FD53DD7CC4FB437A70ECB3B96D9FBD28 /* OIDAuthState+IOS.m in Sources */, + B634DBD241E1E3174E680E1B35CB3C6B /* OIDClientMetadataParameters.m in Sources */, + 00EB734EAB20589A5EA9DED4A965B6BF /* OIDEndSessionRequest.m in Sources */, + 6BE0AA06C0274C1A89487166CAE9C27D /* OIDEndSessionResponse.m in Sources */, + 44EBE24CF46242DEC6CF4AABCB5CB74C /* OIDError.m in Sources */, + 0C9E00526F3ACFE0C4B40D87E02300D6 /* OIDErrorUtilities.m in Sources */, + A604AE31AFD60394248D8E81E0ACFA40 /* OIDExternalUserAgentCatalyst.m in Sources */, + 7496E3794E9FE9903A57CD5FE4FA4653 /* OIDExternalUserAgentIOS.m in Sources */, + D7A22BFE7446A39607C81829A30BFB82 /* OIDExternalUserAgentIOSCustomBrowser.m in Sources */, + 1774E56BD05AD0B3B9AE715BC59C2749 /* OIDFieldMapping.m in Sources */, + CF733DA4F22F1F393B47CEFB64EF03A6 /* OIDGrantTypes.m in Sources */, + 65A75C2264EE370C90CEB7DEDC5700D9 /* OIDIDToken.m in Sources */, + FA7B2DA97A0367438952589204609F1A /* OIDRegistrationRequest.m in Sources */, + BDC17259CEDE4F4A08764E0595DB7F81 /* OIDRegistrationResponse.m in Sources */, + 808E589F702DDDED89E5E112CA2A8A31 /* OIDResponseTypes.m in Sources */, + DC71CF3F5B6B19843B67F5B5D38CA529 /* OIDScopes.m in Sources */, + 52085588CC19123AC83AFFBA93066A76 /* OIDScopeUtilities.m in Sources */, + 2421934E6C6A844A30F0A17CF403A293 /* OIDServiceConfiguration.m in Sources */, + 011E0B9DF0242E6ED90A37B19AD3B16C /* OIDServiceDiscovery.m in Sources */, + B6DC6AF08E379BA0EC4A0D8255C2A83A /* OIDTokenRequest.m in Sources */, + 7C3D3E0CDF98B631630E96440C0BDA47 /* OIDTokenResponse.m in Sources */, + 5D8B8038CC885FC6B2978E5661548CF1 /* OIDTokenUtilities.m in Sources */, + 04355D0C6987871B51778FD9E8F696F9 /* OIDURLQueryComponent.m in Sources */, + 45E16C89C9189BD3A413347E77A8AF07 /* OIDURLSessionProvider.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; DE36DB95BA6FF5DC20903112E55CC772 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -11933,451 +12317,457 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E7794EC466A1FA3904D282C410778E19 /* Sources */ = { + E95171820DB3EB9AC51D01BE39E83C2C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6DC8EA419865488B8BC8625A8B63BD22 /* AnyInput.swift in Sources */, - B003338225E645CD52136C0AA1EDB823 /* AudioManager.swift in Sources */, - EBE5EB8961EB52A0877773AC4CC7FC41 /* AudioRendering.swift in Sources */, - DE91130C61E9D53345DE6B9D41B6C334 /* BitmapProcessor.swift in Sources */, - A14E22AC889B106BF3411A7BD35E90F8 /* Bundle+Resources.swift in Sources */, - FCF7FCAAFD8BD392EECBAA2B35EF15A3 /* ButtonsInputView.swift in Sources */, - 626CFED2F485876ABE8A850BE577DA89 /* CGGeometry+Conveniences.swift in Sources */, - D539E38458E7B917933FFBF47FF39622 /* CharacterSet+Hexadecimals.swift in Sources */, - 97B1C675C31755288EB856C647FBDB85 /* Cheat.swift in Sources */, - 7FA18D5772EB9BD2594BEADBA2200C05 /* CheatFormat.swift in Sources */, - FFD0EC593CE94958FF475F2D83057284 /* CheatProtocol.swift in Sources */, - F3A27F2DC5065EBC03588390CBBC340A /* ControllerDebugView.swift in Sources */, - BB6C7F62ED6607CA3B07B737DE8956BF /* ControllerInputView.swift in Sources */, - 5CB02745E7FA5AC7B02CB9E89DB3F0A3 /* ControllerSkin.swift in Sources */, - C59F87A5023688E25845F2AF55C291F8 /* ControllerSkinProtocol.swift in Sources */, - 580D505101F8DB1FEB7A037545E972A5 /* ControllerSkinTraits.swift in Sources */, - 23F10693154392BAEFCEE38BB9233F8E /* ControllerView.swift in Sources */, - D0BCFE1011DB09F0D55A0252F40D21AC /* Delta.swift in Sources */, - 7AFE8206738BCF777EBE4701FB690EF5 /* DeltaCore-dummy.m in Sources */, - ED4596C6347FD432BD009C5F857C2DE9 /* DeltaCoreProtocol.swift in Sources */, - D3FBE94E3A974F586F9955337DEFD972 /* DeltaTypes.m in Sources */, - ECCC671BAE599408FCCE9724731E19C4 /* DLTAMuteSwitchMonitor.m in Sources */, - 124C46C25F8B600EA3A1FD8FDC268AC7 /* EmulatorBridging.swift in Sources */, - 29E96A01AAC563278571FBEFB60D44C8 /* EmulatorCore.swift in Sources */, - CC1D0F7857E735E809EC233BD8A7BAC8 /* ExtensibleEnums.swift in Sources */, - 0D08DCD2A14F74BD82546CA5C9BEFD1C /* ExternalGameControllerManager.swift in Sources */, - CB05260BDB2A885AEDB803457764575B /* FilterChain.swift in Sources */, - 33F0F3CF6FE140EF596EDE3AA19829A0 /* Game.swift in Sources */, - 8CF05AAF0B79A6D91F416F7D6397C208 /* GameController.swift in Sources */, - CE20BCB9BA1381BD1C4DB29A56C37FE8 /* GameControllerInputMapping.swift in Sources */, - D057C475EEF51E4601E9A76BC191AA2D /* GameControllerInputMappingProtocol.swift in Sources */, - FB4CCBB8A8E97E0154324C412E20C324 /* GameControllerStateManager.swift in Sources */, - AAA165D8BA040A8C17B2F70C2A6ECB5F /* GameProtocol.swift in Sources */, - 56C96B373F30FBEF3005DBA2AB9359D5 /* GameView.swift in Sources */, - 37865A8F28DE4C5C4DFF48132A8B4229 /* GameViewController.swift in Sources */, - 7C20C65E76A8E35604D8E46DE23160AD /* GameWindow.swift in Sources */, - 6F88F6AB72B3921F493B604895B83AE0 /* ImmediatePanGestureRecognizer.swift in Sources */, - 1EB653D062EC90644CD6EFB76D60DB3E /* Input.swift in Sources */, - 4455FB1F03CDFF5EB23EB4757E2B611E /* KeyboardGameController.swift in Sources */, - BDD91DD6EDDC51DB7B2ABAEBE3CAF275 /* KeyboardResponder.swift in Sources */, - 3457C62BF9E6FE206E0CCC2E2EE34A17 /* MFiGameController.swift in Sources */, - 9B28B79CD201142E295D4F364B5CDAC4 /* OpenGLESProcessor.swift in Sources */, - 813052F5B55F581A500F453808BDDCCD /* RenderThread.swift in Sources */, - D37F51495463271450C3BC61DDE364CF /* RingBuffer.swift in Sources */, - DF7CEBBC5645AA8BE2892E7966AFBF20 /* SaveState.swift in Sources */, - 5A64E13F83417112C63882DF88E4E35D /* SaveStateProtocol.swift in Sources */, - BA956DCBC93D2815C285CBA3C0ADECC1 /* StandardGameControllerInput.swift in Sources */, - 93B394E89E851CE07AA3430A4C7231CA /* Thread+RealTime.swift in Sources */, - 569589F32BD7C2AC23660DABD6F61D48 /* ThumbstickInputView.swift in Sources */, - 5F10D25DAB1761ACC9D8CE8CD502AEDC /* TouchControllerSkin.swift in Sources */, - 597B79CD94D7E6C6DC983585C01E82DC /* TouchInputView.swift in Sources */, - 84D2CFAA7888C9DE9E41A043C93F5336 /* UIApplication+AppExtension.swift in Sources */, - 699E9056DC330E8BF43678E919936B3C /* UIDevice+Vibration.swift in Sources */, - 1C313D195E2DD79B9AA7484558E86343 /* UIImage+PDF.swift in Sources */, - 9739EE0B840B0F623D2D380A441CABBB /* UIResponder+FirstResponder.swift in Sources */, - 99ECED26C64FD819403DE601D582938A /* UIScene+KeyboardFocus.swift in Sources */, - D2C593DE7972E6DDCCD0AB051DFCC17F /* UIScreen+ControllerSkin.swift in Sources */, - 85527500CF80CEFFD460EC47E6AF9C25 /* UIWindowScene+StageManager.swift in Sources */, - E7BAD58DE1C59A3242FA699CE57D8E92 /* VideoFormat.swift in Sources */, - E04C4B20B14B29E89862820789418DDC /* VideoManager.swift in Sources */, - 7B214DD8A093E10187E40B2363E09F1F /* VideoRendering.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - E99335F18DE491EDD3ED0E2DBB89F7FF /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 613B16943E12EE293AB8EBA44F780880 /* GoogleToolboxForMac-dummy.m in Sources */, - A5BD2CABC615B236431CBCEAC88FD22F /* GTMNSDictionary+URLArguments.m in Sources */, - 1DD5D0693ECAD69DABC12D2F135C5B5C /* GTMNSString+URLArguments.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - ED5DFC24546A9917FAD88C38491EE329 /* Sources */ = { + FA9DDAB34B64DCCC14952BBD8E0CCCEF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + CC6E8E2AE33BC0DFAB7620BF20BE5DBB /* Async.swift in Sources */, + 04380BD67BEFB218B47975BFF94C4B77 /* Auth.swift in Sources */, + F1D849039E3AE051D84F5AB2434E4D32 /* AuthRoutes.swift in Sources */, + 9391AD11D07FA1E05A5214C759220726 /* Base.swift in Sources */, + D71ABB08B6374DFDFAC0CEF86439AD80 /* BaseTeam.swift in Sources */, + 7EDA5DCB56636BD3C12BCDCB7BB6E593 /* Common.swift in Sources */, + 11A0997DB132A27DB220AEDEF6C2FC78 /* Contacts.swift in Sources */, + 4C5816BFC39A038F607CEBF06EBAFA66 /* ContactsRoutes.swift in Sources */, + 373CA8EF1554F91A51DF75B33411DFEA /* Custom.swift in Sources */, + 9764B4BA5D65FD3DB40928AB785018E0 /* CustomRoutes.swift in Sources */, + 70B4651742DD71B4991606898E40BDD8 /* CustomTasks.swift in Sources */, + 8BB6D54EA1E55CDDB425F34604665834 /* DBChunkInputStream.m in Sources */, + B964B855E4E857DAEAB1CB5D6032876B /* DropboxClient.swift in Sources */, + 689FDAAFA8B25B04D4CAC3A4C6A4C10F /* DropboxClientsManager.swift in Sources */, + E790FB7C2B25DA4C665808BBAE955853 /* DropboxTeamClient.swift in Sources */, + 0264C8CEA55AAE719B98A79717689E84 /* DropboxTransportClient.swift in Sources */, + 14DC681B17A1B58272391D1D13B16238 /* FileProperties.swift in Sources */, + 172E915C23AA2D59EAEDAD1DC8F10274 /* FilePropertiesRoutes.swift in Sources */, + E1FE8151E44B6536F24437390E6D5F30 /* FileRequests.swift in Sources */, + 0B8862D741140666F35999BD1C67AFFE /* FileRequestsRoutes.swift in Sources */, + EE76AEB8804234E5B3E9ABD84BC310E3 /* Files.swift in Sources */, + E15BE0D8C9C3A6785FAE5E6E89B90D07 /* FilesRoutes.swift in Sources */, + 0C26EB4BE976B60CD857812E0125CF50 /* OAuth.swift in Sources */, + EBDB37F52F9C59552C2294164562E911 /* OAuthMobile.swift in Sources */, + 859DAA6E3BB359F07A6F1DC19703EDAD /* Paper.swift in Sources */, + 2C1CF1FA139226F00F14558601F9A911 /* PaperRoutes.swift in Sources */, + 06AFD3537B6ACECFF730CD982AF618EE /* SDKConstants.swift in Sources */, + 998E072A529E35717DE48C1BB9155639 /* SeenState.swift in Sources */, + 2639EE414E15EB8C5DC5D18BF1B6F39A /* Sharing.swift in Sources */, + 118B805BE28A7A32090AC55F13466B0C /* SharingRoutes.swift in Sources */, + 15CB251D27485707916C0669A54576CE /* StoneBase.swift in Sources */, + E43287A65A84A8B79DEF1343DBD7571A /* StoneSerializers.swift in Sources */, + C79ABE3FC9998E3F44B9842CFDCED449 /* StoneValidators.swift in Sources */, + 20F69FEEFF9BCADB35F235F1A0E19C8A /* SwiftyDropbox-dummy.m in Sources */, + 66085A85B603130A665AF34D97C5D2F2 /* Team.swift in Sources */, + 1960B9C5E4BF07510AF80754FAC3875C /* TeamCommon.swift in Sources */, + 54A59C82F837B5C62516AF43BA727127 /* TeamLog.swift in Sources */, + FF46F64CB114D930EC03317D467007D8 /* TeamLogRoutes.swift in Sources */, + C760D7112D1F76DD75F4A98B40C987C1 /* TeamPolicies.swift in Sources */, + 342EA3CBC961C2B408226AAFA5D4DA4F /* TeamRoutes.swift in Sources */, + 750B0A72B2BD41780EE2CED554A39352 /* TransportConfig.swift in Sources */, + 9205B563D949BCE238C5E3025CEC9873 /* Users.swift in Sources */, + 3B006A93A645B554478776F8C54456A0 /* UsersCommon.swift in Sources */, + 43CDEC29F52D106C7CBFD94EC9039CFD /* UsersRoutes.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 0602117E79F378CA6EC9432E4A2F2DFE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = 64DC15ACA9C0BE50343C47C7556EF937 /* PBXContainerItemProxy */; - }; - 06C88D7533B88FF913507D709B32D471 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleAPIClientForREST; - target = D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */; - targetProxy = 182C89C9CE6CCE9883389B00267CB0D3 /* PBXContainerItemProxy */; - }; - 0C4F9235A49FC0F67FA07FF9D9DE9ABC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftyDropbox; - target = FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */; - targetProxy = 7171CCE0B6B707D604944DA33B68E740 /* PBXContainerItemProxy */; - }; - 0FD168922DA16D011F4EBBEC1724DBD7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleSignIn; - target = CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */; - targetProxy = 217195DBADE042CCA0C8CDC4B3898A93 /* PBXContainerItemProxy */; - }; - 1184AD1C06F5719CE39D9DDB3C9D0ED3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Roxas; - target = B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */; - targetProxy = 77F8D708735AE9ACEDED484F57FB81CD /* PBXContainerItemProxy */; - }; - 150D86AEB94AC827006238033CFFF642 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ZIPFoundation; - target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = 115FA5913AAD88EAA93DDD1D1BA15F55 /* PBXContainerItemProxy */; - }; - 2D4CD0B7A33315E3CD9B312424710ADC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MelonDSDeltaCore; - target = 38A7AA32705A9662332E76FA75B50858 /* MelonDSDeltaCore */; - targetProxy = ABB58AF7ADA7C64C3CA39B697E459BFB /* PBXContainerItemProxy */; - }; - 31DFE8C4FDA8B68C467B126F1F173892 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Harmony; - target = 5CB4163F0A6D4BDE0A490758A78BA43D /* Harmony */; - targetProxy = BCD0AD4B1161E515B0B2028FFEC7ACA6 /* PBXContainerItemProxy */; - }; - 3333CED60D820CEA83E3774494283579 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "SNESDeltaCore-SNESDeltaCore"; - target = 6538136F848A07F507372CCFB40CEB88 /* SNESDeltaCore-SNESDeltaCore */; - targetProxy = 0DBECE441841118F16A18343AF31CEB2 /* PBXContainerItemProxy */; - }; - 3BF7467B9C159C651D4ADF0E169E0E09 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleAPIClientForREST; - target = D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */; - targetProxy = B0480D608BEEF676DA55FBCB5005519F /* PBXContainerItemProxy */; - }; - 405DB1395DC7FFCC66188966E9C8FF0F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "N64DeltaCore-Mupen64Plus"; - target = 280620EDC57ABB510508698A7233E414 /* N64DeltaCore-Mupen64Plus */; - targetProxy = 670D444F32F68C5BAE5BA52BB3C9341F /* PBXContainerItemProxy */; - }; - 420897733B4221E4B229485056E9AB67 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleToolboxForMac; - target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; - targetProxy = 2B37CC1C410B99E845DE044F83B0752C /* PBXContainerItemProxy */; - }; - 57F994495DB2B38399E960295657D2FA /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = B43168D5B6284E0B7F8C62E5731D2837 /* PBXContainerItemProxy */; - }; - 584A64134687EB9E9A7E1716B4EE4F7F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = 1A52A6707FB67141E6BA2342DA2986FB /* PBXContainerItemProxy */; - }; - 58E8FBBDF5D506D7272BB9EB705B7EC6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Alamofire; - target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; - targetProxy = 218EB7E2C662CA44770BC335EAC9E974 /* PBXContainerItemProxy */; - }; - 5F4837AB87C8BE9B028A20B89DF363EE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GBADeltaCore; - target = 7056A67459B0B8B62FACACCE167546B8 /* GBADeltaCore */; - targetProxy = 660544F600360A80311C6050DBFB12FB /* PBXContainerItemProxy */; - }; - 60E1F8AF322DD8855E9B1EA0F3ED6C6F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "NESDeltaCore-NESDeltaCore"; - target = 7F839870ECBE0065B4BCC02E5F98F48A /* NESDeltaCore-NESDeltaCore */; - targetProxy = 9A86622D90861874C972FB5531045978 /* PBXContainerItemProxy */; - }; - 63BB2FDFD973E6FC98A4CAA9BC3A5CD2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SNESDeltaCore; - target = 141E2D29C29A1BC1ABA3483321DF3C88 /* SNESDeltaCore */; - targetProxy = 923E2672706828303AB76095C2408141 /* PBXContainerItemProxy */; - }; - 65FAC1705AA8E5AC149C5257978E9888 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = F05A29193F5186E8F733980BA972B9EC /* PBXContainerItemProxy */; - }; - 7223F965D59B06D02CEBA5668B3A215B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DSDeltaCore; - target = DCBC8D45C727B1472F26E79661AF11B0 /* DSDeltaCore */; - targetProxy = 5D8BC7C0064417F7A6EC9446B8B453B3 /* PBXContainerItemProxy */; - }; - 7B74B476418D2254A7DBCBABC2EB7C8D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = A54DE205C4387B61F613CDC124D137AF /* PBXContainerItemProxy */; - }; - 875A753393C5B2F83B421A8B55AB3174 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = AFC9CE874D0440BE0B62813B4D033D2E /* PBXContainerItemProxy */; - }; - 8DF4E035B0EA67C9D2B5E81FAAD105A2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = 583173D42BF0D2C0302B77CB5A34008B /* PBXContainerItemProxy */; - }; - 92B9F5E8D3E73AE67DA059BD1DD64971 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Fabric; - target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; - targetProxy = 396504BDD855395F6A4F3327DD460648 /* PBXContainerItemProxy */; - }; - 9549964E95EE7D1903B985FD7003E796 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftyDropbox; - target = FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */; - targetProxy = DF5B23DD38F9D0918E99CA6A926F122C /* PBXContainerItemProxy */; - }; - 9A23BF2FC5BB2F51E9A1F9641F86F039 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GTMSessionFetcher; - target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; - targetProxy = 65E2351B4A27AEA1AA5B7FEAF0C5BB27 /* PBXContainerItemProxy */; - }; - A294DF459E6EAA3BCD4C8AEBC857A34F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleToolboxForMac; - target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; - targetProxy = 7087C0FF26AB5A74E2A39C29483140D2 /* PBXContainerItemProxy */; - }; - A72D314FD7CBA7BB199A34655231A53A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Crashlytics; - target = C0E41540D6862472ED7F2FA11669BE1F /* Crashlytics */; - targetProxy = A98ACDFA51CE6EBA58A454A3F6F45687 /* PBXContainerItemProxy */; - }; - AD81B017854CB26D0A2D18C9CE39C261 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SQLite.swift; - target = 3F2C1776D90B62B156DB52C41A5C419C /* SQLite.swift */; - targetProxy = B0324C12FBDC1E38147C9E9572F4D499 /* PBXContainerItemProxy */; - }; - B07DA2ABC3DE6D9A601DDE618D551A3D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Fabric; - target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; - targetProxy = A671990224DAE3878C70A0689E4AA6EA /* PBXContainerItemProxy */; - }; - B08E3AFDD79285BEF550ECE01CC48083 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "DSDeltaCore-DSDeltaCore"; - target = E5449403CBE67599315B4D26019FA175 /* DSDeltaCore-DSDeltaCore */; - targetProxy = 00ABB22A75519A7A599715EC0ACB193A /* PBXContainerItemProxy */; - }; - B4BD8CDF06B2C8F30A9378AC866A82FC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ZIPFoundation; - target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = EE028E549C7FA02EC6E68A8419489A5B /* PBXContainerItemProxy */; - }; - B8270A8FB74E336C3C90DFA5A149C0D2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SDWebImage; - target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; - targetProxy = FAC2D87B120F38C2FB54BBBD353756A8 /* PBXContainerItemProxy */; - }; - B893B7538E4BA21A7D39A98A2A372BE4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Alamofire; - target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; - targetProxy = 032ABA8A9A410F994632CDEF65807785 /* PBXContainerItemProxy */; - }; - B96F054E35BA2069A9CE75D212C23632 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "GBADeltaCore-GBADeltaCore"; - target = 890229DC8DCC9C43917568A0C4502FCA /* GBADeltaCore-GBADeltaCore */; - targetProxy = 8B84C12FA9DF88E9F0F56AEFB8624B9D /* PBXContainerItemProxy */; - }; - BA9AB397129A53475C415C208E45E540 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = N64DeltaCore; - target = 126073BF5D2BF3A4BDD22FE9062C9D20 /* N64DeltaCore */; - targetProxy = 0B6CD0ABE88B501AAD50A39D0E445B8F /* PBXContainerItemProxy */; - }; - BF2BC8A27FB0E94A8B5015FAF32981E7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ZIPFoundation; - target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = 612161C2AE361027CB10DA943C56B5C5 /* PBXContainerItemProxy */; - }; - BFBBC7C353D411E346EC54F80A8A8F56 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = DAB4C6A655ECE1630B81850BE839EE9A /* PBXContainerItemProxy */; - }; - CAB5255210A87458FB38F27D53D50BF8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NESDeltaCore; - target = 0FAC8C4777DBD31221FE57848CB5F759 /* NESDeltaCore */; - targetProxy = 9E3E15A0C985BB30CAD56F253F9202A4 /* PBXContainerItemProxy */; - }; - CACA03D933B717B4E6ABD48614BB992D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SMCalloutView; - target = D20492B6476142DCA0C455340876BB98 /* SMCalloutView */; - targetProxy = 7C330B4E047C76E064118BE2FE314A38 /* PBXContainerItemProxy */; - }; - CEDADBE67DA1EB522AA0CEE270D02C19 /* PBXTargetDependency */ = { + 0176E933B9DF63413C1766380D8365CF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "GBCDeltaCore-GBCDeltaCore"; target = 5C36E65AEF44273E4AF0CBFADD00C090 /* GBCDeltaCore-GBCDeltaCore */; - targetProxy = FA2FA092217D51D2A608BC0F246042BA /* PBXContainerItemProxy */; + targetProxy = 42C193A783D1BB080BBEC1000704334B /* PBXContainerItemProxy */; }; - D0A74EB32FD885956697FF47C4A2EC10 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GBCDeltaCore; - target = DB59C68809324297BEDAF0CC3F931B27 /* GBCDeltaCore */; - targetProxy = 9473F6E2CDA87D45944E67C067B86B59 /* PBXContainerItemProxy */; - }; - D16AFAC311E666D713B0263FEA713E35 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "DeltaCore-DeltaCore"; - target = 1B47E46598F87113B00B3B25BBF51B32 /* DeltaCore-DeltaCore */; - targetProxy = 3871E35B35BAE07094A60B4E8D698577 /* PBXContainerItemProxy */; - }; - D45175856A3E2CA63EF2763644BE1DB4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GTMSessionFetcher; - target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; - targetProxy = EBDD6F9A701A551203275358C5598614 /* PBXContainerItemProxy */; - }; - D5DF0386E3E7F77F73D4970BA4887FE7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "MelonDSDeltaCore-melonDS"; - target = 5B32FEE5AD13CB944235C9158BECB929 /* MelonDSDeltaCore-melonDS */; - targetProxy = ED11CC9CDDFD16C617C7206B44FFC277 /* PBXContainerItemProxy */; - }; - E120C130FA87078100FA1D7358BF46FB /* PBXTargetDependency */ = { + 04E83C98BDA51B627E572C6E95BA8EDD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Roxas; target = B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */; - targetProxy = 7B513CD2857B9A0B8B647BB86B98462D /* PBXContainerItemProxy */; + targetProxy = 6218128228EFAD7B4A524AEB42CB97FB /* PBXContainerItemProxy */; }; - E21AB63C36D7137CA2F5593C57AFC689 /* PBXTargetDependency */ = { + 10201230581B4419FFBDBE85EF053F32 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Fabric; + target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; + targetProxy = 8D229C2F1EE85B1E27D00AA1D0E2F07D /* PBXContainerItemProxy */; + }; + 1503E8C0492EF5E61F202A09DA21E5C6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AppAuth; + target = 5C642AA10FB29936669CC269F42079C6 /* AppAuth */; + targetProxy = 808CBCB3ED51E776558C9FD8EC1C1BF1 /* PBXContainerItemProxy */; + }; + 1D3D1303B878304E72080E38BDA14341 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DeltaCore; target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = 68B4FFAC29F79C22868F1B74A1B7C53C /* PBXContainerItemProxy */; + targetProxy = 7E5C11460D9353A6362C7ECFCCA226A4 /* PBXContainerItemProxy */; }; - E63D0301BA0E8864C0B79FF61E040DAB /* PBXTargetDependency */ = { + 1D742D4B1E43AAD5460365803124862D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Roxas; - target = B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */; - targetProxy = 7F1F16C14DD6A01A7FBDBD3515F305E9 /* PBXContainerItemProxy */; + name = "MelonDSDeltaCore-melonDS"; + target = 5B32FEE5AD13CB944235C9158BECB929 /* MelonDSDeltaCore-melonDS */; + targetProxy = AF7DC483053274DFA800F2466443160B /* PBXContainerItemProxy */; }; - F79495F0D1A7769F86BA739EE38BE670 /* PBXTargetDependency */ = { + 2112E0D63C42F20CB97F5ECBD7A4E1A4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleSignIn; - target = CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */; - targetProxy = D5EB338CE31FF03E14A17B0F83813D64 /* PBXContainerItemProxy */; + name = Alamofire; + target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; + targetProxy = 106930F3A226D2078130B3CE6D68923C /* PBXContainerItemProxy */; }; - F8E6A9AEBCCA6D1EF31F3CAA30C23B42 /* PBXTargetDependency */ = { + 238EEA2E283E44E053F0B369F9CB85E9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleAPIClientForREST; + target = D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */; + targetProxy = C74D7DE612FBBEDCA1B7152C171E3262 /* PBXContainerItemProxy */; + }; + 27915D18668C6619567344FD083EAE0B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DeltaCore; + target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; + targetProxy = D48F80BC365DF1B3A8E33324D6523928 /* PBXContainerItemProxy */; + }; + 28EE65EA59A8BBF50124F4CC59B06290 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GBADeltaCore; + target = 7056A67459B0B8B62FACACCE167546B8 /* GBADeltaCore */; + targetProxy = 298EF793452E49D5655284A280B9F9B9 /* PBXContainerItemProxy */; + }; + 29388C9E64571851AD02A6DE16D1918C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MelonDSDeltaCore; + target = 38A7AA32705A9662332E76FA75B50858 /* MelonDSDeltaCore */; + targetProxy = 9098FB6228C856DA4B7730E7659F75C0 /* PBXContainerItemProxy */; + }; + 2D39EBA8ECED05A35D6710121C3C8E74 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DeltaCore; + target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; + targetProxy = 0408354ADB097E0A8E68F20380932BB3 /* PBXContainerItemProxy */; + }; + 35A48894226347B35D8F73FAC5AF554F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "DSDeltaCore-DSDeltaCore"; + target = E5449403CBE67599315B4D26019FA175 /* DSDeltaCore-DSDeltaCore */; + targetProxy = B20304413613A7B5157B3D7ECFEFEDB0 /* PBXContainerItemProxy */; + }; + 39311880F77E386C86C8DA36B6BCA0A0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "DeltaCore-DeltaCore"; + target = 1B47E46598F87113B00B3B25BBF51B32 /* DeltaCore-DeltaCore */; + targetProxy = 7D81F9F0D4343DB552801716ECEA2412 /* PBXContainerItemProxy */; + }; + 3EB8C2079E6008F6F277C8CE7F36CB07 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GTMSessionFetcher; target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; - targetProxy = 16C867214A1C64F5B7C8BC2C57F7E5E9 /* PBXContainerItemProxy */; + targetProxy = D3B33BAB0310D199BDFD753887964357 /* PBXContainerItemProxy */; + }; + 40992F2D18F1D99073EB764374FEC509 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SDWebImage; + target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; + targetProxy = E4863082BBC88C43E94F5FDC117E3EDB /* PBXContainerItemProxy */; + }; + 47C889C72B72CCE6D3708D79927D0F84 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SwiftyDropbox; + target = FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */; + targetProxy = 7C696291D9F2C7A6DD3BE5216C1DADEB /* PBXContainerItemProxy */; + }; + 4A4C60E7C5CE914F6C7B90FC41AA19D5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GTMSessionFetcher; + target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; + targetProxy = 105291183B86B99424D915F04A6EC9D0 /* PBXContainerItemProxy */; + }; + 4EFEDBF3593AFCC349C8B4FEC088A263 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ZIPFoundation; + target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; + targetProxy = 13D1F49B3DF394631E4E66025C7BDA35 /* PBXContainerItemProxy */; + }; + 547EFA0ADCC0D6673B8CDDFC280D9AF8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AppAuth; + target = 5C642AA10FB29936669CC269F42079C6 /* AppAuth */; + targetProxy = 9B7A4646FBEA53716AAB162179A8FF4F /* PBXContainerItemProxy */; + }; + 5DD3D8832389FF835DAE5794E3AB01A7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Alamofire; + target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; + targetProxy = 6D2E706AEAE1E2E3397DCC4964ACE6C3 /* PBXContainerItemProxy */; + }; + 623D97BF6B87233BA431B76F6B501D7D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NESDeltaCore; + target = 0FAC8C4777DBD31221FE57848CB5F759 /* NESDeltaCore */; + targetProxy = 16A0FE6F747E52448CA1134642FF8A3C /* PBXContainerItemProxy */; + }; + 636E3417A93E3B1842F0FD381CE673C8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SMCalloutView; + target = D20492B6476142DCA0C455340876BB98 /* SMCalloutView */; + targetProxy = AAA10707205D50B2856F77D58D8C8E13 /* PBXContainerItemProxy */; + }; + 6466A79073C35950697C09C468BF8C95 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Roxas; + target = B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */; + targetProxy = B720251EC7132B58D2795C28365761B8 /* PBXContainerItemProxy */; + }; + 655992D7858FD1631A422614964D45EB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Fabric; + target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; + targetProxy = 072E7F0B3D88295C324403DE92F92B3A /* PBXContainerItemProxy */; + }; + 6CBBE451A7D1C3A08C82542C1E0040D4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DSDeltaCore; + target = DCBC8D45C727B1472F26E79661AF11B0 /* DSDeltaCore */; + targetProxy = 3D809D293AFBD9DD21C0414BF3B1DBCF /* PBXContainerItemProxy */; + }; + 6E9A901811BE3099E935F1FC22893C31 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleAPIClientForREST; + target = D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */; + targetProxy = 2336D1B988543D623B1A54C387ED0B61 /* PBXContainerItemProxy */; + }; + 6F0CE4B01807950B88C1E60B59DA0191 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DeltaCore; + target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; + targetProxy = D05C542A1E79E8C76828AA22FE8C7355 /* PBXContainerItemProxy */; + }; + 715902BCB336D2D24EC59FFEF5714920 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GTMAppAuth; + target = 8627999EF1D5E93E13DAFF580DA8CDCF /* GTMAppAuth */; + targetProxy = 6D26698771AE28FE4D5EB8E2FA47B074 /* PBXContainerItemProxy */; + }; + 77A56F97C875CAF07F1D960B600719BE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DeltaCore; + target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; + targetProxy = 3A1F34786D068E81F27D8F249C9FA86B /* PBXContainerItemProxy */; + }; + 77E7AE66E1E69EEFE7DEC62D520BD57F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DeltaCore; + target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; + targetProxy = 9DAC17464127653AF8C63782B487448B /* PBXContainerItemProxy */; + }; + 7F9A331E45C1D818CB903CC86F0528C1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ZIPFoundation; + target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; + targetProxy = CE55DD9B607A3EAC1D2E8F0B00021A54 /* PBXContainerItemProxy */; + }; + 87AD3D8C35793D912C2A2516A2E01F70 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SwiftyDropbox; + target = FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */; + targetProxy = 0CF12E649CAD1F1E92FED94B71AEDFFB /* PBXContainerItemProxy */; + }; + 8A1E33141C1DE6A05C1C246C32303E74 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleSignIn; + target = CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */; + targetProxy = 2F63B539FF0587BC87B0D75C8EF28C23 /* PBXContainerItemProxy */; + }; + 9CD3BECE21CF000B78DFEEF86F502355 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = N64DeltaCore; + target = 126073BF5D2BF3A4BDD22FE9062C9D20 /* N64DeltaCore */; + targetProxy = D47411A8A08D6FE7AEE5DDFD235EB9E8 /* PBXContainerItemProxy */; + }; + 9E5CCE42DF46DD3F93D485B02E434F67 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GTMAppAuth; + target = 8627999EF1D5E93E13DAFF580DA8CDCF /* GTMAppAuth */; + targetProxy = FDE3DE69220AE64B536ED6E80507B954 /* PBXContainerItemProxy */; + }; + 9EACE67A17CF18B3F7448F0AFBE698B5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GTMSessionFetcher; + target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; + targetProxy = 0E6EB0CECE923F6573D8C74F0A0C19B2 /* PBXContainerItemProxy */; + }; + A01BA50C5F0D561C95FB6A11135566FD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "GBADeltaCore-GBADeltaCore"; + target = 890229DC8DCC9C43917568A0C4502FCA /* GBADeltaCore-GBADeltaCore */; + targetProxy = 3EC8C0293F12428CC16DA81C5E7A42C9 /* PBXContainerItemProxy */; + }; + A308457B689C0C3F93100F38522A3058 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DeltaCore; + target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; + targetProxy = C9879760162056B9390CDCB7A492F552 /* PBXContainerItemProxy */; + }; + A75B9120111EDEC74CD38AD687D861E3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AppAuth; + target = 5C642AA10FB29936669CC269F42079C6 /* AppAuth */; + targetProxy = 29785AE02EC77FBB28208501FF7C6189 /* PBXContainerItemProxy */; + }; + AB25C93C73538EB029F179B21903CF33 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SQLite.swift; + target = 3F2C1776D90B62B156DB52C41A5C419C /* SQLite.swift */; + targetProxy = 7023B8C0EB28914B4D7743E5440F2877 /* PBXContainerItemProxy */; + }; + ACE6B460F49DE75C23E8A21CEC1B5F2C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ZIPFoundation; + target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; + targetProxy = 0381E78DE06B9270F4D0519BDA82935B /* PBXContainerItemProxy */; + }; + AEE392605693D1262AC59FAC9A747FF0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleSignIn; + target = CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */; + targetProxy = 2042E2571CAD8DC5706E9A876466500B /* PBXContainerItemProxy */; + }; + AF715CCE98D639D19C6A69D30D666B95 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GTMSessionFetcher; + target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; + targetProxy = D66732993C2AA0083A3C9422167351D2 /* PBXContainerItemProxy */; + }; + B44C07B4B5F167F93086445BFE9CC1D0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GBCDeltaCore; + target = DB59C68809324297BEDAF0CC3F931B27 /* GBCDeltaCore */; + targetProxy = 412CA4067545871902A7F37FAF35E3F6 /* PBXContainerItemProxy */; + }; + B90F846715153C3E811487302FEF85FF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "NESDeltaCore-NESDeltaCore"; + target = 7F839870ECBE0065B4BCC02E5F98F48A /* NESDeltaCore-NESDeltaCore */; + targetProxy = 3DBE129674815EC4346667F5BAA2126E /* PBXContainerItemProxy */; + }; + C34BDEAB78537CF42D621EC8314BA5F5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Roxas; + target = B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */; + targetProxy = 0D270BD35C866AD87A6917C16C716C0A /* PBXContainerItemProxy */; + }; + CD3B9085F0E898B9FFA3D1EAED1FD4D3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "SNESDeltaCore-SNESDeltaCore"; + target = 6538136F848A07F507372CCFB40CEB88 /* SNESDeltaCore-SNESDeltaCore */; + targetProxy = 0E0A7A7170507F9B250583AD471F9FC3 /* PBXContainerItemProxy */; + }; + CEC7BD3BB1D71B931F7AB7DBF7BD101B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SNESDeltaCore; + target = 141E2D29C29A1BC1ABA3483321DF3C88 /* SNESDeltaCore */; + targetProxy = FFDD5E4A213E93783EC2272754D443A4 /* PBXContainerItemProxy */; + }; + D4AF32E3A420951E3D71342A5EF48B6A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DeltaCore; + target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; + targetProxy = C99A88091ACD71F5271C376C33B7882F /* PBXContainerItemProxy */; + }; + E13E673AD2804CD9DE52CA13C294E7A6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DeltaCore; + target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; + targetProxy = B8F72F362174B5212D8FAEBF16BAFE37 /* PBXContainerItemProxy */; + }; + EA76B2103493AEEED85C24641B0EBC71 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Harmony; + target = 5CB4163F0A6D4BDE0A490758A78BA43D /* Harmony */; + targetProxy = EA2F59167A6B3D3D9C610A18D72CDA34 /* PBXContainerItemProxy */; + }; + FABFC06117019070CC15B7710CAC6EC0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Crashlytics; + target = C0E41540D6862472ED7F2FA11669BE1F /* Crashlytics */; + targetProxy = 19E1CF10F66B17A25BABAAB743189EBB /* PBXContainerItemProxy */; + }; + FC19AEA68C7C18B2DA9475AB1898B10E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "N64DeltaCore-Mupen64Plus"; + target = 280620EDC57ABB510508698A7233E414 /* N64DeltaCore-Mupen64Plus */; + targetProxy = C7E578AB83134DC0A1981337C8969F2C /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 00EB21316F2490D28B785F099A415BE2 /* Debug */ = { + 0212FED8D67F1BCB0AA80550037D59E8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D7091B96BF497B2A08ABE8C94D16EA5A /* MelonDSDeltaCore.debug.xcconfig */; + baseConfigurationReference = 698A11ECCAF009BA9765514FEF63E5D2 /* SNESDeltaCore.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MelonDSDeltaCore"; - IBSC_MODULE = MelonDSDeltaCore; - INFOPLIST_FILE = "Target Support Files/MelonDSDeltaCore/ResourceBundle-melonDS-MelonDSDeltaCore-Info.plist"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SNESDeltaCore"; + IBSC_MODULE = SNESDeltaCore; + INFOPLIST_FILE = "Target Support Files/SNESDeltaCore/ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = melonDS; + PRODUCT_NAME = SNESDeltaCore; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; - name = Debug; - }; - 0C152D55E3AE7EA19E66016527A0FDBD /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EAB58487403CD763EA77B6E5686C1C1C /* Pods-Delta.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Delta/Pods-Delta.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; name = Release; }; - 15C96B74855817400C0DF0D2C0B91D56 /* Release */ = { + 0CCE0514E507667D050DE33A2AF82118 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5CA49EC9478356DE77A7F75F21D362CA /* MelonDSDeltaCore.release.xcconfig */; + baseConfigurationReference = ADDACBAB744B830529FA593E7E9CD122 /* SwiftyDropbox.debug.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MelonDSDeltaCore"; - IBSC_MODULE = MelonDSDeltaCore; - INFOPLIST_FILE = "Target Support Files/MelonDSDeltaCore/ResourceBundle-melonDS-MelonDSDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = melonDS; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/SwiftyDropbox/SwiftyDropbox-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = SwiftyDropbox; + PRODUCT_NAME = SwiftyDropbox; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 16A421E61E8B0DF5456CD2D4F03FF610 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 774669B0A54F8C6387DA08EDDD540FE7 /* GTMSessionFetcher.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = GTMSessionFetcher; + PRODUCT_NAME = GTMSessionFetcher; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; name = Release; }; @@ -12407,33 +12797,60 @@ }; name = Release; }; - 18C9F270C2C5046FF4176F1A9A951D93 /* Debug */ = { + 195ECA3F0627B3DB5B11D8B08E180DF0 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5A644A5B4BD538209D5C42F09565D52C /* ZIPFoundation.debug.xcconfig */; + baseConfigurationReference = 28382F5C12A6F8376FEFD601A04F351E /* GBADeltaCore.debug.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/ZIPFoundation/ZIPFoundation.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = ZIPFoundation; - PRODUCT_NAME = ZIPFoundation; - PUBLIC_HEADERS_FOLDER_PATH = ""; + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GBADeltaCore"; + IBSC_MODULE = GBADeltaCore; + INFOPLIST_FILE = "Target Support Files/GBADeltaCore/ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + PRODUCT_NAME = GBADeltaCore; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 1EF8AB38F529355A34266EB799F0FE3E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 77B25B584DEB91D5A2E01AF428205DF8 /* GBADeltaCore.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GBADeltaCore"; + IBSC_MODULE = GBADeltaCore; + INFOPLIST_FILE = "Target Support Files/GBADeltaCore/ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + PRODUCT_NAME = GBADeltaCore; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 1F588C68DC16601BEE12C3B3FAB1B087 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D7091B96BF497B2A08ABE8C94D16EA5A /* MelonDSDeltaCore.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MelonDSDeltaCore"; + IBSC_MODULE = MelonDSDeltaCore; + INFOPLIST_FILE = "Target Support Files/MelonDSDeltaCore/ResourceBundle-melonDS-MelonDSDeltaCore-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + PRODUCT_NAME = melonDS; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; }; name = Debug; }; 2088A986D69A3A764B3B76BCC72DB4D1 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 598055BE88FB8053259FAF21F5B8BAD1 /* SMCalloutView.debug.xcconfig */; + baseConfigurationReference = B12A51AB51E035AEBEC352A58DEC7353 /* SMCalloutView.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -12480,26 +12897,9 @@ }; name = Debug; }; - 226FC5883E273BA7C2E4634C917F0425 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 698A11ECCAF009BA9765514FEF63E5D2 /* SNESDeltaCore.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SNESDeltaCore"; - IBSC_MODULE = SNESDeltaCore; - INFOPLIST_FILE = "Target Support Files/SNESDeltaCore/ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = SNESDeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; 2438465B1FD55321DFF580218C83D611 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 481B0FB19748AA00058AAB4125E08BF8 /* SDWebImage.release.xcconfig */; + baseConfigurationReference = 42FD340F455E2B2472776617C3C10535 /* SDWebImage.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -12522,6 +12922,23 @@ }; name = Release; }; + 267FA759AD9A520D1FC0672755B80CD0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1DFD1D3FB89CFCF0208D414DDE2C3D83 /* NESDeltaCore.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/NESDeltaCore"; + IBSC_MODULE = NESDeltaCore; + INFOPLIST_FILE = "Target Support Files/NESDeltaCore/ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + PRODUCT_NAME = NESDeltaCore; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; 283D753A5193C7528A6EBF93327602F0 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = F4A46C0ABE96F3E6D87318355F32F3A7 /* N64DeltaCore.release.xcconfig */; @@ -12547,9 +12964,26 @@ }; name = Release; }; + 289AC91F992215E664FA17B7963E0C98 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F4A46C0ABE96F3E6D87318355F32F3A7 /* N64DeltaCore.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/N64DeltaCore"; + IBSC_MODULE = N64DeltaCore; + INFOPLIST_FILE = "Target Support Files/N64DeltaCore/ResourceBundle-Mupen64Plus-N64DeltaCore-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + PRODUCT_NAME = Mupen64Plus; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; 3312B6D3B835689CC7619671A911CF1F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A5B95194D64CEE2620808A3F54044158 /* GoogleAPIClientForREST.release.xcconfig */; + baseConfigurationReference = C2DDE061668DA510D878B4C7EE55B5BA /* GoogleAPIClientForREST.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -12572,64 +13006,16 @@ }; name = Release; }; - 375E051D735BB027FDD35385E5E0B1CC /* Debug */ = { + 374BD0551A1BF79710A20D6C85352ACA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E6C9B6763FC803B3E3266F762DFABEC6 /* GoogleToolboxForMac.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GoogleToolboxForMac; - PRODUCT_NAME = GoogleToolboxForMac; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 37B3228796171B4F0AEEA6A87ECCEFD6 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EA54E632D567E615B08CD945946BA30C /* DeltaCore.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DeltaCore/DeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MODULEMAP_FILE = Headers/Public/DeltaCore/DeltaCore.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DeltaCore; - PRODUCT_NAME = DeltaCore; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 3E936C1C0A7F0E0AA566C5827081BE5B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1DFD1D3FB89CFCF0208D414DDE2C3D83 /* NESDeltaCore.debug.xcconfig */; + baseConfigurationReference = 954ABDE364FCE24122E00A1B9A644CEA /* SNESDeltaCore.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/NESDeltaCore"; - IBSC_MODULE = NESDeltaCore; - INFOPLIST_FILE = "Target Support Files/NESDeltaCore/ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SNESDeltaCore"; + IBSC_MODULE = SNESDeltaCore; + INFOPLIST_FILE = "Target Support Files/SNESDeltaCore/ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = NESDeltaCore; + PRODUCT_NAME = SNESDeltaCore; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -12637,41 +13023,16 @@ }; name = Debug; }; - 3F67B22CA0793C93BB7702391EE60A56 /* Debug */ = { + 386C395C7148A27CFF8DA7499F2C272F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E427909C72F63CEA1B0E907812DEA956 /* Roxas.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Roxas/Roxas-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/Roxas/Roxas.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Roxas; - PRODUCT_NAME = Roxas; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 4755A023F13440DF4A9FDDBFA2A049B7 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 77B25B584DEB91D5A2E01AF428205DF8 /* GBADeltaCore.release.xcconfig */; + baseConfigurationReference = B0765CD98C1CE1F2F85791B602FF2798 /* DeltaCore.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GBADeltaCore"; - IBSC_MODULE = GBADeltaCore; - INFOPLIST_FILE = "Target Support Files/GBADeltaCore/ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DeltaCore"; + IBSC_MODULE = DeltaCore; + INFOPLIST_FILE = "Target Support Files/DeltaCore/ResourceBundle-DeltaCore-DeltaCore-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = GBADeltaCore; + PRODUCT_NAME = DeltaCore; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -12770,6 +13131,23 @@ }; name = Release; }; + 4D89F03E5592BB04FFB7E9154EA252AC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 68A5300F3188F31B9006F34795F04024 /* DSDeltaCore.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DSDeltaCore"; + IBSC_MODULE = DSDeltaCore; + INFOPLIST_FILE = "Target Support Files/DSDeltaCore/ResourceBundle-DSDeltaCore-DSDeltaCore-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + PRODUCT_NAME = DSDeltaCore; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; 4EDF1E715540C94B86E23E88DC440D75 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = FD2F697B1A15BE95A6A49DE449DC9880 /* GBCDeltaCore.release.xcconfig */; @@ -12848,70 +13226,54 @@ }; name = Release; }; - 559C838F9DC776976C75281441939FA7 /* Debug */ = { + 549F764C31A6E837639DCB1418008E7A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 28382F5C12A6F8376FEFD601A04F351E /* GBADeltaCore.debug.xcconfig */; + baseConfigurationReference = 3D6495324D070183F05BAB2B199F89AF /* ZIPFoundation.debug.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GBADeltaCore"; - IBSC_MODULE = GBADeltaCore; - INFOPLIST_FILE = "Target Support Files/GBADeltaCore/ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = GBADeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 5AC1C3E44EC5C9487D77BEE09FDEC227 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9751757B32305955DA6674D065A4EE46 /* Roxas.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Roxas/Roxas-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/Roxas/Roxas.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = Headers/Public/ZIPFoundation/ZIPFoundation.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Roxas; - PRODUCT_NAME = Roxas; + PRODUCT_MODULE_NAME = ZIPFoundation; + PRODUCT_NAME = ZIPFoundation; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 5F2CE75395DE3122C205BFE85174FA07 /* Debug */ = { + 628B7E73FC90600E59C4544D147BE63B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0082D3F46835BE2D0939FDB289C6E65 /* Pods-Delta.debug.xcconfig */; + baseConfigurationReference = E04217CEFCF82D4E2C9F2DC0B3090E3D /* SwiftyDropbox.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Delta/Pods-Delta.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/SwiftyDropbox/SwiftyDropbox-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = SwiftyDropbox; + PRODUCT_NAME = SwiftyDropbox; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; 648D77052EBA8B7CE320CEA6C88A1932 /* Debug */ = { isa = XCBuildConfiguration; @@ -12938,9 +13300,34 @@ }; name = Debug; }; + 64CDF91AE7C6AF1B6192BF51C3EDE7ED /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B0765CD98C1CE1F2F85791B602FF2798 /* DeltaCore.release.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/DeltaCore/DeltaCore-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MODULEMAP_FILE = Headers/Public/DeltaCore/DeltaCore.modulemap; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = DeltaCore; + PRODUCT_NAME = DeltaCore; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; 652B382A946152D7993AA70F97CD4365 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DBAAF6DBA09834539A368667AF5A1211 /* GoogleAPIClientForREST.debug.xcconfig */; + baseConfigurationReference = 1E00B17C1A5DC9E1DDE14FE714A5AFBE /* GoogleAPIClientForREST.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -12964,7 +13351,7 @@ }; 694A94EDD8C12380F1133E46D256DB5A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C3B144DAC7663AA196FF05DB5F4FAEBE /* Alamofire.release.xcconfig */; + baseConfigurationReference = 6DA4650CFA3D840D5700092BAEE1BB9F /* Alamofire.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -12987,16 +13374,16 @@ }; name = Release; }; - 70AA71CA191EA861308251A8A41EAFF6 /* Debug */ = { + 6A66754EBD9DE85A69D21C98631F7CE7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 954ABDE364FCE24122E00A1B9A644CEA /* SNESDeltaCore.debug.xcconfig */; + baseConfigurationReference = 08084DF35F961C1DB3E9B2E8ED60EFB7 /* GBCDeltaCore.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SNESDeltaCore"; - IBSC_MODULE = SNESDeltaCore; - INFOPLIST_FILE = "Target Support Files/SNESDeltaCore/ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GBCDeltaCore"; + IBSC_MODULE = GBCDeltaCore; + INFOPLIST_FILE = "Target Support Files/GBCDeltaCore/ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = SNESDeltaCore; + PRODUCT_NAME = GBCDeltaCore; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -13004,26 +13391,50 @@ }; name = Debug; }; - 76406E1E97F6E745D41A0C7324D957DE /* Debug */ = { + 6B0B9A018B1B8C7C15B135CDB888E006 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3878924447484A466599DC5D45CF9CAF /* DSDeltaCore.debug.xcconfig */; + baseConfigurationReference = 81156CFB5EFE4A6A001952871E86551C /* GoogleSignIn.debug.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DSDeltaCore"; - IBSC_MODULE = DSDeltaCore; - INFOPLIST_FILE = "Target Support Files/DSDeltaCore/ResourceBundle-DSDeltaCore-DSDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = DSDeltaCore; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); SDKROOT = iphoneos; - SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; }; name = Debug; }; + 6C9C2EFEFB896C5B26EA84126474EFCB /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A9F3A1170913746AF93AFB59C287153B /* AppAuth.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/AppAuth/AppAuth-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = Headers/Public/AppAuth/AppAuth.modulemap; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = AppAuth; + PRODUCT_NAME = AppAuth; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; 78EADD840C5191397D2E089EBACE4CD3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F01FE1957D23109377788923DE2AC6B5 /* Crashlytics.release.xcconfig */; + baseConfigurationReference = 196F592EF827C71B59D72F88BBFADB73 /* Crashlytics.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -13063,9 +13474,56 @@ }; name = Debug; }; + 79799A18474661A2A576106E63E1B44F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7E44726CE3BEEC66D46CA5D4DA3FD929 /* GTMAppAuth.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = Headers/Public/GTMAppAuth/GTMAppAuth.modulemap; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = GTMAppAuth; + PRODUCT_NAME = GTMAppAuth; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 7C60E0E9036E115B96EF86E669773FFC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EA54E632D567E615B08CD945946BA30C /* DeltaCore.debug.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/DeltaCore/DeltaCore-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MODULEMAP_FILE = Headers/Public/DeltaCore/DeltaCore.modulemap; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = DeltaCore; + PRODUCT_NAME = DeltaCore; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 848C9433EC232AAC6ABCAC6A5CCE27A9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9A69779C7CE90E43C61DC0446CE1DBB5 /* SMCalloutView.release.xcconfig */; + baseConfigurationReference = 3930CBF18C1C33D1EFACFE50685AAA6E /* SMCalloutView.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -13088,22 +13546,39 @@ }; name = Release; }; - 881F174606E44BF64C1BE9689F273771 /* Debug */ = { + 88AD6B09920C76CEC6A3E56C71AFE611 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3FC5C25A1E62C26E9D6FAD2F32C223B9 /* N64DeltaCore.debug.xcconfig */; + baseConfigurationReference = FD2F697B1A15BE95A6A49DE449DC9880 /* GBCDeltaCore.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/N64DeltaCore"; - IBSC_MODULE = N64DeltaCore; - INFOPLIST_FILE = "Target Support Files/N64DeltaCore/ResourceBundle-Mupen64Plus-N64DeltaCore-Info.plist"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GBCDeltaCore"; + IBSC_MODULE = GBCDeltaCore; + INFOPLIST_FILE = "Target Support Files/GBCDeltaCore/ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = Mupen64Plus; + PRODUCT_NAME = GBCDeltaCore; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; - name = Debug; + name = Release; + }; + 89F3A980B491A2C86C6E5E611BCE2269 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FD4B129300E3ABC3B0263D68E517A823 /* Fabric.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; }; 8B5A46FF8D3C1289CDEE3BAFACABCD2A /* Release */ = { isa = XCBuildConfiguration; @@ -13167,50 +13642,67 @@ }; name = Release; }; - 92FF9E0A0A1D436F9F387CBFC8C45461 /* Release */ = { + 97C014C20812E76A5F5FC4E83F9BCE0C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 540AD95463DB65E077F08253A77C4865 /* GoogleToolboxForMac.release.xcconfig */; + baseConfigurationReference = 4E84293B19D2B78E9615B80C007FBE3D /* GTMSessionFetcher.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap; + MODULEMAP_FILE = Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GoogleToolboxForMac; - PRODUCT_NAME = GoogleToolboxForMac; + PRODUCT_MODULE_NAME = GTMSessionFetcher; + PRODUCT_NAME = GTMSessionFetcher; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 9906F639447366031A64D0499E9D4E94 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 175A71504D934211FCC245712633EBF6 /* Fabric.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; + 9865F7AE075AA6AAC9A143E635D6E7F0 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5CA49EC9478356DE77A7F75F21D362CA /* MelonDSDeltaCore.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MelonDSDeltaCore"; + IBSC_MODULE = MelonDSDeltaCore; + INFOPLIST_FILE = "Target Support Files/MelonDSDeltaCore/ResourceBundle-melonDS-MelonDSDeltaCore-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + PRODUCT_NAME = melonDS; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 98B57A421B4D5A8FE1C6991611F04C7D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 48B37C8C22C518C72C0677EACF6B53BB /* NESDeltaCore.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/NESDeltaCore"; + IBSC_MODULE = NESDeltaCore; + INFOPLIST_FILE = "Target Support Files/NESDeltaCore/ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + PRODUCT_NAME = NESDeltaCore; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; 99FB94707B9559CB88ACBC1B6D5AA3F1 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5D042F73BB66CA682FF5DD25BC25323C /* SDWebImage.debug.xcconfig */; + baseConfigurationReference = C85789FDF6B43171F0FCB8542E299962 /* SDWebImage.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -13232,48 +13724,6 @@ }; name = Debug; }; - 9B1C3AB63ABD61C525E8F590A694E47A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B0765CD98C1CE1F2F85791B602FF2798 /* DeltaCore.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DeltaCore/DeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MODULEMAP_FILE = Headers/Public/DeltaCore/DeltaCore.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DeltaCore; - PRODUCT_NAME = DeltaCore; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 9E60E2183F632BF5B896B379A36F46B8 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 553931D6CFC09E8F76B87ACF1E671321 /* Fabric.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; A007F0B433498BAF248DAC2BB2F35CB8 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1DFD1D3FB89CFCF0208D414DDE2C3D83 /* NESDeltaCore.debug.xcconfig */; @@ -13298,40 +13748,6 @@ }; name = Debug; }; - A208D1E4CD0F6EDE0BA8BEC49DCAB921 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 08084DF35F961C1DB3E9B2E8ED60EFB7 /* GBCDeltaCore.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GBCDeltaCore"; - IBSC_MODULE = GBCDeltaCore; - INFOPLIST_FILE = "Target Support Files/GBCDeltaCore/ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = GBCDeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - A90327F7AC471BC9B775ECAB806BFC68 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F4A46C0ABE96F3E6D87318355F32F3A7 /* N64DeltaCore.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/N64DeltaCore"; - IBSC_MODULE = N64DeltaCore; - INFOPLIST_FILE = "Target Support Files/N64DeltaCore/ResourceBundle-Mupen64Plus-N64DeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = Mupen64Plus; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; AFF9160A7A535D3D2D39C44FC4F9FB47 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = DE4D09832EEF5459A2AA70E928527BAB /* Harmony.release.xcconfig */; @@ -13383,7 +13799,7 @@ }; B37D27BB17B1484BEF4368EBA58F2206 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 75769AD8AA1E6A55767E34444DEBA81E /* SQLite.swift.debug.xcconfig */; + baseConfigurationReference = 0BAEF49A2334870E4FC91FC1EA0F4972 /* SQLite.swift.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -13430,20 +13846,26 @@ }; name = Debug; }; - BF33BF5E57F487B514D69C5DF0B82F1D /* Release */ = { + B99DA383F605D23A81FD2E3236F77A79 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 68A5300F3188F31B9006F34795F04024 /* DSDeltaCore.release.xcconfig */; + baseConfigurationReference = EAB58487403CD763EA77B6E5686C1C1C /* Pods-Delta.release.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DSDeltaCore"; - IBSC_MODULE = DSDeltaCore; - INFOPLIST_FILE = "Target Support Files/DSDeltaCore/ResourceBundle-DSDeltaCore-DSDeltaCore-Info.plist"; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = DSDeltaCore; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Delta/Pods-Delta.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + VALIDATE_PRODUCT = YES; }; name = Release; }; @@ -13473,7 +13895,56 @@ }; name = Release; }; - C5CB277438B8D54B2CB1298699D13D72 /* Debug */ = { + C4597CAC59564708B01624780E72ADEE /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6F44A711D7E6E13C98A5A2D6DB029155 /* GTMAppAuth.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = Headers/Public/GTMAppAuth/GTMAppAuth.modulemap; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = GTMAppAuth; + PRODUCT_NAME = GTMAppAuth; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + C86382ECFFD979C631F7C93BB7EE6E91 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 494E77D3CFBDCDB05A1862B8E739A5EA /* ZIPFoundation.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = Headers/Public/ZIPFoundation/ZIPFoundation.modulemap; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = ZIPFoundation; + PRODUCT_NAME = ZIPFoundation; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + C90A130D0A42E9FF6573208995E547BA /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = EA54E632D567E615B08CD945946BA30C /* DeltaCore.debug.xcconfig */; buildSettings = { @@ -13490,63 +13961,46 @@ }; name = Debug; }; - CC4FE286545516AD1EF0E2B5E145A574 /* Release */ = { + CE01A15975958B95C776DC9AB097261D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 48B37C8C22C518C72C0677EACF6B53BB /* NESDeltaCore.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/NESDeltaCore"; - IBSC_MODULE = NESDeltaCore; - INFOPLIST_FILE = "Target Support Files/NESDeltaCore/ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = NESDeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - CD873038F8F97EC15F2C7AD80DE1FBFE /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6AE80E95610AC55EF36C52FE2399360A /* SwiftyDropbox.debug.xcconfig */; + baseConfigurationReference = E427909C72F63CEA1B0E907812DEA956 /* Roxas.debug.xcconfig */; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyDropbox/SwiftyDropbox-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/Roxas/Roxas-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MODULEMAP_FILE = Headers/Public/Roxas/Roxas.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SwiftyDropbox; - PRODUCT_NAME = SwiftyDropbox; + PRODUCT_MODULE_NAME = Roxas; + PRODUCT_NAME = Roxas; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - CD941F2ABF37484CC45E5C6F4E020304 /* Release */ = { + CE27DF5149AE6D2E16DA6F452FF37DD5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FD2F697B1A15BE95A6A49DE449DC9880 /* GBCDeltaCore.release.xcconfig */; + baseConfigurationReference = 2912AEC6FA45796383577A04D7F50D20 /* Fabric.debug.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GBCDeltaCore"; - IBSC_MODULE = GBCDeltaCore; - INFOPLIST_FILE = "Target Support Files/GBCDeltaCore/ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = GBCDeltaCore; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); SDKROOT = iphoneos; - SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; }; - name = Release; + name = Debug; }; CF643267D6E2BD9481247DC3C62FDC72 /* Debug */ = { isa = XCBuildConfiguration; @@ -13597,31 +14051,57 @@ }; name = Debug; }; - D822F73245D5ACCB21A9AF6241FC6131 /* Release */ = { + D2A9A23BFDBD374D3165EFA184BDFBB5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5CCF0F50976DE33EBB7327D6CE071A1A /* ZIPFoundation.release.xcconfig */; + baseConfigurationReference = 3878924447484A466599DC5D45CF9CAF /* DSDeltaCore.debug.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/ZIPFoundation/ZIPFoundation.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = ZIPFoundation; - PRODUCT_NAME = ZIPFoundation; - PUBLIC_HEADERS_FOLDER_PATH = ""; + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DSDeltaCore"; + IBSC_MODULE = DSDeltaCore; + INFOPLIST_FILE = "Target Support Files/DSDeltaCore/ResourceBundle-DSDeltaCore-DSDeltaCore-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + PRODUCT_NAME = DSDeltaCore; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + D99A25D85E0373E4BC96998F090FA60F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 01A5A745F3104352234EF8168F5660E0 /* GoogleSignIn.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; + D9F686DEB3CA20A2E244C2E6DBC5402D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3FC5C25A1E62C26E9D6FAD2F32C223B9 /* N64DeltaCore.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/N64DeltaCore"; + IBSC_MODULE = N64DeltaCore; + INFOPLIST_FILE = "Target Support Files/N64DeltaCore/ResourceBundle-Mupen64Plus-N64DeltaCore-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + PRODUCT_NAME = Mupen64Plus; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; DA319C62840EFFD7E95979ED10194DC9 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 28382F5C12A6F8376FEFD601A04F351E /* GBADeltaCore.debug.xcconfig */; @@ -13649,7 +14129,7 @@ }; E2883DD59E5494A0B2B50F718382BC5B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6699C28C7C6519A74846481B5F2FC5A3 /* Alamofire.debug.xcconfig */; + baseConfigurationReference = 7E457A58ED9BCC239084CD98A2A99346 /* Alamofire.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -13671,26 +14151,57 @@ }; name = Debug; }; - E9D29DF1C10DB2D94CC0C1CDCF959821 /* Release */ = { + EBBD983F10FE5A429215723A91102F33 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B0765CD98C1CE1F2F85791B602FF2798 /* DeltaCore.release.xcconfig */; + baseConfigurationReference = A0082D3F46835BE2D0939FDB289C6E65 /* Pods-Delta.debug.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DeltaCore"; - IBSC_MODULE = DeltaCore; - INFOPLIST_FILE = "Target Support Files/DeltaCore/ResourceBundle-DeltaCore-DeltaCore-Info.plist"; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; IPHONEOS_DEPLOYMENT_TARGET = 14.0; - PRODUCT_NAME = DeltaCore; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Delta/Pods-Delta.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + ED7AFE284AC1BFBA478BC0F3D01D4510 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9751757B32305955DA6674D065A4EE46 /* Roxas.release.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/Roxas/Roxas-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MODULEMAP_FILE = Headers/Public/Roxas/Roxas.modulemap; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = Roxas; + PRODUCT_NAME = Roxas; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; name = Release; }; EE4B61CB33FFFD9A6BBBAD227A7D8424 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AB908F46DC3EF545093A039507FB5ECB /* Crashlytics.debug.xcconfig */; + baseConfigurationReference = 1F236A3805E02C90AE33A5EAB004863A /* Crashlytics.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -13706,7 +14217,7 @@ }; F1D3EE1C398FB791CF83F37B1D42CB72 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5AB2076B345EF471110CA2A7FA91562E /* SQLite.swift.release.xcconfig */; + baseConfigurationReference = 62CDF5DE6B91DC2BAAA133DC0CE14FB9 /* SQLite.swift.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -13729,46 +14240,29 @@ }; name = Release; }; - F21AC1F616392EFCE74002B17D39877E /* Debug */ = { + F3C2EBA90C60AF53821B5A80B79042FC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F41D052495AB2789D36A7796B17EADD4 /* GoogleSignIn.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - F7B233153EA9C30788F882A4ED0CAEEE /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = BD4FD5ECAA33E983C93BD04B1AEEDF59 /* SwiftyDropbox.release.xcconfig */; + baseConfigurationReference = F32189B7EB10C9C7FA2DBEC132A8B9DF /* AppAuth.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyDropbox/SwiftyDropbox-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/AppAuth/AppAuth-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap; + MODULEMAP_FILE = Headers/Public/AppAuth/AppAuth.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SwiftyDropbox; - PRODUCT_NAME = SwiftyDropbox; + PRODUCT_MODULE_NAME = AppAuth; + PRODUCT_NAME = AppAuth; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; F826D8E940068265C30AC171EBDEAC6F /* Debug */ = { isa = XCBuildConfiguration; @@ -13792,72 +14286,6 @@ }; name = Debug; }; - F8FF84F0611C62BB89806204320DCDFC /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9A994D0970557F8DBF425A2E6710A042 /* GTMSessionFetcher.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GTMSessionFetcher; - PRODUCT_NAME = GTMSessionFetcher; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - FA022FD835E65FA407EAD2C248B430A1 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 36CE82CF693A751E8245859F6F1F0059 /* GoogleSignIn.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - FCF81D5AEDD3E1CB1B260D2C93FEBB37 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7D657B72C28A6793148493FF9DEAA8A6 /* GTMSessionFetcher.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GTMSessionFetcher; - PRODUCT_NAME = GTMSessionFetcher; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -13870,6 +14298,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 04E7E97FC89B707F89FF2D8CEDBF5E10 /* Build configuration list for PBXNativeTarget "SNESDeltaCore-SNESDeltaCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 374BD0551A1BF79710A20D6C85352ACA /* Debug */, + 0212FED8D67F1BCB0AA80550037D59E8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 07FCA5513B0EC4497E3BE9547647F95F /* Build configuration list for PBXNativeTarget "MelonDSDeltaCore" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -13888,20 +14325,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 0B5724438AC08EB51CF27843F2C55956 /* Build configuration list for PBXNativeTarget "Roxas" */ = { + 09B200A2586DB2CC057311A44B897BEA /* Build configuration list for PBXNativeTarget "NESDeltaCore-NESDeltaCore" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3F67B22CA0793C93BB7702391EE60A56 /* Debug */, - 5AC1C3E44EC5C9487D77BEE09FDEC227 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0CA496B39F943A5EB3AF2261C664733C /* Build configuration list for PBXNativeTarget "MelonDSDeltaCore-melonDS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00EB21316F2490D28B785F099A415BE2 /* Debug */, - 15C96B74855817400C0DF0D2C0B91D56 /* Release */, + 267FA759AD9A520D1FC0672755B80CD0 /* Debug */, + 98B57A421B4D5A8FE1C6991611F04C7D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -13915,6 +14343,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 24A1D8D2B42CF7E088967A7102856A6E /* Build configuration list for PBXNativeTarget "N64DeltaCore-Mupen64Plus" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D9F686DEB3CA20A2E244C2E6DBC5402D /* Debug */, + 289AC91F992215E664FA17B7963E0C98 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 271155C4B2F029F0A71DD1763AE4CBFE /* Build configuration list for PBXNativeTarget "DSDeltaCore" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -13933,15 +14370,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2DE70B831705E35B38C14C221BEB70EA /* Build configuration list for PBXNativeTarget "NESDeltaCore-NESDeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 3E936C1C0A7F0E0AA566C5827081BE5B /* Debug */, - CC4FE286545516AD1EF0E2B5E145A574 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 2FD49999DA0C737E43F6B26D46E2798D /* Build configuration list for PBXAggregateTarget "Crashlytics" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -13951,11 +14379,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3A5BE225A7CCAEC0F4EC3FD397714BF0 /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */ = { + 2FEC6A495F14D70E19AADEB8CD5537E7 /* Build configuration list for PBXNativeTarget "Pods-Delta" */ = { isa = XCConfigurationList; buildConfigurations = ( - F8FF84F0611C62BB89806204320DCDFC /* Debug */, - FCF81D5AEDD3E1CB1B260D2C93FEBB37 /* Release */, + EBBD983F10FE5A429215723A91102F33 /* Debug */, + B99DA383F605D23A81FD2E3236F77A79 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 35002C794040DC29952B111351615955 /* Build configuration list for PBXNativeTarget "SwiftyDropbox" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0CCE0514E507667D050DE33A2AF82118 /* Debug */, + 628B7E73FC90600E59C4544D147BE63B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3B8C1B108D2D3D538B67AD186A20A63C /* Build configuration list for PBXNativeTarget "DeltaCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7C60E0E9036E115B96EF86E669773FFC /* Debug */, + 64CDF91AE7C6AF1B6192BF51C3EDE7ED /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -13978,29 +14424,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4BF080638F1BF895E31B0C5D2DB56B66 /* Build configuration list for PBXNativeTarget "ZIPFoundation" */ = { + 5B5FED3C22EDD8397D3FB134C41BBF1C /* Build configuration list for PBXNativeTarget "AppAuth" */ = { isa = XCConfigurationList; buildConfigurations = ( - 18C9F270C2C5046FF4176F1A9A951D93 /* Debug */, - D822F73245D5ACCB21A9AF6241FC6131 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 54196F2930F7F66CFF163D8030FAC5C2 /* Build configuration list for PBXNativeTarget "Pods-Delta" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5F2CE75395DE3122C205BFE85174FA07 /* Debug */, - 0C152D55E3AE7EA19E66016527A0FDBD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 598A4E912D6B733A5E93F1A84DABBED3 /* Build configuration list for PBXNativeTarget "GBADeltaCore-GBADeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 559C838F9DC776976C75281441939FA7 /* Debug */, - 4755A023F13440DF4A9FDDBFA2A049B7 /* Release */, + F3C2EBA90C60AF53821B5A80B79042FC /* Debug */, + 6C9C2EFEFB896C5B26EA84126474EFCB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -14014,29 +14442,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 663B6A2DDCEC446185B84C36ACD073D6 /* Build configuration list for PBXNativeTarget "DSDeltaCore-DSDeltaCore" */ = { + 62E72F0214AA2B95FFD06A5094AB62AC /* Build configuration list for PBXNativeTarget "GTMAppAuth" */ = { isa = XCConfigurationList; buildConfigurations = ( - 76406E1E97F6E745D41A0C7324D957DE /* Debug */, - BF33BF5E57F487B514D69C5DF0B82F1D /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 705546DA72F2B83A3E1F0EAE82E3C827 /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 375E051D735BB027FDD35385E5E0B1CC /* Debug */, - 92FF9E0A0A1D436F9F387CBFC8C45461 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 74C3E37F40C49D1F4520899231264732 /* Build configuration list for PBXNativeTarget "DeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 37B3228796171B4F0AEEA6A87ECCEFD6 /* Debug */, - 9B1C3AB63ABD61C525E8F590A694E47A /* Release */, + 79799A18474661A2A576106E63E1B44F /* Debug */, + C4597CAC59564708B01624780E72ADEE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -14050,11 +14460,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 805B5427221266F71215E9B07475DEA2 /* Build configuration list for PBXAggregateTarget "Fabric" */ = { + 7F982436D96A9F7AAE7AE29D12E88120 /* Build configuration list for PBXAggregateTarget "GoogleSignIn" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9906F639447366031A64D0499E9D4E94 /* Debug */, - 9E60E2183F632BF5B896B379A36F46B8 /* Release */, + 6B0B9A018B1B8C7C15B135CDB888E006 /* Debug */, + D99A25D85E0373E4BC96998F090FA60F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 89DC8FEB15062D86BEFD312203ADCF26 /* Build configuration list for PBXNativeTarget "DeltaCore-DeltaCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C90A130D0A42E9FF6573208995E547BA /* Debug */, + 386C395C7148A27CFF8DA7499F2C272F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -14068,29 +14487,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A05C444C9557E0D417D9BF4E9DF194A3 /* Build configuration list for PBXNativeTarget "SwiftyDropbox" */ = { + 9800C0589EFA6EB2D67FD93E63C66EAB /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */ = { isa = XCConfigurationList; buildConfigurations = ( - CD873038F8F97EC15F2C7AD80DE1FBFE /* Debug */, - F7B233153EA9C30788F882A4ED0CAEEE /* Release */, + 97C014C20812E76A5F5FC4E83F9BCE0C /* Debug */, + 16A421E61E8B0DF5456CD2D4F03FF610 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A118FE5B7C9EE53DE03038A50E9AA1E6 /* Build configuration list for PBXAggregateTarget "GoogleSignIn" */ = { + 9E6DB1521B0E70E19837DEBD076BBA65 /* Build configuration list for PBXAggregateTarget "Fabric" */ = { isa = XCConfigurationList; buildConfigurations = ( - F21AC1F616392EFCE74002B17D39877E /* Debug */, - FA022FD835E65FA407EAD2C248B430A1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - A61EFF98EBAB617B0477DB9275217779 /* Build configuration list for PBXNativeTarget "DeltaCore-DeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C5CB277438B8D54B2CB1298699D13D72 /* Debug */, - E9D29DF1C10DB2D94CC0C1CDCF959821 /* Release */, + CE27DF5149AE6D2E16DA6F452FF37DD5 /* Debug */, + 89F3A980B491A2C86C6E5E611BCE2269 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -14104,11 +14514,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CB4B243CF23253D32380869A30311BE2 /* Build configuration list for PBXNativeTarget "N64DeltaCore-Mupen64Plus" */ = { + AC08A8742DDE1C7A38E6DCD9B35CE59E /* Build configuration list for PBXNativeTarget "ZIPFoundation" */ = { isa = XCConfigurationList; buildConfigurations = ( - 881F174606E44BF64C1BE9689F273771 /* Debug */, - A90327F7AC471BC9B775ECAB806BFC68 /* Release */, + 549F764C31A6E837639DCB1418008E7A /* Debug */, + C86382ECFFD979C631F7C93BB7EE6E91 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + BAF81FB83E228331B26A5A1CEA6CDC37 /* Build configuration list for PBXNativeTarget "GBCDeltaCore-GBCDeltaCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6A66754EBD9DE85A69D21C98631F7CE7 /* Debug */, + 88AD6B09920C76CEC6A3E56C71AFE611 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -14122,6 +14541,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + D2B5C7A37C0C275FDBFBD82B51C0FC9A /* Build configuration list for PBXNativeTarget "Roxas" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CE01A15975958B95C776DC9AB097261D /* Debug */, + ED7AFE284AC1BFBA478BC0F3D01D4510 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; D584C13DB0F31BBF4E687A5EBAA136A2 /* Build configuration list for PBXNativeTarget "SQLite.swift" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -14131,6 +14559,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + D5EE1D17379088C9784C90F886F174CC /* Build configuration list for PBXNativeTarget "DSDeltaCore-DSDeltaCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D2A9A23BFDBD374D3165EFA184BDFBB5 /* Debug */, + 4D89F03E5592BB04FFB7E9154EA252AC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; DAE691A18BC09FB13583507769DF5BBF /* Build configuration list for PBXNativeTarget "Harmony" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -14140,20 +14577,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E4EDC2895B540564D7C9ED07FEF6FDF7 /* Build configuration list for PBXNativeTarget "GBCDeltaCore-GBCDeltaCore" */ = { + DD6CAC2FFE855C331CBDAA1F404AE160 /* Build configuration list for PBXNativeTarget "MelonDSDeltaCore-melonDS" */ = { isa = XCConfigurationList; buildConfigurations = ( - A208D1E4CD0F6EDE0BA8BEC49DCAB921 /* Debug */, - CD941F2ABF37484CC45E5C6F4E020304 /* Release */, + 1F588C68DC16601BEE12C3B3FAB1B087 /* Debug */, + 9865F7AE075AA6AAC9A143E635D6E7F0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - FE782205259167B7CB9B4164B7F9E233 /* Build configuration list for PBXNativeTarget "SNESDeltaCore-SNESDeltaCore" */ = { + EAC3EF6889DECE73845AAED3FDD67F48 /* Build configuration list for PBXNativeTarget "GBADeltaCore-GBADeltaCore" */ = { isa = XCConfigurationList; buildConfigurations = ( - 70AA71CA191EA861308251A8A41EAFF6 /* Debug */, - 226FC5883E273BA7C2E4634C917F0425 /* Release */, + 195ECA3F0627B3DB5B11D8B08E180DF0 /* Debug */, + 1EF8AB38F529355A34266EB799F0FE3E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Target Support Files/AppAuth/AppAuth-dummy.m b/Pods/Target Support Files/AppAuth/AppAuth-dummy.m new file mode 100644 index 0000000..0f45668 --- /dev/null +++ b/Pods/Target Support Files/AppAuth/AppAuth-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_AppAuth : NSObject +@end +@implementation PodsDummy_AppAuth +@end diff --git a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch b/Pods/Target Support Files/AppAuth/AppAuth-prefix.pch similarity index 100% rename from Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch rename to Pods/Target Support Files/AppAuth/AppAuth-prefix.pch diff --git a/Pods/Target Support Files/AppAuth/AppAuth-umbrella.h b/Pods/Target Support Files/AppAuth/AppAuth-umbrella.h new file mode 100644 index 0000000..0950d61 --- /dev/null +++ b/Pods/Target Support Files/AppAuth/AppAuth-umbrella.h @@ -0,0 +1,53 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "AppAuthCore.h" +#import "OIDAuthorizationRequest.h" +#import "OIDAuthorizationResponse.h" +#import "OIDAuthorizationService.h" +#import "OIDAuthState.h" +#import "OIDAuthStateChangeDelegate.h" +#import "OIDAuthStateErrorDelegate.h" +#import "OIDClientMetadataParameters.h" +#import "OIDDefines.h" +#import "OIDEndSessionRequest.h" +#import "OIDEndSessionResponse.h" +#import "OIDError.h" +#import "OIDErrorUtilities.h" +#import "OIDExternalUserAgent.h" +#import "OIDExternalUserAgentRequest.h" +#import "OIDExternalUserAgentSession.h" +#import "OIDFieldMapping.h" +#import "OIDGrantTypes.h" +#import "OIDIDToken.h" +#import "OIDRegistrationRequest.h" +#import "OIDRegistrationResponse.h" +#import "OIDResponseTypes.h" +#import "OIDScopes.h" +#import "OIDScopeUtilities.h" +#import "OIDServiceConfiguration.h" +#import "OIDServiceDiscovery.h" +#import "OIDTokenRequest.h" +#import "OIDTokenResponse.h" +#import "OIDTokenUtilities.h" +#import "OIDURLQueryComponent.h" +#import "OIDURLSessionProvider.h" +#import "AppAuth.h" +#import "OIDAuthorizationService+IOS.h" +#import "OIDAuthState+IOS.h" +#import "OIDExternalUserAgentCatalyst.h" +#import "OIDExternalUserAgentIOS.h" +#import "OIDExternalUserAgentIOSCustomBrowser.h" + +FOUNDATION_EXPORT double AppAuthVersionNumber; +FOUNDATION_EXPORT const unsigned char AppAuthVersionString[]; + diff --git a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.debug.xcconfig b/Pods/Target Support Files/AppAuth/AppAuth.debug.xcconfig similarity index 73% rename from Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.debug.xcconfig rename to Pods/Target Support Files/AppAuth/AppAuth.debug.xcconfig index e62cc17..d04e6e0 100644 --- a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.debug.xcconfig +++ b/Pods/Target Support Files/AppAuth/AppAuth.debug.xcconfig @@ -1,12 +1,12 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AppAuth GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AppAuth" "${PODS_ROOT}/Headers/Public" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/GoogleToolboxForMac +PODS_TARGET_SRCROOT = ${PODS_ROOT}/AppAuth PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES diff --git a/Pods/Target Support Files/AppAuth/AppAuth.modulemap b/Pods/Target Support Files/AppAuth/AppAuth.modulemap new file mode 100644 index 0000000..011c474 --- /dev/null +++ b/Pods/Target Support Files/AppAuth/AppAuth.modulemap @@ -0,0 +1,6 @@ +module AppAuth { + umbrella header "AppAuth-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.release.xcconfig b/Pods/Target Support Files/AppAuth/AppAuth.release.xcconfig similarity index 73% rename from Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.release.xcconfig rename to Pods/Target Support Files/AppAuth/AppAuth.release.xcconfig index e62cc17..d04e6e0 100644 --- a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.release.xcconfig +++ b/Pods/Target Support Files/AppAuth/AppAuth.release.xcconfig @@ -1,12 +1,12 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AppAuth GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AppAuth" "${PODS_ROOT}/Headers/Public" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/GoogleToolboxForMac +PODS_TARGET_SRCROOT = ${PODS_ROOT}/AppAuth PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES diff --git a/Pods/Target Support Files/GTMAppAuth/GTMAppAuth-dummy.m b/Pods/Target Support Files/GTMAppAuth/GTMAppAuth-dummy.m new file mode 100644 index 0000000..04b91f3 --- /dev/null +++ b/Pods/Target Support Files/GTMAppAuth/GTMAppAuth-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_GTMAppAuth : NSObject +@end +@implementation PodsDummy_GTMAppAuth +@end diff --git a/Pods/Target Support Files/GTMAppAuth/GTMAppAuth-umbrella.h b/Pods/Target Support Files/GTMAppAuth/GTMAppAuth-umbrella.h new file mode 100644 index 0000000..4ab5f86 --- /dev/null +++ b/Pods/Target Support Files/GTMAppAuth/GTMAppAuth-umbrella.h @@ -0,0 +1,21 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "GTMAppAuth.h" +#import "GTMAppAuthFetcherAuthorization+Keychain.h" +#import "GTMAppAuthFetcherAuthorization.h" +#import "GTMKeychain.h" +#import "GTMOAuth2KeychainCompatibility.h" + +FOUNDATION_EXPORT double GTMAppAuthVersionNumber; +FOUNDATION_EXPORT const unsigned char GTMAppAuthVersionString[]; + diff --git a/Pods/Target Support Files/GTMAppAuth/GTMAppAuth.debug.xcconfig b/Pods/Target Support Files/GTMAppAuth/GTMAppAuth.debug.xcconfig new file mode 100644 index 0000000..64f956a --- /dev/null +++ b/Pods/Target Support Files/GTMAppAuth/GTMAppAuth.debug.xcconfig @@ -0,0 +1,14 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GTMAppAuth +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GTMAppAuth" "${PODS_ROOT}/Headers/Public" "${PODS_TARGET_SRCROOT}" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/AppAuth/AppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/GTMAppAuth +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/GTMAppAuth/GTMAppAuth.modulemap b/Pods/Target Support Files/GTMAppAuth/GTMAppAuth.modulemap new file mode 100644 index 0000000..21969cd --- /dev/null +++ b/Pods/Target Support Files/GTMAppAuth/GTMAppAuth.modulemap @@ -0,0 +1,6 @@ +module GTMAppAuth { + umbrella header "GTMAppAuth-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/GTMAppAuth/GTMAppAuth.release.xcconfig b/Pods/Target Support Files/GTMAppAuth/GTMAppAuth.release.xcconfig new file mode 100644 index 0000000..64f956a --- /dev/null +++ b/Pods/Target Support Files/GTMAppAuth/GTMAppAuth.release.xcconfig @@ -0,0 +1,14 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GTMAppAuth +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GTMAppAuth" "${PODS_ROOT}/Headers/Public" "${PODS_TARGET_SRCROOT}" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/AppAuth/AppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/GTMAppAuth +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/GoogleSignIn/GoogleSignIn.debug.xcconfig b/Pods/Target Support Files/GoogleSignIn/GoogleSignIn.debug.xcconfig index b842a0f..4be163c 100644 --- a/Pods/Target Support Files/GoogleSignIn/GoogleSignIn.debug.xcconfig +++ b/Pods/Target Support Files/GoogleSignIn/GoogleSignIn.debug.xcconfig @@ -3,7 +3,7 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleSignIn FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/GoogleSignIn/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/AppAuth/AppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} diff --git a/Pods/Target Support Files/GoogleSignIn/GoogleSignIn.release.xcconfig b/Pods/Target Support Files/GoogleSignIn/GoogleSignIn.release.xcconfig index b842a0f..4be163c 100644 --- a/Pods/Target Support Files/GoogleSignIn/GoogleSignIn.release.xcconfig +++ b/Pods/Target Support Files/GoogleSignIn/GoogleSignIn.release.xcconfig @@ -3,7 +3,7 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleSignIn FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/GoogleSignIn/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_ROOT}/Headers/Public/AppAuth/AppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} diff --git a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-dummy.m b/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-dummy.m deleted file mode 100644 index 9e35ec0..0000000 --- a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_GoogleToolboxForMac : NSObject -@end -@implementation PodsDummy_GoogleToolboxForMac -@end diff --git a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-umbrella.h b/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-umbrella.h deleted file mode 100644 index f719448..0000000 --- a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-umbrella.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "GTMDebugSelectorValidation.h" -#import "GTMDebugThreadValidation.h" -#import "GTMMethodCheck.h" -#import "GTMDefines.h" -#import "GTMNSDictionary+URLArguments.h" -#import "GTMNSString+URLArguments.h" - -FOUNDATION_EXPORT double GoogleToolboxForMacVersionNumber; -FOUNDATION_EXPORT const unsigned char GoogleToolboxForMacVersionString[]; - diff --git a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap b/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap deleted file mode 100644 index 0d4a60b..0000000 --- a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -module GoogleToolboxForMac { - umbrella header "GoogleToolboxForMac-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.xcconfig b/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.xcconfig deleted file mode 100644 index 7889351..0000000 --- a/Pods/Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/GoogleToolboxForMac -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Harmony/Harmony.debug.xcconfig b/Pods/Target Support Files/Harmony/Harmony.debug.xcconfig index 9f4dbe1..9c0d74b 100644 --- a/Pods/Target Support Files/Harmony/Harmony.debug.xcconfig +++ b/Pods/Target Support Files/Harmony/Harmony.debug.xcconfig @@ -3,8 +3,8 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Harmony FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/GoogleSignIn/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Harmony" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Harmony" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/AppAuth/AppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/AppAuth/AppAuth.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} diff --git a/Pods/Target Support Files/Harmony/Harmony.release.xcconfig b/Pods/Target Support Files/Harmony/Harmony.release.xcconfig index 9f4dbe1..9c0d74b 100644 --- a/Pods/Target Support Files/Harmony/Harmony.release.xcconfig +++ b/Pods/Target Support Files/Harmony/Harmony.release.xcconfig @@ -3,8 +3,8 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Harmony FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/GoogleSignIn/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Harmony" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Harmony" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/AppAuth/AppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/AppAuth/AppAuth.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.markdown b/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.markdown index d6ff9d1..aaca8ae 100644 --- a/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.markdown @@ -24,6 +24,212 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## AppAuth + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + ## Crashlytics Fabric: Copyright 2017 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2017 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt @@ -32,6 +238,212 @@ Fabric: Copyright 2017 Google, Inc. All Rights Reserved. Use of this software is Fabric: Copyright 2017 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. OSS: http://get.fabric.io/terms/opensource.txt +## GTMAppAuth + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + ## GTMSessionFetcher @@ -446,213 +858,7 @@ Fabric: Copyright 2017 Google, Inc. All Rights Reserved. Use of this software is ## GoogleSignIn -Copyright 2018 Google - -## GoogleToolboxForMac - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - +Copyright 2019 Google ## SDWebImage diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.plist b/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.plist index bf6fc6f..feda35d 100644 --- a/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.plist @@ -41,6 +41,218 @@ THE SOFTWARE. Type PSGroupSpecifier + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + License + Apache License, Version 2.0 + Title + AppAuth + Type + PSGroupSpecifier + FooterText Fabric: Copyright 2017 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2017 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt @@ -254,6 +466,218 @@ THE SOFTWARE. Copyright [yyyy] [name of copyright owner] + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + License + Apache + Title + GTMAppAuth + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -487,7 +911,7 @@ THE SOFTWARE. FooterText - Copyright 2018 Google + Copyright 2019 Google License Copyright Title @@ -495,218 +919,6 @@ THE SOFTWARE. Type PSGroupSpecifier - - FooterText - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - License - Apache - Title - GoogleToolboxForMac - Type - PSGroupSpecifier - FooterText Copyright (c) 2016 Olivier Poitrey rs@dailymotion.com diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta.debug.xcconfig b/Pods/Target Support Files/Pods-Delta/Pods-Delta.debug.xcconfig index e26c8ae..d3dbd74 100644 --- a/Pods/Target Support Files/Pods-Delta/Pods-Delta.debug.xcconfig +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta.debug.xcconfig @@ -3,11 +3,11 @@ CLANG_ENABLE_MODULES = NO CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/GoogleSignIn/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 STATIC_LIBRARY=1 STATIC_LIBRARY=1 JIT_ENABLED=1 STATIC_LIBRARY=1 MUPENPLUSAPI TXFILTER_LIB OS_IOS GLESX GL_ERROR_DEBUG GL_DEBUG GLESX PNG_ARM_NEON_OPT=0 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_ROOT}/Headers/Public/DeltaCore" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST" "${PODS_ROOT}/Headers/Public/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public/Harmony" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_ROOT}/Headers/Public/NESDeltaCore" "${PODS_ROOT}/Headers/Public/Roxas" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SMCalloutView" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_ROOT}/Headers/Public/SQLite.swift" "${PODS_ROOT}/Headers/Public/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/include" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/src" "${PODS_CONFIGURATION_BUILD_DIR}" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/MelonDSDeltaCore/melonDS/src" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/osal" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/libpng" -LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/Harmony" "${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SMCalloutView" "${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" /usr/lib/swift -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/MelonDSDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/N64DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/DSDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/GBADeltaCore" -isystem "${PODS_ROOT}/Headers/Public/GBCDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/Harmony" -isystem "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/N64DeltaCore" -isystem "${PODS_ROOT}/Headers/Public/NESDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/SNESDeltaCore" -iframework "${PODS_ROOT}/Crashlytics/iOS" -iframework "${PODS_ROOT}/Fabric/iOS" -iframework "${PODS_ROOT}/GoogleSignIn/Frameworks" -DHOST_DARWIN -DDESMUME_COCOA -DHAVE_OPENGL -DHAVE_LIBZ -DANDROID -fexceptions -ftree-vectorize -DCOMPRESS_MT -DIOS -DOBJ_C -marm -fvisibility=hidden -DSTATIC_LIBRARY=1 -DSTATIC_LIBRARY -DHAVE_CSTDINT -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -D__VEC4_OPT -fvisibility=hidden -funsigned-char -ffast-math -finline -fno-builtin -fno-common -fomit-frame-pointer -funroll-loops -fstrict-aliasing -DHAVE_STDINT_H -DARM -DSTATIC_LIBRARY=1 -OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-exported_symbol,_Video_PluginStartup,-exported_symbol,_Video_PluginShutdown,-exported_symbol,_Video_PluginGetVersion,-exported_symbol,_Video_RomOpen,-exported_symbol,_Video_RomClosed,-exported_symbol,_ConfigGetSharedDataFilepath,-exported_symbol,_ConfigGetUserConfigPath,-exported_symbol,_ConfigGetUserCachePath,-exported_symbol,_ConfigGetUserDataPath,-exported_symbol,_ConfigOpenSection,-exported_symbol,_ConfigDeleteSection,-exported_symbol,_ConfigSaveSection,-exported_symbol,_ConfigSaveFile,-exported_symbol,_ConfigSetDefaultInt,-exported_symbol,_ConfigSetDefaultFloat,-exported_symbol,_ConfigSetDefaultBool,-exported_symbol,_ConfigSetDefaultString,-exported_symbol,_ConfigGetParamInt,-exported_symbol,_ConfigGetParamFloat,-exported_symbol,_ConfigGetParamBool,-exported_symbol,_ConfigGetParamString,-exported_symbol,_ConfigExternalGetParameter,-exported_symbol,_ConfigExternalOpen,-exported_symbol,_ConfigExternalClose,-exported_symbol,_VidExt_Init,-exported_symbol,_VidExt_Quit,-exported_symbol,_VidExt_ListFullscreenModes,-exported_symbol,_VidExt_SetVideoMode,-exported_symbol,_VidExt_SetCaption,-exported_symbol,_VidExt_ToggleFullScreen,-exported_symbol,_VidExt_ResizeWindow,-exported_symbol,_VidExt_GL_GetProcAddress,-exported_symbol,_VidExt_GL_SetAttribute,-exported_symbol,_VidExt_GL_GetAttribute,-exported_symbol,_VidExt_GL_SwapBuffers,-exported_symbol,_ChangeWindow,-exported_symbol,_InitiateGFX,-exported_symbol,_MoveScreen,-exported_symbol,_ProcessDList,-exported_symbol,_ProcessRDPList,-exported_symbol,_ShowCFB,-exported_symbol,_UpdateScreen,-exported_symbol,_ViStatusChanged,-exported_symbol,_ViWidthChanged,-exported_symbol,_ReadScreen2,-exported_symbol,_SetRenderingCallback,-exported_symbol,_FBRead,-exported_symbol,_FBWrite,-exported_symbol,_FBGetFrameBufferInfo,-exported_symbol,_ResizeVideoOutput,-exported_symbol,_RSP_PluginStartup,-exported_symbol,_RSP_PluginShutdown,-exported_symbol,_RSP_PluginGetVersion,-exported_symbol,_DoRspCycles,-exported_symbol,_InitiateRSP,-exported_symbol,_RSP_RomClosed,-exported_symbol,_CoreGetAPIVersions,-exported_symbol,_ConfigGetParameter,-exported_symbol,_ConfigSetParameter,-exported_symbol,_CoreDoCommand -l"Alamofire" -l"DSDeltaCore" -l"GBADeltaCore" -l"GBCDeltaCore" -l"GTMSessionFetcher" -l"GoogleAPIClientForREST" -l"GoogleToolboxForMac" -l"Harmony" -l"MelonDSDeltaCore" -l"N64DeltaCore" -l"NESDeltaCore" -l"Roxas" -l"SDWebImage" -l"SMCalloutView" -l"SNESDeltaCore" -l"SQLite.swift" -l"SwiftyDropbox" -l"ZIPFoundation" -l"c++" -l"sqlite3" -l"z" -framework "CoreGraphics" -framework "CoreText" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "GoogleSignIn" -framework "ImageIO" -framework "LocalAuthentication" -framework "SafariServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "WebKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/MelonDSDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/N64DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AppAuth" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_ROOT}/Headers/Public/DeltaCore" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_ROOT}/Headers/Public/GTMAppAuth" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST" "${PODS_ROOT}/Headers/Public/Harmony" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_ROOT}/Headers/Public/NESDeltaCore" "${PODS_ROOT}/Headers/Public/Roxas" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SMCalloutView" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_ROOT}/Headers/Public/SQLite.swift" "${PODS_ROOT}/Headers/Public/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/include" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/src" "${PODS_CONFIGURATION_BUILD_DIR}" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/MelonDSDeltaCore/melonDS/src" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/osal" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/libpng" +LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/AppAuth" "${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GTMAppAuth" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/Harmony" "${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SMCalloutView" "${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" /usr/lib/swift +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/MelonDSDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/N64DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/AppAuth/AppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/DSDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/GBADeltaCore" -isystem "${PODS_ROOT}/Headers/Public/GBCDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/Harmony" -isystem "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/N64DeltaCore" -isystem "${PODS_ROOT}/Headers/Public/NESDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/SNESDeltaCore" -iframework "${PODS_ROOT}/Crashlytics/iOS" -iframework "${PODS_ROOT}/Fabric/iOS" -iframework "${PODS_ROOT}/GoogleSignIn/Frameworks" -DHOST_DARWIN -DDESMUME_COCOA -DHAVE_OPENGL -DHAVE_LIBZ -DANDROID -fexceptions -ftree-vectorize -DCOMPRESS_MT -DIOS -DOBJ_C -marm -fvisibility=hidden -DSTATIC_LIBRARY=1 -DSTATIC_LIBRARY -DHAVE_CSTDINT -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -D__VEC4_OPT -fvisibility=hidden -funsigned-char -ffast-math -finline -fno-builtin -fno-common -fomit-frame-pointer -funroll-loops -fstrict-aliasing -DHAVE_STDINT_H -DARM -DSTATIC_LIBRARY=1 +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-exported_symbol,_Video_PluginStartup,-exported_symbol,_Video_PluginShutdown,-exported_symbol,_Video_PluginGetVersion,-exported_symbol,_Video_RomOpen,-exported_symbol,_Video_RomClosed,-exported_symbol,_ConfigGetSharedDataFilepath,-exported_symbol,_ConfigGetUserConfigPath,-exported_symbol,_ConfigGetUserCachePath,-exported_symbol,_ConfigGetUserDataPath,-exported_symbol,_ConfigOpenSection,-exported_symbol,_ConfigDeleteSection,-exported_symbol,_ConfigSaveSection,-exported_symbol,_ConfigSaveFile,-exported_symbol,_ConfigSetDefaultInt,-exported_symbol,_ConfigSetDefaultFloat,-exported_symbol,_ConfigSetDefaultBool,-exported_symbol,_ConfigSetDefaultString,-exported_symbol,_ConfigGetParamInt,-exported_symbol,_ConfigGetParamFloat,-exported_symbol,_ConfigGetParamBool,-exported_symbol,_ConfigGetParamString,-exported_symbol,_ConfigExternalGetParameter,-exported_symbol,_ConfigExternalOpen,-exported_symbol,_ConfigExternalClose,-exported_symbol,_VidExt_Init,-exported_symbol,_VidExt_Quit,-exported_symbol,_VidExt_ListFullscreenModes,-exported_symbol,_VidExt_SetVideoMode,-exported_symbol,_VidExt_SetCaption,-exported_symbol,_VidExt_ToggleFullScreen,-exported_symbol,_VidExt_ResizeWindow,-exported_symbol,_VidExt_GL_GetProcAddress,-exported_symbol,_VidExt_GL_SetAttribute,-exported_symbol,_VidExt_GL_GetAttribute,-exported_symbol,_VidExt_GL_SwapBuffers,-exported_symbol,_ChangeWindow,-exported_symbol,_InitiateGFX,-exported_symbol,_MoveScreen,-exported_symbol,_ProcessDList,-exported_symbol,_ProcessRDPList,-exported_symbol,_ShowCFB,-exported_symbol,_UpdateScreen,-exported_symbol,_ViStatusChanged,-exported_symbol,_ViWidthChanged,-exported_symbol,_ReadScreen2,-exported_symbol,_SetRenderingCallback,-exported_symbol,_FBRead,-exported_symbol,_FBWrite,-exported_symbol,_FBGetFrameBufferInfo,-exported_symbol,_ResizeVideoOutput,-exported_symbol,_RSP_PluginStartup,-exported_symbol,_RSP_PluginShutdown,-exported_symbol,_RSP_PluginGetVersion,-exported_symbol,_DoRspCycles,-exported_symbol,_InitiateRSP,-exported_symbol,_RSP_RomClosed,-exported_symbol,_CoreGetAPIVersions,-exported_symbol,_ConfigGetParameter,-exported_symbol,_ConfigSetParameter,-exported_symbol,_CoreDoCommand -l"Alamofire" -l"AppAuth" -l"DSDeltaCore" -l"GBADeltaCore" -l"GBCDeltaCore" -l"GTMAppAuth" -l"GTMSessionFetcher" -l"GoogleAPIClientForREST" -l"Harmony" -l"MelonDSDeltaCore" -l"N64DeltaCore" -l"NESDeltaCore" -l"Roxas" -l"SDWebImage" -l"SMCalloutView" -l"SNESDeltaCore" -l"SQLite.swift" -l"SwiftyDropbox" -l"ZIPFoundation" -l"c++" -l"sqlite3" -l"z" -framework "CoreGraphics" -framework "CoreText" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "GoogleSignIn" -framework "ImageIO" -framework "LocalAuthentication" -framework "SafariServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "WebKit" -weak_framework "AuthenticationServices" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/MelonDSDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/N64DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/AppAuth/AppAuth.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta.release.xcconfig b/Pods/Target Support Files/Pods-Delta/Pods-Delta.release.xcconfig index e26c8ae..d3dbd74 100644 --- a/Pods/Target Support Files/Pods-Delta/Pods-Delta.release.xcconfig +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta.release.xcconfig @@ -3,11 +3,11 @@ CLANG_ENABLE_MODULES = NO CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/GoogleSignIn/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 STATIC_LIBRARY=1 STATIC_LIBRARY=1 JIT_ENABLED=1 STATIC_LIBRARY=1 MUPENPLUSAPI TXFILTER_LIB OS_IOS GLESX GL_ERROR_DEBUG GL_DEBUG GLESX PNG_ARM_NEON_OPT=0 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_ROOT}/Headers/Public/DeltaCore" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST" "${PODS_ROOT}/Headers/Public/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public/Harmony" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_ROOT}/Headers/Public/NESDeltaCore" "${PODS_ROOT}/Headers/Public/Roxas" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SMCalloutView" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_ROOT}/Headers/Public/SQLite.swift" "${PODS_ROOT}/Headers/Public/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/include" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/src" "${PODS_CONFIGURATION_BUILD_DIR}" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/MelonDSDeltaCore/melonDS/src" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/osal" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/libpng" -LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/Harmony" "${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SMCalloutView" "${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" /usr/lib/swift -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/MelonDSDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/N64DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/DSDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/GBADeltaCore" -isystem "${PODS_ROOT}/Headers/Public/GBCDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/Harmony" -isystem "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/N64DeltaCore" -isystem "${PODS_ROOT}/Headers/Public/NESDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/SNESDeltaCore" -iframework "${PODS_ROOT}/Crashlytics/iOS" -iframework "${PODS_ROOT}/Fabric/iOS" -iframework "${PODS_ROOT}/GoogleSignIn/Frameworks" -DHOST_DARWIN -DDESMUME_COCOA -DHAVE_OPENGL -DHAVE_LIBZ -DANDROID -fexceptions -ftree-vectorize -DCOMPRESS_MT -DIOS -DOBJ_C -marm -fvisibility=hidden -DSTATIC_LIBRARY=1 -DSTATIC_LIBRARY -DHAVE_CSTDINT -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -D__VEC4_OPT -fvisibility=hidden -funsigned-char -ffast-math -finline -fno-builtin -fno-common -fomit-frame-pointer -funroll-loops -fstrict-aliasing -DHAVE_STDINT_H -DARM -DSTATIC_LIBRARY=1 -OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-exported_symbol,_Video_PluginStartup,-exported_symbol,_Video_PluginShutdown,-exported_symbol,_Video_PluginGetVersion,-exported_symbol,_Video_RomOpen,-exported_symbol,_Video_RomClosed,-exported_symbol,_ConfigGetSharedDataFilepath,-exported_symbol,_ConfigGetUserConfigPath,-exported_symbol,_ConfigGetUserCachePath,-exported_symbol,_ConfigGetUserDataPath,-exported_symbol,_ConfigOpenSection,-exported_symbol,_ConfigDeleteSection,-exported_symbol,_ConfigSaveSection,-exported_symbol,_ConfigSaveFile,-exported_symbol,_ConfigSetDefaultInt,-exported_symbol,_ConfigSetDefaultFloat,-exported_symbol,_ConfigSetDefaultBool,-exported_symbol,_ConfigSetDefaultString,-exported_symbol,_ConfigGetParamInt,-exported_symbol,_ConfigGetParamFloat,-exported_symbol,_ConfigGetParamBool,-exported_symbol,_ConfigGetParamString,-exported_symbol,_ConfigExternalGetParameter,-exported_symbol,_ConfigExternalOpen,-exported_symbol,_ConfigExternalClose,-exported_symbol,_VidExt_Init,-exported_symbol,_VidExt_Quit,-exported_symbol,_VidExt_ListFullscreenModes,-exported_symbol,_VidExt_SetVideoMode,-exported_symbol,_VidExt_SetCaption,-exported_symbol,_VidExt_ToggleFullScreen,-exported_symbol,_VidExt_ResizeWindow,-exported_symbol,_VidExt_GL_GetProcAddress,-exported_symbol,_VidExt_GL_SetAttribute,-exported_symbol,_VidExt_GL_GetAttribute,-exported_symbol,_VidExt_GL_SwapBuffers,-exported_symbol,_ChangeWindow,-exported_symbol,_InitiateGFX,-exported_symbol,_MoveScreen,-exported_symbol,_ProcessDList,-exported_symbol,_ProcessRDPList,-exported_symbol,_ShowCFB,-exported_symbol,_UpdateScreen,-exported_symbol,_ViStatusChanged,-exported_symbol,_ViWidthChanged,-exported_symbol,_ReadScreen2,-exported_symbol,_SetRenderingCallback,-exported_symbol,_FBRead,-exported_symbol,_FBWrite,-exported_symbol,_FBGetFrameBufferInfo,-exported_symbol,_ResizeVideoOutput,-exported_symbol,_RSP_PluginStartup,-exported_symbol,_RSP_PluginShutdown,-exported_symbol,_RSP_PluginGetVersion,-exported_symbol,_DoRspCycles,-exported_symbol,_InitiateRSP,-exported_symbol,_RSP_RomClosed,-exported_symbol,_CoreGetAPIVersions,-exported_symbol,_ConfigGetParameter,-exported_symbol,_ConfigSetParameter,-exported_symbol,_CoreDoCommand -l"Alamofire" -l"DSDeltaCore" -l"GBADeltaCore" -l"GBCDeltaCore" -l"GTMSessionFetcher" -l"GoogleAPIClientForREST" -l"GoogleToolboxForMac" -l"Harmony" -l"MelonDSDeltaCore" -l"N64DeltaCore" -l"NESDeltaCore" -l"Roxas" -l"SDWebImage" -l"SMCalloutView" -l"SNESDeltaCore" -l"SQLite.swift" -l"SwiftyDropbox" -l"ZIPFoundation" -l"c++" -l"sqlite3" -l"z" -framework "CoreGraphics" -framework "CoreText" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "GoogleSignIn" -framework "ImageIO" -framework "LocalAuthentication" -framework "SafariServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "WebKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/MelonDSDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/N64DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AppAuth" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_ROOT}/Headers/Public/DeltaCore" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_ROOT}/Headers/Public/GTMAppAuth" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST" "${PODS_ROOT}/Headers/Public/Harmony" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_ROOT}/Headers/Public/NESDeltaCore" "${PODS_ROOT}/Headers/Public/Roxas" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SMCalloutView" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_ROOT}/Headers/Public/SQLite.swift" "${PODS_ROOT}/Headers/Public/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/include" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/src" "${PODS_CONFIGURATION_BUILD_DIR}" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/MelonDSDeltaCore/melonDS/src" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/osal" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/libpng" +LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/AppAuth" "${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GTMAppAuth" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/Harmony" "${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SMCalloutView" "${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" /usr/lib/swift +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/MelonDSDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/N64DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/AppAuth/AppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/DSDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/GBADeltaCore" -isystem "${PODS_ROOT}/Headers/Public/GBCDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/Harmony" -isystem "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/N64DeltaCore" -isystem "${PODS_ROOT}/Headers/Public/NESDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/SNESDeltaCore" -iframework "${PODS_ROOT}/Crashlytics/iOS" -iframework "${PODS_ROOT}/Fabric/iOS" -iframework "${PODS_ROOT}/GoogleSignIn/Frameworks" -DHOST_DARWIN -DDESMUME_COCOA -DHAVE_OPENGL -DHAVE_LIBZ -DANDROID -fexceptions -ftree-vectorize -DCOMPRESS_MT -DIOS -DOBJ_C -marm -fvisibility=hidden -DSTATIC_LIBRARY=1 -DSTATIC_LIBRARY -DHAVE_CSTDINT -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -D__VEC4_OPT -fvisibility=hidden -funsigned-char -ffast-math -finline -fno-builtin -fno-common -fomit-frame-pointer -funroll-loops -fstrict-aliasing -DHAVE_STDINT_H -DARM -DSTATIC_LIBRARY=1 +OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-exported_symbol,_Video_PluginStartup,-exported_symbol,_Video_PluginShutdown,-exported_symbol,_Video_PluginGetVersion,-exported_symbol,_Video_RomOpen,-exported_symbol,_Video_RomClosed,-exported_symbol,_ConfigGetSharedDataFilepath,-exported_symbol,_ConfigGetUserConfigPath,-exported_symbol,_ConfigGetUserCachePath,-exported_symbol,_ConfigGetUserDataPath,-exported_symbol,_ConfigOpenSection,-exported_symbol,_ConfigDeleteSection,-exported_symbol,_ConfigSaveSection,-exported_symbol,_ConfigSaveFile,-exported_symbol,_ConfigSetDefaultInt,-exported_symbol,_ConfigSetDefaultFloat,-exported_symbol,_ConfigSetDefaultBool,-exported_symbol,_ConfigSetDefaultString,-exported_symbol,_ConfigGetParamInt,-exported_symbol,_ConfigGetParamFloat,-exported_symbol,_ConfigGetParamBool,-exported_symbol,_ConfigGetParamString,-exported_symbol,_ConfigExternalGetParameter,-exported_symbol,_ConfigExternalOpen,-exported_symbol,_ConfigExternalClose,-exported_symbol,_VidExt_Init,-exported_symbol,_VidExt_Quit,-exported_symbol,_VidExt_ListFullscreenModes,-exported_symbol,_VidExt_SetVideoMode,-exported_symbol,_VidExt_SetCaption,-exported_symbol,_VidExt_ToggleFullScreen,-exported_symbol,_VidExt_ResizeWindow,-exported_symbol,_VidExt_GL_GetProcAddress,-exported_symbol,_VidExt_GL_SetAttribute,-exported_symbol,_VidExt_GL_GetAttribute,-exported_symbol,_VidExt_GL_SwapBuffers,-exported_symbol,_ChangeWindow,-exported_symbol,_InitiateGFX,-exported_symbol,_MoveScreen,-exported_symbol,_ProcessDList,-exported_symbol,_ProcessRDPList,-exported_symbol,_ShowCFB,-exported_symbol,_UpdateScreen,-exported_symbol,_ViStatusChanged,-exported_symbol,_ViWidthChanged,-exported_symbol,_ReadScreen2,-exported_symbol,_SetRenderingCallback,-exported_symbol,_FBRead,-exported_symbol,_FBWrite,-exported_symbol,_FBGetFrameBufferInfo,-exported_symbol,_ResizeVideoOutput,-exported_symbol,_RSP_PluginStartup,-exported_symbol,_RSP_PluginShutdown,-exported_symbol,_RSP_PluginGetVersion,-exported_symbol,_DoRspCycles,-exported_symbol,_InitiateRSP,-exported_symbol,_RSP_RomClosed,-exported_symbol,_CoreGetAPIVersions,-exported_symbol,_ConfigGetParameter,-exported_symbol,_ConfigSetParameter,-exported_symbol,_CoreDoCommand -l"Alamofire" -l"AppAuth" -l"DSDeltaCore" -l"GBADeltaCore" -l"GBCDeltaCore" -l"GTMAppAuth" -l"GTMSessionFetcher" -l"GoogleAPIClientForREST" -l"Harmony" -l"MelonDSDeltaCore" -l"N64DeltaCore" -l"NESDeltaCore" -l"Roxas" -l"SDWebImage" -l"SMCalloutView" -l"SNESDeltaCore" -l"SQLite.swift" -l"SwiftyDropbox" -l"ZIPFoundation" -l"c++" -l"sqlite3" -l"z" -framework "CoreGraphics" -framework "CoreText" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "GoogleSignIn" -framework "ImageIO" -framework "LocalAuthentication" -framework "SafariServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "WebKit" -weak_framework "AuthenticationServices" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/MelonDSDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/N64DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/AppAuth/AppAuth.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMAppAuth/GTMAppAuth.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-DeltaPreviews/Pods-DeltaPreviews.debug.xcconfig b/Pods/Target Support Files/Pods-DeltaPreviews/Pods-DeltaPreviews.debug.xcconfig index bd37675..4c7dbfc 100644 --- a/Pods/Target Support Files/Pods-DeltaPreviews/Pods-DeltaPreviews.debug.xcconfig +++ b/Pods/Target Support Files/Pods-DeltaPreviews/Pods-DeltaPreviews.debug.xcconfig @@ -1,6 +1,6 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_ROOT}/Headers/Public/DeltaCore" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST" "${PODS_ROOT}/Headers/Public/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public/Harmony" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_ROOT}/Headers/Public/NESDeltaCore" "${PODS_ROOT}/Headers/Public/Roxas" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SMCalloutView" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_ROOT}/Headers/Public/SQLite.swift" "${PODS_ROOT}/Headers/Public/SwiftyDropbox" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AppAuth" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_ROOT}/Headers/Public/DeltaCore" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_ROOT}/Headers/Public/GTMAppAuth" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST" "${PODS_ROOT}/Headers/Public/Harmony" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_ROOT}/Headers/Public/NESDeltaCore" "${PODS_ROOT}/Headers/Public/Roxas" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SMCalloutView" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_ROOT}/Headers/Public/SQLite.swift" "${PODS_ROOT}/Headers/Public/SwiftyDropbox" LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" /usr/lib/swift OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -DSTATIC_LIBRARY OTHER_LDFLAGS = $(inherited) -ObjC -l"DeltaCore" -l"Roxas" -l"ZIPFoundation" diff --git a/Pods/Target Support Files/Pods-DeltaPreviews/Pods-DeltaPreviews.release.xcconfig b/Pods/Target Support Files/Pods-DeltaPreviews/Pods-DeltaPreviews.release.xcconfig index bd37675..4c7dbfc 100644 --- a/Pods/Target Support Files/Pods-DeltaPreviews/Pods-DeltaPreviews.release.xcconfig +++ b/Pods/Target Support Files/Pods-DeltaPreviews/Pods-DeltaPreviews.release.xcconfig @@ -1,6 +1,6 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_ROOT}/Headers/Public/DeltaCore" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST" "${PODS_ROOT}/Headers/Public/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public/Harmony" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_ROOT}/Headers/Public/NESDeltaCore" "${PODS_ROOT}/Headers/Public/Roxas" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SMCalloutView" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_ROOT}/Headers/Public/SQLite.swift" "${PODS_ROOT}/Headers/Public/SwiftyDropbox" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AppAuth" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_ROOT}/Headers/Public/DeltaCore" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_ROOT}/Headers/Public/GTMAppAuth" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST" "${PODS_ROOT}/Headers/Public/Harmony" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_ROOT}/Headers/Public/NESDeltaCore" "${PODS_ROOT}/Headers/Public/Roxas" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SMCalloutView" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_ROOT}/Headers/Public/SQLite.swift" "${PODS_ROOT}/Headers/Public/SwiftyDropbox" LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" /usr/lib/swift OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -DSTATIC_LIBRARY OTHER_LDFLAGS = $(inherited) -ObjC -l"DeltaCore" -l"Roxas" -l"ZIPFoundation"