diff --git a/.gitignore b/.gitignore index 8a0263a2e..0924aacae 100644 --- a/.gitignore +++ b/.gitignore @@ -162,7 +162,11 @@ Derived/ Libs/*.a Libs/.downloaded Libs/dylibs/ -Libs/ios/ +Libs/ios/* +# The integrity baseline for the iOS xcframeworks is tracked, the way Libs/checksums.sha256 is. +# The directory pattern above has to end in /* rather than /, because git cannot re-include a +# file whose parent directory is itself excluded. +!Libs/ios/checksums.sha256 # Rust driver build outputs. The vendored crates are workspace members, so the bridge # lockfile is the only one cargo writes. lib/ holds the staticlib slices build-dameng.sh diff --git a/CLAUDE.md b/CLAUDE.md index aaadb86a9..a7c767463 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -81,11 +81,13 @@ git add Libs/checksums.sha256 && git commit -m "build: update static library che Never run `shasum -a 256 Libs/*.a > Libs/checksums.sha256` by hand: regenerating from a stale `Libs/` reverts other libraries silently (this shipped a broken libmongoc and rolled back DuckDB once). `publish-libs.sh` exists to make that impossible. +The same applies to the iOS xcframeworks. `download-libs.sh` verifies `Libs/ios` against `Libs/ios/checksums.sha256` on every run, so the archive and its baseline have to move together; `publish-ios-libs.sh` does both and refuses a publish that changes nothing. It takes `--dry-run`. + ```bash # iOS xcframeworks (Libs/ios/*.xcframework) -tar czf /tmp/tablepro-libs-ios-v1.tar.gz -C Libs/ios . -gh release upload libs-v1 /tmp/tablepro-libs-ios-v1.tar.gz --clobber --repo TableProApp/TablePro +scripts/publish-ios-libs.sh +git add Libs/ios/checksums.sha256 && git commit -m "build: update iOS xcframework checksums" ``` ## Architecture diff --git a/Libs/ios/checksums.sha256 b/Libs/ios/checksums.sha256 new file mode 100644 index 000000000..35b3743a5 --- /dev/null +++ b/Libs/ios/checksums.sha256 @@ -0,0 +1,424 @@ +840741c66e9ee257f97eb7cc16407c37960aa49faa4b110e56ccc0f8dc3a6db2 ./DuckDB.xcframework/Info.plist +c8dd688cf14559c744255d1bb3879330d6ae3523268e8904fa7b885e140030aa ./DuckDB.xcframework/ios-arm64/Headers/duckdb.h +f4073989393e739b0b5ad68c7f47f7750715d2d46e46141e81b1bc49cf782620 ./DuckDB.xcframework/ios-arm64/libduckdb-device.a +c8dd688cf14559c744255d1bb3879330d6ae3523268e8904fa7b885e140030aa ./DuckDB.xcframework/ios-arm64_x86_64-simulator/Headers/duckdb.h +75523877523153f63249a39eb4ec0d7f1bb05db3a4dbb5e6c35ee848b09afb71 ./DuckDB.xcframework/ios-arm64_x86_64-simulator/libduckdb-sim.a +0481f79db3949ba16425ffd8e15e640757a208ca05728d98cdbfb4bc617e06c3 ./FreeTDS.xcframework/Info.plist +734d8502be13513e974a621557b1a4776d9f605b5a48039e28a3597f27f704ce ./FreeTDS.xcframework/ios-arm64-simulator/Headers/sybdb.h +eaa21732fa7cfb538b3bb9bcca7342b99b407d2e838c09e5f3d07398c21406a3 ./FreeTDS.xcframework/ios-arm64-simulator/Headers/sybfront.h +02f2851fce76a71ebdcb93bd2936803d704993effe442ab75bd6a4a5d39f83b7 ./FreeTDS.xcframework/ios-arm64-simulator/libsybdb_ios-arm64-simulator.a +734d8502be13513e974a621557b1a4776d9f605b5a48039e28a3597f27f704ce ./FreeTDS.xcframework/ios-arm64/Headers/sybdb.h +eaa21732fa7cfb538b3bb9bcca7342b99b407d2e838c09e5f3d07398c21406a3 ./FreeTDS.xcframework/ios-arm64/Headers/sybfront.h +f054cfa41261cafcb60ea3fd78e5cb2843510eddc569bf1f7898128f1519b004 ./FreeTDS.xcframework/ios-arm64/libsybdb_ios-arm64.a +734d8502be13513e974a621557b1a4776d9f605b5a48039e28a3597f27f704ce ./FreeTDS.xcframework/macos-arm64_x86_64/Headers/sybdb.h +eaa21732fa7cfb538b3bb9bcca7342b99b407d2e838c09e5f3d07398c21406a3 ./FreeTDS.xcframework/macos-arm64_x86_64/Headers/sybfront.h +0dd845300fe29433aac4e34ee14cee563161bfbb0dbaac2b889e8f9907029927 ./FreeTDS.xcframework/macos-arm64_x86_64/libsybdb_macos_universal.a +32fb700cf9ada71e40d9d92cb91e17a7b3e6029af8c57e34b98d9dcf4ee14267 ./Hiredis-SSL.xcframework/Info.plist +a52589d9b1a35e9ae8a75cf10744d9934ea6d7c197ec3f620a5a04d7fdb82641 ./Hiredis-SSL.xcframework/ios-arm64-simulator/libhiredis_ssl.a +0c90a2b69508a9201c6c528599340c28ad46f7ee83986b5bceddc2a6eaf3f0b5 ./Hiredis-SSL.xcframework/ios-arm64/libhiredis_ssl.a +4cdd9e884fb3603521b5bcb95f4e858ccc1e2ca6df6102b03c7fa0f967d5e514 ./Hiredis.xcframework/Info.plist +a1bb52f34d1a17317a79e8f61395a01dc66db26c3585577c9c6492e9dd4637bc ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/adapters/ae.h +d0045cf32ec349f6553c19467ca367ef994ee5f649ee9382cbe02fc294a6a4ae ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/adapters/glib.h +b26530d821e7eeecc2db08d5f69aeaf30d5ea499d36736d796d594bd78955ab0 ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/adapters/ivykis.h +3b4b5da85d02f04b918dad02a1086ed6abbd774dfe0d1ac98ec12eb26de5593b ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/adapters/libev.h +7b67a7bb6281ed3cc7f506833663d423921f61eae3b59408618a2adfae210c8a ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/adapters/libevent.h +a9a022c24ca31641c211b7f9537772e020a574de0de10de21db1b3810c768aeb ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/adapters/libhv.h +47d693d912e2dd1b3cb1628982acdcc21b0da5933b6c8f9961dccdc1f1c0d74a ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/adapters/libsdevent.h +5224c15beeb41eda4b046ce514145f49d310b685a0db000e9ee3ed7a0ba2bd0e ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/adapters/libuv.h +fc70cbbab64c9dcdc241967108b9d5fff1d604e0cd49e7c0b8beceb526fc0db9 ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/adapters/macosx.h +c33cd0444393c52258be029fdbc6a302d9445136356823364ae403f84ffbcca5 ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/adapters/poll.h +d6a1f8b35717d1febb5b9715e1fc7ab3de09b2ca7703684dc0a84e68f06fb23b ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/adapters/qt.h +4219d9e878f8e7ceb5468ea2ee1e0746c3284e1dc95801f328c7e18fc92d49c7 ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/adapters/redismoduleapi.h +b4b8e85d075838306560a7a9c3256afa86015269e227290dc294df7cf4d259ce ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/alloc.h +d0cc2dd4a746ea12af8d74bcfff943cbec83dce3770de8d3909ce6978e53f328 ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/async.h +72336757839241424a866a53c4d567dce64ab95795072dddac75f838c3fbaa6d ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/hiredis.h +befc5abaece997710365793c50ec4af2e83f1bb5ba146bf9c673abd29e60c2e9 ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/hiredis_ssl.h +bf55c9af96d2cc5afb40baae4d8e796eb382ec08741ce7750035dba61c0d18a6 ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/read.h +f7c6dff4ecd84f95e9aac185193efd6a4af01f0cda357515f54425c3e0eee9da ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/sds.h +4f8ca92dcdbc228bf2f59c0ae7bde6ec45f7bbaa34324d7becd9c962dfcb0bce ./Hiredis.xcframework/ios-arm64-simulator/Headers/hiredis/sockcompat.h +e7827b2f1ec26bef2c38ad194d33a541a1590278fe19709757c637b5cb1ee19c ./Hiredis.xcframework/ios-arm64-simulator/libhiredis.a +a1bb52f34d1a17317a79e8f61395a01dc66db26c3585577c9c6492e9dd4637bc ./Hiredis.xcframework/ios-arm64/Headers/hiredis/adapters/ae.h +d0045cf32ec349f6553c19467ca367ef994ee5f649ee9382cbe02fc294a6a4ae ./Hiredis.xcframework/ios-arm64/Headers/hiredis/adapters/glib.h +b26530d821e7eeecc2db08d5f69aeaf30d5ea499d36736d796d594bd78955ab0 ./Hiredis.xcframework/ios-arm64/Headers/hiredis/adapters/ivykis.h +3b4b5da85d02f04b918dad02a1086ed6abbd774dfe0d1ac98ec12eb26de5593b ./Hiredis.xcframework/ios-arm64/Headers/hiredis/adapters/libev.h +7b67a7bb6281ed3cc7f506833663d423921f61eae3b59408618a2adfae210c8a ./Hiredis.xcframework/ios-arm64/Headers/hiredis/adapters/libevent.h +a9a022c24ca31641c211b7f9537772e020a574de0de10de21db1b3810c768aeb ./Hiredis.xcframework/ios-arm64/Headers/hiredis/adapters/libhv.h +47d693d912e2dd1b3cb1628982acdcc21b0da5933b6c8f9961dccdc1f1c0d74a ./Hiredis.xcframework/ios-arm64/Headers/hiredis/adapters/libsdevent.h +5224c15beeb41eda4b046ce514145f49d310b685a0db000e9ee3ed7a0ba2bd0e ./Hiredis.xcframework/ios-arm64/Headers/hiredis/adapters/libuv.h +fc70cbbab64c9dcdc241967108b9d5fff1d604e0cd49e7c0b8beceb526fc0db9 ./Hiredis.xcframework/ios-arm64/Headers/hiredis/adapters/macosx.h +c33cd0444393c52258be029fdbc6a302d9445136356823364ae403f84ffbcca5 ./Hiredis.xcframework/ios-arm64/Headers/hiredis/adapters/poll.h +d6a1f8b35717d1febb5b9715e1fc7ab3de09b2ca7703684dc0a84e68f06fb23b ./Hiredis.xcframework/ios-arm64/Headers/hiredis/adapters/qt.h +4219d9e878f8e7ceb5468ea2ee1e0746c3284e1dc95801f328c7e18fc92d49c7 ./Hiredis.xcframework/ios-arm64/Headers/hiredis/adapters/redismoduleapi.h +b4b8e85d075838306560a7a9c3256afa86015269e227290dc294df7cf4d259ce ./Hiredis.xcframework/ios-arm64/Headers/hiredis/alloc.h +d0cc2dd4a746ea12af8d74bcfff943cbec83dce3770de8d3909ce6978e53f328 ./Hiredis.xcframework/ios-arm64/Headers/hiredis/async.h +72336757839241424a866a53c4d567dce64ab95795072dddac75f838c3fbaa6d ./Hiredis.xcframework/ios-arm64/Headers/hiredis/hiredis.h +befc5abaece997710365793c50ec4af2e83f1bb5ba146bf9c673abd29e60c2e9 ./Hiredis.xcframework/ios-arm64/Headers/hiredis/hiredis_ssl.h +bf55c9af96d2cc5afb40baae4d8e796eb382ec08741ce7750035dba61c0d18a6 ./Hiredis.xcframework/ios-arm64/Headers/hiredis/read.h +f7c6dff4ecd84f95e9aac185193efd6a4af01f0cda357515f54425c3e0eee9da ./Hiredis.xcframework/ios-arm64/Headers/hiredis/sds.h +4f8ca92dcdbc228bf2f59c0ae7bde6ec45f7bbaa34324d7becd9c962dfcb0bce ./Hiredis.xcframework/ios-arm64/Headers/hiredis/sockcompat.h +9f6eaeb25dc9a3a1b4a053f29596a9e296af55b535c41f65eb09874df0082847 ./Hiredis.xcframework/ios-arm64/libhiredis.a +785cec745ad2e8123ebf3becd418c2d35089255f96ed697d5307e448292dcabf ./LibPQ.xcframework/Info.plist +ff71ba93b36457ea23546d1d1329f3ed86737436f306c362ad2714a6c06768d3 ./LibPQ.xcframework/ios-arm64-simulator/Headers/libpq-fe.h +56aed363a15d854197f8bca7508d79a31787a743d3bb417512541b325bc93445 ./LibPQ.xcframework/ios-arm64-simulator/Headers/pg_config_ext.h +e65b7fc71d65af63efdb9d255f6e1657969cb16335c27d667e9c8998ca29bdff ./LibPQ.xcframework/ios-arm64-simulator/Headers/postgres_ext.h +2fdc1832a80361aec51e942a7bce12cfd4455b5a4b13f2e94cf41fb58d158466 ./LibPQ.xcframework/ios-arm64-simulator/libpq.a +ff71ba93b36457ea23546d1d1329f3ed86737436f306c362ad2714a6c06768d3 ./LibPQ.xcframework/ios-arm64/Headers/libpq-fe.h +56aed363a15d854197f8bca7508d79a31787a743d3bb417512541b325bc93445 ./LibPQ.xcframework/ios-arm64/Headers/pg_config_ext.h +e65b7fc71d65af63efdb9d255f6e1657969cb16335c27d667e9c8998ca29bdff ./LibPQ.xcframework/ios-arm64/Headers/postgres_ext.h +6bbab63ca1a8568b045e01d5507ec29950595f2c30477757e97b0520b1c3a109 ./LibPQ.xcframework/ios-arm64/libpq.a +de5e169ef8e363a06d936d94bd63eadca568318544ee5cb2a11870febce27ec9 ./LibSSH2.xcframework/Info.plist +86cc9fcfd0daa10ba25442e5ecea23db618027362bc85fdc591ec7f5d9d39a91 ./LibSSH2.xcframework/ios-arm64-simulator/Headers/libssh2.h +f1cd086f3950e65635827ee3332c1c6ca62887c0f84369ec58e31974debb36e9 ./LibSSH2.xcframework/ios-arm64-simulator/Headers/libssh2_publickey.h +b5d864f19af69521278ed953b20b76a32cfdc08014da81d38f59964e7e2e2575 ./LibSSH2.xcframework/ios-arm64-simulator/Headers/libssh2_sftp.h +cb46a9f48883eece55beca2216a8076ddb1ea982fd94211e457445783f6ddeb2 ./LibSSH2.xcframework/ios-arm64-simulator/libssh2.a +86cc9fcfd0daa10ba25442e5ecea23db618027362bc85fdc591ec7f5d9d39a91 ./LibSSH2.xcframework/ios-arm64/Headers/libssh2.h +f1cd086f3950e65635827ee3332c1c6ca62887c0f84369ec58e31974debb36e9 ./LibSSH2.xcframework/ios-arm64/Headers/libssh2_publickey.h +b5d864f19af69521278ed953b20b76a32cfdc08014da81d38f59964e7e2e2575 ./LibSSH2.xcframework/ios-arm64/Headers/libssh2_sftp.h +322497a70c0a17294c9d233dbeeea89dc8554525d341877323988216d67c8b14 ./LibSSH2.xcframework/ios-arm64/libssh2.a +e573022e71d9b0e25f1000d04bd4bc6c10613b9dc4657335613f1cd69757820f ./MariaDB.xcframework/Info.plist +eb36d872b1bc7e231d5527b44e1a92f7e08d7d95f4513626127407f924f72fa2 ./MariaDB.xcframework/ios-arm64-simulator/Headers/config.h +064da883cf0dc66fdd398b892f17d35c88e9ae3d410b6352ba4dd8f9cddf5505 ./MariaDB.xcframework/ios-arm64-simulator/Headers/errmsg.h +b144e85c8715301d13daf071e522306aaeb451516e1e6ea422b3c5eac34f2069 ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_common.h +27a5d6eb8faeb2f9d2ddfdbffaa6fa01f2c923aee25d6ad6a6a50fbf1c8a6da0 ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_compress.h +eb36d872b1bc7e231d5527b44e1a92f7e08d7d95f4513626127407f924f72fa2 ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_config.h +e8a1ba4fcb315599ebbf82ab1ca03616d8af71dea99be1693a235b3104c1d560 ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_context.h +1a28b9f2d993b28a5450483b84d7b527d72fe5543693a9cd78928b1de79e49f0 ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_crypt.h +f1f8e74a586b5af7dd0202e069f1e6e727b180fbb7ec698d6a7d8b0220d729a4 ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_decimal.h +6377c9a212a3ad6007387f2e0cd156e7dc3419eb6ea0dc3784c66f35c9854bd7 ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_global.h +b120e5075a2ed5662a5e5c481972603af0233a4ed3fb82e6fdb9570852e87b9c ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_hash.h +842b53e7d98db7f88102b62fd0e49dfe65d3af0a6ad1bd91287fd43117010e1a ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_hashtbl.h +1c9879386ce6add983f7d8dd307e3189bbeb9f3f861a9da36208085d43aa2e51 ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_list.h +04aa845dc4e3d3ebc24f2c2a85348cbcf2966a9737d024e07a4357416daa75ef ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_priv.h +3a687ea57d3c4119e74562c25adaa066027e2c54613edc713615e74843444924 ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_pthread.h +3be945377a5faacd5509bcfc360a4fb74686593c7dd49466e86849d969c775f8 ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_pvio.h +40aeeebe24b7845157cd514eaf0d7af4a6855729fcbfde40449d95f1ee5b645b ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_server_error.h +97be10b07931792d4b5d5967d7f29eb7c8282cf07972348e2e9b1046ff17696a ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_string.h +59f1775343fce502bddcec39477c49dc40121a480e81f10dae5f08f694f03624 ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_sys.h +432901d6423bc40b0acec288d1b251a3e2f760a1cad9e47be500eed6f6c65822 ./MariaDB.xcframework/ios-arm64-simulator/Headers/ma_tls.h +5fcbabe80cf6296024b2af60864e8ce9f7a036ef28c5bf799e1d0fed466a7af0 ./MariaDB.xcframework/ios-arm64-simulator/Headers/mariadb_async.h +80a0280ec106e457235c05fecc0813aba194c3bda92bae55ac80ca7099cf184c ./MariaDB.xcframework/ios-arm64-simulator/Headers/mariadb_com.h +2dc9d416a719c4b1d4c92c6d346ac5e225338f547e35ac0fe999d722dca73fc0 ./MariaDB.xcframework/ios-arm64-simulator/Headers/mariadb_ctype.h +4ee86687d9ddd36d115456da763322df63dafc9f24b0c605d7e13aa3cbe43651 ./MariaDB.xcframework/ios-arm64-simulator/Headers/mariadb_dyncol.h +ece38ad6e70b75eba21a5be06efcb835c6ca859aded0cc6a5d732d072939622b ./MariaDB.xcframework/ios-arm64-simulator/Headers/mariadb_rpl.h +c4a646f43cfec9c90212a056445c151af764f2c8fa925aade21572fb05c1098f ./MariaDB.xcframework/ios-arm64-simulator/Headers/mariadb_stmt.h +d88af879bfe5527754581bb1fb39284f63e47d216322e0b494eaec8ef9df07ae ./MariaDB.xcframework/ios-arm64-simulator/Headers/mariadb_version.h +2d59a690cd26425fc4ee8f593e3fc609ab525054026088b90b6df517fc3c6442 ./MariaDB.xcframework/ios-arm64-simulator/Headers/mysql.h +cf7e800e4f8b8e30502dac76712c43e45857cbda2cbde57d84e95f9e0c44a289 ./MariaDB.xcframework/ios-arm64-simulator/Headers/mysqld_error.h +15bfb4d6922ffd0d85a44a900f1cd97f1e1a2dc0c2120b6bd10b56af7791c6a1 ./MariaDB.xcframework/ios-arm64-simulator/libmariadb.a +eb36d872b1bc7e231d5527b44e1a92f7e08d7d95f4513626127407f924f72fa2 ./MariaDB.xcframework/ios-arm64/Headers/config.h +064da883cf0dc66fdd398b892f17d35c88e9ae3d410b6352ba4dd8f9cddf5505 ./MariaDB.xcframework/ios-arm64/Headers/errmsg.h +b144e85c8715301d13daf071e522306aaeb451516e1e6ea422b3c5eac34f2069 ./MariaDB.xcframework/ios-arm64/Headers/ma_common.h +27a5d6eb8faeb2f9d2ddfdbffaa6fa01f2c923aee25d6ad6a6a50fbf1c8a6da0 ./MariaDB.xcframework/ios-arm64/Headers/ma_compress.h +eb36d872b1bc7e231d5527b44e1a92f7e08d7d95f4513626127407f924f72fa2 ./MariaDB.xcframework/ios-arm64/Headers/ma_config.h +e8a1ba4fcb315599ebbf82ab1ca03616d8af71dea99be1693a235b3104c1d560 ./MariaDB.xcframework/ios-arm64/Headers/ma_context.h +1a28b9f2d993b28a5450483b84d7b527d72fe5543693a9cd78928b1de79e49f0 ./MariaDB.xcframework/ios-arm64/Headers/ma_crypt.h +f1f8e74a586b5af7dd0202e069f1e6e727b180fbb7ec698d6a7d8b0220d729a4 ./MariaDB.xcframework/ios-arm64/Headers/ma_decimal.h +6377c9a212a3ad6007387f2e0cd156e7dc3419eb6ea0dc3784c66f35c9854bd7 ./MariaDB.xcframework/ios-arm64/Headers/ma_global.h +b120e5075a2ed5662a5e5c481972603af0233a4ed3fb82e6fdb9570852e87b9c ./MariaDB.xcframework/ios-arm64/Headers/ma_hash.h +842b53e7d98db7f88102b62fd0e49dfe65d3af0a6ad1bd91287fd43117010e1a ./MariaDB.xcframework/ios-arm64/Headers/ma_hashtbl.h +1c9879386ce6add983f7d8dd307e3189bbeb9f3f861a9da36208085d43aa2e51 ./MariaDB.xcframework/ios-arm64/Headers/ma_list.h +04aa845dc4e3d3ebc24f2c2a85348cbcf2966a9737d024e07a4357416daa75ef ./MariaDB.xcframework/ios-arm64/Headers/ma_priv.h +3a687ea57d3c4119e74562c25adaa066027e2c54613edc713615e74843444924 ./MariaDB.xcframework/ios-arm64/Headers/ma_pthread.h +3be945377a5faacd5509bcfc360a4fb74686593c7dd49466e86849d969c775f8 ./MariaDB.xcframework/ios-arm64/Headers/ma_pvio.h +40aeeebe24b7845157cd514eaf0d7af4a6855729fcbfde40449d95f1ee5b645b ./MariaDB.xcframework/ios-arm64/Headers/ma_server_error.h +97be10b07931792d4b5d5967d7f29eb7c8282cf07972348e2e9b1046ff17696a ./MariaDB.xcframework/ios-arm64/Headers/ma_string.h +59f1775343fce502bddcec39477c49dc40121a480e81f10dae5f08f694f03624 ./MariaDB.xcframework/ios-arm64/Headers/ma_sys.h +432901d6423bc40b0acec288d1b251a3e2f760a1cad9e47be500eed6f6c65822 ./MariaDB.xcframework/ios-arm64/Headers/ma_tls.h +5fcbabe80cf6296024b2af60864e8ce9f7a036ef28c5bf799e1d0fed466a7af0 ./MariaDB.xcframework/ios-arm64/Headers/mariadb_async.h +80a0280ec106e457235c05fecc0813aba194c3bda92bae55ac80ca7099cf184c ./MariaDB.xcframework/ios-arm64/Headers/mariadb_com.h +2dc9d416a719c4b1d4c92c6d346ac5e225338f547e35ac0fe999d722dca73fc0 ./MariaDB.xcframework/ios-arm64/Headers/mariadb_ctype.h +4ee86687d9ddd36d115456da763322df63dafc9f24b0c605d7e13aa3cbe43651 ./MariaDB.xcframework/ios-arm64/Headers/mariadb_dyncol.h +ece38ad6e70b75eba21a5be06efcb835c6ca859aded0cc6a5d732d072939622b ./MariaDB.xcframework/ios-arm64/Headers/mariadb_rpl.h +c4a646f43cfec9c90212a056445c151af764f2c8fa925aade21572fb05c1098f ./MariaDB.xcframework/ios-arm64/Headers/mariadb_stmt.h +1ebe362439e6d3d45e765501b80e3099ff61de94ff81ce14b074db42e2b00fdd ./MariaDB.xcframework/ios-arm64/Headers/mariadb_version.h +2d59a690cd26425fc4ee8f593e3fc609ab525054026088b90b6df517fc3c6442 ./MariaDB.xcframework/ios-arm64/Headers/mysql.h +cf7e800e4f8b8e30502dac76712c43e45857cbda2cbde57d84e95f9e0c44a289 ./MariaDB.xcframework/ios-arm64/Headers/mysqld_error.h +e23df4a80f1b48e89485a8d7b21b653f51486ed6ada28647ffdb06f5d9876ed4 ./MariaDB.xcframework/ios-arm64/libmariadb.a +5e82747a26b4deec6677e1d3bf7c19c5d19c832141af0863221797cca2989c45 ./OpenSSL-Crypto.xcframework/Info.plist +ffb85ddb99db6a132a8621c35c9f749925a3b0db0bee8c156c92c3ab753cf0bd ./OpenSSL-Crypto.xcframework/ios-arm64-simulator/libcrypto.a +77d38c6cf27d380f9e6ca4677b2f19259c4fc4d2be0995e9565a5838376a5e47 ./OpenSSL-Crypto.xcframework/ios-arm64/libcrypto.a +5d6dbd007738d6aa44f93d0979592fafbb8e2f6dc6fed59e73d7f2768e7c4e14 ./OpenSSL-SSL.xcframework/Info.plist +27aaa89367b022b12b66cf52c3c2d68f6761965ac36f3f1153202fa44692ad0e ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/aes.h +61ac1cb5f66cfcb690fe199d25f0d13d217deff7d25ee310a42469e482c64573 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/asn1.h +5a0d1d59316bc398bc63af0f1dcf377fb66c3e3132d4c45400c9dbc2003e24b5 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/asn1_mac.h +50703d11cce3d6defab8d664d3d917c6aaaa9ee677538757b811bbb288d60407 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/asn1err.h +a3c3f5b114cb48eee9fc7a4cabec55c895de8edc592753a46c40c650a90200cb ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/asn1t.h +f0112bd2d6f7ef9d2192f614c7d43bf6a0b3cc8be8f3116ba539b7a6579698a7 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/async.h +154f003cfbf49040a04d9aac459cf5009a5a1d76298b222d66ba5b5a4e3721af ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/asyncerr.h +018773619b871cf69e041541dfd8da88f57e997ac06411cda33113ffa03cd0bf ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/bio.h +fab33e1a3a6d998634e31e86556c7badfae58876c753d10c841e3506edb9bb3e ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/bioerr.h +fb4b19b7730d1cc7ff2b9da1435a506ad0ef50263bd168c5ff24214a06580282 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/blowfish.h +ee24f408eb0e8cdf72e94d6d7fd4a411d3e12824592e493b72764957cf75a58b ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/bn.h +f0dfac26985a7ae40174e90173df9f95b15bba4d3768290746d7258ff1b0ae64 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/bnerr.h +c87b52702746e224e6242f4a2a2070b007502ea92063b41df2c4f6bec11c37ca ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/buffer.h +73f33a7b4406477a0eaf9d0ec42f43b2594167b1d6b84175f378cf5b0de07c12 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/buffererr.h +d1cee6e44668fba0e46c38db7394aa094c6cd2a25b97dbcfcc6f0ff4414f8ebf ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/camellia.h +654ac650ae74ca5e9a87ab46c1205157a7489097d005fdccc4c52912cfcefa55 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/cast.h +b26f8ddb9f60eef2601a84a5455c11060e028d8ce700cae682c4a02ffe2f2ca2 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/cmac.h +feb1e5c746ad2a1e9608a3627bb41b18f719fa1ac54b862c21eef16de730c3ba ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/cmp.h +7a982bac5840812b486176102b1fe8b48dda8cce0fe94f2d35aff5057a99004e ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/cmp_util.h +bda76e86c6c154638d7753a8580ecedfe1c5dc11a17d56194466cdeeb42605b9 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/cmperr.h +1c61054a540dab93ad9558ed059f8e6e245f214a712d0fc7902d886451a57f0c ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/cms.h +2e4c3a676298da7be496b4629b1e90e5bab3ce4bf0cd6662c0fb41cc620ae9cc ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/cmserr.h +190ae5b01ee7b3dbd866afc52c33ac3e2b6c62fb82f6cf8cf917b46b99e8ff68 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/comp.h +851f81212d489813f368757bc9511ccfa76b9cb66024607f3f0d4846a42eb085 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/comperr.h +1d6f02348d19ede34d2150f16b6686f1863c674186ca36da5ff26622777c1889 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/conf.h +a66bcc69464235679980efc4a687a4fe036388da91173809ca45c0a3cfe47a5b ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/conf_api.h +ee8aaa36553894d836b728ce9a52234d22b5d812bbbb75fa09645e7b1011346a ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/conferr.h +2907d49b0afd314702f0fe06c67fe1c245e1d3c952e9a1dabbf12071d1aa5657 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/configuration.h +e8f6697076d2464eaecfe2cdae8d2045388c53da2372fd52df5f6cfdc4d63375 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/conftypes.h +a4a8e73bd642913e2ec268d13460f7bb97aceea59152430483e013775328eb3d ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/core.h +f7babd33f7a00b8addc1e4e7f1159366ba38eba57051d957b89ec20ca2b66bc3 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/core_dispatch.h +1a9bce81895ce1344c67b567961ebb97a50c47159c7eeab661c6e3f51136ec52 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/core_names.h +7a7172d30597e3a3e06c4e67a049d1335aa6f7d5b49641abba8fd4d5a1c07563 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/core_object.h +9bfae0f658a97080c37285ff620d921e3796ff0a3914de7ddd2188dce856c564 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/crmf.h +c08a40103c0c6d0d7d9ad0e2781db1f19829d29193d115d38b4d0271d13fecf9 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/crmferr.h +7baa95e91231b9c211494d267a7b4596ee69fb70deb2bbf79a836441b9daa581 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/crypto.h +b4a370d355fbfaad54f3241044f755c93b2265490f188e877150ec7550fe59ff ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/cryptoerr.h +870042252331e89723d31079469104cafd676f0fedcbe0d99f56f3e8862fff8d ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/cryptoerr_legacy.h +fbba6b170db9bab806ee2427516237a8dc8328c22277ecbd7456afc52a1ba403 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ct.h +562bfe4ac984ebfef4fb91bdbe0a649d157f5057ab61ffee3a844d23f7c72c0a ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/cterr.h +8419fd9e4e333fd477238bbad4ff875d5657b02cc39635c3a5c15f3a5bc7f0f2 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/decoder.h +a785fb95930e8b4a18054f77b7d5143d44673f4ca57682899bc2bf3464cafccf ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/decodererr.h +bb13c7c5e13f3402d674fa88994b92ed72d6cdc1116707765d28bd7e0de31285 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/des.h +d834937ef536956fffe4f567745a1736714ffec4c4cf248d94c910b1748b14cf ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/dh.h +9a9878ebd561a4fb1d38c8157d511f5de0893ac7b928f33b5cc52450bcc41a9d ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/dherr.h +3e9b65a16899dd737b4c8fa99bd94f0cf94dcfb6ebea4a24e7b21fc92e409e46 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/dsa.h +69c2ecff5f62898461bc521ea918abd2a673206dd5e8d43288ad25d2c012f163 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/dsaerr.h +1d1f404032a9eb31408c1f10bdff554d5740fb345b64b86fb74da8df95fbd901 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/dtls1.h +3eb5b2ed396dfb68e10acb59f714732be4941d17a97ebb659768c570da6fad0a ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/e_os2.h +587a7593925c8d5b2f0dc3060904e3a4a7472be0ebc7dbfe2f6af6e40eb8bcc7 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/e_ostime.h +75a668c25c97853d5ba37ebce060a15152573242e3729d42830eba1daa642404 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ebcdic.h +0b028cf04ba8769a693f022725c91ef902a9e31f12a950180d1b4e8fa6952ff2 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ec.h +5b99fdd1dfea38640ed8a506fb9b66db381cc26a1254448a81cc6b161e41850f ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ecdh.h +5b99fdd1dfea38640ed8a506fb9b66db381cc26a1254448a81cc6b161e41850f ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ecdsa.h +ce4fec7ee41de25a20abb7a9f00fe93305793a7bd2023d434b9aa6f64f91058a ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ecerr.h +907d2f061c2972447d3f0c1cfc149c78791b1e4bdc131ad5a3eed1d084c76b41 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/encoder.h +63504766e9fcf36fe1527d95fe21460574896da187c60707bfa68254a35693b7 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/encodererr.h +b48e5406717b26f41085dad8cc553e78c6cc54ea936df8ff1aa1312f32a6c053 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/engine.h +8616a93b1b1bd8d1221844834817c28b7da78be1649a5b1780d9ea65fba8807c ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/engineerr.h +ded6c6c9a2653c32894f98c309aeffad387b62cee09855da2836618b6152906c ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/err.h +9da64664080d13f1f541f425dbac6305159d6c47309121427d77c67744c88de0 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ess.h +e791193e891b0784670d5410539aeea9d2a8591de71495b4add6e7dbf9dc22cd ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/esserr.h +98a276b8a6031904b9b42d871360d8b1bb78a70a9d1c54b46bab62f9fa5fcffb ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/evp.h +3f7190ff45e64cc29b55d73d62350f8344c085c18891a8a6f9752e807e9b242c ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/evperr.h +dbf5cbac0cae8cc273cc3fd0d9a855194bcd8d1110c3f5a9456d3f2edfe2770b ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/fips_names.h +5a8ffd2448061c84808ecf27795ddd1d390a67d7a22b856e31e8a38d8201a218 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/fipskey.h +e49fbe0086f8fbefa5648eef70bc84e8090a9226a1e3c6e856499373004aed0a ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/hmac.h +99947ae58970eacf9b8453d7ef6c2c908cf1a61a28eaf5c3456eb95bd0aefd93 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/hpke.h +6fc1fa843e64e476ec255979fecaf3402b3c5d9b6a775e53b06ba210736c1e1b ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/http.h +7b8903c4048411d4541a64f47e9479eeb4715d03b835f2244206648a48422c97 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/httperr.h +239122df15e738d7552dd76850c55a9ffe0136f33506c23d9058215a1255af66 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/idea.h +a978c859885ddbb45a2da177bf13e47c91b49930e6c03464f8a8104aa6b12dff ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/indicator.h +41756fe038443d1d270458d53d6e42ea78d12d980728b6a9284fa259958ea00a ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/kdf.h +3d9f27fffdb49e0ece9d5a62adbb9cc42c56262b00cc8ce7f956b2cb05a2a22d ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/kdferr.h +b28cfde0ad6480dafd7d36c737af49b1516341437a311cd69ef023d4d8879807 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/lhash.h +b7a29071e54e710e9c3a8c2df91810923f2b7be3896dd8e2754069a891fea2f9 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/macros.h +4add77ed047736979dc442a49d42921cce21e654a2dceef058d0191aa2d3c941 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/md2.h +0472e597d139b44dd7d78d9093a5d8109417d18e9955fc940f1ea3e2e892ab44 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/md4.h +308c901ec1a28f9b0098717f689ca63e104ce805050802d38b8f122d85ab2c78 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/md5.h +42b844c9ae9e00e7c0b0e28858b8b3db7b8abf7e514e5e63f43456371ed3384b ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/mdc2.h +4a8b3b1dafc15798a3b2bef0e3885275746e7fae73a0d96e55da55261554ba52 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/modes.h +abb32104ed1ce52545239e3014a1f3df0b3cd7913c366bfbee0a298a4b65d2b5 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/obj_mac.h +9f04a6f480aa7af7a6cd6563c712818799cbb12e99061f57b46a72060909ef90 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/objects.h +e17a8d7f62a1ef257fd90e604d4293bf02d5f81ae8198efe1e197c5b27baeb8c ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/objectserr.h +0e229d683a7e716a3834157218f692f0db7996f4b473da08c57ffdffbd661eb3 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ocsp.h +178329cfc042d3f1eb6e179206d844de41ba05ee4ac0ed9e3e6c861fb49d68ea ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ocsperr.h +890184233890bacd52fd420fef07befad411b9a318b97efbf36f46673d3e7841 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/opensslconf.h +03cd60b5f285cd2b89fc463f90bc5937bf5415497f2558f0605f98a4a63da5ba ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/opensslv.h +76cb203ef3bcd305f4171e1d33f3f3319dee6354c2433493e5e9068aa79672fd ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ossl_typ.h +3bf39b1037256466f1a89868621b2b62f1d05e63064159e60727041b170d55e3 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/param_build.h +10d8e0157e339ee01f3b9c60c4b5bc60e6d4edce1084f0c9589ff75bf3a9f693 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/params.h +be8d9226118a01137e96e99f0f4f5e6e309b466c15085d41b5717b06fbf28557 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/pem.h +a34a1607983b5f32be8ca49e75c3b41f1c9413b4eb777af144958283ecbd3922 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/pem2.h +843df90b1b434eed626bb6b8bccd5f6ed530e592d706584f56a725d254d8a5d2 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/pemerr.h +b21363b6cbc18c07d3256c69858ff892479821d61d3d34291f4595866743a510 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/pkcs12.h +fa281e5b93652e6c2c31393f62539d5252c125a4b1c4214f21fa321bd033da10 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/pkcs12err.h +7e6e452d7fa0430f1a845dc5ee2598f635657e6ad29cbb85ed7e2f4f08863784 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/pkcs7.h +9fe7a51f3de13b1fd03b319c64b8bd287164eb6ce7d3481994141c0be51396d5 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/pkcs7err.h +31ded7f804f341c01c2f305187d1cf76daebe4426a1c6b4d2abc2b12d6e2d090 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/prov_ssl.h +bade856040b76e8e26ba9627085c77dee3e7807f85913da122b571545899a78b ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/proverr.h +1447ea059af6d57fe7101909f551667ffef85d43ebac74b668ff39ce7de7a13c ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/provider.h +e12a9265850bdc44f959cb7b33e641c888de22bdfbd31a1258679b1af15e2ced ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/quic.h +3ac0539d994400546be2710e3be80b4b8ea28772c06d549d514fc305e0aa077b ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/rand.h +455f8ca7562cbb97dc3d7f8ce2ce27a404ac2ae3a6d7219d45c48c54bc80f910 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/randerr.h +08c6865d169a300e8bc818bd810f80ffb8a21d69e97dad88e400b586d0f3e965 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/rc2.h +ea45836c253246c1d6f1b16b360dbb59322e26e28bfc54881d698e7cd5057666 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/rc4.h +968c96ead08204edb8148981094700cbc3338ed0613c4469da5ab4675fa1ce29 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/rc5.h +2e28edeb6613516db89e28c9d962301f4fe7b38366ebdd1d35933f3491d57b9d ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ripemd.h +c30eeea9aef005afac36c1ec5565d4069194c088cb7a22930d7ba0ed814d7402 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/rsa.h +a745e6b2835af7bb933e78870a270d51ab33778fe10a5cd377422d4b9587dcf0 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/rsaerr.h +19ee08576dd9663c91a68ead50a8de4da6c6eb80bc67526b59015c766ddfec33 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/safestack.h +0d6d206f240f7bd6fa28cd4ec66b2b878f199af3ce6eda172af9fe31ebb71586 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/seed.h +6885b0c4f12442eb22f6cad3394d417f1b3e35075f927437d16e11943c8c6af5 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/self_test.h +553407b2787ef08f69396973063de06340097cb7e4c1569265a533b3567e1856 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/sha.h +7f8fe9346e7b96fffab973029ebc955c6bb89e7556391281b0dd49205d49e33c ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/srp.h +20ddd75f9579087b24339e12c14b11939bca462e3cbc2e4b1867773407d6162a ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/srtp.h +9f286d238c147287b0784762a8144ab78ef52832b6a4508a4e94025ed90d284a ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ssl.h +92e3330e2867bf17d3b305ba0f6fe6b073ad4bdb9db519e4224bbd993f1e9cb7 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ssl2.h +f901dfcb95371c404b9e8b67d36ef2413a915447bd306e0f96237c97867a6146 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ssl3.h +1f46eba8debbc53efb2ec5fc2b7a7d63e8909a522a1a3d8ab310956c411c0eed ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/sslerr.h +4323bb82ce04ab284a35826707dcd4b838109344a1bc12d09e29ba1ed8bfd197 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/sslerr_legacy.h +69f94382a15a3c4cfd1dda32108db5234727b36ed0e25f1fb12e0993c7b5ac95 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/stack.h +233e1f210c4757fc5e221a0727c938429078bc04e22376528b0fcf3f7307ac9b ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/store.h +370277e107a1b979ff5e0bd28f5adb92e066d41831ac37ce7108d2a1b84376f6 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/storeerr.h +68b54776fa15943f3f018be6c7dc7a8847c9f512fb5eeec4f093804197dc2dfa ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/symhacks.h +9390db912ff47887ff9cfba47b982379dc4a965fb2d085a2f34dc27141c07406 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/thread.h +6ac9841cbc4ee173345e2654a61d1007b9b1d296eb431bc3e9f376bf079d2712 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/tls1.h +f49ed49126448972dc92b38aa6a224d9bd8a738ef6b037116f5e0a7f8065a9db ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/trace.h +939496fec1e3d8c592f11ec49bd6d0dd13b0ba190b79b6c566a487196102585c ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ts.h +0d851cb9db84c48bb8a9871a988950fd0b62ecc854b11641e3e9a07fa191a6f6 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/tserr.h +1a6a6b331ef3cc6c632f782e8da2fa81aaeeac56e4d0b2fb3016f936805be257 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/txt_db.h +a31a95347d84dc6821c2fef7d76dcaae385814ec04458b0c6891e8c0220d8ba4 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/types.h +71663d97e048fd14e4652af8402acb72200784b1940bd70b39b442c6d5c99bd9 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/ui.h +6f46dc9509b4d10802aaa1ad3c84763a2843312fdc8dd8add5c7b24e7f0c877f ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/uierr.h +bb8f9f6ad1960e87f78363793130a0c1bee89b64a12eb32e939791fb0ca61016 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/whrlpool.h +b2b6df993589dcad52dfe8f54d021bce17bf63f18f377f16dfe1aa10c21dad82 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/x509.h +040eb9b6545e02fd08145babb1ed84b93aa3f406986e7cda4b63c767945fce58 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/x509_acert.h +dc48fc53e75df19b193b6e61a585c89f6dfc78c7b48f39a370c5e420dedb5662 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/x509_vfy.h +4e9a934927f37a70ee71b8ad7dcb6da3de409b0acc9eafb861a3183ba73578eb ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/x509err.h +f4178ec05f949057a471f61670c33c83c3959ffe3a3c3f9aee5d0c71288de590 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/x509v3.h +294e1a37440b7d5fa1b780c385353f3e9aeb5eddcb6cca73d44bf4186698ee57 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/Headers/openssl/x509v3err.h +ce0369760716a1823dc2e3b81fc17ad8565124845d7715e6dd6a86be28e95be0 ./OpenSSL-SSL.xcframework/ios-arm64-simulator/libssl.a +27aaa89367b022b12b66cf52c3c2d68f6761965ac36f3f1153202fa44692ad0e ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/aes.h +61ac1cb5f66cfcb690fe199d25f0d13d217deff7d25ee310a42469e482c64573 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/asn1.h +5a0d1d59316bc398bc63af0f1dcf377fb66c3e3132d4c45400c9dbc2003e24b5 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/asn1_mac.h +50703d11cce3d6defab8d664d3d917c6aaaa9ee677538757b811bbb288d60407 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/asn1err.h +a3c3f5b114cb48eee9fc7a4cabec55c895de8edc592753a46c40c650a90200cb ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/asn1t.h +f0112bd2d6f7ef9d2192f614c7d43bf6a0b3cc8be8f3116ba539b7a6579698a7 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/async.h +154f003cfbf49040a04d9aac459cf5009a5a1d76298b222d66ba5b5a4e3721af ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/asyncerr.h +018773619b871cf69e041541dfd8da88f57e997ac06411cda33113ffa03cd0bf ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/bio.h +fab33e1a3a6d998634e31e86556c7badfae58876c753d10c841e3506edb9bb3e ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/bioerr.h +fb4b19b7730d1cc7ff2b9da1435a506ad0ef50263bd168c5ff24214a06580282 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/blowfish.h +ee24f408eb0e8cdf72e94d6d7fd4a411d3e12824592e493b72764957cf75a58b ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/bn.h +f0dfac26985a7ae40174e90173df9f95b15bba4d3768290746d7258ff1b0ae64 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/bnerr.h +c87b52702746e224e6242f4a2a2070b007502ea92063b41df2c4f6bec11c37ca ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/buffer.h +73f33a7b4406477a0eaf9d0ec42f43b2594167b1d6b84175f378cf5b0de07c12 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/buffererr.h +d1cee6e44668fba0e46c38db7394aa094c6cd2a25b97dbcfcc6f0ff4414f8ebf ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/camellia.h +654ac650ae74ca5e9a87ab46c1205157a7489097d005fdccc4c52912cfcefa55 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/cast.h +b26f8ddb9f60eef2601a84a5455c11060e028d8ce700cae682c4a02ffe2f2ca2 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/cmac.h +feb1e5c746ad2a1e9608a3627bb41b18f719fa1ac54b862c21eef16de730c3ba ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/cmp.h +7a982bac5840812b486176102b1fe8b48dda8cce0fe94f2d35aff5057a99004e ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/cmp_util.h +bda76e86c6c154638d7753a8580ecedfe1c5dc11a17d56194466cdeeb42605b9 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/cmperr.h +1c61054a540dab93ad9558ed059f8e6e245f214a712d0fc7902d886451a57f0c ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/cms.h +2e4c3a676298da7be496b4629b1e90e5bab3ce4bf0cd6662c0fb41cc620ae9cc ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/cmserr.h +190ae5b01ee7b3dbd866afc52c33ac3e2b6c62fb82f6cf8cf917b46b99e8ff68 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/comp.h +851f81212d489813f368757bc9511ccfa76b9cb66024607f3f0d4846a42eb085 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/comperr.h +1d6f02348d19ede34d2150f16b6686f1863c674186ca36da5ff26622777c1889 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/conf.h +a66bcc69464235679980efc4a687a4fe036388da91173809ca45c0a3cfe47a5b ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/conf_api.h +ee8aaa36553894d836b728ce9a52234d22b5d812bbbb75fa09645e7b1011346a ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/conferr.h +7c2f49482ab9f323e6f65c1544948a2c3059fec87569a5434b92fc2711663ab3 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/configuration.h +e8f6697076d2464eaecfe2cdae8d2045388c53da2372fd52df5f6cfdc4d63375 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/conftypes.h +a4a8e73bd642913e2ec268d13460f7bb97aceea59152430483e013775328eb3d ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/core.h +f7babd33f7a00b8addc1e4e7f1159366ba38eba57051d957b89ec20ca2b66bc3 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/core_dispatch.h +1a9bce81895ce1344c67b567961ebb97a50c47159c7eeab661c6e3f51136ec52 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/core_names.h +7a7172d30597e3a3e06c4e67a049d1335aa6f7d5b49641abba8fd4d5a1c07563 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/core_object.h +9bfae0f658a97080c37285ff620d921e3796ff0a3914de7ddd2188dce856c564 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/crmf.h +c08a40103c0c6d0d7d9ad0e2781db1f19829d29193d115d38b4d0271d13fecf9 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/crmferr.h +7baa95e91231b9c211494d267a7b4596ee69fb70deb2bbf79a836441b9daa581 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/crypto.h +b4a370d355fbfaad54f3241044f755c93b2265490f188e877150ec7550fe59ff ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/cryptoerr.h +870042252331e89723d31079469104cafd676f0fedcbe0d99f56f3e8862fff8d ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/cryptoerr_legacy.h +fbba6b170db9bab806ee2427516237a8dc8328c22277ecbd7456afc52a1ba403 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ct.h +562bfe4ac984ebfef4fb91bdbe0a649d157f5057ab61ffee3a844d23f7c72c0a ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/cterr.h +8419fd9e4e333fd477238bbad4ff875d5657b02cc39635c3a5c15f3a5bc7f0f2 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/decoder.h +a785fb95930e8b4a18054f77b7d5143d44673f4ca57682899bc2bf3464cafccf ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/decodererr.h +bb13c7c5e13f3402d674fa88994b92ed72d6cdc1116707765d28bd7e0de31285 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/des.h +d834937ef536956fffe4f567745a1736714ffec4c4cf248d94c910b1748b14cf ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/dh.h +9a9878ebd561a4fb1d38c8157d511f5de0893ac7b928f33b5cc52450bcc41a9d ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/dherr.h +3e9b65a16899dd737b4c8fa99bd94f0cf94dcfb6ebea4a24e7b21fc92e409e46 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/dsa.h +69c2ecff5f62898461bc521ea918abd2a673206dd5e8d43288ad25d2c012f163 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/dsaerr.h +1d1f404032a9eb31408c1f10bdff554d5740fb345b64b86fb74da8df95fbd901 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/dtls1.h +3eb5b2ed396dfb68e10acb59f714732be4941d17a97ebb659768c570da6fad0a ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/e_os2.h +587a7593925c8d5b2f0dc3060904e3a4a7472be0ebc7dbfe2f6af6e40eb8bcc7 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/e_ostime.h +75a668c25c97853d5ba37ebce060a15152573242e3729d42830eba1daa642404 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ebcdic.h +0b028cf04ba8769a693f022725c91ef902a9e31f12a950180d1b4e8fa6952ff2 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ec.h +5b99fdd1dfea38640ed8a506fb9b66db381cc26a1254448a81cc6b161e41850f ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ecdh.h +5b99fdd1dfea38640ed8a506fb9b66db381cc26a1254448a81cc6b161e41850f ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ecdsa.h +ce4fec7ee41de25a20abb7a9f00fe93305793a7bd2023d434b9aa6f64f91058a ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ecerr.h +907d2f061c2972447d3f0c1cfc149c78791b1e4bdc131ad5a3eed1d084c76b41 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/encoder.h +63504766e9fcf36fe1527d95fe21460574896da187c60707bfa68254a35693b7 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/encodererr.h +b48e5406717b26f41085dad8cc553e78c6cc54ea936df8ff1aa1312f32a6c053 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/engine.h +8616a93b1b1bd8d1221844834817c28b7da78be1649a5b1780d9ea65fba8807c ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/engineerr.h +ded6c6c9a2653c32894f98c309aeffad387b62cee09855da2836618b6152906c ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/err.h +9da64664080d13f1f541f425dbac6305159d6c47309121427d77c67744c88de0 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ess.h +e791193e891b0784670d5410539aeea9d2a8591de71495b4add6e7dbf9dc22cd ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/esserr.h +98a276b8a6031904b9b42d871360d8b1bb78a70a9d1c54b46bab62f9fa5fcffb ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/evp.h +3f7190ff45e64cc29b55d73d62350f8344c085c18891a8a6f9752e807e9b242c ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/evperr.h +dbf5cbac0cae8cc273cc3fd0d9a855194bcd8d1110c3f5a9456d3f2edfe2770b ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/fips_names.h +5a8ffd2448061c84808ecf27795ddd1d390a67d7a22b856e31e8a38d8201a218 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/fipskey.h +e49fbe0086f8fbefa5648eef70bc84e8090a9226a1e3c6e856499373004aed0a ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/hmac.h +99947ae58970eacf9b8453d7ef6c2c908cf1a61a28eaf5c3456eb95bd0aefd93 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/hpke.h +6fc1fa843e64e476ec255979fecaf3402b3c5d9b6a775e53b06ba210736c1e1b ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/http.h +7b8903c4048411d4541a64f47e9479eeb4715d03b835f2244206648a48422c97 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/httperr.h +239122df15e738d7552dd76850c55a9ffe0136f33506c23d9058215a1255af66 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/idea.h +a978c859885ddbb45a2da177bf13e47c91b49930e6c03464f8a8104aa6b12dff ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/indicator.h +41756fe038443d1d270458d53d6e42ea78d12d980728b6a9284fa259958ea00a ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/kdf.h +3d9f27fffdb49e0ece9d5a62adbb9cc42c56262b00cc8ce7f956b2cb05a2a22d ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/kdferr.h +b28cfde0ad6480dafd7d36c737af49b1516341437a311cd69ef023d4d8879807 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/lhash.h +b7a29071e54e710e9c3a8c2df91810923f2b7be3896dd8e2754069a891fea2f9 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/macros.h +4add77ed047736979dc442a49d42921cce21e654a2dceef058d0191aa2d3c941 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/md2.h +0472e597d139b44dd7d78d9093a5d8109417d18e9955fc940f1ea3e2e892ab44 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/md4.h +308c901ec1a28f9b0098717f689ca63e104ce805050802d38b8f122d85ab2c78 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/md5.h +42b844c9ae9e00e7c0b0e28858b8b3db7b8abf7e514e5e63f43456371ed3384b ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/mdc2.h +4a8b3b1dafc15798a3b2bef0e3885275746e7fae73a0d96e55da55261554ba52 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/modes.h +abb32104ed1ce52545239e3014a1f3df0b3cd7913c366bfbee0a298a4b65d2b5 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/obj_mac.h +9f04a6f480aa7af7a6cd6563c712818799cbb12e99061f57b46a72060909ef90 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/objects.h +e17a8d7f62a1ef257fd90e604d4293bf02d5f81ae8198efe1e197c5b27baeb8c ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/objectserr.h +0e229d683a7e716a3834157218f692f0db7996f4b473da08c57ffdffbd661eb3 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ocsp.h +178329cfc042d3f1eb6e179206d844de41ba05ee4ac0ed9e3e6c861fb49d68ea ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ocsperr.h +890184233890bacd52fd420fef07befad411b9a318b97efbf36f46673d3e7841 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/opensslconf.h +03cd60b5f285cd2b89fc463f90bc5937bf5415497f2558f0605f98a4a63da5ba ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/opensslv.h +76cb203ef3bcd305f4171e1d33f3f3319dee6354c2433493e5e9068aa79672fd ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ossl_typ.h +3bf39b1037256466f1a89868621b2b62f1d05e63064159e60727041b170d55e3 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/param_build.h +10d8e0157e339ee01f3b9c60c4b5bc60e6d4edce1084f0c9589ff75bf3a9f693 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/params.h +be8d9226118a01137e96e99f0f4f5e6e309b466c15085d41b5717b06fbf28557 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/pem.h +a34a1607983b5f32be8ca49e75c3b41f1c9413b4eb777af144958283ecbd3922 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/pem2.h +843df90b1b434eed626bb6b8bccd5f6ed530e592d706584f56a725d254d8a5d2 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/pemerr.h +b21363b6cbc18c07d3256c69858ff892479821d61d3d34291f4595866743a510 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/pkcs12.h +fa281e5b93652e6c2c31393f62539d5252c125a4b1c4214f21fa321bd033da10 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/pkcs12err.h +7e6e452d7fa0430f1a845dc5ee2598f635657e6ad29cbb85ed7e2f4f08863784 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/pkcs7.h +9fe7a51f3de13b1fd03b319c64b8bd287164eb6ce7d3481994141c0be51396d5 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/pkcs7err.h +31ded7f804f341c01c2f305187d1cf76daebe4426a1c6b4d2abc2b12d6e2d090 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/prov_ssl.h +bade856040b76e8e26ba9627085c77dee3e7807f85913da122b571545899a78b ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/proverr.h +1447ea059af6d57fe7101909f551667ffef85d43ebac74b668ff39ce7de7a13c ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/provider.h +e12a9265850bdc44f959cb7b33e641c888de22bdfbd31a1258679b1af15e2ced ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/quic.h +3ac0539d994400546be2710e3be80b4b8ea28772c06d549d514fc305e0aa077b ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/rand.h +455f8ca7562cbb97dc3d7f8ce2ce27a404ac2ae3a6d7219d45c48c54bc80f910 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/randerr.h +08c6865d169a300e8bc818bd810f80ffb8a21d69e97dad88e400b586d0f3e965 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/rc2.h +ea45836c253246c1d6f1b16b360dbb59322e26e28bfc54881d698e7cd5057666 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/rc4.h +968c96ead08204edb8148981094700cbc3338ed0613c4469da5ab4675fa1ce29 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/rc5.h +2e28edeb6613516db89e28c9d962301f4fe7b38366ebdd1d35933f3491d57b9d ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ripemd.h +c30eeea9aef005afac36c1ec5565d4069194c088cb7a22930d7ba0ed814d7402 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/rsa.h +a745e6b2835af7bb933e78870a270d51ab33778fe10a5cd377422d4b9587dcf0 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/rsaerr.h +19ee08576dd9663c91a68ead50a8de4da6c6eb80bc67526b59015c766ddfec33 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/safestack.h +0d6d206f240f7bd6fa28cd4ec66b2b878f199af3ce6eda172af9fe31ebb71586 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/seed.h +6885b0c4f12442eb22f6cad3394d417f1b3e35075f927437d16e11943c8c6af5 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/self_test.h +553407b2787ef08f69396973063de06340097cb7e4c1569265a533b3567e1856 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/sha.h +7f8fe9346e7b96fffab973029ebc955c6bb89e7556391281b0dd49205d49e33c ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/srp.h +20ddd75f9579087b24339e12c14b11939bca462e3cbc2e4b1867773407d6162a ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/srtp.h +9f286d238c147287b0784762a8144ab78ef52832b6a4508a4e94025ed90d284a ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ssl.h +92e3330e2867bf17d3b305ba0f6fe6b073ad4bdb9db519e4224bbd993f1e9cb7 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ssl2.h +f901dfcb95371c404b9e8b67d36ef2413a915447bd306e0f96237c97867a6146 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ssl3.h +1f46eba8debbc53efb2ec5fc2b7a7d63e8909a522a1a3d8ab310956c411c0eed ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/sslerr.h +4323bb82ce04ab284a35826707dcd4b838109344a1bc12d09e29ba1ed8bfd197 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/sslerr_legacy.h +69f94382a15a3c4cfd1dda32108db5234727b36ed0e25f1fb12e0993c7b5ac95 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/stack.h +233e1f210c4757fc5e221a0727c938429078bc04e22376528b0fcf3f7307ac9b ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/store.h +370277e107a1b979ff5e0bd28f5adb92e066d41831ac37ce7108d2a1b84376f6 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/storeerr.h +68b54776fa15943f3f018be6c7dc7a8847c9f512fb5eeec4f093804197dc2dfa ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/symhacks.h +9390db912ff47887ff9cfba47b982379dc4a965fb2d085a2f34dc27141c07406 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/thread.h +6ac9841cbc4ee173345e2654a61d1007b9b1d296eb431bc3e9f376bf079d2712 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/tls1.h +f49ed49126448972dc92b38aa6a224d9bd8a738ef6b037116f5e0a7f8065a9db ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/trace.h +939496fec1e3d8c592f11ec49bd6d0dd13b0ba190b79b6c566a487196102585c ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ts.h +0d851cb9db84c48bb8a9871a988950fd0b62ecc854b11641e3e9a07fa191a6f6 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/tserr.h +1a6a6b331ef3cc6c632f782e8da2fa81aaeeac56e4d0b2fb3016f936805be257 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/txt_db.h +a31a95347d84dc6821c2fef7d76dcaae385814ec04458b0c6891e8c0220d8ba4 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/types.h +71663d97e048fd14e4652af8402acb72200784b1940bd70b39b442c6d5c99bd9 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/ui.h +6f46dc9509b4d10802aaa1ad3c84763a2843312fdc8dd8add5c7b24e7f0c877f ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/uierr.h +bb8f9f6ad1960e87f78363793130a0c1bee89b64a12eb32e939791fb0ca61016 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/whrlpool.h +b2b6df993589dcad52dfe8f54d021bce17bf63f18f377f16dfe1aa10c21dad82 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/x509.h +040eb9b6545e02fd08145babb1ed84b93aa3f406986e7cda4b63c767945fce58 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/x509_acert.h +dc48fc53e75df19b193b6e61a585c89f6dfc78c7b48f39a370c5e420dedb5662 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/x509_vfy.h +4e9a934927f37a70ee71b8ad7dcb6da3de409b0acc9eafb861a3183ba73578eb ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/x509err.h +f4178ec05f949057a471f61670c33c83c3959ffe3a3c3f9aee5d0c71288de590 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/x509v3.h +294e1a37440b7d5fa1b780c385353f3e9aeb5eddcb6cca73d44bf4186698ee57 ./OpenSSL-SSL.xcframework/ios-arm64/Headers/openssl/x509v3err.h +45dff18a32dafc5970d897d452044a12f55d31dfc0ca12e36db3bcfb78fef892 ./OpenSSL-SSL.xcframework/ios-arm64/libssl.a diff --git a/scripts/download-libs.sh b/scripts/download-libs.sh index c7af7fbf0..b9e11e8e6 100755 --- a/scripts/download-libs.sh +++ b/scripts/download-libs.sh @@ -1,121 +1,113 @@ #!/usr/bin/env bash set -euo pipefail -# Download pre-built static libraries from GitHub Releases +# Download the pre-built static libraries from GitHub Releases. # Usage: scripts/download-libs.sh [--force] # -# Libraries are hosted as a tar.gz on the "libs-v1" release tag -# to avoid Git LFS bandwidth limits. +# Libraries are hosted as tarballs on the "libs-v1" release tag rather than in git, to avoid +# Git LFS bandwidth limits. Two archives: the macOS .a files, and the iOS xcframeworks. +# +# Whatever ends up in Libs/ is verified against the baseline committed in git, on every run, +# including runs that download nothing. These libraries are force_loaded into a signed and +# notarized app, so "we already have some files, skip the check" is not a safe shortcut. REPO="TableProApp/TablePro" LIBS_TAG="libs-v1" LIBS_ARCHIVE="tablepro-libs-v1.tar.gz" +IOS_ARCHIVE="tablepro-libs-ios-v1.tar.gz" LIBS_DIR="Libs" +IOS_DIR="$LIBS_DIR/ios" MARKER="$LIBS_DIR/.downloaded" +IOS_MARKER="$IOS_DIR/.downloaded" +FORCE="${1:-}" -# Skip if already downloaded (unless --force) -if [[ -f "$MARKER" && "${1:-}" != "--force" ]]; then - echo "Libraries already downloaded. Use --force to re-download." - exit 0 -fi +WORK="$(mktemp -d)" +trap 'rm -rf "$WORK"' EXIT -# Check if libs already exist (local development) -LIB_COUNT=$(find "$LIBS_DIR" -name '*.a' 2>/dev/null | wc -l | tr -d ' ') -if [[ "$LIB_COUNT" -gt 0 && "${1:-}" != "--force" ]]; then - echo "Found $LIB_COUNT .a files in $LIBS_DIR โ€” skipping download." - echo "Use --force to re-download." - exit 0 -fi +# The baseline comes from git, never from the extracted copy. Each archive bundles its own +# checksums file and extraction overwrites the working one, so verifying against that is +# self-referential: a tampered release ships matching checksums and passes. Captured up front, +# before anything is extracted, for the same reason. +capture_baseline() { + local tracked="$1" out="$2" + git rev-parse --is-inside-work-tree &> /dev/null || return 0 + git cat-file -e "HEAD:$tracked" 2> /dev/null || return 0 + git show "HEAD:$tracked" > "$out" +} -echo "Downloading static libraries from $REPO@$LIBS_TAG..." +capture_baseline "$LIBS_DIR/checksums.sha256" "$WORK/macos-baseline" +capture_baseline "$IOS_DIR/checksums.sha256" "$WORK/ios-baseline" -# Download using gh CLI if available, otherwise curl -if command -v gh &>/dev/null; then - gh release download "$LIBS_TAG" \ - --repo "$REPO" \ - --pattern "$LIBS_ARCHIVE" \ - --dir /tmp \ - --clobber -else - DOWNLOAD_URL="https://github.com/$REPO/releases/download/$LIBS_TAG/$LIBS_ARCHIVE" - echo "Downloading from $DOWNLOAD_URL" - curl -fSL -o "/tmp/$LIBS_ARCHIVE" "$DOWNLOAD_URL" -fi +fetch() { + local archive="$1" dest="$2" + if command -v gh &> /dev/null; then + gh release download "$LIBS_TAG" --repo "$REPO" --pattern "$archive" --dir "$dest" --clobber + else + curl -fSL -o "$dest/$archive" "https://github.com/$REPO/releases/download/$LIBS_TAG/$archive" + fi +} -# Capture the trusted checksum baseline from git BEFORE extraction. The archive -# bundles its own checksums.sha256, and extraction overwrites Libs/checksums.sha256 -# with that copy, so verifying against the extracted file is self-referential: a -# tampered release ships matching checksums and passes. The committed baseline -# (Libs/checksums.sha256 at HEAD) is the only trusted reference. -TRUSTED_CHECKSUMS="" -if git rev-parse --is-inside-work-tree &>/dev/null \ - && git cat-file -e "HEAD:$LIBS_DIR/checksums.sha256" 2>/dev/null; then - TRUSTED_CHECKSUMS="$(mktemp)" - git show "HEAD:$LIBS_DIR/checksums.sha256" > "$TRUSTED_CHECKSUMS" -fi +# The two baselines use different path conventions, so each names the directory to run from: +# Libs/checksums.sha256 holds "Libs/..." paths and is checked from the repo root, while +# Libs/ios/checksums.sha256 holds "./..." paths and is checked from inside Libs/ios. +verify() { + local run_from="$1" dir="$2" baseline="$3" label="$4" + if [[ ! -s "$baseline" ]]; then + echo "WARNING: no trusted $label baseline at HEAD; skipping integrity verification." >&2 + return 0 + fi + echo "Verifying $label against the baseline committed in git..." + if (cd "$run_from" && shasum -a 256 -c "$baseline" --quiet 2> /dev/null); then + echo " $label OK" + return 0 + fi + echo "ERROR: $dir does not match the checksums committed in git." >&2 + echo " The archive may be corrupt or tampered with." >&2 + echo " If you rebuilt a library on purpose, publish it so the baseline moves with it:" >&2 + echo " scripts/publish-libs.sh .a for the macOS libraries" >&2 + echo " scripts/publish-ios-libs.sh for the iOS xcframeworks" >&2 + return 1 +} -echo "Extracting to $LIBS_DIR/..." -mkdir -p "$LIBS_DIR" -tar xzf "/tmp/$LIBS_ARCHIVE" -C "$LIBS_DIR" -rm -f "/tmp/$LIBS_ARCHIVE" +# --- macOS static libraries --- -# Verify the extracted libraries against the trusted git baseline, never the -# archive's own bundled checksum file. -if [[ -n "$TRUSTED_CHECKSUMS" ]]; then - echo "Verifying checksums against the baseline committed in git..." - if shasum -a 256 -c "$TRUSTED_CHECKSUMS" --quiet 2>/dev/null; then - echo "Checksums OK" - rm -f "$TRUSTED_CHECKSUMS" - else - rm -f "$TRUSTED_CHECKSUMS" - echo "ERROR: extracted libraries do not match Libs/checksums.sha256 committed in git." - echo "The downloaded archive may be corrupt or tampered with. Aborting." - exit 1 - fi +if [[ -f "$MARKER" && "$FORCE" != "--force" ]]; then + echo "macOS libraries already present." +elif [[ "$(find "$LIBS_DIR" -maxdepth 1 -name '*.a' 2> /dev/null | wc -l | tr -d ' ')" -gt 0 && "$FORCE" != "--force" ]]; then + echo "Found existing .a files in $LIBS_DIR." else - echo "WARNING: no trusted checksum baseline found (not a git checkout, or" - echo " Libs/checksums.sha256 is absent at HEAD). Skipping integrity" - echo " verification. The archive's own checksum file is NOT trusted." + echo "Downloading macOS static libraries from $REPO@$LIBS_TAG..." + fetch "$LIBS_ARCHIVE" "$WORK" + mkdir -p "$LIBS_DIR" + tar xzf "$WORK/$LIBS_ARCHIVE" -C "$LIBS_DIR" + touch "$MARKER" + echo "Downloaded $(find "$LIBS_DIR" -maxdepth 1 -name '*.a' | wc -l | tr -d ' ') static libraries." fi -# Mark as downloaded -touch "$MARKER" +verify "." "$LIBS_DIR" "$WORK/macos-baseline" "macOS libraries" -LIB_COUNT=$(find "$LIBS_DIR" -maxdepth 1 -name '*.a' | wc -l | tr -d ' ') -echo "Downloaded $LIB_COUNT static libraries." +# --- iOS xcframeworks --- -# --- OpenSSL shared dylibs --- -echo "Creating OpenSSL shared dylibs for local development..." -if [[ -f "$LIBS_DIR/libcrypto_arm64.a" || -f "$LIBS_DIR/libcrypto.a" ]]; then - scripts/create-openssl-dylibs.sh both +if [[ -f "$IOS_MARKER" && "$FORCE" != "--force" ]]; then + echo "iOS xcframeworks already present." +elif [[ "$(find "$IOS_DIR" -maxdepth 1 -name '*.xcframework' 2> /dev/null | wc -l | tr -d ' ')" -gt 0 && "$FORCE" != "--force" ]]; then + echo "Found existing xcframeworks in $IOS_DIR." else - echo "Skipping OpenSSL dylibs (no static libs found yet)." + echo "Downloading iOS xcframeworks..." + fetch "$IOS_ARCHIVE" "$WORK" + mkdir -p "$IOS_DIR" + tar xzf "$WORK/$IOS_ARCHIVE" -C "$IOS_DIR" + touch "$IOS_MARKER" + echo "Downloaded $(find "$IOS_DIR" -maxdepth 1 -name '*.xcframework' | wc -l | tr -d ' ') iOS xcframeworks." fi -# --- iOS xcframeworks --- -IOS_ARCHIVE="tablepro-libs-ios-v1.tar.gz" -IOS_DIR="$LIBS_DIR/ios" -IOS_MARKER="$IOS_DIR/.downloaded" +verify "$IOS_DIR" "$IOS_DIR" "$WORK/ios-baseline" "iOS xcframeworks" -if [[ -f "$IOS_MARKER" && "${1:-}" != "--force" ]]; then - echo "iOS libraries already downloaded." -elif [[ -d "$IOS_DIR" && "$(find "$IOS_DIR" -name '*.xcframework' -maxdepth 1 2>/dev/null | wc -l | tr -d ' ')" -gt 0 && "${1:-}" != "--force" ]]; then - echo "Found xcframeworks in $IOS_DIR โ€” skipping iOS download." +# --- OpenSSL shared dylibs, built from the verified static libraries --- + +if [[ -f "$LIBS_DIR/libcrypto_arm64.a" || -f "$LIBS_DIR/libcrypto.a" ]]; then + echo "Creating OpenSSL shared dylibs for local development..." + scripts/create-openssl-dylibs.sh both else - echo "Downloading iOS static libraries..." - if command -v gh &>/dev/null; then - gh release download "$LIBS_TAG" \ - --repo "$REPO" \ - --pattern "$IOS_ARCHIVE" \ - --dir /tmp \ - --clobber - else - curl -fSL -o "/tmp/$IOS_ARCHIVE" "https://github.com/$REPO/releases/download/$LIBS_TAG/$IOS_ARCHIVE" - fi - mkdir -p "$IOS_DIR" - tar xzf "/tmp/$IOS_ARCHIVE" -C "$IOS_DIR" - rm -f "/tmp/$IOS_ARCHIVE" - touch "$IOS_MARKER" - FW_COUNT=$(find "$IOS_DIR" -name '*.xcframework' -maxdepth 1 | wc -l | tr -d ' ') - echo "Downloaded $FW_COUNT iOS xcframeworks." + echo "Skipping OpenSSL dylibs (no static libs found yet)." fi diff --git a/scripts/publish-ios-libs.sh b/scripts/publish-ios-libs.sh new file mode 100755 index 000000000..292160093 --- /dev/null +++ b/scripts/publish-ios-libs.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Publishes Libs/ios to the libs-v1 release and regenerates the integrity baseline. +# +# Usage: scripts/publish-ios-libs.sh [--dry-run] +# +# CLAUDE.md used to document this as a bare `tar czf ... && gh release upload`, which published +# 299 MB of xcframeworks that nothing verified and left no baseline behind. download-libs.sh now +# checks Libs/ios against Libs/ios/checksums.sha256 on every run, so the archive and the baseline +# have to move together or every developer and every CI job fails on the next pull. +# +# Run this after rebuilding with scripts/ios/build-*.sh, then commit the refreshed baseline. + +REPO="TableProApp/TablePro" +LIBS_TAG="libs-v1" +IOS_ARCHIVE="tablepro-libs-ios-v1.tar.gz" +IOS_DIR="Libs/ios" +CHECKSUMS="$IOS_DIR/checksums.sha256" +DRY_RUN=0 +[ "${1:-}" = "--dry-run" ] && DRY_RUN=1 + +[ -d "$IOS_DIR" ] || { echo "โŒ $IOS_DIR does not exist." >&2; exit 1; } + +frameworks=() +while IFS= read -r fw; do + frameworks+=("$(basename "$fw")") +done < <(find "$IOS_DIR" -maxdepth 1 -name '*.xcframework' | LC_ALL=C sort) + +if [ "${#frameworks[@]}" -eq 0 ]; then + echo "โŒ No xcframeworks in $IOS_DIR. Build them first with scripts/ios/build-*.sh." >&2 + exit 1 +fi + +echo "๐Ÿ“ฆ ${#frameworks[@]} xcframeworks: ${frameworks[*]}" + +WORK="$(mktemp -d)" +trap 'rm -rf "$WORK"' EXIT + +# LC_ALL=C so the committed file is byte-stable across machines and locales. +generate_baseline() { + (cd "$IOS_DIR" && find . -type f ! -name '.downloaded' ! -name 'checksums.sha256' -print0 | + LC_ALL=C sort -z | xargs -0 shasum -a 256) +} + +generate_baseline > "$WORK/new-baseline" +echo "๐Ÿ”ข $(wc -l < "$WORK/new-baseline" | tr -d ' ') files hashed" + +# Report what moved, so an accidental rebuild of everything is visible before it is published. +if git cat-file -e "HEAD:$CHECKSUMS" 2> /dev/null; then + git show "HEAD:$CHECKSUMS" > "$WORK/old-baseline" + added=$(comm -13 <(awk '{print $2}' "$WORK/old-baseline" | LC_ALL=C sort) \ + <(awk '{print $2}' "$WORK/new-baseline" | LC_ALL=C sort) | wc -l | tr -d ' ') + removed=$(comm -23 <(awk '{print $2}' "$WORK/old-baseline" | LC_ALL=C sort) \ + <(awk '{print $2}' "$WORK/new-baseline" | LC_ALL=C sort) | wc -l | tr -d ' ') + changed=$(comm -13 <(LC_ALL=C sort "$WORK/old-baseline") <(LC_ALL=C sort "$WORK/new-baseline") | wc -l | tr -d ' ') + changed=$((changed - added)) + echo " vs HEAD: $changed changed, $added added, $removed removed" + if [ "$changed" -eq 0 ] && [ "$added" -eq 0 ] && [ "$removed" -eq 0 ]; then + echo "โŒ Nothing to publish: $IOS_DIR is identical to the baseline at HEAD." >&2 + exit 1 + fi +else + echo " no baseline at HEAD yet; this publish establishes it" +fi + +if [ "$DRY_RUN" -eq 1 ]; then + echo "๐Ÿงช --dry-run: not writing $CHECKSUMS and not uploading." + exit 0 +fi + +cp "$WORK/new-baseline" "$CHECKSUMS" +echo "๐Ÿ“ Wrote $CHECKSUMS" + +# An allowlist, so the archive holds exactly what the baseline covers and no stray markers. +tar czf "$WORK/$IOS_ARCHIVE" -C "$IOS_DIR" "${frameworks[@]}" "$(basename "$CHECKSUMS")" +echo "๐Ÿ“ฆ $IOS_ARCHIVE is $(du -h "$WORK/$IOS_ARCHIVE" | cut -f1)" + +echo "โ˜๏ธ Uploading to $REPO@$LIBS_TAG..." +gh release upload "$LIBS_TAG" "$WORK/$IOS_ARCHIVE" --clobber --repo "$REPO" + +echo "" +echo "๐ŸŽ‰ Published. Now commit the baseline so download-libs.sh accepts it:" +echo " git add $CHECKSUMS && git commit -m 'build: update iOS xcframework checksums'"