From 687e36cb96ff3c233195bdad71bb365035ee60ea Mon Sep 17 00:00:00 2001
From: Tyler Sturos <55340199+tjsturos@users.noreply.github.com>
Date: Wed, 31 Dec 2025 23:16:42 -0900
Subject: [PATCH] strip metadata from images/icons/emojis uploaded
---
.idea/.gitignore | 3 +
.idea/aab-tools-project.xml | 9 +
.idea/caches/deviceStreaming.xml | 1186 ++++++++++++
.idea/misc.xml | 6 +
.idea/modules.xml | 8 +
.idea/quorum-mobile.iml | 9 +
.idea/vcs.xml | 6 +
TEST_SETUP.md | 49 +
app/(onboarding)/profile-setup.tsx | 21 +-
components/ProfileModal.tsx | 38 +-
jest.setup.js | 49 +
.../modules/quorumcrypto/BuildConfig.java | 10 +
.../aapt/AndroidManifest.xml | 7 +
.../aapt/output-metadata.json | 18 +
.../aar-metadata.properties | 6 +
.../annotationProcessors.json | 1 +
.../release/generateReleaseRFile/R.jar | Bin 0 -> 306 bytes
.../release/generateReleaseRFile/R.txt | 0
.../proguard-android-optimize.txt-8.11.0 | 89 +
.../global/proguard-android.txt-8.11.0 | 95 +
.../global/proguard-defaults.txt-8.11.0 | 89 +
.../incremental/mergeReleaseAssets/merger.xml | 2 +
.../mergeReleaseJniLibFolders/merger.xml | 2 +
.../mergeReleaseShaders/merger.xml | 2 +
.../compile-file-map.properties | 1 +
.../packageReleaseResources/merger.xml | 2 +
.../jni/arm64-v8a/libuniffi_channel.so | Bin 0 -> 1974176 bytes
.../jni/armeabi-v7a/libuniffi_channel.so | Bin 0 -> 1157564 bytes
.../jni/x86_64/libuniffi_channel.so | Bin 0 -> 1971232 bytes
.../jni/arm64-v8a/libuniffi_channel.so | Bin 0 -> 1974176 bytes
.../jni/armeabi-v7a/libuniffi_channel.so | Bin 0 -> 1157564 bytes
.../jni/x86_64/libuniffi_channel.so | Bin 0 -> 1971232 bytes
.../lint-model-metadata.properties | 3 +
.../parseReleaseLocalResources/R-def.txt | 2 +
.../manifest-merger-blame-release-report.txt | 7 +
.../out/arm64-v8a/libuniffi_channel.so | Bin 0 -> 1974176 bytes
.../out/armeabi-v7a/libuniffi_channel.so | Bin 0 -> 1157564 bytes
.../out/x86_64/libuniffi_channel.so | Bin 0 -> 1971232 bytes
.../AndroidManifest.xml | 7 +
.../out/lib/arm64-v8a/libuniffi_channel.so | Bin 0 -> 1974176 bytes
.../out/lib/armeabi-v7a/libuniffi_channel.so | Bin 0 -> 1157564 bytes
.../out/lib/x86_64/libuniffi_channel.so | Bin 0 -> 1971232 bytes
.../extractDeepLinksRelease/navigation.json | 1 +
.../nestedResourcesValidationReport.txt | 1 +
.../out/lib/arm64-v8a/libuniffi_channel.so | Bin 0 -> 1974176 bytes
.../out/lib/armeabi-v7a/libuniffi_channel.so | Bin 0 -> 1157564 bytes
.../out/lib/x86_64/libuniffi_channel.so | Bin 0 -> 1971232 bytes
.../generateReleaseRFile/package-aware-r.txt | 1 +
.../logs/manifest-merger-release-report.txt | 16 +
package.json | 38 +-
patches/jest-expo+52.0.0.patch | 16 +
patches/jest-expo+52.0.6.patch | 63 +
services/farcasterClient.ts | 13 +-
.../media/__tests__/imageAttachment.test.ts | 192 ++
services/media/customAssets.ts | 63 +-
services/media/imageAttachment.ts | 45 +-
utils/__tests__/imageMetadata.test.ts | 196 ++
utils/imageMetadata.ts | 62 +
utils/testHelpers.ts | 36 +
yarn.lock | 1695 ++++++++++++++++-
60 files changed, 4097 insertions(+), 68 deletions(-)
create mode 100644 .idea/.gitignore
create mode 100644 .idea/aab-tools-project.xml
create mode 100644 .idea/caches/deviceStreaming.xml
create mode 100644 .idea/misc.xml
create mode 100644 .idea/modules.xml
create mode 100644 .idea/quorum-mobile.iml
create mode 100644 .idea/vcs.xml
create mode 100644 TEST_SETUP.md
create mode 100644 jest.setup.js
create mode 100644 modules/quorum-crypto/android/build/generated/source/buildConfig/release/expo/modules/quorumcrypto/BuildConfig.java
create mode 100644 modules/quorum-crypto/android/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/AndroidManifest.xml
create mode 100644 modules/quorum-crypto/android/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/output-metadata.json
create mode 100644 modules/quorum-crypto/android/build/intermediates/aar_metadata/release/writeReleaseAarMetadata/aar-metadata.properties
create mode 100644 modules/quorum-crypto/android/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json
create mode 100644 modules/quorum-crypto/android/build/intermediates/compile_r_class_jar/release/generateReleaseRFile/R.jar
create mode 100644 modules/quorum-crypto/android/build/intermediates/compile_symbol_list/release/generateReleaseRFile/R.txt
create mode 100644 modules/quorum-crypto/android/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-8.11.0
create mode 100644 modules/quorum-crypto/android/build/intermediates/default_proguard_files/global/proguard-android.txt-8.11.0
create mode 100644 modules/quorum-crypto/android/build/intermediates/default_proguard_files/global/proguard-defaults.txt-8.11.0
create mode 100644 modules/quorum-crypto/android/build/intermediates/incremental/mergeReleaseAssets/merger.xml
create mode 100644 modules/quorum-crypto/android/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml
create mode 100644 modules/quorum-crypto/android/build/intermediates/incremental/mergeReleaseShaders/merger.xml
create mode 100644 modules/quorum-crypto/android/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties
create mode 100644 modules/quorum-crypto/android/build/intermediates/incremental/release/packageReleaseResources/merger.xml
create mode 100644 modules/quorum-crypto/android/build/intermediates/library_and_local_jars_jni/release/copyReleaseJniLibsProjectAndLocalJars/jni/arm64-v8a/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/library_and_local_jars_jni/release/copyReleaseJniLibsProjectAndLocalJars/jni/armeabi-v7a/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/library_and_local_jars_jni/release/copyReleaseJniLibsProjectAndLocalJars/jni/x86_64/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/library_jni/release/copyReleaseJniLibsProjectOnly/jni/arm64-v8a/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/library_jni/release/copyReleaseJniLibsProjectOnly/jni/armeabi-v7a/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/library_jni/release/copyReleaseJniLibsProjectOnly/jni/x86_64/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/lint_model_metadata/release/writeReleaseLintModelMetadata/lint-model-metadata.properties
create mode 100644 modules/quorum-crypto/android/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt
create mode 100644 modules/quorum-crypto/android/build/intermediates/manifest_merge_blame_file/release/processReleaseManifest/manifest-merger-blame-release-report.txt
create mode 100755 modules/quorum-crypto/android/build/intermediates/merged_jni_libs/release/mergeReleaseJniLibFolders/out/arm64-v8a/libuniffi_channel.so
create mode 100755 modules/quorum-crypto/android/build/intermediates/merged_jni_libs/release/mergeReleaseJniLibFolders/out/armeabi-v7a/libuniffi_channel.so
create mode 100755 modules/quorum-crypto/android/build/intermediates/merged_jni_libs/release/mergeReleaseJniLibFolders/out/x86_64/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/merged_manifest/release/processReleaseManifest/AndroidManifest.xml
create mode 100644 modules/quorum-crypto/android/build/intermediates/merged_native_libs/release/mergeReleaseNativeLibs/out/lib/arm64-v8a/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/merged_native_libs/release/mergeReleaseNativeLibs/out/lib/armeabi-v7a/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/merged_native_libs/release/mergeReleaseNativeLibs/out/lib/x86_64/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/navigation_json/release/extractDeepLinksRelease/navigation.json
create mode 100644 modules/quorum-crypto/android/build/intermediates/nested_resources_validation_report/release/generateReleaseResources/nestedResourcesValidationReport.txt
create mode 100644 modules/quorum-crypto/android/build/intermediates/stripped_native_libs/release/stripReleaseDebugSymbols/out/lib/arm64-v8a/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/stripped_native_libs/release/stripReleaseDebugSymbols/out/lib/armeabi-v7a/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/stripped_native_libs/release/stripReleaseDebugSymbols/out/lib/x86_64/libuniffi_channel.so
create mode 100644 modules/quorum-crypto/android/build/intermediates/symbol_list_with_package_name/release/generateReleaseRFile/package-aware-r.txt
create mode 100644 modules/quorum-crypto/android/build/outputs/logs/manifest-merger-release-report.txt
create mode 100644 patches/jest-expo+52.0.0.patch
create mode 100644 patches/jest-expo+52.0.6.patch
create mode 100644 services/media/__tests__/imageAttachment.test.ts
create mode 100644 utils/__tests__/imageMetadata.test.ts
create mode 100644 utils/imageMetadata.ts
create mode 100644 utils/testHelpers.ts
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/aab-tools-project.xml b/.idea/aab-tools-project.xml
new file mode 100644
index 0000000..add9cc5
--- /dev/null
+++ b/.idea/aab-tools-project.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
new file mode 100644
index 0000000..7d60e7b
--- /dev/null
+++ b/.idea/caches/deviceStreaming.xml
@@ -0,0 +1,1186 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..639900d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..0fc3407
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/quorum-mobile.iml b/.idea/quorum-mobile.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/quorum-mobile.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TEST_SETUP.md b/TEST_SETUP.md
new file mode 100644
index 0000000..2fc8225
--- /dev/null
+++ b/TEST_SETUP.md
@@ -0,0 +1,49 @@
+# Test Setup Notes
+
+## Known Issue: jest-expo UIManager Error
+
+There's a known issue with `jest-expo` version 52.0.0 where it tries to define properties on `mockNativeModules.UIManager` which doesn't exist, causing:
+
+```
+TypeError: Object.defineProperty called on non-object
+```
+
+### Solution Options
+
+#### Option 1: Use patch-package (Recommended)
+
+1. Install patch-package:
+```bash
+yarn add -D patch-package postinstall-postinstall
+```
+
+2. Apply the patch manually by editing `node_modules/jest-expo/src/preset/setup.js`:
+ - Find line 120 (around `Object.keys(mockNativeModules.NativeUnimoduleProxy.viewManagersMetadata).forEach`)
+ - Add this code BEFORE that line:
+ ```javascript
+ // Ensure UIManager exists before trying to define properties on it
+ if (!mockNativeModules.UIManager || typeof mockNativeModules.UIManager !== 'object') {
+ mockNativeModules.UIManager = {};
+ }
+ ```
+
+3. Create the patch:
+```bash
+npx patch-package jest-expo
+```
+
+4. Add to package.json scripts:
+```json
+"postinstall": "patch-package"
+```
+
+#### Option 2: Update jest-expo
+
+Try updating to the latest version of jest-expo:
+```bash
+yarn add -D jest-expo@latest
+```
+
+#### Option 3: Manual Fix
+
+Manually edit `node_modules/jest-expo/src/preset/setup.js` and add the UIManager check before line 120. This fix will be lost on `yarn install`, so Option 1 is recommended.
diff --git a/app/(onboarding)/profile-setup.tsx b/app/(onboarding)/profile-setup.tsx
index 96d62fb..6b83a0d 100644
--- a/app/(onboarding)/profile-setup.tsx
+++ b/app/(onboarding)/profile-setup.tsx
@@ -25,6 +25,7 @@ import { useTheme } from '@/theme';
import { useOnboarding } from '@/context';
import { OnboardingLayout, StepNavigation } from '@/components/onboarding';
import { IconSymbol } from '@/components/ui/IconSymbol';
+import { stripImageMetadata } from '@/utils/imageMetadata';
export default function ProfileSetupScreen() {
const { theme } = useTheme();
@@ -65,10 +66,18 @@ export default function ProfileSetupScreen() {
allowsEditing: true,
aspect: [1, 1],
quality: 0.8,
+ exif: false,
});
if (!result.canceled && result.assets[0]) {
- setProfileImage(result.assets[0].uri);
+ try {
+ // Strip metadata from the image
+ const strippedUri = await stripImageMetadata(result.assets[0].uri);
+ setProfileImage(strippedUri);
+ } catch (error) {
+ console.warn('[ProfileSetup] Failed to strip metadata, using original:', error);
+ setProfileImage(result.assets[0].uri);
+ }
}
};
@@ -82,10 +91,18 @@ export default function ProfileSetupScreen() {
allowsEditing: true,
aspect: [1, 1],
quality: 0.8,
+ exif: false,
});
if (!result.canceled && result.assets[0]) {
- setProfileImage(result.assets[0].uri);
+ try {
+ // Strip metadata from the image
+ const strippedUri = await stripImageMetadata(result.assets[0].uri);
+ setProfileImage(strippedUri);
+ } catch (error) {
+ console.warn('[ProfileSetup] Failed to strip metadata, using original:', error);
+ setProfileImage(result.assets[0].uri);
+ }
}
};
diff --git a/components/ProfileModal.tsx b/components/ProfileModal.tsx
index 9a44722..3cc38b2 100644
--- a/components/ProfileModal.tsx
+++ b/components/ProfileModal.tsx
@@ -21,6 +21,7 @@ import { useQueryClient } from '@tanstack/react-query';
import * as Clipboard from 'expo-clipboard';
import * as ImagePicker from 'expo-image-picker';
import React from 'react';
+import { stripImageMetadata } from '@/utils/imageMetadata';
import {
ActivityIndicator,
Alert,
@@ -239,14 +240,45 @@ export default function ProfileModal({ visible, onClose }: ProfileModalProps) {
aspect: [1, 1],
quality: 0.8,
base64: true,
+ exif: false,
});
if (!result.canceled && result.assets[0]) {
const asset = result.assets[0];
- // Convert to data URI for storage
const mimeType = asset.mimeType || 'image/jpeg';
- const profileImage = `data:${mimeType};base64,${asset.base64}`;
- updateProfile({ profileImage });
+
+ // Strip metadata before converting to base64
+ let profileImage: string;
+ try {
+ if (asset.uri) {
+ const strippedUri = await stripImageMetadata(asset.uri);
+ const response = await fetch(strippedUri);
+ const blob = await response.blob();
+ profileImage = await new Promise((resolve, reject) => {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ const result = reader.result as string;
+ resolve(result); // Already includes data: prefix
+ };
+ reader.onerror = () => reject(new Error('Failed to read stripped image'));
+ reader.readAsDataURL(blob);
+ });
+ } else if (asset.base64) {
+ // Fallback if URI not available
+ profileImage = `data:${mimeType};base64,${asset.base64}`;
+ } else {
+ throw new Error('No image data available');
+ }
+ } catch (error) {
+ console.warn('[ProfileModal] Failed to strip metadata, using original:', error);
+ // Fallback to original base64
+ profileImage = asset.base64
+ ? `data:${mimeType};base64,${asset.base64}`
+ : '';
+ }
+
+ if (profileImage) {
+ updateProfile({ profileImage });
// Broadcast profile image update to all spaces
const spaces = getAllSpaces();
diff --git a/jest.setup.js b/jest.setup.js
new file mode 100644
index 0000000..7c3e678
--- /dev/null
+++ b/jest.setup.js
@@ -0,0 +1,49 @@
+// Jest setup file for React Native/Expo
+// This file runs before jest-expo's setup
+
+// Fix for jest-expo bug: ensure UIManager exists before jest-expo tries to use it
+// jest-expo's setup.js requires 'react-native/Libraries/BatchedBridge/NativeModules'
+// and tries to define properties on mockNativeModules.UIManager, but UIManager doesn't exist
+
+// Pre-require NativeModules and ensure UIManager exists
+// This must happen synchronously before jest-expo's setup runs
+const NativeModules = require('react-native/Libraries/BatchedBridge/NativeModules');
+
+// Ensure UIManager exists as an object (jest-expo will try to define properties on it)
+if (!NativeModules.UIManager || typeof NativeModules.UIManager !== 'object') {
+ Object.defineProperty(NativeModules, 'UIManager', {
+ value: {},
+ writable: true,
+ configurable: true,
+ enumerable: true,
+ });
+}
+
+// Ensure NativeUnimoduleProxy.viewManagersMetadata exists (jest-expo iterates over this)
+if (!NativeModules.NativeUnimoduleProxy) {
+ Object.defineProperty(NativeModules, 'NativeUnimoduleProxy', {
+ value: { viewManagersMetadata: {} },
+ writable: true,
+ configurable: true,
+ enumerable: true,
+ });
+} else if (!NativeModules.NativeUnimoduleProxy.viewManagersMetadata) {
+ NativeModules.NativeUnimoduleProxy.viewManagersMetadata = {};
+}
+
+// Ensure global objects exist for expo-modules-core
+if (typeof globalThis !== 'undefined') {
+ if (!globalThis.expo) {
+ globalThis.expo = {};
+ }
+ if (!globalThis.expo.EventEmitter) {
+ // Mock EventEmitter for expo-modules-core
+ globalThis.expo.EventEmitter = class EventEmitter {
+ constructor() {}
+ addListener() { return this; }
+ removeListener() { return this; }
+ removeAllListeners() { return this; }
+ emit() { return false; }
+ };
+ }
+}
diff --git a/modules/quorum-crypto/android/build/generated/source/buildConfig/release/expo/modules/quorumcrypto/BuildConfig.java b/modules/quorum-crypto/android/build/generated/source/buildConfig/release/expo/modules/quorumcrypto/BuildConfig.java
new file mode 100644
index 0000000..b5f45fc
--- /dev/null
+++ b/modules/quorum-crypto/android/build/generated/source/buildConfig/release/expo/modules/quorumcrypto/BuildConfig.java
@@ -0,0 +1,10 @@
+/**
+ * Automatically generated file. DO NOT MODIFY
+ */
+package expo.modules.quorumcrypto;
+
+public final class BuildConfig {
+ public static final boolean DEBUG = false;
+ public static final String LIBRARY_PACKAGE_NAME = "expo.modules.quorumcrypto";
+ public static final String BUILD_TYPE = "release";
+}
diff --git a/modules/quorum-crypto/android/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/AndroidManifest.xml b/modules/quorum-crypto/android/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/AndroidManifest.xml
new file mode 100644
index 0000000..06f75d7
--- /dev/null
+++ b/modules/quorum-crypto/android/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/quorum-crypto/android/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/output-metadata.json b/modules/quorum-crypto/android/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/output-metadata.json
new file mode 100644
index 0000000..ceb0a1b
--- /dev/null
+++ b/modules/quorum-crypto/android/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/output-metadata.json
@@ -0,0 +1,18 @@
+{
+ "version": 3,
+ "artifactType": {
+ "type": "AAPT_FRIENDLY_MERGED_MANIFESTS",
+ "kind": "Directory"
+ },
+ "applicationId": "expo.modules.quorumcrypto",
+ "variantName": "release",
+ "elements": [
+ {
+ "type": "SINGLE",
+ "filters": [],
+ "attributes": [],
+ "outputFile": "AndroidManifest.xml"
+ }
+ ],
+ "elementType": "File"
+}
\ No newline at end of file
diff --git a/modules/quorum-crypto/android/build/intermediates/aar_metadata/release/writeReleaseAarMetadata/aar-metadata.properties b/modules/quorum-crypto/android/build/intermediates/aar_metadata/release/writeReleaseAarMetadata/aar-metadata.properties
new file mode 100644
index 0000000..1211b1e
--- /dev/null
+++ b/modules/quorum-crypto/android/build/intermediates/aar_metadata/release/writeReleaseAarMetadata/aar-metadata.properties
@@ -0,0 +1,6 @@
+aarFormatVersion=1.0
+aarMetadataVersion=1.0
+minCompileSdk=1
+minCompileSdkExtension=0
+minAndroidGradlePluginVersion=1.0.0
+coreLibraryDesugaringEnabled=false
diff --git a/modules/quorum-crypto/android/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json b/modules/quorum-crypto/android/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/modules/quorum-crypto/android/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/quorum-crypto/android/build/intermediates/compile_r_class_jar/release/generateReleaseRFile/R.jar b/modules/quorum-crypto/android/build/intermediates/compile_r_class_jar/release/generateReleaseRFile/R.jar
new file mode 100644
index 0000000000000000000000000000000000000000..bb1b97ef7f1ccf0a6d5b1c6143ee9c37bc468f78
GIT binary patch
literal 306
zcmWIWW@cdk14Rx+rd5gmt@?mG5LN`@)QW<9{oMSN(wx*{{le1xqSD;tqRN7jeElH3
z2?E|VaVc=q9kjA5$oq>^&K_Dx!EKxrvF)v-;KPf9UxrCj8nUR6bCNnRy
z#Ey}HSwl07hk=!Wjf;VWft`_o#W_DEmBEmK3CINjMj#6)3#2)LJV7AM2&7rHwli>S
u1j#cn1b8ztF)%~e*t`RgVPII&2x8%JF2r*I-mGjOg&>Rkf%I7rhXDX8tU)XQ
literal 0
HcmV?d00001
diff --git a/modules/quorum-crypto/android/build/intermediates/compile_symbol_list/release/generateReleaseRFile/R.txt b/modules/quorum-crypto/android/build/intermediates/compile_symbol_list/release/generateReleaseRFile/R.txt
new file mode 100644
index 0000000..e69de29
diff --git a/modules/quorum-crypto/android/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-8.11.0 b/modules/quorum-crypto/android/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-8.11.0
new file mode 100644
index 0000000..5a3e3a5
--- /dev/null
+++ b/modules/quorum-crypto/android/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-8.11.0
@@ -0,0 +1,89 @@
+# This is a configuration file for ProGuard.
+# http://proguard.sourceforge.net/index.html#manual/usage.html
+#
+# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
+# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
+# will be ignored by new version of the Android plugin for Gradle.
+
+# Optimizations: If you don't want to optimize, use the proguard-android.txt configuration file
+# instead of this one, which turns off the optimization flags.
+-allowaccessmodification
+
+# Preserve some attributes that may be required for reflection.
+-keepattributes AnnotationDefault,
+ EnclosingMethod,
+ InnerClasses,
+ RuntimeVisibleAnnotations,
+ RuntimeVisibleParameterAnnotations,
+ RuntimeVisibleTypeAnnotations,
+ Signature
+
+-keep public class com.google.vending.licensing.ILicensingService
+-keep public class com.android.vending.licensing.ILicensingService
+-keep public class com.google.android.vending.licensing.ILicensingService
+-dontnote com.android.vending.licensing.ILicensingService
+-dontnote com.google.vending.licensing.ILicensingService
+-dontnote com.google.android.vending.licensing.ILicensingService
+
+# For native methods, see https://www.guardsquare.com/manual/configuration/examples#native
+-keepclasseswithmembernames,includedescriptorclasses class * {
+ native ;
+}
+
+# Keep setters in Views so that animations can still work.
+-keepclassmembers public class * extends android.view.View {
+ void set*(***);
+ *** get*();
+}
+
+# We want to keep methods in Activity that could be used in the XML attribute onClick.
+-keepclassmembers class * extends android.app.Activity {
+ public void *(android.view.View);
+}
+
+# For enumeration classes, see https://www.guardsquare.com/manual/configuration/examples#enumerations
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+-keepclassmembers class * implements android.os.Parcelable {
+ public static final ** CREATOR;
+}
+
+# Preserve annotated Javascript interface methods.
+-keepclassmembers class * {
+ @android.webkit.JavascriptInterface ;
+}
+
+# The support libraries contains references to newer platform versions.
+# Don't warn about those in case this app is linking against an older
+# platform version. We know about them, and they are safe.
+-dontnote android.support.**
+-dontnote androidx.**
+-dontwarn android.support.**
+-dontwarn androidx.**
+
+# Understand the @Keep support annotation.
+-keep class android.support.annotation.Keep
+
+-keep @android.support.annotation.Keep class * {*;}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep ;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep ;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep (...);
+}
+
+# These classes are duplicated between android.jar and org.apache.http.legacy.jar.
+-dontnote org.apache.http.**
+-dontnote android.net.http.**
+
+# These classes are duplicated between android.jar and core-lambda-stubs.jar.
+-dontnote java.lang.invoke.**
diff --git a/modules/quorum-crypto/android/build/intermediates/default_proguard_files/global/proguard-android.txt-8.11.0 b/modules/quorum-crypto/android/build/intermediates/default_proguard_files/global/proguard-android.txt-8.11.0
new file mode 100644
index 0000000..6f7e4ef
--- /dev/null
+++ b/modules/quorum-crypto/android/build/intermediates/default_proguard_files/global/proguard-android.txt-8.11.0
@@ -0,0 +1,95 @@
+# This is a configuration file for ProGuard.
+# http://proguard.sourceforge.net/index.html#manual/usage.html
+#
+# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
+# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
+# will be ignored by new version of the Android plugin for Gradle.
+
+# Optimization is turned off by default. Dex does not like code run
+# through the ProGuard optimize steps (and performs some
+# of these optimizations on its own).
+# Note that if you want to enable optimization, you cannot just
+# include optimization flags in your own project configuration file;
+# instead you will need to point to the
+# "proguard-android-optimize.txt" file instead of this one from your
+# project.properties file.
+-dontoptimize
+
+# Preserve some attributes that may be required for reflection.
+-keepattributes AnnotationDefault,
+ EnclosingMethod,
+ InnerClasses,
+ RuntimeVisibleAnnotations,
+ RuntimeVisibleParameterAnnotations,
+ RuntimeVisibleTypeAnnotations,
+ Signature
+
+-keep public class com.google.vending.licensing.ILicensingService
+-keep public class com.android.vending.licensing.ILicensingService
+-keep public class com.google.android.vending.licensing.ILicensingService
+-dontnote com.android.vending.licensing.ILicensingService
+-dontnote com.google.vending.licensing.ILicensingService
+-dontnote com.google.android.vending.licensing.ILicensingService
+
+# For native methods, see https://www.guardsquare.com/manual/configuration/examples#native
+-keepclasseswithmembernames,includedescriptorclasses class * {
+ native ;
+}
+
+# Keep setters in Views so that animations can still work.
+-keepclassmembers public class * extends android.view.View {
+ void set*(***);
+ *** get*();
+}
+
+# We want to keep methods in Activity that could be used in the XML attribute onClick.
+-keepclassmembers class * extends android.app.Activity {
+ public void *(android.view.View);
+}
+
+# For enumeration classes, see https://www.guardsquare.com/manual/configuration/examples#enumerations
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+-keepclassmembers class * implements android.os.Parcelable {
+ public static final ** CREATOR;
+}
+
+# Preserve annotated Javascript interface methods.
+-keepclassmembers class * {
+ @android.webkit.JavascriptInterface ;
+}
+
+# The support libraries contains references to newer platform versions.
+# Don't warn about those in case this app is linking against an older
+# platform version. We know about them, and they are safe.
+-dontnote android.support.**
+-dontnote androidx.**
+-dontwarn android.support.**
+-dontwarn androidx.**
+
+# Understand the @Keep support annotation.
+-keep class android.support.annotation.Keep
+
+-keep @android.support.annotation.Keep class * {*;}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep ;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep ;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep (...);
+}
+
+# These classes are duplicated between android.jar and org.apache.http.legacy.jar.
+-dontnote org.apache.http.**
+-dontnote android.net.http.**
+
+# These classes are duplicated between android.jar and core-lambda-stubs.jar.
+-dontnote java.lang.invoke.**
diff --git a/modules/quorum-crypto/android/build/intermediates/default_proguard_files/global/proguard-defaults.txt-8.11.0 b/modules/quorum-crypto/android/build/intermediates/default_proguard_files/global/proguard-defaults.txt-8.11.0
new file mode 100644
index 0000000..7bbb228
--- /dev/null
+++ b/modules/quorum-crypto/android/build/intermediates/default_proguard_files/global/proguard-defaults.txt-8.11.0
@@ -0,0 +1,89 @@
+# This is a configuration file for ProGuard.
+# http://proguard.sourceforge.net/index.html#manual/usage.html
+#
+# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
+# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
+# will be ignored by new version of the Android plugin for Gradle.
+
+# Optimizations can be turned on and off in the 'postProcessing' DSL block.
+# The configuration below is applied if optimizations are enabled.
+-allowaccessmodification
+
+# Preserve some attributes that may be required for reflection.
+-keepattributes AnnotationDefault,
+ EnclosingMethod,
+ InnerClasses,
+ RuntimeVisibleAnnotations,
+ RuntimeVisibleParameterAnnotations,
+ RuntimeVisibleTypeAnnotations,
+ Signature
+
+-keep public class com.google.vending.licensing.ILicensingService
+-keep public class com.android.vending.licensing.ILicensingService
+-keep public class com.google.android.vending.licensing.ILicensingService
+-dontnote com.android.vending.licensing.ILicensingService
+-dontnote com.google.vending.licensing.ILicensingService
+-dontnote com.google.android.vending.licensing.ILicensingService
+
+# For native methods, see https://www.guardsquare.com/manual/configuration/examples#native
+-keepclasseswithmembernames,includedescriptorclasses class * {
+ native ;
+}
+
+# Keep setters in Views so that animations can still work.
+-keepclassmembers public class * extends android.view.View {
+ void set*(***);
+ *** get*();
+}
+
+# We want to keep methods in Activity that could be used in the XML attribute onClick.
+-keepclassmembers class * extends android.app.Activity {
+ public void *(android.view.View);
+}
+
+# For enumeration classes, see https://www.guardsquare.com/manual/configuration/examples#enumerations
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+-keepclassmembers class * implements android.os.Parcelable {
+ public static final ** CREATOR;
+}
+
+# Preserve annotated Javascript interface methods.
+-keepclassmembers class * {
+ @android.webkit.JavascriptInterface ;
+}
+
+# The support libraries contains references to newer platform versions.
+# Don't warn about those in case this app is linking against an older
+# platform version. We know about them, and they are safe.
+-dontnote android.support.**
+-dontnote androidx.**
+-dontwarn android.support.**
+-dontwarn androidx.**
+
+# Understand the @Keep support annotation.
+-keep class android.support.annotation.Keep
+
+-keep @android.support.annotation.Keep class * {*;}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep ;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep ;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep (...);
+}
+
+# These classes are duplicated between android.jar and org.apache.http.legacy.jar.
+-dontnote org.apache.http.**
+-dontnote android.net.http.**
+
+# These classes are duplicated between android.jar and core-lambda-stubs.jar.
+-dontnote java.lang.invoke.**
diff --git a/modules/quorum-crypto/android/build/intermediates/incremental/mergeReleaseAssets/merger.xml b/modules/quorum-crypto/android/build/intermediates/incremental/mergeReleaseAssets/merger.xml
new file mode 100644
index 0000000..05d65c7
--- /dev/null
+++ b/modules/quorum-crypto/android/build/intermediates/incremental/mergeReleaseAssets/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/modules/quorum-crypto/android/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml b/modules/quorum-crypto/android/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml
new file mode 100644
index 0000000..e20a78f
--- /dev/null
+++ b/modules/quorum-crypto/android/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/modules/quorum-crypto/android/build/intermediates/incremental/mergeReleaseShaders/merger.xml b/modules/quorum-crypto/android/build/intermediates/incremental/mergeReleaseShaders/merger.xml
new file mode 100644
index 0000000..91df871
--- /dev/null
+++ b/modules/quorum-crypto/android/build/intermediates/incremental/mergeReleaseShaders/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/modules/quorum-crypto/android/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties b/modules/quorum-crypto/android/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties
new file mode 100644
index 0000000..3996bdc
--- /dev/null
+++ b/modules/quorum-crypto/android/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties
@@ -0,0 +1 @@
+#Wed Dec 31 22:56:25 AKST 2025
diff --git a/modules/quorum-crypto/android/build/intermediates/incremental/release/packageReleaseResources/merger.xml b/modules/quorum-crypto/android/build/intermediates/incremental/release/packageReleaseResources/merger.xml
new file mode 100644
index 0000000..dff1a44
--- /dev/null
+++ b/modules/quorum-crypto/android/build/intermediates/incremental/release/packageReleaseResources/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/modules/quorum-crypto/android/build/intermediates/library_and_local_jars_jni/release/copyReleaseJniLibsProjectAndLocalJars/jni/arm64-v8a/libuniffi_channel.so b/modules/quorum-crypto/android/build/intermediates/library_and_local_jars_jni/release/copyReleaseJniLibsProjectAndLocalJars/jni/arm64-v8a/libuniffi_channel.so
new file mode 100644
index 0000000000000000000000000000000000000000..e269e00770154ec98463b4824468dfb8cae11949
GIT binary patch
literal 1974176
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