diff --git a/Quizlet-bypass(Safari)/Quizlet bypass Extension/Info.plist b/Safari/src/Quizlet bypass Extension/Info.plist
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass Extension/Info.plist
rename to Safari/src/Quizlet bypass Extension/Info.plist
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass Extension/Quizlet_bypass_Extension.entitlements b/Safari/src/Quizlet bypass Extension/Quizlet_bypass_Extension.entitlements
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass Extension/Quizlet_bypass_Extension.entitlements
rename to Safari/src/Quizlet bypass Extension/Quizlet_bypass_Extension.entitlements
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass Extension/Resources/js/quizlet_bypass.js b/Safari/src/Quizlet bypass Extension/Resources/js/quizlet_bypass.js
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass Extension/Resources/js/quizlet_bypass.js
rename to Safari/src/Quizlet bypass Extension/Resources/js/quizlet_bypass.js
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass Extension/Resources/manifest.json b/Safari/src/Quizlet bypass Extension/Resources/manifest.json
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass Extension/Resources/manifest.json
rename to Safari/src/Quizlet bypass Extension/Resources/manifest.json
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass Extension/SafariWebExtensionHandler.swift b/Safari/src/Quizlet bypass Extension/SafariWebExtensionHandler.swift
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass Extension/SafariWebExtensionHandler.swift
rename to Safari/src/Quizlet bypass Extension/SafariWebExtensionHandler.swift
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass.xcodeproj/project.pbxproj b/Safari/src/Quizlet bypass.xcodeproj/project.pbxproj
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass.xcodeproj/project.pbxproj
rename to Safari/src/Quizlet bypass.xcodeproj/project.pbxproj
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Safari/src/Quizlet bypass.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass.xcodeproj/project.xcworkspace/contents.xcworkspacedata
rename to Safari/src/Quizlet bypass.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Safari/src/Quizlet bypass.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to Safari/src/Quizlet bypass.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass.xcodeproj/project.xcworkspace/xcuserdata/alanli.xcuserdatad/UserInterfaceState.xcuserstate b/Safari/src/Quizlet bypass.xcodeproj/project.xcworkspace/xcuserdata/alanli.xcuserdatad/UserInterfaceState.xcuserstate
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass.xcodeproj/project.xcworkspace/xcuserdata/alanli.xcuserdatad/UserInterfaceState.xcuserstate
rename to Safari/src/Quizlet bypass.xcodeproj/project.xcworkspace/xcuserdata/alanli.xcuserdatad/UserInterfaceState.xcuserstate
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass.xcodeproj/xcuserdata/alanli.xcuserdatad/xcschemes/xcschememanagement.plist b/Safari/src/Quizlet bypass.xcodeproj/xcuserdata/alanli.xcuserdatad/xcschemes/xcschememanagement.plist
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass.xcodeproj/xcuserdata/alanli.xcuserdatad/xcschemes/xcschememanagement.plist
rename to Safari/src/Quizlet bypass.xcodeproj/xcuserdata/alanli.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass/AppDelegate.swift b/Safari/src/Quizlet bypass/AppDelegate.swift
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass/AppDelegate.swift
rename to Safari/src/Quizlet bypass/AppDelegate.swift
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass/Assets.xcassets/AccentColor.colorset/Contents.json b/Safari/src/Quizlet bypass/Assets.xcassets/AccentColor.colorset/Contents.json
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass/Assets.xcassets/AccentColor.colorset/Contents.json
rename to Safari/src/Quizlet bypass/Assets.xcassets/AccentColor.colorset/Contents.json
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass/Assets.xcassets/AppIcon.appiconset/Contents.json b/Safari/src/Quizlet bypass/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to Safari/src/Quizlet bypass/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass/Assets.xcassets/Contents.json b/Safari/src/Quizlet bypass/Assets.xcassets/Contents.json
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass/Assets.xcassets/Contents.json
rename to Safari/src/Quizlet bypass/Assets.xcassets/Contents.json
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass/Base.lproj/Main.storyboard b/Safari/src/Quizlet bypass/Base.lproj/Main.storyboard
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass/Base.lproj/Main.storyboard
rename to Safari/src/Quizlet bypass/Base.lproj/Main.storyboard
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass/Info.plist b/Safari/src/Quizlet bypass/Info.plist
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass/Info.plist
rename to Safari/src/Quizlet bypass/Info.plist
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass/Quizlet_bypass.entitlements b/Safari/src/Quizlet bypass/Quizlet_bypass.entitlements
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass/Quizlet_bypass.entitlements
rename to Safari/src/Quizlet bypass/Quizlet_bypass.entitlements
diff --git a/Quizlet-bypass(Safari)/Quizlet bypass/ViewController.swift b/Safari/src/Quizlet bypass/ViewController.swift
similarity index 100%
rename from Quizlet-bypass(Safari)/Quizlet bypass/ViewController.swift
rename to Safari/src/Quizlet bypass/ViewController.swift
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftAppKit.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftAppKit.dylib
new file mode 100755
index 0000000..b8e2778
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftAppKit.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCloudKit.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCloudKit.dylib
new file mode 100755
index 0000000..0a3ad6e
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCloudKit.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftContacts.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftContacts.dylib
new file mode 100755
index 0000000..6756aa7
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftContacts.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCore.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCore.dylib
new file mode 100755
index 0000000..1789133
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCore.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreData.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreData.dylib
new file mode 100755
index 0000000..64b5b4e
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreData.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreFoundation.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreFoundation.dylib
new file mode 100755
index 0000000..82ede77
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreFoundation.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreGraphics.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreGraphics.dylib
new file mode 100755
index 0000000..4948280
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreGraphics.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreImage.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreImage.dylib
new file mode 100755
index 0000000..3b4e509
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreImage.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreLocation.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreLocation.dylib
new file mode 100755
index 0000000..b0b7a2a
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftCoreLocation.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftDarwin.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftDarwin.dylib
new file mode 100755
index 0000000..85c4f30
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftDarwin.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftDispatch.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftDispatch.dylib
new file mode 100755
index 0000000..5146dea
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftDispatch.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftFoundation.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftFoundation.dylib
new file mode 100755
index 0000000..819544f
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftFoundation.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftIOKit.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftIOKit.dylib
new file mode 100755
index 0000000..e11f007
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftIOKit.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftMetal.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftMetal.dylib
new file mode 100755
index 0000000..6f6c0d9
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftMetal.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftObjectiveC.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftObjectiveC.dylib
new file mode 100755
index 0000000..df91c4e
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftObjectiveC.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftQuartzCore.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftQuartzCore.dylib
new file mode 100755
index 0000000..545ddfc
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftQuartzCore.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftSafariServices.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftSafariServices.dylib
new file mode 100755
index 0000000..1ffe637
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftSafariServices.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftXPC.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftXPC.dylib
new file mode 100755
index 0000000..b358be4
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftXPC.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftos.dylib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftos.dylib
new file mode 100755
index 0000000..76985a4
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Frameworks/libswiftos.dylib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Info.plist b/Safari/unsigned-app/Quizlet bypass.app/Contents/Info.plist
new file mode 100644
index 0000000..d99b088
--- /dev/null
+++ b/Safari/unsigned-app/Quizlet bypass.app/Contents/Info.plist
@@ -0,0 +1,50 @@
+
+
+
+
+ BuildMachineOSBuild
+ 20F71
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ Quizlet bypass
+ CFBundleIdentifier
+ com.alanli.Quizlet-bypass
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ Quizlet bypass
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSupportedPlatforms
+
+ MacOSX
+
+ CFBundleVersion
+ 1
+ DTCompiler
+ com.apple.compilers.llvm.clang.1_0
+ DTPlatformBuild
+ 12E507
+ DTPlatformName
+ macosx
+ DTPlatformVersion
+ 11.3
+ DTSDKBuild
+ 20E214
+ DTSDKName
+ macosx11.3
+ DTXcode
+ 1251
+ DTXcodeBuild
+ 12E507
+ LSMinimumSystemVersion
+ 10.14
+ NSMainStoryboardFile
+ Main
+ NSPrincipalClass
+ NSApplication
+
+
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/MacOS/Quizlet bypass b/Safari/unsigned-app/Quizlet bypass.app/Contents/MacOS/Quizlet bypass
new file mode 100755
index 0000000..40b0d8e
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/MacOS/Quizlet bypass differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/PkgInfo b/Safari/unsigned-app/Quizlet bypass.app/Contents/PkgInfo
new file mode 100644
index 0000000..bd04210
--- /dev/null
+++ b/Safari/unsigned-app/Quizlet bypass.app/Contents/PkgInfo
@@ -0,0 +1 @@
+APPL????
\ No newline at end of file
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/Info.plist b/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/Info.plist
new file mode 100644
index 0000000..2ca55fe
--- /dev/null
+++ b/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/Info.plist
@@ -0,0 +1,55 @@
+
+
+
+
+ BuildMachineOSBuild
+ 20F71
+ CFBundleDevelopmentRegion
+ en
+ CFBundleDisplayName
+ Quizlet bypass Extension
+ CFBundleExecutable
+ Quizlet bypass Extension
+ CFBundleIdentifier
+ com.alanli.Quizlet-bypass.Extension
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ Quizlet bypass Extension
+ CFBundlePackageType
+ XPC!
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSupportedPlatforms
+
+ MacOSX
+
+ CFBundleVersion
+ 1
+ DTCompiler
+ com.apple.compilers.llvm.clang.1_0
+ DTPlatformBuild
+ 12E507
+ DTPlatformName
+ macosx
+ DTPlatformVersion
+ 11.3
+ DTSDKBuild
+ 20E214
+ DTSDKName
+ macosx11.3
+ DTXcode
+ 1251
+ DTXcodeBuild
+ 12E507
+ LSMinimumSystemVersion
+ 10.14
+ NSExtension
+
+ NSExtensionPointIdentifier
+ com.apple.Safari.web-extension
+ NSExtensionPrincipalClass
+ Quizlet_bypass_Extension.SafariWebExtensionHandler
+
+
+
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/MacOS/Quizlet bypass Extension b/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/MacOS/Quizlet bypass Extension
new file mode 100755
index 0000000..f78f6d7
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/MacOS/Quizlet bypass Extension differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/Resources/js/quizlet_bypass.js b/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/Resources/js/quizlet_bypass.js
new file mode 100644
index 0000000..90dd4d4
--- /dev/null
+++ b/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/Resources/js/quizlet_bypass.js
@@ -0,0 +1,119 @@
+// Remove 'x' free solutions badge and "verify your email" badge.
+setTimeout(function () {
+ if (document.querySelector('.BannerWrapper')) { document.querySelector('.BannerWrapper').style.display = "none"; }
+ if (document.querySelector('.UINotification')) { document.querySelector('.UINotification').style.display = "none"; }
+}, 2000);
+
+checkIfNewAccountNeeded();
+
+function checkIfNewAccountNeeded()
+{
+ setTimeout(function () {
+ // Three cases: Almost out of solutions, not logged in at all, or out of solutions.
+
+ // Almost out of solutions
+ if (pageContains("This is your last free explanation"))
+ {
+ // Don't reload, not actually out of solutions yet.
+ signUpNewAccount(false);
+ }
+ // Not logged in
+ else if (pageContains("Create a free account to see explanations"))
+ {
+ signUpNewAccount(true);
+ }
+ // Out of solutions
+ else if (pageContains("YOU'VE REACHED YOUR FREE LIMIT"))
+ {
+ signUpNewAccount(true);
+ }
+
+
+ // Catchall for logged out entirely.
+ else if (!isLoggedIn())
+ {
+ signUpNewAccount(true);
+ }
+ // Catchall for out of solutions
+ else if (pageContains('source=explanations_meter_exceeded'))
+ {
+ signUpNewAccount(true);
+ }
+ }, 2000)
+}
+
+function signUpNewAccount(doesReload)
+{
+ // We're just gonna assume this is a large enough characterspace for it to never matter.
+ var name = "sq_bypass_" + randomString(10, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
+
+ var request = fetch("https://quizlet.com/webapi/3.2/direct-signup", {
+ "headers": {
+ "accept": "application/json",
+ "accept-language": "en-US,en;q=0.9",
+ "content-type": "application/json",
+ "cs-token": getToken(),
+ "sec-ch-ua": "\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"",
+ "sec-ch-ua-mobile": "?0",
+ "sec-fetch-dest": "empty",
+ "sec-fetch-mode": "cors",
+ "sec-fetch-site": "same-origin",
+ "x-requested-with": "XMLHttpRequest"
+ },
+ "referrer": "https://quizlet.com/goodbye",
+ "referrerPolicy": "origin-when-cross-origin",
+ "body": "{\"TOS\":false,\"birth_day\":\"5\",\"birth_month\":\"5\",\"birth_year\":\"2000\",\"email\":\"" + name + "@example.com\",\"is_free_teacher\":\"2\",\"is_parent\":false,\"password1\":\"SladerBypassPassword\",\"redir\":\"https://quizlet.com/goodbye\",\"signupOrigin\":\"global-header-link\",\"screenName\":\"Logout/logoutMobileSplash\",\"username\":\"" + name + "\",\"marketing_opt_out\":false}",
+ "method": "POST",
+ "mode": "cors",
+ "credentials": "include"
+ }).then(function()
+ {
+ if (doesReload)
+ {
+ location.reload();
+ }
+ });
+ return true;
+};
+
+function randomString(length, chars) {
+ var result = '';
+ for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
+ return result;
+};
+
+function getToken(){
+ token = document.cookie.match("(?:^|;)\\s*" + "qtkn".replace(/[\-\[\]{}()*+?.,\\^$|#\s]/g, "$&") + "=([^;]*)");
+ return decodeURIComponent(token[1]);
+};
+
+function pageContains(str)
+{
+ if (document.body.innerHTML.match(str))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+function isLoggedIn()
+{
+ // Looks for `{"LOGGED_IN":false,` in the header.
+ var li = document.head.innerHTML.match(/"LOGGED_IN":(\w+)/)[1];
+
+ if (li === "false")
+ {
+ return false;
+ }
+ else if (li === "true")
+ {
+ return true;
+ }
+ else
+ {
+ return true; // Return true on possible error to prevent explosion of accounts. Effectively assumes logged in on error.
+ }
+}
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/Resources/manifest.json b/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/Resources/manifest.json
new file mode 100644
index 0000000..99f74fa
--- /dev/null
+++ b/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/Resources/manifest.json
@@ -0,0 +1,18 @@
+{
+ "name": "Quizlet bypass",
+ "version": "0.10",
+ "author": "Alan Li & Ethan Harvey",
+ "description": "Quizlet limit bypass",
+ "content_scripts": [
+ {
+ "matches": [
+ "*://quizlet.com/explanations/questions/*",
+ "*://quizlet.com/explanations/textbook-solutions/*/*"
+ ],
+ "js": [
+ "js/quizlet_bypass.js"
+ ]
+ }
+ ],
+ "manifest_version": 2
+}
\ No newline at end of file
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/_CodeSignature/CodeResources b/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/_CodeSignature/CodeResources
new file mode 100644
index 0000000..f8f9f1b
--- /dev/null
+++ b/Safari/unsigned-app/Quizlet bypass.app/Contents/PlugIns/Quizlet bypass Extension.appex/Contents/_CodeSignature/CodeResources
@@ -0,0 +1,139 @@
+
+
+
+
+ files
+
+ Resources/js/quizlet_bypass.js
+
+ WEMRqUIeWbHCPfjLnlcuCWzyPCA=
+
+ Resources/manifest.json
+
+ p+ikRk484wRNov3RHHUbT5aufJg=
+
+
+ files2
+
+ Resources/js/quizlet_bypass.js
+
+ hash2
+
+ vO5sVxrl7vQhy3K4ZhE+5Cq8ykdM7BxJiTY/pHhApHY=
+
+
+ Resources/manifest.json
+
+ hash2
+
+ K8bCkU50iV26zIf0xfOBH6BAzUazhgbzf7YEoeI+/tA=
+
+
+
+ rules
+
+ ^Resources/
+
+ ^Resources/.*\.lproj/
+
+ optional
+
+ weight
+ 1000
+
+ ^Resources/.*\.lproj/locversion.plist$
+
+ omit
+
+ weight
+ 1100
+
+ ^Resources/Base\.lproj/
+
+ weight
+ 1010
+
+ ^version.plist$
+
+
+ rules2
+
+ .*\.dSYM($|/)
+
+ weight
+ 11
+
+ ^(.*/)?\.DS_Store$
+
+ omit
+
+ weight
+ 2000
+
+ ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/
+
+ nested
+
+ weight
+ 10
+
+ ^.*
+
+ ^Info\.plist$
+
+ omit
+
+ weight
+ 20
+
+ ^PkgInfo$
+
+ omit
+
+ weight
+ 20
+
+ ^Resources/
+
+ weight
+ 20
+
+ ^Resources/.*\.lproj/
+
+ optional
+
+ weight
+ 1000
+
+ ^Resources/.*\.lproj/locversion.plist$
+
+ omit
+
+ weight
+ 1100
+
+ ^Resources/Base\.lproj/
+
+ weight
+ 1010
+
+ ^[^/]+$
+
+ nested
+
+ weight
+ 10
+
+ ^embedded\.provisionprofile$
+
+ weight
+ 20
+
+ ^version\.plist$
+
+ weight
+ 20
+
+
+
+
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Resources/Base.lproj/Main.storyboardc/Info.plist b/Safari/unsigned-app/Quizlet bypass.app/Contents/Resources/Base.lproj/Main.storyboardc/Info.plist
new file mode 100644
index 0000000..07ec97f
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Resources/Base.lproj/Main.storyboardc/Info.plist differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Resources/Base.lproj/Main.storyboardc/MainMenu.nib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Resources/Base.lproj/Main.storyboardc/MainMenu.nib
new file mode 100644
index 0000000..c51e92c
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Resources/Base.lproj/Main.storyboardc/MainMenu.nib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Resources/Base.lproj/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Resources/Base.lproj/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib
new file mode 100644
index 0000000..3fb3417
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Resources/Base.lproj/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/Resources/Base.lproj/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib b/Safari/unsigned-app/Quizlet bypass.app/Contents/Resources/Base.lproj/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib
new file mode 100644
index 0000000..af1636a
Binary files /dev/null and b/Safari/unsigned-app/Quizlet bypass.app/Contents/Resources/Base.lproj/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib differ
diff --git a/Safari/unsigned-app/Quizlet bypass.app/Contents/_CodeSignature/CodeResources b/Safari/unsigned-app/Quizlet bypass.app/Contents/_CodeSignature/CodeResources
new file mode 100644
index 0000000..b92cce3
--- /dev/null
+++ b/Safari/unsigned-app/Quizlet bypass.app/Contents/_CodeSignature/CodeResources
@@ -0,0 +1,341 @@
+
+
+
+
+ files
+
+ Resources/Base.lproj/Main.storyboardc/Info.plist
+
+ My90BeyDksmpXx2TSd3jjMot9oU=
+
+ Resources/Base.lproj/Main.storyboardc/MainMenu.nib
+
+ OdjuUGE8LuFNvy4U9MtJQJD4btM=
+
+ Resources/Base.lproj/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib
+
+ aDt4F90njgz87NO+6phECZIvKnk=
+
+ Resources/Base.lproj/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib
+
+ fdTDzXJrAYck+9VN0odBwo3bmZM=
+
+
+ files2
+
+ Frameworks/libswiftAppKit.dylib
+
+ cdhash
+
+ /OmwGRbORcnNjnoLmSHJ5YPdYTA=
+
+ requirement
+ cdhash H"93e4a579dc797d359af753c1d9875e1e368a7be4" or cdhash H"fce9b01916ce45c9cd8e7a0b9921c9e583dd6130"
+
+ Frameworks/libswiftCloudKit.dylib
+
+ cdhash
+
+ cGMS9W0rJYpdS8WXuA421Jk2maI=
+
+ requirement
+ cdhash H"a2dc3fd1fe2b3843229d2363867f05b0875ca3d8" or cdhash H"706312f56d2b258a5d4bc597b80e36d4993699a2"
+
+ Frameworks/libswiftContacts.dylib
+
+ cdhash
+
+ Rh0jk2VJ+5Biz17YKqRNm888q5w=
+
+ requirement
+ cdhash H"bf8c68eb41ce78313f7734ae842c07aa3c428faf" or cdhash H"461d23936549fb9062cf5ed82aa44d9bcf3cab9c"
+
+ Frameworks/libswiftCore.dylib
+
+ cdhash
+
+ dqeKQzezqkqNieRSKURxOkYAlfs=
+
+ requirement
+ cdhash H"d8f6c9a79d9268ed6bf4a2cfdf1e18f65bbe3936" or cdhash H"76a78a4337b3aa4a8d89e4522944713a460095fb"
+
+ Frameworks/libswiftCoreData.dylib
+
+ cdhash
+
+ 3WuVQR+oLXgvxCCkTazRNrUc6BY=
+
+ requirement
+ cdhash H"cb7d87eec1e91502bc330135c3cf2af37c557989" or cdhash H"dd6b95411fa82d782fc420a44dacd136b51ce816"
+
+ Frameworks/libswiftCoreFoundation.dylib
+
+ cdhash
+
+ 9FhzxU6Cj8t+azK/JCsBHkbHPsQ=
+
+ requirement
+ cdhash H"4a62b40f83e91a952f0821fd2e62d33d7d63784c" or cdhash H"f45873c54e828fcb7e6b32bf242b011e46c73ec4"
+
+ Frameworks/libswiftCoreGraphics.dylib
+
+ cdhash
+
+ aNuElvmFWZFgDIeVFXBqVcgBBXk=
+
+ requirement
+ cdhash H"1317210089af658ce9dc08ac4da39ffb997028ae" or cdhash H"68db8496f9855991600c879515706a55c8010579"
+
+ Frameworks/libswiftCoreImage.dylib
+
+ cdhash
+
+ rdQ3znZuQZojLVpS7s74inCwTf4=
+
+ requirement
+ cdhash H"2ccd604ba6b9b6b5bb44800fe65a6725156de9ca" or cdhash H"add437ce766e419a232d5a52eecef88a70b04dfe"
+
+ Frameworks/libswiftCoreLocation.dylib
+
+ cdhash
+
+ eau/a2fXhgOzH/OX9TN/kd+vRh0=
+
+ requirement
+ cdhash H"bb4cb99b7772be8c5fa7561728df32b22154a05f" or cdhash H"79abbf6b67d78603b31ff397f5337f91dfaf461d"
+
+ Frameworks/libswiftDarwin.dylib
+
+ cdhash
+
+ J8aEbcH96rf3olM1v8wJQms7xaI=
+
+ requirement
+ cdhash H"300b03492cc2be4543d5f2be1e06909f387af72d" or cdhash H"27c6846dc1fdeab7f7a25335bfcc09426b3bc5a2"
+
+ Frameworks/libswiftDispatch.dylib
+
+ cdhash
+
+ H1Vdy5eFVLXgr7PXAMrPSmBOwqU=
+
+ requirement
+ cdhash H"83423a4dbcbcb15a8b57dcb655ea0718258599f6" or cdhash H"1f555dcb978554b5e0afb3d700cacf4a604ec2a5"
+
+ Frameworks/libswiftFoundation.dylib
+
+ cdhash
+
+ vXwKUYrafAE4gkcluwQSaiYHnKc=
+
+ requirement
+ cdhash H"fe12fe0baad9538e21462200076f1510b4d7140b" or cdhash H"bd7c0a518ada7c0138824725bb04126a26079ca7"
+
+ Frameworks/libswiftIOKit.dylib
+
+ cdhash
+
+ qcMlAtJuSYqhv7GlkBdTNkAY3/8=
+
+ requirement
+ cdhash H"c1e542c0c8c50d88d2d8d61464c982746b0d9b51" or cdhash H"a9c32502d26e498aa1bfb1a5901753364018dfff"
+
+ Frameworks/libswiftMetal.dylib
+
+ cdhash
+
+ 5nmAcP26pCsQ1jicIjvDevc6WQ8=
+
+ requirement
+ cdhash H"6769e26c565b6df559c79f30db5b252af146bff6" or cdhash H"e6798070fdbaa42b10d6389c223bc37af73a590f"
+
+ Frameworks/libswiftObjectiveC.dylib
+
+ cdhash
+
+ R4P87y0EKzf54v8gVXvomYSANRs=
+
+ requirement
+ cdhash H"cfc8bff5f33ca8e6cc55b76c42a45acbadc9a6f8" or cdhash H"4783fcef2d042b37f9e2ff20557be8998480351b"
+
+ Frameworks/libswiftQuartzCore.dylib
+
+ cdhash
+
+ bknY2ZZYsDmx9EFjrB7uvTb2X8o=
+
+ requirement
+ cdhash H"bd28786e3525484958edfb89610808086852dbbe" or cdhash H"6e49d8d99658b039b1f44163ac1eeebd36f65fca"
+
+ Frameworks/libswiftSafariServices.dylib
+
+ cdhash
+
+ YRua+zVGY/+QcdYRIP8QegmLWYM=
+
+ requirement
+ cdhash H"b7939634be68aa8d856e76b506889e42e7f412b8" or cdhash H"611b9afb354663ff9071d61120ff107a098b5983"
+
+ Frameworks/libswiftXPC.dylib
+
+ cdhash
+
+ HDW7fmnNnx/9boh/yF53ZFWe8sw=
+
+ requirement
+ cdhash H"5adfbeea44347dbcdfebca089f791cfd9680133c" or cdhash H"1c35bb7e69cd9f1ffd6e887fc85e7764559ef2cc"
+
+ Frameworks/libswiftos.dylib
+
+ cdhash
+
+ Twy7QT5U0caIVWxYQhNywz5oSo4=
+
+ requirement
+ cdhash H"bf8a15081175ba4289f2a4455dcf9d85f4d2a4d9" or cdhash H"4f0cbb413e54d1c688556c58421372c33e684a8e"
+
+ PlugIns/Quizlet bypass Extension.appex
+
+ cdhash
+
+ V7F5tBf9WGcurrHRBcnNraz96ro=
+
+ requirement
+ cdhash H"57b179b417fd58672eaeb1d105c9cdadacfdeaba" or cdhash H"1637e666448ad795da77b728b07fd231859ecac5"
+
+ Resources/Base.lproj/Main.storyboardc/Info.plist
+
+ hash2
+
+ xJgzLyp94oTo2NAKb+ODFIiZ6oj4Ql0eBEUuuQuW+ak=
+
+
+ Resources/Base.lproj/Main.storyboardc/MainMenu.nib
+
+ hash2
+
+ 9JcvxVA01jLRKlIwrGxrr0vGfWPAx9abxEfBjahlvGo=
+
+
+ Resources/Base.lproj/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib
+
+ hash2
+
+ XlSQsZv68cDIW6YB3J82QByi+sFrRWSaBs+Bj1LEPHI=
+
+
+ Resources/Base.lproj/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib
+
+ hash2
+
+ wsN4QgNm56fS53a1Osa8pILtsdCUQX4f2+zFPn2kP1M=
+
+
+
+ rules
+
+ ^Resources/
+
+ ^Resources/.*\.lproj/
+
+ optional
+
+ weight
+ 1000
+
+ ^Resources/.*\.lproj/locversion.plist$
+
+ omit
+
+ weight
+ 1100
+
+ ^Resources/Base\.lproj/
+
+ weight
+ 1010
+
+ ^version.plist$
+
+
+ rules2
+
+ .*\.dSYM($|/)
+
+ weight
+ 11
+
+ ^(.*/)?\.DS_Store$
+
+ omit
+
+ weight
+ 2000
+
+ ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/
+
+ nested
+
+ weight
+ 10
+
+ ^.*
+
+ ^Info\.plist$
+
+ omit
+
+ weight
+ 20
+
+ ^PkgInfo$
+
+ omit
+
+ weight
+ 20
+
+ ^Resources/
+
+ weight
+ 20
+
+ ^Resources/.*\.lproj/
+
+ optional
+
+ weight
+ 1000
+
+ ^Resources/.*\.lproj/locversion.plist$
+
+ omit
+
+ weight
+ 1100
+
+ ^Resources/Base\.lproj/
+
+ weight
+ 1010
+
+ ^[^/]+$
+
+ nested
+
+ weight
+ 10
+
+ ^embedded\.provisionprofile$
+
+ weight
+ 20
+
+ ^version\.plist$
+
+ weight
+ 20
+
+
+
+