diff --git a/Crashlytics b/Crashlytics
new file mode 120000
index 0000000..7074275
--- /dev/null
+++ b/Crashlytics
@@ -0,0 +1 @@
+Versions/Current/Crashlytics
\ No newline at end of file
diff --git a/Headers b/Headers
new file mode 120000
index 0000000..a177d2a
--- /dev/null
+++ b/Headers
@@ -0,0 +1 @@
+Versions/Current/Headers
\ No newline at end of file
diff --git a/Resources b/Resources
new file mode 120000
index 0000000..953ee36
--- /dev/null
+++ b/Resources
@@ -0,0 +1 @@
+Versions/Current/Resources
\ No newline at end of file
diff --git a/Versions/A/Crashlytics b/Versions/A/Crashlytics
new file mode 100644
index 0000000..d16d220
--- /dev/null
+++ b/Versions/A/Crashlytics
Binary files differ
diff --git a/Versions/A/Headers/Crashlytics.h b/Versions/A/Headers/Crashlytics.h
new file mode 100644
index 0000000..59addef
--- /dev/null
+++ b/Versions/A/Headers/Crashlytics.h
@@ -0,0 +1,217 @@
+//
+//  Crashlytics.h
+//  Crashlytics
+//
+//  Copyright 2013 Crashlytics, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/**
+ *
+ * The CLS_LOG macro provides as easy way to gather more information in your log messages that are
+ * sent with your crash data. CLS_LOG prepends your custom log message with the function name and
+ * line number where the macro was used. If your app was built with the DEBUG preprocessor macro
+ * defined CLS_LOG uses the CLSNSLog function which forwards your log message to NSLog and CLSLog.
+ * If the DEBUG preprocessor macro is not defined CLS_LOG uses CLSLog only.
+ *
+ * Example output:
+ * -[AppDelegate login:] line 134 $ login start
+ *
+ * If you would like to change this macro, create a new header file, unset our define and then define
+ * your own version. Make sure this new header file is imported after the Crashlytics header file.
+ *
+ * #undef CLS_LOG
+ * #define CLS_LOG(__FORMAT__, ...) CLSNSLog...
+ *
+ **/
+#ifdef DEBUG
+#define CLS_LOG(__FORMAT__, ...) CLSNSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
+#else
+#define CLS_LOG(__FORMAT__, ...) CLSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
+#endif
+
+/**
+ *
+ * Add logging that will be sent with your crash data. This logging will not show up in the system.log
+ * and will only be visible in your Crashlytics dashboard.
+ *
+ **/
+OBJC_EXTERN void CLSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);
+
+/**
+ *
+ * Add logging that will be sent with your crash data. This logging will show up in the system.log
+ * and your Crashlytics dashboard. It is not recommended for Release builds.
+ *
+ **/
+OBJC_EXTERN void CLSNSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);
+
+@protocol CrashlyticsDelegate;
+
+@interface Crashlytics : NSObject
+
+@property (nonatomic, readonly, copy) NSString *apiKey;
+@property (nonatomic, readonly, copy) NSString *version;
+@property (nonatomic, assign)         BOOL      debugMode;
+
+@property (nonatomic, assign)         NSObject <CrashlyticsDelegate> *delegate;
+
+/**
+ *
+ * The recommended way to install Crashlytics into your application is to place a call
+ * to +startWithAPIKey: in your -application:didFinishLaunchingWithOptions: method.
+ *
+ * This delay defaults to 1 second in order to generally give the application time to
+ * fully finish launching.
+ *
+ **/
++ (Crashlytics *)startWithAPIKey:(NSString *)apiKey;
++ (Crashlytics *)startWithAPIKey:(NSString *)apiKey afterDelay:(NSTimeInterval)delay;
+
+/**
+ *
+ * If you need the functionality provided by the CrashlyticsDelegate protocol, you can use
+ * these convenience methods to activate the framework and set the delegate in one call.
+ *
+ **/
++ (Crashlytics *)startWithAPIKey:(NSString *)apiKey delegate:(NSObject <CrashlyticsDelegate> *)delegate;
++ (Crashlytics *)startWithAPIKey:(NSString *)apiKey delegate:(NSObject <CrashlyticsDelegate> *)delegate afterDelay:(NSTimeInterval)delay;
+
+/**
+ *
+ * Access the singleton Crashlytics instance.
+ *
+ **/
++ (Crashlytics *)sharedInstance;
+
+/**
+ *
+ * The easiest way to cause a crash - great for testing!
+ *
+ **/
+- (void)crash;
+
+/**
+ *
+ * Many of our customers have requested the ability to tie crashes to specific end-users of their
+ * application in order to facilitate responses to support requests or permit the ability to reach
+ * out for more information. We allow you to specify up to three separate values for display within
+ * the Crashlytics UI - but please be mindful of your end-user's privacy.
+ *
+ * We recommend specifying a user identifier - an arbitrary string that ties an end-user to a record
+ * in your system. This could be a database id, hash, or other value that is meaningless to a
+ * third-party observer but can be indexed and queried by you.
+ *
+ * Optionally, you may also specify the end-user's name or username, as well as email address if you
+ * do not have a system that works well with obscured identifiers.
+ *
+ * Pursuant to our EULA, this data is transferred securely throughout our system and we will not
+ * disseminate end-user data unless required to by law. That said, if you choose to provide end-user
+ * contact information, we strongly recommend that you disclose this in your application's privacy
+ * policy. Data privacy is of our utmost concern.
+ *
+ **/
+- (void)setUserIdentifier:(NSString *)identifier;
+- (void)setUserName:(NSString *)name;
+- (void)setUserEmail:(NSString *)email;
+
++ (void)setUserIdentifier:(NSString *)identifier;
++ (void)setUserName:(NSString *)name;
++ (void)setUserEmail:(NSString *)email;
+
+/**
+ *
+ * Set a value for a key to be associated with your crash data.
+ *
+ **/
+- (void)setObjectValue:(id)value forKey:(NSString *)key;
+- (void)setIntValue:(int)value forKey:(NSString *)key;
+- (void)setBoolValue:(BOOL)value forKey:(NSString *)key;
+- (void)setFloatValue:(float)value forKey:(NSString *)key;
+
++ (void)setObjectValue:(id)value forKey:(NSString *)key;
++ (void)setIntValue:(int)value forKey:(NSString *)key;
++ (void)setBoolValue:(BOOL)value forKey:(NSString *)key;
++ (void)setFloatValue:(float)value forKey:(NSString *)key;
+
+@end
+
+/**
+ * The CLSCrashReport protocol exposes methods that you can call on crash report objects passed
+ * to delegate methods. If you want these values or the entire object to stay in memory retain
+ * them or copy them.
+ **/
+@protocol CLSCrashReport <NSObject>
+@required
+
+/**
+ * Returns the session identifier for the crash report.
+ **/
+@property (nonatomic, readonly) NSString *identifier;
+
+/**
+ * Returns the custom key value data for the crash report.
+ **/
+@property (nonatomic, readonly) NSDictionary *customKeys;
+
+/**
+ * Returns the CFBundleVersion of the application that crashed.
+ **/
+@property (nonatomic, readonly) NSString *bundleVersion;
+
+/**
+ * Returns the CFBundleShortVersionString of the application that crashed.
+ **/
+@property (nonatomic, readonly) NSString *bundleShortVersionString;
+
+/**
+ * Returns the date that the application crashed at.
+ **/
+@property (nonatomic, readonly) NSDate *crashedOnDate;
+
+/**
+ * Returns the os version that the application crashed on.
+ **/
+@property (nonatomic, readonly) NSString *OSVersion;
+
+/**
+ * Returns the os build version that the application crashed on.
+ **/
+@property (nonatomic, readonly) NSString *OSBuildVersion;
+
+@end
+
+/**
+ *
+ * The CrashlyticsDelegate protocol provides a mechanism for your application to take
+ * action on events that occur in the Crashlytics crash reporting system.  You can make
+ * use of these calls by assigning an object to the Crashlytics' delegate property directly,
+ * or through the convenience startWithAPIKey:delegate:... methods.
+ *
+ **/
+@protocol CrashlyticsDelegate <NSObject>
+@optional
+
+/**
+ *
+ * Called once a Crashlytics instance has determined that the last execution of the
+ * application ended in a crash.  This is called some time after the crash reporting
+ * process has begun.  If you have specified a delay in one of the
+ * startWithAPIKey:... calls, this will take at least that long to be invoked.
+ *
+ **/
+- (void)crashlyticsDidDetectCrashDuringPreviousExecution:(Crashlytics *)crashlytics;
+
+/**
+ *
+ * Just like crashlyticsDidDetectCrashDuringPreviousExecution this delegate method is
+ * called once a Crashlytics instance has determined that the last execution of the
+ * application ended in a crash. A CLSCrashReport is passed back that contains data about
+ * the last crash report that was generated. See the CLSCrashReport protocol for method details.
+ * This method is called after crashlyticsDidDetectCrashDuringPreviousExecution.
+ *
+ **/
+- (void)crashlytics:(Crashlytics *)crashlytics didDetectCrashDuringPreviousExecution:(id <CLSCrashReport>)crash;
+
+@end
diff --git a/Versions/A/Resources/Info.plist b/Versions/A/Resources/Info.plist
new file mode 100644
index 0000000..9127885
--- /dev/null
+++ b/Versions/A/Resources/Info.plist
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>Crashlytics</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.crashlytics.ios</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>Crashlytics</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleShortVersionString</key>
+	<string>2.1.5</string>
+	<key>CFBundleSupportedPlatforms</key>
+	<array>
+		<string>iPhoneOS</string>
+	</array>
+	<key>CFBundleVersion</key>
+	<string>16</string>
+	<key>DTPlatformName</key>
+	<string>iphoneos</string>
+	<key>MinimumOSVersion</key>
+	<string>4.0</string>
+</dict>
+</plist>
diff --git a/Versions/Current b/Versions/Current
new file mode 120000
index 0000000..8c7e5a6
--- /dev/null
+++ b/Versions/Current
@@ -0,0 +1 @@
+A
\ No newline at end of file
diff --git a/run b/run
new file mode 100755
index 0000000..62b4205
--- /dev/null
+++ b/run
Binary files differ
